1?n.options.decimal+r[1]:\"\",n.options.useGrouping){a=\"\";for(var l=3,u=0,h=0,p=e.length;ht;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var e=this.countDown?1:-1;this.endVal=t+e*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},i.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},i.prototype.pauseResume=function(){if(this.paused)this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count);else{cancelAnimationFrame(this.rAF);var t=null!==this.finalEndVal?this.duration+this.remaining:this.remaining;this.remaining=t}this.paused=!this.paused},i.prototype.reset=function(){clearTimeout(this.autoAnimateTimeout),cancelAnimationFrame(this.rAF),this.paused=!0,this.once=!1,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},i.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},i.prototype.printValue=function(t){var i;if(this.el){var e=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,e);else if(\"INPUT\"===this.el.tagName)this.el.value=e;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=e:this.el.innerHTML=e}},i.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},i.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},i.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},i.prototype.parse=function(t){var i=function(t){return t.replace(/([.,' ])/g,\"\\\\$1\")},e=i(this.options.separator),s=i(this.options.decimal),n=t.replace(new RegExp(e,\"g\"),\"\").replace(new RegExp(s,\"g\"),\".\");return parseFloat(n)},i.observedElements=new WeakMap,i}();export{i as CountUp};\n","/**\n * --------------------------------------------------------------------------\n * Tabler countup.ts\n * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { CountUp as CountUpPlugin, type CountUpOptions } from 'countup.js'\n\nimport BaseComponent from './bootstrap/base-component'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport type { ElementSelector } from './bootstrap/types'\n\n// Mapped copy of the plugin's interface, so it satisfies the `Record` base config\ntype ComponentConfig = { [K in keyof CountUpOptions]: CountUpOptions[K] } & {\n autoAnimate: boolean\n}\n\ntype ComponentConfigInput = Partial & Record\n\n/**\n * Constants\n */\n\nconst NAME = 'countup'\nconst DATA_ATTRIBUTE = `data-${NAME}`\n\nconst SELECTOR_DATA_COUNTUP = `[${DATA_ATTRIBUTE}]`\n\nconst Default: ComponentConfig = {\n autoAnimate: true,\n}\n\nconst DefaultType: Record<'autoAnimate', string> = {\n autoAnimate: 'boolean',\n}\n\n/**\n * Class definition\n *\n * Animates the number written inside the element with countUp.js\n * (https://github.com/inorganik/countUp.js), bundled with `tabler.js`. Options\n * come from the `data-countup` attribute as JSON, or from the config object.\n */\n\nclass CountUp extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _plugin: CountUpPlugin | null = null\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n // Strip thousands separators, currency symbols and other non-numeric\n // characters so formatted targets like \"1,234\", \"1 234\" or \"$99.5\" parse.\n const value = Number.parseFloat((this._element.textContent ?? '').replace(/[^0-9.-]/g, ''))\n\n if (Number.isNaN(value)) {\n return\n }\n\n this._plugin = new CountUpPlugin(this._element, value, this._config)\n\n // With `autoAnimate` the plugin starts itself once the element scrolls into\n // view, so only start by hand when it is off.\n if (!this._plugin.error && !this._config.autoAnimate && !this._config.enableScrollSpy) {\n this._plugin.start()\n }\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<'autoAnimate', string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n start(): void {\n this._plugin?.start()\n }\n\n reset(): void {\n this._plugin?.reset()\n }\n\n update(value: number | string): void {\n this._plugin?.update(value)\n }\n\n pauseResume(): void {\n this._plugin?.pauseResume()\n }\n\n dispose(): void {\n this._plugin?.onDestroy()\n super.dispose()\n }\n\n // Private\n _mergeConfigObj(config?: Record, element?: HTMLElement): Record {\n // `data-countup='{\"duration\":4}'` carries the options as JSON; a bare\n // `data-countup` or invalid JSON means defaults.\n let dataOptions: Record = {}\n const raw = element?.getAttribute(DATA_ATTRIBUTE)\n\n if (raw) {\n try {\n dataOptions = JSON.parse(raw)\n } catch {\n // ignore invalid JSON\n }\n }\n\n return super._mergeConfigObj({ ...dataOptions, ...config }, element)\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start countup-init\nfor (const element of SelectorEngine.find(SELECTOR_DATA_COUNTUP)) {\n CountUp.getOrCreateInstance(element)\n}\n// js-docs-end countup-init\n\nexport default CountUp\n","/**\n * --------------------------------------------------------------------------\n * Tabler input-mask.ts\n * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './bootstrap/base-component'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = {\n mask: string\n lazy: boolean\n}\n\ntype ComponentConfigInput = Partial & Record\n\n/**\n * Constants\n */\n\nconst NAME = 'input-mask'\n\nconst ATTRIBUTE_MASK = 'data-mask'\nconst ATTRIBUTE_VISIBLE = 'data-mask-visible'\n\nconst SELECTOR_DATA_MASK = `[${ATTRIBUTE_MASK}]`\n\nconst Default: ComponentConfig = {\n mask: '',\n lazy: true,\n}\n\nconst DefaultType: Record = {\n mask: 'string',\n lazy: 'boolean',\n}\n\n/**\n * Class definition\n *\n * Wraps the IMask plugin (https://imask.js.org), loaded separately as\n * `window.IMask`. Without the plugin the component is inert.\n */\n\nclass InputMask extends BaseComponent {\n declare _element: HTMLInputElement\n declare _config: ComponentConfig\n _mask: IMaskInstance | null = null\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element || !this._config.mask || !window.IMask) {\n return\n }\n\n this._mask = new window.IMask(this._element, {\n mask: this._config.mask,\n lazy: this._config.lazy,\n })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n /** The IMask instance, for options the component does not expose. */\n get mask(): IMaskInstance | null {\n return this._mask\n }\n\n // Public\n update(): void {\n this._mask?.updateValue()\n }\n\n dispose(): void {\n this._mask?.destroy()\n super.dispose()\n }\n\n // Private\n _mergeConfigObj(config?: Record, element?: HTMLElement): Record {\n // `data-mask` holds the pattern; `data-mask-visible=\"true\"` shows it\n // before typing, which is IMask's `lazy: false`.\n const dataOptions: Record = {}\n const mask = element?.getAttribute(ATTRIBUTE_MASK)\n\n if (mask) {\n dataOptions.mask = mask\n }\n\n if (element?.hasAttribute(ATTRIBUTE_VISIBLE)) {\n dataOptions.lazy = element.getAttribute(ATTRIBUTE_VISIBLE) !== 'true'\n }\n\n return super._mergeConfigObj({ ...dataOptions, ...config }, element)\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start input-mask-init\nfor (const element of SelectorEngine.find(SELECTOR_DATA_MASK)) {\n InputMask.getOrCreateInstance(element)\n}\n// js-docs-end input-mask-init\n\nexport default InputMask\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index'\n\ntype ComponentInstance = unknown\n\ninterface PluginComponent {\n NAME: string\n getOrCreateInstance(element: HTMLElement | string | null): ComponentInstance\n}\n\ninterface EventActionData {\n targets: HTMLElement[]\n event: Event\n}\n\ninterface PluginEventActionData extends EventActionData {\n instances: ComponentInstance[]\n}\n\ninterface DismissibleComponent {\n EVENT_KEY: string\n NAME: string\n getOrCreateInstance(element: HTMLElement | string | null): ComponentInstance\n}\n\nconst callMethod = (instance: ComponentInstance, method: string): void => {\n const callable = (instance as Record)[method]\n\n if (typeof callable === 'function') {\n callable.call(instance)\n }\n}\n\nconst enableDismissTrigger = (component: DismissibleComponent, method = 'hide'): void => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"], [data-tblr-dismiss=\"${name}\"]`, function (this: HTMLElement, event: Event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n callMethod(component.getOrCreateInstance(target), method)\n })\n}\n\nconst eventAction = (onEvent: string, stringSelector: string, callback: (data: EventActionData) => void): void => {\n const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n\n EventHandler.on(document, onEvent, selector, function (this: HTMLElement, event: Event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n const targetSelector = SelectorEngine.getSelectorFromElement(this)\n const targets = targetSelector ? SelectorEngine.find(targetSelector) : [this]\n\n callback({ targets, event })\n })\n}\n\nconst eventActionOnPlugin = (Plugin: PluginComponent, onEvent: string, stringSelector: string, method: string, callback: ((data: PluginEventActionData) => void) | null = null): void => {\n eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, (data) => {\n const instances = data.targets.filter(Boolean).map((element) => Plugin.getOrCreateInstance(element))\n\n if (typeof callback === 'function') {\n callback({ ...data, instances })\n }\n\n for (const instance of instances) {\n callMethod(instance, method)\n }\n })\n}\n\nexport { enableDismissTrigger, eventAction, eventActionOnPlugin }\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions'\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\nclass Alert extends BaseComponent {\n static get NAME(): string {\n return NAME\n }\n\n close(): void {\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 _destroyElement(): void {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n}\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler.js'\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'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"], [data-tblr-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nclass Button extends BaseComponent {\n declare _element: HTMLElement\n\n static get NAME(): string {\n return NAME\n }\n\n toggle(): void {\n this._element.setAttribute('aria-pressed', String(this._element.classList.toggle(CLASS_NAME_ACTIVE)))\n }\n}\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, (event: Event) => {\n event.preventDefault()\n\n const target = (event.target as HTMLElement)?.closest(SELECTOR_DATA_TOGGLE) as HTMLElement | null\n if (!target) {\n return\n }\n\n const data = Button.getOrCreateInstance(target) as Button\n data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config'\nimport { execute } from './index'\nimport type { ComponentConfig, ComponentConfigType } from '../types'\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\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 POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\ntype SwipeConfig = {\n endCallback: (() => void) | null\n leftCallback: (() => void) | null\n rightCallback: (() => void) | null\n}\n\nconst Default: SwipeConfig = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null,\n}\n\nconst DefaultType: ComponentConfigType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)',\n}\n\nclass Swipe extends Config {\n declare _config: SwipeConfig & ComponentConfig\n _element: HTMLElement\n declare _deltaX: number\n declare _supportPointerEvents: boolean\n\n constructor(element: HTMLElement, config?: ComponentConfig) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config) as SwipeConfig & ComponentConfig\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): ComponentConfigType {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n dispose(): void {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n _start(event: Event): void {\n if (!this._supportPointerEvents) {\n this._deltaX = (event as TouchEvent).touches[0].clientX\n return\n }\n\n if (this._eventIsPointerPenTouch(event as PointerEvent)) {\n this._deltaX = (event as PointerEvent).clientX\n }\n }\n\n _end(event: Event): void {\n if (this._eventIsPointerPenTouch(event as PointerEvent)) {\n this._deltaX = (event as PointerEvent).clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event: Event): void {\n this._deltaX = (event as TouchEvent).touches && (event as TouchEvent).touches.length > 1 ? 0 : (event as TouchEvent).touches[0].clientX - this._deltaX\n }\n\n _handleSwipe(): void {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents(): void {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, (event: Event) => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, (event: Event) => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, (event: Event) => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, (event: Event) => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, (event: Event) => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event: PointerEvent): boolean {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n static isSupported(): boolean {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport { getNextActiveElement, isRTL, isVisible, reflow, triggerTransitionEnd } from './util/index'\nimport Swipe from './util/swipe'\n\ntype ComponentConfig = {\n interval: number | boolean\n keyboard: boolean\n pause: 'hover' | boolean\n ride: boolean | 'carousel'\n touch: boolean\n wrap: boolean\n defaultInterval?: number | boolean\n}\n\ntype ComponentConfigInput = Partial> & Record\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\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\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_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'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to], [data-tblr-slide], [data-tblr-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"], [data-tblr-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION: Record = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT,\n}\n\nconst Default: ComponentConfig = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true,\n}\n\nconst DefaultType: Record, string> = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean',\n}\n\nclass Carousel extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _interval: ReturnType | null\n _activeElement: HTMLElement | null\n _isSliding: boolean\n touchTimeout: ReturnType | null\n _swipeHelper: Swipe | null\n _indicatorsElement: HTMLElement | null\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n next(): void {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible(): void {\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev(): void {\n this._slide(ORDER_PREV)\n }\n\n pause(): void {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle(): void {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval as number)\n }\n\n _maybeEnableCycle(): void {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index: number): void {\n const items = this._getItems()\n if (index > 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 const activeIndex = this._getItemIndex(this._getActive()!)\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose(): void {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n _configAfterMerge(config: ComponentConfig): ComponentConfig {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners(): void {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, (event: Event) => this._keydown(event as KeyboardEvent))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners(): void {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, (event: Event) => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + (this._config.interval as number))\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack,\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event: KeyboardEvent): void {\n if (/input|textarea/i.test((event.target as HTMLElement).tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element: HTMLElement): number {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index: number): void {\n if (!this._indicatorsElement) {\n return\n }\n\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 newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"], [data-tblr-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval(): void {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval') || element.getAttribute('data-tblr-interval') || '', 10)\n\n this._config.interval = elementInterval || (this._config.defaultInterval ?? this._config.interval)\n }\n\n _slide(order: string, element: HTMLElement | null = null): void {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || (getNextActiveElement(this._getItems(), activeElement!, isNext, this._config.wrap as boolean) as HTMLElement)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = (eventName: string) => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement!),\n to: nextElementIndex,\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent?.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\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 triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated(): boolean {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive(): HTMLElement | null {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems(): HTMLElement[] {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval(): void {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction: string): string {\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: string): string {\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\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (this: HTMLElement, event: Event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target) as Carousel\n const slideIndex = this.getAttribute('data-bs-slide-to') || this.getAttribute('data-tblr-slide-to')\n\n if (slideIndex) {\n carousel.to(Number(slideIndex))\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport { getElement, reflow } from './util/index'\nimport type { DelegatedEvent } from './dom/event-handler'\nimport type { ElementSelector } from './types'\n\ntype ComponentConfig = {\n parent: HTMLElement | null\n toggle: boolean\n}\n\ntype ComponentConfigInput = Partial> & { parent?: HTMLElement | string | null } & Record\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\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\"], [data-tblr-toggle=\"collapse\"]'\n\nconst Default: ComponentConfig = {\n parent: null,\n toggle: true,\n}\n\nconst DefaultType: Record = {\n parent: '(null|element)',\n toggle: 'boolean',\n}\n\nclass Collapse extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _isTransitioning: boolean\n _triggerArray: HTMLElement[]\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector!).filter((foundElement) => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\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 static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n toggle(): void {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show(): void {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren: Collapse[] = []\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter((element) => element !== this._element)\n .map((element) => Collapse.getOrCreateInstance(element, { toggle: false }) as Collapse)\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent?.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\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}` as 'scrollWidth' | 'scrollHeight'\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide(): void {\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 for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\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: HTMLElement = this._element): boolean {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _configAfterMerge(config: ComponentConfig): ComponentConfig {\n config.toggle = Boolean(config.toggle)\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension(): typeof WIDTH | typeof HEIGHT {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren(): void {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector: string): HTMLElement[] {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent as HTMLElement)\n return SelectorEngine.find(selector, this._config.parent as HTMLElement).filter((element) => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray: HTMLElement[], isOpen: boolean): void {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', String(isOpen))\n }\n }\n}\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {\n const { delegateTarget } = event as DelegatedEvent\n if ((event.target as HTMLElement).tagName === 'A' || (delegateTarget && delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n ;(Collapse.getOrCreateInstance(element, { toggle: false }) as Collapse).toggle()\n }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport { execute, getElement, getNextActiveElement, isDisabled, isElement, isRTL, isVisible, noop } from './util/index'\nimport type { DelegatedEvent } from './dom/event-handler'\n\ntype PopperOffsetData = { placement: Popper.Placement; reference: Popper.Rect; popper: Popper.Rect }\ntype PopperOffsetFunction = (popperData: PopperOffsetData) => number[]\ntype PopperConfigFunction = (defaultConfig: Partial) => Partial\n\ntype ComponentConfig = {\n autoClose: boolean | 'inside' | 'outside'\n boundary: Popper.Boundary\n display: 'dynamic' | 'static'\n offset: number[] | string | ((popperData: PopperOffsetData, element: HTMLElement) => number[])\n popperConfig: Partial | PopperConfigFunction | null\n reference: 'toggle' | 'parent' | HTMLElement | Popper.VirtualElement\n}\n\ntype ComponentConfigInput = Partial & Record\n\ntype RelatedTarget = { relatedTarget: HTMLElement; clickEvent?: Event }\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 TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2\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_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled), [data-tblr-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `.${CLASS_NAME_SHOW}[data-bs-toggle=\"dropdown\"], .${CLASS_NAME_SHOW}[data-tblr-toggle=\"dropdown\"]`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\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'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default: ComponentConfig = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle',\n}\n\nconst DefaultType: Record = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)',\n}\n\nclass Dropdown extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _popper: Popper.Instance | null\n _parent: HTMLElement\n _menu: HTMLElement\n _inNavbar: boolean\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode as HTMLElement\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent)!\n this._inNavbar = this._detectNavbar()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n toggle(): void {\n this._isShown() ? this.hide() : this.show()\n }\n\n show(): void {\n if (isDisabled(this._element) || this._isShown()) {\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 this._createPopper()\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of Array.from(document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\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(): void {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element,\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose(): void {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update(): void {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n _completeHide(relatedTarget: RelatedTarget): void {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent?.defaultPrevented) {\n return\n }\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of Array.from(document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\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?: ComponentConfigInput): ComponentConfig {\n const merged = super._getConfig(config) as ComponentConfig\n\n if (typeof merged.reference === 'object' && !isElement(merged.reference) && typeof (merged.reference as Popper.VirtualElement).getBoundingClientRect !== 'function') {\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return merged\n }\n\n _createPopper(): void {\n if (typeof Popper === 'undefined') {\n throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)\")\n }\n\n let referenceElement: HTMLElement | Popper.VirtualElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference as HTMLElement | string)!\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference as Popper.VirtualElement\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown(): boolean {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement(): string {\n const parentDropdown = this._parent\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 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\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(): boolean {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset(): number[] | PopperOffsetFunction {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map((value) => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return (popperData: PopperOffsetData) => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(): Partial {\n const defaultBsPopperConfig: Partial = {\n placement: this._getPlacement() as Popper.Placement,\n modifiers: [\n {\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\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n defaultBsPopperConfig.modifiers = [\n {\n name: 'applyStyles',\n enabled: false,\n },\n ]\n }\n\n const popperConfig = execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])\n return {\n ...defaultBsPopperConfig,\n ...(typeof popperConfig === 'object' && popperConfig !== null ? popperConfig : {}),\n }\n }\n\n _selectMenuItem({ key, target }: { key: string; target: EventTarget | null }): void {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n const activeElement = target as HTMLElement\n getNextActiveElement(items, activeElement, key === ARROW_DOWN_KEY, !items.includes(activeElement)).focus()\n }\n\n static clearMenus(event: Event & { button?: number; key?: string; composedPath?: () => EventTarget[] }): void {\n if ((event as MouseEvent).button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && (event as KeyboardEvent).key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle) as Dropdown | null\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (composedPath.includes(context._element) || (context._config.autoClose === 'inside' && !isMenuTarget) || (context._config.autoClose === 'outside' && isMenuTarget)) {\n continue\n }\n\n if (context._menu.contains(event.target as Node) && ((event.type === 'keyup' && (event as KeyboardEvent).key === TAB_KEY) || /input|select|option|textarea|form/i.test((event.target as HTMLElement).tagName))) {\n continue\n }\n\n const relatedTarget: RelatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(this: HTMLElement, event: KeyboardEvent): void {\n const isInput = /input|textarea/i.test((event.target as HTMLElement).tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, (event as DelegatedEvent).delegateTarget.parentNode as Element)\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton!) as Dropdown\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) {\n event.stopPropagation()\n instance.hide()\n getToggleButton!.focus()\n }\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 (this: HTMLElement, event: Event) {\n event.preventDefault()\n ;(Dropdown.getOrCreateInstance(this) as Dropdown).toggle()\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport type { ComponentConfig, ComponentConfigType } from '../types'\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\ntype BackdropConfig = {\n className: string\n clickCallback: (() => void) | null\n isAnimated: boolean\n isVisible: boolean\n rootElement: HTMLElement | string\n}\n\nconst Default: BackdropConfig = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n rootElement: 'body',\n}\n\nconst DefaultType: ComponentConfigType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)',\n}\n\nclass Backdrop extends Config {\n declare _config: BackdropConfig & ComponentConfig\n _isAppended: boolean\n _element: HTMLElement | null\n\n constructor(config?: ComponentConfig) {\n super()\n this._config = this._getConfig(config) as BackdropConfig & ComponentConfig\n this._isAppended = false\n this._element = null\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): ComponentConfigType {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n show(callback?: () => void): void {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback?: () => void): void {\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 dispose(): void {\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 _getElement(): HTMLElement {\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 _configAfterMerge(config: ComponentConfig): ComponentConfig {\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append(): void {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n ;(this._config.rootElement as HTMLElement).append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback: () => void): void {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config'\nimport type { ComponentConfig, ComponentConfigType } from '../types'\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\ntype FocusTrapConfig = {\n autofocus: boolean\n trapElement: HTMLElement | null\n}\n\nconst Default: FocusTrapConfig = {\n autofocus: true,\n trapElement: null,\n}\n\nconst DefaultType: ComponentConfigType = {\n autofocus: 'boolean',\n trapElement: 'element',\n}\n\nclass FocusTrap extends Config {\n declare _config: FocusTrapConfig & ComponentConfig\n _isActive: boolean\n _lastTabNavDirection: string | null\n\n constructor(config?: ComponentConfig) {\n super()\n this._config = this._getConfig(config) as FocusTrapConfig & ComponentConfig\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): ComponentConfigType {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n activate(): void {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement!.focus()\n }\n\n EventHandler.off(document, EVENT_KEY)\n EventHandler.on(document, EVENT_FOCUSIN, (event: FocusEvent) => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, (event: KeyboardEvent) => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate(): void {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n _handleFocusin(event: FocusEvent): void {\n const { trapElement } = this._config\n\n if (!trapElement || event.target === document || event.target === trapElement || trapElement.contains(event.target as Node)) {\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: KeyboardEvent): void {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollbar.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\nclass ScrollBarHelper {\n _element: HTMLElement\n\n constructor() {\n this._element = document.body\n }\n\n getWidth(): number {\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide(): void {\n const width = this.getWidth()\n this._disableOverFlow()\n this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width)\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width)\n }\n\n reset(): void {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing(): boolean {\n return this.getWidth() > 0\n }\n\n _disableOverFlow(): void {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector: string | HTMLElement, styleProperty: string, callback: (value: number) => number): void {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = (element: HTMLElement): void => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element: HTMLElement, styleProperty: string): void {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector: string | HTMLElement, styleProperty: string): void {\n const manipulationCallBack = (element: HTMLElement): void => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, String(value))\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector: string | HTMLElement, callBack: (element: HTMLElement) => void): void {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport { enableDismissTrigger } from './util/component-functions'\nimport FocusTrap from './util/focustrap'\nimport { isRTL, isVisible, reflow } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\n\n/**\n * Constants\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 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_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.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\"], [data-tblr-toggle=\"modal\"]'\n\ntype ComponentConfig = {\n backdrop: boolean | 'static'\n focus: boolean\n keyboard: boolean\n}\n\ntype ComponentConfigInput = Partial & Record\n\nconst Default: ComponentConfig = {\n backdrop: true,\n focus: true,\n keyboard: true,\n}\n\nconst DefaultType: Record = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean',\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _dialog: HTMLElement | null\n _backdrop: Backdrop\n _focustrap: FocusTrap\n _isShown: boolean\n _isTransitioning: boolean\n _scrollBar: ScrollBarHelper\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n super(element, config)\n\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._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n toggle(relatedTarget?: HTMLElement): void {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget?: HTMLElement): void {\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 this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide(): void {\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 this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose(): void {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate(): void {\n this._adjustDialog()\n }\n\n _initializeBackDrop(): Backdrop {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n isAnimated: this._isAnimated(),\n })\n }\n\n _initializeFocusTrap(): FocusTrap {\n return new FocusTrap({\n trapElement: this._element,\n })\n }\n\n _showElement(relatedTarget?: HTMLElement): void {\n if (!document.body.contains(this._element)) {\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 const modalBody = this._dialog ? SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog) : null\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\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!, this._isAnimated())\n }\n\n _addEventListeners(): void {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event: Event) => {\n if ((event as KeyboardEvent).key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event: Event) => {\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2: Event) => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal(): void {\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\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 _isAnimated(): boolean {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition(): void {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent?.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog!)\n }, this._dialog!)\n\n this._element.focus()\n }\n\n _adjustDialog(): void {\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) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments(): void {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (!target) {\n return\n }\n\n EventHandler.one(target, EVENT_SHOW, (showEvent: Event) => {\n if (showEvent?.defaultPrevented) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n ;(Modal.getInstance(alreadyOpen) as Modal).hide()\n }\n\n const data = Modal.getOrCreateInstance(target) as Modal\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport { enableDismissTrigger } from './util/component-functions'\nimport FocusTrap from './util/focustrap'\nimport { isDisabled, isVisible } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\n\n/**\n * Constants\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 CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\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_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${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\"], [data-tblr-toggle=\"offcanvas\"]'\n\ntype ComponentConfig = {\n backdrop: boolean | 'static'\n keyboard: boolean\n scroll: boolean\n}\n\ntype ComponentConfigInput = Partial & Record\n\nconst Default: ComponentConfig = {\n backdrop: true,\n keyboard: true,\n scroll: false,\n}\n\nconst DefaultType: Record = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean',\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _isShown: boolean\n _backdrop: Backdrop\n _focustrap: FocusTrap\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n toggle(relatedTarget?: HTMLElement): void {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget?: HTMLElement): void {\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._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', 'true')\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide(): void {\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.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\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(): void {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n _initializeBackDrop(): Backdrop {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n const isBackdropVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: isBackdropVisible,\n isAnimated: true,\n rootElement: this._element.parentNode as HTMLElement,\n clickCallback: isBackdropVisible ? clickCallback : null,\n })\n }\n\n _initializeFocusTrap(): FocusTrap {\n return new FocusTrap({\n trapElement: this._element,\n })\n }\n\n _addEventListeners(): void {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event: Event) => {\n if ((event as KeyboardEvent).key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (!target) {\n return\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n ;(Offcanvas.getInstance(alreadyOpen) as Offcanvas).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target) as Offcanvas\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n ;(Offcanvas.getOrCreateInstance(selector) as Offcanvas).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n ;(Offcanvas.getOrCreateInstance(element) as Offcanvas).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport type { AllowList, SanitizeFn } from '../types'\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist: AllowList = {\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 'dd': [],\n 'div': [],\n 'dl': [],\n 'dt': [],\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// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'])\n\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute: Attr, allowedAttributeList: (string | RegExp)[]): boolean => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue!))\n }\n\n return true\n }\n\n return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => (regex as RegExp).test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml: string, allowList: AllowList, sanitizeFunction?: SanitizeFn): string {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = Array.from(createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = Array.from(element.attributes)\n const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { execute, getElement, isElement } from './index'\nimport type { AllowList, ComponentConfig, ComponentConfigType, SanitizeFn } from '../types'\n\nconst NAME = 'TemplateFactory'\n\ntype TemplateFactoryConfig = {\n allowList: AllowList\n content: Record\n extraClass: string | (() => string)\n html: boolean\n sanitize: boolean\n sanitizeFn: SanitizeFn | null\n template: string\n}\n\nconst Default: TemplateFactoryConfig = {\n allowList: DefaultAllowlist,\n content: {},\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '',\n}\n\nconst DefaultType: ComponentConfigType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string',\n}\n\nconst DefaultContentType: ComponentConfigType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)',\n}\n\nclass TemplateFactory extends Config {\n declare _config: TemplateFactoryConfig & ComponentConfig\n\n constructor(config?: ComponentConfig) {\n super()\n this._config = this._getConfig(config) as TemplateFactoryConfig & ComponentConfig\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): ComponentConfigType {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n getContent(): unknown[] {\n return Object.values(this._config.content)\n .map((config) => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent(): boolean {\n return this.getContent().length > 0\n }\n\n changeContent(content: Record): this {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml(): Element {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...(extraClass as string).split(' '))\n }\n\n return template\n }\n\n _typeCheckConfig(config: ComponentConfig): void {\n super._typeCheckConfig(config)\n this._checkContent(config.content as Record)\n }\n\n _checkContent(arg: Record): void {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template: HTMLElement, content: unknown, selector: string): void {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content)!, templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content as string)\n return\n }\n\n templateElement.textContent = content as string\n }\n\n _maybeSanitize(arg: string): string {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn!) : arg\n }\n\n _resolvePossibleFunction(arg: unknown): unknown {\n return execute(arg, [undefined, this])\n }\n\n _putElementInTemplate(element: HTMLElement, templateElement: Element): void {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport { execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport TemplateFactory from './util/template-factory'\nimport type { AllowList, SanitizeFn } from './types'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\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\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\ntype PopperOffsetData = { placement: Popper.Placement; reference: Popper.Rect; popper: Popper.Rect }\ntype PopperOffsetFunction = (popperData: PopperOffsetData) => number[]\ntype PopperConfigFunction = (defaultConfig: Partial) => Partial\n\nexport type TooltipDelay = number | { show: number; hide: number }\nexport type TooltipContent = string | HTMLElement | null | ((this: HTMLElement, element: HTMLElement) => string | HTMLElement | null)\n// Keys are selectors inside the template, values the content for that slot\nexport type TooltipContentMap = Record\nexport type TooltipPlacement = string | ((this: Tooltip, tip: HTMLElement, element: HTMLElement) => string)\n\nexport type TooltipConfig = {\n allowList: AllowList\n animation: boolean\n boundary: Popper.Boundary\n container: HTMLElement | string | false\n customClass: string | ((this: HTMLElement, element: HTMLElement) => string)\n delay: TooltipDelay\n fallbackPlacements: string[]\n html: boolean\n offset: number[] | string | ((popperData: PopperOffsetData, element: HTMLElement) => number[])\n placement: TooltipPlacement\n popperConfig: Partial | PopperConfigFunction | null\n sanitize: boolean\n sanitizeFn: SanitizeFn | null\n selector: string | false\n template: string\n title: TooltipContent\n trigger: string\n}\n\ntype ComponentConfig = TooltipConfig\n\nexport type TooltipConfigInput = Partial & Record\n\ntype ComponentConfigInput = TooltipConfigInput\n\nconst AttachmentMap: Record = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left',\n}\n\nconst Default: ComponentConfig = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '',\n title: '',\n trigger: 'hover focus',\n}\n\nconst DefaultType: Record = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _isEnabled: boolean\n _timeout: ReturnType | number\n _isHovered: boolean | null\n _activeTrigger: Record\n _popper: Popper.Instance | null\n _templateFactory: TemplateFactory | null\n _newContent: TooltipContentMap | null\n tip: HTMLElement | null\n _hideModalHandler: () => void\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n if (typeof Popper === 'undefined') {\n throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)\")\n }\n\n super(element, config)\n\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n this.tip = null\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n enable(): void {\n this._isEnabled = true\n }\n\n disable(): void {\n this._isEnabled = false\n }\n\n toggleEnabled(): void {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(): void {\n if (!this._isEnabled) {\n return\n }\n\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose(): void {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title') || this._element.getAttribute('data-tblr-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title') || this._element.getAttribute('data-tblr-original-title') || '')\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show(): void {\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 as typeof Tooltip).eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent?.defaultPrevented || !isInTheDom) {\n return\n }\n\n this._disposePopper()\n\n const tip = this._getTipElement()!\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id')!)\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n // `_configAfterMerge` resolved the container to an element\n ;(container as HTMLElement).append(tip)\n EventHandler.trigger(this._element, (this.constructor as typeof Tooltip).eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip!.classList.add(CLASS_NAME_SHOW)\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of Array.from(document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, (this.constructor as typeof Tooltip).eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip!, this._isAnimated())\n }\n\n hide(): void {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, (this.constructor as typeof Tooltip).eventName(EVENT_HIDE))\n if (hideEvent?.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip!.classList.remove(CLASS_NAME_SHOW)\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of Array.from(document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, (this.constructor as typeof Tooltip).eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip!, this._isAnimated())\n }\n\n update(): void {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n _isWithContent(): boolean {\n return Boolean(this._getTitle())\n }\n\n _getTipElement(): HTMLElement | null {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content: TooltipContentMap): HTMLElement | null {\n const tip = this._getTemplateFactory(content).toHtml() as HTMLElement\n\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n tip.classList.add(`bs-${(this.constructor as typeof Tooltip).NAME}-auto`)\n\n const tipId = getUID((this.constructor as typeof Tooltip).NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content: TooltipContentMap): void {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content: TooltipContentMap): TemplateFactory {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass),\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate(): TooltipContentMap {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle(),\n }\n }\n\n _getTitle(): string | HTMLElement {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title') || this._element.getAttribute('data-tblr-original-title') || ''\n }\n\n _initializeOnDelegatedTarget(event: Event & { delegateTarget?: HTMLElement }): Tooltip {\n return (this.constructor as typeof Tooltip).getOrCreateInstance(event.delegateTarget!, this._getDelegateConfig()) as Tooltip\n }\n\n _isAnimated(): boolean {\n return this._config.animation || (this.tip !== null && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown(): boolean {\n return this.tip !== null && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip: HTMLElement): Popper.Instance {\n const placement = execute(this._config.placement, [this, tip, this._element]) as string\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset(): number[] | PopperOffsetFunction {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map((value: string) => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return (popperData: PopperOffsetData) => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg: T | ((this: HTMLElement, element: HTMLElement) => T)): T {\n return execute(arg, [this._element, this._element]) as T\n }\n\n _getPopperConfig(attachment: string): Partial {\n const defaultBsPopperConfig: Partial = {\n placement: attachment as Popper.Placement,\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 as typeof Tooltip).NAME}-arrow`,\n },\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: (data: Popper.ModifierArguments>) => {\n this._getTipElement()!.setAttribute('data-popper-placement', data.state.placement)\n },\n },\n ],\n }\n\n const popperConfig = execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])\n return {\n ...defaultBsPopperConfig,\n ...(typeof popperConfig === 'object' && popperConfig !== null ? popperConfig : {}),\n }\n }\n\n _setListeners(): void {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, (this.constructor as typeof Tooltip).eventName(EVENT_CLICK), this._config.selector, (event: Event) => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? (this.constructor as typeof Tooltip).eventName(EVENT_MOUSEENTER) : (this.constructor as typeof Tooltip).eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ? (this.constructor as typeof Tooltip).eventName(EVENT_MOUSELEAVE) : (this.constructor as typeof Tooltip).eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, (event: Event) => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, (event: Event & { relatedTarget?: HTMLElement }) => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget as Node)\n\n context._leave()\n })\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle(): void {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent!.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title)\n this._element.removeAttribute('title')\n }\n\n _enter(): void {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._getDelay().show)\n }\n\n _leave(): void {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._getDelay().hide)\n }\n\n _getDelay(): { show: number; hide: number } {\n const { delay } = this._config\n return typeof delay === 'number' ? { show: delay, hide: delay } : delay\n }\n\n _setTimeout(handler: () => void, timeout: number): void {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger(): boolean {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config?: ComponentConfigInput): ComponentConfig {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n let merged: Record = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {}),\n }\n merged = this._mergeConfigObj(merged)\n merged = this._configAfterMerge(merged as ComponentConfig)\n this._typeCheckConfig(merged)\n return merged as ComponentConfig\n }\n\n _configAfterMerge(config: ComponentConfig): ComponentConfig {\n config.container = config.container === false ? document.body : (getElement(config.container) as HTMLElement)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay,\n }\n }\n\n // Numbers are accepted at runtime (`data-bs-title=\"42\"`) even though the type says string\n const raw = config as Record\n if (typeof raw.title === 'number') {\n raw.title = raw.title.toString()\n }\n\n if (typeof raw.content === 'number') {\n raw.content = raw.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig(): ComponentConfigInput {\n const config: Record = {}\n const defaults = (this.constructor as typeof Tooltip).Default as Record\n\n for (const [key, value] of Object.entries(this._config)) {\n if (defaults[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n return config\n }\n\n _disposePopper(): void {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip'\nimport type { TooltipConfig, TooltipContent, TooltipContentMap } from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\ntype ComponentConfig = TooltipConfig & {\n content: TooltipContent\n}\n\ntype ComponentConfigInput = Partial & Record\n\nconst Default: ComponentConfig = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '',\n trigger: 'click',\n}\n\nconst DefaultType: Record = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)',\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n super(element, config)\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n _isWithContent(): boolean {\n return Boolean(this._getTitle() || this._getContent())\n }\n\n _getContentForTemplate(): TooltipContentMap {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent(),\n }\n }\n\n _getContent(): string | HTMLElement | null {\n return this._resolvePossibleFunction(this._config.content)\n }\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport { getElement, isDisabled, isVisible, parseSelector } from './util/index'\n\ntype ComponentConfig = {\n offset: number | null\n rootMargin: string\n smoothScroll: boolean\n target: HTMLElement | null\n threshold: number[]\n}\n\ntype ComponentConfigInput = Partial> & { target?: HTMLElement | string | null; threshold?: number[] | string } & Record\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${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\"], [data-tblr-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\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_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default: ComponentConfig = {\n offset: null,\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1],\n}\n\nconst DefaultType: Record = {\n offset: '(number|null)',\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array',\n}\n\nclass ScrollSpy extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _targetLinks: Map\n _observableSections: Map\n _rootElement: HTMLElement | null\n _activeTarget: HTMLElement | null\n _observer: IntersectionObserver | null\n _previousScrollData: {\n visibleEntryTop: number\n parentScrollTop: number\n }\n\n constructor(element: HTMLElement | string, config?: ComponentConfigInput) {\n super(element, config)\n\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0,\n }\n this.refresh()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n refresh(): void {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose(): void {\n this._observer!.disconnect()\n super.dispose()\n }\n\n _configAfterMerge(config: ComponentConfig): ComponentConfig {\n config.target = getElement(config.target) || document.body\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n const threshold: unknown = config.threshold\n if (typeof threshold === 'string') {\n config.threshold = threshold.split(',').map((value: string) => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll(): void {\n if (!this._config.smoothScroll) {\n return\n }\n\n EventHandler.off(this._config.target as HTMLElement, EVENT_CLICK)\n\n EventHandler.on(this._config.target as HTMLElement, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event: Event) => {\n const observableSection = this._observableSections.get((event.target as HTMLAnchorElement).hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if ('scrollTo' in root) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n ;(root as HTMLElement).scrollTop = height\n }\n })\n }\n\n _getNewObserver(): IntersectionObserver {\n const options: IntersectionObserverInit = {\n root: this._rootElement,\n threshold: this._config.threshold as number[],\n rootMargin: this._config.rootMargin as string,\n }\n\n return new IntersectionObserver((entries) => this._observerCallback(entries), options)\n }\n\n _observerCallback(entries: IntersectionObserverEntry[]): void {\n const targetElement = (entry: IntersectionObserverEntry) => this._targetLinks.get(`#${entry.target.id}`)\n const activate = (entry: IntersectionObserverEntry) => {\n this._previousScrollData.visibleEntryTop = (entry.target as HTMLElement).offsetTop\n this._process(targetElement(entry)!)\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry)!)\n\n continue\n }\n\n const entryIsLowerThanPrevious = (entry.target as HTMLElement).offsetTop >= this._previousScrollData.visibleEntryTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables(): void {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target as HTMLElement)\n\n for (const anchor of targetLinks) {\n if (!(anchor as HTMLAnchorElement).hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(parseSelector(decodeURI((anchor as HTMLAnchorElement).hash)), this._element)\n\n if (isVisible(observableSection!)) {\n this._targetLinks.set(decodeURI((anchor as HTMLAnchorElement).hash), anchor)\n this._observableSections.set((anchor as HTMLAnchorElement).hash, observableSection!)\n }\n }\n }\n\n _process(target: HTMLElement): void {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target as HTMLElement)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target: HTMLElement): void {\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN)!)!.classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent: HTMLElement): void {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n}\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport { getNextActiveElement, isDisabled } from './util/index'\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_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}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"], [data-tblr-toggle=\"tab\"], [data-tblr-toggle=\"pill\"], [data-tblr-toggle=\"list\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"], .${CLASS_NAME_ACTIVE}[data-tblr-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-tblr-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-tblr-toggle=\"list\"]`\n\nclass Tab extends BaseComponent {\n _parent: HTMLElement | null\n\n constructor(element: HTMLElement | string) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n }\n\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, (event: KeyboardEvent) => this._keydown(event))\n }\n\n static get NAME(): string {\n return NAME\n }\n\n show(): void {\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n const active = this._getActiveElem()\n\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) : null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent?.defaultPrevented || hideEvent?.defaultPrevented) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n _activate(element: HTMLElement | null, relatedElem?: HTMLElement | null): void {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element))\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', 'true')\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem,\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element: HTMLElement | null, relatedElem?: HTMLElement | null): void {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element))\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', 'false')\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event: KeyboardEvent): void {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n return\n }\n\n event.stopPropagation()\n event.preventDefault()\n\n const children = this._getChildren().filter((element) => !isDisabled(element))\n let nextActiveElement: HTMLElement | undefined\n\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n nextActiveElement = getNextActiveElement(children, event.target as HTMLElement, isNext, true) as HTMLElement\n }\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n ;(Tab.getOrCreateInstance(nextActiveElement) as Tab).show()\n }\n }\n\n _getChildren(): HTMLElement[] {\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent!)\n }\n\n _getActiveElem(): HTMLElement | null {\n return this._getChildren().find((child) => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent: HTMLElement, children: HTMLElement[]): void {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child: HTMLElement): void {\n child = this._getInnerElement(child)!\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', String(isActive))\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child: HTMLElement): void {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element: HTMLElement, open: boolean): void {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector: string, className: string) => {\n const el = SelectorEngine.findOne(selector, outerElem)\n if (el) {\n el.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', String(open))\n }\n\n _setAttributeIfNotExists(element: HTMLElement, attribute: string, value: string): void {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem: HTMLElement): boolean {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n _getInnerElement(elem: HTMLElement): HTMLElement | null {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n _getOuterElement(elem: HTMLElement): HTMLElement {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n}\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n ;(Tab.getOrCreateInstance(this) as Tab).show()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions'\nimport { reflow } from './util/index.js'\nimport type { ElementSelector } from './types'\n\ntype ComponentConfig = {\n animation: boolean\n autohide: boolean\n delay: number\n}\n\ntype ComponentConfigInput = Partial & Record\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'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType: Record = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number',\n}\n\nconst Default: ComponentConfig = {\n animation: true,\n autohide: true,\n delay: 5000,\n}\n\nclass Toast extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _timeout: ReturnType | null\n _hasMouseInteraction: boolean\n _hasKeyboardInteraction: boolean\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n show(): void {\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)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide(): void {\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 const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n this._element.classList.remove(CLASS_NAME_SHOWING, 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(): void {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown(): boolean {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _maybeScheduleHide(): void {\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: Event, isInteracting: boolean): void {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = (event as FocusEvent).relatedTarget as Node | null\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners(): void {\n EventHandler.on(this._element, EVENT_MOUSEOVER, (event: Event) => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, (event: Event) => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, (event: Event) => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, (event: Event) => this._onInteraction(event, false))\n }\n\n _clearTimeout(): void {\n clearTimeout(this._timeout!)\n this._timeout = null\n }\n}\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","export * as Popper from '@popperjs/core'\n\nexport { default as Alert } from './bootstrap/alert'\nexport { default as Button } from './bootstrap/button'\nexport { default as Carousel } from './bootstrap/carousel'\nexport { default as Collapse } from './bootstrap/collapse'\nexport { default as Dropdown } from './bootstrap/dropdown'\nexport { default as Modal } from './bootstrap/modal'\nexport { default as Offcanvas } from './bootstrap/offcanvas'\nexport { default as Popover } from './bootstrap/popover'\nexport { default as ScrollSpy } from './bootstrap/scrollspy'\nexport { default as Tab } from './bootstrap/tab'\nexport { default as Toast } from './bootstrap/toast'\nexport { default as Tooltip } from './bootstrap/tooltip'\n\nimport Alert from './bootstrap/alert'\nimport Button from './bootstrap/button'\nimport Carousel from './bootstrap/carousel'\nimport Collapse from './bootstrap/collapse'\nimport Dropdown from './bootstrap/dropdown'\nimport Modal from './bootstrap/modal'\nimport Offcanvas from './bootstrap/offcanvas'\nimport Popover from './bootstrap/popover'\nimport ScrollSpy from './bootstrap/scrollspy'\nimport Tab from './bootstrap/tab'\nimport Toast from './bootstrap/toast'\nimport Tooltip from './bootstrap/tooltip'\n\nexport const bootstrap = {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip,\n}\n","import { Dropdown } from './bootstrap'\n\n// js-docs-start dropdown-init\nconst dropdownTriggerList: HTMLElement[] = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"dropdown\"]'))\ndropdownTriggerList.map(function (dropdownTriggerEl: HTMLElement) {\n const options = {\n boundary: dropdownTriggerEl.getAttribute('data-bs-boundary') === 'viewport' ? document.documentElement : ('clippingParents' as const),\n }\n return new Dropdown(dropdownTriggerEl, options)\n})\n// js-docs-end dropdown-init\n","import { Dropdown } from './bootstrap'\n\n/*\nFolded sidebar toggle\n */\n// js-docs-start sidebar-folded-toggle\nconst syncSidebarToggles = (folded: boolean): void => {\n for (const toggle of document.querySelectorAll('[data-bs-toggle=\"sidebar-folded\"]')) {\n toggle.setAttribute('aria-pressed', String(folded))\n }\n}\n\nconst sidebarIsFolded = (): boolean => (document.documentElement.getAttribute('data-bs-sidebar') ?? '').startsWith('folded') || !!document.querySelector('.navbar-vertical.navbar-folded, .navbar-vertical.navbar-folded-hover')\n\nconst hideSidebarDropdowns = (except?: Element | null): void => {\n for (const toggle of document.querySelectorAll('.navbar-vertical [data-bs-toggle=\"dropdown\"][aria-expanded=\"true\"]')) {\n if (toggle !== except) {\n ;(Dropdown.getInstance(toggle) as InstanceType | null)?.hide()\n }\n }\n}\n\n// A sidebar rendered for the expanded state keeps its submenus open on outside\n// clicks (data-bs-auto-close=\"false\"). Folded flyouts must not: close them on\n// any click outside their menu, and close the other flyouts when one opens.\ndocument.addEventListener('click', (event: MouseEvent) => {\n if (!sidebarIsFolded()) {\n return\n }\n\n const target = event.target as Element\n if (target.closest('.navbar-vertical .dropdown-menu')) {\n return\n }\n\n hideSidebarDropdowns(target.closest('.navbar-vertical [data-bs-toggle=\"dropdown\"]'))\n})\n\n// When a hover-expanding sidebar collapses back to the rail, close its open\n// submenus — an inline submenu left open would flash as a floating flyout.\n// Static folded rails are excluded: crossing the small gap between the rail\n// and an open flyout must not close it. mouseleave does not bubble, so the\n// listener runs in the capture phase.\ndocument.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const target = event.target as Element\n if (!(target instanceof Element) || !target.matches('.navbar-vertical')) {\n return\n }\n\n const hoverVariant = document.documentElement.getAttribute('data-bs-sidebar') === 'folded-hover' || target.classList.contains('navbar-folded-hover')\n if (hoverVariant) {\n hideSidebarDropdowns()\n }\n },\n true,\n)\n\n// The folded state may come pre-render from localStorage (tabler-theme.js), so\n// align the toggle buttons with it once the DOM is available. Server-rendered\n// open submenus are also closed, so they don't hang as open flyouts.\ndocument.addEventListener('DOMContentLoaded', () => {\n const folded = (document.documentElement.getAttribute('data-bs-sidebar') ?? '').startsWith('folded')\n syncSidebarToggles(folded)\n\n if (folded) {\n for (const menu of document.querySelectorAll('.navbar-vertical .dropdown-menu.show')) {\n menu.classList.remove('show')\n menu.parentElement?.querySelector('[data-bs-toggle=\"dropdown\"]')?.setAttribute('aria-expanded', 'false')\n }\n }\n})\n\ndocument.addEventListener('click', (event: MouseEvent) => {\n const trigger = (event.target as Element).closest('[data-bs-toggle=\"sidebar-folded\"]')\n if (!trigger) {\n return\n }\n\n const html = document.documentElement\n const willFold = !(html.getAttribute('data-bs-sidebar') ?? '').startsWith('folded')\n\n // Unpinning folds to the hover variant: the rail expands on hover, where\n // the pin button becomes visible again and can pin the sidebar back open.\n if (willFold) {\n html.setAttribute('data-bs-sidebar', 'folded-hover')\n } else {\n html.removeAttribute('data-bs-sidebar')\n }\n\n localStorage.setItem('tabler-sidebar', willFold ? 'folded-hover' : 'default')\n syncSidebarToggles(willFold)\n\n // Close open sidebar dropdowns so an inline submenu doesn't turn into a\n // stuck flyout (and vice versa) when the layout mode changes.\n hideSidebarDropdowns()\n\n document.dispatchEvent(new CustomEvent('tabler:sidebar-folded', { detail: { folded: willFold } }))\n})\n// js-docs-end sidebar-folded-toggle\n","import { Tooltip } from './bootstrap'\n\n// js-docs-start tooltip-init\nconst tooltipTriggerList: HTMLElement[] = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'))\ntooltipTriggerList.map(function (tooltipTriggerEl: HTMLElement) {\n const options = {\n delay: { show: 50, hide: 50 },\n html: tooltipTriggerEl.getAttribute('data-bs-html') === 'true',\n placement: tooltipTriggerEl.getAttribute('data-bs-placement') ?? 'auto',\n }\n return new Tooltip(tooltipTriggerEl, options)\n})\n// js-docs-end tooltip-init\n","import { Popover } from './bootstrap'\n\n// js-docs-start popover-init\nconst popoverTriggerList: HTMLElement[] = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"popover\"]'))\npopoverTriggerList.map(function (popoverTriggerEl: HTMLElement) {\n const options = {\n delay: { show: 50, hide: 50 },\n html: popoverTriggerEl.getAttribute('data-bs-html') === 'true',\n placement: popoverTriggerEl.getAttribute('data-bs-placement') ?? 'auto',\n }\n return new Popover(popoverTriggerEl, options)\n})\n// js-docs-end popover-init\n","/**\n * --------------------------------------------------------------------------\n * Tabler switch-icon.ts\n * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './bootstrap/base-component'\nimport EventHandler from './bootstrap/dom/event-handler'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = Record\n\ntype ComponentConfigInput = Record\n\n/**\n * Constants\n */\n\nconst NAME = 'switch-icon'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record = {}\n\n/**\n * Class definition\n *\n * A toggle button that swaps between two icons. The state is the `active`\n * class, mirrored in `aria-pressed`.\n */\n\nclass SwitchIcon extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n if (!this._element.hasAttribute('aria-pressed')) {\n this._element.setAttribute('aria-pressed', String(this.isActive))\n }\n\n // The button usually sits inside a clickable row or card; the click must\n // not reach it.\n EventHandler.on(this._element, EVENT_CLICK, (event: Event) => {\n event.stopPropagation()\n this.toggle()\n })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get isActive(): boolean {\n return this._element.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Public\n toggle(force?: boolean): void {\n const active = this._element.classList.toggle(CLASS_NAME_ACTIVE, force)\n this._element.setAttribute('aria-pressed', String(active))\n\n EventHandler.trigger(this._element, EVENT_CHANGE, { active })\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start switch-icon-init\nfor (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n SwitchIcon.getOrCreateInstance(element)\n}\n// js-docs-end switch-icon-init\n\nexport default SwitchIcon\n","import { Tab } from './bootstrap'\n\n// js-docs-start tab-init\nexport const EnableActivationTabsFromLocationHash = (): void => {\n const locationHash: string = window.location.hash\n\n if (locationHash) {\n const tabsList: HTMLAnchorElement[] = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tab\"]'))\n const matchedTabs = tabsList.filter((tab: HTMLAnchorElement) => tab.hash === locationHash)\n\n matchedTabs.map((tab: HTMLAnchorElement) => {\n new Tab(tab).show()\n })\n }\n}\n\nEnableActivationTabsFromLocationHash()\n// js-docs-end tab-init\n","import { Toast } from './bootstrap'\n\n// js-docs-start toast-init\nconst toastsTriggerList: HTMLElement[] = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"toast\"]'))\ntoastsTriggerList.map(function (toastTriggerEl: HTMLElement) {\n const target = toastTriggerEl.getAttribute('data-bs-target')\n if (target === null) {\n return\n }\n\n const toastEl = new Toast(target)\n\n toastTriggerEl.addEventListener('click', () => {\n toastEl.show()\n })\n})\n// js-docs-end toast-init\n","/**\n * --------------------------------------------------------------------------\n * Tabler sortable.ts\n * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './bootstrap/base-component'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = Record\n\ntype ComponentConfigInput = Record\n\n/**\n * Constants\n */\n\nconst NAME = 'sortable'\nconst DATA_ATTRIBUTE = `data-${NAME}`\n\nconst SELECTOR_DATA_SORTABLE = `[${DATA_ATTRIBUTE}]`\n\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record = {}\n\n/**\n * Class definition\n *\n * Wraps SortableJS (https://sortablejs.github.io/Sortable/), loaded separately\n * as `window.Sortable`. Without the plugin the component is inert. Options come\n * from the `data-sortable` attribute as JSON, or from the config object.\n */\n\nclass Sortable extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _sortable: SortableInstance | null = null\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element || !window.Sortable) {\n return\n }\n\n this._sortable = new window.Sortable(this._element, this._config)\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n /** The SortableJS instance, for options the component does not expose. */\n get sortable(): SortableInstance | null {\n return this._sortable\n }\n\n // Public\n toArray(): string[] {\n return this._sortable?.toArray() ?? []\n }\n\n sort(order: string[], useAnimation?: boolean): void {\n this._sortable?.sort(order, useAnimation)\n }\n\n dispose(): void {\n this._sortable?.destroy()\n super.dispose()\n }\n\n // Private\n _mergeConfigObj(config?: Record, element?: HTMLElement): Record {\n // `data-sortable='{\"animation\":150}'` carries the options as JSON; a bare\n // `data-sortable` or invalid JSON means defaults.\n let dataOptions: Record = {}\n const raw = element?.getAttribute(DATA_ATTRIBUTE)\n\n if (raw) {\n try {\n dataOptions = JSON.parse(raw)\n } catch {\n // ignore invalid JSON\n }\n }\n\n return super._mergeConfigObj({ ...dataOptions, ...config }, element)\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start sortable-init\nfor (const element of SelectorEngine.find(SELECTOR_DATA_SORTABLE)) {\n Sortable.getOrCreateInstance(element)\n}\n// js-docs-end sortable-init\n\nexport default Sortable\n"],"x_google_ignoreList":[0,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],"mappings":"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"}
\ No newline at end of file
diff --git a/storage/public/dist/js/tabler.js b/storage/public/dist/js/tabler.js
index 2d00593..e8f9894 100644
--- a/storage/public/dist/js/tabler.js
+++ b/storage/public/dist/js/tabler.js
@@ -1,5020 +1,5150 @@
+/*!
+* Tabler v1.5.1 (https://tabler.io)
+* Copyright 2018-2026 The Tabler Authors
+* Copyright 2018-2026 codecalm.net Paweł Kuna
+* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE)
+*/
(function(global, factory) {
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tabler = {}));
-})(this, (function(exports2) {
- "use strict";
- const autosizeElements = document.querySelectorAll('[data-bs-toggle="autosize"]');
- if (autosizeElements.length) {
- autosizeElements.forEach(function(element) {
- if (window.autosize) {
- window.autosize(element);
- }
- });
- }
- const countupElements = document.querySelectorAll("[data-countup]");
- if (countupElements.length) {
- countupElements.forEach(function(element) {
- let options = {};
- try {
- const dataOptions = element.getAttribute("data-countup") ? JSON.parse(element.getAttribute("data-countup")) : {};
- options = Object.assign(
- {
- enableScrollSpy: true
- },
- dataOptions
- );
- } catch (error) {
- }
- const value = parseInt(element.innerHTML, 10);
- if (window.countUp && window.countUp.CountUp) {
- const countUp = new window.countUp.CountUp(element, value, options);
- if (!countUp.error) {
- countUp.start();
- }
- }
- });
- }
- const maskElementList = [].slice.call(document.querySelectorAll("[data-mask]"));
- maskElementList.map(function(maskEl) {
- window.IMask && new window.IMask(maskEl, {
- mask: maskEl.dataset.mask,
- lazy: maskEl.dataset["mask-visible"] === "true"
- });
- });
- var top = "top";
- var bottom = "bottom";
- var right = "right";
- var left = "left";
- var auto = "auto";
- var basePlacements = [top, bottom, right, left];
- var start = "start";
- var end = "end";
- var clippingParents = "clippingParents";
- var viewport = "viewport";
- var popper = "popper";
- var reference = "reference";
- var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
- return acc.concat([placement + "-" + start, placement + "-" + end]);
- }, []);
- var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
- return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
- }, []);
- var beforeRead = "beforeRead";
- var read = "read";
- var afterRead = "afterRead";
- var beforeMain = "beforeMain";
- var main = "main";
- var afterMain = "afterMain";
- var beforeWrite = "beforeWrite";
- var write = "write";
- var afterWrite = "afterWrite";
- var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
- function getNodeName(element) {
- return element ? (element.nodeName || "").toLowerCase() : null;
- }
- function getWindow(node) {
- if (node == null) {
- return window;
- }
- if (node.toString() !== "[object Window]") {
- var ownerDocument = node.ownerDocument;
- return ownerDocument ? ownerDocument.defaultView || window : window;
- }
- return node;
- }
- function isElement$1(node) {
- var OwnElement = getWindow(node).Element;
- return node instanceof OwnElement || node instanceof Element;
- }
- function isHTMLElement(node) {
- var OwnElement = getWindow(node).HTMLElement;
- return node instanceof OwnElement || node instanceof HTMLElement;
- }
- function isShadowRoot(node) {
- if (typeof ShadowRoot === "undefined") {
- return false;
- }
- var OwnElement = getWindow(node).ShadowRoot;
- return node instanceof OwnElement || node instanceof ShadowRoot;
- }
- function applyStyles(_ref) {
- var state = _ref.state;
- Object.keys(state.elements).forEach(function(name) {
- var style = state.styles[name] || {};
- var attributes = state.attributes[name] || {};
- var element = state.elements[name];
- if (!isHTMLElement(element) || !getNodeName(element)) {
- return;
- }
- Object.assign(element.style, style);
- Object.keys(attributes).forEach(function(name2) {
- var value = attributes[name2];
- if (value === false) {
- element.removeAttribute(name2);
- } else {
- element.setAttribute(name2, value === true ? "" : value);
- }
- });
- });
- }
- function effect$2(_ref2) {
- var state = _ref2.state;
- var initialStyles = {
- popper: {
- position: state.options.strategy,
- left: "0",
- top: "0",
- margin: "0"
- },
- arrow: {
- position: "absolute"
- },
- reference: {}
- };
- Object.assign(state.elements.popper.style, initialStyles.popper);
- state.styles = initialStyles;
- if (state.elements.arrow) {
- Object.assign(state.elements.arrow.style, initialStyles.arrow);
- }
- return function() {
- Object.keys(state.elements).forEach(function(name) {
- var element = state.elements[name];
- var attributes = state.attributes[name] || {};
- var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
- var style = styleProperties.reduce(function(style2, property) {
- style2[property] = "";
- return style2;
- }, {});
- if (!isHTMLElement(element) || !getNodeName(element)) {
- return;
- }
- Object.assign(element.style, style);
- Object.keys(attributes).forEach(function(attribute) {
- element.removeAttribute(attribute);
- });
- });
- };
- }
- const applyStyles$1 = {
- name: "applyStyles",
- enabled: true,
- phase: "write",
- fn: applyStyles,
- effect: effect$2,
- requires: ["computeStyles"]
- };
- function getBasePlacement(placement) {
- return placement.split("-")[0];
- }
- var max = Math.max;
- var min = Math.min;
- var round = Math.round;
- function getUAString() {
- var uaData = navigator.userAgentData;
- if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
- return uaData.brands.map(function(item) {
- return item.brand + "/" + item.version;
- }).join(" ");
- }
- return navigator.userAgent;
- }
- function isLayoutViewport() {
- return !/^((?!chrome|android).)*safari/i.test(getUAString());
- }
- function getBoundingClientRect(element, includeScale, isFixedStrategy) {
- if (includeScale === void 0) {
- includeScale = false;
- }
- if (isFixedStrategy === void 0) {
- isFixedStrategy = false;
- }
- var clientRect = element.getBoundingClientRect();
- var scaleX = 1;
- var scaleY = 1;
- if (includeScale && isHTMLElement(element)) {
- scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
- scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
- }
- var _ref = isElement$1(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
- var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
- var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
- var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
- var width = clientRect.width / scaleX;
- var height = clientRect.height / scaleY;
- return {
- width,
- height,
- top: y,
- right: x + width,
- bottom: y + height,
- left: x,
- x,
- y
- };
- }
- function getLayoutRect(element) {
- var clientRect = getBoundingClientRect(element);
- var width = element.offsetWidth;
- var height = element.offsetHeight;
- if (Math.abs(clientRect.width - width) <= 1) {
- width = clientRect.width;
- }
- if (Math.abs(clientRect.height - height) <= 1) {
- height = clientRect.height;
- }
- return {
- x: element.offsetLeft,
- y: element.offsetTop,
- width,
- height
- };
- }
- function contains(parent, child) {
- var rootNode = child.getRootNode && child.getRootNode();
- if (parent.contains(child)) {
- return true;
- } else if (rootNode && isShadowRoot(rootNode)) {
- var next = child;
- do {
- if (next && parent.isSameNode(next)) {
- return true;
- }
- next = next.parentNode || next.host;
- } while (next);
- }
- return false;
- }
- function getComputedStyle$1(element) {
- return getWindow(element).getComputedStyle(element);
- }
- function isTableElement(element) {
- return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
- }
- function getDocumentElement(element) {
- return ((isElement$1(element) ? element.ownerDocument : (
- // $FlowFixMe[prop-missing]
- element.document
- )) || window.document).documentElement;
- }
- function getParentNode(element) {
- if (getNodeName(element) === "html") {
- return element;
- }
- return (
- // this is a quicker (but less type safe) way to save quite some bytes from the bundle
- // $FlowFixMe[incompatible-return]
- // $FlowFixMe[prop-missing]
- element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
- element.parentNode || // DOM Element detected
- (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
- // $FlowFixMe[incompatible-call]: HTMLElement is a Node
- getDocumentElement(element)
- );
- }
- function getTrueOffsetParent(element) {
- if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
- getComputedStyle$1(element).position === "fixed") {
- return null;
- }
- return element.offsetParent;
- }
- function getContainingBlock(element) {
- var isFirefox = /firefox/i.test(getUAString());
- var isIE = /Trident/i.test(getUAString());
- if (isIE && isHTMLElement(element)) {
- var elementCss = getComputedStyle$1(element);
- if (elementCss.position === "fixed") {
- return null;
- }
- }
- var currentNode = getParentNode(element);
- if (isShadowRoot(currentNode)) {
- currentNode = currentNode.host;
- }
- while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
- var css = getComputedStyle$1(currentNode);
- if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") {
- return currentNode;
- } else {
- currentNode = currentNode.parentNode;
- }
- }
- return null;
- }
- function getOffsetParent(element) {
- var window2 = getWindow(element);
- var offsetParent = getTrueOffsetParent(element);
- while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") {
- offsetParent = getTrueOffsetParent(offsetParent);
- }
- if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) {
- return window2;
- }
- return offsetParent || getContainingBlock(element) || window2;
- }
- function getMainAxisFromPlacement(placement) {
- return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
- }
- function within(min$1, value, max$1) {
- return max(min$1, min(value, max$1));
- }
- function withinMaxClamp(min2, value, max2) {
- var v = within(min2, value, max2);
- return v > max2 ? max2 : v;
- }
- function getFreshSideObject() {
- return {
- top: 0,
- right: 0,
- bottom: 0,
- left: 0
- };
- }
- function mergePaddingObject(paddingObject) {
- return Object.assign({}, getFreshSideObject(), paddingObject);
- }
- function expandToHashMap(value, keys) {
- return keys.reduce(function(hashMap, key) {
- hashMap[key] = value;
- return hashMap;
- }, {});
- }
- var toPaddingObject = function toPaddingObject2(padding, state) {
- padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
- placement: state.placement
- })) : padding;
- return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
- };
- function arrow(_ref) {
- var _state$modifiersData$;
- var state = _ref.state, name = _ref.name, options = _ref.options;
- var arrowElement = state.elements.arrow;
- var popperOffsets2 = state.modifiersData.popperOffsets;
- var basePlacement = getBasePlacement(state.placement);
- var axis = getMainAxisFromPlacement(basePlacement);
- var isVertical = [left, right].indexOf(basePlacement) >= 0;
- var len = isVertical ? "height" : "width";
- if (!arrowElement || !popperOffsets2) {
- return;
- }
- var paddingObject = toPaddingObject(options.padding, state);
- var arrowRect = getLayoutRect(arrowElement);
- var minProp = axis === "y" ? top : left;
- var maxProp = axis === "y" ? bottom : right;
- var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
- var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
- var arrowOffsetParent = getOffsetParent(arrowElement);
- var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
- var centerToReference = endDiff / 2 - startDiff / 2;
- var min2 = paddingObject[minProp];
- var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
- var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
- var offset2 = within(min2, center, max2);
- var axisProp = axis;
- state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
- }
- function effect$1(_ref2) {
- var state = _ref2.state, options = _ref2.options;
- var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
- if (arrowElement == null) {
- return;
- }
- if (typeof arrowElement === "string") {
- arrowElement = state.elements.popper.querySelector(arrowElement);
- if (!arrowElement) {
- return;
- }
- }
- if (!contains(state.elements.popper, arrowElement)) {
- return;
- }
- state.elements.arrow = arrowElement;
- }
- const arrow$1 = {
- name: "arrow",
- enabled: true,
- phase: "main",
- fn: arrow,
- effect: effect$1,
- requires: ["popperOffsets"],
- requiresIfExists: ["preventOverflow"]
- };
- function getVariation(placement) {
- return placement.split("-")[1];
- }
- var unsetSides = {
- top: "auto",
- right: "auto",
- bottom: "auto",
- left: "auto"
- };
- function roundOffsetsByDPR(_ref, win) {
- var x = _ref.x, y = _ref.y;
- var dpr = win.devicePixelRatio || 1;
- return {
- x: round(x * dpr) / dpr || 0,
- y: round(y * dpr) / dpr || 0
- };
- }
- function mapToStyles(_ref2) {
- var _Object$assign2;
- var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
- var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
- var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
- x,
- y
- }) : {
- x,
- y
- };
- x = _ref3.x;
- y = _ref3.y;
- var hasX = offsets.hasOwnProperty("x");
- var hasY = offsets.hasOwnProperty("y");
- var sideX = left;
- var sideY = top;
- var win = window;
- if (adaptive) {
- var offsetParent = getOffsetParent(popper2);
- var heightProp = "clientHeight";
- var widthProp = "clientWidth";
- if (offsetParent === getWindow(popper2)) {
- offsetParent = getDocumentElement(popper2);
- if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") {
- heightProp = "scrollHeight";
- widthProp = "scrollWidth";
- }
- }
- offsetParent = offsetParent;
- if (placement === top || (placement === left || placement === right) && variation === end) {
- sideY = bottom;
- var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
- // $FlowFixMe[prop-missing]
- offsetParent[heightProp]
- );
- y -= offsetY - popperRect.height;
- y *= gpuAcceleration ? 1 : -1;
- }
- if (placement === left || (placement === top || placement === bottom) && variation === end) {
- sideX = right;
- var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
- // $FlowFixMe[prop-missing]
- offsetParent[widthProp]
- );
- x -= offsetX - popperRect.width;
- x *= gpuAcceleration ? 1 : -1;
- }
- }
- var commonStyles = Object.assign({
- position
- }, adaptive && unsetSides);
- var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
- x,
- y
- }, getWindow(popper2)) : {
- x,
- y
- };
- x = _ref4.x;
- y = _ref4.y;
- if (gpuAcceleration) {
- var _Object$assign;
- return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
- }
- return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
- }
- function computeStyles(_ref5) {
- var state = _ref5.state, options = _ref5.options;
- var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
- var commonStyles = {
- placement: getBasePlacement(state.placement),
- variation: getVariation(state.placement),
- popper: state.elements.popper,
- popperRect: state.rects.popper,
- gpuAcceleration,
- isFixed: state.options.strategy === "fixed"
- };
- if (state.modifiersData.popperOffsets != null) {
- state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
- offsets: state.modifiersData.popperOffsets,
- position: state.options.strategy,
- adaptive,
- roundOffsets
- })));
- }
- if (state.modifiersData.arrow != null) {
- state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
- offsets: state.modifiersData.arrow,
- position: "absolute",
- adaptive: false,
- roundOffsets
- })));
- }
- state.attributes.popper = Object.assign({}, state.attributes.popper, {
- "data-popper-placement": state.placement
- });
- }
- const computeStyles$1 = {
- name: "computeStyles",
- enabled: true,
- phase: "beforeWrite",
- fn: computeStyles,
- data: {}
- };
- var passive = {
- passive: true
- };
- function effect(_ref) {
- var state = _ref.state, instance = _ref.instance, options = _ref.options;
- var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
- var window2 = getWindow(state.elements.popper);
- var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
- if (scroll) {
- scrollParents.forEach(function(scrollParent) {
- scrollParent.addEventListener("scroll", instance.update, passive);
- });
- }
- if (resize) {
- window2.addEventListener("resize", instance.update, passive);
- }
- return function() {
- if (scroll) {
- scrollParents.forEach(function(scrollParent) {
- scrollParent.removeEventListener("scroll", instance.update, passive);
- });
- }
- if (resize) {
- window2.removeEventListener("resize", instance.update, passive);
- }
- };
- }
- const eventListeners = {
- name: "eventListeners",
- enabled: true,
- phase: "write",
- fn: function fn() {
- },
- effect,
- data: {}
- };
- var hash$1 = {
- left: "right",
- right: "left",
- bottom: "top",
- top: "bottom"
- };
- function getOppositePlacement(placement) {
- return placement.replace(/left|right|bottom|top/g, function(matched) {
- return hash$1[matched];
- });
- }
- var hash = {
- start: "end",
- end: "start"
- };
- function getOppositeVariationPlacement(placement) {
- return placement.replace(/start|end/g, function(matched) {
- return hash[matched];
- });
- }
- function getWindowScroll(node) {
- var win = getWindow(node);
- var scrollLeft = win.pageXOffset;
- var scrollTop = win.pageYOffset;
- return {
- scrollLeft,
- scrollTop
- };
- }
- function getWindowScrollBarX(element) {
- return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
- }
- function getViewportRect(element, strategy) {
- var win = getWindow(element);
- var html = getDocumentElement(element);
- var visualViewport = win.visualViewport;
- var width = html.clientWidth;
- var height = html.clientHeight;
- var x = 0;
- var y = 0;
- if (visualViewport) {
- width = visualViewport.width;
- height = visualViewport.height;
- var layoutViewport = isLayoutViewport();
- if (layoutViewport || !layoutViewport && strategy === "fixed") {
- x = visualViewport.offsetLeft;
- y = visualViewport.offsetTop;
- }
- }
- return {
- width,
- height,
- x: x + getWindowScrollBarX(element),
- y
- };
- }
- function getDocumentRect(element) {
- var _element$ownerDocumen;
- var html = getDocumentElement(element);
- var winScroll = getWindowScroll(element);
- var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
- var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
- var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
- var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
- var y = -winScroll.scrollTop;
- if (getComputedStyle$1(body || html).direction === "rtl") {
- x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
- }
- return {
- width,
- height,
- x,
- y
- };
- }
- function isScrollParent(element) {
- var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
- return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
- }
- function getScrollParent(node) {
- if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
- return node.ownerDocument.body;
- }
- if (isHTMLElement(node) && isScrollParent(node)) {
- return node;
- }
- return getScrollParent(getParentNode(node));
- }
- function listScrollParents(element, list) {
- var _element$ownerDocumen;
- if (list === void 0) {
- list = [];
- }
- var scrollParent = getScrollParent(element);
- var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
- var win = getWindow(scrollParent);
- var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
- var updatedList = list.concat(target);
- return isBody ? updatedList : (
- // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
- updatedList.concat(listScrollParents(getParentNode(target)))
- );
- }
- function rectToClientRect(rect) {
- return Object.assign({}, rect, {
- left: rect.x,
- top: rect.y,
- right: rect.x + rect.width,
- bottom: rect.y + rect.height
- });
- }
- function getInnerBoundingClientRect(element, strategy) {
- var rect = getBoundingClientRect(element, false, strategy === "fixed");
- rect.top = rect.top + element.clientTop;
- rect.left = rect.left + element.clientLeft;
- rect.bottom = rect.top + element.clientHeight;
- rect.right = rect.left + element.clientWidth;
- rect.width = element.clientWidth;
- rect.height = element.clientHeight;
- rect.x = rect.left;
- rect.y = rect.top;
- return rect;
- }
- function getClientRectFromMixedType(element, clippingParent, strategy) {
- return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
- }
- function getClippingParents(element) {
- var clippingParents2 = listScrollParents(getParentNode(element));
- var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0;
- var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
- if (!isElement$1(clipperElement)) {
- return [];
- }
- return clippingParents2.filter(function(clippingParent) {
- return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
- });
- }
- function getClippingRect(element, boundary, rootBoundary, strategy) {
- var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
- var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
- var firstClippingParent = clippingParents2[0];
- var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
- var rect = getClientRectFromMixedType(element, clippingParent, strategy);
- accRect.top = max(rect.top, accRect.top);
- accRect.right = min(rect.right, accRect.right);
- accRect.bottom = min(rect.bottom, accRect.bottom);
- accRect.left = max(rect.left, accRect.left);
- return accRect;
- }, getClientRectFromMixedType(element, firstClippingParent, strategy));
- clippingRect.width = clippingRect.right - clippingRect.left;
- clippingRect.height = clippingRect.bottom - clippingRect.top;
- clippingRect.x = clippingRect.left;
- clippingRect.y = clippingRect.top;
- return clippingRect;
- }
- function computeOffsets(_ref) {
- var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
- var basePlacement = placement ? getBasePlacement(placement) : null;
- var variation = placement ? getVariation(placement) : null;
- var commonX = reference2.x + reference2.width / 2 - element.width / 2;
- var commonY = reference2.y + reference2.height / 2 - element.height / 2;
- var offsets;
- switch (basePlacement) {
- case top:
- offsets = {
- x: commonX,
- y: reference2.y - element.height
- };
- break;
- case bottom:
- offsets = {
- x: commonX,
- y: reference2.y + reference2.height
- };
- break;
- case right:
- offsets = {
- x: reference2.x + reference2.width,
- y: commonY
- };
- break;
- case left:
- offsets = {
- x: reference2.x - element.width,
- y: commonY
- };
- break;
- default:
- offsets = {
- x: reference2.x,
- y: reference2.y
- };
- }
- var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
- if (mainAxis != null) {
- var len = mainAxis === "y" ? "height" : "width";
- switch (variation) {
- case start:
- offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
- break;
- case end:
- offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
- break;
- }
- }
- return offsets;
- }
- function detectOverflow(state, options) {
- if (options === void 0) {
- options = {};
- }
- var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
- var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
- var altContext = elementContext === popper ? reference : popper;
- var popperRect = state.rects.popper;
- var element = state.elements[altBoundary ? altContext : elementContext];
- var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
- var referenceClientRect = getBoundingClientRect(state.elements.reference);
- var popperOffsets2 = computeOffsets({
- reference: referenceClientRect,
- element: popperRect,
- placement
- });
- var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
- var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
- var overflowOffsets = {
- top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
- bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
- left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
- right: elementClientRect.right - clippingClientRect.right + paddingObject.right
- };
- var offsetData = state.modifiersData.offset;
- if (elementContext === popper && offsetData) {
- var offset2 = offsetData[placement];
- Object.keys(overflowOffsets).forEach(function(key) {
- var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
- var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
- overflowOffsets[key] += offset2[axis] * multiply;
- });
- }
- return overflowOffsets;
- }
- function computeAutoPlacement(state, options) {
- if (options === void 0) {
- options = {};
- }
- var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
- var variation = getVariation(placement);
- var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
- return getVariation(placement2) === variation;
- }) : basePlacements;
- var allowedPlacements = placements$1.filter(function(placement2) {
- return allowedAutoPlacements.indexOf(placement2) >= 0;
- });
- if (allowedPlacements.length === 0) {
- allowedPlacements = placements$1;
- }
- var overflows = allowedPlacements.reduce(function(acc, placement2) {
- acc[placement2] = detectOverflow(state, {
- placement: placement2,
- boundary,
- rootBoundary,
- padding
- })[getBasePlacement(placement2)];
- return acc;
- }, {});
- return Object.keys(overflows).sort(function(a, b) {
- return overflows[a] - overflows[b];
- });
- }
- function getExpandedFallbackPlacements(placement) {
- if (getBasePlacement(placement) === auto) {
- return [];
- }
- var oppositePlacement = getOppositePlacement(placement);
- return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
- }
- function flip(_ref) {
- var state = _ref.state, options = _ref.options, name = _ref.name;
- if (state.modifiersData[name]._skip) {
- return;
- }
- var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
- var preferredPlacement = state.options.placement;
- var basePlacement = getBasePlacement(preferredPlacement);
- var isBasePlacement = basePlacement === preferredPlacement;
- var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
- var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
- return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
- placement: placement2,
- boundary,
- rootBoundary,
- padding,
- flipVariations,
- allowedAutoPlacements
- }) : placement2);
- }, []);
- var referenceRect = state.rects.reference;
- var popperRect = state.rects.popper;
- var checksMap = /* @__PURE__ */ new Map();
- var makeFallbackChecks = true;
- var firstFittingPlacement = placements2[0];
- for (var i = 0; i < placements2.length; i++) {
- var placement = placements2[i];
- var _basePlacement = getBasePlacement(placement);
- var isStartVariation = getVariation(placement) === start;
- var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
- var len = isVertical ? "width" : "height";
- var overflow = detectOverflow(state, {
- placement,
- boundary,
- rootBoundary,
- altBoundary,
- padding
- });
- var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
- if (referenceRect[len] > popperRect[len]) {
- mainVariationSide = getOppositePlacement(mainVariationSide);
- }
- var altVariationSide = getOppositePlacement(mainVariationSide);
- var checks = [];
- if (checkMainAxis) {
- checks.push(overflow[_basePlacement] <= 0);
- }
- if (checkAltAxis) {
- checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
- }
- if (checks.every(function(check) {
- return check;
- })) {
- firstFittingPlacement = placement;
- makeFallbackChecks = false;
- break;
- }
- checksMap.set(placement, checks);
- }
- if (makeFallbackChecks) {
- var numberOfChecks = flipVariations ? 3 : 1;
- var _loop = function _loop2(_i2) {
- var fittingPlacement = placements2.find(function(placement2) {
- var checks2 = checksMap.get(placement2);
- if (checks2) {
- return checks2.slice(0, _i2).every(function(check) {
- return check;
- });
- }
- });
- if (fittingPlacement) {
- firstFittingPlacement = fittingPlacement;
- return "break";
- }
- };
- for (var _i = numberOfChecks; _i > 0; _i--) {
- var _ret = _loop(_i);
- if (_ret === "break") break;
- }
- }
- if (state.placement !== firstFittingPlacement) {
- state.modifiersData[name]._skip = true;
- state.placement = firstFittingPlacement;
- state.reset = true;
- }
- }
- const flip$1 = {
- name: "flip",
- enabled: true,
- phase: "main",
- fn: flip,
- requiresIfExists: ["offset"],
- data: {
- _skip: false
- }
- };
- function getSideOffsets(overflow, rect, preventedOffsets) {
- if (preventedOffsets === void 0) {
- preventedOffsets = {
- x: 0,
- y: 0
- };
- }
- return {
- top: overflow.top - rect.height - preventedOffsets.y,
- right: overflow.right - rect.width + preventedOffsets.x,
- bottom: overflow.bottom - rect.height + preventedOffsets.y,
- left: overflow.left - rect.width - preventedOffsets.x
- };
- }
- function isAnySideFullyClipped(overflow) {
- return [top, right, bottom, left].some(function(side) {
- return overflow[side] >= 0;
- });
- }
- function hide(_ref) {
- var state = _ref.state, name = _ref.name;
- var referenceRect = state.rects.reference;
- var popperRect = state.rects.popper;
- var preventedOffsets = state.modifiersData.preventOverflow;
- var referenceOverflow = detectOverflow(state, {
- elementContext: "reference"
- });
- var popperAltOverflow = detectOverflow(state, {
- altBoundary: true
- });
- var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
- var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
- var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
- var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
- state.modifiersData[name] = {
- referenceClippingOffsets,
- popperEscapeOffsets,
- isReferenceHidden,
- hasPopperEscaped
- };
- state.attributes.popper = Object.assign({}, state.attributes.popper, {
- "data-popper-reference-hidden": isReferenceHidden,
- "data-popper-escaped": hasPopperEscaped
- });
- }
- const hide$1 = {
- name: "hide",
- enabled: true,
- phase: "main",
- requiresIfExists: ["preventOverflow"],
- fn: hide
- };
- function distanceAndSkiddingToXY(placement, rects, offset2) {
- var basePlacement = getBasePlacement(placement);
- var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
- var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
- placement
- })) : offset2, skidding = _ref[0], distance = _ref[1];
- skidding = skidding || 0;
- distance = (distance || 0) * invertDistance;
- return [left, right].indexOf(basePlacement) >= 0 ? {
- x: distance,
- y: skidding
- } : {
- x: skidding,
- y: distance
- };
- }
- function offset(_ref2) {
- var state = _ref2.state, options = _ref2.options, name = _ref2.name;
- var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
- var data = placements.reduce(function(acc, placement) {
- acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
- return acc;
- }, {});
- var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
- if (state.modifiersData.popperOffsets != null) {
- state.modifiersData.popperOffsets.x += x;
- state.modifiersData.popperOffsets.y += y;
- }
- state.modifiersData[name] = data;
- }
- const offset$1 = {
- name: "offset",
- enabled: true,
- phase: "main",
- requires: ["popperOffsets"],
- fn: offset
- };
- function popperOffsets(_ref) {
- var state = _ref.state, name = _ref.name;
- state.modifiersData[name] = computeOffsets({
- reference: state.rects.reference,
- element: state.rects.popper,
- placement: state.placement
- });
- }
- const popperOffsets$1 = {
- name: "popperOffsets",
- enabled: true,
- phase: "read",
- fn: popperOffsets,
- data: {}
- };
- function getAltAxis(axis) {
- return axis === "x" ? "y" : "x";
- }
- function preventOverflow(_ref) {
- var state = _ref.state, options = _ref.options, name = _ref.name;
- var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
- var overflow = detectOverflow(state, {
- boundary,
- rootBoundary,
- padding,
- altBoundary
- });
- var basePlacement = getBasePlacement(state.placement);
- var variation = getVariation(state.placement);
- var isBasePlacement = !variation;
- var mainAxis = getMainAxisFromPlacement(basePlacement);
- var altAxis = getAltAxis(mainAxis);
- var popperOffsets2 = state.modifiersData.popperOffsets;
- var referenceRect = state.rects.reference;
- var popperRect = state.rects.popper;
- var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
- placement: state.placement
- })) : tetherOffset;
- var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
- mainAxis: tetherOffsetValue,
- altAxis: tetherOffsetValue
- } : Object.assign({
- mainAxis: 0,
- altAxis: 0
- }, tetherOffsetValue);
- var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
- var data = {
- x: 0,
- y: 0
- };
- if (!popperOffsets2) {
- return;
- }
- if (checkMainAxis) {
- var _offsetModifierState$;
- var mainSide = mainAxis === "y" ? top : left;
- var altSide = mainAxis === "y" ? bottom : right;
- var len = mainAxis === "y" ? "height" : "width";
- var offset2 = popperOffsets2[mainAxis];
- var min$1 = offset2 + overflow[mainSide];
- var max$1 = offset2 - overflow[altSide];
- var additive = tether ? -popperRect[len] / 2 : 0;
- var minLen = variation === start ? referenceRect[len] : popperRect[len];
- var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
- var arrowElement = state.elements.arrow;
- var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
- width: 0,
- height: 0
- };
- var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
- var arrowPaddingMin = arrowPaddingObject[mainSide];
- var arrowPaddingMax = arrowPaddingObject[altSide];
- var arrowLen = within(0, referenceRect[len], arrowRect[len]);
- var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
- var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
- var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
- var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
- var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
- var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
- var tetherMax = offset2 + maxOffset - offsetModifierValue;
- var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);
- popperOffsets2[mainAxis] = preventedOffset;
- data[mainAxis] = preventedOffset - offset2;
- }
- if (checkAltAxis) {
- var _offsetModifierState$2;
- var _mainSide = mainAxis === "x" ? top : left;
- var _altSide = mainAxis === "x" ? bottom : right;
- var _offset = popperOffsets2[altAxis];
- var _len = altAxis === "y" ? "height" : "width";
- var _min = _offset + overflow[_mainSide];
- var _max = _offset - overflow[_altSide];
- var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
- var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
- var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
- var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
- var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
- popperOffsets2[altAxis] = _preventedOffset;
- data[altAxis] = _preventedOffset - _offset;
- }
- state.modifiersData[name] = data;
- }
- const preventOverflow$1 = {
- name: "preventOverflow",
- enabled: true,
- phase: "main",
- fn: preventOverflow,
- requiresIfExists: ["offset"]
- };
- function getHTMLElementScroll(element) {
- return {
- scrollLeft: element.scrollLeft,
- scrollTop: element.scrollTop
- };
- }
- function getNodeScroll(node) {
- if (node === getWindow(node) || !isHTMLElement(node)) {
- return getWindowScroll(node);
- } else {
- return getHTMLElementScroll(node);
- }
- }
- function isElementScaled(element) {
- var rect = element.getBoundingClientRect();
- var scaleX = round(rect.width) / element.offsetWidth || 1;
- var scaleY = round(rect.height) / element.offsetHeight || 1;
- return scaleX !== 1 || scaleY !== 1;
- }
- function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
- if (isFixed === void 0) {
- isFixed = false;
- }
- var isOffsetParentAnElement = isHTMLElement(offsetParent);
- var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
- var documentElement = getDocumentElement(offsetParent);
- var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
- var scroll = {
- scrollLeft: 0,
- scrollTop: 0
- };
- var offsets = {
- x: 0,
- y: 0
- };
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
- if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
- isScrollParent(documentElement)) {
- scroll = getNodeScroll(offsetParent);
- }
- if (isHTMLElement(offsetParent)) {
- offsets = getBoundingClientRect(offsetParent, true);
- offsets.x += offsetParent.clientLeft;
- offsets.y += offsetParent.clientTop;
- } else if (documentElement) {
- offsets.x = getWindowScrollBarX(documentElement);
- }
- }
- return {
- x: rect.left + scroll.scrollLeft - offsets.x,
- y: rect.top + scroll.scrollTop - offsets.y,
- width: rect.width,
- height: rect.height
- };
- }
- function order(modifiers) {
- var map = /* @__PURE__ */ new Map();
- var visited = /* @__PURE__ */ new Set();
- var result = [];
- modifiers.forEach(function(modifier) {
- map.set(modifier.name, modifier);
- });
- function sort(modifier) {
- visited.add(modifier.name);
- var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
- requires.forEach(function(dep) {
- if (!visited.has(dep)) {
- var depModifier = map.get(dep);
- if (depModifier) {
- sort(depModifier);
- }
- }
- });
- result.push(modifier);
- }
- modifiers.forEach(function(modifier) {
- if (!visited.has(modifier.name)) {
- sort(modifier);
- }
- });
- return result;
- }
- function orderModifiers(modifiers) {
- var orderedModifiers = order(modifiers);
- return modifierPhases.reduce(function(acc, phase) {
- return acc.concat(orderedModifiers.filter(function(modifier) {
- return modifier.phase === phase;
- }));
- }, []);
- }
- function debounce(fn) {
- var pending;
- return function() {
- if (!pending) {
- pending = new Promise(function(resolve) {
- Promise.resolve().then(function() {
- pending = void 0;
- resolve(fn());
- });
- });
- }
- return pending;
- };
- }
- function mergeByName(modifiers) {
- var merged = modifiers.reduce(function(merged2, current) {
- var existing = merged2[current.name];
- merged2[current.name] = existing ? Object.assign({}, existing, current, {
- options: Object.assign({}, existing.options, current.options),
- data: Object.assign({}, existing.data, current.data)
- }) : current;
- return merged2;
- }, {});
- return Object.keys(merged).map(function(key) {
- return merged[key];
- });
- }
- var DEFAULT_OPTIONS = {
- placement: "bottom",
- modifiers: [],
- strategy: "absolute"
- };
- function areValidElements() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- return !args.some(function(element) {
- return !(element && typeof element.getBoundingClientRect === "function");
- });
- }
- function popperGenerator(generatorOptions) {
- if (generatorOptions === void 0) {
- generatorOptions = {};
- }
- var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
- return function createPopper2(reference2, popper2, options) {
- if (options === void 0) {
- options = defaultOptions;
- }
- var state = {
- placement: "bottom",
- orderedModifiers: [],
- options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
- modifiersData: {},
- elements: {
- reference: reference2,
- popper: popper2
- },
- attributes: {},
- styles: {}
- };
- var effectCleanupFns = [];
- var isDestroyed = false;
- var instance = {
- state,
- setOptions: function setOptions(setOptionsAction) {
- var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
- cleanupModifierEffects();
- state.options = Object.assign({}, defaultOptions, state.options, options2);
- state.scrollParents = {
- reference: isElement$1(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
- popper: listScrollParents(popper2)
- };
- var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
- state.orderedModifiers = orderedModifiers.filter(function(m) {
- return m.enabled;
- });
- runModifierEffects();
- return instance.update();
- },
- // Sync update – it will always be executed, even if not necessary. This
- // is useful for low frequency updates where sync behavior simplifies the
- // logic.
- // For high frequency updates (e.g. `resize` and `scroll` events), always
- // prefer the async Popper#update method
- forceUpdate: function forceUpdate() {
- if (isDestroyed) {
- return;
- }
- var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
- if (!areValidElements(reference3, popper3)) {
- return;
- }
- state.rects = {
- reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
- popper: getLayoutRect(popper3)
- };
- state.reset = false;
- state.placement = state.options.placement;
- state.orderedModifiers.forEach(function(modifier) {
- return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
- });
- for (var index = 0; index < state.orderedModifiers.length; index++) {
- if (state.reset === true) {
- state.reset = false;
- index = -1;
- continue;
- }
- var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
- if (typeof fn === "function") {
- state = fn({
- state,
- options: _options,
- name,
- instance
- }) || state;
- }
- }
- },
- // Async and optimistically optimized update – it will not be executed if
- // not necessary (debounced to run at most once-per-tick)
- update: debounce(function() {
- return new Promise(function(resolve) {
- instance.forceUpdate();
- resolve(state);
- });
- }),
- destroy: function destroy() {
- cleanupModifierEffects();
- isDestroyed = true;
- }
- };
- if (!areValidElements(reference2, popper2)) {
- return instance;
- }
- instance.setOptions(options).then(function(state2) {
- if (!isDestroyed && options.onFirstUpdate) {
- options.onFirstUpdate(state2);
- }
- });
- function runModifierEffects() {
- state.orderedModifiers.forEach(function(_ref) {
- var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect2 = _ref.effect;
- if (typeof effect2 === "function") {
- var cleanupFn = effect2({
- state,
- name,
- instance,
- options: options2
- });
- var noopFn = function noopFn2() {
- };
- effectCleanupFns.push(cleanupFn || noopFn);
- }
- });
- }
- function cleanupModifierEffects() {
- effectCleanupFns.forEach(function(fn) {
- return fn();
- });
- effectCleanupFns = [];
- }
- return instance;
- };
- }
- var createPopper$2 = /* @__PURE__ */ popperGenerator();
- var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
- var createPopper$1 = /* @__PURE__ */ popperGenerator({
- defaultModifiers: defaultModifiers$1
- });
- var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
- var createPopper = /* @__PURE__ */ popperGenerator({
- defaultModifiers
- });
- const Popper = /* @__PURE__ */ Object.freeze({
- __proto__: null,
- afterMain,
- afterRead,
- afterWrite,
- applyStyles: applyStyles$1,
- arrow: arrow$1,
- auto,
- basePlacements,
- beforeMain,
- beforeRead,
- beforeWrite,
- bottom,
- clippingParents,
- computeStyles: computeStyles$1,
- createPopper,
- createPopperBase: createPopper$2,
- createPopperLite: createPopper$1,
- detectOverflow,
- end,
- eventListeners,
- flip: flip$1,
- hide: hide$1,
- left,
- main,
- modifierPhases,
- offset: offset$1,
- placements,
- popper,
- popperGenerator,
- popperOffsets: popperOffsets$1,
- preventOverflow: preventOverflow$1,
- read,
- reference,
- right,
- start,
- top,
- variationPlacements,
- viewport,
- write
- });
- const elementMap = /* @__PURE__ */ new Map();
- const Data = {
- set(element, key, instance) {
- if (!elementMap.has(element)) {
- elementMap.set(element, /* @__PURE__ */ new Map());
- }
- const instanceMap = elementMap.get(element);
- if (!instanceMap.has(key) && instanceMap.size !== 0) {
- console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
- return;
- }
- instanceMap.set(key, instance);
- },
- get(element, key) {
- if (elementMap.has(element)) {
- return elementMap.get(element).get(key) || null;
- }
- return null;
- },
- remove(element, key) {
- if (!elementMap.has(element)) {
- return;
- }
- const instanceMap = elementMap.get(element);
- instanceMap.delete(key);
- if (instanceMap.size === 0) {
- elementMap.delete(element);
- }
- }
- };
- const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
- const stripNameRegex = /\..*/;
- const stripUidRegex = /::\d+$/;
- const eventRegistry = {};
- let uidEvent = 1;
- const customEvents = {
- mouseenter: "mouseover",
- mouseleave: "mouseout"
- };
- const nativeEvents = /* @__PURE__ */ new Set([
- "click",
- "dblclick",
- "mouseup",
- "mousedown",
- "contextmenu",
- "mousewheel",
- "DOMMouseScroll",
- "mouseover",
- "mouseout",
- "mousemove",
- "selectstart",
- "selectend",
- "keydown",
- "keypress",
- "keyup",
- "orientationchange",
- "touchstart",
- "touchmove",
- "touchend",
- "touchcancel",
- "pointerdown",
- "pointermove",
- "pointerup",
- "pointerleave",
- "pointercancel",
- "gesturestart",
- "gesturechange",
- "gestureend",
- "focus",
- "blur",
- "change",
- "reset",
- "select",
- "submit",
- "focusin",
- "focusout",
- "load",
- "unload",
- "beforeunload",
- "resize",
- "move",
- "DOMContentLoaded",
- "readystatechange",
- "error",
- "abort",
- "scroll"
- ]);
- function makeEventUid(element, uid) {
- return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
- }
- function getElementEvents(element) {
- const uid = makeEventUid(element);
- element.uidEvent = uid;
- eventRegistry[uid] = eventRegistry[uid] || {};
- return eventRegistry[uid];
- }
- function bootstrapHandler(element, fn) {
- return function handler(event) {
- hydrateObj(event, { delegateTarget: element });
- if (handler.oneOff) {
- EventHandler.off(element, event.type, fn);
- }
- return fn.apply(element, [event]);
- };
- }
- function bootstrapDelegationHandler(element, selector, fn) {
- return function handler(event) {
- const domElements = element.querySelectorAll(selector);
- for (let { target } = event; target && target !== this; target = target.parentNode) {
- for (const domElement of domElements) {
- if (domElement !== target) {
- continue;
- }
- hydrateObj(event, { delegateTarget: target });
- if (handler.oneOff) {
- EventHandler.off(element, event.type, selector, fn);
- }
- return fn.apply(target, [event]);
- }
- }
- };
- }
- function findHandler(events, callable, delegationSelector = null) {
- return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector);
- }
- function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
- const isDelegated = typeof handler === "string";
- const callable = isDelegated ? delegationFunction : handler || delegationFunction;
- let typeEvent = getTypeEvent(originalTypeEvent);
- if (!nativeEvents.has(typeEvent)) {
- typeEvent = originalTypeEvent;
- }
- return [isDelegated, callable, typeEvent];
- }
- function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
- if (typeof originalTypeEvent !== "string" || !element) {
- return;
- }
- let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
- if (originalTypeEvent in customEvents) {
- const wrapFunction = (fn2) => {
- return function(event) {
- const evt = event;
- if (!evt.relatedTarget || evt.relatedTarget !== evt.delegateTarget && !evt.delegateTarget.contains(evt.relatedTarget)) {
- return fn2.call(this, event);
- }
- };
- };
- callable = wrapFunction(callable);
- }
- const events = getElementEvents(element);
- const handlers = events[typeEvent] || (events[typeEvent] = {});
- const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
- if (previousFunction) {
- previousFunction.oneOff = previousFunction.oneOff && oneOff;
- return;
- }
- const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ""));
- const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
- fn.delegationSelector = isDelegated ? handler : null;
- fn.callable = callable;
- fn.oneOff = oneOff;
- fn.uidEvent = uid;
- handlers[uid] = fn;
- element.addEventListener(typeEvent, fn, isDelegated);
- }
- function removeHandler(element, events, typeEvent, handler, delegationSelector) {
- const fn = findHandler(events[typeEvent], handler, delegationSelector != null ? delegationSelector : null);
- if (!fn) {
- return;
- }
- element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
- delete events[typeEvent][fn.uidEvent];
- }
- function removeNamespacedHandlers(element, events, typeEvent, namespace) {
- const storeElementEvent = events[typeEvent] || {};
- for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
- if (handlerKey.includes(namespace)) {
- removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
- }
- }
- }
- function getTypeEvent(event) {
- event = event.replace(stripNameRegex, "");
- return customEvents[event] || event;
- }
- const EventHandler = {
- on(element, event, handler, delegationFunction) {
- addHandler(element, event, handler, delegationFunction, false);
- },
- one(element, event, handler, delegationFunction) {
- addHandler(element, event, handler, delegationFunction, true);
- },
- off(element, originalTypeEvent, handler, delegationFunction) {
- if (typeof originalTypeEvent !== "string" || !element) {
- return;
- }
- const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
- const inNamespace = typeEvent !== originalTypeEvent;
- const events = getElementEvents(element);
- const storeElementEvent = events[typeEvent] || {};
- const isNamespace = originalTypeEvent.startsWith(".");
- if (typeof callable !== "undefined") {
- if (!Object.keys(storeElementEvent).length) {
- return;
- }
- removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
- return;
- }
- if (isNamespace) {
- for (const elementEvent of Object.keys(events)) {
- removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
- }
- }
- for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
- const handlerKey = keyHandlers.replace(stripUidRegex, "");
- if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
- removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
- }
- }
- },
- trigger(element, event, args) {
- if (typeof event !== "string" || !element) {
- return null;
- }
- const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args);
- element.dispatchEvent(evt);
- return evt;
- }
- };
- function hydrateObj(obj, meta = {}) {
- for (const [key, value] of Object.entries(meta)) {
- try {
- obj[key] = value;
- } catch (e) {
- Object.defineProperty(obj, key, {
- configurable: true,
- get() {
- return value;
- }
- });
- }
- }
- return obj;
- }
- function normalizeData(value) {
- if (value === "true") {
- return true;
- }
- if (value === "false") {
- return false;
- }
- if (value === Number(value).toString()) {
- return Number(value);
- }
- if (value === "" || value === "null") {
- return null;
- }
- if (typeof value !== "string") {
- return value;
- }
- try {
- return JSON.parse(decodeURIComponent(value));
- } catch (e) {
- return value;
- }
- }
- function normalizeDataKey(key) {
- return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
- }
- const PREFIXES = ["tblr", "bs"];
- const Manipulator = {
- setDataAttribute(element, key, value) {
- element.setAttribute(`data-tblr-${normalizeDataKey(key)}`, value);
- },
- removeDataAttribute(element, key) {
- for (const prefix2 of PREFIXES) {
- element.removeAttribute(`data-${prefix2}-${normalizeDataKey(key)}`);
- }
- },
- getDataAttributes(element) {
- if (!element) {
- return {};
- }
- const attributes = {};
- for (const prefix2 of PREFIXES) {
- const keys = Object.keys(element.dataset).filter((key) => key.startsWith(prefix2) && !key.startsWith(`${prefix2}Config`));
- for (const key of keys) {
- let pureKey = key.replace(new RegExp(`^${prefix2}`), "");
- pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);
- if (!(pureKey in attributes)) {
- attributes[pureKey] = normalizeData(element.dataset[key]);
- }
- }
- }
- return attributes;
- },
- getDataAttribute(element, key) {
- for (const prefix2 of PREFIXES) {
- const value = element.getAttribute(`data-${prefix2}-${normalizeDataKey(key)}`);
- if (value !== null) {
- return normalizeData(value);
- }
- }
- return null;
- }
- };
- const MAX_UID = 1e6;
- const MILLISECONDS_MULTIPLIER = 1e3;
- const TRANSITION_END = "transitionend";
- const parseSelector = (selector) => {
- if (selector && window.CSS && window.CSS.escape) {
- selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
- }
- return selector;
- };
- const toType = (object) => {
- if (object === null || object === void 0) {
- return `${object}`;
- }
- return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
- };
- const getUID = (prefix2) => {
- do {
- prefix2 += Math.floor(Math.random() * MAX_UID);
- } while (document.getElementById(prefix2));
- return prefix2;
- };
- const getTransitionDurationFromElement = (element) => {
- if (!element) {
- return 0;
- }
- let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
- const floatTransitionDuration = Number.parseFloat(transitionDuration);
- const floatTransitionDelay = Number.parseFloat(transitionDelay);
- if (!floatTransitionDuration && !floatTransitionDelay) {
- return 0;
- }
- transitionDuration = transitionDuration.split(",")[0];
- transitionDelay = transitionDelay.split(",")[0];
- return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
- };
- const triggerTransitionEnd = (element) => {
- element.dispatchEvent(new Event(TRANSITION_END));
- };
- const isElement = (object) => {
- if (!object || typeof object !== "object") {
- return false;
- }
- return typeof object.nodeType !== "undefined";
- };
- const getElement = (object) => {
- if (isElement(object)) {
- return object;
- }
- if (typeof object === "string" && object.length > 0) {
- return document.querySelector(parseSelector(object));
- }
- return null;
- };
- const isVisible = (element) => {
- if (!isElement(element) || element.getClientRects().length === 0) {
- return false;
- }
- const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible";
- const closedDetails = element.closest("details:not([open])");
- if (!closedDetails) {
- return elementIsVisible;
- }
- if (closedDetails !== element) {
- const summary = element.closest("summary");
- if (summary && summary.parentNode !== closedDetails) {
- return false;
- }
- if (summary === null) {
- return false;
- }
- }
- return elementIsVisible;
- };
- const isDisabled = (element) => {
- if (!element || element.nodeType !== Node.ELEMENT_NODE) {
- return true;
- }
- if (element.classList.contains("disabled")) {
- return true;
- }
- if ("disabled" in element && typeof element.disabled !== "undefined") {
- return Boolean(element.disabled);
- }
- return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false";
- };
- const findShadowRoot = (element) => {
- if (!document.documentElement.attachShadow) {
- return null;
- }
- if (typeof element.getRootNode === "function") {
- const root = element.getRootNode();
- return root instanceof ShadowRoot ? root : null;
- }
- if (element instanceof ShadowRoot) {
- return element;
- }
- if (!element.parentNode) {
- return null;
- }
- return findShadowRoot(element.parentNode);
- };
- const noop = () => {
- };
- const reflow = (element) => {
- element.offsetHeight;
- };
- const isRTL = () => document.documentElement.dir === "rtl";
- const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
- return typeof possibleCallback === "function" ? possibleCallback.call(args[0], ...args.slice(1)) : defaultValue;
- };
- const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
- if (!waitForTransition) {
- execute(callback);
- return;
- }
- const durationPadding = 5;
- const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
- let called = false;
- const handler = ({ target }) => {
- if (target !== transitionElement) {
- return;
- }
- called = true;
- transitionElement.removeEventListener(TRANSITION_END, handler);
- execute(callback);
- };
- transitionElement.addEventListener(TRANSITION_END, handler);
- setTimeout(() => {
- if (!called) {
- triggerTransitionEnd(transitionElement);
- }
- }, emulatedDuration);
- };
- const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
- const listLength = list.length;
- let index = list.indexOf(activeElement);
- if (index === -1) {
- return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
- }
- index += shouldGetNext ? 1 : -1;
- if (isCycleAllowed) {
- index = (index + listLength) % listLength;
- }
- return list[Math.max(0, Math.min(index, listLength - 1))];
- };
- var __defProp$4 = Object.defineProperty;
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$4 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$4.call(b, prop))
- __defNormalProp$4(a, prop, b[prop]);
- if (__getOwnPropSymbols$4)
- for (var prop of __getOwnPropSymbols$4(b)) {
- if (__propIsEnum$4.call(b, prop))
- __defNormalProp$4(a, prop, b[prop]);
- }
- return a;
- };
- class Config {
- static get Default() {
- return {};
- }
- static get DefaultType() {
- return {};
- }
- static get NAME() {
- throw new Error('You have to implement the static method "NAME", for each component!');
- }
- _getConfig(config) {
- config = this._mergeConfigObj(config);
- config = this._configAfterMerge(config);
- this._typeCheckConfig(config);
- return config;
- }
- _configAfterMerge(config) {
- return config;
- }
- _mergeConfigObj(config, element) {
- const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, "config") : {};
- const ctor = this.constructor;
- return __spreadValues$4(__spreadValues$4(__spreadValues$4(__spreadValues$4({}, ctor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? Manipulator.getDataAttributes(element) : {}), typeof config === "object" ? config : {});
- }
- _typeCheckConfig(config, configTypes) {
- const ctor = this.constructor;
- const types = configTypes || ctor.DefaultType;
- for (const [property, expectedTypes] of Object.entries(types)) {
- const value = config[property];
- const valueType = isElement(value) ? "element" : toType(value);
- if (!new RegExp(expectedTypes).test(valueType)) {
- throw new TypeError(
- `${ctor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`
- );
- }
- }
- }
- }
- const VERSION = "5.3.8";
- class BaseComponent extends Config {
- constructor(element, config) {
- super();
- const resolved = getElement(element);
- if (!resolved) {
- return;
- }
- this._element = resolved;
- this._config = this._getConfig(config);
- const ctor = this.constructor;
- Data.set(this._element, ctor.DATA_KEY, this);
- }
- dispose() {
- const ctor = this.constructor;
- Data.remove(this._element, ctor.DATA_KEY);
- EventHandler.off(this._element, ctor.EVENT_KEY);
- for (const propertyName of Object.getOwnPropertyNames(this)) {
- this[propertyName] = null;
- }
- }
- _queueCallback(callback, element, isAnimated = true) {
- executeAfterTransition(callback, element, isAnimated);
- }
- _getConfig(config) {
- config = this._mergeConfigObj(config, this._element);
- config = this._configAfterMerge(config);
- this._typeCheckConfig(config);
- return config;
- }
- static getInstance(element) {
- return Data.get(getElement(element), this.DATA_KEY);
- }
- static getOrCreateInstance(element, config = {}) {
- return this.getInstance(element) || new this(element, typeof config === "object" ? config : null);
- }
- static get VERSION() {
- return VERSION;
- }
- static get DATA_KEY() {
- return `bs.${this.NAME}`;
- }
- static get EVENT_KEY() {
- return `.${this.DATA_KEY}`;
- }
- static eventName(name) {
- return `${name}${this.EVENT_KEY}`;
- }
- }
- const getSelector = (element) => {
- let selector = element.getAttribute("data-tblr-target") || element.getAttribute("data-bs-target");
- if (!selector || selector === "#") {
- let hrefAttribute = element.getAttribute("href");
- if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) {
- return null;
- }
- if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) {
- hrefAttribute = `#${hrefAttribute.split("#")[1]}`;
- }
- selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null;
- }
- return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null;
- };
- const SelectorEngine = {
- find(selector, element = document.documentElement) {
- return Array.from(element.querySelectorAll(selector));
- },
- findOne(selector, element = document.documentElement) {
- return element.querySelector(selector);
- },
- children(element, selector) {
- return Array.from(element.children).filter((child) => child.matches(selector));
- },
- parents(element, selector) {
- const parents = [];
- let ancestor = element.parentNode && element.parentNode.closest(selector);
- while (ancestor) {
- parents.push(ancestor);
- ancestor = ancestor.parentNode && ancestor.parentNode.closest(selector);
- }
- return parents;
- },
- prev(element, selector) {
- let previous = element.previousElementSibling;
- while (previous) {
- if (previous.matches(selector)) {
- return [previous];
- }
- previous = previous.previousElementSibling;
- }
- return [];
- },
- next(element, selector) {
- let next = element.nextElementSibling;
- while (next) {
- if (next.matches(selector)) {
- return [next];
- }
- next = next.nextElementSibling;
- }
- 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));
- },
- getSelectorFromElement(element) {
- const selector = getSelector(element);
- if (selector) {
- return SelectorEngine.findOne(selector) ? selector : null;
- }
- return null;
- },
- getElementFromSelector(element) {
- const selector = getSelector(element);
- return selector ? SelectorEngine.findOne(selector) : null;
- },
- getMultipleElementsFromSelector(element) {
- const selector = getSelector(element);
- return selector ? SelectorEngine.find(selector) : [];
- }
- };
- const enableDismissTrigger = (component, method = "hide") => {
- const clickEvent = `click.dismiss${component.EVENT_KEY}`;
- const name = component.NAME;
- EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"], [data-tblr-dismiss="${name}"]`, function(event) {
- if (["A", "AREA"].includes(this.tagName)) {
- event.preventDefault();
- }
- if (isDisabled(this)) {
- return;
- }
- const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
- const instance = component.getOrCreateInstance(target);
- instance[method]();
- });
- };
- const NAME$f = "alert";
- const DATA_KEY$a = "bs.alert";
- const EVENT_KEY$b = `.${DATA_KEY$a}`;
- const EVENT_CLOSE = `close${EVENT_KEY$b}`;
- const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
- const CLASS_NAME_FADE$5 = "fade";
- const CLASS_NAME_SHOW$8 = "show";
- class Alert extends BaseComponent {
- static get NAME() {
- return NAME$f;
- }
- close() {
- const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
- if (closeEvent == null ? void 0 : closeEvent.defaultPrevented) {
- return;
- }
- this._element.classList.remove(CLASS_NAME_SHOW$8);
- const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
- this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
- }
- _destroyElement() {
- this._element.remove();
- EventHandler.trigger(this._element, EVENT_CLOSED);
- this.dispose();
- }
- }
- enableDismissTrigger(Alert, "close");
- const NAME$e = "button";
- const DATA_KEY$9 = "bs.button";
- const EVENT_KEY$a = `.${DATA_KEY$9}`;
- const DATA_API_KEY$6 = ".data-api";
- const CLASS_NAME_ACTIVE$3 = "active";
- const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"], [data-tblr-toggle="button"]';
- const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
- class Button extends BaseComponent {
- static get NAME() {
- return NAME$e;
- }
- toggle() {
- this._element.setAttribute("aria-pressed", String(this._element.classList.toggle(CLASS_NAME_ACTIVE$3)));
- }
- }
- EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event) => {
- var _a;
- event.preventDefault();
- const target = (_a = event.target) == null ? void 0 : _a.closest(SELECTOR_DATA_TOGGLE$5);
- if (!target) {
- return;
- }
- const data = Button.getOrCreateInstance(target);
- data.toggle();
- });
- const NAME$d = "swipe";
- const EVENT_KEY$9 = ".bs.swipe";
- const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
- const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
- const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
- const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
- const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
- const POINTER_TYPE_TOUCH = "touch";
- const POINTER_TYPE_PEN = "pen";
- const CLASS_NAME_POINTER_EVENT = "pointer-event";
- const SWIPE_THRESHOLD = 40;
- const Default$c = {
- endCallback: null,
- leftCallback: null,
- rightCallback: null
- };
- const DefaultType$c = {
- endCallback: "(function|null)",
- leftCallback: "(function|null)",
- rightCallback: "(function|null)"
- };
- class Swipe extends Config {
- constructor(element, config) {
- super();
- this._element = element;
- if (!element || !Swipe.isSupported()) {
- return;
- }
- this._config = this._getConfig(config);
- this._deltaX = 0;
- this._supportPointerEvents = Boolean(window.PointerEvent);
- this._initEvents();
- }
- static get Default() {
- return Default$c;
- }
- static get DefaultType() {
- return DefaultType$c;
- }
- static get NAME() {
- return NAME$d;
- }
- dispose() {
- EventHandler.off(this._element, EVENT_KEY$9);
- }
- _start(event) {
- if (!this._supportPointerEvents) {
- this._deltaX = event.touches[0].clientX;
- return;
- }
- if (this._eventIsPointerPenTouch(event)) {
- this._deltaX = event.clientX;
- }
- }
- _end(event) {
- if (this._eventIsPointerPenTouch(event)) {
- this._deltaX = event.clientX - this._deltaX;
- }
- this._handleSwipe();
- execute(this._config.endCallback);
- }
- _move(event) {
- this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
- }
- _handleSwipe() {
- const absDeltaX = Math.abs(this._deltaX);
- if (absDeltaX <= SWIPE_THRESHOLD) {
- return;
- }
- const direction = absDeltaX / this._deltaX;
- this._deltaX = 0;
- if (!direction) {
- return;
- }
- execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
- }
- _initEvents() {
- if (this._supportPointerEvents) {
- EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event));
- EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event));
- this._element.classList.add(CLASS_NAME_POINTER_EVENT);
- } else {
- EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event));
- EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event));
- EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event));
- }
- }
- _eventIsPointerPenTouch(event) {
- return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
- }
- static isSupported() {
- return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
- }
- }
- const NAME$c = "carousel";
- const DATA_KEY$8 = "bs.carousel";
- const EVENT_KEY$8 = `.${DATA_KEY$8}`;
- const DATA_API_KEY$5 = ".data-api";
- const ARROW_LEFT_KEY$1 = "ArrowLeft";
- const ARROW_RIGHT_KEY$1 = "ArrowRight";
- const TOUCHEVENT_COMPAT_WAIT = 500;
- const ORDER_NEXT = "next";
- const ORDER_PREV = "prev";
- const DIRECTION_LEFT = "left";
- const DIRECTION_RIGHT = "right";
- const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
- const EVENT_SLID = `slid${EVENT_KEY$8}`;
- const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
- const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
- const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
- const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
- const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
- const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
- const CLASS_NAME_CAROUSEL = "carousel";
- const CLASS_NAME_ACTIVE$2 = "active";
- const CLASS_NAME_SLIDE = "slide";
- const CLASS_NAME_END = "carousel-item-end";
- const CLASS_NAME_START = "carousel-item-start";
- const CLASS_NAME_NEXT = "carousel-item-next";
- const CLASS_NAME_PREV = "carousel-item-prev";
- const SELECTOR_ACTIVE = ".active";
- const SELECTOR_ITEM = ".carousel-item";
- const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
- const SELECTOR_ITEM_IMG = ".carousel-item img";
- const SELECTOR_INDICATORS = ".carousel-indicators";
- const SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to], [data-tblr-slide], [data-tblr-slide-to]";
- const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"], [data-tblr-ride="carousel"]';
- const KEY_TO_DIRECTION = {
- [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
- [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
- };
- const Default$b = {
- interval: 5e3,
- keyboard: true,
- pause: "hover",
- ride: false,
- touch: true,
- wrap: true
- };
- const DefaultType$b = {
- interval: "(number|boolean)",
- keyboard: "boolean",
- pause: "(string|boolean)",
- ride: "(boolean|string)",
- touch: "boolean",
- wrap: "boolean"
- };
- class Carousel extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._interval = null;
- this._activeElement = null;
- this._isSliding = false;
- this.touchTimeout = null;
- this._swipeHelper = null;
- this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
- this._addEventListeners();
- if (this._config.ride === CLASS_NAME_CAROUSEL) {
- this.cycle();
- }
- }
- static get Default() {
- return Default$b;
- }
- static get DefaultType() {
- return DefaultType$b;
- }
- static get NAME() {
- return NAME$c;
- }
- next() {
- this._slide(ORDER_NEXT);
- }
- nextWhenVisible() {
- if (!document.hidden && isVisible(this._element)) {
- this.next();
- }
- }
- prev() {
- this._slide(ORDER_PREV);
- }
- pause() {
- if (this._isSliding) {
- triggerTransitionEnd(this._element);
- }
- this._clearInterval();
- }
- cycle() {
- this._clearInterval();
- this._updateInterval();
- this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
- }
- _maybeEnableCycle() {
- if (!this._config.ride) {
- return;
- }
- if (this._isSliding) {
- EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
- return;
- }
- this.cycle();
- }
- to(index) {
- const items = this._getItems();
- if (index > items.length - 1 || index < 0) {
- return;
- }
- if (this._isSliding) {
- EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
- return;
- }
- const activeIndex = this._getItemIndex(this._getActive());
- if (activeIndex === index) {
- return;
- }
- const order2 = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
- this._slide(order2, items[index]);
- }
- dispose() {
- if (this._swipeHelper) {
- this._swipeHelper.dispose();
- }
- super.dispose();
- }
- _configAfterMerge(config) {
- config.defaultInterval = config.interval;
- return config;
- }
- _addEventListeners() {
- if (this._config.keyboard) {
- EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event));
- }
- if (this._config.pause === "hover") {
- EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
- EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
- }
- if (this._config.touch && Swipe.isSupported()) {
- this._addTouchEventListeners();
- }
- }
- _addTouchEventListeners() {
- for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
- EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());
- }
- const endCallBack = () => {
- if (this._config.pause !== "hover") {
- return;
- }
- this.pause();
- if (this.touchTimeout) {
- clearTimeout(this.touchTimeout);
- }
- this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
- };
- const swipeConfig = {
- leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
- rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
- endCallback: endCallBack
- };
- this._swipeHelper = new Swipe(this._element, swipeConfig);
- }
- _keydown(event) {
- if (/input|textarea/i.test(event.target.tagName)) {
- return;
- }
- const direction = KEY_TO_DIRECTION[event.key];
- if (direction) {
- event.preventDefault();
- this._slide(this._directionToOrder(direction));
- }
- }
- _getItemIndex(element) {
- return this._getItems().indexOf(element);
- }
- _setActiveIndicatorElement(index) {
- if (!this._indicatorsElement) {
- return;
- }
- const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
- activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
- activeIndicator.removeAttribute("aria-current");
- const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"], [data-tblr-slide-to="${index}"]`, this._indicatorsElement);
- if (newActiveIndicator) {
- newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
- newActiveIndicator.setAttribute("aria-current", "true");
- }
- }
- _updateInterval() {
- const element = this._activeElement || this._getActive();
- if (!element) {
- return;
- }
- const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval") || element.getAttribute("data-tblr-interval") || "", 10);
- this._config.interval = elementInterval || this._config.defaultInterval;
- }
- _slide(order2, element = null) {
- if (this._isSliding) {
- return;
- }
- const activeElement = this._getActive();
- const isNext = order2 === ORDER_NEXT;
- const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
- if (nextElement === activeElement) {
- return;
- }
- const nextElementIndex = this._getItemIndex(nextElement);
- const triggerEvent = (eventName) => {
- return EventHandler.trigger(this._element, eventName, {
- relatedTarget: nextElement,
- direction: this._orderToDirection(order2),
- from: this._getItemIndex(activeElement),
- to: nextElementIndex
- });
- };
- const slideEvent = triggerEvent(EVENT_SLIDE);
- if (slideEvent.defaultPrevented) {
- return;
- }
- if (!activeElement || !nextElement) {
- return;
- }
- const isCycling = Boolean(this._interval);
- this.pause();
- this._isSliding = true;
- this._setActiveIndicatorElement(nextElementIndex);
- this._activeElement = nextElement;
- const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
- const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
- nextElement.classList.add(orderClassName);
- reflow(nextElement);
- activeElement.classList.add(directionalClassName);
- nextElement.classList.add(directionalClassName);
- const completeCallBack = () => {
- nextElement.classList.remove(directionalClassName, orderClassName);
- nextElement.classList.add(CLASS_NAME_ACTIVE$2);
- activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
- this._isSliding = false;
- triggerEvent(EVENT_SLID);
- };
- this._queueCallback(completeCallBack, activeElement, this._isAnimated());
- if (isCycling) {
- this.cycle();
- }
- }
- _isAnimated() {
- return this._element.classList.contains(CLASS_NAME_SLIDE);
- }
- _getActive() {
- return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
- }
- _getItems() {
- return SelectorEngine.find(SELECTOR_ITEM, this._element);
- }
- _clearInterval() {
- if (this._interval) {
- clearInterval(this._interval);
- this._interval = null;
- }
- }
- _directionToOrder(direction) {
- if (isRTL()) {
- return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
- }
- return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
- }
- _orderToDirection(order2) {
- if (isRTL()) {
- return order2 === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
- }
- return order2 === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
- }
- }
- EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) {
- const target = SelectorEngine.getElementFromSelector(this);
- if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
- return;
- }
- event.preventDefault();
- const carousel = Carousel.getOrCreateInstance(target);
- const slideIndex = this.getAttribute("data-bs-slide-to") || this.getAttribute("data-tblr-slide-to");
- if (slideIndex) {
- carousel.to(Number(slideIndex));
- carousel._maybeEnableCycle();
- return;
- }
- if (Manipulator.getDataAttribute(this, "slide") === "next") {
- carousel.next();
- carousel._maybeEnableCycle();
- return;
- }
- carousel.prev();
- carousel._maybeEnableCycle();
- });
- EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
- const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
- for (const carousel of carousels) {
- Carousel.getOrCreateInstance(carousel);
- }
- });
- const NAME$b = "collapse";
- const DATA_KEY$7 = "bs.collapse";
- const EVENT_KEY$7 = `.${DATA_KEY$7}`;
- const DATA_API_KEY$4 = ".data-api";
- const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
- const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
- const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
- const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
- const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
- const CLASS_NAME_SHOW$7 = "show";
- const CLASS_NAME_COLLAPSE = "collapse";
- const CLASS_NAME_COLLAPSING = "collapsing";
- const CLASS_NAME_COLLAPSED = "collapsed";
- const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
- const CLASS_NAME_HORIZONTAL = "collapse-horizontal";
- const WIDTH = "width";
- const HEIGHT = "height";
- const SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing";
- const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"], [data-tblr-toggle="collapse"]';
- const Default$a = {
- parent: null,
- toggle: true
- };
- const DefaultType$a = {
- parent: "(null|element)",
- toggle: "boolean"
- };
- class Collapse extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._isTransitioning = false;
- this._triggerArray = [];
- const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
- for (const elem of toggleList) {
- const selector = SelectorEngine.getSelectorFromElement(elem);
- const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element);
- if (selector !== null && filterElement.length) {
- this._triggerArray.push(elem);
- }
- }
- this._initializeChildren();
- if (!this._config.parent) {
- this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
- }
- if (this._config.toggle) {
- this.toggle();
- }
- }
- static get Default() {
- return Default$a;
- }
- static get DefaultType() {
- return DefaultType$a;
- }
- static get NAME() {
- return NAME$b;
- }
- toggle() {
- if (this._isShown()) {
- this.hide();
- } else {
- this.show();
- }
- }
- show() {
- if (this._isTransitioning || this._isShown()) {
- return;
- }
- let activeChildren = [];
- if (this._config.parent) {
- activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => Collapse.getOrCreateInstance(element, { toggle: false }));
- }
- if (activeChildren.length && activeChildren[0]._isTransitioning) {
- return;
- }
- const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
- if (startEvent == null ? void 0 : startEvent.defaultPrevented) {
- return;
- }
- for (const activeInstance of activeChildren) {
- activeInstance.hide();
- }
- const dimension = this._getDimension();
- this._element.classList.remove(CLASS_NAME_COLLAPSE);
- this._element.classList.add(CLASS_NAME_COLLAPSING);
- this._element.style[dimension] = "0";
- 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$7);
- this._element.style[dimension] = "";
- EventHandler.trigger(this._element, EVENT_SHOWN$6);
- };
- const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
- const scrollSize = `scroll${capitalizedDimension}`;
- this._queueCallback(complete, this._element, true);
- this._element.style[dimension] = `${this._element[scrollSize]}px`;
- }
- hide() {
- if (this._isTransitioning || !this._isShown()) {
- return;
- }
- const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
- if (startEvent == null ? void 0 : startEvent.defaultPrevented) {
- return;
- }
- const dimension = this._getDimension();
- this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
- reflow(this._element);
- this._element.classList.add(CLASS_NAME_COLLAPSING);
- this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
- for (const trigger of this._triggerArray) {
- const element = SelectorEngine.getElementFromSelector(trigger);
- if (element && !this._isShown(element)) {
- this._addAriaAndCollapsedClass([trigger], false);
- }
- }
- this._isTransitioning = true;
- const complete = () => {
- this._isTransitioning = false;
- this._element.classList.remove(CLASS_NAME_COLLAPSING);
- this._element.classList.add(CLASS_NAME_COLLAPSE);
- EventHandler.trigger(this._element, EVENT_HIDDEN$6);
- };
- this._element.style[dimension] = "";
- this._queueCallback(complete, this._element, true);
- }
- _isShown(element = this._element) {
- return element.classList.contains(CLASS_NAME_SHOW$7);
- }
- _configAfterMerge(config) {
- config.toggle = Boolean(config.toggle);
- config.parent = getElement(config.parent);
- return config;
- }
- _getDimension() {
- return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
- }
- _initializeChildren() {
- if (!this._config.parent) {
- return;
- }
- const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
- for (const element of children) {
- const selected = SelectorEngine.getElementFromSelector(element);
- if (selected) {
- this._addAriaAndCollapsedClass([element], this._isShown(selected));
- }
- }
- }
- _getFirstLevelChildren(selector) {
- const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
- return SelectorEngine.find(selector, this._config.parent).filter((element) => !children.includes(element));
- }
- _addAriaAndCollapsedClass(triggerArray, isOpen) {
- if (!triggerArray.length) {
- return;
- }
- for (const element of triggerArray) {
- element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
- element.setAttribute("aria-expanded", String(isOpen));
- }
- }
- }
- EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event) {
- if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") {
- event.preventDefault();
- }
- for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
- Collapse.getOrCreateInstance(element, { toggle: false }).toggle();
- }
- });
- var __defProp$3 = Object.defineProperty;
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$3 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$3.call(b, prop))
- __defNormalProp$3(a, prop, b[prop]);
- if (__getOwnPropSymbols$3)
- for (var prop of __getOwnPropSymbols$3(b)) {
- if (__propIsEnum$3.call(b, prop))
- __defNormalProp$3(a, prop, b[prop]);
- }
- return a;
- };
- const NAME$a = "dropdown";
- const DATA_KEY$6 = "bs.dropdown";
- const EVENT_KEY$6 = `.${DATA_KEY$6}`;
- const DATA_API_KEY$3 = ".data-api";
- const ESCAPE_KEY$2 = "Escape";
- const TAB_KEY$1 = "Tab";
- const ARROW_UP_KEY$1 = "ArrowUp";
- const ARROW_DOWN_KEY$1 = "ArrowDown";
- const RIGHT_MOUSE_BUTTON = 2;
- const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
- const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
- const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
- const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
- const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
- const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
- const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
- const CLASS_NAME_SHOW$6 = "show";
- const CLASS_NAME_DROPUP = "dropup";
- const CLASS_NAME_DROPEND = "dropend";
- const CLASS_NAME_DROPSTART = "dropstart";
- const CLASS_NAME_DROPUP_CENTER = "dropup-center";
- const CLASS_NAME_DROPDOWN_CENTER = "dropdown-center";
- const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled), [data-tblr-toggle="dropdown"]:not(.disabled):not(:disabled)';
- const SELECTOR_DATA_TOGGLE_SHOWN = `.${CLASS_NAME_SHOW$6}[data-bs-toggle="dropdown"], .${CLASS_NAME_SHOW$6}[data-tblr-toggle="dropdown"]`;
- const SELECTOR_MENU = ".dropdown-menu";
- const SELECTOR_NAVBAR = ".navbar";
- const SELECTOR_NAVBAR_NAV = ".navbar-nav";
- const SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
- const PLACEMENT_TOP = isRTL() ? "top-end" : "top-start";
- const PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end";
- const PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start";
- const PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end";
- const PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start";
- const PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start";
- const PLACEMENT_TOPCENTER = "top";
- const PLACEMENT_BOTTOMCENTER = "bottom";
- const Default$9 = {
- autoClose: true,
- boundary: "clippingParents",
- display: "dynamic",
- offset: [0, 2],
- popperConfig: null,
- reference: "toggle"
- };
- const DefaultType$9 = {
- autoClose: "(boolean|string)",
- boundary: "(string|element)",
- display: "string",
- offset: "(array|string|function)",
- popperConfig: "(null|object|function)",
- reference: "(string|element|object)"
- };
- class Dropdown extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._popper = null;
- this._parent = this._element.parentNode;
- this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
- this._inNavbar = this._detectNavbar();
- }
- static get Default() {
- return Default$9;
- }
- static get DefaultType() {
- return DefaultType$9;
- }
- static get NAME() {
- return NAME$a;
- }
- toggle() {
- this._isShown() ? this.hide() : this.show();
- }
- show() {
- if (isDisabled(this._element) || this._isShown()) {
- return;
- }
- const relatedTarget = {
- relatedTarget: this._element
- };
- const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
- if (showEvent.defaultPrevented) {
- return;
- }
- this._createPopper();
- if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
- for (const element of [].concat(...document.body.children)) {
- EventHandler.on(element, "mouseover", noop);
- }
- }
- this._element.focus();
- this._element.setAttribute("aria-expanded", "true");
- this._menu.classList.add(CLASS_NAME_SHOW$6);
- this._element.classList.add(CLASS_NAME_SHOW$6);
- EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
- }
- hide() {
- if (isDisabled(this._element) || !this._isShown()) {
- return;
- }
- const relatedTarget = {
- relatedTarget: this._element
- };
- this._completeHide(relatedTarget);
- }
- dispose() {
- if (this._popper) {
- this._popper.destroy();
- }
- super.dispose();
- }
- update() {
- this._inNavbar = this._detectNavbar();
- if (this._popper) {
- this._popper.update();
- }
- }
- _completeHide(relatedTarget) {
- const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
- if (hideEvent.defaultPrevented) {
- return;
- }
- if ("ontouchstart" in document.documentElement) {
- for (const element of [].concat(...document.body.children)) {
- EventHandler.off(element, "mouseover", noop);
- }
- }
- if (this._popper) {
- this._popper.destroy();
- }
- this._menu.classList.remove(CLASS_NAME_SHOW$6);
- this._element.classList.remove(CLASS_NAME_SHOW$6);
- this._element.setAttribute("aria-expanded", "false");
- Manipulator.removeDataAttribute(this._menu, "popper");
- EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
- }
- _getConfig(config) {
- config = super._getConfig(config);
- if (typeof config.reference === "object" && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== "function") {
- throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
- }
- return config;
- }
- _createPopper() {
- if (typeof Popper === "undefined") {
- throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");
- }
- let referenceElement = this._element;
- if (this._config.reference === "parent") {
- referenceElement = this._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();
- this._popper = createPopper(referenceElement, this._menu, popperConfig);
- }
- _isShown() {
- return this._menu.classList.contains(CLASS_NAME_SHOW$6);
- }
- _getPlacement() {
- const parentDropdown = this._parent;
- if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
- return PLACEMENT_RIGHT;
- }
- if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
- return PLACEMENT_LEFT;
- }
- if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
- return PLACEMENT_TOPCENTER;
- }
- if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
- return PLACEMENT_BOTTOMCENTER;
- }
- const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end";
- if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
- return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
- }
- return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
- }
- _detectNavbar() {
- return this._element.closest(SELECTOR_NAVBAR) !== null;
- }
- _getOffset() {
- const { offset: offset2 } = this._config;
- if (typeof offset2 === "string") {
- return offset2.split(",").map((value) => Number.parseInt(value, 10));
- }
- if (typeof offset2 === "function") {
- return (popperData) => offset2(popperData, this._element);
- }
- return offset2;
- }
- _getPopperConfig() {
- const defaultBsPopperConfig = {
- placement: this._getPlacement(),
- modifiers: [
- {
- name: "preventOverflow",
- options: {
- boundary: this._config.boundary
- }
- },
- {
- name: "offset",
- options: {
- offset: this._getOffset()
- }
- }
- ]
- };
- if (this._inNavbar || this._config.display === "static") {
- Manipulator.setDataAttribute(this._menu, "popper", "static");
- defaultBsPopperConfig.modifiers = [{
- name: "applyStyles",
- enabled: false
- }];
- }
- const popperConfig = execute(this._config.popperConfig, [void 0, defaultBsPopperConfig]);
- return __spreadValues$3(__spreadValues$3({}, defaultBsPopperConfig), typeof popperConfig === "object" && popperConfig !== null ? popperConfig : {});
- }
- _selectMenuItem({ key, target }) {
- const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));
- if (!items.length) {
- return;
- }
- getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
- }
- static clearMenus(event) {
- if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) {
- return;
- }
- const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
- for (const toggle of openToggles) {
- const context = Dropdown.getInstance(toggle);
- if (!context || context._config.autoClose === false) {
- continue;
- }
- const composedPath = event.composedPath();
- const isMenuTarget = composedPath.includes(context._menu);
- if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) {
- continue;
- }
- if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
- continue;
- }
- const relatedTarget = { relatedTarget: context._element };
- if (event.type === "click") {
- relatedTarget.clickEvent = event;
- }
- context._completeHide(relatedTarget);
- }
- }
- static dataApiKeydownHandler(event) {
- const isInput = /input|textarea/i.test(event.target.tagName);
- const isEscapeEvent = event.key === ESCAPE_KEY$2;
- const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
- if (!isUpOrDownEvent && !isEscapeEvent) {
- return;
- }
- if (isInput && !isEscapeEvent) {
- return;
- }
- event.preventDefault();
- const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
- const instance = Dropdown.getOrCreateInstance(getToggleButton);
- if (isUpOrDownEvent) {
- event.stopPropagation();
- instance.show();
- instance._selectMenuItem(event);
- return;
- }
- if (instance._isShown()) {
- event.stopPropagation();
- instance.hide();
- getToggleButton.focus();
- }
- }
- }
- EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
- EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
- EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
- EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
- EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event) {
- event.preventDefault();
- Dropdown.getOrCreateInstance(this).toggle();
- });
- const NAME$9 = "backdrop";
- const CLASS_NAME_FADE$4 = "fade";
- const CLASS_NAME_SHOW$5 = "show";
- const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
- const Default$8 = {
- className: "modal-backdrop",
- clickCallback: null,
- isAnimated: false,
- isVisible: true,
- rootElement: "body"
- };
- const DefaultType$8 = {
- className: "string",
- clickCallback: "(function|null)",
- isAnimated: "boolean",
- isVisible: "boolean",
- rootElement: "(element|string)"
- };
- class Backdrop extends Config {
- constructor(config) {
- super();
- this._config = this._getConfig(config);
- this._isAppended = false;
- this._element = null;
- }
- static get Default() {
- return Default$8;
- }
- static get DefaultType() {
- return DefaultType$8;
- }
- static get NAME() {
- return NAME$9;
- }
- show(callback) {
- if (!this._config.isVisible) {
- execute(callback);
- return;
- }
- this._append();
- const element = this._getElement();
- if (this._config.isAnimated) {
- reflow(element);
- }
- element.classList.add(CLASS_NAME_SHOW$5);
- this._emulateAnimation(() => {
- execute(callback);
- });
- }
- hide(callback) {
- if (!this._config.isVisible) {
- execute(callback);
- return;
- }
- this._getElement().classList.remove(CLASS_NAME_SHOW$5);
- this._emulateAnimation(() => {
- this.dispose();
- execute(callback);
- });
- }
- dispose() {
- if (!this._isAppended) {
- return;
- }
- EventHandler.off(this._element, EVENT_MOUSEDOWN);
- this._element.remove();
- this._isAppended = false;
- }
- _getElement() {
- if (!this._element) {
- const backdrop = document.createElement("div");
- backdrop.className = this._config.className;
- if (this._config.isAnimated) {
- backdrop.classList.add(CLASS_NAME_FADE$4);
- }
- this._element = backdrop;
- }
- return this._element;
- }
- _configAfterMerge(config) {
- config.rootElement = getElement(config.rootElement);
- return config;
- }
- _append() {
- if (this._isAppended) {
- return;
- }
- const element = this._getElement();
- this._config.rootElement.append(element);
- EventHandler.on(element, EVENT_MOUSEDOWN, () => {
- execute(this._config.clickCallback);
- });
- this._isAppended = true;
- }
- _emulateAnimation(callback) {
- executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
- }
- }
- const NAME$8 = "focustrap";
- const DATA_KEY$5 = "bs.focustrap";
- const EVENT_KEY$5 = `.${DATA_KEY$5}`;
- const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
- const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
- const TAB_KEY = "Tab";
- const TAB_NAV_FORWARD = "forward";
- const TAB_NAV_BACKWARD = "backward";
- const Default$7 = {
- autofocus: true,
- trapElement: null
- };
- const DefaultType$7 = {
- autofocus: "boolean",
- trapElement: "element"
- };
- class FocusTrap extends Config {
- constructor(config) {
- super();
- this._config = this._getConfig(config);
- this._isActive = false;
- this._lastTabNavDirection = null;
- }
- static get Default() {
- return Default$7;
- }
- static get DefaultType() {
- return DefaultType$7;
- }
- static get NAME() {
- return NAME$8;
- }
- activate() {
- if (this._isActive) {
- return;
- }
- if (this._config.autofocus) {
- this._config.trapElement.focus();
- }
- EventHandler.off(document, EVENT_KEY$5);
- EventHandler.on(document, EVENT_FOCUSIN$2, (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$5);
- }
- _handleFocusin(event) {
- const { trapElement } = this._config;
- if (event.target === document || event.target === trapElement || trapElement.contains(event.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;
- }
- }
- const SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
- const SELECTOR_STICKY_CONTENT = ".sticky-top";
- const PROPERTY_PADDING = "padding-right";
- const PROPERTY_MARGIN = "margin-right";
- class ScrollBarHelper {
- constructor() {
- this._element = document.body;
- }
- getWidth() {
- const documentWidth = document.documentElement.clientWidth;
- return Math.abs(window.innerWidth - documentWidth);
- }
- hide() {
- const width = this.getWidth();
- this._disableOverFlow();
- this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
- this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
- this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);
- }
- reset() {
- this._resetElementAttributes(this._element, "overflow");
- this._resetElementAttributes(this._element, PROPERTY_PADDING);
- this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
- this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
- }
- isOverflowing() {
- return this.getWidth() > 0;
- }
- _disableOverFlow() {
- this._saveInitialAttribute(this._element, "overflow");
- this._element.style.overflow = "hidden";
- }
- _setElementAttributes(selector, styleProperty, callback) {
- const scrollbarWidth = this.getWidth();
- const manipulationCallBack = (element) => {
- if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
- return;
- }
- this._saveInitialAttribute(element, styleProperty);
- const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
- element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
- };
- this._applyManipulationCallback(selector, manipulationCallBack);
- }
- _saveInitialAttribute(element, styleProperty) {
- const actualValue = element.style.getPropertyValue(styleProperty);
- if (actualValue) {
- Manipulator.setDataAttribute(element, styleProperty, actualValue);
- }
- }
- _resetElementAttributes(selector, styleProperty) {
- const manipulationCallBack = (element) => {
- const value = Manipulator.getDataAttribute(element, styleProperty);
- if (value === null) {
- element.style.removeProperty(styleProperty);
- return;
- }
- Manipulator.removeDataAttribute(element, styleProperty);
- element.style.setProperty(styleProperty, String(value));
- };
- this._applyManipulationCallback(selector, manipulationCallBack);
- }
- _applyManipulationCallback(selector, callBack) {
- if (isElement(selector)) {
- callBack(selector);
- return;
- }
- for (const sel of SelectorEngine.find(selector, this._element)) {
- callBack(sel);
- }
- }
- }
- const NAME$7 = "modal";
- const DATA_KEY$4 = "bs.modal";
- const EVENT_KEY$4 = `.${DATA_KEY$4}`;
- const DATA_API_KEY$2 = ".data-api";
- const ESCAPE_KEY$1 = "Escape";
- const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
- const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
- const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
- const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
- const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
- const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
- const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
- const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
- const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
- const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
- const CLASS_NAME_OPEN = "modal-open";
- const CLASS_NAME_FADE$3 = "fade";
- const CLASS_NAME_SHOW$4 = "show";
- const CLASS_NAME_STATIC = "modal-static";
- const OPEN_SELECTOR$1 = ".modal.show";
- const SELECTOR_DIALOG = ".modal-dialog";
- const SELECTOR_MODAL_BODY = ".modal-body";
- const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"], [data-tblr-toggle="modal"]';
- const Default$6 = {
- backdrop: true,
- focus: true,
- keyboard: true
- };
- const DefaultType$6 = {
- backdrop: "(boolean|string)",
- focus: "boolean",
- keyboard: "boolean"
- };
- class Modal extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
- this._backdrop = this._initializeBackDrop();
- this._focustrap = this._initializeFocusTrap();
- this._isShown = false;
- this._isTransitioning = false;
- this._scrollBar = new ScrollBarHelper();
- this._addEventListeners();
- }
- static get Default() {
- return Default$6;
- }
- static get DefaultType() {
- return DefaultType$6;
- }
- static get NAME() {
- return NAME$7;
- }
- toggle(relatedTarget) {
- return this._isShown ? this.hide() : this.show(relatedTarget);
- }
- show(relatedTarget) {
- if (this._isShown || this._isTransitioning) {
- return;
- }
- const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
- relatedTarget
- });
- if (showEvent.defaultPrevented) {
- return;
- }
- this._isShown = true;
- this._isTransitioning = true;
- this._scrollBar.hide();
- document.body.classList.add(CLASS_NAME_OPEN);
- this._adjustDialog();
- this._backdrop.show(() => this._showElement(relatedTarget));
- }
- hide() {
- if (!this._isShown || this._isTransitioning) {
- return;
- }
- const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
- if (hideEvent.defaultPrevented) {
- return;
- }
- this._isShown = false;
- this._isTransitioning = true;
- this._focustrap.deactivate();
- this._element.classList.remove(CLASS_NAME_SHOW$4);
- this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
- }
- dispose() {
- EventHandler.off(window, EVENT_KEY$4);
- EventHandler.off(this._dialog, EVENT_KEY$4);
- this._backdrop.dispose();
- this._focustrap.deactivate();
- super.dispose();
- }
- handleUpdate() {
- this._adjustDialog();
- }
- _initializeBackDrop() {
- return new Backdrop({
- isVisible: Boolean(this._config.backdrop),
- isAnimated: this._isAnimated()
- });
- }
- _initializeFocusTrap() {
- return new FocusTrap({
- trapElement: this._element
- });
- }
- _showElement(relatedTarget) {
- if (!document.body.contains(this._element)) {
- document.body.append(this._element);
- }
- this._element.style.display = "block";
- this._element.removeAttribute("aria-hidden");
- this._element.setAttribute("aria-modal", "true");
- this._element.setAttribute("role", "dialog");
- this._element.scrollTop = 0;
- const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
- if (modalBody) {
- modalBody.scrollTop = 0;
- }
- reflow(this._element);
- this._element.classList.add(CLASS_NAME_SHOW$4);
- const transitionComplete = () => {
- if (this._config.focus) {
- this._focustrap.activate();
- }
- this._isTransitioning = false;
- EventHandler.trigger(this._element, EVENT_SHOWN$4, {
- relatedTarget
- });
- };
- this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
- }
- _addEventListeners() {
- EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => {
- if (event.key !== ESCAPE_KEY$1) {
- return;
- }
- if (this._config.keyboard) {
- this.hide();
- return;
- }
- this._triggerBackdropTransition();
- });
- EventHandler.on(window, EVENT_RESIZE$1, () => {
- if (this._isShown && !this._isTransitioning) {
- this._adjustDialog();
- }
- });
- EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
- EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
- if (this._element !== event.target || this._element !== event2.target) {
- return;
- }
- if (this._config.backdrop === "static") {
- this._triggerBackdropTransition();
- return;
- }
- if (this._config.backdrop) {
- this.hide();
- }
- });
- });
- }
- _hideModal() {
- this._element.style.display = "none";
- this._element.setAttribute("aria-hidden", "true");
- this._element.removeAttribute("aria-modal");
- this._element.removeAttribute("role");
- this._isTransitioning = false;
- this._backdrop.hide(() => {
- document.body.classList.remove(CLASS_NAME_OPEN);
- this._resetAdjustments();
- this._scrollBar.reset();
- EventHandler.trigger(this._element, EVENT_HIDDEN$4);
- });
- }
- _isAnimated() {
- return this._element.classList.contains(CLASS_NAME_FADE$3);
- }
- _triggerBackdropTransition() {
- const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
- if (hideEvent.defaultPrevented) {
- return;
- }
- const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
- const initialOverflowY = this._element.style.overflowY;
- if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) {
- return;
- }
- if (!isModalOverflowing) {
- this._element.style.overflowY = "hidden";
- }
- this._element.classList.add(CLASS_NAME_STATIC);
- this._queueCallback(() => {
- this._element.classList.remove(CLASS_NAME_STATIC);
- this._queueCallback(() => {
- this._element.style.overflowY = initialOverflowY;
- }, this._dialog);
- }, this._dialog);
- this._element.focus();
- }
- _adjustDialog() {
- const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
- const scrollbarWidth = this._scrollBar.getWidth();
- const isBodyOverflowing = scrollbarWidth > 0;
- if (isBodyOverflowing && !isModalOverflowing) {
- const property = isRTL() ? "paddingLeft" : "paddingRight";
- this._element.style[property] = `${scrollbarWidth}px`;
- }
- if (!isBodyOverflowing && isModalOverflowing) {
- const property = isRTL() ? "paddingRight" : "paddingLeft";
- this._element.style[property] = `${scrollbarWidth}px`;
- }
- }
- _resetAdjustments() {
- this._element.style.paddingLeft = "";
- this._element.style.paddingRight = "";
- }
- }
- EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event) {
- const target = SelectorEngine.getElementFromSelector(this);
- if (["A", "AREA"].includes(this.tagName)) {
- event.preventDefault();
- }
- EventHandler.one(target, EVENT_SHOW$4, (showEvent) => {
- if (showEvent.defaultPrevented) {
- return;
- }
- EventHandler.one(target, EVENT_HIDDEN$4, () => {
- if (isVisible(this)) {
- this.focus();
- }
- });
- });
- const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
- if (alreadyOpen) {
- Modal.getInstance(alreadyOpen).hide();
- }
- const data = Modal.getOrCreateInstance(target);
- data.toggle(this);
- });
- enableDismissTrigger(Modal);
- const NAME$6 = "offcanvas";
- const DATA_KEY$3 = "bs.offcanvas";
- const EVENT_KEY$3 = `.${DATA_KEY$3}`;
- const DATA_API_KEY$1 = ".data-api";
- const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
- const ESCAPE_KEY = "Escape";
- const CLASS_NAME_SHOW$3 = "show";
- const CLASS_NAME_SHOWING$1 = "showing";
- const CLASS_NAME_HIDING = "hiding";
- const CLASS_NAME_BACKDROP = "offcanvas-backdrop";
- const OPEN_SELECTOR = ".offcanvas.show";
- const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
- const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
- const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
- const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
- const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
- const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
- const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
- const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
- const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"], [data-tblr-toggle="offcanvas"]';
- const Default$5 = {
- backdrop: true,
- keyboard: true,
- scroll: false
- };
- const DefaultType$5 = {
- backdrop: "(boolean|string)",
- keyboard: "boolean",
- scroll: "boolean"
- };
- class Offcanvas extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._isShown = false;
- this._backdrop = this._initializeBackDrop();
- this._focustrap = this._initializeFocusTrap();
- this._addEventListeners();
- }
- static get Default() {
- return Default$5;
- }
- static get DefaultType() {
- return DefaultType$5;
- }
- static get NAME() {
- return NAME$6;
- }
- toggle(relatedTarget) {
- return this._isShown ? this.hide() : this.show(relatedTarget);
- }
- show(relatedTarget) {
- if (this._isShown) {
- return;
- }
- const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { relatedTarget });
- if (showEvent.defaultPrevented) {
- return;
- }
- this._isShown = true;
- this._backdrop.show();
- if (!this._config.scroll) {
- new ScrollBarHelper().hide();
- }
- this._element.setAttribute("aria-modal", "true");
- this._element.setAttribute("role", "dialog");
- this._element.classList.add(CLASS_NAME_SHOWING$1);
- const completeCallBack = () => {
- if (!this._config.scroll || this._config.backdrop) {
- this._focustrap.activate();
- }
- this._element.classList.add(CLASS_NAME_SHOW$3);
- this._element.classList.remove(CLASS_NAME_SHOWING$1);
- EventHandler.trigger(this._element, EVENT_SHOWN$3, { relatedTarget });
- };
- this._queueCallback(completeCallBack, this._element, true);
- }
- hide() {
- if (!this._isShown) {
- return;
- }
- const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
- if (hideEvent.defaultPrevented) {
- return;
- }
- this._focustrap.deactivate();
- this._element.blur();
- this._isShown = false;
- this._element.classList.add(CLASS_NAME_HIDING);
- this._backdrop.hide();
- const completeCallback = () => {
- this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
- this._element.removeAttribute("aria-modal");
- this._element.removeAttribute("role");
- if (!this._config.scroll) {
- new ScrollBarHelper().reset();
- }
- EventHandler.trigger(this._element, EVENT_HIDDEN$3);
- };
- this._queueCallback(completeCallback, this._element, true);
- }
- dispose() {
- this._backdrop.dispose();
- this._focustrap.deactivate();
- super.dispose();
- }
- _initializeBackDrop() {
- const clickCallback = () => {
- if (this._config.backdrop === "static") {
- EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
- return;
- }
- this.hide();
- };
- const isBackdropVisible = Boolean(this._config.backdrop);
- return new Backdrop({
- className: CLASS_NAME_BACKDROP,
- isVisible: isBackdropVisible,
- isAnimated: true,
- rootElement: this._element.parentNode,
- clickCallback: isBackdropVisible ? clickCallback : null
- });
- }
- _initializeFocusTrap() {
- return new FocusTrap({
- trapElement: this._element
- });
- }
- _addEventListeners() {
- EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
- if (event.key !== ESCAPE_KEY) {
- return;
- }
- if (this._config.keyboard) {
- this.hide();
- return;
- }
- EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
- });
- }
- }
- EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event) {
- const target = SelectorEngine.getElementFromSelector(this);
- if (["A", "AREA"].includes(this.tagName)) {
- event.preventDefault();
- }
- if (isDisabled(this)) {
- return;
- }
- EventHandler.one(target, EVENT_HIDDEN$3, () => {
- if (isVisible(this)) {
- this.focus();
- }
- });
- const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
- if (alreadyOpen && alreadyOpen !== target) {
- Offcanvas.getInstance(alreadyOpen).hide();
- }
- const data = Offcanvas.getOrCreateInstance(target);
- data.toggle(this);
- });
- EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
- for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
- Offcanvas.getOrCreateInstance(selector).show();
- }
- });
- EventHandler.on(window, EVENT_RESIZE, () => {
- for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) {
- if (getComputedStyle(element).position !== "fixed") {
- Offcanvas.getOrCreateInstance(element).hide();
- }
- }
- });
- enableDismissTrigger(Offcanvas);
- const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
- const DefaultAllowlist = {
- "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN],
- a: ["target", "href", "title", "rel"],
- area: [],
- b: [],
- br: [],
- col: [],
- code: [],
- dd: [],
- div: [],
- dl: [],
- dt: [],
- em: [],
- hr: [],
- h1: [],
- h2: [],
- h3: [],
- h4: [],
- h5: [],
- h6: [],
- i: [],
- img: ["src", "srcset", "alt", "title", "width", "height"],
- li: [],
- ol: [],
- p: [],
- pre: [],
- s: [],
- small: [],
- span: [],
- sub: [],
- sup: [],
- strong: [],
- u: [],
- ul: []
- };
- const uriAttributes = /* @__PURE__ */ new Set([
- "background",
- "cite",
- "href",
- "itemtype",
- "longdesc",
- "poster",
- "src",
- "xlink:href"
- ]);
- const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
- const allowedAttribute = (attribute, allowedAttributeList) => {
- const attributeName = attribute.nodeName.toLowerCase();
- if (allowedAttributeList.includes(attributeName)) {
- if (uriAttributes.has(attributeName)) {
- return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
- }
- return true;
- }
- return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName));
- };
- function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
- if (!unsafeHtml.length) {
- return unsafeHtml;
- }
- if (sanitizeFunction && typeof sanitizeFunction === "function") {
- return sanitizeFunction(unsafeHtml);
- }
- const domParser = new window.DOMParser();
- const createdDocument = domParser.parseFromString(unsafeHtml, "text/html");
- const elements = Array.from(createdDocument.body.querySelectorAll("*"));
- for (const element of elements) {
- const elementName = element.nodeName.toLowerCase();
- if (!Object.keys(allowList).includes(elementName)) {
- element.remove();
- continue;
- }
- const attributeList = Array.from(element.attributes);
- const allowedAttributes = [...allowList["*"] || [], ...allowList[elementName] || []];
- for (const attribute of attributeList) {
- if (!allowedAttribute(attribute, allowedAttributes)) {
- element.removeAttribute(attribute.nodeName);
- }
- }
- }
- return createdDocument.body.innerHTML;
- }
- var __defProp$2 = Object.defineProperty;
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$2 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$2.call(b, prop))
- __defNormalProp$2(a, prop, b[prop]);
- if (__getOwnPropSymbols$2)
- for (var prop of __getOwnPropSymbols$2(b)) {
- if (__propIsEnum$2.call(b, prop))
- __defNormalProp$2(a, prop, b[prop]);
- }
- return a;
- };
- const NAME$5 = "TemplateFactory";
- const Default$4 = {
- allowList: DefaultAllowlist,
- content: {},
- extraClass: "",
- html: false,
- sanitize: true,
- sanitizeFn: null,
- template: ""
- };
- const DefaultType$4 = {
- allowList: "object",
- content: "object",
- extraClass: "(string|function)",
- html: "boolean",
- sanitize: "boolean",
- sanitizeFn: "(null|function)",
- template: "string"
- };
- const DefaultContentType = {
- entry: "(string|element|function|null)",
- selector: "(string|element)"
- };
- class TemplateFactory extends Config {
- constructor(config) {
- super();
- this._config = this._getConfig(config);
- }
- static get Default() {
- return Default$4;
- }
- static get DefaultType() {
- return DefaultType$4;
- }
- static get NAME() {
- return NAME$5;
- }
- getContent() {
- return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean);
- }
- hasContent() {
- return this.getContent().length > 0;
- }
- changeContent(content) {
- this._checkContent(content);
- this._config.content = __spreadValues$2(__spreadValues$2({}, this._config.content), content);
- return this;
- }
- toHtml() {
- const templateWrapper = document.createElement("div");
- templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
- for (const [selector, text] of Object.entries(this._config.content)) {
- this._setContent(templateWrapper, text, selector);
- }
- const template = templateWrapper.children[0];
- const extraClass = this._resolvePossibleFunction(this._config.extraClass);
- if (extraClass) {
- template.classList.add(...extraClass.split(" "));
- }
- return template;
- }
- _typeCheckConfig(config) {
- super._typeCheckConfig(config);
- this._checkContent(config.content);
- }
- _checkContent(arg) {
- for (const [selector, content] of Object.entries(arg)) {
- super._typeCheckConfig({ selector, entry: content }, DefaultContentType);
- }
- }
- _setContent(template, content, selector) {
- const templateElement = SelectorEngine.findOne(selector, template);
- if (!templateElement) {
- return;
- }
- content = this._resolvePossibleFunction(content);
- if (!content) {
- templateElement.remove();
- return;
- }
- if (isElement(content)) {
- this._putElementInTemplate(getElement(content), templateElement);
- return;
- }
- if (this._config.html) {
- templateElement.innerHTML = this._maybeSanitize(content);
- return;
- }
- templateElement.textContent = content;
- }
- _maybeSanitize(arg) {
- return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
- }
- _resolvePossibleFunction(arg) {
- return execute(arg, [void 0, this]);
- }
- _putElementInTemplate(element, templateElement) {
- if (this._config.html) {
- templateElement.innerHTML = "";
- templateElement.append(element);
- return;
- }
- templateElement.textContent = element.textContent;
- }
- }
- var __defProp$1 = Object.defineProperty;
- var __defProps$1 = Object.defineProperties;
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$1 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$1.call(b, prop))
- __defNormalProp$1(a, prop, b[prop]);
- if (__getOwnPropSymbols$1)
- for (var prop of __getOwnPropSymbols$1(b)) {
- if (__propIsEnum$1.call(b, prop))
- __defNormalProp$1(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
- const NAME$4 = "tooltip";
- const DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]);
- const CLASS_NAME_FADE$2 = "fade";
- const CLASS_NAME_MODAL = "modal";
- const CLASS_NAME_SHOW$2 = "show";
- 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";
- const TRIGGER_MANUAL = "manual";
- const EVENT_HIDE$2 = "hide";
- const EVENT_HIDDEN$2 = "hidden";
- const EVENT_SHOW$2 = "show";
- const EVENT_SHOWN$2 = "shown";
- const EVENT_INSERTED = "inserted";
- const EVENT_CLICK$1 = "click";
- const EVENT_FOCUSIN$1 = "focusin";
- const EVENT_FOCUSOUT$1 = "focusout";
- const EVENT_MOUSEENTER = "mouseenter";
- const EVENT_MOUSELEAVE = "mouseleave";
- const AttachmentMap = {
- AUTO: "auto",
- TOP: "top",
- RIGHT: isRTL() ? "left" : "right",
- BOTTOM: "bottom",
- LEFT: isRTL() ? "right" : "left"
- };
- const Default$3 = {
- allowList: DefaultAllowlist,
- animation: true,
- boundary: "clippingParents",
- container: false,
- customClass: "",
- delay: 0,
- fallbackPlacements: ["top", "right", "bottom", "left"],
- html: false,
- offset: [0, 6],
- placement: "top",
- popperConfig: null,
- sanitize: true,
- sanitizeFn: null,
- selector: false,
- template: '',
- title: "",
- trigger: "hover focus"
- };
- const DefaultType$3 = {
- allowList: "object",
- animation: "boolean",
- boundary: "(string|element)",
- container: "(string|element|boolean)",
- customClass: "(string|function)",
- delay: "(number|object)",
- fallbackPlacements: "array",
- html: "boolean",
- offset: "(array|string|function)",
- placement: "(string|function)",
- popperConfig: "(null|object|function)",
- sanitize: "boolean",
- sanitizeFn: "(null|function)",
- selector: "(string|boolean)",
- template: "string",
- title: "(string|element|function)",
- trigger: "string"
- };
- class Tooltip extends BaseComponent {
- constructor(element, config) {
- if (typeof Popper === "undefined") {
- throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");
- }
- super(element, config);
- this._isEnabled = true;
- this._timeout = 0;
- this._isHovered = null;
- this._activeTrigger = {};
- this._popper = null;
- this._templateFactory = null;
- this._newContent = null;
- this.tip = null;
- this._hideModalHandler = null;
- this._setListeners();
- if (!this._config.selector) {
- this._fixTitle();
- }
- }
- static get Default() {
- return Default$3;
- }
- static get DefaultType() {
- return DefaultType$3;
- }
- static get NAME() {
- return NAME$4;
- }
- enable() {
- this._isEnabled = true;
- }
- disable() {
- this._isEnabled = false;
- }
- toggleEnabled() {
- this._isEnabled = !this._isEnabled;
- }
- toggle() {
- if (!this._isEnabled) {
- return;
- }
- if (this._isShown()) {
- this._leave();
- return;
- }
- this._enter();
- }
- dispose() {
- clearTimeout(this._timeout);
- EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
- if (this._element.getAttribute("data-bs-original-title") || this._element.getAttribute("data-tblr-original-title")) {
- this._element.setAttribute(
- "title",
- this._element.getAttribute("data-bs-original-title") || this._element.getAttribute("data-tblr-original-title") || ""
- );
- }
- this._disposePopper();
- super.dispose();
- }
- show() {
- if (this._element.style.display === "none") {
- throw new Error("Please use show on visible elements");
- }
- if (!(this._isWithContent() && this._isEnabled)) {
- return;
- }
- const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
- const shadowRoot = findShadowRoot(this._element);
- const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
- if (showEvent.defaultPrevented || !isInTheDom) {
- return;
- }
- this._disposePopper();
- const tip = this._getTipElement();
- this._element.setAttribute("aria-describedby", tip.getAttribute("id"));
- const { container } = this._config;
- if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
- container.append(tip);
- EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
- }
- this._popper = this._createPopper(tip);
- tip.classList.add(CLASS_NAME_SHOW$2);
- if ("ontouchstart" in document.documentElement) {
- for (const element of [].concat(...document.body.children)) {
- EventHandler.on(element, "mouseover", noop);
- }
- }
- const complete = () => {
- EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
- if (this._isHovered === false) {
- this._leave();
- }
- this._isHovered = false;
- };
- this._queueCallback(complete, this.tip, this._isAnimated());
- }
- hide() {
- if (!this._isShown()) {
- return;
- }
- const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
- if (hideEvent.defaultPrevented) {
- return;
- }
- const tip = this._getTipElement();
- tip.classList.remove(CLASS_NAME_SHOW$2);
- if ("ontouchstart" in document.documentElement) {
- for (const element of [].concat(...document.body.children)) {
- EventHandler.off(element, "mouseover", noop);
- }
- }
- this._activeTrigger[TRIGGER_CLICK] = false;
- this._activeTrigger[TRIGGER_FOCUS] = false;
- this._activeTrigger[TRIGGER_HOVER] = false;
- this._isHovered = null;
- const complete = () => {
- if (this._isWithActiveTrigger()) {
- return;
- }
- if (!this._isHovered) {
- this._disposePopper();
- }
- this._element.removeAttribute("aria-describedby");
- EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
- };
- this._queueCallback(complete, this.tip, this._isAnimated());
- }
- update() {
- if (this._popper) {
- this._popper.update();
- }
- }
- _isWithContent() {
- return Boolean(this._getTitle());
- }
- _getTipElement() {
- if (!this.tip) {
- this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
- }
- return this.tip;
- }
- _createTipElement(content) {
- const tip = this._getTemplateFactory(content).toHtml();
- if (!tip) {
- return null;
- }
- tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
- tip.classList.add(`bs-${this.constructor.NAME}-auto`);
- const tipId = getUID(this.constructor.NAME).toString();
- tip.setAttribute("id", tipId);
- if (this._isAnimated()) {
- tip.classList.add(CLASS_NAME_FADE$2);
- }
- return tip;
- }
- setContent(content) {
- this._newContent = content;
- if (this._isShown()) {
- this._disposePopper();
- this.show();
- }
- }
- _getTemplateFactory(content) {
- if (this._templateFactory) {
- this._templateFactory.changeContent(content);
- } else {
- this._templateFactory = new TemplateFactory(__spreadProps$1(__spreadValues$1({}, this._config), {
- content,
- extraClass: this._resolvePossibleFunction(this._config.customClass)
- }));
- }
- return this._templateFactory;
- }
- _getContentForTemplate() {
- return {
- [SELECTOR_TOOLTIP_INNER]: this._getTitle()
- };
- }
- _getTitle() {
- return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title") || this._element.getAttribute("data-tblr-original-title") || "";
- }
- _initializeOnDelegatedTarget(event) {
- return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
- }
- _isAnimated() {
- return this._config.animation || this.tip !== null && this.tip.classList.contains(CLASS_NAME_FADE$2);
- }
- _isShown() {
- return this.tip !== null && this.tip.classList.contains(CLASS_NAME_SHOW$2);
- }
- _createPopper(tip) {
- const placement = execute(this._config.placement, [this, tip, this._element]);
- const attachment = AttachmentMap[placement.toUpperCase()];
- return createPopper(this._element, tip, this._getPopperConfig(attachment));
- }
- _getOffset() {
- const { offset: offset2 } = this._config;
- if (typeof offset2 === "string") {
- return offset2.split(",").map((value) => Number.parseInt(value, 10));
- }
- if (typeof offset2 === "function") {
- return (popperData) => offset2(popperData, this._element);
- }
- return offset2;
- }
- _resolvePossibleFunction(arg) {
- return execute(arg, [this._element, this._element]);
- }
- _getPopperConfig(attachment) {
- const defaultBsPopperConfig = {
- placement: attachment,
- modifiers: [
- {
- name: "flip",
- options: {
- fallbackPlacements: this._config.fallbackPlacements
- }
- },
- {
- name: "offset",
- options: {
- offset: this._getOffset()
- }
- },
- {
- name: "preventOverflow",
- options: {
- boundary: this._config.boundary
- }
- },
- {
- name: "arrow",
- options: {
- element: `.${this.constructor.NAME}-arrow`
- }
- },
- {
- name: "preSetPlacement",
- enabled: true,
- phase: "beforeMain",
- fn: (data) => {
- this._getTipElement().setAttribute("data-popper-placement", data.state.placement);
- }
- }
- ]
- };
- const popperConfig = execute(this._config.popperConfig, [void 0, defaultBsPopperConfig]);
- return __spreadValues$1(__spreadValues$1({}, defaultBsPopperConfig), typeof popperConfig === "object" && popperConfig !== null ? popperConfig : {});
- }
- _setListeners() {
- const triggers = this._config.trigger.split(" ");
- for (const trigger of triggers) {
- if (trigger === "click") {
- EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, (event) => {
- const context = this._initializeOnDelegatedTarget(event);
- context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
- context.toggle();
- });
- } else if (trigger !== TRIGGER_MANUAL) {
- const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
- const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
- EventHandler.on(this._element, eventIn, this._config.selector, (event) => {
- const context = this._initializeOnDelegatedTarget(event);
- context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
- context._enter();
- });
- EventHandler.on(this._element, eventOut, this._config.selector, (event) => {
- const context = this._initializeOnDelegatedTarget(event);
- context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
- context._leave();
- });
- }
- }
- this._hideModalHandler = () => {
- if (this._element) {
- this.hide();
- }
- };
- EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
- }
- _fixTitle() {
- const title = this._element.getAttribute("title");
- if (!title) {
- return;
- }
- if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) {
- this._element.setAttribute("aria-label", title);
- }
- this._element.setAttribute("data-bs-original-title", title);
- this._element.removeAttribute("title");
- }
- _enter() {
- if (this._isShown() || this._isHovered) {
- this._isHovered = true;
- return;
- }
- this._isHovered = true;
- this._setTimeout(() => {
- if (this._isHovered) {
- this.show();
- }
- }, this._config.delay.show);
- }
- _leave() {
- if (this._isWithActiveTrigger()) {
- return;
- }
- this._isHovered = false;
- this._setTimeout(() => {
- if (!this._isHovered) {
- this.hide();
- }
- }, this._config.delay.hide);
- }
- _setTimeout(handler, timeout) {
- clearTimeout(this._timeout);
- this._timeout = setTimeout(handler, timeout);
- }
- _isWithActiveTrigger() {
- return Object.values(this._activeTrigger).includes(true);
- }
- _getConfig(config) {
- const dataAttributes = Manipulator.getDataAttributes(this._element);
- for (const dataAttribute of Object.keys(dataAttributes)) {
- if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
- delete dataAttributes[dataAttribute];
- }
- }
- config = __spreadValues$1(__spreadValues$1({}, dataAttributes), typeof config === "object" && config ? config : {});
- config = this._mergeConfigObj(config);
- config = this._configAfterMerge(config);
- this._typeCheckConfig(config);
- return config;
- }
- _configAfterMerge(config) {
- config.container = config.container === false ? document.body : getElement(config.container);
- if (typeof config.delay === "number") {
- config.delay = {
- show: config.delay,
- hide: config.delay
- };
- }
- if (typeof config.title === "number") {
- config.title = config.title.toString();
- }
- if (typeof config.content === "number") {
- config.content = config.content.toString();
- }
- return config;
- }
- _getDelegateConfig() {
- const config = {};
- for (const [key, value] of Object.entries(this._config)) {
- if (this.constructor.Default[key] !== value) {
- config[key] = value;
- }
- }
- config.selector = false;
- config.trigger = "manual";
- return config;
- }
- _disposePopper() {
- if (this._popper) {
- this._popper.destroy();
- this._popper = null;
- }
- if (this.tip) {
- this.tip.remove();
- this.tip = null;
- }
- }
- }
- var __defProp = Object.defineProperty;
- var __defProps = Object.defineProperties;
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- if (__getOwnPropSymbols)
- for (var prop of __getOwnPropSymbols(b)) {
- if (__propIsEnum.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
- const NAME$3 = "popover";
- const SELECTOR_TITLE = ".popover-header";
- const SELECTOR_CONTENT = ".popover-body";
- const Default$2 = __spreadProps(__spreadValues({}, Tooltip.Default), {
- content: "",
- offset: [0, 8],
- placement: "right",
- template: '',
- trigger: "click"
- });
- const DefaultType$2 = __spreadProps(__spreadValues({}, Tooltip.DefaultType), {
- content: "(null|string|element|function)"
- });
- class Popover extends Tooltip {
- static get Default() {
- return Default$2;
- }
- static get DefaultType() {
- return DefaultType$2;
- }
- static get NAME() {
- return NAME$3;
- }
- _isWithContent() {
- return Boolean(this._getTitle() || this._getContent());
- }
- _getContentForTemplate() {
- return {
- [SELECTOR_TITLE]: this._getTitle(),
- [SELECTOR_CONTENT]: this._getContent()
- };
- }
- _getContent() {
- return this._resolvePossibleFunction(this._config.content);
- }
- }
- const NAME$2 = "scrollspy";
- const DATA_KEY$2 = "bs.scrollspy";
- const EVENT_KEY$2 = `.${DATA_KEY$2}`;
- const DATA_API_KEY = ".data-api";
- const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
- const EVENT_CLICK = `click${EVENT_KEY$2}`;
- const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
- const CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
- const CLASS_NAME_ACTIVE$1 = "active";
- const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"], [data-tblr-spy="scroll"]';
- const SELECTOR_TARGET_LINKS = "[href]";
- 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_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
- const SELECTOR_DROPDOWN = ".dropdown";
- const SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle";
- const Default$1 = {
- offset: null,
- rootMargin: "0px 0px -25%",
- smoothScroll: false,
- target: null,
- threshold: [0.1, 0.5, 1]
- };
- const DefaultType$1 = {
- offset: "(number|null)",
- rootMargin: "string",
- smoothScroll: "boolean",
- target: "element",
- threshold: "array"
- };
- class ScrollSpy extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._targetLinks = /* @__PURE__ */ new Map();
- this._observableSections = /* @__PURE__ */ new Map();
- this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element;
- this._activeTarget = null;
- this._observer = null;
- this._previousScrollData = {
- visibleEntryTop: 0,
- parentScrollTop: 0
- };
- this.refresh();
- }
- static get Default() {
- return Default$1;
- }
- static get DefaultType() {
- return DefaultType$1;
- }
- static get NAME() {
- return NAME$2;
- }
- refresh() {
- this._initializeTargetsAndObservables();
- this._maybeEnableSmoothScroll();
- if (this._observer) {
- this._observer.disconnect();
- } else {
- this._observer = this._getNewObserver();
- }
- for (const section of this._observableSections.values()) {
- this._observer.observe(section);
- }
- }
- dispose() {
- this._observer.disconnect();
- super.dispose();
- }
- _configAfterMerge(config) {
- config.target = getElement(config.target) || document.body;
- config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
- if (typeof config.threshold === "string") {
- config.threshold = config.threshold.split(",").map((value) => Number.parseFloat(value));
- }
- return config;
- }
- _maybeEnableSmoothScroll() {
- if (!this._config.smoothScroll) {
- return;
- }
- EventHandler.off(this._config.target, EVENT_CLICK);
- EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => {
- const observableSection = this._observableSections.get(event.target.hash);
- if (observableSection) {
- event.preventDefault();
- const root = this._rootElement || window;
- const height = observableSection.offsetTop - this._element.offsetTop;
- if ("scrollTo" in root) {
- root.scrollTo({ top: height, behavior: "smooth" });
- return;
- }
- root.scrollTop = height;
- }
- });
- }
- _getNewObserver() {
- const options = {
- root: this._rootElement,
- threshold: this._config.threshold,
- rootMargin: this._config.rootMargin
- };
- return new IntersectionObserver((entries) => this._observerCallback(entries), options);
- }
- _observerCallback(entries) {
- const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);
- const activate = (entry) => {
- this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
- this._process(targetElement(entry));
- };
- const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
- const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
- this._previousScrollData.parentScrollTop = parentScrollTop;
- for (const entry of entries) {
- if (!entry.isIntersecting) {
- this._activeTarget = null;
- this._clearActiveClass(targetElement(entry));
- continue;
- }
- const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
- if (userScrollsDown && entryIsLowerThanPrevious) {
- activate(entry);
- if (!parentScrollTop) {
- return;
- }
- continue;
- }
- if (!userScrollsDown && !entryIsLowerThanPrevious) {
- activate(entry);
- }
- }
- }
- _initializeTargetsAndObservables() {
- this._targetLinks = /* @__PURE__ */ new Map();
- this._observableSections = /* @__PURE__ */ new Map();
- const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
- for (const anchor of targetLinks) {
- if (!anchor.hash || isDisabled(anchor)) {
- continue;
- }
- const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
- if (isVisible(observableSection)) {
- this._targetLinks.set(decodeURI(anchor.hash), anchor);
- this._observableSections.set(anchor.hash, observableSection);
- }
- }
- }
- _process(target) {
- if (this._activeTarget === target) {
- return;
- }
- this._clearActiveClass(this._config.target);
- this._activeTarget = target;
- target.classList.add(CLASS_NAME_ACTIVE$1);
- this._activateParents(target);
- EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target });
- }
- _activateParents(target) {
- if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
- SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
- return;
- }
- for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
- for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
- item.classList.add(CLASS_NAME_ACTIVE$1);
- }
- }
- }
- _clearActiveClass(parent) {
- parent.classList.remove(CLASS_NAME_ACTIVE$1);
- const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
- for (const node of activeNodes) {
- node.classList.remove(CLASS_NAME_ACTIVE$1);
- }
- }
- }
- EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
- for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
- ScrollSpy.getOrCreateInstance(spy);
- }
- });
- const NAME$1 = "tab";
- const DATA_KEY$1 = "bs.tab";
- const EVENT_KEY$1 = `.${DATA_KEY$1}`;
- const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
- const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
- const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
- const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
- const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
- const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
- const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
- const ARROW_LEFT_KEY = "ArrowLeft";
- const ARROW_RIGHT_KEY = "ArrowRight";
- const ARROW_UP_KEY = "ArrowUp";
- const ARROW_DOWN_KEY = "ArrowDown";
- const HOME_KEY = "Home";
- const END_KEY = "End";
- const CLASS_NAME_ACTIVE = "active";
- const CLASS_NAME_FADE$1 = "fade";
- const CLASS_NAME_SHOW$1 = "show";
- const CLASS_DROPDOWN = "dropdown";
- const SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
- const SELECTOR_DROPDOWN_MENU = ".dropdown-menu";
- const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
- const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
- const SELECTOR_OUTER = ".nav-item, .list-group-item";
- const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
- const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"], [data-tblr-toggle="tab"], [data-tblr-toggle="pill"], [data-tblr-toggle="list"]';
- const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
- const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"], .${CLASS_NAME_ACTIVE}[data-tblr-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-tblr-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-tblr-toggle="list"]`;
- class Tab extends BaseComponent {
- constructor(element) {
- super(element);
- this._parent = this._element.closest(SELECTOR_TAB_PANEL);
- if (!this._parent) {
- return;
- }
- this._setInitialAttributes(this._parent, this._getChildren());
- EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
- }
- static get NAME() {
- return NAME$1;
- }
- show() {
- const innerElem = this._element;
- if (this._elemIsActive(innerElem)) {
- return;
- }
- const active = this._getActiveElem();
- const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { relatedTarget: innerElem }) : null;
- const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { relatedTarget: active });
- if ((showEvent == null ? void 0 : showEvent.defaultPrevented) || (hideEvent == null ? void 0 : hideEvent.defaultPrevented)) {
- return;
- }
- this._deactivate(active, innerElem);
- this._activate(innerElem, active);
- }
- _activate(element, relatedElem) {
- if (!element) {
- return;
- }
- element.classList.add(CLASS_NAME_ACTIVE);
- this._activate(SelectorEngine.getElementFromSelector(element));
- const complete = () => {
- if (element.getAttribute("role") !== "tab") {
- element.classList.add(CLASS_NAME_SHOW$1);
- return;
- }
- element.removeAttribute("tabindex");
- element.setAttribute("aria-selected", "true");
- this._toggleDropDown(element, true);
- EventHandler.trigger(element, EVENT_SHOWN$1, {
- relatedTarget: relatedElem
- });
- };
- this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
- }
- _deactivate(element, relatedElem) {
- if (!element) {
- return;
- }
- element.classList.remove(CLASS_NAME_ACTIVE);
- element.blur();
- this._deactivate(SelectorEngine.getElementFromSelector(element));
- const complete = () => {
- if (element.getAttribute("role") !== "tab") {
- element.classList.remove(CLASS_NAME_SHOW$1);
- return;
- }
- element.setAttribute("aria-selected", "false");
- element.setAttribute("tabindex", "-1");
- this._toggleDropDown(element, false);
- EventHandler.trigger(element, EVENT_HIDDEN$1, { relatedTarget: relatedElem });
- };
- this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
- }
- _keydown(event) {
- if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
- return;
- }
- event.stopPropagation();
- event.preventDefault();
- const children = this._getChildren().filter((element) => !isDisabled(element));
- let nextActiveElement;
- if ([HOME_KEY, END_KEY].includes(event.key)) {
- nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
- } else {
- const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
- nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
- }
- if (nextActiveElement) {
- nextActiveElement.focus({ preventScroll: true });
- Tab.getOrCreateInstance(nextActiveElement).show();
- }
- }
- _getChildren() {
- return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
- }
- _getActiveElem() {
- return this._getChildren().find((child) => this._elemIsActive(child)) || null;
- }
- _setInitialAttributes(parent, children) {
- this._setAttributeIfNotExists(parent, "role", "tablist");
- for (const child of children) {
- this._setInitialAttributesOnChild(child);
- }
- }
- _setInitialAttributesOnChild(child) {
- child = this._getInnerElement(child);
- const isActive = this._elemIsActive(child);
- const outerElem = this._getOuterElement(child);
- child.setAttribute("aria-selected", String(isActive));
- if (outerElem !== child) {
- this._setAttributeIfNotExists(outerElem, "role", "presentation");
- }
- if (!isActive) {
- child.setAttribute("tabindex", "-1");
- }
- this._setAttributeIfNotExists(child, "role", "tab");
- this._setInitialAttributesOnTargetPanel(child);
- }
- _setInitialAttributesOnTargetPanel(child) {
- const target = SelectorEngine.getElementFromSelector(child);
- if (!target) {
- return;
- }
- this._setAttributeIfNotExists(target, "role", "tabpanel");
- if (child.id) {
- this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`);
- }
- }
- _toggleDropDown(element, open) {
- const outerElem = this._getOuterElement(element);
- if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
- return;
- }
- const toggle = (selector, className) => {
- const el = SelectorEngine.findOne(selector, outerElem);
- if (el) {
- el.classList.toggle(className, open);
- }
- };
- toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
- toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
- outerElem.setAttribute("aria-expanded", String(open));
- }
- _setAttributeIfNotExists(element, attribute, value) {
- if (!element.hasAttribute(attribute)) {
- element.setAttribute(attribute, value);
- }
- }
- _elemIsActive(elem) {
- return elem.classList.contains(CLASS_NAME_ACTIVE);
- }
- _getInnerElement(elem) {
- return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
- }
- _getOuterElement(elem) {
- return elem.closest(SELECTOR_OUTER) || elem;
- }
- }
- EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
- if (["A", "AREA"].includes(this.tagName)) {
- event.preventDefault();
- }
- if (isDisabled(this)) {
- return;
- }
- Tab.getOrCreateInstance(this).show();
- });
- EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
- for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
- Tab.getOrCreateInstance(element);
- }
- });
- const NAME = "toast";
- const DATA_KEY = "bs.toast";
- const EVENT_KEY = `.${DATA_KEY}`;
- const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
- const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
- const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
- const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
- 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 CLASS_NAME_FADE = "fade";
- const CLASS_NAME_HIDE = "hide";
- const CLASS_NAME_SHOW = "show";
- const CLASS_NAME_SHOWING = "showing";
- const DefaultType = {
- animation: "boolean",
- autohide: "boolean",
- delay: "number"
- };
- const Default = {
- animation: true,
- autohide: true,
- delay: 5e3
- };
- class Toast extends BaseComponent {
- constructor(element, config) {
- super(element, config);
- this._timeout = null;
- this._hasMouseInteraction = false;
- this._hasKeyboardInteraction = false;
- this._setListeners();
- }
- static get Default() {
- return Default;
- }
- static get DefaultType() {
- return DefaultType;
- }
- static get NAME() {
- return NAME;
- }
- show() {
- const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
- if (showEvent == null ? void 0 : showEvent.defaultPrevented) {
- return;
- }
- this._clearTimeout();
- if (this._config.animation) {
- this._element.classList.add(CLASS_NAME_FADE);
- }
- const complete = () => {
- this._element.classList.remove(CLASS_NAME_SHOWING);
- EventHandler.trigger(this._element, EVENT_SHOWN);
- this._maybeScheduleHide();
- };
- this._element.classList.remove(CLASS_NAME_HIDE);
- reflow(this._element);
- this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
- this._queueCallback(complete, this._element, this._config.animation);
- }
- hide() {
- if (!this.isShown()) {
- return;
- }
- const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
- if (hideEvent == null ? void 0 : hideEvent.defaultPrevented) {
- return;
- }
- const complete = () => {
- this._element.classList.add(CLASS_NAME_HIDE);
- this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
- EventHandler.trigger(this._element, EVENT_HIDDEN);
- };
- this._element.classList.add(CLASS_NAME_SHOWING);
- this._queueCallback(complete, this._element, this._config.animation);
- }
- dispose() {
- this._clearTimeout();
- if (this.isShown()) {
- this._element.classList.remove(CLASS_NAME_SHOW);
- }
- super.dispose();
- }
- isShown() {
- return this._element.classList.contains(CLASS_NAME_SHOW);
- }
- _maybeScheduleHide() {
- if (!this._config.autohide) {
- return;
- }
- if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
- return;
- }
- this._timeout = setTimeout(() => {
- this.hide();
- }, this._config.delay);
- }
- _onInteraction(event, isInteracting) {
- switch (event.type) {
- case "mouseover":
- case "mouseout": {
- this._hasMouseInteraction = isInteracting;
- break;
- }
- case "focusin":
- case "focusout": {
- this._hasKeyboardInteraction = isInteracting;
- break;
- }
- }
- if (isInteracting) {
- this._clearTimeout();
- return;
- }
- const nextElement = event.relatedTarget;
- if (this._element === nextElement || this._element.contains(nextElement)) {
- return;
- }
- this._maybeScheduleHide();
- }
- _setListeners() {
- 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));
- EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
- }
- _clearTimeout() {
- clearTimeout(this._timeout);
- this._timeout = null;
- }
- }
- enableDismissTrigger(Toast);
- const bootstrap = {
- Alert,
- Button,
- Carousel,
- Collapse,
- Dropdown,
- Modal,
- Offcanvas,
- Popover,
- ScrollSpy,
- Tab,
- Toast,
- Tooltip
- };
- const dropdownTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]'));
- dropdownTriggerList.map(function(dropdownTriggerEl) {
- const options = {
- boundary: dropdownTriggerEl.getAttribute("data-bs-boundary") === "viewport" ? document.querySelector(".btn") : "clippingParents"
- };
- return new Dropdown(dropdownTriggerEl, options);
- });
- const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
- tooltipTriggerList.map(function(tooltipTriggerEl) {
- var _a;
- const options = {
- delay: { show: 50, hide: 50 },
- html: tooltipTriggerEl.getAttribute("data-bs-html") === "true",
- placement: (_a = tooltipTriggerEl.getAttribute("data-bs-placement")) != null ? _a : "auto"
- };
- return new Tooltip(tooltipTriggerEl, options);
- });
- const popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
- popoverTriggerList.map(function(popoverTriggerEl) {
- var _a;
- const options = {
- delay: { show: 50, hide: 50 },
- html: popoverTriggerEl.getAttribute("data-bs-html") === "true",
- placement: (_a = popoverTriggerEl.getAttribute("data-bs-placement")) != null ? _a : "auto"
- };
- return new Popover(popoverTriggerEl, options);
- });
- const switchesTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]'));
- switchesTriggerList.map(function(switchTriggerEl) {
- switchTriggerEl.addEventListener("click", (e) => {
- e.stopPropagation();
- switchTriggerEl.classList.toggle("active");
- });
- });
- const EnableActivationTabsFromLocationHash = () => {
- const locationHash = window.location.hash;
- if (locationHash) {
- const tabsList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]'));
- const matchedTabs = tabsList.filter((tab) => tab.hash === locationHash);
- matchedTabs.map((tab) => {
- new Tab(tab).show();
- });
- }
- };
- EnableActivationTabsFromLocationHash();
- const toastsTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]'));
- toastsTriggerList.map(function(toastTriggerEl) {
- const target = toastTriggerEl.getAttribute("data-bs-target");
- if (target === null) {
- return;
- }
- const toastEl = new Toast(target);
- toastTriggerEl.addEventListener("click", () => {
- toastEl.show();
- });
- });
- const sortableElements = document.querySelectorAll("[data-sortable]");
- if (sortableElements.length) {
- sortableElements.forEach(function(element) {
- let options = {};
- try {
- const rawOptions = element.getAttribute("data-sortable");
- options = rawOptions ? JSON.parse(rawOptions) : {};
- } catch (e) {
- }
- if (window.Sortable) {
- new window.Sortable(element, options);
- }
- });
- }
- const prefix = "tblr-";
- const hexToRgba = (hex, opacity) => {
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
- return result ? `rgba(${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}, ${opacity})` : null;
- };
- const getColor = (color, opacity = 1) => {
- const c = getComputedStyle(document.body).getPropertyValue(`--${prefix}${color}`).trim();
- if (opacity !== 1) {
- return hexToRgba(c, opacity);
- }
- return c;
- };
- const tabler = /* @__PURE__ */ Object.freeze({
- __proto__: null,
- getColor,
- hexToRgba,
- prefix
- });
- exports2.Alert = Alert;
- exports2.Button = Button;
- exports2.Carousel = Carousel;
- exports2.Collapse = Collapse;
- exports2.Dropdown = Dropdown;
- exports2.Modal = Modal;
- exports2.Offcanvas = Offcanvas;
- exports2.Popover = Popover;
- exports2.Popper = Popper;
- exports2.ScrollSpy = ScrollSpy;
- exports2.Tab = Tab;
- exports2.Toast = Toast;
- exports2.Tooltip = Tooltip;
- exports2.bootstrap = bootstrap;
- exports2.tabler = tabler;
-}));
-//# sourceMappingURL=tabler.js.map
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tabler = {}));
+})(this, function(exports) {
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
+ //#region \0rolldown/runtime.js
+ var __defProp = Object.defineProperty;
+ var __exportAll = (all, no_symbols) => {
+ let target = {};
+ for (var name in all) __defProp(target, name, {
+ get: all[name],
+ enumerable: true
+ });
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
+ return target;
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/autosize@6.0.1/node_modules/autosize/dist/autosize.esm.js
+ var e = /* @__PURE__ */ new Map();
+ function t$1(t) {
+ var o = e.get(t);
+ o && o.destroy();
+ }
+ function o(t) {
+ var o = e.get(t);
+ o && o.update();
+ }
+ var r = null;
+ "undefined" == typeof window ? ((r = function(e) {
+ return e;
+ }).destroy = function(e) {
+ return e;
+ }, r.update = function(e) {
+ return e;
+ }) : ((r = function(t, o) {
+ return t && Array.prototype.forEach.call(t.length ? t : [t], function(t) {
+ return function(t) {
+ if (t && t.nodeName && "TEXTAREA" === t.nodeName && !e.has(t)) {
+ var o, r = null, n = window.getComputedStyle(t), i = (o = t.value, function() {
+ a({
+ testForHeightReduction: "" === o || !t.value.startsWith(o),
+ restoreTextAlign: null
+ }), o = t.value;
+ }), l = function(o) {
+ t.removeEventListener("autosize:destroy", l), t.removeEventListener("autosize:update", s), t.removeEventListener("input", i), window.removeEventListener("resize", s), Object.keys(o).forEach(function(e) {
+ return t.style[e] = o[e];
+ }), e.delete(t);
+ }.bind(t, {
+ height: t.style.height,
+ resize: t.style.resize,
+ textAlign: t.style.textAlign,
+ overflowY: t.style.overflowY,
+ overflowX: t.style.overflowX,
+ wordWrap: t.style.wordWrap
+ });
+ t.addEventListener("autosize:destroy", l), t.addEventListener("autosize:update", s), t.addEventListener("input", i), window.addEventListener("resize", s), t.style.overflowX = "hidden", t.style.wordWrap = "break-word", e.set(t, {
+ destroy: l,
+ update: s
+ }), s();
+ }
+ function a(e) {
+ var o, i, l = e.restoreTextAlign, s = void 0 === l ? null : l, d = e.testForHeightReduction, u = void 0 === d || d, c = n.overflowY;
+ if (0 !== t.scrollHeight && ("vertical" === n.resize ? t.style.resize = "none" : "both" === n.resize && (t.style.resize = "horizontal"), u && (o = function(e) {
+ for (var t = []; e && e.parentNode && e.parentNode instanceof Element;) e.parentNode.scrollTop && t.push([e.parentNode, e.parentNode.scrollTop]), e = e.parentNode;
+ return function() {
+ return t.forEach(function(e) {
+ var t = e[0], o = e[1];
+ t.style.scrollBehavior = "auto", t.scrollTop = o, t.style.scrollBehavior = null;
+ });
+ };
+ }(t), t.style.height = ""), i = "content-box" === n.boxSizing ? t.scrollHeight - (parseFloat(n.paddingTop) + parseFloat(n.paddingBottom)) : t.scrollHeight + parseFloat(n.borderTopWidth) + parseFloat(n.borderBottomWidth), "none" !== n.maxHeight && i > parseFloat(n.maxHeight) ? ("hidden" === n.overflowY && (t.style.overflow = "scroll"), i = parseFloat(n.maxHeight)) : "hidden" !== n.overflowY && (t.style.overflow = "hidden"), t.style.height = i + "px", s && (t.style.textAlign = s), o && o(), r !== i && (t.dispatchEvent(new Event("autosize:resized", { bubbles: !0 })), r = i), c !== n.overflow && !s)) {
+ var v = n.textAlign;
+ "hidden" === n.overflow && (t.style.textAlign = "start" === v ? "end" : "start"), a({
+ restoreTextAlign: v,
+ testForHeightReduction: !0
+ });
+ }
+ }
+ function s() {
+ a({
+ testForHeightReduction: !0,
+ restoreTextAlign: null
+ });
+ }
+ }(t);
+ }), t;
+ }).destroy = function(e) {
+ return e && Array.prototype.forEach.call(e.length ? e : [e], t$1), e;
+ }, r.update = function(e) {
+ return e && Array.prototype.forEach.call(e.length ? e : [e], o), e;
+ });
+ var n = r;
+ //#endregion
+ //#region js/src/bootstrap/dom/data.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap dom/data.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var elementMap = /* @__PURE__ */ new Map();
+ var Data = {
+ set(element, key, instance) {
+ if (!elementMap.has(element)) elementMap.set(element, /* @__PURE__ */ new Map());
+ const instanceMap = elementMap.get(element);
+ if (!instanceMap.has(key) && instanceMap.size !== 0) {
+ console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
+ return;
+ }
+ instanceMap.set(key, instance);
+ },
+ get(element, key) {
+ if (elementMap.has(element)) return elementMap.get(element).get(key) || null;
+ return null;
+ },
+ remove(element, key) {
+ if (!elementMap.has(element)) return;
+ const instanceMap = elementMap.get(element);
+ instanceMap.delete(key);
+ if (instanceMap.size === 0) elementMap.delete(element);
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/dom/event-handler.ts
+ var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
+ var stripNameRegex = /\..*/;
+ var stripUidRegex = /::\d+$/;
+ var eventRegistry = {};
+ var uidEvent = 1;
+ var customEvents = {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+ };
+ var nativeEvents = /* @__PURE__ */ new Set([
+ "click",
+ "dblclick",
+ "mouseup",
+ "mousedown",
+ "contextmenu",
+ "mousewheel",
+ "DOMMouseScroll",
+ "mouseover",
+ "mouseout",
+ "mousemove",
+ "selectstart",
+ "selectend",
+ "keydown",
+ "keypress",
+ "keyup",
+ "orientationchange",
+ "touchstart",
+ "touchmove",
+ "touchend",
+ "touchcancel",
+ "pointerdown",
+ "pointermove",
+ "pointerup",
+ "pointerleave",
+ "pointercancel",
+ "gesturestart",
+ "gesturechange",
+ "gestureend",
+ "focus",
+ "blur",
+ "change",
+ "reset",
+ "select",
+ "submit",
+ "focusin",
+ "focusout",
+ "load",
+ "unload",
+ "beforeunload",
+ "resize",
+ "move",
+ "DOMContentLoaded",
+ "readystatechange",
+ "error",
+ "abort",
+ "scroll"
+ ]);
+ function makeEventUid(element, uid) {
+ return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
+ }
+ function getElementEvents(element) {
+ const uid = makeEventUid(element);
+ element.uidEvent = uid;
+ eventRegistry[uid] = eventRegistry[uid] || {};
+ return eventRegistry[uid];
+ }
+ function bootstrapHandler(element, fn) {
+ return function handler(event) {
+ hydrateObj(event, { delegateTarget: element });
+ if (handler.oneOff) EventHandler.off(element, event.type, fn);
+ return fn.apply(element, [event]);
+ };
+ }
+ function bootstrapDelegationHandler(element, selector, fn) {
+ return function handler(event) {
+ const domElements = element.querySelectorAll(selector);
+ for (let { target } = event; target && target !== this; target = target.parentNode) for (const domElement of domElements) {
+ if (domElement !== target) continue;
+ hydrateObj(event, { delegateTarget: target });
+ if (handler.oneOff) EventHandler.off(element, event.type, selector, fn);
+ return fn.apply(target, [event]);
+ }
+ };
+ }
+ function findHandler(events, callable, delegationSelector = null) {
+ return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector);
+ }
+ function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
+ const isDelegated = typeof handler === "string";
+ const callable = isDelegated ? delegationFunction : handler || delegationFunction;
+ let typeEvent = getTypeEvent(originalTypeEvent);
+ if (!nativeEvents.has(typeEvent)) typeEvent = originalTypeEvent;
+ return [
+ isDelegated,
+ callable,
+ typeEvent
+ ];
+ }
+ function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
+ if (typeof originalTypeEvent !== "string" || !element) return;
+ let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
+ if (originalTypeEvent in customEvents) {
+ const wrapFunction = (fn) => {
+ return function(event) {
+ const evt = event;
+ if (!evt.relatedTarget || evt.relatedTarget !== evt.delegateTarget && !evt.delegateTarget.contains(evt.relatedTarget)) return fn.call(this, event);
+ };
+ };
+ callable = wrapFunction(callable);
+ }
+ const events = getElementEvents(element);
+ const handlers = events[typeEvent] || (events[typeEvent] = {});
+ const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
+ if (previousFunction) {
+ previousFunction.oneOff = previousFunction.oneOff && oneOff;
+ return;
+ }
+ const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ""));
+ const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
+ fn.delegationSelector = isDelegated ? handler : null;
+ fn.callable = callable;
+ fn.oneOff = oneOff;
+ fn.uidEvent = uid;
+ handlers[uid] = fn;
+ element.addEventListener(typeEvent, fn, isDelegated);
+ }
+ function removeHandler(element, events, typeEvent, handler, delegationSelector) {
+ const fn = findHandler(events[typeEvent], handler, delegationSelector !== null && delegationSelector !== void 0 ? delegationSelector : null);
+ if (!fn) return;
+ element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
+ delete events[typeEvent][fn.uidEvent];
+ }
+ function removeNamespacedHandlers(element, events, typeEvent, namespace) {
+ const storeElementEvent = events[typeEvent] || {};
+ for (const [handlerKey, event] of Object.entries(storeElementEvent)) if (handlerKey.includes(namespace)) removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
+ }
+ function getTypeEvent(event) {
+ event = event.replace(stripNameRegex, "");
+ return customEvents[event] || event;
+ }
+ var EventHandler = {
+ on(element, event, handler, delegationFunction) {
+ addHandler(element, event, handler, delegationFunction, false);
+ },
+ one(element, event, handler, delegationFunction) {
+ addHandler(element, event, handler, delegationFunction, true);
+ },
+ off(element, originalTypeEvent, handler, delegationFunction) {
+ if (typeof originalTypeEvent !== "string" || !element) return;
+ const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
+ const inNamespace = typeEvent !== originalTypeEvent;
+ const events = getElementEvents(element);
+ const storeElementEvent = events[typeEvent] || {};
+ const isNamespace = originalTypeEvent.startsWith(".");
+ if (typeof callable !== "undefined") {
+ if (!Object.keys(storeElementEvent).length) return;
+ removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
+ return;
+ }
+ if (isNamespace) for (const elementEvent of Object.keys(events)) removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
+ for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
+ const handlerKey = keyHandlers.replace(stripUidRegex, "");
+ if (!inNamespace || originalTypeEvent.includes(handlerKey)) removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
+ }
+ },
+ trigger(element, event, args) {
+ if (typeof event !== "string" || !element) return null;
+ const evt = hydrateObj(new Event(event, {
+ bubbles: true,
+ cancelable: true
+ }), args);
+ element.dispatchEvent(evt);
+ return evt;
+ }
+ };
+ function hydrateObj(obj, meta = {}) {
+ for (const [key, value] of Object.entries(meta)) try {
+ obj[key] = value;
+ } catch (_unused) {
+ Object.defineProperty(obj, key, {
+ configurable: true,
+ get() {
+ return value;
+ }
+ });
+ }
+ return obj;
+ }
+ //#endregion
+ //#region js/src/bootstrap/dom/manipulator.ts
+ function normalizeData(value) {
+ if (value === "true") return true;
+ if (value === "false") return false;
+ if (value === Number(value).toString()) return Number(value);
+ if (value === "" || value === "null") return null;
+ if (typeof value !== "string") return value;
+ try {
+ return JSON.parse(decodeURIComponent(value));
+ } catch (_unused) {
+ return value;
+ }
+ }
+ function normalizeDataKey(key) {
+ return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
+ }
+ var PREFIXES = ["tblr", "bs"];
+ var Manipulator = {
+ setDataAttribute(element, key, value) {
+ element.setAttribute(`data-tblr-${normalizeDataKey(key)}`, value);
+ },
+ removeDataAttribute(element, key) {
+ for (const prefix of PREFIXES) element.removeAttribute(`data-${prefix}-${normalizeDataKey(key)}`);
+ },
+ getDataAttributes(element) {
+ if (!element) return {};
+ const attributes = {};
+ for (const prefix of PREFIXES) {
+ const keys = Object.keys(element.dataset).filter((key) => key.startsWith(prefix) && !key.startsWith(`${prefix}Config`));
+ for (const key of keys) {
+ let pureKey = key.replace(new RegExp(`^${prefix}`), "");
+ pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);
+ if (!(pureKey in attributes)) attributes[pureKey] = normalizeData(element.dataset[key]);
+ }
+ }
+ return attributes;
+ },
+ getDataAttribute(element, key) {
+ for (const prefix of PREFIXES) {
+ const value = element.getAttribute(`data-${prefix}-${normalizeDataKey(key)}`);
+ if (value !== null) return normalizeData(value);
+ }
+ return null;
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/util/index.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/index.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var MAX_UID = 1e6;
+ var MILLISECONDS_MULTIPLIER = 1e3;
+ var TRANSITION_END = "transitionend";
+ var parseSelector = (selector) => {
+ if (selector && typeof CSS !== "undefined" && typeof CSS.escape === "function") selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
+ return selector;
+ };
+ var toType = (object) => {
+ if (object === null || object === void 0) return `${object}`;
+ return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
+ };
+ var getUID = (prefix) => {
+ do
+ prefix += Math.floor(Math.random() * MAX_UID);
+ while (document.getElementById(prefix));
+ return prefix;
+ };
+ var getTransitionDurationFromElement = (element) => {
+ if (!element) return 0;
+ let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
+ if (!Number.parseFloat(transitionDuration) && !Number.parseFloat(transitionDelay)) return 0;
+ transitionDuration = transitionDuration.split(",")[0];
+ transitionDelay = transitionDelay.split(",")[0];
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
+ };
+ var triggerTransitionEnd = (element) => {
+ element.dispatchEvent(new Event(TRANSITION_END));
+ };
+ var isElement$1 = (object) => {
+ if (!object || typeof object !== "object") return false;
+ return typeof object.nodeType !== "undefined";
+ };
+ var getElement = (object) => {
+ if (isElement$1(object)) return object;
+ if (typeof object === "string" && object.length > 0) return document.querySelector(parseSelector(object));
+ return null;
+ };
+ var isVisible = (element) => {
+ if (!isElement$1(element) || element.getClientRects().length === 0) return false;
+ const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible";
+ const closedDetails = element.closest("details:not([open])");
+ if (!closedDetails) return elementIsVisible;
+ if (closedDetails !== element) {
+ const summary = element.closest("summary");
+ if (summary && summary.parentNode !== closedDetails) return false;
+ if (summary === null) return false;
+ }
+ return elementIsVisible;
+ };
+ var isDisabled = (element) => {
+ if (!element || element.nodeType !== Node.ELEMENT_NODE) return true;
+ if (element.classList.contains("disabled")) return true;
+ if ("disabled" in element && typeof element.disabled !== "undefined") return Boolean(element.disabled);
+ return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false";
+ };
+ var findShadowRoot = (element) => {
+ if (!document.documentElement.attachShadow) return null;
+ if (typeof element.getRootNode === "function") {
+ const root = element.getRootNode();
+ return root instanceof ShadowRoot ? root : null;
+ }
+ if (element instanceof ShadowRoot) return element;
+ if (!element.parentNode) return null;
+ return findShadowRoot(element.parentNode);
+ };
+ var noop = () => {};
+ /**
+ * Trick to restart an element's animation
+ *
+ * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
+ */
+ var reflow = (element) => {
+ element.offsetHeight;
+ };
+ var isRTL = () => document.documentElement.dir === "rtl";
+ var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
+ return typeof possibleCallback === "function" ? possibleCallback.call(args[0], ...args.slice(1)) : defaultValue;
+ };
+ var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
+ if (!waitForTransition) {
+ execute(callback);
+ return;
+ }
+ const emulatedDuration = getTransitionDurationFromElement(transitionElement) + 5;
+ let called = false;
+ const handler = ({ target }) => {
+ if (target !== transitionElement) return;
+ called = true;
+ transitionElement.removeEventListener(TRANSITION_END, handler);
+ execute(callback);
+ };
+ transitionElement.addEventListener(TRANSITION_END, handler);
+ setTimeout(() => {
+ if (!called) triggerTransitionEnd(transitionElement);
+ }, emulatedDuration);
+ };
+ var getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
+ const listLength = list.length;
+ let index = list.indexOf(activeElement);
+ if (index === -1) return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
+ index += shouldGetNext ? 1 : -1;
+ if (isCycleAllowed) index = (index + listLength) % listLength;
+ return list[Math.max(0, Math.min(index, listLength - 1))];
+ };
+ //#endregion
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/typeof.js
+ function _typeof(o) {
+ "@babel/helpers - typeof";
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
+ return typeof o;
+ } : function(o) {
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+ }, _typeof(o);
+ }
+ //#endregion
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/toPrimitive.js
+ function toPrimitive(t, r) {
+ if ("object" != _typeof(t) || !t) return t;
+ var e = t[Symbol.toPrimitive];
+ if (void 0 !== e) {
+ var i = e.call(t, r || "default");
+ if ("object" != _typeof(i)) return i;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return ("string" === r ? String : Number)(t);
+ }
+ //#endregion
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/toPropertyKey.js
+ function toPropertyKey(t) {
+ var i = toPrimitive(t, "string");
+ return "symbol" == _typeof(i) ? i : i + "";
+ }
+ //#endregion
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/defineProperty.js
+ function _defineProperty(e, r, t) {
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
+ value: t,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }) : e[r] = t, e;
+ }
+ //#endregion
+ //#region \0@oxc-project+runtime@0.147.0/helpers/esm/objectSpread2.js
+ function ownKeys(e, r) {
+ var t = Object.keys(e);
+ if (Object.getOwnPropertySymbols) {
+ var o = Object.getOwnPropertySymbols(e);
+ r && (o = o.filter(function(r) {
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
+ })), t.push.apply(t, o);
+ }
+ return t;
+ }
+ function _objectSpread2(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? arguments[r] : {};
+ r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {
+ _defineProperty(e, r, t[r]);
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
+ });
+ }
+ return e;
+ }
+ //#endregion
+ //#region js/src/bootstrap/util/config.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/config.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var Config = class {
+ static get Default() {
+ return {};
+ }
+ static get DefaultType() {
+ return {};
+ }
+ static get NAME() {
+ throw new Error("You have to implement the static method \"NAME\", for each component!");
+ }
+ _getConfig(config) {
+ config = this._mergeConfigObj(config);
+ config = this._configAfterMerge(config);
+ this._typeCheckConfig(config);
+ return config;
+ }
+ _configAfterMerge(config) {
+ return config;
+ }
+ _mergeConfigObj(config, element) {
+ const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, "config") : {};
+ const ctor = this.constructor;
+ return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, ctor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement$1(element) ? Manipulator.getDataAttributes(element) : {}), typeof config === "object" ? config : {});
+ }
+ _typeCheckConfig(config, configTypes) {
+ const ctor = this.constructor;
+ const types = configTypes || ctor.DefaultType;
+ for (const [property, expectedTypes] of Object.entries(types)) {
+ const value = config[property];
+ const valueType = isElement$1(value) ? "element" : toType(value);
+ if (!new RegExp(expectedTypes).test(valueType)) throw new TypeError(`${ctor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
+ }
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/base-component.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap base-component.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var VERSION = "5.3.8";
+ var BaseComponent = class extends Config {
+ constructor(element, config) {
+ super();
+ const resolved = getElement(element);
+ if (!resolved) return;
+ this._element = resolved;
+ this._config = this._getConfig(config);
+ const ctor = this.constructor;
+ Data.set(this._element, ctor.DATA_KEY, this);
+ }
+ dispose() {
+ const ctor = this.constructor;
+ Data.remove(this._element, ctor.DATA_KEY);
+ EventHandler.off(this._element, ctor.EVENT_KEY);
+ for (const propertyName of Object.getOwnPropertyNames(this)) this[propertyName] = null;
+ }
+ _queueCallback(callback, element, isAnimated = true) {
+ executeAfterTransition(callback, element, isAnimated);
+ }
+ _getConfig(config) {
+ config = this._mergeConfigObj(config, this._element);
+ config = this._configAfterMerge(config);
+ this._typeCheckConfig(config);
+ return config;
+ }
+ static getInstance(element) {
+ return Data.get(getElement(element), this.DATA_KEY);
+ }
+ static getOrCreateInstance(element, config = {}) {
+ return this.getInstance(element) || new this(element, typeof config === "object" ? config : void 0);
+ }
+ static get VERSION() {
+ return VERSION;
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(name) {
+ return `${name}${this.EVENT_KEY}`;
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/dom/selector-engine.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap dom/selector-engine.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var getSelector = (element) => {
+ let selector = element.getAttribute("data-tblr-target") || element.getAttribute("data-bs-target");
+ if (!selector || selector === "#") {
+ let hrefAttribute = element.getAttribute("href");
+ if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) return null;
+ if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) hrefAttribute = `#${hrefAttribute.split("#")[1]}`;
+ selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null;
+ }
+ return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null;
+ };
+ var SelectorEngine = {
+ find(selector, element = document.documentElement) {
+ return Array.from(element.querySelectorAll(selector));
+ },
+ findOne(selector, element = document.documentElement) {
+ return element.querySelector(selector);
+ },
+ children(element, selector) {
+ return Array.from(element.children).filter((child) => child.matches(selector));
+ },
+ parents(element, selector) {
+ const parents = [];
+ let ancestor = element.parentNode && element.parentNode.closest(selector);
+ while (ancestor) {
+ parents.push(ancestor);
+ ancestor = ancestor.parentNode && ancestor.parentNode.closest(selector);
+ }
+ return parents;
+ },
+ prev(element, selector) {
+ let previous = element.previousElementSibling;
+ while (previous) {
+ if (previous.matches(selector)) return [previous];
+ previous = previous.previousElementSibling;
+ }
+ return [];
+ },
+ next(element, selector) {
+ let next = element.nextElementSibling;
+ while (next) {
+ if (next.matches(selector)) return [next];
+ next = next.nextElementSibling;
+ }
+ 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));
+ },
+ getSelectorFromElement(element) {
+ const selector = getSelector(element);
+ if (selector) return SelectorEngine.findOne(selector) ? selector : null;
+ return null;
+ },
+ getElementFromSelector(element) {
+ const selector = getSelector(element);
+ return selector ? SelectorEngine.findOne(selector) : null;
+ },
+ getMultipleElementsFromSelector(element) {
+ const selector = getSelector(element);
+ return selector ? SelectorEngine.find(selector) : [];
+ }
+ };
+ //#endregion
+ //#region js/src/autosize.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Tabler autosize.ts
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$20 = "autosize";
+ var SELECTOR_DATA_TOGGLE$7 = `[data-bs-toggle="${NAME$20}"], [data-tblr-toggle="${NAME$20}"]`;
+ var Default$17 = {};
+ var DefaultType$17 = {};
+ /**
+ * Class definition
+ *
+ * Wraps the `autosize` plugin (https://github.com/jackmoore/autosize), bundled
+ * with `tabler.js`.
+ */
+ var Autosize = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ if (this._element) n(this._element);
+ }
+ static get Default() {
+ return Default$17;
+ }
+ static get DefaultType() {
+ return DefaultType$17;
+ }
+ static get NAME() {
+ return NAME$20;
+ }
+ update() {
+ n.update(this._element);
+ }
+ dispose() {
+ n.destroy(this._element);
+ super.dispose();
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7)) Autosize.getOrCreateInstance(element);
+ //#endregion
+ //#region ../node_modules/.pnpm/countup.js@2.10.1/node_modules/countup.js/dist/countUp.min.js
+ var t = function() {
+ return t = Object.assign || function(t) {
+ for (var i, e = 1, s = arguments.length; e < s; e++) for (var n in i = arguments[e]) Object.prototype.hasOwnProperty.call(i, n) && (t[n] = i[n]);
+ return t;
+ }, t.apply(this, arguments);
+ };
+ var i = function() {
+ function i(i, e, s) {
+ var n = this;
+ this.endVal = e, this.options = s, this.version = "2.10.1", this.defaults = {
+ startVal: 0,
+ decimalPlaces: 0,
+ duration: 2,
+ useEasing: !0,
+ useGrouping: !0,
+ useIndianSeparators: !1,
+ smartEasingThreshold: 999,
+ smartEasingAmount: 333,
+ separator: ",",
+ decimal: ".",
+ prefix: "",
+ suffix: "",
+ autoAnimate: !1,
+ autoAnimateDelay: 200,
+ autoAnimateOnce: !1
+ }, this.finalEndVal = null, this.useEasing = !0, this.countDown = !1, this.error = "", this.startVal = 0, this.paused = !0, this.once = !1, this.count = function(t) {
+ n.startTime || (n.startTime = t);
+ var i = t - n.startTime;
+ n.remaining = n.duration - i, n.useEasing ? n.countDown ? n.frameVal = n.startVal - n.easingFn(i, 0, n.startVal - n.endVal, n.duration) : n.frameVal = n.easingFn(i, n.startVal, n.endVal - n.startVal, n.duration) : n.frameVal = n.startVal + (n.endVal - n.startVal) * (i / n.duration);
+ n.frameVal = (n.countDown ? n.frameVal < n.endVal : n.frameVal > n.endVal) ? n.endVal : n.frameVal, n.frameVal = Number(n.frameVal.toFixed(n.options.decimalPlaces)), n.printValue(n.frameVal), i < n.duration ? n.rAF = requestAnimationFrame(n.count) : null !== n.finalEndVal ? n.update(n.finalEndVal) : n.options.onCompleteCallback && n.options.onCompleteCallback();
+ }, this.formatNumber = function(t) {
+ var i, e, s, a, o = t < 0 ? "-" : "";
+ i = Math.abs(t).toFixed(n.options.decimalPlaces);
+ var r = (i += "").split(".");
+ if (e = r[0], s = r.length > 1 ? n.options.decimal + r[1] : "", n.options.useGrouping) {
+ a = "";
+ for (var l = 3, u = 0, h = 0, p = e.length; h < p; ++h) n.options.useIndianSeparators && 4 === h && (l = 2, u = 1), 0 !== h && u % l == 0 && (a = n.options.separator + a), u++, a = e[p - h - 1] + a;
+ e = a;
+ }
+ return n.options.numerals && n.options.numerals.length && (e = e.replace(/[0-9]/g, (function(t) {
+ return n.options.numerals[+t];
+ })), s = s.replace(/[0-9]/g, (function(t) {
+ return n.options.numerals[+t];
+ }))), o + n.options.prefix + e + s + n.options.suffix;
+ }, this.easeOutExpo = function(t, i, e, s) {
+ return e * (1 - Math.pow(2, -10 * t / s)) * 1024 / 1023 + i;
+ }, this.options = t(t({}, this.defaults), s), this.options.enableScrollSpy && (this.options.autoAnimate = !0), void 0 !== this.options.scrollSpyDelay && (this.options.autoAnimateDelay = this.options.scrollSpyDelay), this.options.scrollSpyOnce && (this.options.autoAnimateOnce = !0), this.formattingFn = this.options.formattingFn ? this.options.formattingFn : this.formatNumber, this.easingFn = this.options.easingFn ? this.options.easingFn : this.easeOutExpo, this.el = "string" == typeof i ? document.getElementById(i) : i, e = null == e ? this.parse(this.el.innerHTML) : e, this.startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.endVal = this.validateValue(e), this.options.decimalPlaces = Math.max(this.options.decimalPlaces), this.resetDuration(), this.options.separator = String(this.options.separator), this.useEasing = this.options.useEasing, "" === this.options.separator && (this.options.useGrouping = !1), this.el ? this.printValue(this.startVal) : this.error = "[CountUp] target is null or undefined", "undefined" != typeof window && this.options.autoAnimate && (this.error || "undefined" == typeof IntersectionObserver ? this.error ? console.error(this.error, i) : console.error("IntersectionObserver is not supported by this browser") : this.setupObserver());
+ }
+ return i.prototype.setupObserver = function() {
+ var t = this, e = i.observedElements.get(this.el);
+ e && e.unobserve(), i.observedElements.set(this.el, this), this.observer = new IntersectionObserver((function(i) {
+ for (var e = 0, s = i; e < s.length; e++) {
+ var n = s[e];
+ n.isIntersecting && t.paused && !t.once ? (t.paused = !1, t.autoAnimateTimeout = setTimeout((function() {
+ return t.start();
+ }), t.options.autoAnimateDelay), t.options.autoAnimateOnce && (t.once = !0, t.observer.disconnect())) : n.isIntersecting || t.paused || (clearTimeout(t.autoAnimateTimeout), t.reset());
+ }
+ }), { threshold: 0 }), this.observer.observe(this.el);
+ }, i.prototype.unobserve = function() {
+ var t;
+ clearTimeout(this.autoAnimateTimeout), null === (t = this.observer) || void 0 === t || t.disconnect(), i.observedElements.delete(this.el);
+ }, i.prototype.onDestroy = function() {
+ clearTimeout(this.autoAnimateTimeout), cancelAnimationFrame(this.rAF), this.paused = !0, this.unobserve(), this.options.onCompleteCallback = null, this.options.onStartCallback = null;
+ }, i.prototype.determineDirectionAndSmartEasing = function() {
+ var t = null !== this.finalEndVal ? this.finalEndVal : this.endVal;
+ this.countDown = this.startVal > t;
+ var i = t - this.startVal;
+ if (Math.abs(i) > this.options.smartEasingThreshold && this.options.useEasing) {
+ this.finalEndVal = t;
+ var e = this.countDown ? 1 : -1;
+ this.endVal = t + e * this.options.smartEasingAmount, this.duration = this.duration / 2;
+ } else this.endVal = t, this.finalEndVal = null;
+ null !== this.finalEndVal ? this.useEasing = !1 : this.useEasing = this.options.useEasing;
+ }, i.prototype.start = function(t) {
+ this.error || (this.options.onStartCallback && this.options.onStartCallback(), t && (this.options.onCompleteCallback = t), this.duration > 0 ? (this.determineDirectionAndSmartEasing(), this.paused = !1, this.rAF = requestAnimationFrame(this.count)) : this.printValue(this.endVal));
+ }, i.prototype.pauseResume = function() {
+ if (this.paused) this.startTime = null, this.duration = this.remaining, this.startVal = this.frameVal, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count);
+ else {
+ cancelAnimationFrame(this.rAF);
+ var t = null !== this.finalEndVal ? this.duration + this.remaining : this.remaining;
+ this.remaining = t;
+ }
+ this.paused = !this.paused;
+ }, i.prototype.reset = function() {
+ clearTimeout(this.autoAnimateTimeout), cancelAnimationFrame(this.rAF), this.paused = !0, this.once = !1, this.resetDuration(), this.startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.printValue(this.startVal);
+ }, i.prototype.update = function(t) {
+ cancelAnimationFrame(this.rAF), this.startTime = null, this.endVal = this.validateValue(t), this.endVal !== this.frameVal && (this.startVal = this.frameVal, null == this.finalEndVal && this.resetDuration(), this.finalEndVal = null, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count));
+ }, i.prototype.printValue = function(t) {
+ var i;
+ if (this.el) {
+ var e = this.formattingFn(t);
+ if (null === (i = this.options.plugin) || void 0 === i ? void 0 : i.render) this.options.plugin.render(this.el, e);
+ else if ("INPUT" === this.el.tagName) this.el.value = e;
+ else "text" === this.el.tagName || "tspan" === this.el.tagName ? this.el.textContent = e : this.el.innerHTML = e;
+ }
+ }, i.prototype.ensureNumber = function(t) {
+ return "number" == typeof t && !isNaN(t);
+ }, i.prototype.validateValue = function(t) {
+ var i = Number(t);
+ return this.ensureNumber(i) ? i : (this.error = "[CountUp] invalid start or end value: ".concat(t), null);
+ }, i.prototype.resetDuration = function() {
+ this.startTime = null, this.duration = 1e3 * Number(this.options.duration), this.remaining = this.duration;
+ }, i.prototype.parse = function(t) {
+ var i = function(t) {
+ return t.replace(/([.,'Â ])/g, "\\$1");
+ }, e = i(this.options.separator), s = i(this.options.decimal), n = t.replace(new RegExp(e, "g"), "").replace(new RegExp(s, "g"), ".");
+ return parseFloat(n);
+ }, i.observedElements = /* @__PURE__ */ new WeakMap(), i;
+ }();
+ //#endregion
+ //#region js/src/countup.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Tabler countup.ts
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$19 = "countup";
+ var DATA_ATTRIBUTE$1 = `data-${NAME$19}`;
+ var SELECTOR_DATA_COUNTUP = `[${DATA_ATTRIBUTE$1}]`;
+ var Default$16 = { autoAnimate: true };
+ var DefaultType$16 = { autoAnimate: "boolean" };
+ /**
+ * Class definition
+ *
+ * Animates the number written inside the element with countUp.js
+ * (https://github.com/inorganik/countUp.js), bundled with `tabler.js`. Options
+ * come from the `data-countup` attribute as JSON, or from the config object.
+ */
+ var CountUp = class extends BaseComponent {
+ constructor(element, config) {
+ var _this$_element$textCo;
+ super(element, config);
+ this._plugin = null;
+ if (!this._element) return;
+ const value = Number.parseFloat(((_this$_element$textCo = this._element.textContent) !== null && _this$_element$textCo !== void 0 ? _this$_element$textCo : "").replace(/[^0-9.-]/g, ""));
+ if (Number.isNaN(value)) return;
+ this._plugin = new i(this._element, value, this._config);
+ if (!this._plugin.error && !this._config.autoAnimate && !this._config.enableScrollSpy) this._plugin.start();
+ }
+ static get Default() {
+ return Default$16;
+ }
+ static get DefaultType() {
+ return DefaultType$16;
+ }
+ static get NAME() {
+ return NAME$19;
+ }
+ start() {
+ var _this$_plugin;
+ (_this$_plugin = this._plugin) === null || _this$_plugin === void 0 || _this$_plugin.start();
+ }
+ reset() {
+ var _this$_plugin2;
+ (_this$_plugin2 = this._plugin) === null || _this$_plugin2 === void 0 || _this$_plugin2.reset();
+ }
+ update(value) {
+ var _this$_plugin3;
+ (_this$_plugin3 = this._plugin) === null || _this$_plugin3 === void 0 || _this$_plugin3.update(value);
+ }
+ pauseResume() {
+ var _this$_plugin4;
+ (_this$_plugin4 = this._plugin) === null || _this$_plugin4 === void 0 || _this$_plugin4.pauseResume();
+ }
+ dispose() {
+ var _this$_plugin5;
+ (_this$_plugin5 = this._plugin) === null || _this$_plugin5 === void 0 || _this$_plugin5.onDestroy();
+ super.dispose();
+ }
+ _mergeConfigObj(config, element) {
+ let dataOptions = {};
+ const raw = element === null || element === void 0 ? void 0 : element.getAttribute(DATA_ATTRIBUTE$1);
+ if (raw) try {
+ dataOptions = JSON.parse(raw);
+ } catch (_unused) {}
+ return super._mergeConfigObj(_objectSpread2(_objectSpread2({}, dataOptions), config), element);
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ for (const element of SelectorEngine.find(SELECTOR_DATA_COUNTUP)) CountUp.getOrCreateInstance(element);
+ //#endregion
+ //#region js/src/input-mask.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Tabler input-mask.ts
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$18 = "input-mask";
+ var ATTRIBUTE_MASK = "data-mask";
+ var ATTRIBUTE_VISIBLE = "data-mask-visible";
+ var SELECTOR_DATA_MASK = `[${ATTRIBUTE_MASK}]`;
+ var Default$15 = {
+ mask: "",
+ lazy: true
+ };
+ var DefaultType$15 = {
+ mask: "string",
+ lazy: "boolean"
+ };
+ /**
+ * Class definition
+ *
+ * Wraps the IMask plugin (https://imask.js.org), loaded separately as
+ * `window.IMask`. Without the plugin the component is inert.
+ */
+ var InputMask = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._mask = null;
+ if (!this._element || !this._config.mask || !window.IMask) return;
+ this._mask = new window.IMask(this._element, {
+ mask: this._config.mask,
+ lazy: this._config.lazy
+ });
+ }
+ static get Default() {
+ return Default$15;
+ }
+ static get DefaultType() {
+ return DefaultType$15;
+ }
+ static get NAME() {
+ return NAME$18;
+ }
+ /** The IMask instance, for options the component does not expose. */
+ get mask() {
+ return this._mask;
+ }
+ update() {
+ var _this$_mask;
+ (_this$_mask = this._mask) === null || _this$_mask === void 0 || _this$_mask.updateValue();
+ }
+ dispose() {
+ var _this$_mask2;
+ (_this$_mask2 = this._mask) === null || _this$_mask2 === void 0 || _this$_mask2.destroy();
+ super.dispose();
+ }
+ _mergeConfigObj(config, element) {
+ const dataOptions = {};
+ const mask = element === null || element === void 0 ? void 0 : element.getAttribute(ATTRIBUTE_MASK);
+ if (mask) dataOptions.mask = mask;
+ if (element === null || element === void 0 ? void 0 : element.hasAttribute(ATTRIBUTE_VISIBLE)) dataOptions.lazy = element.getAttribute(ATTRIBUTE_VISIBLE) !== "true";
+ return super._mergeConfigObj(_objectSpread2(_objectSpread2({}, dataOptions), config), element);
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ for (const element of SelectorEngine.find(SELECTOR_DATA_MASK)) InputMask.getOrCreateInstance(element);
+ var bottom = "bottom";
+ var right = "right";
+ var left = "left";
+ var auto = "auto";
+ var basePlacements = [
+ "top",
+ bottom,
+ right,
+ left
+ ];
+ var start = "start";
+ var clippingParents = "clippingParents";
+ var viewport = "viewport";
+ var popper = "popper";
+ var reference = "reference";
+ var variationPlacements = /*#__PURE__*/ basePlacements.reduce(function(acc, placement) {
+ return acc.concat([placement + "-" + start, placement + "-end"]);
+ }, []);
+ var placements = /*#__PURE__*/ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
+ return acc.concat([
+ placement,
+ placement + "-" + start,
+ placement + "-end"
+ ]);
+ }, []);
+ var beforeRead = "beforeRead";
+ var read = "read";
+ var afterRead = "afterRead";
+ var beforeMain = "beforeMain";
+ var main = "main";
+ var afterMain = "afterMain";
+ var beforeWrite = "beforeWrite";
+ var write = "write";
+ var afterWrite = "afterWrite";
+ var modifierPhases = [
+ beforeRead,
+ read,
+ afterRead,
+ beforeMain,
+ main,
+ afterMain,
+ beforeWrite,
+ write,
+ afterWrite
+ ];
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
+ function getNodeName(element) {
+ return element ? (element.nodeName || "").toLowerCase() : null;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js
+ function getWindow(node) {
+ if (node == null) return window;
+ if (node.toString() !== "[object Window]") {
+ var ownerDocument = node.ownerDocument;
+ return ownerDocument ? ownerDocument.defaultView || window : window;
+ }
+ return node;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
+ function isElement(node) {
+ return node instanceof getWindow(node).Element || node instanceof Element;
+ }
+ function isHTMLElement(node) {
+ return node instanceof getWindow(node).HTMLElement || node instanceof HTMLElement;
+ }
+ function isShadowRoot(node) {
+ if (typeof ShadowRoot === "undefined") return false;
+ return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js
+ function applyStyles(_ref) {
+ var state = _ref.state;
+ Object.keys(state.elements).forEach(function(name) {
+ var style = state.styles[name] || {};
+ var attributes = state.attributes[name] || {};
+ var element = state.elements[name];
+ if (!isHTMLElement(element) || !getNodeName(element)) return;
+ Object.assign(element.style, style);
+ Object.keys(attributes).forEach(function(name) {
+ var value = attributes[name];
+ if (value === false) element.removeAttribute(name);
+ else element.setAttribute(name, value === true ? "" : value);
+ });
+ });
+ }
+ function effect$2(_ref2) {
+ var state = _ref2.state;
+ var initialStyles = {
+ popper: {
+ position: state.options.strategy,
+ left: "0",
+ top: "0",
+ margin: "0"
+ },
+ arrow: { position: "absolute" },
+ reference: {}
+ };
+ Object.assign(state.elements.popper.style, initialStyles.popper);
+ state.styles = initialStyles;
+ if (state.elements.arrow) Object.assign(state.elements.arrow.style, initialStyles.arrow);
+ return function() {
+ Object.keys(state.elements).forEach(function(name) {
+ var element = state.elements[name];
+ var attributes = state.attributes[name] || {};
+ var style = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]).reduce(function(style, property) {
+ style[property] = "";
+ return style;
+ }, {});
+ if (!isHTMLElement(element) || !getNodeName(element)) return;
+ Object.assign(element.style, style);
+ Object.keys(attributes).forEach(function(attribute) {
+ element.removeAttribute(attribute);
+ });
+ });
+ };
+ }
+ var applyStyles_default = {
+ name: "applyStyles",
+ enabled: true,
+ phase: "write",
+ fn: applyStyles,
+ effect: effect$2,
+ requires: ["computeStyles"]
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js
+ function getBasePlacement(placement) {
+ return placement.split("-")[0];
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js
+ var max = Math.max;
+ var min = Math.min;
+ var round = Math.round;
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js
+ function getUAString() {
+ var uaData = navigator.userAgentData;
+ if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) return uaData.brands.map(function(item) {
+ return item.brand + "/" + item.version;
+ }).join(" ");
+ return navigator.userAgent;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
+ function isLayoutViewport() {
+ return !/^((?!chrome|android).)*safari/i.test(getUAString());
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
+ if (includeScale === void 0) includeScale = false;
+ if (isFixedStrategy === void 0) isFixedStrategy = false;
+ var clientRect = element.getBoundingClientRect();
+ var scaleX = 1;
+ var scaleY = 1;
+ if (includeScale && isHTMLElement(element)) {
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
+ }
+ var visualViewport = (isElement(element) ? getWindow(element) : window).visualViewport;
+ var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
+ var width = clientRect.width / scaleX;
+ var height = clientRect.height / scaleY;
+ return {
+ width,
+ height,
+ top: y,
+ right: x + width,
+ bottom: y + height,
+ left: x,
+ x,
+ y
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
+ function getLayoutRect(element) {
+ var clientRect = getBoundingClientRect(element);
+ var width = element.offsetWidth;
+ var height = element.offsetHeight;
+ if (Math.abs(clientRect.width - width) <= 1) width = clientRect.width;
+ if (Math.abs(clientRect.height - height) <= 1) height = clientRect.height;
+ return {
+ x: element.offsetLeft,
+ y: element.offsetTop,
+ width,
+ height
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js
+ function contains(parent, child) {
+ var rootNode = child.getRootNode && child.getRootNode();
+ if (parent.contains(child)) return true;
+ else if (rootNode && isShadowRoot(rootNode)) {
+ var next = child;
+ do {
+ if (next && parent.isSameNode(next)) return true;
+ next = next.parentNode || next.host;
+ } while (next);
+ }
+ return false;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
+ function getComputedStyle$1(element) {
+ return getWindow(element).getComputedStyle(element);
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
+ function isTableElement(element) {
+ return [
+ "table",
+ "td",
+ "th"
+ ].indexOf(getNodeName(element)) >= 0;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
+ function getDocumentElement(element) {
+ return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
+ function getParentNode(element) {
+ if (getNodeName(element) === "html") return element;
+ return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
+ function getTrueOffsetParent(element) {
+ if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") return null;
+ return element.offsetParent;
+ }
+ function getContainingBlock(element) {
+ var isFirefox = /firefox/i.test(getUAString());
+ if (/Trident/i.test(getUAString()) && isHTMLElement(element)) {
+ if (getComputedStyle$1(element).position === "fixed") return null;
+ }
+ var currentNode = getParentNode(element);
+ if (isShadowRoot(currentNode)) currentNode = currentNode.host;
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
+ var css = getComputedStyle$1(currentNode);
+ if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") return currentNode;
+ else currentNode = currentNode.parentNode;
+ }
+ return null;
+ }
+ function getOffsetParent(element) {
+ var window = getWindow(element);
+ var offsetParent = getTrueOffsetParent(element);
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") offsetParent = getTrueOffsetParent(offsetParent);
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) return window;
+ return offsetParent || getContainingBlock(element) || window;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
+ function getMainAxisFromPlacement(placement) {
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js
+ function within(min$2, value, max$2) {
+ return max(min$2, min(value, max$2));
+ }
+ function withinMaxClamp(min, value, max) {
+ var v = within(min, value, max);
+ return v > max ? max : v;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
+ function getFreshSideObject() {
+ return {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
+ function mergePaddingObject(paddingObject) {
+ return Object.assign({}, getFreshSideObject(), paddingObject);
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js
+ function expandToHashMap(value, keys) {
+ return keys.reduce(function(hashMap, key) {
+ hashMap[key] = value;
+ return hashMap;
+ }, {});
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js
+ var toPaddingObject = function toPaddingObject(padding, state) {
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding;
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
+ };
+ function arrow(_ref) {
+ var _state$modifiersData$;
+ var state = _ref.state, name = _ref.name, options = _ref.options;
+ var arrowElement = state.elements.arrow;
+ var popperOffsets = state.modifiersData.popperOffsets;
+ var basePlacement = getBasePlacement(state.placement);
+ var axis = getMainAxisFromPlacement(basePlacement);
+ var len = ["left", "right"].indexOf(basePlacement) >= 0 ? "height" : "width";
+ if (!arrowElement || !popperOffsets) return;
+ var paddingObject = toPaddingObject(options.padding, state);
+ var arrowRect = getLayoutRect(arrowElement);
+ var minProp = axis === "y" ? "top" : left;
+ var maxProp = axis === "y" ? bottom : right;
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
+ var startDiff = popperOffsets[axis] - state.rects.reference[axis];
+ var arrowOffsetParent = getOffsetParent(arrowElement);
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
+ var centerToReference = endDiff / 2 - startDiff / 2;
+ var min = paddingObject[minProp];
+ var max = clientSize - arrowRect[len] - paddingObject[maxProp];
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
+ var offset = within(min, center, max);
+ var axisProp = axis;
+ state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
+ }
+ function effect$1(_ref2) {
+ var state = _ref2.state;
+ var _options$element = _ref2.options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
+ if (arrowElement == null) return;
+ if (typeof arrowElement === "string") {
+ arrowElement = state.elements.popper.querySelector(arrowElement);
+ if (!arrowElement) return;
+ }
+ if (!contains(state.elements.popper, arrowElement)) return;
+ state.elements.arrow = arrowElement;
+ }
+ var arrow_default = {
+ name: "arrow",
+ enabled: true,
+ phase: "main",
+ fn: arrow,
+ effect: effect$1,
+ requires: ["popperOffsets"],
+ requiresIfExists: ["preventOverflow"]
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js
+ function getVariation(placement) {
+ return placement.split("-")[1];
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js
+ var unsetSides = {
+ top: "auto",
+ right: "auto",
+ bottom: "auto",
+ left: "auto"
+ };
+ function roundOffsetsByDPR(_ref, win) {
+ var x = _ref.x, y = _ref.y;
+ var dpr = win.devicePixelRatio || 1;
+ return {
+ x: round(x * dpr) / dpr || 0,
+ y: round(y * dpr) / dpr || 0
+ };
+ }
+ function mapToStyles(_ref2) {
+ var _Object$assign2;
+ var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
+ x,
+ y
+ }) : {
+ x,
+ y
+ };
+ x = _ref3.x;
+ y = _ref3.y;
+ var hasX = offsets.hasOwnProperty("x");
+ var hasY = offsets.hasOwnProperty("y");
+ var sideX = left;
+ var sideY = "top";
+ var win = window;
+ if (adaptive) {
+ var offsetParent = getOffsetParent(popper);
+ var heightProp = "clientHeight";
+ var widthProp = "clientWidth";
+ if (offsetParent === getWindow(popper)) {
+ offsetParent = getDocumentElement(popper);
+ if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") {
+ heightProp = "scrollHeight";
+ widthProp = "scrollWidth";
+ }
+ }
+ offsetParent = offsetParent;
+ if (placement === "top" || (placement === "left" || placement === "right") && variation === "end") {
+ sideY = bottom;
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
+ y -= offsetY - popperRect.height;
+ y *= gpuAcceleration ? 1 : -1;
+ }
+ if (placement === "left" || (placement === "top" || placement === "bottom") && variation === "end") {
+ sideX = right;
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
+ x -= offsetX - popperRect.width;
+ x *= gpuAcceleration ? 1 : -1;
+ }
+ }
+ var commonStyles = Object.assign({ position }, adaptive && unsetSides);
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
+ x,
+ y
+ }, getWindow(popper)) : {
+ x,
+ y
+ };
+ x = _ref4.x;
+ y = _ref4.y;
+ if (gpuAcceleration) {
+ var _Object$assign;
+ return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
+ }
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
+ }
+ function computeStyles(_ref5) {
+ var state = _ref5.state, options = _ref5.options;
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
+ var commonStyles = {
+ placement: getBasePlacement(state.placement),
+ variation: getVariation(state.placement),
+ popper: state.elements.popper,
+ popperRect: state.rects.popper,
+ gpuAcceleration,
+ isFixed: state.options.strategy === "fixed"
+ };
+ if (state.modifiersData.popperOffsets != null) state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
+ offsets: state.modifiersData.popperOffsets,
+ position: state.options.strategy,
+ adaptive,
+ roundOffsets
+ })));
+ if (state.modifiersData.arrow != null) state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
+ offsets: state.modifiersData.arrow,
+ position: "absolute",
+ adaptive: false,
+ roundOffsets
+ })));
+ state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-placement": state.placement });
+ }
+ var computeStyles_default = {
+ name: "computeStyles",
+ enabled: true,
+ phase: "beforeWrite",
+ fn: computeStyles,
+ data: {}
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js
+ var passive = { passive: true };
+ function effect(_ref) {
+ var state = _ref.state, instance = _ref.instance, options = _ref.options;
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
+ var window = getWindow(state.elements.popper);
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
+ if (scroll) scrollParents.forEach(function(scrollParent) {
+ scrollParent.addEventListener("scroll", instance.update, passive);
+ });
+ if (resize) window.addEventListener("resize", instance.update, passive);
+ return function() {
+ if (scroll) scrollParents.forEach(function(scrollParent) {
+ scrollParent.removeEventListener("scroll", instance.update, passive);
+ });
+ if (resize) window.removeEventListener("resize", instance.update, passive);
+ };
+ }
+ var eventListeners_default = {
+ name: "eventListeners",
+ enabled: true,
+ phase: "write",
+ fn: function fn() {},
+ effect,
+ data: {}
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
+ var hash$1 = {
+ left: "right",
+ right: "left",
+ bottom: "top",
+ top: "bottom"
+ };
+ function getOppositePlacement(placement) {
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
+ return hash$1[matched];
+ });
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
+ var hash = {
+ start: "end",
+ end: "start"
+ };
+ function getOppositeVariationPlacement(placement) {
+ return placement.replace(/start|end/g, function(matched) {
+ return hash[matched];
+ });
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
+ function getWindowScroll(node) {
+ var win = getWindow(node);
+ return {
+ scrollLeft: win.pageXOffset,
+ scrollTop: win.pageYOffset
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
+ function getWindowScrollBarX(element) {
+ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
+ function getViewportRect(element, strategy) {
+ var win = getWindow(element);
+ var html = getDocumentElement(element);
+ var visualViewport = win.visualViewport;
+ var width = html.clientWidth;
+ var height = html.clientHeight;
+ var x = 0;
+ var y = 0;
+ if (visualViewport) {
+ width = visualViewport.width;
+ height = visualViewport.height;
+ var layoutViewport = isLayoutViewport();
+ if (layoutViewport || !layoutViewport && strategy === "fixed") {
+ x = visualViewport.offsetLeft;
+ y = visualViewport.offsetTop;
+ }
+ }
+ return {
+ width,
+ height,
+ x: x + getWindowScrollBarX(element),
+ y
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
+ function getDocumentRect(element) {
+ var _element$ownerDocumen;
+ var html = getDocumentElement(element);
+ var winScroll = getWindowScroll(element);
+ var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
+ var y = -winScroll.scrollTop;
+ if (getComputedStyle$1(body || html).direction === "rtl") x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
+ return {
+ width,
+ height,
+ x,
+ y
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
+ function isScrollParent(element) {
+ var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
+ function getScrollParent(node) {
+ if ([
+ "html",
+ "body",
+ "#document"
+ ].indexOf(getNodeName(node)) >= 0) return node.ownerDocument.body;
+ if (isHTMLElement(node) && isScrollParent(node)) return node;
+ return getScrollParent(getParentNode(node));
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
+ function listScrollParents(element, list) {
+ var _element$ownerDocumen;
+ if (list === void 0) list = [];
+ var scrollParent = getScrollParent(element);
+ var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
+ var win = getWindow(scrollParent);
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
+ var updatedList = list.concat(target);
+ return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js
+ function rectToClientRect(rect) {
+ return Object.assign({}, rect, {
+ left: rect.x,
+ top: rect.y,
+ right: rect.x + rect.width,
+ bottom: rect.y + rect.height
+ });
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
+ function getInnerBoundingClientRect(element, strategy) {
+ var rect = getBoundingClientRect(element, false, strategy === "fixed");
+ rect.top = rect.top + element.clientTop;
+ rect.left = rect.left + element.clientLeft;
+ rect.bottom = rect.top + element.clientHeight;
+ rect.right = rect.left + element.clientWidth;
+ rect.width = element.clientWidth;
+ rect.height = element.clientHeight;
+ rect.x = rect.left;
+ rect.y = rect.top;
+ return rect;
+ }
+ function getClientRectFromMixedType(element, clippingParent, strategy) {
+ return clippingParent === "viewport" ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
+ }
+ function getClippingParents(element) {
+ var clippingParents = listScrollParents(getParentNode(element));
+ var clipperElement = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0 && isHTMLElement(element) ? getOffsetParent(element) : element;
+ if (!isElement(clipperElement)) return [];
+ return clippingParents.filter(function(clippingParent) {
+ return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
+ });
+ }
+ function getClippingRect(element, boundary, rootBoundary, strategy) {
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
+ var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
+ var firstClippingParent = clippingParents[0];
+ var clippingRect = clippingParents.reduce(function(accRect, clippingParent) {
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
+ accRect.top = max(rect.top, accRect.top);
+ accRect.right = min(rect.right, accRect.right);
+ accRect.bottom = min(rect.bottom, accRect.bottom);
+ accRect.left = max(rect.left, accRect.left);
+ return accRect;
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
+ clippingRect.width = clippingRect.right - clippingRect.left;
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
+ clippingRect.x = clippingRect.left;
+ clippingRect.y = clippingRect.top;
+ return clippingRect;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js
+ function computeOffsets(_ref) {
+ var reference = _ref.reference, element = _ref.element, placement = _ref.placement;
+ var basePlacement = placement ? getBasePlacement(placement) : null;
+ var variation = placement ? getVariation(placement) : null;
+ var commonX = reference.x + reference.width / 2 - element.width / 2;
+ var commonY = reference.y + reference.height / 2 - element.height / 2;
+ var offsets;
+ switch (basePlacement) {
+ case "top":
+ offsets = {
+ x: commonX,
+ y: reference.y - element.height
+ };
+ break;
+ case bottom:
+ offsets = {
+ x: commonX,
+ y: reference.y + reference.height
+ };
+ break;
+ case right:
+ offsets = {
+ x: reference.x + reference.width,
+ y: commonY
+ };
+ break;
+ case left:
+ offsets = {
+ x: reference.x - element.width,
+ y: commonY
+ };
+ break;
+ default: offsets = {
+ x: reference.x,
+ y: reference.y
+ };
+ }
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
+ if (mainAxis != null) {
+ var len = mainAxis === "y" ? "height" : "width";
+ switch (variation) {
+ case start:
+ offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
+ break;
+ case "end": offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
+ }
+ }
+ return offsets;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js
+ function detectOverflow(state, options) {
+ if (options === void 0) options = {};
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
+ var altContext = elementContext === "popper" ? reference : popper;
+ var popperRect = state.rects.popper;
+ var element = state.elements[altBoundary ? altContext : elementContext];
+ var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
+ var popperOffsets = computeOffsets({
+ reference: referenceClientRect,
+ element: popperRect,
+ strategy: "absolute",
+ placement
+ });
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
+ var elementClientRect = elementContext === "popper" ? popperClientRect : referenceClientRect;
+ var overflowOffsets = {
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
+ };
+ var offsetData = state.modifiersData.offset;
+ if (elementContext === "popper" && offsetData) {
+ var offset = offsetData[placement];
+ Object.keys(overflowOffsets).forEach(function(key) {
+ var multiply = ["right", "bottom"].indexOf(key) >= 0 ? 1 : -1;
+ var axis = ["top", "bottom"].indexOf(key) >= 0 ? "y" : "x";
+ overflowOffsets[key] += offset[axis] * multiply;
+ });
+ }
+ return overflowOffsets;
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
+ function computeAutoPlacement(state, options) {
+ if (options === void 0) options = {};
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
+ var variation = getVariation(placement);
+ var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement) {
+ return getVariation(placement) === variation;
+ }) : basePlacements;
+ var allowedPlacements = placements$1.filter(function(placement) {
+ return allowedAutoPlacements.indexOf(placement) >= 0;
+ });
+ if (allowedPlacements.length === 0) allowedPlacements = placements$1;
+ var overflows = allowedPlacements.reduce(function(acc, placement) {
+ acc[placement] = detectOverflow(state, {
+ placement,
+ boundary,
+ rootBoundary,
+ padding
+ })[getBasePlacement(placement)];
+ return acc;
+ }, {});
+ return Object.keys(overflows).sort(function(a, b) {
+ return overflows[a] - overflows[b];
+ });
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js
+ function getExpandedFallbackPlacements(placement) {
+ if (getBasePlacement(placement) === "auto") return [];
+ var oppositePlacement = getOppositePlacement(placement);
+ return [
+ getOppositeVariationPlacement(placement),
+ oppositePlacement,
+ getOppositeVariationPlacement(oppositePlacement)
+ ];
+ }
+ function flip(_ref) {
+ var state = _ref.state, options = _ref.options, name = _ref.name;
+ if (state.modifiersData[name]._skip) return;
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
+ var preferredPlacement = state.options.placement;
+ var isBasePlacement = getBasePlacement(preferredPlacement) === preferredPlacement;
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
+ var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement) {
+ return acc.concat(getBasePlacement(placement) === "auto" ? computeAutoPlacement(state, {
+ placement,
+ boundary,
+ rootBoundary,
+ padding,
+ flipVariations,
+ allowedAutoPlacements
+ }) : placement);
+ }, []);
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var checksMap = /* @__PURE__ */ new Map();
+ var makeFallbackChecks = true;
+ var firstFittingPlacement = placements[0];
+ for (var i = 0; i < placements.length; i++) {
+ var placement = placements[i];
+ var _basePlacement = getBasePlacement(placement);
+ var isStartVariation = getVariation(placement) === start;
+ var isVertical = ["top", bottom].indexOf(_basePlacement) >= 0;
+ var len = isVertical ? "width" : "height";
+ var overflow = detectOverflow(state, {
+ placement,
+ boundary,
+ rootBoundary,
+ altBoundary,
+ padding
+ });
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : "top";
+ if (referenceRect[len] > popperRect[len]) mainVariationSide = getOppositePlacement(mainVariationSide);
+ var altVariationSide = getOppositePlacement(mainVariationSide);
+ var checks = [];
+ if (checkMainAxis) checks.push(overflow[_basePlacement] <= 0);
+ if (checkAltAxis) checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
+ if (checks.every(function(check) {
+ return check;
+ })) {
+ firstFittingPlacement = placement;
+ makeFallbackChecks = false;
+ break;
+ }
+ checksMap.set(placement, checks);
+ }
+ if (makeFallbackChecks) {
+ var numberOfChecks = flipVariations ? 3 : 1;
+ var _loop = function _loop(_i) {
+ var fittingPlacement = placements.find(function(placement) {
+ var checks = checksMap.get(placement);
+ if (checks) return checks.slice(0, _i).every(function(check) {
+ return check;
+ });
+ });
+ if (fittingPlacement) {
+ firstFittingPlacement = fittingPlacement;
+ return "break";
+ }
+ };
+ for (var _i = numberOfChecks; _i > 0; _i--) if (_loop(_i) === "break") break;
+ }
+ if (state.placement !== firstFittingPlacement) {
+ state.modifiersData[name]._skip = true;
+ state.placement = firstFittingPlacement;
+ state.reset = true;
+ }
+ }
+ var flip_default = {
+ name: "flip",
+ enabled: true,
+ phase: "main",
+ fn: flip,
+ requiresIfExists: ["offset"],
+ data: { _skip: false }
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js
+ function getSideOffsets(overflow, rect, preventedOffsets) {
+ if (preventedOffsets === void 0) preventedOffsets = {
+ x: 0,
+ y: 0
+ };
+ return {
+ top: overflow.top - rect.height - preventedOffsets.y,
+ right: overflow.right - rect.width + preventedOffsets.x,
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
+ left: overflow.left - rect.width - preventedOffsets.x
+ };
+ }
+ function isAnySideFullyClipped(overflow) {
+ return [
+ "top",
+ right,
+ bottom,
+ left
+ ].some(function(side) {
+ return overflow[side] >= 0;
+ });
+ }
+ function hide(_ref) {
+ var state = _ref.state, name = _ref.name;
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var preventedOffsets = state.modifiersData.preventOverflow;
+ var referenceOverflow = detectOverflow(state, { elementContext: "reference" });
+ var popperAltOverflow = detectOverflow(state, { altBoundary: true });
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
+ state.modifiersData[name] = {
+ referenceClippingOffsets,
+ popperEscapeOffsets,
+ isReferenceHidden,
+ hasPopperEscaped
+ };
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
+ "data-popper-reference-hidden": isReferenceHidden,
+ "data-popper-escaped": hasPopperEscaped
+ });
+ }
+ var hide_default = {
+ name: "hide",
+ enabled: true,
+ phase: "main",
+ requiresIfExists: ["preventOverflow"],
+ fn: hide
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js
+ function distanceAndSkiddingToXY(placement, rects, offset) {
+ var basePlacement = getBasePlacement(placement);
+ var invertDistance = ["left", "top"].indexOf(basePlacement) >= 0 ? -1 : 1;
+ var _ref = typeof offset === "function" ? offset(Object.assign({}, rects, { placement })) : offset, skidding = _ref[0], distance = _ref[1];
+ skidding = skidding || 0;
+ distance = (distance || 0) * invertDistance;
+ return ["left", "right"].indexOf(basePlacement) >= 0 ? {
+ x: distance,
+ y: skidding
+ } : {
+ x: skidding,
+ y: distance
+ };
+ }
+ function offset(_ref2) {
+ var state = _ref2.state, options = _ref2.options, name = _ref2.name;
+ var _options$offset = options.offset, offset = _options$offset === void 0 ? [0, 0] : _options$offset;
+ var data = placements.reduce(function(acc, placement) {
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
+ return acc;
+ }, {});
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
+ if (state.modifiersData.popperOffsets != null) {
+ state.modifiersData.popperOffsets.x += x;
+ state.modifiersData.popperOffsets.y += y;
+ }
+ state.modifiersData[name] = data;
+ }
+ var offset_default = {
+ name: "offset",
+ enabled: true,
+ phase: "main",
+ requires: ["popperOffsets"],
+ fn: offset
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
+ function popperOffsets(_ref) {
+ var state = _ref.state, name = _ref.name;
+ state.modifiersData[name] = computeOffsets({
+ reference: state.rects.reference,
+ element: state.rects.popper,
+ strategy: "absolute",
+ placement: state.placement
+ });
+ }
+ var popperOffsets_default = {
+ name: "popperOffsets",
+ enabled: true,
+ phase: "read",
+ fn: popperOffsets,
+ data: {}
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js
+ function getAltAxis(axis) {
+ return axis === "x" ? "y" : "x";
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
+ function preventOverflow(_ref) {
+ var state = _ref.state, options = _ref.options, name = _ref.name;
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
+ var overflow = detectOverflow(state, {
+ boundary,
+ rootBoundary,
+ padding,
+ altBoundary
+ });
+ var basePlacement = getBasePlacement(state.placement);
+ var variation = getVariation(state.placement);
+ var isBasePlacement = !variation;
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
+ var altAxis = getAltAxis(mainAxis);
+ var popperOffsets = state.modifiersData.popperOffsets;
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset;
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
+ mainAxis: tetherOffsetValue,
+ altAxis: tetherOffsetValue
+ } : Object.assign({
+ mainAxis: 0,
+ altAxis: 0
+ }, tetherOffsetValue);
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
+ var data = {
+ x: 0,
+ y: 0
+ };
+ if (!popperOffsets) return;
+ if (checkMainAxis) {
+ var _offsetModifierState$;
+ var mainSide = mainAxis === "y" ? "top" : left;
+ var altSide = mainAxis === "y" ? bottom : right;
+ var len = mainAxis === "y" ? "height" : "width";
+ var offset = popperOffsets[mainAxis];
+ var min$1 = offset + overflow[mainSide];
+ var max$1 = offset - overflow[altSide];
+ var additive = tether ? -popperRect[len] / 2 : 0;
+ var minLen = variation === "start" ? referenceRect[len] : popperRect[len];
+ var maxLen = variation === "start" ? -popperRect[len] : -referenceRect[len];
+ var arrowElement = state.elements.arrow;
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
+ width: 0,
+ height: 0
+ };
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
+ var arrowPaddingMax = arrowPaddingObject[altSide];
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
+ var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
+ var tetherMax = offset + maxOffset - offsetModifierValue;
+ var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
+ popperOffsets[mainAxis] = preventedOffset;
+ data[mainAxis] = preventedOffset - offset;
+ }
+ if (checkAltAxis) {
+ var _offsetModifierState$2;
+ var _mainSide = mainAxis === "x" ? "top" : left;
+ var _altSide = mainAxis === "x" ? bottom : right;
+ var _offset = popperOffsets[altAxis];
+ var _len = altAxis === "y" ? "height" : "width";
+ var _min = _offset + overflow[_mainSide];
+ var _max = _offset - overflow[_altSide];
+ var isOriginSide = ["top", left].indexOf(basePlacement) !== -1;
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
+ popperOffsets[altAxis] = _preventedOffset;
+ data[altAxis] = _preventedOffset - _offset;
+ }
+ state.modifiersData[name] = data;
+ }
+ var preventOverflow_default = {
+ name: "preventOverflow",
+ enabled: true,
+ phase: "main",
+ fn: preventOverflow,
+ requiresIfExists: ["offset"]
+ };
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
+ function getHTMLElementScroll(element) {
+ return {
+ scrollLeft: element.scrollLeft,
+ scrollTop: element.scrollTop
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
+ function getNodeScroll(node) {
+ if (node === getWindow(node) || !isHTMLElement(node)) return getWindowScroll(node);
+ else return getHTMLElementScroll(node);
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
+ function isElementScaled(element) {
+ var rect = element.getBoundingClientRect();
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
+ return scaleX !== 1 || scaleY !== 1;
+ }
+ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
+ if (isFixed === void 0) isFixed = false;
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
+ var documentElement = getDocumentElement(offsetParent);
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
+ var scroll = {
+ scrollLeft: 0,
+ scrollTop: 0
+ };
+ var offsets = {
+ x: 0,
+ y: 0
+ };
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
+ if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) scroll = getNodeScroll(offsetParent);
+ if (isHTMLElement(offsetParent)) {
+ offsets = getBoundingClientRect(offsetParent, true);
+ offsets.x += offsetParent.clientLeft;
+ offsets.y += offsetParent.clientTop;
+ } else if (documentElement) offsets.x = getWindowScrollBarX(documentElement);
+ }
+ return {
+ x: rect.left + scroll.scrollLeft - offsets.x,
+ y: rect.top + scroll.scrollTop - offsets.y,
+ width: rect.width,
+ height: rect.height
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js
+ function order(modifiers) {
+ var map = /* @__PURE__ */ new Map();
+ var visited = /* @__PURE__ */ new Set();
+ var result = [];
+ modifiers.forEach(function(modifier) {
+ map.set(modifier.name, modifier);
+ });
+ function sort(modifier) {
+ visited.add(modifier.name);
+ [].concat(modifier.requires || [], modifier.requiresIfExists || []).forEach(function(dep) {
+ if (!visited.has(dep)) {
+ var depModifier = map.get(dep);
+ if (depModifier) sort(depModifier);
+ }
+ });
+ result.push(modifier);
+ }
+ modifiers.forEach(function(modifier) {
+ if (!visited.has(modifier.name)) sort(modifier);
+ });
+ return result;
+ }
+ function orderModifiers(modifiers) {
+ var orderedModifiers = order(modifiers);
+ return modifierPhases.reduce(function(acc, phase) {
+ return acc.concat(orderedModifiers.filter(function(modifier) {
+ return modifier.phase === phase;
+ }));
+ }, []);
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js
+ function debounce(fn) {
+ var pending;
+ return function() {
+ if (!pending) pending = new Promise(function(resolve) {
+ Promise.resolve().then(function() {
+ pending = void 0;
+ resolve(fn());
+ });
+ });
+ return pending;
+ };
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js
+ function mergeByName(modifiers) {
+ var merged = modifiers.reduce(function(merged, current) {
+ var existing = merged[current.name];
+ merged[current.name] = existing ? Object.assign({}, existing, current, {
+ options: Object.assign({}, existing.options, current.options),
+ data: Object.assign({}, existing.data, current.data)
+ }) : current;
+ return merged;
+ }, {});
+ return Object.keys(merged).map(function(key) {
+ return merged[key];
+ });
+ }
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js
+ var DEFAULT_OPTIONS = {
+ placement: "bottom",
+ modifiers: [],
+ strategy: "absolute"
+ };
+ function areValidElements() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
+ return !args.some(function(element) {
+ return !(element && typeof element.getBoundingClientRect === "function");
+ });
+ }
+ function popperGenerator(generatorOptions) {
+ if (generatorOptions === void 0) generatorOptions = {};
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
+ return function createPopper(reference, popper, options) {
+ if (options === void 0) options = defaultOptions;
+ var state = {
+ placement: "bottom",
+ orderedModifiers: [],
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
+ modifiersData: {},
+ elements: {
+ reference,
+ popper
+ },
+ attributes: {},
+ styles: {}
+ };
+ var effectCleanupFns = [];
+ var isDestroyed = false;
+ var instance = {
+ state,
+ setOptions: function setOptions(setOptionsAction) {
+ var options = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
+ cleanupModifierEffects();
+ state.options = Object.assign({}, defaultOptions, state.options, options);
+ state.scrollParents = {
+ reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
+ popper: listScrollParents(popper)
+ };
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers)));
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
+ return m.enabled;
+ });
+ runModifierEffects();
+ return instance.update();
+ },
+ forceUpdate: function forceUpdate() {
+ if (isDestroyed) return;
+ var _state$elements = state.elements, reference = _state$elements.reference, popper = _state$elements.popper;
+ if (!areValidElements(reference, popper)) return;
+ state.rects = {
+ reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === "fixed"),
+ popper: getLayoutRect(popper)
+ };
+ state.reset = false;
+ state.placement = state.options.placement;
+ state.orderedModifiers.forEach(function(modifier) {
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
+ });
+ for (var index = 0; index < state.orderedModifiers.length; index++) {
+ if (state.reset === true) {
+ state.reset = false;
+ index = -1;
+ continue;
+ }
+ var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
+ if (typeof fn === "function") state = fn({
+ state,
+ options: _options,
+ name,
+ instance
+ }) || state;
+ }
+ },
+ update: debounce(function() {
+ return new Promise(function(resolve) {
+ instance.forceUpdate();
+ resolve(state);
+ });
+ }),
+ destroy: function destroy() {
+ cleanupModifierEffects();
+ isDestroyed = true;
+ }
+ };
+ if (!areValidElements(reference, popper)) return instance;
+ instance.setOptions(options).then(function(state) {
+ if (!isDestroyed && options.onFirstUpdate) options.onFirstUpdate(state);
+ });
+ function runModifierEffects() {
+ state.orderedModifiers.forEach(function(_ref) {
+ var name = _ref.name, _ref$options = _ref.options, options = _ref$options === void 0 ? {} : _ref$options, effect = _ref.effect;
+ if (typeof effect === "function") {
+ var cleanupFn = effect({
+ state,
+ name,
+ instance,
+ options
+ });
+ effectCleanupFns.push(cleanupFn || function noopFn() {});
+ }
+ });
+ }
+ function cleanupModifierEffects() {
+ effectCleanupFns.forEach(function(fn) {
+ return fn();
+ });
+ effectCleanupFns = [];
+ }
+ return instance;
+ };
+ }
+ var createPopper$2 = /*#__PURE__*/ popperGenerator();
+ var createPopper$1 = /*#__PURE__*/ popperGenerator({ defaultModifiers: [
+ eventListeners_default,
+ popperOffsets_default,
+ computeStyles_default,
+ applyStyles_default
+ ] });
+ var createPopper = /*#__PURE__*/ popperGenerator({ defaultModifiers: [
+ eventListeners_default,
+ popperOffsets_default,
+ computeStyles_default,
+ applyStyles_default,
+ offset_default,
+ flip_default,
+ preventOverflow_default,
+ arrow_default,
+ hide_default
+ ] });
+ //#endregion
+ //#region ../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.js
+ var lib_exports = /* @__PURE__ */ __exportAll({
+ afterMain: () => afterMain,
+ afterRead: () => afterRead,
+ afterWrite: () => afterWrite,
+ applyStyles: () => applyStyles_default,
+ arrow: () => arrow_default,
+ auto: () => auto,
+ basePlacements: () => basePlacements,
+ beforeMain: () => beforeMain,
+ beforeRead: () => beforeRead,
+ beforeWrite: () => beforeWrite,
+ bottom: () => bottom,
+ clippingParents: () => clippingParents,
+ computeStyles: () => computeStyles_default,
+ createPopper: () => createPopper,
+ createPopperBase: () => createPopper$2,
+ createPopperLite: () => createPopper$1,
+ detectOverflow: () => detectOverflow,
+ end: () => "end",
+ eventListeners: () => eventListeners_default,
+ flip: () => flip_default,
+ hide: () => hide_default,
+ left: () => left,
+ main: () => main,
+ modifierPhases: () => modifierPhases,
+ offset: () => offset_default,
+ placements: () => placements,
+ popper: () => popper,
+ popperGenerator: () => popperGenerator,
+ popperOffsets: () => popperOffsets_default,
+ preventOverflow: () => preventOverflow_default,
+ read: () => read,
+ reference: () => reference,
+ right: () => right,
+ start: () => start,
+ top: () => "top",
+ variationPlacements: () => variationPlacements,
+ viewport: () => viewport,
+ write: () => write
+ });
+ //#endregion
+ //#region js/src/bootstrap/util/component-functions.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/component-functions.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var callMethod = (instance, method) => {
+ const callable = instance[method];
+ if (typeof callable === "function") callable.call(instance);
+ };
+ var enableDismissTrigger = (component, method = "hide") => {
+ const clickEvent = `click.dismiss${component.EVENT_KEY}`;
+ const name = component.NAME;
+ EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"], [data-tblr-dismiss="${name}"]`, function(event) {
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
+ if (isDisabled(this)) return;
+ const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
+ callMethod(component.getOrCreateInstance(target), method);
+ });
+ };
+ //#endregion
+ //#region js/src/bootstrap/alert.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap alert.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$17 = "alert";
+ var EVENT_KEY$12 = `.bs.alert`;
+ var EVENT_CLOSE = `close${EVENT_KEY$12}`;
+ var EVENT_CLOSED = `closed${EVENT_KEY$12}`;
+ var CLASS_NAME_FADE$5 = "fade";
+ var CLASS_NAME_SHOW$8 = "show";
+ var Alert = class extends BaseComponent {
+ static get NAME() {
+ return NAME$17;
+ }
+ close() {
+ const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
+ if (closeEvent === null || closeEvent === void 0 ? void 0 : closeEvent.defaultPrevented) return;
+ this._element.classList.remove(CLASS_NAME_SHOW$8);
+ const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
+ this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
+ }
+ _destroyElement() {
+ this._element.remove();
+ EventHandler.trigger(this._element, EVENT_CLOSED);
+ this.dispose();
+ }
+ };
+ enableDismissTrigger(Alert, "close");
+ //#endregion
+ //#region js/src/bootstrap/button.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap button.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$16 = "button";
+ var EVENT_KEY$11 = `.bs.button`;
+ var DATA_API_KEY$6 = ".data-api";
+ var CLASS_NAME_ACTIVE$4 = "active";
+ var SELECTOR_DATA_TOGGLE$6 = "[data-bs-toggle=\"button\"], [data-tblr-toggle=\"button\"]";
+ var EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$11}${DATA_API_KEY$6}`;
+ var Button = class extends BaseComponent {
+ static get NAME() {
+ return NAME$16;
+ }
+ toggle() {
+ this._element.setAttribute("aria-pressed", String(this._element.classList.toggle(CLASS_NAME_ACTIVE$4)));
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$6, (event) => {
+ var _event$target;
+ event.preventDefault();
+ const target = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.closest(SELECTOR_DATA_TOGGLE$6);
+ if (!target) return;
+ Button.getOrCreateInstance(target).toggle();
+ });
+ //#endregion
+ //#region js/src/bootstrap/util/swipe.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/swipe.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$15 = "swipe";
+ var EVENT_KEY$10 = ".bs.swipe";
+ var EVENT_TOUCHSTART = `touchstart${EVENT_KEY$10}`;
+ var EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$10}`;
+ var EVENT_TOUCHEND = `touchend${EVENT_KEY$10}`;
+ var EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$10}`;
+ var EVENT_POINTERUP = `pointerup${EVENT_KEY$10}`;
+ var POINTER_TYPE_TOUCH = "touch";
+ var POINTER_TYPE_PEN = "pen";
+ var CLASS_NAME_POINTER_EVENT = "pointer-event";
+ var SWIPE_THRESHOLD = 40;
+ var Default$14 = {
+ endCallback: null,
+ leftCallback: null,
+ rightCallback: null
+ };
+ var DefaultType$14 = {
+ endCallback: "(function|null)",
+ leftCallback: "(function|null)",
+ rightCallback: "(function|null)"
+ };
+ var Swipe = class Swipe extends Config {
+ constructor(element, config) {
+ super();
+ this._element = element;
+ if (!element || !Swipe.isSupported()) return;
+ this._config = this._getConfig(config);
+ this._deltaX = 0;
+ this._supportPointerEvents = Boolean(window.PointerEvent);
+ this._initEvents();
+ }
+ static get Default() {
+ return Default$14;
+ }
+ static get DefaultType() {
+ return DefaultType$14;
+ }
+ static get NAME() {
+ return NAME$15;
+ }
+ dispose() {
+ EventHandler.off(this._element, EVENT_KEY$10);
+ }
+ _start(event) {
+ if (!this._supportPointerEvents) {
+ this._deltaX = event.touches[0].clientX;
+ return;
+ }
+ if (this._eventIsPointerPenTouch(event)) this._deltaX = event.clientX;
+ }
+ _end(event) {
+ if (this._eventIsPointerPenTouch(event)) this._deltaX = event.clientX - this._deltaX;
+ this._handleSwipe();
+ execute(this._config.endCallback);
+ }
+ _move(event) {
+ this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
+ }
+ _handleSwipe() {
+ const absDeltaX = Math.abs(this._deltaX);
+ if (absDeltaX <= SWIPE_THRESHOLD) return;
+ const direction = absDeltaX / this._deltaX;
+ this._deltaX = 0;
+ if (!direction) return;
+ execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
+ }
+ _initEvents() {
+ if (this._supportPointerEvents) {
+ EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event));
+ EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event));
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
+ } else {
+ EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event));
+ EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event));
+ EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event));
+ }
+ }
+ _eventIsPointerPenTouch(event) {
+ return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
+ }
+ static isSupported() {
+ return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/carousel.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap carousel.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$14 = "carousel";
+ var EVENT_KEY$9 = `.bs.carousel`;
+ var DATA_API_KEY$5 = ".data-api";
+ var ARROW_LEFT_KEY$1 = "ArrowLeft";
+ var ARROW_RIGHT_KEY$1 = "ArrowRight";
+ var TOUCHEVENT_COMPAT_WAIT = 500;
+ var ORDER_NEXT = "next";
+ var ORDER_PREV = "prev";
+ var DIRECTION_LEFT = "left";
+ var DIRECTION_RIGHT = "right";
+ var EVENT_SLIDE = `slide${EVENT_KEY$9}`;
+ var EVENT_SLID = `slid${EVENT_KEY$9}`;
+ var EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$9}`;
+ var EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$9}`;
+ var EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$9}`;
+ var EVENT_DRAG_START = `dragstart${EVENT_KEY$9}`;
+ var EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$9}${DATA_API_KEY$5}`;
+ var EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;
+ var CLASS_NAME_CAROUSEL = "carousel";
+ var CLASS_NAME_ACTIVE$3 = "active";
+ var CLASS_NAME_SLIDE = "slide";
+ var CLASS_NAME_END = "carousel-item-end";
+ var CLASS_NAME_START = "carousel-item-start";
+ var CLASS_NAME_NEXT = "carousel-item-next";
+ var CLASS_NAME_PREV = "carousel-item-prev";
+ var SELECTOR_ACTIVE = ".active";
+ var SELECTOR_ITEM = ".carousel-item";
+ var SELECTOR_ACTIVE_ITEM = ".active.carousel-item";
+ var SELECTOR_ITEM_IMG = ".carousel-item img";
+ var SELECTOR_INDICATORS = ".carousel-indicators";
+ var SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to], [data-tblr-slide], [data-tblr-slide-to]";
+ var SELECTOR_DATA_RIDE = "[data-bs-ride=\"carousel\"], [data-tblr-ride=\"carousel\"]";
+ var KEY_TO_DIRECTION = {
+ [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
+ [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
+ };
+ var Default$13 = {
+ interval: 5e3,
+ keyboard: true,
+ pause: "hover",
+ ride: false,
+ touch: true,
+ wrap: true
+ };
+ var DefaultType$13 = {
+ interval: "(number|boolean)",
+ keyboard: "boolean",
+ pause: "(string|boolean)",
+ ride: "(boolean|string)",
+ touch: "boolean",
+ wrap: "boolean"
+ };
+ var Carousel = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._interval = null;
+ this._activeElement = null;
+ this._isSliding = false;
+ this.touchTimeout = null;
+ this._swipeHelper = null;
+ this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
+ this._addEventListeners();
+ if (this._config.ride === CLASS_NAME_CAROUSEL) this.cycle();
+ }
+ static get Default() {
+ return Default$13;
+ }
+ static get DefaultType() {
+ return DefaultType$13;
+ }
+ static get NAME() {
+ return NAME$14;
+ }
+ next() {
+ this._slide(ORDER_NEXT);
+ }
+ nextWhenVisible() {
+ if (!document.hidden && isVisible(this._element)) this.next();
+ }
+ prev() {
+ this._slide(ORDER_PREV);
+ }
+ pause() {
+ if (this._isSliding) triggerTransitionEnd(this._element);
+ this._clearInterval();
+ }
+ cycle() {
+ this._clearInterval();
+ this._updateInterval();
+ this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
+ }
+ _maybeEnableCycle() {
+ if (!this._config.ride) return;
+ if (this._isSliding) {
+ EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
+ return;
+ }
+ this.cycle();
+ }
+ to(index) {
+ const items = this._getItems();
+ if (index > items.length - 1 || index < 0) return;
+ if (this._isSliding) {
+ EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
+ return;
+ }
+ const activeIndex = this._getItemIndex(this._getActive());
+ if (activeIndex === index) return;
+ const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
+ this._slide(order, items[index]);
+ }
+ dispose() {
+ if (this._swipeHelper) this._swipeHelper.dispose();
+ super.dispose();
+ }
+ _configAfterMerge(config) {
+ config.defaultInterval = config.interval;
+ return config;
+ }
+ _addEventListeners() {
+ if (this._config.keyboard) EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event));
+ if (this._config.pause === "hover") {
+ EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
+ EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
+ }
+ if (this._config.touch && Swipe.isSupported()) this._addTouchEventListeners();
+ }
+ _addTouchEventListeners() {
+ for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());
+ const endCallBack = () => {
+ if (this._config.pause !== "hover") return;
+ this.pause();
+ if (this.touchTimeout) clearTimeout(this.touchTimeout);
+ this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
+ };
+ const swipeConfig = {
+ leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
+ rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
+ endCallback: endCallBack
+ };
+ this._swipeHelper = new Swipe(this._element, swipeConfig);
+ }
+ _keydown(event) {
+ if (/input|textarea/i.test(event.target.tagName)) return;
+ const direction = KEY_TO_DIRECTION[event.key];
+ if (direction) {
+ event.preventDefault();
+ this._slide(this._directionToOrder(direction));
+ }
+ }
+ _getItemIndex(element) {
+ return this._getItems().indexOf(element);
+ }
+ _setActiveIndicatorElement(index) {
+ if (!this._indicatorsElement) return;
+ const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
+ activeIndicator.classList.remove(CLASS_NAME_ACTIVE$3);
+ activeIndicator.removeAttribute("aria-current");
+ const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"], [data-tblr-slide-to="${index}"]`, this._indicatorsElement);
+ if (newActiveIndicator) {
+ newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$3);
+ newActiveIndicator.setAttribute("aria-current", "true");
+ }
+ }
+ _updateInterval() {
+ var _this$_config$default;
+ const element = this._activeElement || this._getActive();
+ if (!element) return;
+ const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval") || element.getAttribute("data-tblr-interval") || "", 10);
+ this._config.interval = elementInterval || ((_this$_config$default = this._config.defaultInterval) !== null && _this$_config$default !== void 0 ? _this$_config$default : this._config.interval);
+ }
+ _slide(order, element = null) {
+ if (this._isSliding) return;
+ const activeElement = this._getActive();
+ const isNext = order === ORDER_NEXT;
+ const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
+ if (nextElement === activeElement) return;
+ const nextElementIndex = this._getItemIndex(nextElement);
+ const triggerEvent = (eventName) => {
+ return EventHandler.trigger(this._element, eventName, {
+ relatedTarget: nextElement,
+ direction: this._orderToDirection(order),
+ from: this._getItemIndex(activeElement),
+ to: nextElementIndex
+ });
+ };
+ const slideEvent = triggerEvent(EVENT_SLIDE);
+ if (slideEvent === null || slideEvent === void 0 ? void 0 : slideEvent.defaultPrevented) return;
+ if (!activeElement || !nextElement) return;
+ const isCycling = Boolean(this._interval);
+ this.pause();
+ this._isSliding = true;
+ this._setActiveIndicatorElement(nextElementIndex);
+ this._activeElement = nextElement;
+ const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
+ const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
+ nextElement.classList.add(orderClassName);
+ reflow(nextElement);
+ activeElement.classList.add(directionalClassName);
+ nextElement.classList.add(directionalClassName);
+ const completeCallBack = () => {
+ nextElement.classList.remove(directionalClassName, orderClassName);
+ nextElement.classList.add(CLASS_NAME_ACTIVE$3);
+ activeElement.classList.remove(CLASS_NAME_ACTIVE$3, orderClassName, directionalClassName);
+ this._isSliding = false;
+ triggerEvent(EVENT_SLID);
+ };
+ this._queueCallback(completeCallBack, activeElement, this._isAnimated());
+ if (isCycling) this.cycle();
+ }
+ _isAnimated() {
+ return this._element.classList.contains(CLASS_NAME_SLIDE);
+ }
+ _getActive() {
+ return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+ }
+ _getItems() {
+ return SelectorEngine.find(SELECTOR_ITEM, this._element);
+ }
+ _clearInterval() {
+ if (this._interval) {
+ clearInterval(this._interval);
+ this._interval = null;
+ }
+ }
+ _directionToOrder(direction) {
+ if (isRTL()) return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
+ return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
+ }
+ _orderToDirection(order) {
+ if (isRTL()) return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
+ return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) {
+ const target = SelectorEngine.getElementFromSelector(this);
+ if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) return;
+ event.preventDefault();
+ const carousel = Carousel.getOrCreateInstance(target);
+ const slideIndex = this.getAttribute("data-bs-slide-to") || this.getAttribute("data-tblr-slide-to");
+ if (slideIndex) {
+ carousel.to(Number(slideIndex));
+ carousel._maybeEnableCycle();
+ return;
+ }
+ if (Manipulator.getDataAttribute(this, "slide") === "next") {
+ carousel.next();
+ carousel._maybeEnableCycle();
+ return;
+ }
+ carousel.prev();
+ carousel._maybeEnableCycle();
+ });
+ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
+ const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
+ for (const carousel of carousels) Carousel.getOrCreateInstance(carousel);
+ });
+ //#endregion
+ //#region js/src/bootstrap/collapse.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap collapse.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$13 = "collapse";
+ var EVENT_KEY$8 = `.bs.collapse`;
+ var DATA_API_KEY$4 = ".data-api";
+ var EVENT_SHOW$6 = `show${EVENT_KEY$8}`;
+ var EVENT_SHOWN$6 = `shown${EVENT_KEY$8}`;
+ var EVENT_HIDE$6 = `hide${EVENT_KEY$8}`;
+ var EVENT_HIDDEN$6 = `hidden${EVENT_KEY$8}`;
+ var EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;
+ var CLASS_NAME_SHOW$7 = "show";
+ var CLASS_NAME_COLLAPSE = "collapse";
+ var CLASS_NAME_COLLAPSING = "collapsing";
+ var CLASS_NAME_COLLAPSED = "collapsed";
+ var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
+ var CLASS_NAME_HORIZONTAL = "collapse-horizontal";
+ var WIDTH = "width";
+ var HEIGHT = "height";
+ var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing";
+ var SELECTOR_DATA_TOGGLE$5 = "[data-bs-toggle=\"collapse\"], [data-tblr-toggle=\"collapse\"]";
+ var Default$12 = {
+ parent: null,
+ toggle: true
+ };
+ var DefaultType$12 = {
+ parent: "(null|element)",
+ toggle: "boolean"
+ };
+ var Collapse = class Collapse extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._isTransitioning = false;
+ this._triggerArray = [];
+ const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$5);
+ for (const elem of toggleList) {
+ const selector = SelectorEngine.getSelectorFromElement(elem);
+ const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element);
+ if (selector !== null && filterElement.length) this._triggerArray.push(elem);
+ }
+ this._initializeChildren();
+ if (!this._config.parent) this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
+ if (this._config.toggle) this.toggle();
+ }
+ static get Default() {
+ return Default$12;
+ }
+ static get DefaultType() {
+ return DefaultType$12;
+ }
+ static get NAME() {
+ return NAME$13;
+ }
+ toggle() {
+ if (this._isShown()) this.hide();
+ else this.show();
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) return;
+ let activeChildren = [];
+ if (this._config.parent) activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => Collapse.getOrCreateInstance(element, { toggle: false }));
+ if (activeChildren.length && activeChildren[0]._isTransitioning) return;
+ const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
+ if (startEvent === null || startEvent === void 0 ? void 0 : startEvent.defaultPrevented) return;
+ for (const activeInstance of activeChildren) activeInstance.hide();
+ const dimension = this._getDimension();
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
+ this._element.style[dimension] = "0";
+ 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$7);
+ this._element.style[dimension] = "";
+ EventHandler.trigger(this._element, EVENT_SHOWN$6);
+ };
+ const scrollSize = `scroll${dimension[0].toUpperCase() + dimension.slice(1)}`;
+ this._queueCallback(complete, this._element, true);
+ this._element.style[dimension] = `${this._element[scrollSize]}px`;
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) return;
+ const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
+ if (startEvent === null || startEvent === void 0 ? void 0 : startEvent.defaultPrevented) return;
+ const dimension = this._getDimension();
+ this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
+ reflow(this._element);
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+ for (const trigger of this._triggerArray) {
+ const element = SelectorEngine.getElementFromSelector(trigger);
+ if (element && !this._isShown(element)) this._addAriaAndCollapsedClass([trigger], false);
+ }
+ this._isTransitioning = true;
+ const complete = () => {
+ this._isTransitioning = false;
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
+ this._element.classList.add(CLASS_NAME_COLLAPSE);
+ EventHandler.trigger(this._element, EVENT_HIDDEN$6);
+ };
+ this._element.style[dimension] = "";
+ this._queueCallback(complete, this._element, true);
+ }
+ _isShown(element = this._element) {
+ return element.classList.contains(CLASS_NAME_SHOW$7);
+ }
+ _configAfterMerge(config) {
+ config.toggle = Boolean(config.toggle);
+ config.parent = getElement(config.parent);
+ return config;
+ }
+ _getDimension() {
+ return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
+ }
+ _initializeChildren() {
+ if (!this._config.parent) return;
+ const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$5);
+ for (const element of children) {
+ const selected = SelectorEngine.getElementFromSelector(element);
+ if (selected) this._addAriaAndCollapsedClass([element], this._isShown(selected));
+ }
+ }
+ _getFirstLevelChildren(selector) {
+ const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
+ return SelectorEngine.find(selector, this._config.parent).filter((element) => !children.includes(element));
+ }
+ _addAriaAndCollapsedClass(triggerArray, isOpen) {
+ if (!triggerArray.length) return;
+ for (const element of triggerArray) {
+ element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
+ element.setAttribute("aria-expanded", String(isOpen));
+ }
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$5, function(event) {
+ const { delegateTarget } = event;
+ if (event.target.tagName === "A" || delegateTarget && delegateTarget.tagName === "A") event.preventDefault();
+ for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) Collapse.getOrCreateInstance(element, { toggle: false }).toggle();
+ });
+ //#endregion
+ //#region js/src/bootstrap/dropdown.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap dropdown.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$12 = "dropdown";
+ var EVENT_KEY$7 = `.bs.dropdown`;
+ var DATA_API_KEY$3 = ".data-api";
+ var ESCAPE_KEY$2 = "Escape";
+ var TAB_KEY$1 = "Tab";
+ var ARROW_UP_KEY$1 = "ArrowUp";
+ var ARROW_DOWN_KEY$1 = "ArrowDown";
+ var RIGHT_MOUSE_BUTTON = 2;
+ var EVENT_HIDE$5 = `hide${EVENT_KEY$7}`;
+ var EVENT_HIDDEN$5 = `hidden${EVENT_KEY$7}`;
+ var EVENT_SHOW$5 = `show${EVENT_KEY$7}`;
+ var EVENT_SHOWN$5 = `shown${EVENT_KEY$7}`;
+ var EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$7}${DATA_API_KEY$3}`;
+ var EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$7}${DATA_API_KEY$3}`;
+ var EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$7}${DATA_API_KEY$3}`;
+ var CLASS_NAME_SHOW$6 = "show";
+ var CLASS_NAME_DROPUP = "dropup";
+ var CLASS_NAME_DROPEND = "dropend";
+ var CLASS_NAME_DROPSTART = "dropstart";
+ var CLASS_NAME_DROPUP_CENTER = "dropup-center";
+ var CLASS_NAME_DROPDOWN_CENTER = "dropdown-center";
+ var SELECTOR_DATA_TOGGLE$4 = "[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled), [data-tblr-toggle=\"dropdown\"]:not(.disabled):not(:disabled)";
+ var SELECTOR_DATA_TOGGLE_SHOWN = `.${CLASS_NAME_SHOW$6}[data-bs-toggle="dropdown"], .${CLASS_NAME_SHOW$6}[data-tblr-toggle="dropdown"]`;
+ var SELECTOR_MENU = ".dropdown-menu";
+ var SELECTOR_NAVBAR = ".navbar";
+ var SELECTOR_NAVBAR_NAV = ".navbar-nav";
+ var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
+ var PLACEMENT_TOP = isRTL() ? "top-end" : "top-start";
+ var PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end";
+ var PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start";
+ var PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end";
+ var PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start";
+ var PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start";
+ var PLACEMENT_TOPCENTER = "top";
+ var PLACEMENT_BOTTOMCENTER = "bottom";
+ var Default$11 = {
+ autoClose: true,
+ boundary: "clippingParents",
+ display: "dynamic",
+ offset: [0, 2],
+ popperConfig: null,
+ reference: "toggle"
+ };
+ var DefaultType$11 = {
+ autoClose: "(boolean|string)",
+ boundary: "(string|element)",
+ display: "string",
+ offset: "(array|string|function)",
+ popperConfig: "(null|object|function)",
+ reference: "(string|element|object)"
+ };
+ var Dropdown = class Dropdown extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._popper = null;
+ this._parent = this._element.parentNode;
+ this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
+ this._inNavbar = this._detectNavbar();
+ }
+ static get Default() {
+ return Default$11;
+ }
+ static get DefaultType() {
+ return DefaultType$11;
+ }
+ static get NAME() {
+ return NAME$12;
+ }
+ toggle() {
+ this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (isDisabled(this._element) || this._isShown()) return;
+ const relatedTarget = { relatedTarget: this._element };
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
+ if (showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) return;
+ this._createPopper();
+ if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) for (const element of Array.from(document.body.children)) EventHandler.on(element, "mouseover", noop);
+ this._element.focus();
+ this._element.setAttribute("aria-expanded", "true");
+ this._menu.classList.add(CLASS_NAME_SHOW$6);
+ this._element.classList.add(CLASS_NAME_SHOW$6);
+ EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
+ }
+ hide() {
+ if (isDisabled(this._element) || !this._isShown()) return;
+ const relatedTarget = { relatedTarget: this._element };
+ this._completeHide(relatedTarget);
+ }
+ dispose() {
+ if (this._popper) this._popper.destroy();
+ super.dispose();
+ }
+ update() {
+ this._inNavbar = this._detectNavbar();
+ if (this._popper) this._popper.update();
+ }
+ _completeHide(relatedTarget) {
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
+ if (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented) return;
+ if ("ontouchstart" in document.documentElement) for (const element of Array.from(document.body.children)) EventHandler.off(element, "mouseover", noop);
+ if (this._popper) this._popper.destroy();
+ this._menu.classList.remove(CLASS_NAME_SHOW$6);
+ this._element.classList.remove(CLASS_NAME_SHOW$6);
+ this._element.setAttribute("aria-expanded", "false");
+ Manipulator.removeDataAttribute(this._menu, "popper");
+ EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
+ }
+ _getConfig(config) {
+ const merged = super._getConfig(config);
+ if (typeof merged.reference === "object" && !isElement$1(merged.reference) && typeof merged.reference.getBoundingClientRect !== "function") throw new TypeError(`${NAME$12.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+ return merged;
+ }
+ _createPopper() {
+ if (typeof lib_exports === "undefined") throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");
+ let referenceElement = this._element;
+ if (this._config.reference === "parent") referenceElement = this._parent;
+ else if (isElement$1(this._config.reference)) referenceElement = getElement(this._config.reference);
+ else if (typeof this._config.reference === "object") referenceElement = this._config.reference;
+ const popperConfig = this._getPopperConfig();
+ this._popper = createPopper(referenceElement, this._menu, popperConfig);
+ }
+ _isShown() {
+ return this._menu.classList.contains(CLASS_NAME_SHOW$6);
+ }
+ _getPlacement() {
+ const parentDropdown = this._parent;
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) return PLACEMENT_RIGHT;
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) return PLACEMENT_LEFT;
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) return PLACEMENT_TOPCENTER;
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) return PLACEMENT_BOTTOMCENTER;
+ const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end";
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
+ return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
+ }
+ _detectNavbar() {
+ return this._element.closest(SELECTOR_NAVBAR) !== null;
+ }
+ _getOffset() {
+ const { offset } = this._config;
+ if (typeof offset === "string") return offset.split(",").map((value) => Number.parseInt(value, 10));
+ if (typeof offset === "function") return (popperData) => offset(popperData, this._element);
+ return offset;
+ }
+ _getPopperConfig() {
+ const defaultBsPopperConfig = {
+ placement: this._getPlacement(),
+ modifiers: [{
+ name: "preventOverflow",
+ options: { boundary: this._config.boundary }
+ }, {
+ name: "offset",
+ options: { offset: this._getOffset() }
+ }]
+ };
+ if (this._inNavbar || this._config.display === "static") {
+ Manipulator.setDataAttribute(this._menu, "popper", "static");
+ defaultBsPopperConfig.modifiers = [{
+ name: "applyStyles",
+ enabled: false
+ }];
+ }
+ const popperConfig = execute(this._config.popperConfig, [void 0, defaultBsPopperConfig]);
+ return _objectSpread2(_objectSpread2({}, defaultBsPopperConfig), typeof popperConfig === "object" && popperConfig !== null ? popperConfig : {});
+ }
+ _selectMenuItem({ key, target }) {
+ const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));
+ if (!items.length) return;
+ const activeElement = target;
+ getNextActiveElement(items, activeElement, key === ARROW_DOWN_KEY$1, !items.includes(activeElement)).focus();
+ }
+ static clearMenus(event) {
+ if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) return;
+ const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
+ for (const toggle of openToggles) {
+ const context = Dropdown.getInstance(toggle);
+ if (!context || context._config.autoClose === false) continue;
+ const composedPath = event.composedPath();
+ const isMenuTarget = composedPath.includes(context._menu);
+ if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) continue;
+ if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) continue;
+ const relatedTarget = { relatedTarget: context._element };
+ if (event.type === "click") relatedTarget.clickEvent = event;
+ context._completeHide(relatedTarget);
+ }
+ }
+ static dataApiKeydownHandler(event) {
+ const isInput = /input|textarea/i.test(event.target.tagName);
+ const isEscapeEvent = event.key === ESCAPE_KEY$2;
+ const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
+ if (!isUpOrDownEvent && !isEscapeEvent) return;
+ if (isInput && !isEscapeEvent) return;
+ event.preventDefault();
+ const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$4) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$4)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$4)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$4, event.delegateTarget.parentNode);
+ const instance = Dropdown.getOrCreateInstance(getToggleButton);
+ if (isUpOrDownEvent) {
+ event.stopPropagation();
+ instance.show();
+ instance._selectMenuItem(event);
+ return;
+ }
+ if (instance._isShown()) {
+ event.stopPropagation();
+ instance.hide();
+ getToggleButton.focus();
+ }
+ }
+ };
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$4, Dropdown.dataApiKeydownHandler);
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
+ EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
+ EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
+ EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$4, function(event) {
+ event.preventDefault();
+ Dropdown.getOrCreateInstance(this).toggle();
+ });
+ //#endregion
+ //#region js/src/bootstrap/util/backdrop.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/backdrop.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$11 = "backdrop";
+ var CLASS_NAME_FADE$4 = "fade";
+ var CLASS_NAME_SHOW$5 = "show";
+ var EVENT_MOUSEDOWN = `mousedown.bs.${NAME$11}`;
+ var Default$10 = {
+ className: "modal-backdrop",
+ clickCallback: null,
+ isAnimated: false,
+ isVisible: true,
+ rootElement: "body"
+ };
+ var DefaultType$10 = {
+ className: "string",
+ clickCallback: "(function|null)",
+ isAnimated: "boolean",
+ isVisible: "boolean",
+ rootElement: "(element|string)"
+ };
+ var Backdrop = class extends Config {
+ constructor(config) {
+ super();
+ this._config = this._getConfig(config);
+ this._isAppended = false;
+ this._element = null;
+ }
+ static get Default() {
+ return Default$10;
+ }
+ static get DefaultType() {
+ return DefaultType$10;
+ }
+ static get NAME() {
+ return NAME$11;
+ }
+ show(callback) {
+ if (!this._config.isVisible) {
+ execute(callback);
+ return;
+ }
+ this._append();
+ const element = this._getElement();
+ if (this._config.isAnimated) reflow(element);
+ element.classList.add(CLASS_NAME_SHOW$5);
+ this._emulateAnimation(() => {
+ execute(callback);
+ });
+ }
+ hide(callback) {
+ if (!this._config.isVisible) {
+ execute(callback);
+ return;
+ }
+ this._getElement().classList.remove(CLASS_NAME_SHOW$5);
+ this._emulateAnimation(() => {
+ this.dispose();
+ execute(callback);
+ });
+ }
+ dispose() {
+ if (!this._isAppended) return;
+ EventHandler.off(this._element, EVENT_MOUSEDOWN);
+ this._element.remove();
+ this._isAppended = false;
+ }
+ _getElement() {
+ if (!this._element) {
+ const backdrop = document.createElement("div");
+ backdrop.className = this._config.className;
+ if (this._config.isAnimated) backdrop.classList.add(CLASS_NAME_FADE$4);
+ this._element = backdrop;
+ }
+ return this._element;
+ }
+ _configAfterMerge(config) {
+ config.rootElement = getElement(config.rootElement);
+ return config;
+ }
+ _append() {
+ if (this._isAppended) return;
+ const element = this._getElement();
+ this._config.rootElement.append(element);
+ EventHandler.on(element, EVENT_MOUSEDOWN, () => {
+ execute(this._config.clickCallback);
+ });
+ this._isAppended = true;
+ }
+ _emulateAnimation(callback) {
+ executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/util/focustrap.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/focustrap.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$10 = "focustrap";
+ var EVENT_KEY$6 = `.bs.focustrap`;
+ var EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$6}`;
+ var EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$6}`;
+ var TAB_KEY = "Tab";
+ var TAB_NAV_FORWARD = "forward";
+ var TAB_NAV_BACKWARD = "backward";
+ var Default$9 = {
+ autofocus: true,
+ trapElement: null
+ };
+ var DefaultType$9 = {
+ autofocus: "boolean",
+ trapElement: "element"
+ };
+ var FocusTrap = class extends Config {
+ constructor(config) {
+ super();
+ this._config = this._getConfig(config);
+ this._isActive = false;
+ this._lastTabNavDirection = null;
+ }
+ static get Default() {
+ return Default$9;
+ }
+ static get DefaultType() {
+ return DefaultType$9;
+ }
+ static get NAME() {
+ return NAME$10;
+ }
+ activate() {
+ if (this._isActive) return;
+ if (this._config.autofocus) this._config.trapElement.focus();
+ EventHandler.off(document, EVENT_KEY$6);
+ EventHandler.on(document, EVENT_FOCUSIN$2, (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$6);
+ }
+ _handleFocusin(event) {
+ const { trapElement } = this._config;
+ if (!trapElement || event.target === document || event.target === trapElement || trapElement.contains(event.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;
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/util/scrollbar.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/scrollbar.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
+ var SELECTOR_STICKY_CONTENT = ".sticky-top";
+ var PROPERTY_PADDING = "padding-right";
+ var PROPERTY_MARGIN = "margin-right";
+ var ScrollBarHelper = class {
+ constructor() {
+ this._element = document.body;
+ }
+ getWidth() {
+ const documentWidth = document.documentElement.clientWidth;
+ return Math.abs(window.innerWidth - documentWidth);
+ }
+ hide() {
+ const width = this.getWidth();
+ this._disableOverFlow();
+ this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
+ this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
+ this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);
+ }
+ reset() {
+ this._resetElementAttributes(this._element, "overflow");
+ this._resetElementAttributes(this._element, PROPERTY_PADDING);
+ this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
+ this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
+ }
+ isOverflowing() {
+ return this.getWidth() > 0;
+ }
+ _disableOverFlow() {
+ this._saveInitialAttribute(this._element, "overflow");
+ this._element.style.overflow = "hidden";
+ }
+ _setElementAttributes(selector, styleProperty, callback) {
+ const scrollbarWidth = this.getWidth();
+ const manipulationCallBack = (element) => {
+ if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) return;
+ this._saveInitialAttribute(element, styleProperty);
+ const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
+ element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
+ };
+ this._applyManipulationCallback(selector, manipulationCallBack);
+ }
+ _saveInitialAttribute(element, styleProperty) {
+ const actualValue = element.style.getPropertyValue(styleProperty);
+ if (actualValue) Manipulator.setDataAttribute(element, styleProperty, actualValue);
+ }
+ _resetElementAttributes(selector, styleProperty) {
+ const manipulationCallBack = (element) => {
+ const value = Manipulator.getDataAttribute(element, styleProperty);
+ if (value === null) {
+ element.style.removeProperty(styleProperty);
+ return;
+ }
+ Manipulator.removeDataAttribute(element, styleProperty);
+ element.style.setProperty(styleProperty, String(value));
+ };
+ this._applyManipulationCallback(selector, manipulationCallBack);
+ }
+ _applyManipulationCallback(selector, callBack) {
+ if (isElement$1(selector)) {
+ callBack(selector);
+ return;
+ }
+ for (const sel of SelectorEngine.find(selector, this._element)) callBack(sel);
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/modal.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap modal.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$9 = "modal";
+ var EVENT_KEY$5 = `.bs.modal`;
+ var DATA_API_KEY$2 = ".data-api";
+ var ESCAPE_KEY$1 = "Escape";
+ var EVENT_HIDE$4 = `hide${EVENT_KEY$5}`;
+ var EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$5}`;
+ var EVENT_HIDDEN$4 = `hidden${EVENT_KEY$5}`;
+ var EVENT_SHOW$4 = `show${EVENT_KEY$5}`;
+ var EVENT_SHOWN$4 = `shown${EVENT_KEY$5}`;
+ var EVENT_RESIZE$1 = `resize${EVENT_KEY$5}`;
+ var EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$5}`;
+ var EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$5}`;
+ var EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$5}`;
+ var EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;
+ var CLASS_NAME_OPEN = "modal-open";
+ var CLASS_NAME_FADE$3 = "fade";
+ var CLASS_NAME_SHOW$4 = "show";
+ var CLASS_NAME_STATIC = "modal-static";
+ var OPEN_SELECTOR$1 = ".modal.show";
+ var SELECTOR_DIALOG = ".modal-dialog";
+ var SELECTOR_MODAL_BODY = ".modal-body";
+ var SELECTOR_DATA_TOGGLE$3 = "[data-bs-toggle=\"modal\"], [data-tblr-toggle=\"modal\"]";
+ var Default$8 = {
+ backdrop: true,
+ focus: true,
+ keyboard: true
+ };
+ var DefaultType$8 = {
+ backdrop: "(boolean|string)",
+ focus: "boolean",
+ keyboard: "boolean"
+ };
+ /**
+ * Class definition
+ */
+ var Modal = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
+ this._backdrop = this._initializeBackDrop();
+ this._focustrap = this._initializeFocusTrap();
+ this._isShown = false;
+ this._isTransitioning = false;
+ this._scrollBar = new ScrollBarHelper();
+ this._addEventListeners();
+ }
+ static get Default() {
+ return Default$8;
+ }
+ static get DefaultType() {
+ return DefaultType$8;
+ }
+ static get NAME() {
+ return NAME$9;
+ }
+ toggle(relatedTarget) {
+ return this._isShown ? this.hide() : this.show(relatedTarget);
+ }
+ show(relatedTarget) {
+ if (this._isShown || this._isTransitioning) return;
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { relatedTarget });
+ if (showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) return;
+ this._isShown = true;
+ this._isTransitioning = true;
+ this._scrollBar.hide();
+ document.body.classList.add(CLASS_NAME_OPEN);
+ this._adjustDialog();
+ this._backdrop.show(() => this._showElement(relatedTarget));
+ }
+ hide() {
+ if (!this._isShown || this._isTransitioning) return;
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
+ if (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented) return;
+ this._isShown = false;
+ this._isTransitioning = true;
+ this._focustrap.deactivate();
+ this._element.classList.remove(CLASS_NAME_SHOW$4);
+ this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
+ }
+ dispose() {
+ EventHandler.off(window, EVENT_KEY$5);
+ EventHandler.off(this._dialog, EVENT_KEY$5);
+ this._backdrop.dispose();
+ this._focustrap.deactivate();
+ super.dispose();
+ }
+ handleUpdate() {
+ this._adjustDialog();
+ }
+ _initializeBackDrop() {
+ return new Backdrop({
+ isVisible: Boolean(this._config.backdrop),
+ isAnimated: this._isAnimated()
+ });
+ }
+ _initializeFocusTrap() {
+ return new FocusTrap({ trapElement: this._element });
+ }
+ _showElement(relatedTarget) {
+ if (!document.body.contains(this._element)) document.body.append(this._element);
+ this._element.style.display = "block";
+ this._element.removeAttribute("aria-hidden");
+ this._element.setAttribute("aria-modal", "true");
+ this._element.setAttribute("role", "dialog");
+ this._element.scrollTop = 0;
+ const modalBody = this._dialog ? SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog) : null;
+ if (modalBody) modalBody.scrollTop = 0;
+ reflow(this._element);
+ this._element.classList.add(CLASS_NAME_SHOW$4);
+ const transitionComplete = () => {
+ if (this._config.focus) this._focustrap.activate();
+ this._isTransitioning = false;
+ EventHandler.trigger(this._element, EVENT_SHOWN$4, { relatedTarget });
+ };
+ this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
+ }
+ _addEventListeners() {
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => {
+ if (event.key !== ESCAPE_KEY$1) return;
+ if (this._config.keyboard) {
+ this.hide();
+ return;
+ }
+ this._triggerBackdropTransition();
+ });
+ EventHandler.on(window, EVENT_RESIZE$1, () => {
+ if (this._isShown && !this._isTransitioning) this._adjustDialog();
+ });
+ EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
+ EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
+ if (this._element !== event.target || this._element !== event2.target) return;
+ if (this._config.backdrop === "static") {
+ this._triggerBackdropTransition();
+ return;
+ }
+ if (this._config.backdrop) this.hide();
+ });
+ });
+ }
+ _hideModal() {
+ this._element.style.display = "none";
+ this._element.setAttribute("aria-hidden", "true");
+ this._element.removeAttribute("aria-modal");
+ this._element.removeAttribute("role");
+ this._isTransitioning = false;
+ this._backdrop.hide(() => {
+ document.body.classList.remove(CLASS_NAME_OPEN);
+ this._resetAdjustments();
+ this._scrollBar.reset();
+ EventHandler.trigger(this._element, EVENT_HIDDEN$4);
+ });
+ }
+ _isAnimated() {
+ return this._element.classList.contains(CLASS_NAME_FADE$3);
+ }
+ _triggerBackdropTransition() {
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
+ if (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented) return;
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+ const initialOverflowY = this._element.style.overflowY;
+ if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) return;
+ if (!isModalOverflowing) this._element.style.overflowY = "hidden";
+ this._element.classList.add(CLASS_NAME_STATIC);
+ this._queueCallback(() => {
+ this._element.classList.remove(CLASS_NAME_STATIC);
+ this._queueCallback(() => {
+ this._element.style.overflowY = initialOverflowY;
+ }, this._dialog);
+ }, this._dialog);
+ this._element.focus();
+ }
+ _adjustDialog() {
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+ const scrollbarWidth = this._scrollBar.getWidth();
+ const isBodyOverflowing = scrollbarWidth > 0;
+ if (isBodyOverflowing && !isModalOverflowing) {
+ const property = isRTL() ? "paddingLeft" : "paddingRight";
+ this._element.style[property] = `${scrollbarWidth}px`;
+ }
+ if (!isBodyOverflowing && isModalOverflowing) {
+ const property = isRTL() ? "paddingRight" : "paddingLeft";
+ this._element.style[property] = `${scrollbarWidth}px`;
+ }
+ }
+ _resetAdjustments() {
+ this._element.style.paddingLeft = "";
+ this._element.style.paddingRight = "";
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$3, function(event) {
+ const target = SelectorEngine.getElementFromSelector(this);
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
+ if (!target) return;
+ EventHandler.one(target, EVENT_SHOW$4, (showEvent) => {
+ if (showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) return;
+ EventHandler.one(target, EVENT_HIDDEN$4, () => {
+ if (isVisible(this)) this.focus();
+ });
+ });
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
+ if (alreadyOpen) Modal.getInstance(alreadyOpen).hide();
+ Modal.getOrCreateInstance(target).toggle(this);
+ });
+ enableDismissTrigger(Modal);
+ //#endregion
+ //#region js/src/bootstrap/offcanvas.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap offcanvas.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$8 = "offcanvas";
+ var EVENT_KEY$4 = `.bs.offcanvas`;
+ var DATA_API_KEY$1 = ".data-api";
+ var EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$4}${DATA_API_KEY$1}`;
+ var ESCAPE_KEY = "Escape";
+ var CLASS_NAME_SHOW$3 = "show";
+ var CLASS_NAME_SHOWING$1 = "showing";
+ var CLASS_NAME_HIDING = "hiding";
+ var CLASS_NAME_BACKDROP = "offcanvas-backdrop";
+ var OPEN_SELECTOR = ".offcanvas.show";
+ var EVENT_SHOW$3 = `show${EVENT_KEY$4}`;
+ var EVENT_SHOWN$3 = `shown${EVENT_KEY$4}`;
+ var EVENT_HIDE$3 = `hide${EVENT_KEY$4}`;
+ var EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$4}`;
+ var EVENT_HIDDEN$3 = `hidden${EVENT_KEY$4}`;
+ var EVENT_RESIZE = `resize${EVENT_KEY$4}`;
+ var EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$4}${DATA_API_KEY$1}`;
+ var EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$4}`;
+ var SELECTOR_DATA_TOGGLE$2 = "[data-bs-toggle=\"offcanvas\"], [data-tblr-toggle=\"offcanvas\"]";
+ var Default$7 = {
+ backdrop: true,
+ keyboard: true,
+ scroll: false
+ };
+ var DefaultType$7 = {
+ backdrop: "(boolean|string)",
+ keyboard: "boolean",
+ scroll: "boolean"
+ };
+ /**
+ * Class definition
+ */
+ var Offcanvas = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._isShown = false;
+ this._backdrop = this._initializeBackDrop();
+ this._focustrap = this._initializeFocusTrap();
+ this._addEventListeners();
+ }
+ static get Default() {
+ return Default$7;
+ }
+ static get DefaultType() {
+ return DefaultType$7;
+ }
+ static get NAME() {
+ return NAME$8;
+ }
+ toggle(relatedTarget) {
+ return this._isShown ? this.hide() : this.show(relatedTarget);
+ }
+ show(relatedTarget) {
+ if (this._isShown) return;
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { relatedTarget });
+ if (showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) return;
+ this._isShown = true;
+ this._backdrop.show();
+ if (!this._config.scroll) new ScrollBarHelper().hide();
+ this._element.setAttribute("aria-modal", "true");
+ this._element.setAttribute("role", "dialog");
+ this._element.classList.add(CLASS_NAME_SHOWING$1);
+ const completeCallBack = () => {
+ if (!this._config.scroll || this._config.backdrop) this._focustrap.activate();
+ this._element.classList.add(CLASS_NAME_SHOW$3);
+ this._element.classList.remove(CLASS_NAME_SHOWING$1);
+ EventHandler.trigger(this._element, EVENT_SHOWN$3, { relatedTarget });
+ };
+ this._queueCallback(completeCallBack, this._element, true);
+ }
+ hide() {
+ if (!this._isShown) return;
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
+ if (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented) return;
+ this._focustrap.deactivate();
+ this._element.blur();
+ this._isShown = false;
+ this._element.classList.add(CLASS_NAME_HIDING);
+ this._backdrop.hide();
+ const completeCallback = () => {
+ this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
+ this._element.removeAttribute("aria-modal");
+ this._element.removeAttribute("role");
+ if (!this._config.scroll) new ScrollBarHelper().reset();
+ EventHandler.trigger(this._element, EVENT_HIDDEN$3);
+ };
+ this._queueCallback(completeCallback, this._element, true);
+ }
+ dispose() {
+ this._backdrop.dispose();
+ this._focustrap.deactivate();
+ super.dispose();
+ }
+ _initializeBackDrop() {
+ const clickCallback = () => {
+ if (this._config.backdrop === "static") {
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+ return;
+ }
+ this.hide();
+ };
+ const isBackdropVisible = Boolean(this._config.backdrop);
+ return new Backdrop({
+ className: CLASS_NAME_BACKDROP,
+ isVisible: isBackdropVisible,
+ isAnimated: true,
+ rootElement: this._element.parentNode,
+ clickCallback: isBackdropVisible ? clickCallback : null
+ });
+ }
+ _initializeFocusTrap() {
+ return new FocusTrap({ trapElement: this._element });
+ }
+ _addEventListeners() {
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
+ if (event.key !== ESCAPE_KEY) return;
+ if (this._config.keyboard) {
+ this.hide();
+ return;
+ }
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+ });
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$2, function(event) {
+ const target = SelectorEngine.getElementFromSelector(this);
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
+ if (!target) return;
+ if (isDisabled(this)) return;
+ EventHandler.one(target, EVENT_HIDDEN$3, () => {
+ if (isVisible(this)) this.focus();
+ });
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
+ if (alreadyOpen && alreadyOpen !== target) Offcanvas.getInstance(alreadyOpen).hide();
+ Offcanvas.getOrCreateInstance(target).toggle(this);
+ });
+ EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
+ for (const selector of SelectorEngine.find(OPEN_SELECTOR)) Offcanvas.getOrCreateInstance(selector).show();
+ });
+ EventHandler.on(window, EVENT_RESIZE, () => {
+ for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) if (getComputedStyle(element).position !== "fixed") Offcanvas.getOrCreateInstance(element).hide();
+ });
+ enableDismissTrigger(Offcanvas);
+ var DefaultAllowlist = {
+ "*": [
+ "class",
+ "dir",
+ "id",
+ "lang",
+ "role",
+ /^aria-[\w-]*$/i
+ ],
+ "a": [
+ "target",
+ "href",
+ "title",
+ "rel"
+ ],
+ "area": [],
+ "b": [],
+ "br": [],
+ "col": [],
+ "code": [],
+ "dd": [],
+ "div": [],
+ "dl": [],
+ "dt": [],
+ "em": [],
+ "hr": [],
+ "h1": [],
+ "h2": [],
+ "h3": [],
+ "h4": [],
+ "h5": [],
+ "h6": [],
+ "i": [],
+ "img": [
+ "src",
+ "srcset",
+ "alt",
+ "title",
+ "width",
+ "height"
+ ],
+ "li": [],
+ "ol": [],
+ "p": [],
+ "pre": [],
+ "s": [],
+ "small": [],
+ "span": [],
+ "sub": [],
+ "sup": [],
+ "strong": [],
+ "u": [],
+ "ul": []
+ };
+ var uriAttributes = /* @__PURE__ */ new Set([
+ "background",
+ "cite",
+ "href",
+ "itemtype",
+ "longdesc",
+ "poster",
+ "src",
+ "xlink:href"
+ ]);
+ var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
+ var allowedAttribute = (attribute, allowedAttributeList) => {
+ const attributeName = attribute.nodeName.toLowerCase();
+ if (allowedAttributeList.includes(attributeName)) {
+ if (uriAttributes.has(attributeName)) return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
+ return true;
+ }
+ return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName));
+ };
+ function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
+ if (!unsafeHtml.length) return unsafeHtml;
+ if (sanitizeFunction && typeof sanitizeFunction === "function") return sanitizeFunction(unsafeHtml);
+ const createdDocument = new window.DOMParser().parseFromString(unsafeHtml, "text/html");
+ const elements = Array.from(createdDocument.body.querySelectorAll("*"));
+ for (const element of elements) {
+ const elementName = element.nodeName.toLowerCase();
+ if (!Object.keys(allowList).includes(elementName)) {
+ element.remove();
+ continue;
+ }
+ const attributeList = Array.from(element.attributes);
+ const allowedAttributes = [...allowList["*"] || [], ...allowList[elementName] || []];
+ for (const attribute of attributeList) if (!allowedAttribute(attribute, allowedAttributes)) element.removeAttribute(attribute.nodeName);
+ }
+ return createdDocument.body.innerHTML;
+ }
+ //#endregion
+ //#region js/src/bootstrap/util/template-factory.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/template-factory.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$7 = "TemplateFactory";
+ var Default$6 = {
+ allowList: DefaultAllowlist,
+ content: {},
+ extraClass: "",
+ html: false,
+ sanitize: true,
+ sanitizeFn: null,
+ template: ""
+ };
+ var DefaultType$6 = {
+ allowList: "object",
+ content: "object",
+ extraClass: "(string|function)",
+ html: "boolean",
+ sanitize: "boolean",
+ sanitizeFn: "(null|function)",
+ template: "string"
+ };
+ var DefaultContentType = {
+ entry: "(string|element|function|null)",
+ selector: "(string|element)"
+ };
+ var TemplateFactory = class extends Config {
+ constructor(config) {
+ super();
+ this._config = this._getConfig(config);
+ }
+ static get Default() {
+ return Default$6;
+ }
+ static get DefaultType() {
+ return DefaultType$6;
+ }
+ static get NAME() {
+ return NAME$7;
+ }
+ getContent() {
+ return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(content) {
+ this._checkContent(content);
+ this._config.content = _objectSpread2(_objectSpread2({}, this._config.content), content);
+ return this;
+ }
+ toHtml() {
+ const templateWrapper = document.createElement("div");
+ templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [selector, text] of Object.entries(this._config.content)) this._setContent(templateWrapper, text, selector);
+ const template = templateWrapper.children[0];
+ const extraClass = this._resolvePossibleFunction(this._config.extraClass);
+ if (extraClass) template.classList.add(...extraClass.split(" "));
+ return template;
+ }
+ _typeCheckConfig(config) {
+ super._typeCheckConfig(config);
+ this._checkContent(config.content);
+ }
+ _checkContent(arg) {
+ for (const [selector, content] of Object.entries(arg)) super._typeCheckConfig({
+ selector,
+ entry: content
+ }, DefaultContentType);
+ }
+ _setContent(template, content, selector) {
+ const templateElement = SelectorEngine.findOne(selector, template);
+ if (!templateElement) return;
+ content = this._resolvePossibleFunction(content);
+ if (!content) {
+ templateElement.remove();
+ return;
+ }
+ if (isElement$1(content)) {
+ this._putElementInTemplate(getElement(content), templateElement);
+ return;
+ }
+ if (this._config.html) {
+ templateElement.innerHTML = this._maybeSanitize(content);
+ return;
+ }
+ templateElement.textContent = content;
+ }
+ _maybeSanitize(arg) {
+ return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
+ }
+ _resolvePossibleFunction(arg) {
+ return execute(arg, [void 0, this]);
+ }
+ _putElementInTemplate(element, templateElement) {
+ if (this._config.html) {
+ templateElement.innerHTML = "";
+ templateElement.append(element);
+ return;
+ }
+ templateElement.textContent = element.textContent;
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/tooltip.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap tooltip.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$6 = "tooltip";
+ var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set([
+ "sanitize",
+ "allowList",
+ "sanitizeFn"
+ ]);
+ var CLASS_NAME_FADE$2 = "fade";
+ var CLASS_NAME_MODAL = "modal";
+ var CLASS_NAME_SHOW$2 = "show";
+ var SELECTOR_TOOLTIP_INNER = ".tooltip-inner";
+ var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
+ var EVENT_MODAL_HIDE = "hide.bs.modal";
+ var TRIGGER_HOVER = "hover";
+ var TRIGGER_FOCUS = "focus";
+ var TRIGGER_CLICK = "click";
+ var TRIGGER_MANUAL = "manual";
+ var EVENT_HIDE$2 = "hide";
+ var EVENT_HIDDEN$2 = "hidden";
+ var EVENT_SHOW$2 = "show";
+ var EVENT_SHOWN$2 = "shown";
+ var EVENT_INSERTED = "inserted";
+ var EVENT_CLICK$2 = "click";
+ var EVENT_FOCUSIN$1 = "focusin";
+ var EVENT_FOCUSOUT$1 = "focusout";
+ var EVENT_MOUSEENTER = "mouseenter";
+ var EVENT_MOUSELEAVE = "mouseleave";
+ var AttachmentMap = {
+ AUTO: "auto",
+ TOP: "top",
+ RIGHT: isRTL() ? "left" : "right",
+ BOTTOM: "bottom",
+ LEFT: isRTL() ? "right" : "left"
+ };
+ var Default$5 = {
+ allowList: DefaultAllowlist,
+ animation: true,
+ boundary: "clippingParents",
+ container: false,
+ customClass: "",
+ delay: 0,
+ fallbackPlacements: [
+ "top",
+ "right",
+ "bottom",
+ "left"
+ ],
+ html: false,
+ offset: [0, 6],
+ placement: "top",
+ popperConfig: null,
+ sanitize: true,
+ sanitizeFn: null,
+ selector: false,
+ template: "",
+ title: "",
+ trigger: "hover focus"
+ };
+ var DefaultType$5 = {
+ allowList: "object",
+ animation: "boolean",
+ boundary: "(string|element)",
+ container: "(string|element|boolean)",
+ customClass: "(string|function)",
+ delay: "(number|object)",
+ fallbackPlacements: "array",
+ html: "boolean",
+ offset: "(array|string|function)",
+ placement: "(string|function)",
+ popperConfig: "(null|object|function)",
+ sanitize: "boolean",
+ sanitizeFn: "(null|function)",
+ selector: "(string|boolean)",
+ template: "string",
+ title: "(string|element|function)",
+ trigger: "string"
+ };
+ /**
+ * Class definition
+ */
+ var Tooltip = class extends BaseComponent {
+ constructor(element, config) {
+ if (typeof lib_exports === "undefined") throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");
+ super(element, config);
+ this._isEnabled = true;
+ this._timeout = 0;
+ this._isHovered = null;
+ this._activeTrigger = {};
+ this._popper = null;
+ this._templateFactory = null;
+ this._newContent = null;
+ this.tip = null;
+ this._hideModalHandler = () => {
+ if (this._element) this.hide();
+ };
+ this._setListeners();
+ if (!this._config.selector) this._fixTitle();
+ }
+ static get Default() {
+ return Default$5;
+ }
+ static get DefaultType() {
+ return DefaultType$5;
+ }
+ static get NAME() {
+ return NAME$6;
+ }
+ enable() {
+ this._isEnabled = true;
+ }
+ disable() {
+ this._isEnabled = false;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ if (!this._isEnabled) return;
+ if (this._isShown()) {
+ this._leave();
+ return;
+ }
+ this._enter();
+ }
+ dispose() {
+ clearTimeout(this._timeout);
+ EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+ if (this._element.getAttribute("data-bs-original-title") || this._element.getAttribute("data-tblr-original-title")) this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title") || this._element.getAttribute("data-tblr-original-title") || "");
+ this._disposePopper();
+ super.dispose();
+ }
+ show() {
+ if (this._element.style.display === "none") throw new Error("Please use show on visible elements");
+ if (!(this._isWithContent() && this._isEnabled)) return;
+ const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
+ const isInTheDom = (findShadowRoot(this._element) || this._element.ownerDocument.documentElement).contains(this._element);
+ if ((showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) || !isInTheDom) return;
+ this._disposePopper();
+ const tip = this._getTipElement();
+ this._element.setAttribute("aria-describedby", tip.getAttribute("id"));
+ const { container } = this._config;
+ if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
+ container.append(tip);
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
+ }
+ this._popper = this._createPopper(tip);
+ tip.classList.add(CLASS_NAME_SHOW$2);
+ if ("ontouchstart" in document.documentElement) for (const element of Array.from(document.body.children)) EventHandler.on(element, "mouseover", noop);
+ const complete = () => {
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
+ if (this._isHovered === false) this._leave();
+ this._isHovered = false;
+ };
+ this._queueCallback(complete, this.tip, this._isAnimated());
+ }
+ hide() {
+ if (!this._isShown()) return;
+ const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
+ if (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented) return;
+ this._getTipElement().classList.remove(CLASS_NAME_SHOW$2);
+ if ("ontouchstart" in document.documentElement) for (const element of Array.from(document.body.children)) EventHandler.off(element, "mouseover", noop);
+ this._activeTrigger[TRIGGER_CLICK] = false;
+ this._activeTrigger[TRIGGER_FOCUS] = false;
+ this._activeTrigger[TRIGGER_HOVER] = false;
+ this._isHovered = null;
+ const complete = () => {
+ if (this._isWithActiveTrigger()) return;
+ if (!this._isHovered) this._disposePopper();
+ this._element.removeAttribute("aria-describedby");
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
+ };
+ this._queueCallback(complete, this.tip, this._isAnimated());
+ }
+ update() {
+ if (this._popper) this._popper.update();
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ if (!this.tip) this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
+ return this.tip;
+ }
+ _createTipElement(content) {
+ const tip = this._getTemplateFactory(content).toHtml();
+ if (!tip) return null;
+ tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
+ tip.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const tipId = getUID(this.constructor.NAME).toString();
+ tip.setAttribute("id", tipId);
+ if (this._isAnimated()) tip.classList.add(CLASS_NAME_FADE$2);
+ return tip;
+ }
+ setContent(content) {
+ this._newContent = content;
+ if (this._isShown()) {
+ this._disposePopper();
+ this.show();
+ }
+ }
+ _getTemplateFactory(content) {
+ if (this._templateFactory) this._templateFactory.changeContent(content);
+ else this._templateFactory = new TemplateFactory(_objectSpread2(_objectSpread2({}, this._config), {}, {
+ content,
+ extraClass: this._resolvePossibleFunction(this._config.customClass)
+ }));
+ return this._templateFactory;
+ }
+ _getContentForTemplate() {
+ return { [SELECTOR_TOOLTIP_INNER]: this._getTitle() };
+ }
+ _getTitle() {
+ return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title") || this._element.getAttribute("data-tblr-original-title") || "";
+ }
+ _initializeOnDelegatedTarget(event) {
+ return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
+ }
+ _isAnimated() {
+ return this._config.animation || this.tip !== null && this.tip.classList.contains(CLASS_NAME_FADE$2);
+ }
+ _isShown() {
+ return this.tip !== null && this.tip.classList.contains(CLASS_NAME_SHOW$2);
+ }
+ _createPopper(tip) {
+ const attachment = AttachmentMap[execute(this._config.placement, [
+ this,
+ tip,
+ this._element
+ ]).toUpperCase()];
+ return createPopper(this._element, tip, this._getPopperConfig(attachment));
+ }
+ _getOffset() {
+ const { offset } = this._config;
+ if (typeof offset === "string") return offset.split(",").map((value) => Number.parseInt(value, 10));
+ if (typeof offset === "function") return (popperData) => offset(popperData, this._element);
+ return offset;
+ }
+ _resolvePossibleFunction(arg) {
+ return execute(arg, [this._element, this._element]);
+ }
+ _getPopperConfig(attachment) {
+ const defaultBsPopperConfig = {
+ placement: attachment,
+ modifiers: [
+ {
+ name: "flip",
+ options: { fallbackPlacements: this._config.fallbackPlacements }
+ },
+ {
+ name: "offset",
+ options: { offset: this._getOffset() }
+ },
+ {
+ name: "preventOverflow",
+ options: { boundary: this._config.boundary }
+ },
+ {
+ name: "arrow",
+ options: { element: `.${this.constructor.NAME}-arrow` }
+ },
+ {
+ name: "preSetPlacement",
+ enabled: true,
+ phase: "beforeMain",
+ fn: (data) => {
+ this._getTipElement().setAttribute("data-popper-placement", data.state.placement);
+ }
+ }
+ ]
+ };
+ const popperConfig = execute(this._config.popperConfig, [void 0, defaultBsPopperConfig]);
+ return _objectSpread2(_objectSpread2({}, defaultBsPopperConfig), typeof popperConfig === "object" && popperConfig !== null ? popperConfig : {});
+ }
+ _setListeners() {
+ const triggers = this._config.trigger.split(" ");
+ for (const trigger of triggers) if (trigger === "click") EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$2), this._config.selector, (event) => {
+ const context = this._initializeOnDelegatedTarget(event);
+ context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
+ context.toggle();
+ });
+ else if (trigger !== TRIGGER_MANUAL) {
+ const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
+ const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
+ EventHandler.on(this._element, eventIn, this._config.selector, (event) => {
+ const context = this._initializeOnDelegatedTarget(event);
+ context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
+ context._enter();
+ });
+ EventHandler.on(this._element, eventOut, this._config.selector, (event) => {
+ const context = this._initializeOnDelegatedTarget(event);
+ context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
+ context._leave();
+ });
+ }
+ EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const title = this._element.getAttribute("title");
+ if (!title) return;
+ if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) this._element.setAttribute("aria-label", title);
+ this._element.setAttribute("data-bs-original-title", title);
+ this._element.removeAttribute("title");
+ }
+ _enter() {
+ if (this._isShown() || this._isHovered) {
+ this._isHovered = true;
+ return;
+ }
+ this._isHovered = true;
+ this._setTimeout(() => {
+ if (this._isHovered) this.show();
+ }, this._getDelay().show);
+ }
+ _leave() {
+ if (this._isWithActiveTrigger()) return;
+ this._isHovered = false;
+ this._setTimeout(() => {
+ if (!this._isHovered) this.hide();
+ }, this._getDelay().hide);
+ }
+ _getDelay() {
+ const { delay } = this._config;
+ return typeof delay === "number" ? {
+ show: delay,
+ hide: delay
+ } : delay;
+ }
+ _setTimeout(handler, timeout) {
+ clearTimeout(this._timeout);
+ this._timeout = setTimeout(handler, timeout);
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(true);
+ }
+ _getConfig(config) {
+ const dataAttributes = Manipulator.getDataAttributes(this._element);
+ for (const dataAttribute of Object.keys(dataAttributes)) if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) delete dataAttributes[dataAttribute];
+ let merged = _objectSpread2(_objectSpread2({}, dataAttributes), typeof config === "object" && config ? config : {});
+ merged = this._mergeConfigObj(merged);
+ merged = this._configAfterMerge(merged);
+ this._typeCheckConfig(merged);
+ return merged;
+ }
+ _configAfterMerge(config) {
+ config.container = config.container === false ? document.body : getElement(config.container);
+ if (typeof config.delay === "number") config.delay = {
+ show: config.delay,
+ hide: config.delay
+ };
+ const raw = config;
+ if (typeof raw.title === "number") raw.title = raw.title.toString();
+ if (typeof raw.content === "number") raw.content = raw.content.toString();
+ return config;
+ }
+ _getDelegateConfig() {
+ const config = {};
+ const defaults = this.constructor.Default;
+ for (const [key, value] of Object.entries(this._config)) if (defaults[key] !== value) config[key] = value;
+ config.selector = false;
+ config.trigger = "manual";
+ return config;
+ }
+ _disposePopper() {
+ if (this._popper) {
+ this._popper.destroy();
+ this._popper = null;
+ }
+ if (this.tip) {
+ this.tip.remove();
+ this.tip = null;
+ }
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/popover.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap popover.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$5 = "popover";
+ var SELECTOR_TITLE = ".popover-header";
+ var SELECTOR_CONTENT = ".popover-body";
+ var Default$4 = _objectSpread2(_objectSpread2({}, Tooltip.Default), {}, {
+ content: "",
+ offset: [0, 8],
+ placement: "right",
+ template: "",
+ trigger: "click"
+ });
+ var DefaultType$4 = _objectSpread2(_objectSpread2({}, Tooltip.DefaultType), {}, { content: "(null|string|element|function)" });
+ /**
+ * Class definition
+ */
+ var Popover = class extends Tooltip {
+ constructor(element, config) {
+ super(element, config);
+ }
+ static get Default() {
+ return Default$4;
+ }
+ static get DefaultType() {
+ return DefaultType$4;
+ }
+ static get NAME() {
+ return NAME$5;
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle() || this._getContent());
+ }
+ _getContentForTemplate() {
+ return {
+ [SELECTOR_TITLE]: this._getTitle(),
+ [SELECTOR_CONTENT]: this._getContent()
+ };
+ }
+ _getContent() {
+ return this._resolvePossibleFunction(this._config.content);
+ }
+ };
+ //#endregion
+ //#region js/src/bootstrap/scrollspy.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap scrollspy.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$4 = "scrollspy";
+ var EVENT_KEY$3 = `.bs.scrollspy`;
+ var DATA_API_KEY = ".data-api";
+ var EVENT_ACTIVATE = `activate${EVENT_KEY$3}`;
+ var EVENT_CLICK$1 = `click${EVENT_KEY$3}`;
+ var EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$3}${DATA_API_KEY}`;
+ var CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
+ var CLASS_NAME_ACTIVE$2 = "active";
+ var SELECTOR_DATA_SPY = "[data-bs-spy=\"scroll\"], [data-tblr-spy=\"scroll\"]";
+ var SELECTOR_TARGET_LINKS = "[href]";
+ var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
+ var SELECTOR_NAV_LINKS = ".nav-link";
+ var SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, .nav-item > ${SELECTOR_NAV_LINKS}, .list-group-item`;
+ var SELECTOR_DROPDOWN = ".dropdown";
+ var SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle";
+ var Default$3 = {
+ offset: null,
+ rootMargin: "0px 0px -25%",
+ smoothScroll: false,
+ target: null,
+ threshold: [
+ .1,
+ .5,
+ 1
+ ]
+ };
+ var DefaultType$3 = {
+ offset: "(number|null)",
+ rootMargin: "string",
+ smoothScroll: "boolean",
+ target: "element",
+ threshold: "array"
+ };
+ var ScrollSpy = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._targetLinks = /* @__PURE__ */ new Map();
+ this._observableSections = /* @__PURE__ */ new Map();
+ this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element;
+ this._activeTarget = null;
+ this._observer = null;
+ this._previousScrollData = {
+ visibleEntryTop: 0,
+ parentScrollTop: 0
+ };
+ this.refresh();
+ }
+ static get Default() {
+ return Default$3;
+ }
+ static get DefaultType() {
+ return DefaultType$3;
+ }
+ static get NAME() {
+ return NAME$4;
+ }
+ refresh() {
+ this._initializeTargetsAndObservables();
+ this._maybeEnableSmoothScroll();
+ if (this._observer) this._observer.disconnect();
+ else this._observer = this._getNewObserver();
+ for (const section of this._observableSections.values()) this._observer.observe(section);
+ }
+ dispose() {
+ this._observer.disconnect();
+ super.dispose();
+ }
+ _configAfterMerge(config) {
+ config.target = getElement(config.target) || document.body;
+ config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
+ const threshold = config.threshold;
+ if (typeof threshold === "string") config.threshold = threshold.split(",").map((value) => Number.parseFloat(value));
+ return config;
+ }
+ _maybeEnableSmoothScroll() {
+ if (!this._config.smoothScroll) return;
+ EventHandler.off(this._config.target, EVENT_CLICK$1);
+ EventHandler.on(this._config.target, EVENT_CLICK$1, SELECTOR_TARGET_LINKS, (event) => {
+ const observableSection = this._observableSections.get(event.target.hash);
+ if (observableSection) {
+ event.preventDefault();
+ const root = this._rootElement || window;
+ const height = observableSection.offsetTop - this._element.offsetTop;
+ if ("scrollTo" in root) {
+ root.scrollTo({
+ top: height,
+ behavior: "smooth"
+ });
+ return;
+ }
+ root.scrollTop = height;
+ }
+ });
+ }
+ _getNewObserver() {
+ const options = {
+ root: this._rootElement,
+ threshold: this._config.threshold,
+ rootMargin: this._config.rootMargin
+ };
+ return new IntersectionObserver((entries) => this._observerCallback(entries), options);
+ }
+ _observerCallback(entries) {
+ const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);
+ const activate = (entry) => {
+ this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
+ this._process(targetElement(entry));
+ };
+ const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
+ const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
+ this._previousScrollData.parentScrollTop = parentScrollTop;
+ for (const entry of entries) {
+ if (!entry.isIntersecting) {
+ this._activeTarget = null;
+ this._clearActiveClass(targetElement(entry));
+ continue;
+ }
+ const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
+ if (userScrollsDown && entryIsLowerThanPrevious) {
+ activate(entry);
+ if (!parentScrollTop) return;
+ continue;
+ }
+ if (!userScrollsDown && !entryIsLowerThanPrevious) activate(entry);
+ }
+ }
+ _initializeTargetsAndObservables() {
+ this._targetLinks = /* @__PURE__ */ new Map();
+ this._observableSections = /* @__PURE__ */ new Map();
+ const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
+ for (const anchor of targetLinks) {
+ if (!anchor.hash || isDisabled(anchor)) continue;
+ const observableSection = SelectorEngine.findOne(parseSelector(decodeURI(anchor.hash)), this._element);
+ if (isVisible(observableSection)) {
+ this._targetLinks.set(decodeURI(anchor.hash), anchor);
+ this._observableSections.set(anchor.hash, observableSection);
+ }
+ }
+ }
+ _process(target) {
+ if (this._activeTarget === target) return;
+ this._clearActiveClass(this._config.target);
+ this._activeTarget = target;
+ target.classList.add(CLASS_NAME_ACTIVE$2);
+ this._activateParents(target);
+ EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target });
+ }
+ _activateParents(target) {
+ if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
+ SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2);
+ return;
+ }
+ for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) item.classList.add(CLASS_NAME_ACTIVE$2);
+ }
+ _clearActiveClass(parent) {
+ parent.classList.remove(CLASS_NAME_ACTIVE$2);
+ const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$2}`, parent);
+ for (const node of activeNodes) node.classList.remove(CLASS_NAME_ACTIVE$2);
+ }
+ };
+ EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
+ for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) ScrollSpy.getOrCreateInstance(spy);
+ });
+ //#endregion
+ //#region js/src/bootstrap/tab.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap tab.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$3 = "tab";
+ var EVENT_KEY$2 = `.bs.tab`;
+ var EVENT_HIDE$1 = `hide${EVENT_KEY$2}`;
+ var EVENT_HIDDEN$1 = `hidden${EVENT_KEY$2}`;
+ var EVENT_SHOW$1 = `show${EVENT_KEY$2}`;
+ var EVENT_SHOWN$1 = `shown${EVENT_KEY$2}`;
+ var EVENT_CLICK_DATA_API = `click${EVENT_KEY$2}`;
+ var EVENT_KEYDOWN = `keydown${EVENT_KEY$2}`;
+ var EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}`;
+ var ARROW_LEFT_KEY = "ArrowLeft";
+ var ARROW_RIGHT_KEY = "ArrowRight";
+ var ARROW_UP_KEY = "ArrowUp";
+ var ARROW_DOWN_KEY = "ArrowDown";
+ var HOME_KEY = "Home";
+ var END_KEY = "End";
+ var CLASS_NAME_ACTIVE$1 = "active";
+ var CLASS_NAME_FADE$1 = "fade";
+ var CLASS_NAME_SHOW$1 = "show";
+ var CLASS_DROPDOWN = "dropdown";
+ var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
+ var SELECTOR_DROPDOWN_MENU = ".dropdown-menu";
+ var NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
+ var SELECTOR_TAB_PANEL = ".list-group, .nav, [role=\"tablist\"]";
+ var SELECTOR_OUTER = ".nav-item, .list-group-item";
+ var SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
+ var SELECTOR_DATA_TOGGLE$1 = "[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"], [data-tblr-toggle=\"tab\"], [data-tblr-toggle=\"pill\"], [data-tblr-toggle=\"list\"]";
+ var SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`;
+ var SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE$1}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE$1}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE$1}[data-bs-toggle="list"], .${CLASS_NAME_ACTIVE$1}[data-tblr-toggle="tab"], .${CLASS_NAME_ACTIVE$1}[data-tblr-toggle="pill"], .${CLASS_NAME_ACTIVE$1}[data-tblr-toggle="list"]`;
+ var Tab = class Tab extends BaseComponent {
+ constructor(element) {
+ super(element);
+ this._parent = this._element.closest(SELECTOR_TAB_PANEL);
+ if (!this._parent) return;
+ this._setInitialAttributes(this._parent, this._getChildren());
+ EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
+ }
+ static get NAME() {
+ return NAME$3;
+ }
+ show() {
+ const innerElem = this._element;
+ if (this._elemIsActive(innerElem)) return;
+ const active = this._getActiveElem();
+ const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { relatedTarget: innerElem }) : null;
+ const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { relatedTarget: active });
+ if ((showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) || (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented)) return;
+ this._deactivate(active, innerElem);
+ this._activate(innerElem, active);
+ }
+ _activate(element, relatedElem) {
+ if (!element) return;
+ element.classList.add(CLASS_NAME_ACTIVE$1);
+ this._activate(SelectorEngine.getElementFromSelector(element));
+ const complete = () => {
+ if (element.getAttribute("role") !== "tab") {
+ element.classList.add(CLASS_NAME_SHOW$1);
+ return;
+ }
+ element.removeAttribute("tabindex");
+ element.setAttribute("aria-selected", "true");
+ this._toggleDropDown(element, true);
+ EventHandler.trigger(element, EVENT_SHOWN$1, { relatedTarget: relatedElem });
+ };
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
+ }
+ _deactivate(element, relatedElem) {
+ if (!element) return;
+ element.classList.remove(CLASS_NAME_ACTIVE$1);
+ element.blur();
+ this._deactivate(SelectorEngine.getElementFromSelector(element));
+ const complete = () => {
+ if (element.getAttribute("role") !== "tab") {
+ element.classList.remove(CLASS_NAME_SHOW$1);
+ return;
+ }
+ element.setAttribute("aria-selected", "false");
+ element.setAttribute("tabindex", "-1");
+ this._toggleDropDown(element, false);
+ EventHandler.trigger(element, EVENT_HIDDEN$1, { relatedTarget: relatedElem });
+ };
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
+ }
+ _keydown(event) {
+ if (![
+ ARROW_LEFT_KEY,
+ ARROW_RIGHT_KEY,
+ ARROW_UP_KEY,
+ ARROW_DOWN_KEY,
+ HOME_KEY,
+ END_KEY
+ ].includes(event.key)) return;
+ event.stopPropagation();
+ event.preventDefault();
+ const children = this._getChildren().filter((element) => !isDisabled(element));
+ let nextActiveElement;
+ if ([HOME_KEY, END_KEY].includes(event.key)) nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
+ else {
+ const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
+ nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
+ }
+ if (nextActiveElement) {
+ nextActiveElement.focus({ preventScroll: true });
+ Tab.getOrCreateInstance(nextActiveElement).show();
+ }
+ }
+ _getChildren() {
+ return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
+ }
+ _getActiveElem() {
+ return this._getChildren().find((child) => this._elemIsActive(child)) || null;
+ }
+ _setInitialAttributes(parent, children) {
+ this._setAttributeIfNotExists(parent, "role", "tablist");
+ for (const child of children) this._setInitialAttributesOnChild(child);
+ }
+ _setInitialAttributesOnChild(child) {
+ child = this._getInnerElement(child);
+ const isActive = this._elemIsActive(child);
+ const outerElem = this._getOuterElement(child);
+ child.setAttribute("aria-selected", String(isActive));
+ if (outerElem !== child) this._setAttributeIfNotExists(outerElem, "role", "presentation");
+ if (!isActive) child.setAttribute("tabindex", "-1");
+ this._setAttributeIfNotExists(child, "role", "tab");
+ this._setInitialAttributesOnTargetPanel(child);
+ }
+ _setInitialAttributesOnTargetPanel(child) {
+ const target = SelectorEngine.getElementFromSelector(child);
+ if (!target) return;
+ this._setAttributeIfNotExists(target, "role", "tabpanel");
+ if (child.id) this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`);
+ }
+ _toggleDropDown(element, open) {
+ const outerElem = this._getOuterElement(element);
+ if (!outerElem.classList.contains(CLASS_DROPDOWN)) return;
+ const toggle = (selector, className) => {
+ const el = SelectorEngine.findOne(selector, outerElem);
+ if (el) el.classList.toggle(className, open);
+ };
+ toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE$1);
+ toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
+ outerElem.setAttribute("aria-expanded", String(open));
+ }
+ _setAttributeIfNotExists(element, attribute, value) {
+ if (!element.hasAttribute(attribute)) element.setAttribute(attribute, value);
+ }
+ _elemIsActive(elem) {
+ return elem.classList.contains(CLASS_NAME_ACTIVE$1);
+ }
+ _getInnerElement(elem) {
+ return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
+ }
+ _getOuterElement(elem) {
+ return elem.closest(SELECTOR_OUTER) || elem;
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE$1, function(event) {
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
+ if (isDisabled(this)) return;
+ Tab.getOrCreateInstance(this).show();
+ });
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
+ for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) Tab.getOrCreateInstance(element);
+ });
+ //#endregion
+ //#region js/src/bootstrap/toast.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap toast.ts
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ var NAME$2 = "toast";
+ var EVENT_KEY$1 = `.bs.toast`;
+ var EVENT_MOUSEOVER = `mouseover${EVENT_KEY$1}`;
+ var EVENT_MOUSEOUT = `mouseout${EVENT_KEY$1}`;
+ var EVENT_FOCUSIN = `focusin${EVENT_KEY$1}`;
+ var EVENT_FOCUSOUT = `focusout${EVENT_KEY$1}`;
+ var EVENT_HIDE = `hide${EVENT_KEY$1}`;
+ var EVENT_HIDDEN = `hidden${EVENT_KEY$1}`;
+ var EVENT_SHOW = `show${EVENT_KEY$1}`;
+ var EVENT_SHOWN = `shown${EVENT_KEY$1}`;
+ var CLASS_NAME_FADE = "fade";
+ var CLASS_NAME_HIDE = "hide";
+ var CLASS_NAME_SHOW = "show";
+ var CLASS_NAME_SHOWING = "showing";
+ var DefaultType$2 = {
+ animation: "boolean",
+ autohide: "boolean",
+ delay: "number"
+ };
+ var Default$2 = {
+ animation: true,
+ autohide: true,
+ delay: 5e3
+ };
+ var Toast = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._timeout = null;
+ this._hasMouseInteraction = false;
+ this._hasKeyboardInteraction = false;
+ this._setListeners();
+ }
+ static get Default() {
+ return Default$2;
+ }
+ static get DefaultType() {
+ return DefaultType$2;
+ }
+ static get NAME() {
+ return NAME$2;
+ }
+ show() {
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
+ if (showEvent === null || showEvent === void 0 ? void 0 : showEvent.defaultPrevented) return;
+ this._clearTimeout();
+ if (this._config.animation) this._element.classList.add(CLASS_NAME_FADE);
+ const complete = () => {
+ this._element.classList.remove(CLASS_NAME_SHOWING);
+ EventHandler.trigger(this._element, EVENT_SHOWN);
+ this._maybeScheduleHide();
+ };
+ this._element.classList.remove(CLASS_NAME_HIDE);
+ reflow(this._element);
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
+ this._queueCallback(complete, this._element, this._config.animation);
+ }
+ hide() {
+ if (!this.isShown()) return;
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
+ if (hideEvent === null || hideEvent === void 0 ? void 0 : hideEvent.defaultPrevented) return;
+ const complete = () => {
+ this._element.classList.add(CLASS_NAME_HIDE);
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
+ };
+ this._element.classList.add(CLASS_NAME_SHOWING);
+ this._queueCallback(complete, this._element, this._config.animation);
+ }
+ dispose() {
+ this._clearTimeout();
+ if (this.isShown()) this._element.classList.remove(CLASS_NAME_SHOW);
+ super.dispose();
+ }
+ isShown() {
+ return this._element.classList.contains(CLASS_NAME_SHOW);
+ }
+ _maybeScheduleHide() {
+ if (!this._config.autohide) return;
+ if (this._hasMouseInteraction || this._hasKeyboardInteraction) return;
+ this._timeout = setTimeout(() => {
+ this.hide();
+ }, this._config.delay);
+ }
+ _onInteraction(event, isInteracting) {
+ switch (event.type) {
+ case "mouseover":
+ case "mouseout":
+ this._hasMouseInteraction = isInteracting;
+ break;
+ case "focusin":
+ case "focusout": this._hasKeyboardInteraction = isInteracting;
+ }
+ if (isInteracting) {
+ this._clearTimeout();
+ return;
+ }
+ const nextElement = event.relatedTarget;
+ if (this._element === nextElement || this._element.contains(nextElement)) return;
+ this._maybeScheduleHide();
+ }
+ _setListeners() {
+ 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));
+ EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
+ }
+ _clearTimeout() {
+ clearTimeout(this._timeout);
+ this._timeout = null;
+ }
+ };
+ enableDismissTrigger(Toast);
+ //#endregion
+ //#region js/src/bootstrap.ts
+ var bootstrap = {
+ Alert,
+ Button,
+ Carousel,
+ Collapse,
+ Dropdown,
+ Modal,
+ Offcanvas,
+ Popover,
+ ScrollSpy,
+ Tab,
+ Toast,
+ Tooltip
+ };
+ //#endregion
+ //#region js/src/dropdown.ts
+ [].slice.call(document.querySelectorAll("[data-bs-toggle=\"dropdown\"]")).map(function(dropdownTriggerEl) {
+ return new Dropdown(dropdownTriggerEl, { boundary: dropdownTriggerEl.getAttribute("data-bs-boundary") === "viewport" ? document.documentElement : "clippingParents" });
+ });
+ //#endregion
+ //#region js/src/sidebar.ts
+ var syncSidebarToggles = (folded) => {
+ for (const toggle of document.querySelectorAll("[data-bs-toggle=\"sidebar-folded\"]")) toggle.setAttribute("aria-pressed", String(folded));
+ };
+ var sidebarIsFolded = () => {
+ var _document$documentEle;
+ return ((_document$documentEle = document.documentElement.getAttribute("data-bs-sidebar")) !== null && _document$documentEle !== void 0 ? _document$documentEle : "").startsWith("folded") || !!document.querySelector(".navbar-vertical.navbar-folded, .navbar-vertical.navbar-folded-hover");
+ };
+ var hideSidebarDropdowns = (except) => {
+ for (const toggle of document.querySelectorAll(".navbar-vertical [data-bs-toggle=\"dropdown\"][aria-expanded=\"true\"]")) if (toggle !== except) {
+ var _Dropdown$getInstance;
+ (_Dropdown$getInstance = Dropdown.getInstance(toggle)) === null || _Dropdown$getInstance === void 0 || _Dropdown$getInstance.hide();
+ }
+ };
+ document.addEventListener("click", (event) => {
+ if (!sidebarIsFolded()) return;
+ const target = event.target;
+ if (target.closest(".navbar-vertical .dropdown-menu")) return;
+ hideSidebarDropdowns(target.closest(".navbar-vertical [data-bs-toggle=\"dropdown\"]"));
+ });
+ document.addEventListener("mouseleave", (event) => {
+ const target = event.target;
+ if (!(target instanceof Element) || !target.matches(".navbar-vertical")) return;
+ if (document.documentElement.getAttribute("data-bs-sidebar") === "folded-hover" || target.classList.contains("navbar-folded-hover")) hideSidebarDropdowns();
+ }, true);
+ document.addEventListener("DOMContentLoaded", () => {
+ var _document$documentEle2;
+ const folded = ((_document$documentEle2 = document.documentElement.getAttribute("data-bs-sidebar")) !== null && _document$documentEle2 !== void 0 ? _document$documentEle2 : "").startsWith("folded");
+ syncSidebarToggles(folded);
+ if (folded) for (const menu of document.querySelectorAll(".navbar-vertical .dropdown-menu.show")) {
+ var _menu$parentElement;
+ menu.classList.remove("show");
+ (_menu$parentElement = menu.parentElement) === null || _menu$parentElement === void 0 || (_menu$parentElement = _menu$parentElement.querySelector("[data-bs-toggle=\"dropdown\"]")) === null || _menu$parentElement === void 0 || _menu$parentElement.setAttribute("aria-expanded", "false");
+ }
+ });
+ document.addEventListener("click", (event) => {
+ var _html$getAttribute;
+ if (!event.target.closest("[data-bs-toggle=\"sidebar-folded\"]")) return;
+ const html = document.documentElement;
+ const willFold = !((_html$getAttribute = html.getAttribute("data-bs-sidebar")) !== null && _html$getAttribute !== void 0 ? _html$getAttribute : "").startsWith("folded");
+ if (willFold) html.setAttribute("data-bs-sidebar", "folded-hover");
+ else html.removeAttribute("data-bs-sidebar");
+ localStorage.setItem("tabler-sidebar", willFold ? "folded-hover" : "default");
+ syncSidebarToggles(willFold);
+ hideSidebarDropdowns();
+ document.dispatchEvent(new CustomEvent("tabler:sidebar-folded", { detail: { folded: willFold } }));
+ });
+ //#endregion
+ //#region js/src/tooltip.ts
+ [].slice.call(document.querySelectorAll("[data-bs-toggle=\"tooltip\"]")).map(function(tooltipTriggerEl) {
+ var _tooltipTriggerEl$get;
+ return new Tooltip(tooltipTriggerEl, {
+ delay: {
+ show: 50,
+ hide: 50
+ },
+ html: tooltipTriggerEl.getAttribute("data-bs-html") === "true",
+ placement: (_tooltipTriggerEl$get = tooltipTriggerEl.getAttribute("data-bs-placement")) !== null && _tooltipTriggerEl$get !== void 0 ? _tooltipTriggerEl$get : "auto"
+ });
+ });
+ //#endregion
+ //#region js/src/popover.ts
+ [].slice.call(document.querySelectorAll("[data-bs-toggle=\"popover\"]")).map(function(popoverTriggerEl) {
+ var _popoverTriggerEl$get;
+ return new Popover(popoverTriggerEl, {
+ delay: {
+ show: 50,
+ hide: 50
+ },
+ html: popoverTriggerEl.getAttribute("data-bs-html") === "true",
+ placement: (_popoverTriggerEl$get = popoverTriggerEl.getAttribute("data-bs-placement")) !== null && _popoverTriggerEl$get !== void 0 ? _popoverTriggerEl$get : "auto"
+ });
+ });
+ //#endregion
+ //#region js/src/switch-icon.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Tabler switch-icon.ts
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME$1 = "switch-icon";
+ var EVENT_KEY = `.${`bs.${NAME$1}`}`;
+ var EVENT_CLICK = `click${EVENT_KEY}`;
+ var EVENT_CHANGE = `change${EVENT_KEY}`;
+ var CLASS_NAME_ACTIVE = "active";
+ var SELECTOR_DATA_TOGGLE = `[data-bs-toggle="${NAME$1}"], [data-tblr-toggle="${NAME$1}"]`;
+ var Default$1 = {};
+ var DefaultType$1 = {};
+ /**
+ * Class definition
+ *
+ * A toggle button that swaps between two icons. The state is the `active`
+ * class, mirrored in `aria-pressed`.
+ */
+ var SwitchIcon = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ if (!this._element) return;
+ if (!this._element.hasAttribute("aria-pressed")) this._element.setAttribute("aria-pressed", String(this.isActive));
+ EventHandler.on(this._element, EVENT_CLICK, (event) => {
+ event.stopPropagation();
+ this.toggle();
+ });
+ }
+ static get Default() {
+ return Default$1;
+ }
+ static get DefaultType() {
+ return DefaultType$1;
+ }
+ static get NAME() {
+ return NAME$1;
+ }
+ get isActive() {
+ return this._element.classList.contains(CLASS_NAME_ACTIVE);
+ }
+ toggle(force) {
+ const active = this._element.classList.toggle(CLASS_NAME_ACTIVE, force);
+ this._element.setAttribute("aria-pressed", String(active));
+ EventHandler.trigger(this._element, EVENT_CHANGE, { active });
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) SwitchIcon.getOrCreateInstance(element);
+ //#endregion
+ //#region js/src/tab.ts
+ var EnableActivationTabsFromLocationHash = () => {
+ const locationHash = window.location.hash;
+ if (locationHash) [].slice.call(document.querySelectorAll("[data-bs-toggle=\"tab\"]")).filter((tab) => tab.hash === locationHash).map((tab) => {
+ new Tab(tab).show();
+ });
+ };
+ EnableActivationTabsFromLocationHash();
+ //#endregion
+ //#region js/src/toast.ts
+ [].slice.call(document.querySelectorAll("[data-bs-toggle=\"toast\"]")).map(function(toastTriggerEl) {
+ const target = toastTriggerEl.getAttribute("data-bs-target");
+ if (target === null) return;
+ const toastEl = new Toast(target);
+ toastTriggerEl.addEventListener("click", () => {
+ toastEl.show();
+ });
+ });
+ //#endregion
+ //#region js/src/sortable.ts
+ /**
+ * --------------------------------------------------------------------------
+ * Tabler sortable.ts
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
+ * Constants
+ */
+ var NAME = "sortable";
+ var DATA_ATTRIBUTE = `data-${NAME}`;
+ var SELECTOR_DATA_SORTABLE = `[${DATA_ATTRIBUTE}]`;
+ var Default = {};
+ var DefaultType = {};
+ /**
+ * Class definition
+ *
+ * Wraps SortableJS (https://sortablejs.github.io/Sortable/), loaded separately
+ * as `window.Sortable`. Without the plugin the component is inert. Options come
+ * from the `data-sortable` attribute as JSON, or from the config object.
+ */
+ var Sortable = class extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._sortable = null;
+ if (!this._element || !window.Sortable) return;
+ this._sortable = new window.Sortable(this._element, this._config);
+ }
+ static get Default() {
+ return Default;
+ }
+ static get DefaultType() {
+ return DefaultType;
+ }
+ static get NAME() {
+ return NAME;
+ }
+ /** The SortableJS instance, for options the component does not expose. */
+ get sortable() {
+ return this._sortable;
+ }
+ toArray() {
+ var _this$_sortable$toArr, _this$_sortable;
+ return (_this$_sortable$toArr = (_this$_sortable = this._sortable) === null || _this$_sortable === void 0 ? void 0 : _this$_sortable.toArray()) !== null && _this$_sortable$toArr !== void 0 ? _this$_sortable$toArr : [];
+ }
+ sort(order, useAnimation) {
+ var _this$_sortable2;
+ (_this$_sortable2 = this._sortable) === null || _this$_sortable2 === void 0 || _this$_sortable2.sort(order, useAnimation);
+ }
+ dispose() {
+ var _this$_sortable3;
+ (_this$_sortable3 = this._sortable) === null || _this$_sortable3 === void 0 || _this$_sortable3.destroy();
+ super.dispose();
+ }
+ _mergeConfigObj(config, element) {
+ let dataOptions = {};
+ const raw = element === null || element === void 0 ? void 0 : element.getAttribute(DATA_ATTRIBUTE);
+ if (raw) try {
+ dataOptions = JSON.parse(raw);
+ } catch (_unused) {}
+ return super._mergeConfigObj(_objectSpread2(_objectSpread2({}, dataOptions), config), element);
+ }
+ };
+ /**
+ * Data API implementation
+ */
+ for (const element of SelectorEngine.find(SELECTOR_DATA_SORTABLE)) Sortable.getOrCreateInstance(element);
+ //#endregion
+ exports.Alert = Alert;
+ exports.Autosize = Autosize;
+ exports.Button = Button;
+ exports.Carousel = Carousel;
+ exports.Collapse = Collapse;
+ exports.CountUp = CountUp;
+ exports.Dropdown = Dropdown;
+ exports.InputMask = InputMask;
+ exports.Modal = Modal;
+ exports.Offcanvas = Offcanvas;
+ exports.Popover = Popover;
+ Object.defineProperty(exports, "Popper", {
+ enumerable: true,
+ get: function() {
+ return lib_exports;
+ }
+ });
+ exports.ScrollSpy = ScrollSpy;
+ exports.Sortable = Sortable;
+ exports.SwitchIcon = SwitchIcon;
+ exports.Tab = Tab;
+ exports.Toast = Toast;
+ exports.Tooltip = Tooltip;
+ exports.bootstrap = bootstrap;
+});
+
+//# sourceMappingURL=tabler.js.map
\ No newline at end of file
diff --git a/storage/public/dist/js/tabler.js.map b/storage/public/dist/js/tabler.js.map
index b016b6c..677cf6e 100644
--- a/storage/public/dist/js/tabler.js.map
+++ b/storage/public/dist/js/tabler.js.map
@@ -1 +1 @@
-{"version":3,"file":"tabler.js","sources":["../../js/src/autosize.ts","../../js/src/countup.ts","../../js/src/input-mask.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper-lite.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.js","../../js/src/bootstrap/dom/data.ts","../../js/src/bootstrap/dom/event-handler.ts","../../js/src/bootstrap/dom/manipulator.ts","../../js/src/bootstrap/util/index.ts","../../js/src/bootstrap/util/config.ts","../../js/src/bootstrap/base-component.ts","../../js/src/bootstrap/dom/selector-engine.ts","../../js/src/bootstrap/util/component-functions.ts","../../js/src/bootstrap/alert.ts","../../js/src/bootstrap/button.ts","../../js/src/bootstrap/util/swipe.ts","../../js/src/bootstrap/carousel.ts","../../js/src/bootstrap/collapse.ts","../../js/src/bootstrap/dropdown.ts","../../js/src/bootstrap/util/backdrop.ts","../../js/src/bootstrap/util/focustrap.ts","../../js/src/bootstrap/util/scrollbar.ts","../../js/src/bootstrap/modal.ts","../../js/src/bootstrap/offcanvas.ts","../../js/src/bootstrap/util/sanitizer.ts","../../js/src/bootstrap/util/template-factory.ts","../../js/src/bootstrap/tooltip.ts","../../js/src/bootstrap/popover.ts","../../js/src/bootstrap/scrollspy.ts","../../js/src/bootstrap/tab.ts","../../js/src/bootstrap/toast.ts","../../js/src/bootstrap.ts","../../js/src/dropdown.ts","../../js/src/tooltip.ts","../../js/src/popover.ts","../../js/src/switch-icon.ts","../../js/src/tab.ts","../../js/src/toast.ts","../../js/src/sortable.ts","../../js/src/tabler.ts"],"sourcesContent":["// Autosize plugin\nconst autosizeElements: NodeListOf = document.querySelectorAll('[data-bs-toggle=\"autosize\"]')\n\nif (autosizeElements.length) {\n autosizeElements.forEach(function (element: HTMLElement) {\n if (window.autosize) {\n window.autosize(element)\n }\n })\n}\n","const countupElements: NodeListOf = document.querySelectorAll('[data-countup]')\n\nif (countupElements.length) {\n countupElements.forEach(function (element: HTMLElement) {\n let options: Record = {}\n try {\n const dataOptions = element.getAttribute('data-countup') ? JSON.parse(element.getAttribute('data-countup')!) : {}\n options = Object.assign(\n {\n enableScrollSpy: true,\n },\n dataOptions,\n )\n } catch (error) {\n // ignore invalid JSON\n }\n\n const value = parseInt(element.innerHTML, 10)\n\n if (window.countUp && window.countUp.CountUp) {\n const countUp = new window.countUp.CountUp(element, value, options)\n if (!countUp.error) {\n countUp.start()\n }\n }\n })\n}\n","// Input mask plugin\n\nconst maskElementList: HTMLElement[] = [].slice.call(document.querySelectorAll('[data-mask]'))\nmaskElementList.map(function (maskEl: HTMLElement) {\n window.IMask &&\n new window.IMask(maskEl, {\n mask: maskEl.dataset.mask,\n lazy: maskEl.dataset['mask-visible'] === 'true',\n })\n})\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst elementMap = new Map>()\n\nconst Data = {\n set(element: HTMLElement, key: string, instance: object): void {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)!\n\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: HTMLElement, key: string): T | null {\n if (elementMap.has(element)) {\n return (elementMap.get(element)!.get(key) as T) || null\n }\n\n return null\n },\n\n remove(element: HTMLElement, key: string): void {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)!\n\n instanceMap.delete(key)\n\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ntype EventCallback = (this: EventTarget, ...args: unknown[]) => void\n\ninterface BootstrapHandler {\n (event: Event): void\n oneOff?: boolean\n delegationSelector?: string | null\n callable?: EventCallback\n uidEvent?: string | number\n}\n\ninterface EventableElement extends EventTarget {\n uidEvent?: string | number\n}\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry: Record>> = {}\nlet uidEvent = 1\nconst customEvents: Record = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\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\nfunction makeEventUid(element: EventableElement | EventCallback, uid?: string): string | number {\n return (uid && `${uid}::${uidEvent++}`) || (element as EventableElement).uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element: EventableElement): Record> {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element: EventTarget, fn: EventCallback): BootstrapHandler {\n return function handler(event: Event) {\n hydrateObj(event, { delegateTarget: element })\n\n if ((handler as BootstrapHandler).oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n } as BootstrapHandler\n}\n\nfunction bootstrapDelegationHandler(element: EventTarget, selector: string, fn: EventCallback): BootstrapHandler {\n return function handler(this: EventTarget, event: Event) {\n const domElements = (element as HTMLElement).querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = (target as HTMLElement).parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if ((handler as BootstrapHandler).oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n } as BootstrapHandler\n}\n\nfunction findHandler(\n events: Record,\n callable: EventCallback,\n delegationSelector: string | null = null\n): BootstrapHandler | undefined {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(\n originalTypeEvent: string,\n handler: string | EventCallback | undefined,\n delegationFunction: EventCallback | undefined\n): [boolean, EventCallback, string] {\n const isDelegated = typeof handler === 'string'\n const callable = isDelegated ? delegationFunction! : (handler || delegationFunction)!\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(\n element: EventTarget | null,\n originalTypeEvent: string,\n handler: string | EventCallback | undefined,\n delegationFunction: EventCallback | undefined,\n oneOff: boolean\n): void {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = (fn: EventCallback): EventCallback => {\n return function (this: EventTarget, event: unknown) {\n const evt = event as MouseEvent & { delegateTarget: HTMLElement }\n if (!evt.relatedTarget || (evt.relatedTarget !== evt.delegateTarget && !evt.delegateTarget.contains(evt.relatedTarget as Node))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler as string : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn: BootstrapHandler = isDelegated ?\n bootstrapDelegationHandler(element, handler as string, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler as string : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(\n element: EventTarget,\n events: Record>,\n typeEvent: string,\n handler: EventCallback,\n delegationSelector?: string | null\n): void {\n const fn = findHandler(events[typeEvent], handler, delegationSelector ?? null)\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(\n element: EventTarget,\n events: Record>,\n typeEvent: string,\n namespace: string\n): void {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable!, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event: string): string {\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element: EventTarget | null, event: string, handler: string | EventCallback, delegationFunction?: EventCallback): void {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element: EventTarget | null, event: string, handler: string | EventCallback, delegationFunction?: EventCallback): void {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element: EventTarget | null, originalTypeEvent: string, handler?: string | EventCallback, delegationFunction?: EventCallback): void {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler as string : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable!, event.delegationSelector)\n }\n }\n },\n\n trigger(element: EventTarget | null, event: string, args?: Record): Event | null {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n\n element.dispatchEvent(evt)\n\n return evt\n }\n}\n\nfunction hydrateObj(obj: T, meta: Record = {}): T {\n for (const [key, value] of Object.entries(meta)) {\n try {\n (obj as Record)[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ntype DataValue = string | number | boolean | null | Record\n\nfunction normalizeData(value: string): DataValue {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key: string): string {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst PREFIXES = ['tblr', 'bs'] as const\n\nconst Manipulator = {\n setDataAttribute(element: HTMLElement, key: string, value: string): void {\n element.setAttribute(`data-tblr-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element: HTMLElement, key: string): void {\n for (const prefix of PREFIXES) {\n element.removeAttribute(`data-${prefix}-${normalizeDataKey(key)}`)\n }\n },\n\n getDataAttributes(element: HTMLElement | null): Record {\n if (!element) {\n return {}\n }\n\n const attributes: Record = {}\n\n for (const prefix of PREFIXES) {\n const keys = Object.keys(element.dataset).filter(key => key.startsWith(prefix) && !key.startsWith(`${prefix}Config`))\n\n for (const key of keys) {\n let pureKey = key.replace(new RegExp(`^${prefix}`), '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n if (!(pureKey in attributes)) {\n attributes[pureKey] = normalizeData(element.dataset[key]!)\n }\n }\n }\n\n return attributes\n },\n\n getDataAttribute(element: HTMLElement, key: string): DataValue {\n for (const prefix of PREFIXES) {\n const value = element.getAttribute(`data-${prefix}-${normalizeDataKey(key)}`)\n if (value !== null) {\n return normalizeData(value)\n }\n }\n\n return null\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\nconst parseSelector = (selector: string): string => {\n if (selector && window.CSS && window.CSS.escape) {\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\nconst toType = (object: unknown): string => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)![1].toLowerCase()\n}\n\nconst getUID = (prefix: string): string => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = (element: HTMLElement): number => {\n if (!element) {\n return 0\n }\n\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\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: HTMLElement): void => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = (object: unknown): object is HTMLElement => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n return typeof (object as HTMLElement).nodeType !== 'undefined'\n}\n\nconst getElement = (object: unknown): HTMLElement | null => {\n if (isElement(object)) {\n return object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = (element: HTMLElement): boolean => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = (element: HTMLElement | null | undefined): boolean => {\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 ('disabled' in element && typeof element.disabled !== 'undefined') {\n return Boolean(element.disabled)\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = (element: Node): ShadowRoot | null => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\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 if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = (): void => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = (element: HTMLElement): void => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst isRTL = (): boolean => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback: unknown, args: unknown[] = [], defaultValue: unknown = possibleCallback): unknown => {\n return typeof possibleCallback === 'function' ? possibleCallback.call(args[0], ...args.slice(1)) : defaultValue\n}\n\nconst executeAfterTransition = (callback: () => void, transitionElement: HTMLElement, waitForTransition = true): void => {\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 }: Event): void => {\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\nconst getNextActiveElement = (list: T[], activeElement: T, shouldGetNext: boolean, isCycleAllowed: boolean): T => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\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 execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\nimport type { ComponentConfig, ComponentConfigType, ConfigStatic } from '../types'\n\nclass Config {\n static get Default(): ComponentConfig {\n return {}\n }\n\n static get DefaultType(): ComponentConfigType {\n return {}\n }\n\n static get NAME(): string {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config?: ComponentConfig): ComponentConfig {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config: ComponentConfig): ComponentConfig {\n return config\n }\n\n _mergeConfigObj(config?: ComponentConfig, element?: HTMLElement): ComponentConfig {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element!, 'config') : {}\n const ctor = this.constructor as unknown as ConfigStatic\n\n return {\n ...ctor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element!) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config: ComponentConfig, configTypes?: ComponentConfigType): void {\n const ctor = this.constructor as unknown as ConfigStatic\n const types = configTypes || ctor.DefaultType\n\n for (const [property, expectedTypes] of Object.entries(types)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${ctor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config'\nimport { executeAfterTransition, getElement } from './util/index.js'\nimport type { BaseComponentStatic, ComponentConfig, ElementSelector } from './types'\n\nconst VERSION = '5.3.8'\n\nclass BaseComponent extends Config {\n _element!: HTMLElement\n _config!: ComponentConfig\n\n constructor(element: ElementSelector, config?: ComponentConfig) {\n super()\n\n const resolved = getElement(element)\n if (!resolved) {\n return\n }\n\n this._element = resolved\n this._config = this._getConfig(config)\n\n const ctor = this.constructor as unknown as BaseComponentStatic\n Data.set(this._element, ctor.DATA_KEY, this)\n }\n\n dispose(): void {\n const ctor = this.constructor as unknown as BaseComponentStatic\n Data.remove(this._element, ctor.DATA_KEY)\n EventHandler.off(this._element, ctor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n (this as Record)[propertyName] = null\n }\n }\n\n _queueCallback(callback: () => void, element: HTMLElement, isAnimated = true): void {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config?: ComponentConfig): ComponentConfig {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n static getInstance(element: ElementSelector): BaseComponent | null {\n return Data.get(getElement(element)!, this.DATA_KEY)\n }\n\n static getOrCreateInstance(element: ElementSelector, config: ComponentConfig = {}): BaseComponent {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION(): string {\n return VERSION\n }\n\n static get DATA_KEY(): string {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY(): string {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name: string): string {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index'\n\nconst getSelector = (element: HTMLElement): string | null => {\n let selector = element.getAttribute('data-tblr-target') || element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n find(selector: string, element: Element = document.documentElement): HTMLElement[] {\n return Array.from(element.querySelectorAll(selector))\n },\n\n findOne(selector: string, element: Element = document.documentElement): HTMLElement | null {\n return element.querySelector(selector)\n },\n\n children(element: HTMLElement, selector: string): HTMLElement[] {\n return Array.from(element.children).filter(child => child.matches(selector)) as HTMLElement[]\n },\n\n parents(element: HTMLElement, selector: string): HTMLElement[] {\n const parents: HTMLElement[] = []\n let ancestor = element.parentNode && (element.parentNode as HTMLElement).closest(selector)\n\n while (ancestor) {\n parents.push(ancestor as HTMLElement)\n ancestor = ancestor.parentNode && (ancestor.parentNode as HTMLElement).closest(selector)\n }\n\n return parents\n },\n\n prev(element: HTMLElement, selector: string): HTMLElement[] {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous as HTMLElement]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element: HTMLElement, selector: string): HTMLElement[] {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next as HTMLElement]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element: HTMLElement): HTMLElement[] {\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 getSelectorFromElement(element: HTMLElement): string | null {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element: HTMLElement): HTMLElement | null {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element: HTMLElement): HTMLElement[] {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index'\n\ninterface DismissibleComponent {\n EVENT_KEY: string\n NAME: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getOrCreateInstance(element: HTMLElement | string | null): any\n}\n\nconst enableDismissTrigger = (component: DismissibleComponent, method = 'hide'): void => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"], [data-tblr-dismiss=\"${name}\"]`, function (this: HTMLElement, event: Event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions'\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\nclass Alert extends BaseComponent {\n static get NAME(): string {\n return NAME\n }\n\n close(): void {\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 _destroyElement(): void {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n}\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler.js'\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'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"], [data-tblr-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nclass Button extends BaseComponent {\n static get NAME(): string {\n return NAME\n }\n\n toggle(): void {\n this._element.setAttribute('aria-pressed', String(this._element.classList.toggle(CLASS_NAME_ACTIVE)))\n }\n}\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, (event: Event) => {\n event.preventDefault()\n\n const target = (event.target as HTMLElement)?.closest(SELECTOR_DATA_TOGGLE) as HTMLElement | null\n if (!target) {\n return\n }\n\n const data = Button.getOrCreateInstance(target) as Button\n data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config'\nimport { execute } from './index'\nimport type { ComponentConfig, ComponentConfigType } from '../types'\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\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 POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\ninterface SwipeConfig {\n endCallback: (() => void) | null\n leftCallback: (() => void) | null\n rightCallback: (() => void) | null\n}\n\nconst Default: SwipeConfig = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType: ComponentConfigType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\nclass Swipe extends Config {\n declare _config: SwipeConfig & ComponentConfig\n _element: HTMLElement\n _deltaX: number\n _supportPointerEvents: boolean\n\n constructor(element: HTMLElement, config?: ComponentConfig) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config) as SwipeConfig & ComponentConfig\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): ComponentConfigType {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n dispose(): void {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n _start(event: Event): void {\n if (!this._supportPointerEvents) {\n this._deltaX = (event as TouchEvent).touches[0].clientX\n return\n }\n\n if (this._eventIsPointerPenTouch(event as PointerEvent)) {\n this._deltaX = (event as PointerEvent).clientX\n }\n }\n\n _end(event: Event): void {\n if (this._eventIsPointerPenTouch(event as PointerEvent)) {\n this._deltaX = (event as PointerEvent).clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event: Event): void {\n this._deltaX = (event as TouchEvent).touches && (event as TouchEvent).touches.length > 1 ?\n 0 :\n (event as TouchEvent).touches[0].clientX - this._deltaX\n }\n\n _handleSwipe(): void {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents(): void {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, (event: Event) => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, (event: Event) => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, (event: Event) => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, (event: Event) => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, (event: Event) => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event: PointerEvent): boolean {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n static isSupported(): boolean {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport {\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index'\nimport Swipe from './util/swipe'\nimport type { ComponentConfig, ComponentConfigType } from './types'\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\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\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_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'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to], [data-tblr-slide], [data-tblr-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"], [data-tblr-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION: Record = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default: ComponentConfig = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType: ComponentConfigType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\nclass Carousel extends BaseComponent {\n _interval: ReturnType