@tabler/core 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/css/tabler-flags.css +1 -1
  2. package/dist/css/tabler-flags.css.map +1 -1
  3. package/dist/css/tabler-flags.min.css +1 -1
  4. package/dist/css/tabler-flags.min.css.map +1 -1
  5. package/dist/css/tabler-flags.rtl.css +1 -1
  6. package/dist/css/tabler-flags.rtl.css.map +1 -1
  7. package/dist/css/tabler-flags.rtl.min.css +1 -1
  8. package/dist/css/tabler-flags.rtl.min.css.map +1 -1
  9. package/dist/css/tabler-marketing.css +1 -1
  10. package/dist/css/tabler-marketing.css.map +1 -1
  11. package/dist/css/tabler-marketing.min.css +1 -1
  12. package/dist/css/tabler-marketing.min.css.map +1 -1
  13. package/dist/css/tabler-marketing.rtl.css +1 -1
  14. package/dist/css/tabler-marketing.rtl.css.map +1 -1
  15. package/dist/css/tabler-marketing.rtl.min.css +1 -1
  16. package/dist/css/tabler-marketing.rtl.min.css.map +1 -1
  17. package/dist/css/tabler-payments.css +1 -1
  18. package/dist/css/tabler-payments.css.map +1 -1
  19. package/dist/css/tabler-payments.min.css +1 -1
  20. package/dist/css/tabler-payments.min.css.map +1 -1
  21. package/dist/css/tabler-payments.rtl.css +1 -1
  22. package/dist/css/tabler-payments.rtl.css.map +1 -1
  23. package/dist/css/tabler-payments.rtl.min.css +1 -1
  24. package/dist/css/tabler-payments.rtl.min.css.map +1 -1
  25. package/dist/css/tabler-props.css +1 -1
  26. package/dist/css/tabler-props.css.map +1 -1
  27. package/dist/css/tabler-props.min.css +1 -1
  28. package/dist/css/tabler-props.min.css.map +1 -1
  29. package/dist/css/tabler-props.rtl.css +1 -1
  30. package/dist/css/tabler-props.rtl.css.map +1 -1
  31. package/dist/css/tabler-props.rtl.min.css +1 -1
  32. package/dist/css/tabler-props.rtl.min.css.map +1 -1
  33. package/dist/css/tabler-socials.css +1 -1
  34. package/dist/css/tabler-socials.css.map +1 -1
  35. package/dist/css/tabler-socials.min.css +1 -1
  36. package/dist/css/tabler-socials.min.css.map +1 -1
  37. package/dist/css/tabler-socials.rtl.css +1 -1
  38. package/dist/css/tabler-socials.rtl.css.map +1 -1
  39. package/dist/css/tabler-socials.rtl.min.css +1 -1
  40. package/dist/css/tabler-socials.rtl.min.css.map +1 -1
  41. package/dist/css/tabler-themes.css +1 -1
  42. package/dist/css/tabler-themes.css.map +1 -1
  43. package/dist/css/tabler-themes.min.css +1 -1
  44. package/dist/css/tabler-themes.min.css.map +1 -1
  45. package/dist/css/tabler-themes.rtl.css +1 -1
  46. package/dist/css/tabler-themes.rtl.css.map +1 -1
  47. package/dist/css/tabler-themes.rtl.min.css +1 -1
  48. package/dist/css/tabler-themes.rtl.min.css.map +1 -1
  49. package/dist/css/tabler-vendors.css +1 -1
  50. package/dist/css/tabler-vendors.css.map +1 -1
  51. package/dist/css/tabler-vendors.min.css +1 -1
  52. package/dist/css/tabler-vendors.min.css.map +1 -1
  53. package/dist/css/tabler-vendors.rtl.css +1 -1
  54. package/dist/css/tabler-vendors.rtl.css.map +1 -1
  55. package/dist/css/tabler-vendors.rtl.min.css +1 -1
  56. package/dist/css/tabler-vendors.rtl.min.css.map +1 -1
  57. package/dist/css/tabler.css +12 -2
  58. package/dist/css/tabler.css.map +1 -1
  59. package/dist/css/tabler.min.css +2 -2
  60. package/dist/css/tabler.min.css.map +1 -1
  61. package/dist/css/tabler.rtl.css +12 -2
  62. package/dist/css/tabler.rtl.css.map +1 -1
  63. package/dist/css/tabler.rtl.min.css +2 -2
  64. package/dist/css/tabler.rtl.min.css.map +1 -1
  65. package/dist/js/tabler-theme.esm.js +21 -6
  66. package/dist/js/tabler-theme.esm.js.map +1 -1
  67. package/dist/js/tabler-theme.esm.min.js +2 -2
  68. package/dist/js/tabler-theme.esm.min.js.map +1 -1
  69. package/dist/js/tabler-theme.js +21 -6
  70. package/dist/js/tabler-theme.js.map +1 -1
  71. package/dist/js/tabler-theme.min.js +2 -2
  72. package/dist/js/tabler-theme.min.js.map +1 -1
  73. package/dist/js/tabler.esm.js +332 -131
  74. package/dist/js/tabler.esm.js.map +1 -1
  75. package/dist/js/tabler.esm.min.js +2 -2
  76. package/dist/js/tabler.esm.min.js.map +1 -1
  77. package/dist/js/tabler.js +332 -131
  78. package/dist/js/tabler.js.map +1 -1
  79. package/dist/js/tabler.min.js +2 -2
  80. package/dist/js/tabler.min.js.map +1 -1
  81. package/dist/libs/vanilla-calendar-pro/index.js +2 -2
  82. package/dist/types/src/clipboard.d.ts +3 -0
  83. package/dist/types/src/confetti.d.ts +2 -0
  84. package/dist/types/src/countup.d.ts +2 -0
  85. package/dist/types/src/datepicker.d.ts +24 -6
  86. package/dist/types/src/input-mask.d.ts +2 -1
  87. package/dist/types/src/otp-input.d.ts +6 -2
  88. package/dist/types/src/strength.d.ts +1 -0
  89. package/dist/types/src/switch-icon.d.ts +1 -0
  90. package/js/src/autosize.ts +8 -3
  91. package/js/src/bootstrap/base-component.ts +12 -2
  92. package/js/src/bootstrap/dom/manipulator.ts +1 -1
  93. package/js/src/bootstrap/dropdown.ts +3 -1
  94. package/js/src/bootstrap/util/index.ts +14 -1
  95. package/js/src/clipboard.ts +26 -2
  96. package/js/src/confetti.ts +42 -7
  97. package/js/src/countup.ts +30 -12
  98. package/js/src/datepicker.ts +147 -27
  99. package/js/src/dropdown.ts +12 -5
  100. package/js/src/global.d.ts +4 -2
  101. package/js/src/input-mask.ts +7 -7
  102. package/js/src/otp-input.ts +99 -12
  103. package/js/src/popover.ts +13 -7
  104. package/js/src/sidebar.ts +14 -6
  105. package/js/src/sortable.ts +5 -1
  106. package/js/src/sparkline.ts +15 -6
  107. package/js/src/strength.ts +17 -4
  108. package/js/src/switch-icon.ts +15 -0
  109. package/js/src/tab.ts +17 -7
  110. package/js/src/toast.ts +19 -11
  111. package/js/src/tooltip.ts +16 -7
  112. package/js/tabler-theme.ts +28 -4
  113. package/package.json +2 -2
  114. package/scss/layout/_navbar.scss +1 -2
  115. package/scss/ui/_cards.scss +14 -2
@@ -1 +1 @@
1
- {"version":3,"file":"tabler.js","names":["effect","getComputedStyle","getComputedStyle","mathMax","min","mathMin","max","effect","getComputedStyle","hash","getComputedStyle","getComputedStyle","getComputedStyle","allPlacements","placements","min","max","mathMin","mathMax","createPopper","defaultModifiers","eventListeners","popperOffsets","computeStyles","applyStyles","createPopper","eventListeners","popperOffsets","computeStyles","applyStyles","offset","flip","preventOverflow","arrow","hide"],"sources":["../../js/src/bootstrap/dom/data.ts","../../js/src/bootstrap/util/index.ts","../../js/src/bootstrap/dom/event-handler.ts","../../js/src/bootstrap/dom/manipulator.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/autosize.ts","../../js/src/clipboard.ts","../../js/src/confetti.ts","../../js/src/countup.ts","../../js/src/datepicker.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","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.js","../../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/sidebar.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/otp-input.ts","../../js/src/sparkline.ts","../../js/src/strength.ts","../../js/src/deprecated.ts"],"sourcesContent":["/**\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<HTMLElement, Map<string, object>>()\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<T = object>(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 util/index.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport type { JQueryPluginStatic, JQueryStaticLike } from '../types'\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\nconst parseSelector = (selector: string): string => {\n if (selector && typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\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\n .call(object)\n .match(/\\s([a-z]+)/i)![1]\n .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 getjQuery = (): JQueryStaticLike | null => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks: Array<() => void> = []\n\nconst onDOMContentLoaded = (callback: () => void): void => {\n if (document.readyState === 'loading') {\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const domCallback of DOMContentLoadedCallbacks) {\n domCallback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst defineJQueryPlugin = (plugin: JQueryPluginStatic): void => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (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 = <T>(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 { defineJQueryPlugin, execute, executeAfterTransition, findShadowRoot, getElement, getjQuery, getNextActiveElement, getTransitionDurationFromElement, getUID, isDisabled, isElement, isRTL, isVisible, noop, onDOMContentLoaded, parseSelector, reflow, triggerTransitionEnd, toType }\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\nimport type { JQueryEventLike } from '../types'\n\n// `this` is the element the handler was bound to, or the delegate target\nexport type EventCallback<E extends Event = Event> = (this: HTMLElement, event: E) => void\n\nexport type DelegatedEvent<E extends Event = Event> = E & { delegateTarget: HTMLElement }\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<string | number, Record<string, Record<string | number, BootstrapHandler>>> = {}\nlet uidEvent = 1\nconst customEvents: Record<string, string> = {\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<string, Record<string | number, BootstrapHandler>> {\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 as HTMLElement, [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 as HTMLElement, [event])\n }\n }\n } as BootstrapHandler\n}\n\nfunction findHandler(events: Record<string | number, BootstrapHandler>, callable: EventCallback, delegationSelector: string | null = null): BootstrapHandler | undefined {\n return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent: string, handler: string | false | EventCallback | undefined, delegationFunction: EventCallback | undefined): [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(element: EventTarget | null, originalTypeEvent: string, handler: string | false | EventCallback | undefined, delegationFunction: EventCallback | undefined, oneOff: boolean): 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: Event) {\n const evt = event as DelegatedEvent<MouseEvent>\n if (!evt.relatedTarget || (evt.relatedTarget !== evt.delegateTarget && !evt.delegateTarget.contains(evt.relatedTarget as Node))) {\n return fn.call(this as HTMLElement, 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 ? bootstrapDelegationHandler(element, handler as string, callable) : 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(element: EventTarget, events: Record<string, Record<string | number, BootstrapHandler>>, typeEvent: string, handler: EventCallback, delegationSelector?: string | null): 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(element: EventTarget, events: Record<string, Record<string | number, BootstrapHandler>>, typeEvent: string, namespace: string): 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<E extends Event = Event>(element: EventTarget | null, event: string, handler: string | false | EventCallback<E>, delegationFunction?: EventCallback<E>): void {\n addHandler(element, event, handler as string | false | EventCallback, delegationFunction as EventCallback | undefined, false)\n },\n\n one<E extends Event = Event>(element: EventTarget | null, event: string, handler: string | false | EventCallback<E>, delegationFunction?: EventCallback<E>): void {\n addHandler(element, event, handler as string | false | EventCallback, delegationFunction as EventCallback | undefined, true)\n },\n\n off<E extends Event = Event>(element: EventTarget | null, originalTypeEvent: string, handler?: string | false | EventCallback<E>, delegationFunction?: EventCallback<E>): void {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler as string | false | EventCallback | undefined, delegationFunction as EventCallback | undefined)\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<string, unknown>): Event | null {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent: JQueryEventLike | null = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n },\n}\n\nfunction hydrateObj<T extends object>(obj: T, meta: Record<string, unknown> = {}): T {\n for (const [key, value] of Object.entries(meta)) {\n try {\n ;(obj as Record<string, unknown>)[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<string, unknown>\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<string, DataValue> {\n if (!element) {\n return {}\n }\n\n const attributes: Record<string, DataValue> = {}\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/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(`${ctor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`)\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<string, unknown>)[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 : undefined)\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\n ? selector\n .split(',')\n .map((sel) => parseSelector(sel))\n .join(',')\n : null\n}\n\nconst SelectorEngine = {\n find(selector: string, element: Element = document.documentElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(selector))\n },\n\n findOne(selector: string, element: Element = document.documentElement): HTMLElement | null {\n return element.querySelector<HTMLElement>(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 = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].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\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<string, unknown>)[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\n/**\n * Creates the component for every element that matches on page load. One\n * element with a broken config must not stop the rest of the bundle, so the\n * error is logged and the loop goes on.\n */\nconst initAll = (selector: string, Plugin: PluginComponent, filter: ((element: HTMLElement) => boolean) | null = null): void => {\n for (const element of SelectorEngine.find(selector)) {\n if (filter && !filter(element)) {\n continue\n }\n\n try {\n Plugin.getOrCreateInstance(element)\n } catch (error) {\n console.error(error)\n }\n }\n}\n\nexport { enableDismissTrigger, eventAction, eventActionOnPlugin, initAll }\n","/**\n * --------------------------------------------------------------------------\n * Tabler autosize.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = Record<string, never>\n\ntype ComponentConfigInput = Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'autosize'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_RESIZED = `resized${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {}\n\n/**\n * Class definition\n *\n * Grows a textarea with its content and shrinks it back when text is removed.\n * The height follows `scrollHeight`, so `rows` sets the starting height and\n * `max-height` caps the growth, after which the field scrolls again.\n */\n\nclass Autosize extends BaseComponent {\n declare _element: HTMLTextAreaElement\n declare _config: ComponentConfig\n _observer: ResizeObserver | null = null\n _inlineStyle = ''\n _width = 0\n _onInput = (): void => this.update()\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n this._inlineStyle = this._element.getAttribute('style') ?? ''\n this._element.style.resize = 'none'\n this._element.style.overflowY = 'hidden'\n\n // `input` is not in EventHandler's list of native events, so it is bound\n // directly.\n this._element.addEventListener('input', this._onInput)\n\n // Text wraps differently when the field changes width (a resized window,\n // a collapsing sidebar), so the height is measured again then.\n if (typeof ResizeObserver !== 'undefined') {\n this._observer = new ResizeObserver(() => {\n if (this._element.offsetWidth !== this._width) {\n this._width = this._element.offsetWidth\n this.update()\n }\n })\n this._observer.observe(this._element)\n }\n\n this.update()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n update(): void {\n const element = this._element\n if (!element.isConnected || element.offsetParent === null) {\n return\n }\n\n // Collapsing the field to measure it can move the page; the scroll\n // position is put back afterwards.\n const { scrollTop } = document.documentElement\n const style = getComputedStyle(element)\n const border = style.boxSizing === 'border-box' ? Number.parseFloat(style.borderTopWidth) + Number.parseFloat(style.borderBottomWidth) : 0\n const before = element.style.height\n\n element.style.height = 'auto'\n const height = `${element.scrollHeight + border}px`\n element.style.height = height\n\n // Past max-height the content no longer fits, so let the field scroll.\n element.style.overflowY = element.scrollHeight > element.clientHeight ? 'auto' : 'hidden'\n document.documentElement.scrollTop = scrollTop\n\n if (height !== before) {\n EventHandler.trigger(element, EVENT_RESIZED)\n }\n }\n\n dispose(): void {\n this._element.removeEventListener('input', this._onInput)\n this._observer?.disconnect()\n if (this._inlineStyle) {\n this._element.setAttribute('style', this._inlineStyle)\n } else {\n this._element.removeAttribute('style')\n }\n\n super.dispose()\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start autosize-init\ninitAll(SELECTOR_DATA_TOGGLE, Autosize)\n// js-docs-end autosize-init\n\nexport default Autosize\n","/**\n * --------------------------------------------------------------------------\n * Tabler clipboard.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = {\n /** selector of the element to read the text from */\n target: string | null\n /** literal text to copy; wins over `target` */\n text: string | null\n /** how long the copied state lasts, in milliseconds */\n delay: number\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'clipboard'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_COPIED = `copied${EVENT_KEY}`\nconst EVENT_ERROR = `error${EVENT_KEY}`\n\nconst CLASS_NAME_COPIED = 'copied'\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\nconst SELECTOR_LABEL = `.${NAME}-label`\nconst SELECTOR_FEEDBACK = `.${NAME}-feedback`\n\nconst Default: ComponentConfig = {\n target: null,\n text: null,\n delay: 2000,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n target: '(string|null)',\n text: '(string|number|null)',\n delay: 'number',\n}\n\n/**\n * Helpers\n */\n\n// The `hidden` DOM property belongs to HTMLElement, so an `<svg>` ignores it.\n// The attribute works on any element.\nconst toggleHidden = (element: Element, hidden: boolean): void => {\n if (hidden) {\n element.setAttribute('hidden', '')\n } else {\n element.removeAttribute('hidden')\n }\n}\n\n/**\n * Class definition\n *\n * Copies text to the clipboard when the trigger is clicked, then shows the\n * copied state for a moment. Every word lives in the markup: the trigger holds\n * a `clipboard-label` and a `clipboard-feedback`, and the component only swaps\n * which of them is hidden.\n *\n * The browser gives `navigator.clipboard` to secure contexts only, so on plain\n * http a copy fails and `error.bs.clipboard` fires.\n */\n\nclass Clipboard extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _labels: Element[] = []\n _feedbacks: Element[] = []\n _timeout = 0\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n // Several of each are allowed: an icon-only button pairs a check icon with\n // a visually hidden word, and both switch together.\n this._labels = SelectorEngine.find(SELECTOR_LABEL, this._element)\n this._feedbacks = SelectorEngine.find(SELECTOR_FEEDBACK, this._element)\n\n for (const feedback of this._feedbacks) {\n // Revealed rather than restyled, so a screen reader announces it.\n toggleHidden(feedback, true)\n\n if (!feedback.hasAttribute('role')) {\n feedback.setAttribute('role', 'status')\n }\n }\n\n EventHandler.on(this._element, `click${EVENT_KEY}`, (event: Event) => {\n event.preventDefault()\n void this.copy()\n })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get text(): string {\n const { text, target } = this._config\n if (text !== null && text !== '') {\n return String(text)\n }\n\n const source = target ? SelectorEngine.findOne(target) : null\n if (!source) {\n return ''\n }\n\n return source instanceof HTMLInputElement || source instanceof HTMLTextAreaElement ? source.value : (source.textContent ?? '').trim()\n }\n\n // Public\n async copy(): Promise<void> {\n const { text } = this\n\n if (!text || !navigator.clipboard) {\n EventHandler.trigger(this._element, EVENT_ERROR)\n return\n }\n\n try {\n await navigator.clipboard.writeText(text)\n } catch {\n EventHandler.trigger(this._element, EVENT_ERROR)\n return\n }\n\n this._showCopied()\n EventHandler.trigger(this._element, EVENT_COPIED)\n }\n\n dispose(): void {\n window.clearTimeout(this._timeout)\n super.dispose()\n }\n\n // Private\n _showCopied(): void {\n window.clearTimeout(this._timeout)\n this._toggleCopied(true)\n\n if (this._config.delay > 0) {\n this._timeout = window.setTimeout(() => this._toggleCopied(false), this._config.delay)\n }\n }\n\n _toggleCopied(copied: boolean): void {\n this._element.classList.toggle(CLASS_NAME_COPIED, copied)\n\n for (const label of this._labels) {\n toggleHidden(label, copied)\n }\n\n for (const feedback of this._feedbacks) {\n toggleHidden(feedback, !copied)\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start clipboard-init\ninitAll(SELECTOR_DATA_TOGGLE, Clipboard)\n// js-docs-end clipboard-init\n\nexport default Clipboard\n","/**\n * --------------------------------------------------------------------------\n * Tabler confetti.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 { isDisabled } from './bootstrap/util/index'\nimport type { ComponentConfig as BaseConfig, ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = {\n /** how many pieces one burst pours out */\n count: number\n /** ms during which pieces keep pouring; the first frames get the most */\n duration: number\n /** how fast the pour thins out; higher means a sharper splash at the start */\n decay: number\n /** share of the viewport height at the bottom where pieces fade out */\n fade: number\n /** multiplier for the fall speed */\n speed: number\n /** piece colours; `null` reads the Tabler palette from CSS custom properties */\n colors: string[] | null\n}\n\ntype ComponentConfigInput = Partial<Omit<ComponentConfig, 'colors'>> & {\n colors?: string[] | string | null\n}\n\ntype Particle = {\n emitter: Emitter\n x: number\n y: number\n w: number\n h: number\n color: string\n vx: number\n vy: number\n speed: number\n angle: number\n spin: number\n flip: number\n flipSpeed: number\n sway: number\n alpha: number\n}\n\ntype Emitter = {\n element: HTMLElement\n config: ComponentConfig\n colors: string[]\n startedAt: number\n emitted: number\n /** `stop()` was called: nothing new is poured, what is in the air still falls */\n stopped: boolean\n /** every piece has landed and `end` was fired */\n done: boolean\n}\n\n/**\n * Constants\n */\n\nconst NAME = 'confetti'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_START = `start${EVENT_KEY}`\nconst EVENT_END = `end${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}.data-api`\n\nconst CLASS_NAME_CANVAS = `${NAME}-canvas`\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\n// Palette names looked up as `--tblr-<name>` on the root element; the hex\n// values are the fallback for a page that loads the script without the CSS.\nconst PALETTE: [string, string][] = [\n ['blue', '#066fd1'],\n ['azure', '#4299e1'],\n ['indigo', '#4263eb'],\n ['purple', '#ae3ec9'],\n ['pink', '#d6336c'],\n ['red', '#d63939'],\n ['orange', '#f76707'],\n ['yellow', '#f59f00'],\n ['lime', '#74b816'],\n ['green', '#2fb344'],\n ['teal', '#0ca678'],\n ['cyan', '#17a2b8'],\n]\n\n// The physics below is tuned for this viewport height; taller windows get\n// proportionally faster pieces so the fall takes the same time everywhere.\nconst REFERENCE_HEIGHT = 800\nconst FRAME_MS = 1000 / 60\nconst MAX_DPR = 2\n\nconst Default: ComponentConfig = {\n count: 220,\n duration: 3500,\n decay: 3.5,\n fade: 0.15,\n speed: 1,\n colors: null,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n count: 'number',\n duration: 'number',\n decay: 'number',\n fade: 'number',\n speed: 'number',\n colors: '(array|string|null)',\n}\n\n/**\n * Stage\n *\n * One fixed canvas shared by every burst on the page. It is created on the\n * first burst and removed once the last piece has landed, so an idle page\n * carries no extra element and no running animation frame.\n */\n\nconst stage = {\n canvas: null as HTMLCanvasElement | null,\n context: null as CanvasRenderingContext2D | null,\n particles: [] as Particle[],\n emitters: [] as Emitter[],\n frame: 0,\n lastTick: 0,\n\n add(emitter: Emitter): void {\n this.emitters.push(emitter)\n this._mount()\n\n if (!this.frame) {\n this.lastTick = performance.now()\n this.frame = requestAnimationFrame((now) => this._tick(now))\n }\n },\n\n _mount(): void {\n if (this.canvas) {\n return\n }\n\n const canvas = document.createElement('canvas')\n canvas.className = CLASS_NAME_CANVAS\n canvas.setAttribute('aria-hidden', 'true')\n Object.assign(canvas.style, {\n position: 'fixed',\n inset: '0',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n pointerEvents: 'none',\n display: 'block',\n })\n\n document.body.append(canvas)\n this.canvas = canvas\n this.context = canvas.getContext('2d')\n this._resize()\n window.addEventListener('resize', this._onResize)\n },\n\n _unmount(): void {\n cancelAnimationFrame(this.frame)\n this.frame = 0\n window.removeEventListener('resize', this._onResize)\n this.canvas?.remove()\n this.canvas = null\n this.context = null\n this.particles = []\n this.emitters = []\n },\n\n _onResize: (): void => {\n stage._resize()\n },\n\n _resize(): void {\n if (!this.canvas || !this.context) {\n return\n }\n\n // The backing store is scaled for HiDPI screens; the CSS size above keeps\n // the element at the viewport size, so the drawing stays sharp and 1:1.\n const dpr = Math.min(window.devicePixelRatio || 1, MAX_DPR)\n this.canvas.width = window.innerWidth * dpr\n this.canvas.height = window.innerHeight * dpr\n this.context.setTransform(dpr, 0, 0, dpr, 0, 0)\n },\n\n _spawn(emitter: Emitter): Particle {\n const { colors, config } = emitter\n const speed = (window.innerHeight / REFERENCE_HEIGHT) * config.speed\n\n return {\n emitter,\n x: Math.random() * window.innerWidth,\n y: -20 - Math.random() * 30,\n w: 6 + Math.random() * 3.6,\n h: 10 + Math.random() * 4.4,\n color: colors[Math.floor(Math.random() * colors.length)] ?? '#000',\n vx: (Math.random() - 0.5) * 1.2,\n vy: (1.5 + Math.random() * 2.1) * speed,\n speed,\n angle: Math.random() * Math.PI * 2,\n spin: (Math.random() - 0.5) * 0.25,\n flip: Math.random() * Math.PI * 2,\n flipSpeed: 0.12 + Math.random() * 0.15,\n sway: Math.random() * Math.PI * 2,\n alpha: 1,\n }\n },\n\n // Pour: the share of pieces emitted by time t follows 1 - e^(-k t), so the\n // first frames get the most and the tail thins out to single pieces.\n _pour(emitter: Emitter, now: number): void {\n const { count, duration, decay } = emitter.config\n const elapsed = now - emitter.startedAt\n\n if (emitter.stopped || elapsed >= duration) {\n return\n }\n\n const t = elapsed / duration\n const target = Math.round((count * (1 - Math.exp(-decay * t))) / (1 - Math.exp(-decay)))\n\n while (emitter.emitted < target) {\n this.particles.push(this._spawn(emitter))\n emitter.emitted++\n }\n },\n\n _tick(now: number): void {\n const context = this.context\n if (!context) {\n return\n }\n\n // Steps are scaled to the real frame time so a 120 Hz screen or a\n // throttled tab animate at the same pace as 60 Hz.\n const step = Math.min((now - this.lastTick) / FRAME_MS, 3)\n this.lastTick = now\n\n const width = window.innerWidth\n const height = window.innerHeight\n context.clearRect(0, 0, width, height)\n\n for (const emitter of this.emitters) {\n this._pour(emitter, now)\n }\n\n for (let i = this.particles.length - 1; i >= 0; i--) {\n const p = this.particles[i]!\n const fadeFrom = height * (1 - p.emitter.config.fade)\n\n p.sway += 0.05 * step\n p.vy = Math.min(p.vy + 0.025 * p.speed * step, 4.2 * p.speed)\n p.x += (p.vx + Math.sin(p.sway) * 0.7) * step\n p.y += p.vy * step\n p.angle += p.spin * step\n p.flip += p.flipSpeed * step\n\n if (p.y > fadeFrom) {\n p.alpha = Math.max(0, 1 - (p.y - fadeFrom) / (height - fadeFrom))\n }\n\n if (p.alpha === 0) {\n this.particles.splice(i, 1)\n continue\n }\n\n context.save()\n context.globalAlpha = p.alpha\n context.translate(p.x, p.y)\n context.rotate(p.angle)\n // The flip squashes the piece along one axis, which reads as tumbling.\n context.scale(1, Math.cos(p.flip))\n context.fillStyle = p.color\n context.fillRect(-p.w / 2, -p.h / 2, p.w, p.h)\n context.restore()\n }\n\n this._settle(now)\n\n if (this.emitters.length === 0) {\n this._unmount()\n return\n }\n\n this.frame = requestAnimationFrame((next) => this._tick(next))\n },\n\n // An emitter is finished once it pours nothing more and none of its pieces\n // is still in the air; `end` fires on its element and it leaves the stage.\n _settle(now: number): void {\n for (let i = this.emitters.length - 1; i >= 0; i--) {\n const emitter = this.emitters[i]!\n const pouring = !emitter.stopped && now - emitter.startedAt < emitter.config.duration\n const airborne = this.particles.some((p) => p.emitter === emitter)\n\n if (pouring || airborne) {\n continue\n }\n\n this.emitters.splice(i, 1)\n emitter.done = true\n EventHandler.trigger(emitter.element, EVENT_END)\n }\n },\n}\n\n/**\n * Class definition\n *\n * Pours a short shower of confetti over the page, like a bucket emptied from\n * the top edge: dense at first, then thinning out. Nothing is drawn when the\n * user prefers reduced motion, but the events still fire.\n */\n\nclass Confetti extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _emitter: Emitter | null = null\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config as BaseConfig | undefined)\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n burst(): void {\n const startEvent = EventHandler.trigger(this._element, EVENT_START)\n\n if (startEvent?.defaultPrevented) {\n return\n }\n\n // A second burst while one is pouring restarts the pour; pieces already\n // in the air keep falling.\n this.stop()\n\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n EventHandler.trigger(this._element, EVENT_END)\n return\n }\n\n this._emitter = {\n element: this._element,\n config: this._config,\n colors: this._colors(),\n startedAt: performance.now(),\n emitted: 0,\n stopped: false,\n done: false,\n }\n\n stage.add(this._emitter)\n }\n\n stop(): void {\n if (this._emitter && !this._emitter.done) {\n this._emitter.stopped = true\n }\n\n this._emitter = null\n }\n\n dispose(): void {\n this.stop()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config: BaseConfig): BaseConfig {\n if (typeof config.colors === 'string') {\n config.colors = config.colors\n .split(',')\n .map((color) => color.trim())\n .filter(Boolean)\n }\n\n return config\n }\n\n _colors(): string[] {\n const { colors } = this._config\n if (colors && colors.length > 0) {\n return colors\n }\n\n // The palette is read at burst time, so a theme switched at runtime is\n // picked up without re-creating the instance.\n const style = getComputedStyle(document.documentElement)\n return PALETTE.map(([name, fallback]) => style.getPropertyValue(`--tblr-${name}`).trim() || fallback)\n }\n}\n\n/**\n * Data API implementation\n *\n * A trigger bursts on its `data-bs-target` when it has one, otherwise on\n * itself, so the events fire where the page can listen for them.\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 const target = SelectorEngine.getElementFromSelector(this) || this\n const instance = Confetti.getOrCreateInstance(target) as Confetti\n instance.burst()\n})\n\nexport default Confetti\n","/**\n * --------------------------------------------------------------------------\n * Tabler countup.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype CountUpFormat = 'number' | 'time'\n\ntype ComponentConfig = {\n /** start when the element scrolls into view; off starts at once */\n autoAnimate: boolean\n startVal: number\n /** seconds */\n duration: number\n decimalPlaces: number\n useEasing: boolean\n useGrouping: boolean\n separator: string\n decimal: string\n prefix: string\n suffix: string\n /** `number`, or `time` for a value in minutes shown as h:mm */\n format: CountUpFormat\n /** custom rendering of the number, from a JavaScript config only */\n formatter: ((value: number) => string) | null\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'countup'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_ATTRIBUTE = `data-${NAME}`\n\nconst EVENT_START = `start${EVENT_KEY}`\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\n\nconst DATA_ATTRIBUTE_ALIAS = `data-tblr-${NAME}`\n\nconst SELECTOR_DATA_COUNTUP = `[${DATA_ATTRIBUTE}], [${DATA_ATTRIBUTE_ALIAS}]`\n\nconst Default: ComponentConfig = {\n autoAnimate: true,\n startVal: 0,\n duration: 2,\n decimalPlaces: 0,\n useEasing: true,\n useGrouping: true,\n separator: ',',\n decimal: '.',\n prefix: '',\n suffix: '',\n format: 'number',\n formatter: null,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n autoAnimate: 'boolean',\n startVal: 'number',\n duration: 'number',\n decimalPlaces: 'number',\n useEasing: 'boolean',\n useGrouping: 'boolean',\n separator: 'string',\n decimal: 'string',\n prefix: 'string',\n suffix: 'string',\n format: 'string',\n formatter: '(function|null)',\n}\n\n/**\n * Helpers\n */\n\n// deprecated(2.0): countUp.js took `\"duration\":\"3\"` or `\"useGrouping\":\"false\"`\n// from `data-countup` without complaint. The typed config would reject them, so\n// attribute values that are plainly a number or a boolean are read as one.\nconst coerceOptions = (options: Record<string, unknown>): Record<string, unknown> => {\n const result: Record<string, unknown> = { ...options }\n\n for (const [key, value] of Object.entries(options)) {\n const expected = DefaultType[key as keyof ComponentConfig]\n\n if (typeof value === 'string' && expected === 'number' && value.trim() !== '' && !Number.isNaN(Number(value))) {\n result[key] = Number(value)\n } else if (typeof value === 'string' && expected === 'boolean' && (value === 'true' || value === 'false')) {\n result[key] = value === 'true'\n } else if (typeof value === 'number' && expected === 'string') {\n result[key] = String(value)\n }\n }\n\n return result\n}\n\n// Strips thousands separators, currency symbols and other non-numeric\n// characters, so formatted targets like \"1,234\", \"1 234\" or \"$99.5\" parse.\n// A `time` value like \"3:28\" is read as minutes.\nconst parseValue = (input: string | number, format: CountUpFormat): number => {\n if (typeof input === 'number') {\n return input\n }\n\n if (format === 'time') {\n // Anchored and bounded on purpose: an unanchored `\\d+` would scan from\n // every position of a long digit string.\n const match = /^\\D{0,32}(\\d{1,4}):(\\d{1,2})/.exec(input)\n return match ? Number(match[1]) * 60 + Number(match[2]) : Number.NaN\n }\n\n return Number.parseFloat(input.replace(/[^0-9.-]/g, ''))\n}\n\n// easeOutExpo, the same curve countUp.js used\nconst easeOut = (t: number): number => (t >= 1 ? 1 : ((1 - 2 ** (-10 * t)) * 1024) / 1023)\n\nconst reducedMotion = (): boolean => window.matchMedia('(prefers-reduced-motion: reduce)').matches\n\n/**\n * Class definition\n *\n * Animates the number written inside the element from `startVal` to it,\n * formatted with grouping, decimals, a prefix and a suffix. Options come from\n * 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 _endVal = 0\n _value = 0\n _frame = 0\n _observer: IntersectionObserver | null = null\n // animation in progress: where it goes, how far it got\n _from = 0\n _elapsed = 0\n _running = false\n _paused = false\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n const value = parseValue(this._element.textContent ?? '', this._config.format)\n if (Number.isNaN(value)) {\n return\n }\n\n this._endVal = value\n this._value = this._config.startVal\n this._print(this._value)\n\n if (!this._config.autoAnimate) {\n this.start()\n return\n }\n\n // Wait for the element to scroll into view, then run once.\n if (typeof IntersectionObserver === 'undefined') {\n this.start()\n return\n }\n\n this._observer = new IntersectionObserver((entries) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n this._observer?.disconnect()\n this._observer = null\n this.start()\n }\n })\n this._observer.observe(this._element)\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n start(): void {\n this._animate(this._value, this._endVal)\n }\n\n reset(): void {\n this._stop()\n this._value = this._config.startVal\n this._print(this._value)\n }\n\n update(value: number | string): void {\n const parsed = parseValue(value, this._config.format)\n if (Number.isNaN(parsed)) {\n return\n }\n\n this._endVal = parsed\n this._animate(this._value, this._endVal)\n }\n\n pauseResume(): void {\n if (this._paused) {\n this._paused = false\n this._run()\n } else if (this._running) {\n this._paused = true\n cancelAnimationFrame(this._frame)\n }\n }\n\n dispose(): void {\n this._stop()\n this._observer?.disconnect()\n super.dispose()\n }\n\n // Private\n _mergeConfigObj(config?: Record<string, unknown>, element?: HTMLElement): Record<string, unknown> {\n // `data-countup='{\"duration\":4}'` carries the options as JSON; a bare\n // `data-countup` or invalid JSON means defaults.\n let dataOptions: Record<string, unknown> = {}\n const raw = element?.getAttribute(DATA_ATTRIBUTE) ?? element?.getAttribute(DATA_ATTRIBUTE_ALIAS)\n\n if (raw) {\n try {\n dataOptions = JSON.parse(raw)\n } catch {\n // ignore invalid JSON\n }\n }\n\n return super._mergeConfigObj({ ...coerceOptions(dataOptions), ...config }, element)\n }\n\n _animate(from: number, to: number): void {\n this._stop()\n\n // Users who asked for less motion get the final number at once.\n if (from === to || this._config.duration <= 0 || reducedMotion()) {\n this._finish(to)\n return\n }\n\n this._from = from\n this._elapsed = 0\n this._running = true\n EventHandler.trigger(this._element, EVENT_START)\n this._run()\n }\n\n _run(): void {\n const duration = this._config.duration * 1000\n let last = performance.now()\n\n const step = (now: number): void => {\n this._elapsed += now - last\n last = now\n\n const t = Math.min(1, this._elapsed / duration)\n const progress = this._config.useEasing ? easeOut(t) : t\n this._value = this._from + (this._endVal - this._from) * progress\n this._print(this._value)\n\n if (t < 1) {\n this._frame = requestAnimationFrame(step)\n } else {\n this._finish(this._endVal)\n }\n }\n\n this._frame = requestAnimationFrame(step)\n }\n\n _finish(value: number): void {\n this._running = false\n this._paused = false\n this._value = value\n this._print(value)\n EventHandler.trigger(this._element, EVENT_COMPLETE)\n }\n\n _stop(): void {\n cancelAnimationFrame(this._frame)\n this._running = false\n this._paused = false\n }\n\n _print(value: number): void {\n this._element.textContent = this._format(value)\n }\n\n _format(value: number): string {\n const { decimalPlaces, useGrouping, separator, decimal, prefix, suffix, format, formatter } = this._config\n if (formatter) {\n return formatter(value)\n }\n\n if (format === 'time') {\n const minutes = Math.round(Math.abs(value))\n return `${value < 0 ? '-' : ''}${prefix}${Math.floor(minutes / 60)}:${String(minutes % 60).padStart(2, '0')}${suffix}`\n }\n\n const [integer, fraction] = Math.abs(value).toFixed(decimalPlaces).split('.') as [string, string | undefined]\n const grouped = useGrouping ? integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator) : integer\n\n return `${value < 0 ? '-' : ''}${prefix}${grouped}${fraction ? decimal + fraction : ''}${suffix}`\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start countup-init\ninitAll(SELECTOR_DATA_COUNTUP, CountUp)\n// js-docs-end countup-init\n\nexport default CountUp\n","/**\n * --------------------------------------------------------------------------\n * Tabler datepicker.ts\n * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport type { Calendar, DateAny, DateMode, DatesArr, MonthsCount, Options, PositionToInput, Range, WeekDayID } from 'vanilla-calendar-pro'\nimport BaseComponent from './bootstrap/base-component'\nimport EventHandler from './bootstrap/dom/event-handler'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport { initAll } from './bootstrap/util/component-functions'\nimport { isDisabled } from './bootstrap/util/index'\nimport type { ElementSelector } from './bootstrap/types'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"], [data-tblr-toggle=\"datepicker\"]'\nconst SELECTOR_DISPLAY = '[data-bs-datepicker-display], [data-tblr-datepicker-display]'\nconst SELECTOR_INPUT_WRAPPER = '.input-icon, .input-group'\nconst SELECTOR_BOUND_INPUT = 'input[type=\"hidden\"], input[name]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst DATE_PATTERN = /^(\\d{4})-(\\d{2})-(\\d{2})$/\n\n// The date, weekday, month-count and placement options are handed straight to\n// Vanilla Calendar Pro, so they use its own literal unions rather than the wider\n// `string` / `number`. That keeps a bad value a compile error here instead of a\n// silent no-op inside the calendar.\ntype ComponentConfig = {\n /** 'light', 'dark' or 'auto' for the popup only; null inherits from the nearest `[data-bs-theme]` */\n datepickerTheme: string | null\n dateMin: DateAny | null\n dateMax: DateAny | null\n /** `Intl.DateTimeFormat` options, or a function(date, locale) returning the text shown in the field */\n dateFormat: Intl.DateTimeFormatOptions | ((date: Date, locale: string | undefined) => string) | null\n /** element that shows the formatted date; a button uses itself or its `[data-bs-datepicker-display]` child */\n displayElement: string | HTMLElement | boolean | null\n displayMonthsCount: MonthsCount\n /** 0 = Sunday, 1 = Monday */\n firstWeekday: WeekDayID\n /** render the calendar in place instead of a popup */\n inline: boolean\n locale: string\n /** element the popup is aligned with; defaults to the `.input-icon` / `.input-group` wrapper or the element */\n positionElement: string | HTMLElement | null\n /** preselected dates as `YYYY-MM-DD` */\n selectedDates: string[]\n selectionMode: DateMode\n placement: PositionToInput\n /** pass-through for any Vanilla Calendar Pro option */\n vcpOptions: Options\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\ntype ChangeEventArgs = { dates: string[]; event: MouseEvent }\n\nconst Default: ComponentConfig = {\n datepickerTheme: null,\n dateMin: null,\n dateMax: null,\n dateFormat: null,\n displayElement: null,\n displayMonthsCount: 1,\n firstWeekday: 1,\n inline: false,\n locale: 'default',\n positionElement: null,\n selectedDates: [],\n selectionMode: 'single',\n placement: 'left',\n vcpOptions: {},\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n datepickerTheme: '(null|string)',\n dateMin: '(null|string|number|object)',\n dateMax: '(null|string|number|object)',\n dateFormat: '(null|object|function)',\n displayElement: '(null|string|element|boolean)',\n displayMonthsCount: 'number',\n firstWeekday: 'number',\n inline: 'boolean',\n locale: 'string',\n positionElement: '(null|string|element)',\n selectedDates: 'array',\n selectionMode: 'string',\n placement: 'string',\n vcpOptions: 'object',\n}\n\n// Delegated Data API handlers run in the capture phase, before the plugin's\n// own click listener, which opens the popup from a `setTimeout`. Two nested\n// timeouts are the first point that is after it for certain.\nconst afterPluginTimers = (callback: () => void): void => {\n setTimeout(() => setTimeout(callback))\n}\n\n/**\n * Class definition\n *\n * Wraps Vanilla Calendar Pro (https://vanilla-calendar.pro), loaded separately\n * as `window.VanillaCalendarPro`. Without the plugin the component is inert.\n * Same options, methods and events as Bootstrap 6's Datepicker, so markup\n * written for one works with the other.\n */\n\nclass Datepicker extends BaseComponent {\n declare _element: HTMLElement & { value: string }\n declare _config: ComponentConfig\n _calendar: Calendar | null = null\n _isShown = false\n // The plugin opens and closes the popup on its own too (its click and focus\n // listeners, Escape, a click outside), so `onShow` and `onHide` are what\n // tracks the state and fires the events; these flags tell them who asked.\n _isShowing = false\n _isHiding = false\n _isSilent = false\n _skipPluginShow = false\n _resolveShown: (() => void) | null = null\n _isInput = false\n _isInline = false\n _boundInput: HTMLInputElement | null = null\n _positionElement: HTMLElement | null = null\n _displayElement: HTMLElement | false | null = null\n _themeObserver: MutationObserver | null = null\n _onFocusIn: ((event: Event) => void) | null = null\n // The plugin builds a popup lazily, so its context has no selection until\n // the first show; this mirror answers `getSelectedDates()` before that.\n _selectedDates: string[] = []\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element || !window.VanillaCalendarPro) {\n return\n }\n\n this._initCalendar()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n /** The Vanilla Calendar Pro instance, for options the component does not expose. */\n get calendar(): Calendar | null {\n return this._calendar\n }\n\n // Public\n toggle(): Promise<void> {\n if (this._config.inline) {\n return Promise.resolve() // Inline calendars are always visible\n }\n\n return this._isShown ? this.hide() : this.show()\n }\n\n async show(): Promise<void> {\n if (this._config.inline) {\n return // Inline calendars are always visible\n }\n\n // The first `calendar.show()` clicks the element to build the popup, and\n // that click comes back here through the Data API; `_isShowing` stops it.\n if (!this._calendar || isDisabled(this._element) || this._isShown || this._isShowing) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (showEvent?.defaultPrevented) {\n return\n }\n\n this._isShowing = true\n this._skipPluginShow = false\n this._calendar.show()\n\n // The first show builds the popup and opens it a tick later\n if (!this._isShown) {\n await new Promise<void>((resolve) => {\n this._resolveShown = resolve\n afterPluginTimers(resolve)\n })\n }\n\n this._resolveShown = null\n this._isShowing = false\n }\n\n async hide(): Promise<void> {\n if (this._config.inline) {\n return // Inline calendars are always visible\n }\n\n if (!this._calendar || !this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (hideEvent?.defaultPrevented) {\n return\n }\n\n // On a click on a button trigger the plugin's own listener runs next and\n // queues a `show()`; without this the popup would open again right away.\n this._skipPluginShow = true\n afterPluginTimers(() => {\n this._skipPluginShow = false\n })\n\n this._isHiding = true\n this._calendar.hide()\n this._isHiding = false\n }\n\n dispose(): void {\n this._themeObserver?.disconnect()\n\n if (this._onFocusIn) {\n EventHandler.off(document, EVENT_FOCUSIN, this._onFocusIn)\n }\n\n this._calendar?.destroy()\n\n super.dispose()\n }\n\n getSelectedDates(): string[] {\n const dates = this._calendar?.context?.selectedDates\n return dates && dates.length > 0 ? [...dates] : [...this._selectedDates]\n }\n\n setSelectedDates(dates: DatesArr): void {\n this._selectedDates = dates.map(String)\n this._calendar?.set({ selectedDates: dates })\n }\n\n // Private\n _initCalendar(): void {\n this._isInput = this._element.tagName === 'INPUT'\n this._isInline = this._config.inline\n\n // For inline mode, look for a hidden input child to bind to\n if (this._isInline && !this._isInput) {\n this._boundInput = SelectorEngine.findOne(SELECTOR_BOUND_INPUT, this._element) as HTMLInputElement | null\n }\n\n this._positionElement = this._resolvePositionElement()\n this._displayElement = this._resolveDisplayElement()\n this._selectedDates = [...this._config.selectedDates]\n\n // The calendar always attaches to the element itself. The plugin closes on\n // any click whose target is not exactly its input, so handing it a wrapper\n // makes a click on the field inside close and reopen the popup. The popup\n // is aligned with the position element after each show instead.\n this._calendar = new window.VanillaCalendarPro!.Calendar(this._element, this._buildCalendarOptions())\n this._calendar.init()\n\n // An inline calendar renders into the element and drops its children, so\n // the bound input moves right after it to stay in the form.\n if (this._boundInput && !this._boundInput.isConnected) {\n this._element.after(this._boundInput)\n }\n\n // Watch for theme changes on ancestor elements (for live theme switching)\n this._setupThemeObserver()\n\n this._setupDismissOnFocus()\n\n // Set initial value if input has a value\n if (this._isInput && this._element.value) {\n this._parseInputValue()\n }\n\n // Populate input/display with preselected dates\n this._updateDisplayWithSelectedDates()\n }\n\n _updateDisplayWithSelectedDates(): void {\n const { selectedDates } = this._config\n if (!selectedDates || selectedDates.length === 0) {\n return\n }\n\n this._writeSelection(selectedDates)\n }\n\n _writeSelection(selectedDates: string[]): void {\n const formattedDate = this._formatDateForInput(selectedDates)\n\n if (this._isInput) {\n this._element.value = formattedDate\n }\n\n if (this._boundInput) {\n this._boundInput.value = selectedDates.join(',')\n }\n\n if (this._displayElement) {\n this._displayElement.textContent = formattedDate\n }\n }\n\n _resolvePositionElement(): HTMLElement {\n let { positionElement } = this._config\n\n if (typeof positionElement === 'string') {\n positionElement = SelectorEngine.findOne(positionElement)\n }\n\n // Use the input's wrapper when it sits in an icon or group wrapper\n if (!positionElement && this._isInput && !this._isInline) {\n positionElement = this._element.closest<HTMLElement>(SELECTOR_INPUT_WRAPPER)\n }\n\n return positionElement || this._element\n }\n\n _resolveDisplayElement(): HTMLElement | false | null {\n const { displayElement } = this._config\n\n if (typeof displayElement === 'string') {\n return SelectorEngine.findOne(displayElement)\n }\n\n // For buttons/non-inputs (not inline), look for a display child\n if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n return SelectorEngine.findOne(SELECTOR_DISPLAY, this._element) || this._element\n }\n\n return displayElement\n }\n\n // The plugin positions the popup against the element; a wrapper such as\n // `.input-icon` or `.input-group` wants the popup aligned with its own edges.\n _alignToPositionElement(): void {\n const mainElement = this._calendar?.context?.mainElement\n if (!mainElement || this._isInline || !this._positionElement || this._positionElement === this._element) {\n return\n }\n\n const anchor = this._positionElement.getBoundingClientRect()\n const popup = mainElement.getBoundingClientRect()\n let { placement } = this._config\n\n if (placement === 'auto') {\n placement = anchor.left + popup.width > document.documentElement.clientWidth ? 'right' : 'left'\n }\n\n const left = placement === 'right' ? anchor.right - popup.width : placement === 'center' ? anchor.left + (anchor.width - popup.width) / 2 : anchor.left\n\n mainElement.style.left = `${left + window.scrollX}px`\n }\n\n _getThemeAncestor(): Element | null {\n return this._element.closest('[data-bs-theme]')\n }\n\n _getEffectiveTheme(): string | null {\n // Priority: explicit datepickerTheme config > inherited from ancestor > none\n const { datepickerTheme } = this._config\n if (datepickerTheme) {\n return datepickerTheme\n }\n\n return this._getThemeAncestor()?.getAttribute('data-bs-theme') || null\n }\n\n _syncThemeAttribute(element: HTMLElement | undefined): void {\n if (!element) {\n return\n }\n\n const theme = this._getEffectiveTheme()\n\n if (theme) {\n // Copy the theme to the popup: the plugin appends it to <body>, which\n // breaks inheritance from a themed container.\n element.setAttribute('data-bs-theme', theme)\n } else {\n element.removeAttribute('data-bs-theme')\n }\n }\n\n _setupThemeObserver(): void {\n const ancestor = this._getThemeAncestor()\n if (!ancestor || this._config.datepickerTheme) {\n // No ancestor to watch, or explicit datepickerTheme overrides\n return\n }\n\n this._themeObserver = new MutationObserver(() => {\n this._syncThemeAttribute(this._calendar?.context?.mainElement)\n })\n\n this._themeObserver.observe(ancestor, {\n attributes: true,\n attributeFilter: ['data-bs-theme'],\n })\n }\n\n // The plugin ignores focus and mounts the popup on <body>, so close it\n // ourselves when focus leaves both the element and the calendar.\n _setupDismissOnFocus(): void {\n if (this._isInline) {\n return\n }\n\n this._onFocusIn = (event: Event): void => {\n if (!this._isShown) {\n return\n }\n\n const { target } = event\n const mainElement = this._calendar?.context?.mainElement\n\n if (target instanceof Node && (this._element.contains(target) || mainElement?.contains(target))) {\n return\n }\n\n this.hide()\n }\n\n EventHandler.on(document, EVENT_FOCUSIN, this._onFocusIn)\n }\n\n _silently(callback: () => void): void {\n this._isSilent = true\n callback()\n this._isSilent = false\n }\n\n _handlePluginShow(): void {\n const calendar = this._calendar\n if (!calendar) {\n return\n }\n\n if (!this._isSilent && !this._isShown) {\n // Opened by the plugin itself: right after `hide()` on a trigger click it\n // must stay closed, otherwise it gets the same cancelable `show` event.\n const prevented = this._skipPluginShow || (!this._isShowing && EventHandler.trigger(this._element, EVENT_SHOW)?.defaultPrevented)\n\n if (prevented) {\n this._silently(() => calendar.hide())\n return\n }\n }\n\n const wasShown = this._isShown\n this._isShown = true\n this._syncThemeAttribute(calendar.context.mainElement)\n this._alignToPositionElement()\n\n if (!wasShown) {\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n this._resolveShown?.()\n }\n\n _handlePluginHide(): void {\n const calendar = this._calendar\n if (!calendar || this._isSilent || !this._isShown) {\n return\n }\n\n // Closed by the plugin itself (Escape, a click outside): `hide` is still\n // cancelable, the popup opens again before the browser paints.\n if (!this._isHiding && EventHandler.trigger(this._element, EVENT_HIDE)?.defaultPrevented) {\n this._silently(() => calendar.show())\n return\n }\n\n this._isShown = false\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n _buildCalendarOptions(): Options {\n // The plugin uses 'system' for auto-detection, Bootstrap and Tabler use 'auto'\n const theme = this._getEffectiveTheme()\n const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n const calendarOptions: Options = {\n ...this._config.vcpOptions,\n inputMode: !this._isInline,\n positionToInput: this._config.placement,\n firstWeekday: this._config.firstWeekday,\n locale: this._config.locale,\n selectionDatesMode: this._config.selectionMode,\n selectedDates: this._config.selectedDates,\n displayMonthsCount: this._config.displayMonthsCount,\n type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n selectedTheme: vcpTheme,\n themeAttrDetect: '[data-bs-theme]',\n onClickDate: (self, event) => this._handleDateClick(self, event),\n onInit: (self) => {\n this._syncThemeAttribute(self.context.mainElement)\n },\n onShow: () => this._handlePluginShow(),\n onHide: () => this._handlePluginHide(),\n }\n\n // Navigate to the month of the first selected date\n const [firstSelected] = this._config.selectedDates\n if (firstSelected) {\n const firstDate = this._parseDate(firstSelected)\n // `getMonth()` is always 0-11, which TypeScript cannot narrow on its own\n calendarOptions.selectedMonth = firstDate.getMonth() as Range<12>\n calendarOptions.selectedYear = firstDate.getFullYear()\n }\n\n if (this._config.dateMin) {\n calendarOptions.dateMin = this._config.dateMin\n }\n\n if (this._config.dateMax) {\n calendarOptions.dateMax = this._config.dateMax\n }\n\n return calendarOptions\n }\n\n _handleDateClick(self: Calendar, event: MouseEvent): void {\n const selectedDates = [...self.context.selectedDates]\n this._selectedDates = selectedDates\n\n if (selectedDates.length > 0) {\n this._writeSelection(selectedDates)\n }\n\n const args: ChangeEventArgs = { dates: selectedDates, event }\n EventHandler.trigger(this._element, EVENT_CHANGE, args)\n\n this._maybeHideAfterSelection(selectedDates)\n }\n\n _maybeHideAfterSelection(selectedDates: string[]): void {\n if (this._isInline) {\n return\n }\n\n const shouldHide = (this._config.selectionMode === 'single' && selectedDates.length > 0) || (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n if (shouldHide) {\n setTimeout(() => this.hide(), HIDE_DELAY)\n }\n }\n\n _parseDate(dateStr: string): Date {\n const [year = 0, month = 1, day = 1] = dateStr.split('-').map(Number)\n return new Date(year, month - 1, day)\n }\n\n _formatDate(dateStr: string): string {\n const date = this._parseDate(dateStr)\n const locale = this._config.locale === 'default' ? undefined : this._config.locale\n const { dateFormat } = this._config\n\n // Custom function formatter\n if (typeof dateFormat === 'function') {\n return dateFormat(date, locale)\n }\n\n // Intl.DateTimeFormat options object\n if (dateFormat && typeof dateFormat === 'object') {\n return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n }\n\n // Default: locale-aware formatting\n return date.toLocaleDateString(locale)\n }\n\n _formatDateForInput(dates: string[]): string {\n if (dates.length === 0) {\n return ''\n }\n\n if (dates.length === 1) {\n return this._formatDate(dates[0]!)\n }\n\n // For date ranges, use en-dash; for multiple dates, use comma\n const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n return dates.map((date) => this._formatDate(date)).join(separator)\n }\n\n _parseInputValue(): void {\n const value = this._element.value.trim()\n if (!value) {\n return\n }\n\n // `YYYY-MM-DD` is read as a local date: `new Date('2020-06-20')` would be\n // UTC midnight and land on the previous day west of Greenwich.\n const date = DATE_PATTERN.test(value) ? this._parseDate(value) : new Date(value)\n if (Number.isNaN(date.getTime())) {\n return\n }\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n this._selectedDates = [`${year}-${month}-${day}`]\n this._calendar?.set({ selectedDates: this._selectedDates })\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start datepicker-init\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {\n // Inputs open on focus, and inline calendars are always visible\n if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true' || this.dataset.tblrInline === 'true') {\n return\n }\n\n event.preventDefault()\n ;(Datepicker.getOrCreateInstance(this) as Datepicker).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement) {\n if (this.tagName !== 'INPUT') {\n return\n }\n\n ;(Datepicker.getOrCreateInstance(this) as Datepicker).show()\n})\n\n// Render on load what cannot wait for a focus or a click: inline calendars,\n// and fields with preselected dates or a value, so they show it right away.\ninitAll(SELECTOR_DATA_TOGGLE, Datepicker, (element) => {\n const { dataset } = element\n\n return dataset.bsInline === 'true' || dataset.tblrInline === 'true' || 'bsSelectedDates' in dataset || 'tblrSelectedDates' in dataset || Boolean((element as HTMLInputElement).value)\n})\n// js-docs-end datepicker-init\n\nexport default Datepicker\nexport type { ComponentConfig as DatepickerConfig, ChangeEventArgs as DatepickerChangeEventArgs }\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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\n// The part of an IMask instance the component uses\ninterface IMaskInstance {\n value: string\n unmaskedValue: string\n updateValue(): void\n updateOptions(options: Record<string, unknown>): void\n destroy(): void\n}\n\ntype ComponentConfig = {\n mask: string\n lazy: boolean\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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<string, unknown>, element?: HTMLElement): Record<string, unknown> {\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<string, unknown> = {}\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\ninitAll(SELECTOR_DATA_MASK, InputMask)\n// js-docs-end input-mask-init\n\nexport default InputMask\nexport type { IMaskInstance }\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 <html> 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 <html>\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 `<html>` and `<body>` 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 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'\nimport { defineJQueryPlugin } from './util/index.js'\nimport type { JQueryCollectionLike } from './types'\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Alert.getOrCreateInstance(this) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\nenableDismissTrigger(Alert, 'close')\n\ndefineJQueryPlugin(Alert)\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'\nimport { defineJQueryPlugin } from './util/index.js'\nimport type { JQueryCollectionLike } from './types'\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Button.getOrCreateInstance(this) as Button\n\n if (config === 'toggle') {\n data.toggle()\n }\n })\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\ndefineJQueryPlugin(Button)\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 { defineJQueryPlugin, getNextActiveElement, isRTL, isVisible, reflow, triggerTransitionEnd } from './util/index'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<Omit<ComponentConfig, 'defaultInterval'>> & Record<string, unknown>\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<string, string> = {\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<Exclude<keyof ComponentConfig, 'defaultInterval'>, 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<typeof setInterval> | null\n _activeElement: HTMLElement | null\n _isSliding: boolean\n touchTimeout: ReturnType<typeof setTimeout> | 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<Exclude<keyof ComponentConfig, 'defaultInterval'>, 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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Carousel.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\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\ndefineJQueryPlugin(Carousel)\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 { defineJQueryPlugin, getElement, reflow } from './util/index'\nimport type { DelegatedEvent } from './dom/event-handler'\nimport type { ComponentConfig as BaseComponentConfig, ElementSelector, JQueryCollectionLike } from './types'\n\ntype ComponentConfig = {\n parent: HTMLElement | null\n toggle: boolean\n}\n\ntype ComponentConfigInput = Partial<Omit<ComponentConfig, 'parent'>> & { parent?: HTMLElement | string | null } & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n const _config: BaseComponentConfig = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function (this: HTMLElement) {\n const data = Collapse.getOrCreateInstance(this, _config) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\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\ndefineJQueryPlugin(Collapse)\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 { defineJQueryPlugin, execute, getElement, getNextActiveElement, isDisabled, isElement, isRTL, isVisible, noop } from './util/index'\nimport type { DelegatedEvent } from './dom/event-handler'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\n\ntype PopperOffsetData = { placement: Popper.Placement; reference: Popper.Rect; popper: Popper.Rect }\ntype PopperOffsetFunction = (popperData: PopperOffsetData) => number[]\ntype PopperConfigFunction = (defaultConfig: Partial<Popper.Options>) => Partial<Popper.Options>\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<Popper.Options> | PopperConfigFunction | null\n reference: 'toggle' | 'parent' | HTMLElement | Popper.VirtualElement\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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<Popper.Options> {\n const defaultBsPopperConfig: Partial<Popper.Options> = {\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<KeyboardEvent>).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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Dropdown.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\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\ndefineJQueryPlugin(Dropdown)\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 { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<ComponentConfig> & Record<string, unknown>\n\nconst Default: ComponentConfig = {\n backdrop: true,\n focus: true,\n keyboard: true,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown, relatedTarget?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Modal.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * 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\ndefineJQueryPlugin(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 { defineJQueryPlugin, isDisabled, isVisible } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<ComponentConfig> & Record<string, unknown>\n\nconst Default: ComponentConfig = {\n backdrop: true,\n keyboard: true,\n scroll: false,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Offcanvas.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * 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\ndefineJQueryPlugin(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<string, unknown>\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: '<div></div>',\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<string, unknown>): 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<string, unknown>)\n }\n\n _checkContent(arg: Record<string, unknown>): 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 { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport TemplateFactory from './util/template-factory'\nimport type { AllowList, ComponentConfig as BaseComponentConfig, JQueryCollectionLike, 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<Popper.Options>) => Partial<Popper.Options>\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<string, TooltipContent>\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<Popper.Options> | 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<TooltipConfig> & Record<string, unknown>\n\ntype ComponentConfigInput = TooltipConfigInput\n\nconst AttachmentMap: Record<string, string> = {\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: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus',\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<typeof setTimeout> | number\n _isHovered: boolean | null\n _activeTrigger: Record<string, boolean>\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<keyof ComponentConfig, string> {\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<T>(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<Popper.Options> {\n const defaultBsPopperConfig: Partial<Popper.Options> = {\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<Record<string, unknown>>) => {\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<string, unknown> = {\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<string, unknown>\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<string, unknown> = {}\n const defaults = (this.constructor as typeof Tooltip).Default as Record<string, unknown>\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Tooltip.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\ndefineJQueryPlugin(Tooltip)\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'\nimport { defineJQueryPlugin } from './util/index'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<ComponentConfig> & Record<string, unknown>\n\nconst Default: ComponentConfig = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click',\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Popover.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\ndefineJQueryPlugin(Popover)\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 { defineJQueryPlugin, getElement, isDisabled, isVisible, parseSelector } from './util/index'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<Omit<ComponentConfig, 'target' | 'threshold'>> & { target?: HTMLElement | string | null; threshold?: number[] | string } & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<string, HTMLElement>\n _observableSections: Map<string, HTMLElement>\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = ScrollSpy.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\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\ndefineJQueryPlugin(ScrollSpy)\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 { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index'\nimport type { JQueryCollectionLike } from './types'\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Tab.getOrCreateInstance(this) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\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\ndefineJQueryPlugin(Tab)\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 { defineJQueryPlugin, reflow } from './util/index.js'\nimport type { ComponentConfig as BaseComponentConfig, ElementSelector, JQueryCollectionLike } from './types'\n\ntype ComponentConfig = {\n animation: boolean\n autohide: boolean\n delay: number\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<typeof setTimeout> | 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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Toast.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\nenableDismissTrigger(Toast)\n\ndefineJQueryPlugin(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<HTMLElement>('[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<HTMLElement>('.navbar-vertical [data-bs-toggle=\"dropdown\"][aria-expanded=\"true\"]')) {\n if (toggle !== except) {\n ;(Dropdown.getInstance(toggle) as InstanceType<typeof Dropdown> | 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<HTMLElement>('[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<HTMLElement>('[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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = Record<string, never>\n\ntype ComponentConfigInput = Record<string, unknown>\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_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_LOADING = 'switch-icon-loading'\n\nconst SELECTOR_SWITCH_ICON = '.switch-icon'\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {}\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`. The element is the `.switch-icon` itself,\n * or a button (e.g. `.btn-action`) wrapping one: the classes then go on the\n * inner `.switch-icon` and the ARIA state stays on the button.\n */\n\nclass SwitchIcon extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n\n #iconElement!: HTMLElement\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n this.#iconElement = this._element.matches(SELECTOR_SWITCH_ICON) ? this._element : (SelectorEngine.findOne(SELECTOR_SWITCH_ICON, this._element) ?? this._element)\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\n // `.disabled` only blocks the pointer; Enter and Space still fire a click\n if (this._element.classList.contains(CLASS_NAME_DISABLED) || this._element.getAttribute('aria-disabled') === 'true') {\n return\n }\n\n this.toggle()\n })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get isActive(): boolean {\n return this.#iconElement.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n get isLoading(): boolean {\n return this.#iconElement.classList.contains(CLASS_NAME_LOADING)\n }\n\n // Public\n toggle(force?: boolean): void {\n if (this.isLoading) {\n return\n }\n\n const active = force ?? !this.isActive\n\n // A listener can cancel with preventDefault(), or hand over a promise with\n // wait(): the button shows a spinner until it settles and switches only\n // when it resolves.\n let pending: Promise<unknown> | undefined\n const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE, {\n active,\n wait: (promise: Promise<unknown>) => {\n pending = promise\n },\n })\n\n if (toggleEvent?.defaultPrevented) {\n return\n }\n\n if (!pending) {\n this.#setActive(active)\n return\n }\n\n this.#setLoading(true)\n pending\n .then(\n () => this.#setActive(active),\n () => undefined,\n )\n .finally(() => this.#setLoading(false))\n }\n\n // Private\n #setActive(active: boolean): void {\n this.#iconElement.classList.toggle(CLASS_NAME_ACTIVE, active)\n this._element.setAttribute('aria-pressed', String(active))\n\n EventHandler.trigger(this._element, EVENT_CHANGE, { active })\n }\n\n #setLoading(loading: boolean): void {\n this.#iconElement.classList.toggle(CLASS_NAME_LOADING, loading)\n if (loading) {\n this._element.setAttribute('aria-busy', 'true')\n } else {\n this._element.removeAttribute('aria-busy')\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start switch-icon-init\ninitAll(SELECTOR_DATA_TOGGLE, SwitchIcon)\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<HTMLAnchorElement>('[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<HTMLElement>('[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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\n// The part of a SortableJS instance the component uses\ninterface SortableInstance {\n option(name: string, value?: unknown): unknown\n toArray(): string[]\n sort(order: string[], useAnimation?: boolean): void\n destroy(): void\n}\n\ntype ComponentConfig = Record<string, unknown>\n\ntype ComponentConfigInput = Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'sortable'\nconst DATA_ATTRIBUTE = `data-${NAME}`\n\nconst SELECTOR_DATA_SORTABLE = `[${DATA_ATTRIBUTE}]`\n\n// SortableJS defaults apply. Set `forceFallback: true` to drag an HTML copy that\n// `.sortable-drag` can style, instead of the browser's drag image.\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record<string, string> = {}\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 * Turn `forceFallback` on so the dragged copy can be styled with `.sortable-drag`.\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<string, string> {\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<string, unknown>, element?: HTMLElement): Record<string, unknown> {\n // `data-sortable='{\"animation\":150}'` carries the options as JSON; a bare\n // `data-sortable` or invalid JSON means defaults.\n let dataOptions: Record<string, unknown> = {}\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\ninitAll(SELECTOR_DATA_SORTABLE, Sortable)\n// js-docs-end sortable-init\n\nexport default Sortable\nexport type { SortableInstance }\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype OtpInputType = 'numeric' | 'alphanumeric' | 'alpha'\n\ntype ComponentConfig = {\n groups: number[] | null\n length: number | null\n mask: boolean\n separator: string\n type: string\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"otp\"], [data-tblr-toggle=\"otp\"]'\nconst SELECTOR_INPUT = 'input'\n\n// Keeps the active-slot highlight in sync with the caret as it moves without typing\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES: Record<OtpInputType, { inputmode: string; pattern: string; filter: RegExp }> = {\n numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g },\n}\n\nconst Default: ComponentConfig = {\n groups: null,\n length: null,\n mask: false,\n separator: '·',\n type: 'numeric',\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n groups: '(array|null)',\n length: '(number|null)',\n mask: 'boolean',\n separator: 'string',\n type: 'string',\n}\n\n/**\n * Class definition\n *\n * A single real `<input>` inside `.otp` is turned into a transparent overlay\n * once its value is rendered into one `.otp-slot` per character, so screen\n * readers, password managers and SMS autofill still see one ordinary field.\n */\n\nclass OtpInput extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _input!: HTMLInputElement\n _type!: (typeof TYPES)[OtpInputType]\n _length = 0\n _slots: HTMLElement[] = []\n _slotsContainer: HTMLElement | null = null\n // Tracks a tap so focus (fired natively by the browser) can respect the\n // clicked slot instead of jumping to the first empty one\n _pointerActive = false\n _pointerIndex = 0\n\n _onInput = (): void => this._handleInput()\n _onBeforeInput = (event: Event): void => this._handleBeforeInput(event as InputEvent)\n _onFocus = (): void => this._handleFocus()\n _onPointerDown = (event: Event): void => this._handlePointerDown(event as PointerEvent)\n _onSync = (): void => this._render()\n _onSelectionChange = (): void => {\n if (document.activeElement === this._input) {\n this._render()\n }\n }\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n const input = SelectorEngine.findOne(SELECTOR_INPUT, this._element) as HTMLInputElement | null\n if (!input) {\n return\n }\n\n this._input = input\n this._type = TYPES[this._config.type as OtpInputType] ?? TYPES.numeric\n this._length = this._resolveLength()\n\n this._setupInput()\n this._renderSlots()\n this._addEventListeners()\n this._render()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n getValue(): string {\n return this._input.value\n }\n\n setValue(value: string | number): void {\n this._input.value = this._sanitize(String(value))\n this._render()\n this._checkComplete()\n }\n\n clear(): void {\n this._input.value = ''\n this._render()\n this._input.focus()\n }\n\n focus(): void {\n this._input.focus()\n this._selectSlot(this._firstEmptyIndex())\n this._render()\n }\n\n dispose(): void {\n if (!this._input) {\n super.dispose()\n return\n }\n\n this._input.removeEventListener('input', this._onInput)\n this._input.removeEventListener('beforeinput', this._onBeforeInput)\n this._input.removeEventListener('focus', this._onFocus)\n this._input.removeEventListener('pointerdown', this._onPointerDown)\n for (const type of SYNC_EVENTS) {\n this._input.removeEventListener(type, this._onSync)\n }\n\n document.removeEventListener('selectionchange', this._onSelectionChange)\n\n this._slotsContainer?.remove()\n this._element.classList.remove(CLASS_NAME_RENDERED)\n super.dispose()\n }\n\n // Private\n _resolveLength(): number {\n if (this._config.length) {\n return this._config.length\n }\n\n const maxLength = Number.parseInt(this._input.getAttribute('maxlength') ?? '', 10)\n return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n }\n\n _setupInput(): void {\n const input = this._input\n\n // A single text field backs the whole control so screen readers, password\n // managers, and SMS autofill treat it like any other input.\n if (input.type === 'number' || input.type === 'password') {\n input.type = 'text'\n }\n\n input.classList.add(CLASS_NAME_INPUT)\n input.setAttribute('maxlength', String(this._length))\n input.setAttribute('inputmode', this._type.inputmode)\n input.setAttribute('pattern', this._type.pattern)\n\n if (!input.getAttribute('autocomplete')) {\n input.setAttribute('autocomplete', 'one-time-code')\n }\n\n if (input.value) {\n input.value = this._sanitize(input.value)\n }\n }\n\n _renderSlots(): void {\n const container = document.createElement('div')\n container.className = CLASS_NAME_SLOTS\n container.setAttribute('aria-hidden', 'true')\n\n const { groups, separator } = this._config\n let groupIndex = 0\n let inGroup = 0\n\n for (let i = 0; i < this._length; i++) {\n const slot = document.createElement('div')\n slot.className = CLASS_NAME_SLOT\n container.append(slot)\n this._slots.push(slot)\n\n if (groups && groups.length > 0) {\n inGroup++\n if (inGroup === groups[groupIndex] && i < this._length - 1) {\n const separatorEl = document.createElement('div')\n separatorEl.className = CLASS_NAME_SEPARATOR\n separatorEl.textContent = separator\n container.append(separatorEl)\n groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n inGroup = 0\n }\n }\n }\n\n this._slotsContainer = container\n this._element.append(container)\n this._element.classList.add(CLASS_NAME_RENDERED)\n }\n\n _addEventListeners(): void {\n this._input.addEventListener('input', this._onInput)\n this._input.addEventListener('beforeinput', this._onBeforeInput)\n this._input.addEventListener('focus', this._onFocus)\n this._input.addEventListener('pointerdown', this._onPointerDown)\n document.addEventListener('selectionchange', this._onSelectionChange)\n\n for (const type of SYNC_EVENTS) {\n this._input.addEventListener(type, this._onSync)\n }\n }\n\n _handleFocus(): void {\n if (this._pointerActive) {\n // Wait for focus to settle before moving the caret, or iOS raises then\n // immediately dismisses the on-screen keyboard.\n this._pointerActive = false\n this._selectSlot(this._pointerIndex)\n this._render()\n return\n }\n\n this._selectSlot(this._firstEmptyIndex())\n this._render()\n }\n\n // Bulk path: paste, SMS autofill, or a programmatic change land here as a\n // single multi-character `input` event. Single keystrokes are handled by\n // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n _handleInput(): void {\n const sanitized = this._sanitize(this._input.value)\n if (sanitized !== this._input.value) {\n this._input.value = sanitized\n }\n\n if (document.activeElement === this._input) {\n this._selectSlot(this._firstEmptyIndex())\n }\n\n this._afterValueChange()\n }\n\n // Intercepts single-character typing and backspace so each slot is\n // overwritten in place rather than inserting and shifting the value.\n // Anything else (paste, autofill, IME) falls through to `_handleInput`.\n _handleBeforeInput(event: InputEvent): void {\n const { inputType, data } = event\n\n if (inputType === 'insertText' && data && data.length === 1) {\n event.preventDefault()\n\n const char = this._sanitize(data)\n if (!char) {\n return\n }\n\n const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n const chars = [...this._input.value]\n chars[index] = char\n this._input.value = chars.join('').slice(0, this._length)\n\n this._selectSlot(index + 1)\n this._afterValueChange()\n return\n }\n\n if (inputType === 'deleteContentBackward') {\n event.preventDefault()\n\n const start = this._input.selectionStart ?? 0\n const end = this._input.selectionEnd ?? start\n const chars = [...this._input.value]\n\n if (end > start) {\n chars.splice(start, end - start)\n this._input.value = chars.join('')\n this._selectSlot(start)\n } else if (start > 0) {\n chars.splice(start - 1, 1)\n this._input.value = chars.join('')\n this._selectSlot(start - 1)\n }\n\n this._afterValueChange()\n }\n }\n\n _handlePointerDown(event: PointerEvent): void {\n const index = this._slotIndexFromPoint(event.clientX)\n if (index === null) {\n return\n }\n\n const target = Math.min(index, this._firstEmptyIndex())\n\n if (document.activeElement === this._input) {\n // Already focused: safe to take over caret placement, it won't dismiss\n // the on-screen keyboard.\n event.preventDefault()\n this._selectSlot(target)\n this._render()\n return\n }\n\n // Not yet focused: let the browser focus the input natively so a tap\n // raises the on-screen keyboard; the caret is placed once focus settles.\n this._pointerActive = true\n this._pointerIndex = target\n }\n\n // Maps a viewport x-coordinate to the slot under it, clamped to the last slot.\n _slotIndexFromPoint(x: number): number | null {\n const rtl = getComputedStyle(this._element).direction === 'rtl'\n\n for (const [index, slot] of this._slots.entries()) {\n const rect = slot.getBoundingClientRect()\n // RTL mirrors the visual slot order, so the boundary flips from the\n // right edge (v6, LTR-only) to the left edge.\n const reached = rtl ? x >= rect.left : x <= rect.right\n\n if (reached || index === this._slots.length - 1) {\n return index\n }\n }\n\n return null\n }\n\n _afterValueChange(): void {\n this._render()\n EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n this._checkComplete()\n }\n\n _firstEmptyIndex(): number {\n return Math.min(this._input.value.length, this._length - 1)\n }\n\n // Represents the active slot as a selection: a filled slot is selected so\n // the next keystroke overwrites it; an empty slot gets a collapsed caret.\n _selectSlot(index: number): void {\n const clamped = Math.max(0, Math.min(index, this._length - 1))\n const end = clamped < this._input.value.length ? clamped + 1 : clamped\n this._input.setSelectionRange(clamped, end)\n }\n\n _sanitize(value: string): string {\n return value.replace(this._type.filter, '').slice(0, this._length)\n }\n\n _render(): void {\n const { value } = this._input\n const isFocused = document.activeElement === this._input\n const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n for (const [index, slot] of this._slots.entries()) {\n const char = value[index] ?? ''\n slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n }\n }\n\n _checkComplete(): void {\n const { value } = this._input\n if (value.length === this._length) {\n EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start otp-init\ninitAll(SELECTOR_DATA_TOGGLE, OtpInput)\n// js-docs-end otp-init\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Tabler sparkline.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ComponentConfig as BaseConfig, ElementSelector } from './bootstrap/types'\n\ntype SparklineType = 'line' | 'bar' | 'circle' | 'tristate'\ntype SparklineFill = 'none' | 'auto'\ntype SparklineSpot = 'none' | 'min' | 'max' | 'last'\ntype SparklineValuesInput = number[] | number | string\n\ntype ComponentConfig = {\n type: SparklineType\n values: number[]\n width: number\n height: number\n min: number | null\n max: number | null\n fill: SparklineFill\n spot: SparklineSpot\n pad: number\n barGap: number\n barRadius: number\n label: string | number | boolean | null\n threshold: number | null\n animation: number\n}\n\ntype ComponentConfigInput = Partial<Omit<ComponentConfig, 'values'>> & {\n values?: SparklineValuesInput\n}\n\n/**\n * Constants\n */\n\nconst NAME = 'sparkline'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_RENDERED = `rendered${EVENT_KEY}`\nconst EVENT_UPDATED = `updated${EVENT_KEY}`\n\nconst CLASS_NAME_SVG = 'sparkline-svg'\nconst CLASS_NAME_LABEL = 'sparkline-label'\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\n// Custom properties are declared on `.sparkline` in scss/ui/_sparkline.scss and\n// get the `--tblr-` prefix at build time.\nconst CSS_VAR_PREFIX = '--tblr-sparkline'\nconst SVG_NS = 'http://www.w3.org/2000/svg'\n\nconst Default: ComponentConfig = {\n type: 'line',\n values: [],\n width: 80,\n height: 24,\n min: null,\n max: null,\n fill: 'none',\n spot: 'none',\n pad: 2,\n barGap: 2,\n barRadius: 2,\n label: null,\n threshold: null,\n animation: 300,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n type: 'string',\n values: 'array',\n width: 'number',\n height: 'number',\n min: '(number|null)',\n max: '(number|null)',\n fill: 'string',\n spot: 'string',\n pad: 'number',\n barGap: 'number',\n barRadius: 'number',\n label: '(string|number|boolean|null)',\n threshold: '(number|null)',\n animation: 'number',\n}\n\n/**\n * Helpers\n */\n\nconst svgEl = <K extends keyof SVGElementTagNameMap>(tag: K): SVGElementTagNameMap[K] => document.createElementNS(SVG_NS, tag)\n\nconst setAttr = (el: Element, attrs: Record<string, string | number | null | undefined>): void => {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== null && value !== undefined) {\n el.setAttribute(key, String(value))\n }\n }\n}\n\nconst cssVar = (name: string): string => `var(${CSS_VAR_PREFIX}-${name})`\n\nconst clampSpan = (min: number, max: number): number => {\n const span = max - min\n return span === 0 ? 1 : span\n}\n\n// Accepts \"3,4,2\" as well as a JSON array literal \"[3,4,2]\".\nconst parseNumberList = (input: unknown): number[] => {\n const raw = String(input ?? '').trim()\n if (!raw) {\n return []\n }\n\n if (raw.startsWith('[')) {\n try {\n const arr = JSON.parse(raw)\n return Array.isArray(arr) ? arr.map(Number).filter(Number.isFinite) : []\n } catch {\n return []\n }\n }\n\n return raw\n .split(',')\n .map((value) => Number(value.trim()))\n .filter(Number.isFinite)\n}\n\nconst toValues = (input: unknown): number[] => {\n if (Array.isArray(input)) {\n return input.map(Number).filter(Number.isFinite)\n }\n\n if (typeof input === 'number') {\n return Number.isFinite(input) ? [input] : []\n }\n\n return parseNumberList(input)\n}\n\n// The value range a chart is drawn in: forced by `min` / `max`, otherwise the\n// data itself, widened to include the threshold (and zero for bars) so those\n// lines are always inside the chart.\nconst rangeOf = (values: number[], minForced: number | null, maxForced: number | null, ...include: number[]): { min: number; max: number; span: number } => {\n const min = minForced ?? Math.min(...values, ...include)\n const max = maxForced ?? Math.max(...values, ...include)\n return { min, max, span: clampSpan(min, max) }\n}\n\nconst NUMBER_RE = /-?\\d*\\.?\\d+(?:e[-+]?\\d+)?/g\n\n// Interpolates the numbers inside two attribute values with the same shape:\n// \"0,20 40,10\" → \"0,10 40,20\", or a path `d`. Falls back to the target when\n// the shapes differ.\nconst lerpAttr = (from: string, to: string, t: number): string => {\n const a = from.match(NUMBER_RE)\n const b = to.match(NUMBER_RE)\n if (!a || !b || a.length !== b.length || from.replace(NUMBER_RE, '#') !== to.replace(NUMBER_RE, '#')) {\n return to\n }\n\n let i = 0\n return to.replace(NUMBER_RE, () => {\n const value = Number(a[i]) + (Number(b[i]) - Number(a[i])) * t\n i++\n return String(Math.round(value * 1000) / 1000)\n })\n}\n\nconst easeOut = (t: number): number => 1 - (1 - t) ** 3\n\nconst findIndexByMode = (values: number[], mode: SparklineSpot): number => {\n if (values.length === 0 || mode === 'none') {\n return -1\n }\n\n if (mode === 'last') {\n return values.length - 1\n }\n\n let idx = 0\n for (let i = 1; i < values.length; i++) {\n if (mode === 'min' ? values[i] < values[idx] : values[i] > values[idx]) {\n idx = i\n }\n }\n\n return idx\n}\n\nconst getCssNumber = (element: Element, name: string, fallback: number): number => {\n const raw = getComputedStyle(element).getPropertyValue(`${CSS_VAR_PREFIX}-${name}`).trim()\n const value = Number.parseFloat(raw)\n return Number.isFinite(value) ? value : fallback\n}\n\n/**\n * Class definition\n *\n * Tiny inline SVG chart (line, bar or circle) rendered from data attributes:\n *\n * <span class=\"sparkline\" data-bs-toggle=\"sparkline\" data-bs-type=\"line\" data-bs-values=\"3,4,2,6,5,8,7\"></span>\n *\n * Colours and stroke widths come from the `--tblr-sparkline-*` custom\n * properties, so a text colour utility on the element themes the chart.\n */\n\nclass Sparkline extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _userConfig: ComponentConfigInput = {}\n _frame = 0\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n // Kept so that render() can re-read the data attributes on top of it.\n this._userConfig = { ...config }\n this.render()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n update(values: SparklineValuesInput): void {\n const serialized = Array.isArray(values) ? values.join(',') : String(values)\n const attribute = this._element.hasAttribute('data-tblr-values') ? 'data-tblr-values' : 'data-bs-values'\n this._element.setAttribute(attribute, serialized)\n\n // The attribute is now the source of truth for the values.\n delete this._userConfig.values\n this.render()\n EventHandler.trigger(this._element, EVENT_UPDATED)\n }\n\n render(): void {\n this._config = this._getConfig(this._userConfig) as ComponentConfig\n const previous = this._element.querySelector<SVGSVGElement>('svg')\n this._element.querySelector(`.${CLASS_NAME_LABEL}`)?.remove()\n\n if (this._config.values.length === 0) {\n this._element.innerHTML = ''\n return\n }\n\n let svg: SVGSVGElement\n switch (this._config.type) {\n case 'bar':\n svg = this._renderBars()\n break\n case 'tristate':\n svg = this._renderTristate()\n break\n case 'circle':\n svg = this._renderCircle()\n break\n default:\n svg = this._renderLine()\n break\n }\n\n // On an update with the same shape (type and number of values) the old\n // SVG stays in place and its attributes are tweened to the new ones.\n if (previous && this._canAnimate(previous, svg)) {\n this._animate(previous, svg)\n } else {\n cancelAnimationFrame(this._frame)\n previous?.remove()\n this._element.append(svg)\n }\n\n // A text label centered over the chart, mainly for the circle type. Plain\n // HTML rather than SVG text, so it keeps the page font and is not\n // stretched with the viewBox.\n const text = this._labelText()\n if (text !== '') {\n const label = document.createElement('span')\n label.className = CLASS_NAME_LABEL\n label.textContent = text\n this._element.append(label)\n }\n\n EventHandler.trigger(this._element, EVENT_RENDERED)\n }\n\n dispose(): void {\n cancelAnimationFrame(this._frame)\n this._element.innerHTML = ''\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config: BaseConfig): BaseConfig {\n config.values = toValues(config.values)\n return config\n }\n\n // `auto` (or `true`) derives the label from the data: the share of `max`\n // for a circle, the last value otherwise. Anything else is printed as is.\n _labelText(): string {\n const { label, values, type } = this._config\n if (label === null || label === false || label === '') {\n return ''\n }\n\n if (label !== 'auto' && label !== true) {\n return String(label)\n }\n\n if (type === 'circle') {\n return `${Math.round(this._circleRatio() * 100)}%`\n }\n\n return String(values[values.length - 1])\n }\n\n // A single value is a share of `max` (default 100); a second value may be\n // passed as the maximum instead: data-bs-values=\"72,100\".\n _circleRatio(): number {\n const cfg = this._config\n const value = cfg.values[0] ?? 0\n const max = cfg.max ?? (cfg.values.length > 1 ? cfg.values[1] : 100)\n const min = cfg.min ?? 0\n return Math.max(0, Math.min(1, (value - min) / clampSpan(min, max)))\n }\n\n _canAnimate(from: SVGSVGElement, to: SVGSVGElement): boolean {\n if (this._config.animation <= 0 || window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n return false\n }\n\n if (from.getAttribute('viewBox') !== to.getAttribute('viewBox') || from.children.length !== to.children.length) {\n return false\n }\n\n return Array.from(from.children).every((child, i) => child.tagName === to.children[i].tagName)\n }\n\n _animate(from: SVGSVGElement, to: SVGSVGElement): void {\n cancelAnimationFrame(this._frame)\n\n const pairs = Array.from(to.children).map((target, i) => {\n const source = from.children[i]\n const tweens: [string, string, string][] = []\n for (const { name, value } of Array.from(target.attributes)) {\n const start = source.getAttribute(name)\n if (start === null || start === value) {\n source.setAttribute(name, value)\n } else {\n tweens.push([name, start, value])\n }\n }\n\n return { source, tweens }\n })\n\n const duration = this._config.animation\n const started = performance.now()\n const step = (now: number): void => {\n const t = easeOut(Math.min(1, (now - started) / duration))\n for (const { source, tweens } of pairs) {\n for (const [name, start, end] of tweens) {\n source.setAttribute(name, t >= 1 ? end : lerpAttr(start, end, t))\n }\n }\n\n if (t < 1) {\n this._frame = requestAnimationFrame(step)\n }\n }\n\n this._frame = requestAnimationFrame(step)\n }\n\n // A 1px horizontal guide: solid for the zero line, dashed for the threshold.\n _hairline(svg: SVGSVGElement, y: number, color: string, dashed = false): void {\n const line = svgEl('line')\n setAttr(line, {\n 'x1': 0,\n 'x2': this._config.width,\n 'y1': y,\n 'y2': y,\n 'stroke': cssVar(color),\n 'stroke-width': 1,\n 'stroke-dasharray': dashed ? '3 2' : null,\n 'vector-effect': 'non-scaling-stroke',\n })\n svg.append(line)\n }\n\n _createSvg(): SVGSVGElement {\n const { width, height } = this._config\n const svg = svgEl('svg')\n setAttr(svg, {\n 'viewBox': `0 0 ${width} ${height}`,\n 'preserveAspectRatio': 'none',\n 'width': width,\n 'height': height,\n 'class': CLASS_NAME_SVG,\n 'aria-hidden': 'true',\n })\n return svg\n }\n\n _renderLine(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const { min, span } = rangeOf(cfg.values, cfg.min, cfg.max, ...(cfg.threshold === null ? [] : [cfg.threshold]))\n const yOf = (value: number): number => cfg.pad + (1 - (value - min) / span) * (cfg.height - cfg.pad * 2)\n const ys = cfg.values.map(yOf)\n const step = ys.length > 1 ? cfg.width / (ys.length - 1) : cfg.width\n\n if (cfg.threshold !== null) {\n this._hairline(svg, yOf(cfg.threshold), 'threshold', true)\n }\n\n if (cfg.fill === 'auto') {\n const area = svgEl('path')\n setAttr(area, {\n d: this._areaPath(ys, step, cfg.height),\n fill: cssVar('fill'),\n stroke: 'none',\n })\n svg.append(area)\n }\n\n const line = svgEl('polyline')\n setAttr(line, {\n 'points': ys.map((y, i) => `${i * step},${y}`).join(' '),\n 'fill': 'none',\n 'stroke': cssVar('stroke'),\n 'stroke-width': cssVar('stroke-width'),\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n })\n svg.append(line)\n\n const spotIndex = findIndexByMode(cfg.values, cfg.spot)\n if (spotIndex >= 0) {\n const spot = svgEl('circle')\n setAttr(spot, {\n cx: spotIndex * step,\n cy: ys[spotIndex],\n r: getCssNumber(this._element, 'spot-size', 2),\n fill: cssVar('spot'),\n })\n svg.append(spot)\n }\n\n return svg\n }\n\n _areaPath(ys: number[], step: number, height: number): string {\n const top = ys.map((y, i) => `${i === 0 ? 'M' : 'L'} ${i * step} ${y}`).join(' ')\n const lastX = (ys.length - 1) * step\n return `${top} L ${lastX} ${height} L 0 ${height} Z`\n }\n\n _renderBars(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const { min, span } = rangeOf(cfg.values, cfg.min, cfg.max, 0, ...(cfg.threshold === null ? [] : [cfg.threshold]))\n const yOf = (value: number): number => cfg.height - ((value - min) / span) * cfg.height\n\n const count = cfg.values.length\n const barWidth = (cfg.width - cfg.barGap * (count - 1)) / count\n // Bars grow from the zero line: upwards for positive values, downwards\n // (in the \"negative\" color) for negative ones. With no negative values the\n // zero line is the bottom edge; otherwise it is drawn as a hairline.\n const zeroY = yOf(0)\n\n if (min < 0) {\n this._hairline(svg, zeroY, 'zero')\n }\n\n // With a threshold, the bars below it take the \"negative\" color instead.\n if (cfg.threshold !== null) {\n this._hairline(svg, yOf(cfg.threshold), 'threshold', true)\n }\n\n // A bar spans from the zero line to its value, clipped to the chart when a\n // forced `min` / `max` puts part of it (or the zero line) outside.\n const clip = (y: number): number => Math.max(0, Math.min(cfg.height, y))\n\n cfg.values.forEach((value, i) => {\n const top = clip(yOf(Math.max(value, 0)))\n const bottom = clip(yOf(Math.min(value, 0)))\n const below = cfg.threshold === null ? value < 0 : value < cfg.threshold\n const bar = svgEl('rect')\n setAttr(bar, {\n x: i * (barWidth + cfg.barGap),\n y: top,\n width: barWidth,\n height: bottom - top,\n rx: cfg.barRadius,\n fill: cssVar(below ? 'negative' : 'stroke'),\n })\n svg.append(bar)\n })\n\n return svg\n }\n\n // Win/loss: every value is a full bar up (positive), down (negative) or a\n // short tick on the zero line (zero), regardless of its size.\n _renderTristate(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const count = cfg.values.length\n const barWidth = (cfg.width - cfg.barGap * (count - 1)) / count\n const zeroY = cfg.height / 2\n const tick = Math.min(2, zeroY)\n\n this._hairline(svg, zeroY, 'zero')\n\n cfg.values.forEach((value, i) => {\n const bar = svgEl('rect')\n const attrs = value > 0 ? { y: 0, height: zeroY, fill: 'stroke' } : value < 0 ? { y: zeroY, height: zeroY, fill: 'negative' } : { y: zeroY - tick / 2, height: tick, fill: 'track' }\n setAttr(bar, {\n x: i * (barWidth + cfg.barGap),\n y: attrs.y,\n width: barWidth,\n height: attrs.height,\n rx: cfg.barRadius,\n fill: cssVar(attrs.fill),\n })\n svg.append(bar)\n })\n\n return svg\n }\n\n _renderCircle(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const strokeWidth = getCssNumber(this._element, 'stroke-width', 3)\n const radius = Math.max(0, Math.min(cfg.width, cfg.height) / 2 - strokeWidth / 2)\n const cx = cfg.width / 2\n const cy = cfg.height / 2\n\n const ratio = this._circleRatio()\n const circumference = 2 * Math.PI * radius\n\n const track = svgEl('circle')\n setAttr(track, {\n 'cx': cx,\n 'cy': cy,\n 'r': radius,\n 'fill': 'none',\n 'stroke': cssVar('track'),\n 'stroke-width': strokeWidth,\n })\n svg.append(track)\n\n const ring = svgEl('circle')\n setAttr(ring, {\n 'cx': cx,\n 'cy': cy,\n 'r': radius,\n 'fill': 'none',\n 'stroke': cssVar('stroke'),\n 'stroke-width': strokeWidth,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circumference,\n 'stroke-dashoffset': circumference * (1 - ratio),\n 'transform': `rotate(-90 ${cx} ${cy})`,\n })\n svg.append(ring)\n\n return svg\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start sparkline-init\ninitAll(SELECTOR_DATA_TOGGLE, Sparkline)\n// js-docs-end sparkline-init\n\nexport default Sparkline\n","/**\n * --------------------------------------------------------------------------\n * Tabler strength.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype StrengthLevel = 'weak' | 'fair' | 'good' | 'strong'\n\ntype ComponentConfig = {\n /** selector of the password field; without it the meter looks in its own parent */\n input: string | null\n minLength: number\n messages: Record<StrengthLevel, string>\n weights: Record<string, number>\n /** score bounds: weak up to the first, fair to the second, good to the third */\n thresholds: number[]\n /** replaces the built-in scoring; gets the password, returns a number */\n scorer: ((password: string) => number) | null\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_STRENGTH = `[data-bs-${NAME}], [data-tblr-${NAME}]`\nconst SELECTOR_SEGMENT = `.${NAME}-segment`\nconst SELECTOR_TEXT = `.${NAME}-text`\nconst SELECTOR_PASSWORD = 'input[type=\"password\"]'\n\nconst LEVELS: StrengthLevel[] = ['weak', 'fair', 'good', 'strong']\n\nconst Default: ComponentConfig = {\n input: null,\n minLength: 8,\n messages: {\n weak: 'Weak',\n fair: 'Fair',\n good: 'Good',\n strong: 'Strong',\n },\n weights: {\n minLength: 1,\n extraLength: 1,\n longPassword: 1,\n lowercase: 1,\n uppercase: 1,\n numbers: 1,\n special: 1,\n multipleSpecial: 1,\n },\n thresholds: [2, 4, 6],\n scorer: null,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n input: '(string|null)',\n minLength: 'number',\n messages: 'object',\n weights: 'object',\n thresholds: 'array',\n scorer: '(function|null)',\n}\n\n/**\n * Class definition\n *\n * Rates the password typed in a field and fills a segmented meter. The score\n * is a hint for the user, never a validation: check the password on the\n * server as well.\n */\n\nclass Strength extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _input: HTMLInputElement | null = null\n _segments: HTMLElement[] = []\n _text: HTMLElement | null = null\n // What the markup put in the label element: shown while the field is empty,\n // so a form can keep its password rules there until a level replaces them.\n _emptyText = ''\n _level: StrengthLevel | null = null\n _onInput = (): void => this.evaluate()\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n this._input = this._getInput()\n this._segments = SelectorEngine.find(SELECTOR_SEGMENT, this._element)\n this._text = this._getText()\n this._emptyText = this._text?.textContent?.trim() ?? ''\n\n this._setUpAria()\n\n if (!this._input) {\n return\n }\n\n this._input.addEventListener('input', this._onInput)\n this.evaluate()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get level(): StrengthLevel | null {\n return this._level\n }\n\n // Public\n evaluate(): void {\n if (!this._input) {\n return\n }\n\n const password = this._input.value\n const score = this._score(password)\n const level = this._level_(score)\n\n if (level === this._level) {\n return\n }\n\n this._level = level\n this._render(level)\n\n // The password itself is never part of the payload.\n EventHandler.trigger(this._element, EVENT_CHANGE, { strength: level, score })\n }\n\n dispose(): void {\n this._input?.removeEventListener('input', this._onInput)\n super.dispose()\n }\n\n // Private\n _getInput(): HTMLInputElement | null {\n const { input } = this._config\n if (input) {\n return SelectorEngine.findOne(input) as HTMLInputElement | null\n }\n\n // Without an explicit selector only the meter's own parent is searched, so\n // a form with several password fields cannot bind the wrong one.\n const parent = this._element.parentElement\n const fields = parent ? (SelectorEngine.find(SELECTOR_PASSWORD, parent) as HTMLInputElement[]) : []\n return fields[fields.length - 1] ?? null\n }\n\n _getText(): HTMLElement | null {\n const parent = this._element.parentElement\n return parent ? SelectorEngine.findOne(SELECTOR_TEXT, parent) : null\n }\n\n _setUpAria(): void {\n const element = this._element\n element.setAttribute('role', 'progressbar')\n element.setAttribute('aria-valuemin', '0')\n element.setAttribute('aria-valuemax', String(LEVELS.length))\n element.setAttribute('aria-valuenow', '0')\n\n if (!element.hasAttribute('aria-label') && !element.hasAttribute('aria-labelledby')) {\n element.setAttribute('aria-label', 'Password strength')\n }\n\n // The segments are decoration; the level is read from the meter itself.\n for (const segment of this._segments) {\n segment.setAttribute('aria-hidden', 'true')\n }\n\n this._text?.setAttribute('aria-live', 'polite')\n }\n\n _score(password: string): number {\n if (!password) {\n return 0\n }\n\n const { scorer, weights, minLength } = this._config\n if (typeof scorer === 'function') {\n return scorer(password)\n }\n\n const rules: [boolean, number | undefined][] = [\n [password.length >= minLength, weights.minLength],\n [password.length >= minLength + 4, weights.extraLength],\n [password.length >= 16, weights.longPassword],\n [/[a-z]/.test(password), weights.lowercase],\n [/[A-Z]/.test(password), weights.uppercase],\n [/\\d/.test(password), weights.numbers],\n [/[^\\dA-Za-z]/.test(password), weights.special],\n [(password.match(/[^\\dA-Za-z]/g) ?? []).length > 1, weights.multipleSpecial],\n ]\n\n return rules.reduce((score, [passed, weight]) => score + (passed ? (weight ?? 0) : 0), 0)\n }\n\n // Trailing underscore: `_level` is the field holding the current value.\n _level_(score: number): StrengthLevel | null {\n if (score <= 0) {\n return null\n }\n\n const index = this._config.thresholds.findIndex((threshold) => score <= threshold)\n return LEVELS[index === -1 ? LEVELS.length - 1 : index] ?? null\n }\n\n _render(level: StrengthLevel | null): void {\n const element = this._element\n const index = level ? LEVELS.indexOf(level) : -1\n\n // Emptied rather than removed: `data-bs-strength` is also the attribute\n // the data API looks for, and an empty value matches no level in CSS.\n element.dataset.bsStrength = level ?? ''\n\n element.setAttribute('aria-valuenow', String(index + 1))\n // No level means no spoken value: `aria-valuenow` of 0 says it already,\n // and an invented word here could not be translated through `messages`.\n if (level) {\n element.setAttribute('aria-valuetext', this._config.messages[level] ?? level)\n } else {\n element.removeAttribute('aria-valuetext')\n }\n\n // The segments are filled in proportion, so a meter with three or five of\n // them works as well as the usual four.\n const filled = level ? Math.ceil(((index + 1) / LEVELS.length) * this._segments.length) : 0\n for (const [position, segment] of this._segments.entries()) {\n segment.classList.toggle(CLASS_NAME_ACTIVE, position < filled)\n }\n\n if (this._text) {\n this._text.textContent = level ? (this._config.messages[level] ?? '') : this._emptyText\n this._text.dataset.bsStrength = level ?? ''\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start strength-init\ninitAll(SELECTOR_DATA_STRENGTH, Strength)\n// js-docs-end strength-init\n\nexport default Strength\n","/**\n * Helpers kept only so that projects written for an older 1.x release keep\n * working. They are exported as the `tabler` namespace: `tabler.tabler.getColor()`\n * from the bundle, `import { tabler } from '@tabler/core'` from the module.\n *\n * Removed in 2.0, together with this file. Read the custom property yourself,\n * and mix the opacity in with `color-mix()`.\n */\n\nexport const prefix: string = 'tblr-'\n\nexport const hexToRgba = (hex: string, opacity: number): string | null => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n return result ? `rgba(${parseInt(result[1]!, 16)}, ${parseInt(result[2]!, 16)}, ${parseInt(result[3]!, 16)}, ${opacity})` : null\n}\n\nexport const getColor = (color: string, opacity: number = 1): string | null => {\n const c = getComputedStyle(document.body).getPropertyValue(`--${prefix}${color}`).trim()\n\n if (opacity === 1) {\n return c\n }\n\n // The palette is written in `oklch()` since 1.6, which `hexToRgba()` cannot\n // read, so anything that is not a hex colour gets its opacity from the browser.\n return hexToRgba(c, opacity) ?? (c ? `color-mix(in srgb, ${c} ${opacity * 100}%, transparent)` : null)\n}\n"],"x_google_ignoreList":[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,68,69],"mappings":"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"}
1
+ {"version":3,"file":"tabler.js","names":["effect","getComputedStyle","getComputedStyle","mathMax","min","mathMin","max","effect","getComputedStyle","hash","getComputedStyle","getComputedStyle","getComputedStyle","allPlacements","placements","min","max","mathMin","mathMax","createPopper","defaultModifiers","eventListeners","popperOffsets","computeStyles","applyStyles","createPopper","eventListeners","popperOffsets","computeStyles","applyStyles","offset","flip","preventOverflow","arrow","hide"],"sources":["../../js/src/bootstrap/dom/data.ts","../../js/src/bootstrap/util/index.ts","../../js/src/bootstrap/dom/event-handler.ts","../../js/src/bootstrap/dom/manipulator.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/autosize.ts","../../js/src/clipboard.ts","../../js/src/confetti.ts","../../js/src/countup.ts","../../js/src/datepicker.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","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.js","../../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/sidebar.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/otp-input.ts","../../js/src/sparkline.ts","../../js/src/strength.ts","../../js/src/deprecated.ts"],"sourcesContent":["/**\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<HTMLElement, Map<string, object>>()\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<T = object>(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 util/index.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport type { JQueryPluginStatic, JQueryStaticLike } from '../types'\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\nconst parseSelector = (selector: string): string => {\n if (selector && typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\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\n .call(object)\n .match(/\\s([a-z]+)/i)![1]\n .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\n// A jQuery collection stands in for its first element, as in upstream Bootstrap.\nconst unwrapJQuery = (object: unknown): unknown => {\n if (object && typeof object === 'object' && typeof (object as { jquery?: unknown }).jquery !== 'undefined') {\n return (object as { 0?: unknown })[0]\n }\n\n return object\n}\n\nconst isElement = (object: unknown): object is HTMLElement => {\n object = unwrapJQuery(object)\n\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 object = unwrapJQuery(object)\n\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 getjQuery = (): JQueryStaticLike | null => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') && !document.body.hasAttribute('data-tblr-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks: Array<() => void> = []\n\nconst onDOMContentLoaded = (callback: () => void): void => {\n if (document.readyState === 'loading') {\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const domCallback of DOMContentLoadedCallbacks) {\n domCallback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst defineJQueryPlugin = (plugin: JQueryPluginStatic): void => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (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 = <T>(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 { defineJQueryPlugin, execute, executeAfterTransition, findShadowRoot, getElement, getjQuery, getNextActiveElement, getTransitionDurationFromElement, getUID, isDisabled, isElement, isRTL, isVisible, noop, onDOMContentLoaded, parseSelector, reflow, triggerTransitionEnd, toType }\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\nimport type { JQueryEventLike } from '../types'\n\n// `this` is the element the handler was bound to, or the delegate target\nexport type EventCallback<E extends Event = Event> = (this: HTMLElement, event: E) => void\n\nexport type DelegatedEvent<E extends Event = Event> = E & { delegateTarget: HTMLElement }\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<string | number, Record<string, Record<string | number, BootstrapHandler>>> = {}\nlet uidEvent = 1\nconst customEvents: Record<string, string> = {\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<string, Record<string | number, BootstrapHandler>> {\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 as HTMLElement, [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 as HTMLElement, [event])\n }\n }\n } as BootstrapHandler\n}\n\nfunction findHandler(events: Record<string | number, BootstrapHandler>, callable: EventCallback, delegationSelector: string | null = null): BootstrapHandler | undefined {\n return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent: string, handler: string | false | EventCallback | undefined, delegationFunction: EventCallback | undefined): [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(element: EventTarget | null, originalTypeEvent: string, handler: string | false | EventCallback | undefined, delegationFunction: EventCallback | undefined, oneOff: boolean): 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: Event) {\n const evt = event as DelegatedEvent<MouseEvent>\n if (!evt.relatedTarget || (evt.relatedTarget !== evt.delegateTarget && !evt.delegateTarget.contains(evt.relatedTarget as Node))) {\n return fn.call(this as HTMLElement, 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 ? bootstrapDelegationHandler(element, handler as string, callable) : 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(element: EventTarget, events: Record<string, Record<string | number, BootstrapHandler>>, typeEvent: string, handler: EventCallback, delegationSelector?: string | null): 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(element: EventTarget, events: Record<string, Record<string | number, BootstrapHandler>>, typeEvent: string, namespace: string): 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<E extends Event = Event>(element: EventTarget | null, event: string, handler: string | false | EventCallback<E>, delegationFunction?: EventCallback<E>): void {\n addHandler(element, event, handler as string | false | EventCallback, delegationFunction as EventCallback | undefined, false)\n },\n\n one<E extends Event = Event>(element: EventTarget | null, event: string, handler: string | false | EventCallback<E>, delegationFunction?: EventCallback<E>): void {\n addHandler(element, event, handler as string | false | EventCallback, delegationFunction as EventCallback | undefined, true)\n },\n\n off<E extends Event = Event>(element: EventTarget | null, originalTypeEvent: string, handler?: string | false | EventCallback<E>, delegationFunction?: EventCallback<E>): void {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler as string | false | EventCallback | undefined, delegationFunction as EventCallback | undefined)\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<string, unknown>): Event | null {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent: JQueryEventLike | null = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n },\n}\n\nfunction hydrateObj<T extends object>(obj: T, meta: Record<string, unknown> = {}): T {\n for (const [key, value] of Object.entries(meta)) {\n try {\n ;(obj as Record<string, unknown>)[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<string, unknown>\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-bs-${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<string, DataValue> {\n if (!element) {\n return {}\n }\n\n const attributes: Record<string, DataValue> = {}\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/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(`${ctor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`)\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 const ctor = this.constructor as unknown as BaseComponentStatic\n Data.get<BaseComponent>(resolved, ctor.DATA_KEY)?.dispose()\n\n this._element = resolved\n this._config = this._getConfig(config)\n\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<string, unknown>)[propertyName] = null\n }\n }\n\n _queueCallback(callback: () => void, element: HTMLElement, isAnimated = true): void {\n executeAfterTransition(\n () => {\n if (this._element) {\n callback()\n }\n },\n element,\n isAnimated,\n )\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 : undefined)\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\n ? selector\n .split(',')\n .map((sel) => parseSelector(sel))\n .join(',')\n : null\n}\n\nconst SelectorEngine = {\n find(selector: string, element: Element = document.documentElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(selector))\n },\n\n findOne(selector: string, element: Element = document.documentElement): HTMLElement | null {\n return element.querySelector<HTMLElement>(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 = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].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\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<string, unknown>)[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\n/**\n * Creates the component for every element that matches on page load. One\n * element with a broken config must not stop the rest of the bundle, so the\n * error is logged and the loop goes on.\n */\nconst initAll = (selector: string, Plugin: PluginComponent, filter: ((element: HTMLElement) => boolean) | null = null): void => {\n for (const element of SelectorEngine.find(selector)) {\n if (filter && !filter(element)) {\n continue\n }\n\n try {\n Plugin.getOrCreateInstance(element)\n } catch (error) {\n console.error(error)\n }\n }\n}\n\nexport { enableDismissTrigger, eventAction, eventActionOnPlugin, initAll }\n","/**\n * --------------------------------------------------------------------------\n * Tabler autosize.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = Record<string, never>\n\ntype ComponentConfigInput = Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'autosize'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_RESIZED = `resized${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {}\n\n/**\n * Class definition\n *\n * Grows a textarea with its content and shrinks it back when text is removed.\n * The height follows `scrollHeight`, so `rows` sets the starting height and\n * `max-height` caps the growth, after which the field scrolls again.\n */\n\nclass Autosize extends BaseComponent {\n declare _element: HTMLTextAreaElement\n declare _config: ComponentConfig\n _observer: ResizeObserver | null = null\n _inlineStyle = ''\n _width = 0\n _onInput = (): void => this.update()\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n this._inlineStyle = this._element.getAttribute('style') ?? ''\n this._element.style.resize = 'none'\n this._element.style.overflowY = 'hidden'\n\n // `input` is not in EventHandler's list of native events, so it is bound\n // directly.\n this._element.addEventListener('input', this._onInput)\n\n // Text wraps differently when the field changes width (a resized window,\n // a collapsing sidebar), so the height is measured again then.\n if (typeof ResizeObserver !== 'undefined') {\n this._observer = new ResizeObserver(() => {\n if (this._element.offsetWidth !== this._width) {\n this._width = this._element.offsetWidth\n this.update()\n }\n })\n this._observer.observe(this._element)\n }\n\n this.update()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n update(): void {\n const element = this._element\n if (!element.isConnected || element.getClientRects().length === 0) {\n return\n }\n\n // Collapsing the field to measure it can move the page; the scroll\n // position is put back afterwards.\n const { scrollTop } = document.documentElement\n const style = getComputedStyle(element)\n // scrollHeight is the padding box: a border-box field adds its borders, a\n // content-box field drops its padding.\n const extra = style.boxSizing === 'border-box' ? Number.parseFloat(style.borderTopWidth) + Number.parseFloat(style.borderBottomWidth) : -(Number.parseFloat(style.paddingTop) + Number.parseFloat(style.paddingBottom))\n const before = element.style.height\n\n // Measured without a scrollbar: one left over from the previous size\n // would wrap the text and add a phantom line.\n element.style.overflowY = 'hidden'\n element.style.height = 'auto'\n const height = `${element.scrollHeight + extra}px`\n element.style.height = height\n\n // Past max-height the content no longer fits, so let the field scroll.\n element.style.overflowY = element.scrollHeight > element.clientHeight ? 'auto' : 'hidden'\n document.documentElement.scrollTop = scrollTop\n\n if (height !== before) {\n EventHandler.trigger(element, EVENT_RESIZED)\n }\n }\n\n dispose(): void {\n this._element.removeEventListener('input', this._onInput)\n this._observer?.disconnect()\n if (this._inlineStyle) {\n this._element.setAttribute('style', this._inlineStyle)\n } else {\n this._element.removeAttribute('style')\n }\n\n super.dispose()\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start autosize-init\ninitAll(SELECTOR_DATA_TOGGLE, Autosize)\n// js-docs-end autosize-init\n\nexport default Autosize\n","/**\n * --------------------------------------------------------------------------\n * Tabler clipboard.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 { initAll } from './bootstrap/util/component-functions'\nimport { getElement } from './bootstrap/util/index'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = {\n /** selector of the element to read the text from */\n target: string | null\n /** literal text to copy; wins over `target` */\n text: string | null\n /** how long the copied state lasts, in milliseconds */\n delay: number\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'clipboard'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_COPIED = `copied${EVENT_KEY}`\nconst EVENT_ERROR = `error${EVENT_KEY}`\n\nconst CLASS_NAME_COPIED = 'copied'\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\nconst SELECTOR_LABEL = `.${NAME}-label`\nconst SELECTOR_FEEDBACK = `.${NAME}-feedback`\nconst ATTRIBUTE_TEXT = 'data-bs-text'\nconst ATTRIBUTE_TEXT_ALIAS = 'data-tblr-text'\n\nconst Default: ComponentConfig = {\n target: null,\n text: null,\n delay: 2000,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n target: '(string|null)',\n text: '(string|number|null)',\n delay: 'number',\n}\n\n/**\n * Helpers\n */\n\n// The `hidden` DOM property belongs to HTMLElement, so an `<svg>` ignores it.\n// The attribute works on any element.\nconst toggleHidden = (element: Element, hidden: boolean): void => {\n if (hidden) {\n element.setAttribute('hidden', '')\n } else {\n element.removeAttribute('hidden')\n }\n}\n\n/**\n * Class definition\n *\n * Copies text to the clipboard when the trigger is clicked, then shows the\n * copied state for a moment. Every word lives in the markup: the trigger holds\n * a `clipboard-label` and a `clipboard-feedback`, and the component only swaps\n * which of them is hidden.\n *\n * The browser gives `navigator.clipboard` to secure contexts only, so on plain\n * http a copy fails and `error.bs.clipboard` fires.\n */\n\nclass Clipboard extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _labels: Element[] = []\n _feedbacks: Element[] = []\n _timeout = 0\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n // Several of each are allowed: an icon-only button pairs a check icon with\n // a visually hidden word, and both switch together.\n this._labels = SelectorEngine.find(SELECTOR_LABEL, this._element)\n this._feedbacks = SelectorEngine.find(SELECTOR_FEEDBACK, this._element)\n\n for (const feedback of this._feedbacks) {\n // Revealed rather than restyled, so a screen reader announces it.\n toggleHidden(feedback, true)\n\n if (!feedback.hasAttribute('role')) {\n feedback.setAttribute('role', 'status')\n }\n }\n\n EventHandler.on(this._element, `click${EVENT_KEY}`, (event: Event) => {\n event.preventDefault()\n void this.copy()\n })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get text(): string {\n const { text, target } = this._config\n if (text !== null && text !== '') {\n return String(text)\n }\n\n const source = target ? getElement(target) : null\n if (!source) {\n return ''\n }\n\n if (source instanceof HTMLInputElement || source instanceof HTMLTextAreaElement) {\n return source.value\n }\n\n // innerText keeps line breaks and skips hidden text such as a\n // visually-hidden label; textContent is the fallback for SVG.\n return (source instanceof HTMLElement ? source.innerText : ((source as Element).textContent ?? '')).trim()\n }\n\n // Public\n async copy(): Promise<void> {\n const { text } = this\n\n if (!text || !navigator.clipboard) {\n EventHandler.trigger(this._element, EVENT_ERROR)\n return\n }\n\n try {\n await navigator.clipboard.writeText(text)\n } catch {\n EventHandler.trigger(this._element, EVENT_ERROR)\n return\n }\n\n this._showCopied()\n EventHandler.trigger(this._element, EVENT_COPIED)\n }\n\n /** Ends the copied state, for a `delay` of 0 or an early reset. */\n reset(): void {\n window.clearTimeout(this._timeout)\n this._toggleCopied(false)\n }\n\n dispose(): void {\n window.clearTimeout(this._timeout)\n super.dispose()\n }\n\n // Private\n _mergeConfigObj(config?: Record<string, unknown>, element?: HTMLElement): Record<string, unknown> {\n // The text is copied as written: `data-bs-text=\"007\"` or `\"true\"` must not\n // be read as a number or a boolean the way other data attributes are.\n const raw = element?.getAttribute(ATTRIBUTE_TEXT) ?? element?.getAttribute(ATTRIBUTE_TEXT_ALIAS)\n const dataOptions: Record<string, unknown> = raw === null || raw === undefined ? {} : { text: raw }\n\n return super._mergeConfigObj({ ...dataOptions, ...config }, element)\n }\n\n _showCopied(): void {\n window.clearTimeout(this._timeout)\n this._toggleCopied(true)\n\n if (this._config.delay > 0) {\n this._timeout = window.setTimeout(() => this._toggleCopied(false), this._config.delay)\n }\n }\n\n _toggleCopied(copied: boolean): void {\n this._element.classList.toggle(CLASS_NAME_COPIED, copied)\n\n for (const label of this._labels) {\n toggleHidden(label, copied)\n }\n\n for (const feedback of this._feedbacks) {\n toggleHidden(feedback, !copied)\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start clipboard-init\ninitAll(SELECTOR_DATA_TOGGLE, Clipboard)\n// js-docs-end clipboard-init\n\nexport default Clipboard\n","/**\n * --------------------------------------------------------------------------\n * Tabler confetti.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 Manipulator from './bootstrap/dom/manipulator'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport { isDisabled } from './bootstrap/util/index'\nimport type { ComponentConfig as BaseConfig, ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = {\n /** how many pieces one burst pours out */\n count: number\n /** ms during which pieces keep pouring; the first frames get the most */\n duration: number\n /** how fast the pour thins out; higher means a sharper splash at the start */\n decay: number\n /** share of the viewport height at the bottom where pieces fade out */\n fade: number\n /** multiplier for the fall speed */\n speed: number\n /** piece colours; `null` reads the Tabler palette from CSS custom properties */\n colors: string[] | null\n}\n\ntype ComponentConfigInput = Partial<Omit<ComponentConfig, 'colors'>> & {\n colors?: string[] | string | null\n}\n\ntype Particle = {\n emitter: Emitter\n x: number\n y: number\n w: number\n h: number\n color: string\n vx: number\n vy: number\n speed: number\n angle: number\n spin: number\n flip: number\n flipSpeed: number\n sway: number\n alpha: number\n}\n\ntype Emitter = {\n element: HTMLElement\n config: ComponentConfig\n colors: string[]\n startedAt: number\n emitted: number\n /** `stop()` was called: nothing new is poured, what is in the air still falls */\n stopped: boolean\n /** every piece has landed and `end` was fired */\n done: boolean\n /** the instance was disposed: the pieces still land, but `end` is not fired */\n detached: boolean\n}\n\n/**\n * Constants\n */\n\nconst NAME = 'confetti'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_START = `start${EVENT_KEY}`\nconst EVENT_END = `end${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}.data-api`\n\nconst CLASS_NAME_CANVAS = `${NAME}-canvas`\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\n// Palette names looked up as `--tblr-<name>` on the root element; the hex\n// values are the fallback for a page that loads the script without the CSS.\nconst PALETTE: [string, string][] = [\n ['blue', '#066fd1'],\n ['azure', '#4299e1'],\n ['indigo', '#4263eb'],\n ['purple', '#ae3ec9'],\n ['pink', '#d6336c'],\n ['red', '#d63939'],\n ['orange', '#f76707'],\n ['yellow', '#f59f00'],\n ['lime', '#74b816'],\n ['green', '#2fb344'],\n ['teal', '#0ca678'],\n ['cyan', '#17a2b8'],\n]\n\n// The physics below is tuned for this viewport height; taller windows get\n// proportionally faster pieces so the fall takes the same time everywhere.\nconst REFERENCE_HEIGHT = 800\nconst FRAME_MS = 1000 / 60\nconst MAX_DPR = 2\n\nconst Default: ComponentConfig = {\n count: 220,\n duration: 3500,\n decay: 3.5,\n fade: 0.15,\n speed: 1,\n colors: null,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n count: 'number',\n duration: 'number',\n decay: 'number',\n fade: 'number',\n speed: 'number',\n colors: '(array|string|null)',\n}\n\n/**\n * Stage\n *\n * One fixed canvas shared by every burst on the page. It is created on the\n * first burst and removed once the last piece has landed, so an idle page\n * carries no extra element and no running animation frame.\n */\n\nconst stage = {\n canvas: null as HTMLCanvasElement | null,\n context: null as CanvasRenderingContext2D | null,\n particles: [] as Particle[],\n emitters: [] as Emitter[],\n frame: 0,\n lastTick: 0,\n\n add(emitter: Emitter): boolean {\n this._mount()\n\n if (!this.context) {\n return false\n }\n\n this.emitters.push(emitter)\n\n if (!this.frame) {\n this.lastTick = performance.now()\n this.frame = requestAnimationFrame((now) => this._tick(now))\n }\n\n return true\n },\n\n _mount(): void {\n if (this.canvas) {\n return\n }\n\n const canvas = document.createElement('canvas')\n canvas.className = CLASS_NAME_CANVAS\n canvas.setAttribute('aria-hidden', 'true')\n Object.assign(canvas.style, {\n position: 'fixed',\n inset: '0',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n pointerEvents: 'none',\n display: 'block',\n })\n\n const context = canvas.getContext('2d')\n if (!context) {\n return\n }\n\n document.body.append(canvas)\n this.canvas = canvas\n this.context = context\n this._resize()\n window.addEventListener('resize', this._onResize)\n },\n\n _unmount(): void {\n cancelAnimationFrame(this.frame)\n this.frame = 0\n window.removeEventListener('resize', this._onResize)\n this.canvas?.remove()\n this.canvas = null\n this.context = null\n this.particles = []\n this.emitters = []\n },\n\n _onResize: (): void => {\n stage._resize()\n },\n\n _resize(): void {\n if (!this.canvas || !this.context) {\n return\n }\n\n // The backing store is scaled for HiDPI screens; the CSS size above keeps\n // the element at the viewport size, so the drawing stays sharp and 1:1.\n const dpr = Math.min(window.devicePixelRatio || 1, MAX_DPR)\n this.canvas.width = document.documentElement.clientWidth * dpr\n this.canvas.height = window.innerHeight * dpr\n this.context.setTransform(dpr, 0, 0, dpr, 0, 0)\n },\n\n _spawn(emitter: Emitter): Particle {\n const { colors, config } = emitter\n const speed = (window.innerHeight / REFERENCE_HEIGHT) * config.speed\n\n return {\n emitter,\n x: Math.random() * window.innerWidth,\n y: -20 - Math.random() * 30,\n w: 6 + Math.random() * 3.6,\n h: 10 + Math.random() * 4.4,\n color: colors[Math.floor(Math.random() * colors.length)] ?? '#000',\n vx: (Math.random() - 0.5) * 1.2,\n vy: (1.5 + Math.random() * 2.1) * speed,\n speed,\n angle: Math.random() * Math.PI * 2,\n spin: (Math.random() - 0.5) * 0.25,\n flip: Math.random() * Math.PI * 2,\n flipSpeed: 0.12 + Math.random() * 0.15,\n sway: Math.random() * Math.PI * 2,\n alpha: 1,\n }\n },\n\n // Pour: the share of pieces emitted by time t follows 1 - e^(-k t), so the\n // first frames get the most and the tail thins out to single pieces.\n _pour(emitter: Emitter, now: number): void {\n const { count, duration, decay } = emitter.config\n const elapsed = now - emitter.startedAt\n\n if (emitter.stopped || elapsed >= duration) {\n return\n }\n\n const t = elapsed / duration\n const target = Math.round((count * (1 - Math.exp(-decay * t))) / (1 - Math.exp(-decay)))\n\n while (emitter.emitted < target) {\n this.particles.push(this._spawn(emitter))\n emitter.emitted++\n }\n },\n\n _tick(now: number): void {\n const context = this.context\n if (!context) {\n return\n }\n\n // Steps are scaled to the real frame time so a 120 Hz screen or a\n // throttled tab animate at the same pace as 60 Hz.\n const step = Math.min((now - this.lastTick) / FRAME_MS, 3)\n this.lastTick = now\n\n const width = window.innerWidth\n const height = window.innerHeight\n context.clearRect(0, 0, width, height)\n\n for (const emitter of this.emitters) {\n this._pour(emitter, now)\n }\n\n for (let i = this.particles.length - 1; i >= 0; i--) {\n const p = this.particles[i]!\n const fadeFrom = height * (1 - p.emitter.config.fade)\n\n p.sway += 0.05 * step\n p.vy = Math.min(p.vy + 0.025 * p.speed * step, 4.2 * p.speed)\n p.x += (p.vx + Math.sin(p.sway) * 0.7) * step\n p.y += p.vy * step\n p.angle += p.spin * step\n p.flip += p.flipSpeed * step\n\n if (p.y > fadeFrom) {\n p.alpha = Math.max(0, 1 - (p.y - fadeFrom) / (height - fadeFrom))\n }\n\n if (p.alpha === 0) {\n this.particles.splice(i, 1)\n continue\n }\n\n context.save()\n context.globalAlpha = p.alpha\n context.translate(p.x, p.y)\n context.rotate(p.angle)\n // The flip squashes the piece along one axis, which reads as tumbling.\n context.scale(1, Math.cos(p.flip))\n context.fillStyle = p.color\n context.fillRect(-p.w / 2, -p.h / 2, p.w, p.h)\n context.restore()\n }\n\n this._settle(now)\n\n if (this.emitters.length === 0) {\n this._unmount()\n return\n }\n\n this.frame = requestAnimationFrame((next) => this._tick(next))\n },\n\n // An emitter is finished once it pours nothing more and none of its pieces\n // is still in the air; `end` fires on its element and it leaves the stage.\n _settle(now: number): void {\n for (let i = this.emitters.length - 1; i >= 0; i--) {\n const emitter = this.emitters[i]!\n const pouring = !emitter.stopped && now - emitter.startedAt < emitter.config.duration\n const airborne = this.particles.some((p) => p.emitter === emitter)\n\n if (pouring || airborne) {\n continue\n }\n\n this.emitters.splice(i, 1)\n emitter.done = true\n\n if (!emitter.detached) {\n EventHandler.trigger(emitter.element, EVENT_END)\n }\n }\n },\n}\n\n/**\n * Class definition\n *\n * Pours a short shower of confetti over the page, like a bucket emptied from\n * the top edge: dense at first, then thinning out. Nothing is drawn when the\n * user prefers reduced motion, but the events still fire.\n */\n\nclass Confetti extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _emitter: Emitter | null = null\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config as BaseConfig | undefined)\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n burst(): void {\n const startEvent = EventHandler.trigger(this._element, EVENT_START)\n\n if (startEvent?.defaultPrevented) {\n return\n }\n\n // A second burst while one is pouring restarts the pour; pieces already\n // in the air keep falling.\n this.stop()\n\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n EventHandler.trigger(this._element, EVENT_END)\n return\n }\n\n this._emitter = {\n element: this._element,\n config: this._config,\n colors: this._colors(),\n startedAt: performance.now(),\n emitted: 0,\n stopped: false,\n done: false,\n detached: false,\n }\n\n if (!stage.add(this._emitter)) {\n this._emitter = null\n EventHandler.trigger(this._element, EVENT_END)\n }\n }\n\n stop(): void {\n if (this._emitter && !this._emitter.done) {\n this._emitter.stopped = true\n }\n\n this._emitter = null\n }\n\n dispose(): void {\n if (this._emitter) {\n this._emitter.detached = true\n }\n\n this.stop()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config: BaseConfig): BaseConfig {\n if (typeof config.colors === 'string') {\n config.colors = config.colors\n .split(',')\n .map((color) => color.trim())\n .filter(Boolean)\n }\n\n return config\n }\n\n _colors(): string[] {\n const { colors } = this._config\n if (colors && colors.length > 0) {\n return colors\n }\n\n // The palette is read at burst time, so a theme switched at runtime is\n // picked up without re-creating the instance.\n const style = getComputedStyle(document.documentElement)\n return PALETTE.map(([name, fallback]) => style.getPropertyValue(`--tblr-${name}`).trim() || fallback)\n }\n}\n\n/**\n * Data API implementation\n *\n * A trigger bursts on its `data-bs-target` when it has one, otherwise on\n * itself, so the events fire where the page can listen for them.\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 const target = SelectorEngine.getElementFromSelector(this) || this\n const config = Manipulator.getDataAttributes(this)\n const instance = Confetti.getOrCreateInstance(target, config) as Confetti\n\n // The instance lives on the target and keeps the config it was created\n // with, so re-read the trigger's options on every click; several triggers\n // can then share one target with their own look.\n if (target !== this) {\n instance._config = instance._getConfig(config) as ComponentConfig\n }\n\n instance.burst()\n})\n\nexport default Confetti\n","/**\n * --------------------------------------------------------------------------\n * Tabler countup.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype CountUpFormat = 'number' | 'time'\n\ntype ComponentConfig = {\n /** start when the element scrolls into view; off starts at once */\n autoAnimate: boolean\n startVal: number\n /** seconds */\n duration: number\n decimalPlaces: number\n useEasing: boolean\n useGrouping: boolean\n separator: string\n decimal: string\n prefix: string\n suffix: string\n /** `number`, or `time` for a value in minutes shown as h:mm */\n format: CountUpFormat\n /** custom rendering of the number, from a JavaScript config only */\n formatter: ((value: number) => string) | null\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'countup'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_ATTRIBUTE = `data-${NAME}`\n\nconst EVENT_START = `start${EVENT_KEY}`\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\n\nconst DATA_ATTRIBUTE_ALIAS = `data-tblr-${NAME}`\n\nconst SELECTOR_DATA_COUNTUP = `[${DATA_ATTRIBUTE}], [${DATA_ATTRIBUTE_ALIAS}]`\n\nconst Default: ComponentConfig = {\n autoAnimate: true,\n startVal: 0,\n duration: 2,\n decimalPlaces: 0,\n useEasing: true,\n useGrouping: true,\n separator: ',',\n decimal: '.',\n prefix: '',\n suffix: '',\n format: 'number',\n formatter: null,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n autoAnimate: 'boolean',\n startVal: 'number',\n duration: 'number',\n decimalPlaces: 'number',\n useEasing: 'boolean',\n useGrouping: 'boolean',\n separator: 'string',\n decimal: 'string',\n prefix: 'string',\n suffix: 'string',\n format: 'string',\n formatter: '(function|null)',\n}\n\n/**\n * Helpers\n */\n\n// deprecated(2.0): countUp.js took `\"duration\":\"3\"` or `\"useGrouping\":\"false\"`\n// from `data-countup` without complaint. The typed config would reject them, so\n// attribute values that are plainly a number or a boolean are read as one.\nconst coerceOptions = (options: Record<string, unknown>): Record<string, unknown> => {\n const result: Record<string, unknown> = { ...options }\n\n for (const [key, value] of Object.entries(options)) {\n const expected = DefaultType[key as keyof ComponentConfig]\n\n if (typeof value === 'string' && expected === 'number' && value.trim() !== '' && !Number.isNaN(Number(value))) {\n result[key] = Number(value)\n } else if (typeof value === 'string' && expected === 'boolean' && (value === 'true' || value === 'false')) {\n result[key] = value === 'true'\n } else if (typeof value === 'number' && expected === 'string') {\n result[key] = String(value)\n }\n }\n\n return result\n}\n\n// Strips thousands separators, currency symbols and other non-numeric\n// characters, so formatted targets like \"1,234\", \"1 234\" or \"$99.5\" parse.\n// A `time` value like \"3:28\" is read as minutes.\nconst parseValue = (input: string | number, format: CountUpFormat): number => {\n if (typeof input === 'number') {\n return input\n }\n\n if (format === 'time') {\n // Anchored and bounded on purpose: an unanchored `\\d+` would scan from\n // every position of a long digit string.\n const match = /^\\D{0,32}(\\d{1,4}):(\\d{1,2})/.exec(input)\n return match ? Number(match[1]) * 60 + Number(match[2]) : Number.NaN\n }\n\n return Number.parseFloat(input.replace(/[^0-9.-]/g, ''))\n}\n\n// easeOutExpo, the same curve countUp.js used\nconst easeOut = (t: number): number => (t >= 1 ? 1 : ((1 - 2 ** (-10 * t)) * 1024) / 1023)\n\nconst reducedMotion = (): boolean => window.matchMedia('(prefers-reduced-motion: reduce)').matches\n\n/**\n * Class definition\n *\n * Animates the number written inside the element from `startVal` to it,\n * formatted with grouping, decimals, a prefix and a suffix. Options come from\n * 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 _endVal = 0\n _value = 0\n _frame = 0\n _observer: IntersectionObserver | null = null\n // animation in progress: where it goes, how far it got\n _from = 0\n _elapsed = 0\n _running = false\n _paused = false\n _started = false\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n const value = parseValue(this._element.textContent ?? '', this._config.format)\n if (Number.isNaN(value)) {\n return\n }\n\n this._endVal = value\n this._value = this._config.startVal\n this._print(this._value)\n\n if (!this._config.autoAnimate) {\n this.start()\n return\n }\n\n // Wait for the element to scroll into view, then run once.\n if (typeof IntersectionObserver === 'undefined') {\n this.start()\n return\n }\n\n this._observer = new IntersectionObserver((entries) => this._observerCallback(entries))\n this._observer.observe(this._element)\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n start(): void {\n this._animate(this._value, this._endVal)\n }\n\n reset(): void {\n this._stop()\n // Lets the observer start the animation again when the element comes into view.\n this._started = false\n this._value = this._config.startVal\n this._print(this._value)\n }\n\n update(value: number | string): void {\n const parsed = parseValue(value, this._config.format)\n if (Number.isNaN(parsed)) {\n return\n }\n\n this._endVal = parsed\n this._animate(this._value, this._endVal)\n }\n\n pauseResume(): void {\n if (this._paused) {\n this._paused = false\n this._run()\n } else if (this._running) {\n this._paused = true\n cancelAnimationFrame(this._frame)\n }\n }\n\n dispose(): void {\n this._stop()\n this._observer?.disconnect()\n super.dispose()\n }\n\n // Private\n _mergeConfigObj(config?: Record<string, unknown>, element?: HTMLElement): Record<string, unknown> {\n // `data-countup='{\"duration\":4}'` carries the options as JSON; a bare\n // `data-countup` or invalid JSON means defaults.\n let dataOptions: Record<string, unknown> = {}\n const raw = element?.getAttribute(DATA_ATTRIBUTE) ?? element?.getAttribute(DATA_ATTRIBUTE_ALIAS)\n\n if (raw) {\n try {\n const parsed: unknown = JSON.parse(raw)\n // Only an object carries options; `null`, a number or an array is ignored.\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n dataOptions = parsed as Record<string, unknown>\n }\n } catch {\n // ignore invalid JSON\n }\n }\n\n return super._mergeConfigObj({ ...coerceOptions(dataOptions), ...config }, element)\n }\n\n _observerCallback(entries: IntersectionObserverEntry[]): void {\n if (entries.some((entry) => entry.isIntersecting)) {\n this._observer?.disconnect()\n this._observer = null\n\n // update() may have already animated it while it was off screen.\n if (!this._started) {\n this.start()\n }\n }\n }\n\n _animate(from: number, to: number): void {\n this._stop()\n this._started = true\n\n // Users who asked for less motion get the final number at once.\n if (from === to || this._config.duration <= 0 || reducedMotion()) {\n this._finish(to)\n return\n }\n\n this._from = from\n this._elapsed = 0\n this._running = true\n EventHandler.trigger(this._element, EVENT_START)\n this._run()\n }\n\n _run(): void {\n const duration = this._config.duration * 1000\n let last = performance.now()\n\n const step = (now: number): void => {\n this._elapsed += now - last\n last = now\n\n const t = Math.min(1, this._elapsed / duration)\n const progress = this._config.useEasing ? easeOut(t) : t\n this._value = this._from + (this._endVal - this._from) * progress\n this._print(this._value)\n\n if (t < 1) {\n this._frame = requestAnimationFrame(step)\n } else {\n this._finish(this._endVal)\n }\n }\n\n this._frame = requestAnimationFrame(step)\n }\n\n _finish(value: number): void {\n this._running = false\n this._paused = false\n this._value = value\n this._print(value)\n EventHandler.trigger(this._element, EVENT_COMPLETE)\n }\n\n _stop(): void {\n cancelAnimationFrame(this._frame)\n this._running = false\n this._paused = false\n }\n\n _print(value: number): void {\n this._element.textContent = this._format(value)\n }\n\n _format(value: number): string {\n const { decimalPlaces, useGrouping, separator, decimal, prefix, suffix, format, formatter } = this._config\n if (formatter) {\n return formatter(value)\n }\n\n if (format === 'time') {\n // Rounded away from zero on both sides, so -90.5 and 90.5 give the same\n // minutes; a value that rounds to 0 stays unsigned (-0 < 0 is false).\n const rounded = Math.sign(value) * Math.round(Math.abs(value))\n const minutes = Math.abs(rounded)\n return `${rounded < 0 ? '-' : ''}${prefix}${Math.floor(minutes / 60)}:${String(minutes % 60).padStart(2, '0')}${suffix}`\n }\n\n const fixed = value.toFixed(decimalPlaces)\n const [integer, fraction] = fixed.replace('-', '').split('.') as [string, string | undefined]\n const grouped = useGrouping ? integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator) : integer\n\n return `${Number(fixed) < 0 ? '-' : ''}${prefix}${grouped}${fraction ? decimal + fraction : ''}${suffix}`\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start countup-init\ninitAll(SELECTOR_DATA_COUNTUP, CountUp)\n// js-docs-end countup-init\n\nexport default CountUp\n","/**\n * --------------------------------------------------------------------------\n * Tabler datepicker.ts\n * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport type { Calendar, CalendarExtension, Options, Range } from 'vanilla-calendar-pro'\nimport BaseComponent from './bootstrap/base-component'\nimport EventHandler from './bootstrap/dom/event-handler'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport { initAll } from './bootstrap/util/component-functions'\nimport { getElement, isDisabled } from './bootstrap/util/index'\nimport type { ElementSelector } from './bootstrap/types'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"], [data-tblr-toggle=\"datepicker\"]'\nconst SELECTOR_DISPLAY = '[data-bs-datepicker-display], [data-tblr-datepicker-display]'\nconst SELECTOR_INPUT_WRAPPER = '.input-icon, .input-group'\nconst SELECTOR_BOUND_INPUT = 'input[type=\"hidden\"], input[name]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst DATE_PATTERN = /^(\\d{4})-(\\d{2})-(\\d{2})$/\n\n// Vanilla Calendar Pro 3.4 moved several months, the time picker, week\n// numbers, popups and animation into extensions that must be registered when\n// the calendar is created, or its constructor throws. The library is loaded\n// as a whole on `window`, so every extension it exports is registered;\n// 3.3 exports none and gets no `extensions` option.\nconst EXTENSION_NAMES = ['annotations', 'months', 'motion', 'time', 'weeks'] as const\n\nconst writtenSelections = new WeakMap<HTMLElement, { text: string; dates: string[] }>()\n\n// The public API is typed with local copies of the Vanilla Calendar Pro types.\n// `vanilla-calendar-pro` is an optional peer dependency, so the published\n// `dist/types` must not import it: a project that never loads the datepicker\n// would otherwise fail to type-check with TS2307. The unions match the\n// plugin's own, so a bad value is still a compile error. Members that need the\n// plugin's full types carry an internal JSDoc tag and are left out of\n// `dist/types` by `stripInternal` (the tag must not appear in plain comments,\n// or TypeScript strips the declaration that follows).\ntype DateAny = Date | number | `${number}-${string}-${string}` | 'today'\ntype DatesArr = Array<Date | number | string>\ntype DateMode = 'single' | 'multiple' | 'multiple-ranged'\ntype MonthsCount = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\ntype PositionToInput = 'auto' | 'left' | 'center' | 'right' | ['bottom' | 'top', 'left' | 'center' | 'right']\ntype WeekDayID = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n/**\n * The part of a Vanilla Calendar Pro instance the `calendar` getter promises.\n * Cast it to `Calendar` from `vanilla-calendar-pro` for the full type.\n */\ninterface CalendarInstance {\n // Loosely typed on purpose: the plugin's context is large and version-specific.\n context: Record<string, any>\n init(): unknown\n update(resetOptions?: object): unknown\n set(options: object, resetOptions?: object): unknown\n show(): unknown\n hide(): unknown\n destroy(): unknown\n}\n\ntype ComponentConfig = {\n /** 'light', 'dark' or 'auto' for the popup only; null inherits from the nearest `[data-bs-theme]` */\n datepickerTheme: string | null\n dateMin: DateAny | null\n dateMax: DateAny | null\n /** `Intl.DateTimeFormat` options, or a function(date, locale) returning the text shown in the field */\n dateFormat: Intl.DateTimeFormatOptions | ((date: Date, locale: string | undefined) => string) | null\n /** element that shows the formatted date; a button uses itself or its `[data-bs-datepicker-display]` child */\n displayElement: string | HTMLElement | boolean | null\n displayMonthsCount: MonthsCount\n /** 0 = Sunday, 1 = Monday */\n firstWeekday: WeekDayID\n /** render the calendar in place instead of a popup */\n inline: boolean\n locale: string\n /** element the popup is aligned with; defaults to the `.input-icon` / `.input-group` wrapper or the element */\n positionElement: string | HTMLElement | null\n /** preselected dates as `YYYY-MM-DD` */\n selectedDates: string[]\n selectionMode: DateMode\n placement: PositionToInput\n /** pass-through for any Vanilla Calendar Pro option */\n vcpOptions: object\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\ntype ChangeEventArgs = { dates: string[]; event: MouseEvent }\n\nconst Default: ComponentConfig = {\n datepickerTheme: null,\n dateMin: null,\n dateMax: null,\n dateFormat: null,\n displayElement: null,\n displayMonthsCount: 1,\n firstWeekday: 1,\n inline: false,\n locale: 'default',\n positionElement: null,\n selectedDates: [],\n selectionMode: 'single',\n placement: 'left',\n vcpOptions: {},\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n datepickerTheme: '(null|string)',\n dateMin: '(null|string|number|object|date)',\n dateMax: '(null|string|number|object|date)',\n dateFormat: '(null|object|function)',\n displayElement: '(null|string|element|boolean)',\n displayMonthsCount: 'number',\n firstWeekday: 'number',\n inline: 'boolean',\n locale: 'string',\n positionElement: '(null|string|element)',\n selectedDates: 'array',\n selectionMode: 'string',\n placement: 'string',\n vcpOptions: 'object',\n}\n\n// Delegated Data API handlers run in the capture phase, before the plugin's\n// own click listener, which opens the popup from a `setTimeout`. Two nested\n// timeouts are the first point that is after it for certain.\nconst afterPluginTimers = (callback: () => void): void => {\n setTimeout(() => setTimeout(callback))\n}\n\n/**\n * Class definition\n *\n * Wraps Vanilla Calendar Pro (https://vanilla-calendar.pro), loaded separately\n * as `window.VanillaCalendarPro`. Without the plugin the component is inert.\n * Same options, methods and events as Bootstrap 6's Datepicker, so markup\n * written for one works with the other.\n */\n\nclass Datepicker extends BaseComponent {\n declare _element: HTMLElement & { value: string }\n declare _config: ComponentConfig\n /** @internal */\n _calendar: Calendar | null = null\n _isShown = false\n // The plugin opens and closes the popup on its own too (its click and focus\n // listeners, Escape, a click outside), so `onShow` and `onHide` are what\n // tracks the state and fires the events; these flags tell them who asked.\n _isShowing = false\n _isHiding = false\n _isSilent = false\n _skipPluginShow = false\n _resolveShown: (() => void) | null = null\n _hideTimeout = 0\n _isInput = false\n _isInline = false\n _boundInput: HTMLInputElement | null = null\n _positionElement: HTMLElement | null = null\n _displayElement: HTMLElement | false | null = null\n _themeObserver: MutationObserver | null = null\n _onFocusIn: ((event: Event) => void) | null = null\n _onResize = (): void => this._alignToPositionElement()\n // The plugin builds a popup lazily, so its context has no selection until\n // the first show; this mirror answers `getSelectedDates()` before that.\n _selectedDates: string[] = []\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element || !window.VanillaCalendarPro) {\n return\n }\n\n this._initCalendar()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n /** The Vanilla Calendar Pro instance, for options the component does not expose. */\n get calendar(): CalendarInstance | null {\n return this._calendar\n }\n\n // Public\n toggle(): Promise<void> {\n if (this._config.inline) {\n return Promise.resolve() // Inline calendars are always visible\n }\n\n return this._isShown ? this.hide() : this.show()\n }\n\n async show(): Promise<void> {\n if (this._config.inline) {\n return // Inline calendars are always visible\n }\n\n // The first `calendar.show()` clicks the element to build the popup, and\n // that click comes back here through the Data API; `_isShowing` stops it.\n if (!this._calendar || isDisabled(this._element) || this._isShown || this._isShowing) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (showEvent?.defaultPrevented) {\n return\n }\n\n this._isShowing = true\n this._skipPluginShow = false\n this._calendar.show()\n\n // The first show builds the popup and opens it a tick later\n if (!this._isShown) {\n await new Promise<void>((resolve) => {\n this._resolveShown = resolve\n afterPluginTimers(resolve)\n })\n }\n\n this._resolveShown = null\n this._isShowing = false\n }\n\n async hide(): Promise<void> {\n if (this._config.inline) {\n return // Inline calendars are always visible\n }\n\n if (!this._calendar || !this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (hideEvent?.defaultPrevented) {\n return\n }\n\n // On a click on a button trigger the plugin's own listener runs next and\n // queues a `show()`; without this the popup would open again right away.\n this._skipPluginShow = true\n afterPluginTimers(() => {\n this._skipPluginShow = false\n })\n\n this._isHiding = true\n this._calendar.hide()\n this._isHiding = false\n }\n\n dispose(): void {\n window.clearTimeout(this._hideTimeout)\n this._themeObserver?.disconnect()\n window.removeEventListener('resize', this._onResize)\n\n if (this._onFocusIn) {\n EventHandler.off(document, EVENT_FOCUSIN, this._onFocusIn)\n }\n\n if (this._calendar) {\n this._calendar.destroy()\n\n // The plugin swaps the element for a clone taken at init, which has the\n // value and listeners from back then. The live element goes back in;\n // an inline calendar keeps the clone (its original children), so only\n // the bound input moves back into it.\n const clone = this._calendar.context.mainElement as HTMLElement | undefined\n if (clone && clone !== this._element && clone.isConnected) {\n if (this._isInput) {\n clone.replaceWith(this._element)\n } else if (this._boundInput) {\n const copy = SelectorEngine.findOne(SELECTOR_BOUND_INPUT, clone)\n if (copy) {\n copy.replaceWith(this._boundInput)\n } else {\n clone.append(this._boundInput)\n }\n }\n }\n }\n\n super.dispose()\n }\n\n getSelectedDates(): string[] {\n const dates = this._calendar?.context?.selectedDates\n return dates && dates.length > 0 ? [...dates] : [...this._selectedDates]\n }\n\n setSelectedDates(dates: DatesArr): void {\n this._selectedDates = dates.map((date) => this._toIsoDate(date))\n this._calendar?.set({ selectedDates: this._selectedDates, ...this._monthOf(this._selectedDates[0]) })\n this._writeSelection(this._selectedDates)\n }\n\n // Private\n _initCalendar(): void {\n this._isInput = this._element.tagName === 'INPUT'\n this._isInline = this._config.inline\n\n // For inline mode, look for a hidden input child to bind to\n if (this._isInline && !this._isInput) {\n this._boundInput = SelectorEngine.findOne(SELECTOR_BOUND_INPUT, this._element) as HTMLInputElement | null\n }\n\n this._positionElement = this._resolvePositionElement()\n this._displayElement = this._resolveDisplayElement()\n this._selectedDates = [...this._config.selectedDates]\n\n // The calendar always attaches to the element itself. The plugin closes on\n // any click whose target is not exactly its input, so handing it a wrapper\n // makes a click on the field inside close and reopen the popup. The popup\n // is aligned with the position element after each show instead.\n this._calendar = new window.VanillaCalendarPro!.Calendar(this._element, this._buildCalendarOptions())\n this._calendar.init()\n\n // An inline calendar renders into the element and drops its children, so\n // the bound input moves right after it to stay in the form.\n if (this._boundInput && !this._boundInput.isConnected) {\n this._element.after(this._boundInput)\n }\n\n // Watch for theme changes on ancestor elements (for live theme switching)\n this._setupThemeObserver()\n\n this._setupDismissOnFocus()\n\n // Set initial value if input has a value\n if (this._isInput && this._element.value) {\n this._parseInputValue()\n }\n\n // Populate input/display with preselected dates\n this._updateDisplayWithSelectedDates()\n }\n\n _updateDisplayWithSelectedDates(): void {\n if (this._selectedDates.length === 0) {\n return\n }\n\n this._writeSelection(this._selectedDates)\n }\n\n _writeSelection(selectedDates: string[]): void {\n const formattedDate = this._formatDateForInput(selectedDates)\n\n if (this._isInput) {\n this._element.value = formattedDate\n writtenSelections.set(this._element, { text: formattedDate, dates: [...selectedDates] })\n }\n\n if (this._boundInput) {\n this._boundInput.value = selectedDates.join(',')\n }\n\n if (this._displayElement) {\n this._displayElement.textContent = formattedDate\n }\n }\n\n _resolvePositionElement(): HTMLElement {\n let { positionElement } = this._config\n\n if (typeof positionElement === 'string') {\n positionElement = getElement(positionElement)\n }\n\n // Use the input's wrapper when it sits in an icon or group wrapper\n if (!positionElement && this._isInput && !this._isInline) {\n positionElement = this._element.closest<HTMLElement>(SELECTOR_INPUT_WRAPPER)\n }\n\n return positionElement || this._element\n }\n\n _resolveDisplayElement(): HTMLElement | false | null {\n const { displayElement } = this._config\n\n if (typeof displayElement === 'string') {\n return getElement(displayElement)\n }\n\n // For buttons/non-inputs (not inline), look for a display child\n if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n return SelectorEngine.findOne(SELECTOR_DISPLAY, this._element) || this._element\n }\n\n return displayElement\n }\n\n // The plugin positions the popup against the element; a wrapper such as\n // `.input-icon` or `.input-group` wants the popup aligned with its own edges.\n _alignToPositionElement(): void {\n const mainElement = this._calendar?.context?.mainElement\n if (!mainElement || this._isInline || !this._positionElement || this._positionElement === this._element) {\n return\n }\n\n const anchor = this._positionElement.getBoundingClientRect()\n const popup = mainElement.getBoundingClientRect()\n let { placement } = this._config\n\n if (placement === 'auto') {\n placement = anchor.left + popup.width > document.documentElement.clientWidth ? 'right' : 'left'\n }\n\n const left = placement === 'right' ? anchor.right - popup.width : placement === 'center' ? anchor.left + (anchor.width - popup.width) / 2 : anchor.left\n\n mainElement.style.left = `${left + window.scrollX}px`\n }\n\n _getThemeAncestor(): Element | null {\n return this._element.closest('[data-bs-theme]')\n }\n\n _getEffectiveTheme(): string | null {\n // Priority: explicit datepickerTheme config > inherited from ancestor > none\n const { datepickerTheme } = this._config\n if (datepickerTheme) {\n return datepickerTheme\n }\n\n return this._getThemeAncestor()?.getAttribute('data-bs-theme') || null\n }\n\n _syncThemeAttribute(element: HTMLElement | undefined): void {\n if (!element) {\n return\n }\n\n const theme = this._getEffectiveTheme()\n\n if (theme) {\n // Copy the theme to the popup: the plugin appends it to <body>, which\n // breaks inheritance from a themed container.\n element.setAttribute('data-bs-theme', theme)\n } else {\n element.removeAttribute('data-bs-theme')\n }\n }\n\n _setupThemeObserver(): void {\n const ancestor = this._getThemeAncestor()\n if (!ancestor || this._config.datepickerTheme) {\n // No ancestor to watch, or explicit datepickerTheme overrides\n return\n }\n\n this._themeObserver = new MutationObserver(() => {\n this._syncThemeAttribute(this._calendar?.context?.mainElement)\n })\n\n this._themeObserver.observe(ancestor, {\n attributes: true,\n attributeFilter: ['data-bs-theme'],\n })\n }\n\n // The plugin ignores focus and mounts the popup on <body>, so close it\n // ourselves when focus leaves both the element and the calendar.\n _setupDismissOnFocus(): void {\n if (this._isInline) {\n return\n }\n\n this._onFocusIn = (event: Event): void => {\n if (!this._isShown) {\n return\n }\n\n const { target } = event\n const mainElement = this._calendar?.context?.mainElement\n\n if (target instanceof Node && (this._element.contains(target) || mainElement?.contains(target))) {\n return\n }\n\n this.hide()\n }\n\n EventHandler.on(document, EVENT_FOCUSIN, this._onFocusIn)\n }\n\n _silently(callback: () => void): void {\n this._isSilent = true\n callback()\n this._isSilent = false\n }\n\n _handlePluginShow(): void {\n const calendar = this._calendar\n if (!calendar) {\n return\n }\n\n if (!this._isSilent && !this._isShown) {\n // Opened by the plugin itself: right after `hide()` on a trigger click it\n // must stay closed, otherwise it gets the same cancelable `show` event.\n const prevented = this._skipPluginShow || (!this._isShowing && EventHandler.trigger(this._element, EVENT_SHOW)?.defaultPrevented)\n\n if (prevented) {\n this._silently(() => calendar.hide())\n return\n }\n }\n\n const wasShown = this._isShown\n this._isShown = true\n this._syncThemeAttribute(calendar.context.mainElement)\n this._alignToPositionElement()\n window.removeEventListener('resize', this._onResize)\n window.addEventListener('resize', this._onResize)\n\n if (!wasShown) {\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n this._resolveShown?.()\n }\n\n _handlePluginHide(): void {\n const calendar = this._calendar\n if (!calendar || this._isSilent || !this._isShown) {\n return\n }\n\n // Closed by the plugin itself (Escape, a click outside): `hide` is still\n // cancelable, the popup opens again before the browser paints.\n if (!this._isHiding && EventHandler.trigger(this._element, EVENT_HIDE)?.defaultPrevented) {\n this._silently(() => calendar.show())\n return\n }\n\n this._isShown = false\n window.removeEventListener('resize', this._onResize)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n // The extensions the loaded library exports, after the ones the caller\n // registered in `vcpOptions` themselves.\n /** @internal */\n _calendarExtensions(own: readonly CalendarExtension[] = []): CalendarExtension[] {\n const library = window.VanillaCalendarPro as Record<string, unknown> | undefined\n const extensions = [...own]\n\n for (const name of EXTENSION_NAMES) {\n const extension = library?.[name] as CalendarExtension | undefined\n if (extension && typeof extension === 'object' && !extensions.includes(extension)) {\n extensions.push(extension)\n }\n }\n\n return extensions\n }\n\n /** @internal */\n _buildCalendarOptions(): Options {\n // The plugin uses 'system' for auto-detection, Bootstrap and Tabler use 'auto'\n const theme = this._getEffectiveTheme()\n const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n const vcpOptions = this._config.vcpOptions as Options\n const extensions = this._calendarExtensions(vcpOptions.extensions)\n\n const calendarOptions: Options = {\n ...vcpOptions,\n ...(extensions.length > 0 ? { extensions } : {}),\n inputMode: !this._isInline,\n positionToInput: this._config.placement,\n firstWeekday: this._config.firstWeekday,\n locale: this._config.locale,\n selectionDatesMode: this._config.selectionMode,\n selectedDates: this._config.selectedDates,\n displayMonthsCount: this._config.displayMonthsCount,\n type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n selectedTheme: vcpTheme,\n themeAttrDetect: '[data-bs-theme]',\n onClickDate: (self, event) => this._handleDateClick(self, event),\n onInit: (self) => {\n this._syncThemeAttribute(self.context.mainElement)\n },\n onShow: () => this._handlePluginShow(),\n onHide: () => this._handlePluginHide(),\n }\n\n // Navigate to the month of the first selected date\n const [firstSelected] = this._config.selectedDates\n if (firstSelected) {\n const firstDate = this._parseDate(firstSelected)\n // `getMonth()` is always 0-11, which TypeScript cannot narrow on its own\n calendarOptions.selectedMonth = firstDate.getMonth() as Range<12>\n calendarOptions.selectedYear = firstDate.getFullYear()\n }\n\n if (this._config.dateMin) {\n calendarOptions.dateMin = this._config.dateMin as Options['dateMin']\n }\n\n if (this._config.dateMax) {\n calendarOptions.dateMax = this._config.dateMax as Options['dateMax']\n }\n\n return calendarOptions\n }\n\n /** @internal */\n _handleDateClick(self: Calendar, event: MouseEvent): void {\n const selectedDates = [...self.context.selectedDates]\n this._selectedDates = selectedDates\n\n // Written even when empty: clicking the picked day again deselects it, and\n // the field must not keep submitting the old date.\n this._writeSelection(selectedDates)\n\n const args: ChangeEventArgs = { dates: selectedDates, event }\n EventHandler.trigger(this._element, EVENT_CHANGE, args)\n\n this._maybeHideAfterSelection(selectedDates)\n }\n\n _maybeHideAfterSelection(selectedDates: string[]): void {\n if (this._isInline) {\n return\n }\n\n const shouldHide = (this._config.selectionMode === 'single' && selectedDates.length > 0) || (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n if (shouldHide) {\n window.clearTimeout(this._hideTimeout)\n this._hideTimeout = window.setTimeout(() => this.hide(), HIDE_DELAY)\n }\n }\n\n _parseDate(dateStr: string): Date {\n const [year = 0, month = 1, day = 1] = dateStr.split('-').map(Number)\n return new Date(year, month - 1, day)\n }\n\n _formatDate(dateStr: string): string {\n const date = this._parseDate(dateStr)\n const locale = this._config.locale === 'default' ? undefined : this._config.locale\n const { dateFormat } = this._config\n\n // Custom function formatter\n if (typeof dateFormat === 'function') {\n return dateFormat(date, locale)\n }\n\n // Intl.DateTimeFormat options object\n if (dateFormat && typeof dateFormat === 'object') {\n return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n }\n\n // Default: locale-aware formatting\n return date.toLocaleDateString(locale)\n }\n\n _formatDateForInput(dates: string[]): string {\n if (dates.length === 0) {\n return ''\n }\n\n if (dates.length === 1) {\n return this._formatDate(dates[0]!)\n }\n\n // For date ranges, use en-dash; for multiple dates, use comma\n const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n return dates.map((date) => this._formatDate(date)).join(separator)\n }\n\n _parseInputValue(): void {\n const value = this._element.value.trim()\n if (!value) {\n return\n }\n\n const written = writtenSelections.get(this._element)\n if (written && written.text.trim() === value) {\n this._selectedDates = [...written.dates]\n this._calendar?.set({ selectedDates: this._selectedDates, ...this._monthOf(this._selectedDates[0]) })\n return\n }\n\n // `YYYY-MM-DD` is read as a local date: `new Date('2020-06-20')` would be\n // UTC midnight and land on the previous day west of Greenwich.\n const date = DATE_PATTERN.test(value) ? this._parseDate(value) : new Date(value)\n if (Number.isNaN(date.getTime())) {\n return\n }\n\n this._selectedDates = [this._toIsoDate(date)]\n // The calendar opens on the month of the value, not on today.\n this._calendar?.set({ selectedDates: this._selectedDates, ...this._monthOf(this._selectedDates[0]) })\n }\n\n _toIsoDate(value: DateAny | string): string {\n if (typeof value === 'string' && DATE_PATTERN.test(value)) {\n return value\n }\n\n const date = value instanceof Date ? value : typeof value === 'string' && DATE_PATTERN.test(value) ? this._parseDate(value) : new Date(value)\n if (Number.isNaN(date.getTime())) {\n return String(value)\n }\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n }\n\n /** @internal */\n _monthOf(value: string | undefined): Pick<Options, 'selectedMonth' | 'selectedYear'> {\n if (!value || !DATE_PATTERN.test(value)) {\n return {}\n }\n\n const date = this._parseDate(value)\n // `getMonth()` is always 0-11, which TypeScript cannot narrow on its own\n return { selectedMonth: date.getMonth() as Range<12>, selectedYear: date.getFullYear() }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start datepicker-init\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {\n // Inputs open on focus, and inline calendars are always visible\n if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true' || this.dataset.tblrInline === 'true') {\n return\n }\n\n event.preventDefault()\n ;(Datepicker.getOrCreateInstance(this) as Datepicker).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement) {\n if (this.tagName !== 'INPUT') {\n return\n }\n\n ;(Datepicker.getOrCreateInstance(this) as Datepicker).show()\n})\n\n// Render on load what cannot wait for a focus or a click: inline calendars,\n// and fields with preselected dates or a value, so they show it right away.\ninitAll(SELECTOR_DATA_TOGGLE, Datepicker, (element) => {\n const { dataset } = element\n\n return dataset.bsInline === 'true' || dataset.tblrInline === 'true' || 'bsSelectedDates' in dataset || 'tblrSelectedDates' in dataset || Boolean((element as HTMLInputElement).value)\n})\n// js-docs-end datepicker-init\n\nexport default Datepicker\nexport type { ComponentConfig as DatepickerConfig, ChangeEventArgs as DatepickerChangeEventArgs }\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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\n// The part of an IMask instance the component uses\ninterface IMaskInstance {\n value: string\n unmaskedValue: string\n updateValue(): void\n updateOptions(options: Record<string, unknown>): void\n destroy(): void\n}\n\ntype ComponentConfig = {\n /** an IMask mask: a pattern string, `Number`, `Date`, a RegExp or a mask object */\n mask: unknown\n lazy: boolean\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\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<keyof ComponentConfig, string> = {\n mask: '(string|function|regexp|object|array)',\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 // Every option from the config reaches IMask, not only the two typed ones.\n this._mask = new window.IMask(this._element, { ...this._config })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\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<string, unknown>, element?: HTMLElement): Record<string, unknown> {\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<string, unknown> = {}\n const mask = element?.getAttribute(ATTRIBUTE_MASK)\n\n if (mask) {\n dataOptions.mask = mask\n }\n\n // A bare `data-mask-visible` means visible, like `=\"true\"`.\n if (element?.hasAttribute(ATTRIBUTE_VISIBLE)) {\n dataOptions.lazy = element.getAttribute(ATTRIBUTE_VISIBLE) === 'false'\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\ninitAll(SELECTOR_DATA_MASK, InputMask)\n// js-docs-end input-mask-init\n\nexport default InputMask\nexport type { IMaskInstance }\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 <html> 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 <html>\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 `<html>` and `<body>` 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 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'\nimport { defineJQueryPlugin } from './util/index.js'\nimport type { JQueryCollectionLike } from './types'\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Alert.getOrCreateInstance(this) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\nenableDismissTrigger(Alert, 'close')\n\ndefineJQueryPlugin(Alert)\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'\nimport { defineJQueryPlugin } from './util/index.js'\nimport type { JQueryCollectionLike } from './types'\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Button.getOrCreateInstance(this) as Button\n\n if (config === 'toggle') {\n data.toggle()\n }\n })\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\ndefineJQueryPlugin(Button)\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 { defineJQueryPlugin, getNextActiveElement, isRTL, isVisible, reflow, triggerTransitionEnd } from './util/index'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<Omit<ComponentConfig, 'defaultInterval'>> & Record<string, unknown>\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<string, string> = {\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<Exclude<keyof ComponentConfig, 'defaultInterval'>, 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<typeof setInterval> | null\n _activeElement: HTMLElement | null\n _isSliding: boolean\n touchTimeout: ReturnType<typeof setTimeout> | 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<Exclude<keyof ComponentConfig, 'defaultInterval'>, 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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Carousel.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\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\ndefineJQueryPlugin(Carousel)\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 { defineJQueryPlugin, getElement, reflow } from './util/index'\nimport type { DelegatedEvent } from './dom/event-handler'\nimport type { ComponentConfig as BaseComponentConfig, ElementSelector, JQueryCollectionLike } from './types'\n\ntype ComponentConfig = {\n parent: HTMLElement | null\n toggle: boolean\n}\n\ntype ComponentConfigInput = Partial<Omit<ComponentConfig, 'parent'>> & { parent?: HTMLElement | string | null } & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n const _config: BaseComponentConfig = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function (this: HTMLElement) {\n const data = Collapse.getOrCreateInstance(this, _config) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\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\ndefineJQueryPlugin(Collapse)\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 { defineJQueryPlugin, execute, getElement, getNextActiveElement, isDisabled, isElement, isRTL, isVisible, noop } from './util/index'\nimport type { DelegatedEvent } from './dom/event-handler'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\n\ntype PopperOffsetData = { placement: Popper.Placement; reference: Popper.Rect; popper: Popper.Rect }\ntype PopperOffsetFunction = (popperData: PopperOffsetData) => number[]\ntype PopperConfigFunction = (defaultConfig: Partial<Popper.Options>) => Partial<Popper.Options>\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<Popper.Options> | PopperConfigFunction | null\n reference: 'toggle' | 'parent' | HTMLElement | Popper.VirtualElement\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\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 = SELECTOR_DATA_TOGGLE.split(', ')\n .map((selector) => `${selector}.${CLASS_NAME_SHOW}`)\n .join(', ')\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<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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<Popper.Options> {\n const defaultBsPopperConfig: Partial<Popper.Options> = {\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<KeyboardEvent>).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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Dropdown.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\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\ndefineJQueryPlugin(Dropdown)\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 { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<ComponentConfig> & Record<string, unknown>\n\nconst Default: ComponentConfig = {\n backdrop: true,\n focus: true,\n keyboard: true,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown, relatedTarget?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Modal.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * 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\ndefineJQueryPlugin(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 { defineJQueryPlugin, isDisabled, isVisible } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<ComponentConfig> & Record<string, unknown>\n\nconst Default: ComponentConfig = {\n backdrop: true,\n keyboard: true,\n scroll: false,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Offcanvas.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * 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\ndefineJQueryPlugin(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<string, unknown>\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: '<div></div>',\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<string, unknown>): 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<string, unknown>)\n }\n\n _checkContent(arg: Record<string, unknown>): 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 { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport TemplateFactory from './util/template-factory'\nimport type { AllowList, ComponentConfig as BaseComponentConfig, JQueryCollectionLike, 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<Popper.Options>) => Partial<Popper.Options>\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<string, TooltipContent>\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<Popper.Options> | 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<TooltipConfig> & Record<string, unknown>\n\ntype ComponentConfigInput = TooltipConfigInput\n\nconst AttachmentMap: Record<string, string> = {\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: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus',\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<typeof setTimeout> | number\n _isHovered: boolean | null\n _activeTrigger: Record<string, boolean>\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<keyof ComponentConfig, string> {\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<T>(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<Popper.Options> {\n const defaultBsPopperConfig: Partial<Popper.Options> = {\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<Record<string, unknown>>) => {\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<string, unknown> = {\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<string, unknown>\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<string, unknown> = {}\n const defaults = (this.constructor as typeof Tooltip).Default as Record<string, unknown>\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Tooltip.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\ndefineJQueryPlugin(Tooltip)\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'\nimport { defineJQueryPlugin } from './util/index'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<ComponentConfig> & Record<string, unknown>\n\nconst Default: ComponentConfig = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click',\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Popover.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\ndefineJQueryPlugin(Popover)\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 { defineJQueryPlugin, getElement, isDisabled, isVisible, parseSelector } from './util/index'\nimport type { ComponentConfig as BaseComponentConfig, JQueryCollectionLike } from './types'\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<Omit<ComponentConfig, 'target' | 'threshold'>> & { target?: HTMLElement | string | null; threshold?: number[] | string } & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<string, HTMLElement>\n _observableSections: Map<string, HTMLElement>\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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = ScrollSpy.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\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\ndefineJQueryPlugin(ScrollSpy)\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 { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index'\nimport type { JQueryCollectionLike } from './types'\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Tab.getOrCreateInstance(this) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\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\ndefineJQueryPlugin(Tab)\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 { defineJQueryPlugin, reflow } from './util/index.js'\nimport type { ComponentConfig as BaseComponentConfig, ElementSelector, JQueryCollectionLike } from './types'\n\ntype ComponentConfig = {\n animation: boolean\n autohide: boolean\n delay: number\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\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<keyof ComponentConfig, string> = {\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<typeof setTimeout> | 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<keyof ComponentConfig, string> {\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 static jQueryInterface(this: JQueryCollectionLike, config?: unknown): unknown {\n return this.each(function (this: HTMLElement) {\n const data = Toast.getOrCreateInstance(this, config as BaseComponentConfig) as unknown as Record<string, (arg?: unknown) => unknown>\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\nenableDismissTrigger(Toast)\n\ndefineJQueryPlugin(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'\nimport Manipulator from './bootstrap/dom/manipulator'\nimport { onDOMContentLoaded } from './bootstrap/util/index'\n\n// js-docs-start dropdown-init\nonDOMContentLoaded(() => {\n for (const dropdownTriggerEl of document.querySelectorAll<HTMLElement>('[data-bs-toggle=\"dropdown\"], [data-tblr-toggle=\"dropdown\"]')) {\n try {\n const options = {\n boundary: Manipulator.getDataAttribute(dropdownTriggerEl, 'boundary') === 'viewport' ? document.documentElement : ('clippingParents' as const),\n }\n Dropdown.getOrCreateInstance(dropdownTriggerEl, options)\n } catch (error) {\n console.error(error)\n }\n }\n})\n// js-docs-end dropdown-init\n","import { Dropdown } from './bootstrap'\nimport { onDOMContentLoaded } from './bootstrap/util/index'\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\"], [data-tblr-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<HTMLElement>('.navbar-vertical [data-bs-toggle=\"dropdown\"][aria-expanded=\"true\"]')) {\n if (toggle !== except) {\n ;(Dropdown.getInstance(toggle) as InstanceType<typeof Dropdown> | 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 // A synthetic click dispatched on the document has no Element target.\n const target = event.target\n if (!(target instanceof Element) || 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.\n// onDOMContentLoaded runs at once when the script loads after the event.\nonDOMContentLoaded(() => {\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 instanceof Element ? event.target.closest('[data-bs-toggle=\"sidebar-folded\"], [data-tblr-toggle=\"sidebar-folded\"]') : null\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 // Storage may be blocked by the browser; the fold still applies to this page.\n try {\n localStorage.setItem('tabler-sidebar', willFold ? 'folded-hover' : 'default')\n } catch {\n // ignore\n }\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'\nimport Manipulator from './bootstrap/dom/manipulator'\nimport { onDOMContentLoaded } from './bootstrap/util/index'\n\n// js-docs-start tooltip-init\n// One element with a broken config must not stop the rest of the bundle, so\n// every instance is created on its own. `data-bs-delay` on the element wins\n// over the shorter default delay.\nonDOMContentLoaded(() => {\n for (const tooltipTriggerEl of document.querySelectorAll<HTMLElement>('[data-bs-toggle=\"tooltip\"], [data-tblr-toggle=\"tooltip\"]')) {\n try {\n const options = {\n delay: Manipulator.getDataAttribute(tooltipTriggerEl, 'delay') ?? { show: 50, hide: 50 },\n placement: Manipulator.getDataAttribute(tooltipTriggerEl, 'placement') ?? 'auto',\n }\n Tooltip.getOrCreateInstance(tooltipTriggerEl, options)\n } catch (error) {\n console.error(error)\n }\n }\n})\n// js-docs-end tooltip-init\n","import { Popover } from './bootstrap'\nimport Manipulator from './bootstrap/dom/manipulator'\nimport { onDOMContentLoaded } from './bootstrap/util/index'\n\n// js-docs-start popover-init\nonDOMContentLoaded(() => {\n for (const popoverTriggerEl of document.querySelectorAll<HTMLElement>('[data-bs-toggle=\"popover\"], [data-tblr-toggle=\"popover\"]')) {\n try {\n const options = {\n delay: Manipulator.getDataAttribute(popoverTriggerEl, 'delay') ?? { show: 50, hide: 50 },\n placement: Manipulator.getDataAttribute(popoverTriggerEl, 'placement') ?? 'auto',\n }\n Popover.getOrCreateInstance(popoverTriggerEl, options)\n } catch (error) {\n console.error(error)\n }\n }\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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype ComponentConfig = Record<string, never>\n\ntype ComponentConfigInput = Record<string, unknown>\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_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_LOADING = 'switch-icon-loading'\n\nconst SELECTOR_SWITCH_ICON = '.switch-icon'\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {}\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`. The element is the `.switch-icon` itself,\n * or a button (e.g. `.btn-action`) wrapping one: the classes then go on the\n * inner `.switch-icon` and the ARIA state stays on the button.\n */\n\nclass SwitchIcon extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n\n #iconElement!: HTMLElement\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n this.#iconElement = this._element.matches(SELECTOR_SWITCH_ICON) ? this._element : (SelectorEngine.findOne(SELECTOR_SWITCH_ICON, this._element) ?? this._element)\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\n // `.disabled` only blocks the pointer; Enter and Space still fire a click\n if (this._element.classList.contains(CLASS_NAME_DISABLED) || this._element.getAttribute('aria-disabled') === 'true') {\n return\n }\n\n this.toggle()\n })\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get isActive(): boolean {\n return this.#iconElement.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n get isLoading(): boolean {\n return this.#iconElement.classList.contains(CLASS_NAME_LOADING)\n }\n\n // Public\n toggle(force?: boolean): void {\n if (this.isLoading) {\n return\n }\n\n const active = force ?? !this.isActive\n\n // A listener can cancel with preventDefault(), or hand over a promise with\n // wait(): the button shows a spinner until it settles and switches only\n // when it resolves.\n let pending: Promise<unknown> | undefined\n const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE, {\n active,\n wait: (promise: Promise<unknown>) => {\n pending = promise\n },\n })\n\n if (toggleEvent?.defaultPrevented) {\n return\n }\n\n if (!pending) {\n this.#setActive(active)\n return\n }\n\n this.#setLoading(true)\n pending\n .then(\n () => this.#setActive(active),\n () => undefined,\n )\n .finally(() => this.#setLoading(false))\n }\n\n dispose(): void {\n // A wait() still pending must not leave the spinner on the button.\n this.#setLoading(false)\n super.dispose()\n }\n\n // Private\n #setActive(active: boolean): void {\n // A pending wait() may settle after dispose().\n if (!this._element) {\n return\n }\n\n this.#iconElement.classList.toggle(CLASS_NAME_ACTIVE, active)\n this._element.setAttribute('aria-pressed', String(active))\n\n EventHandler.trigger(this._element, EVENT_CHANGE, { active })\n }\n\n #setLoading(loading: boolean): void {\n if (!this._element) {\n return\n }\n\n this.#iconElement.classList.toggle(CLASS_NAME_LOADING, loading)\n if (loading) {\n this._element.setAttribute('aria-busy', 'true')\n } else {\n this._element.removeAttribute('aria-busy')\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start switch-icon-init\ninitAll(SELECTOR_DATA_TOGGLE, SwitchIcon)\n// js-docs-end switch-icon-init\n\nexport default SwitchIcon\n","import { Tab } from './bootstrap'\nimport { onDOMContentLoaded } from './bootstrap/util/index'\n\n// js-docs-start tab-init\nexport const EnableActivationTabsFromLocationHash = (): void => {\n const locationHash: string = window.location.hash\n\n if (!locationHash) {\n return\n }\n\n for (const tab of document.querySelectorAll<HTMLAnchorElement>('[data-bs-toggle=\"tab\"], [data-tblr-toggle=\"tab\"]')) {\n if (tab.hash !== locationHash) {\n continue\n }\n\n // A tab link outside a .nav/.list-group has no parent to switch in;\n // show() would throw and stop the rest of the bundle.\n try {\n ;(Tab.getOrCreateInstance(tab) as InstanceType<typeof Tab>).show()\n } catch (error) {\n console.error(error)\n }\n }\n}\n\nonDOMContentLoaded(EnableActivationTabsFromLocationHash)\n// js-docs-end tab-init\n","import { Toast } from './bootstrap'\nimport SelectorEngine from './bootstrap/dom/selector-engine'\nimport { onDOMContentLoaded } from './bootstrap/util/index'\n\n// js-docs-start toast-init\nonDOMContentLoaded(() => {\n for (const toastTriggerEl of document.querySelectorAll<HTMLElement>('[data-bs-toggle=\"toast\"], [data-tblr-toggle=\"toast\"]')) {\n try {\n // A trigger whose target is missing is left alone instead of getting a\n // click handler that throws.\n const toastEl = SelectorEngine.getElementFromSelector(toastTriggerEl)\n if (!toastEl) {\n continue\n }\n\n const toast = Toast.getOrCreateInstance(toastEl) as InstanceType<typeof Toast>\n toastTriggerEl.addEventListener('click', () => {\n toast.show()\n })\n } catch (error) {\n console.error(error)\n }\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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\n// The part of a SortableJS instance the component uses\ninterface SortableInstance {\n option(name: string, value?: unknown): unknown\n toArray(): string[]\n sort(order: string[], useAnimation?: boolean): void\n destroy(): void\n}\n\ntype ComponentConfig = Record<string, unknown>\n\ntype ComponentConfigInput = Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'sortable'\nconst DATA_ATTRIBUTE = `data-${NAME}`\n\nconst SELECTOR_DATA_SORTABLE = `[${DATA_ATTRIBUTE}]`\n\n// SortableJS defaults apply. Set `forceFallback: true` to drag an HTML copy that\n// `.sortable-drag` can style, instead of the browser's drag image.\nconst Default: ComponentConfig = {}\n\nconst DefaultType: Record<string, string> = {}\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 * Turn `forceFallback` on so the dragged copy can be styled with `.sortable-drag`.\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<string, string> {\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<string, unknown>, element?: HTMLElement): Record<string, unknown> {\n // `data-sortable='{\"animation\":150}'` carries the options as JSON; a bare\n // `data-sortable` or invalid JSON means defaults.\n let dataOptions: Record<string, unknown> = {}\n const raw = element?.getAttribute(DATA_ATTRIBUTE)\n\n if (raw) {\n try {\n const parsed: unknown = JSON.parse(raw)\n // Only an object carries options; `null`, a number or an array is ignored.\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n dataOptions = parsed as Record<string, unknown>\n }\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\ninitAll(SELECTOR_DATA_SORTABLE, Sortable)\n// js-docs-end sortable-init\n\nexport default Sortable\nexport type { SortableInstance }\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.ts\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/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 { initAll } from './bootstrap/util/component-functions'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype OtpInputType = 'numeric' | 'alphanumeric' | 'alpha'\n\ntype ComponentConfig = {\n groups: number[] | null\n length: number | null\n mask: boolean\n separator: string\n type: string\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"otp\"], [data-tblr-toggle=\"otp\"]'\nconst SELECTOR_INPUT = 'input'\n\n// Keeps the active-slot highlight in sync with the caret as it moves without typing\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\n// A touch focuses the input after `pointerup`, so the tap is only settled by `click`\nconst POINTER_END_EVENTS = ['click', 'pointercancel']\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES: Record<OtpInputType, { inputmode: string; pattern: string; filter: RegExp }> = {\n numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g },\n}\n\n// Upper bound for the slot count, whatever the config asks for.\nconst MAX_LENGTH = 32\n\nconst Default: ComponentConfig = {\n groups: null,\n length: null,\n mask: false,\n separator: '·',\n type: 'numeric',\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n groups: '(array|null)',\n length: '(number|null)',\n mask: 'boolean',\n separator: 'string',\n type: 'string',\n}\n\n/**\n * Class definition\n *\n * A single real `<input>` inside `.otp` is turned into a transparent overlay\n * once its value is rendered into one `.otp-slot` per character, so screen\n * readers, password managers and SMS autofill still see one ordinary field.\n */\n\nclass OtpInput extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _input!: HTMLInputElement\n _type!: (typeof TYPES)[OtpInputType]\n _length = 0\n _wasComplete = false\n _slots: HTMLElement[] = []\n _slotsContainer: HTMLElement | null = null\n // Tracks a tap so focus (fired natively by the browser) can respect the\n // clicked slot instead of jumping to the first empty one\n _pointerActive = false\n _pointerIndex = 0\n _composedValue: string | null = null\n\n _onInput = (event: Event): void => {\n if ((event as InputEvent).isComposing) {\n return\n }\n\n const composed = this._composedValue\n this._composedValue = null\n if (composed !== null && composed === this._input.value) {\n return\n }\n\n this._handleInput()\n }\n _onCompositionEnd = (): void => {\n this._handleInput()\n this._composedValue = this._input.value\n }\n _onBeforeInput = (event: Event): void => this._handleBeforeInput(event as InputEvent)\n _onFocus = (): void => this._handleFocus()\n _onPointerDown = (event: Event): void => this._handlePointerDown(event as PointerEvent)\n _onPointerEnd = (): void => {\n this._pointerActive = false\n }\n _onSync = (): void => this._render()\n _onSelectionChange = (): void => {\n if (document.activeElement === this._input) {\n this._render()\n }\n }\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n const input = SelectorEngine.findOne(SELECTOR_INPUT, this._element) as HTMLInputElement | null\n if (!input) {\n return\n }\n\n this._input = input\n this._type = TYPES[this._config.type as OtpInputType] ?? TYPES.numeric\n this._length = this._resolveLength()\n\n this._setupInput()\n this._renderSlots()\n this._addEventListeners()\n this._render()\n this._wasComplete = this._input.value.length === this._length\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n getValue(): string {\n return this._input.value\n }\n\n setValue(value: string | number): void {\n this._input.value = this._sanitize(String(value))\n this._render()\n this._checkComplete()\n }\n\n clear(): void {\n this._input.value = ''\n this._render()\n this._input.focus()\n }\n\n focus(): void {\n this._pointerActive = false\n this._input.focus()\n this._selectSlot(this._firstEmptyIndex())\n this._render()\n }\n\n dispose(): void {\n if (!this._input) {\n super.dispose()\n return\n }\n\n this._input.removeEventListener('input', this._onInput)\n this._input.removeEventListener('beforeinput', this._onBeforeInput)\n this._input.removeEventListener('focus', this._onFocus)\n this._input.removeEventListener('pointerdown', this._onPointerDown)\n this._input.removeEventListener('compositionend', this._onCompositionEnd)\n for (const type of POINTER_END_EVENTS) {\n this._input.removeEventListener(type, this._onPointerEnd)\n }\n for (const type of SYNC_EVENTS) {\n this._input.removeEventListener(type, this._onSync)\n }\n\n document.removeEventListener('selectionchange', this._onSelectionChange)\n\n this._slotsContainer?.remove()\n this._element.classList.remove(CLASS_NAME_RENDERED)\n super.dispose()\n }\n\n // Private\n _resolveLength(): number {\n const candidates: unknown[] = [this._config.length, Number.parseInt(this._input.getAttribute('maxlength') ?? '', 10)]\n\n const { groups } = this._config\n if (Array.isArray(groups) && groups.length > 0) {\n candidates.push(groups.reduce<number>((sum, group) => sum + Number(group), 0))\n }\n\n // The first usable value wins; a negative, fractional, or huge length\n // would render no slots or flood the DOM.\n for (const candidate of candidates) {\n if (typeof candidate === 'number' && Number.isInteger(candidate) && candidate > 0) {\n return Math.min(candidate, MAX_LENGTH)\n }\n }\n\n return 6\n }\n\n _setupInput(): void {\n const input = this._input\n\n // A single text field backs the whole control so screen readers, password\n // managers, and SMS autofill treat it like any other input.\n // Only text-like types support the selection API the slots rely on.\n if (input.type !== 'text' && input.type !== 'tel') {\n input.type = 'text'\n }\n\n input.classList.add(CLASS_NAME_INPUT)\n input.setAttribute('maxlength', String(this._length))\n input.setAttribute('inputmode', this._type.inputmode)\n input.setAttribute('pattern', this._type.pattern)\n\n if (!input.getAttribute('autocomplete')) {\n input.setAttribute('autocomplete', 'one-time-code')\n }\n\n if (input.value) {\n input.value = this._sanitize(input.value)\n }\n }\n\n _renderSlots(): void {\n const container = document.createElement('div')\n container.className = CLASS_NAME_SLOTS\n container.setAttribute('aria-hidden', 'true')\n\n const { groups, separator } = this._config\n let groupIndex = 0\n let inGroup = 0\n\n for (let i = 0; i < this._length; i++) {\n const slot = document.createElement('div')\n slot.className = CLASS_NAME_SLOT\n container.append(slot)\n this._slots.push(slot)\n\n if (groups && groups.length > 0) {\n inGroup++\n if (inGroup === groups[groupIndex] && i < this._length - 1) {\n const separatorEl = document.createElement('div')\n separatorEl.className = CLASS_NAME_SEPARATOR\n separatorEl.textContent = separator\n container.append(separatorEl)\n groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n inGroup = 0\n }\n }\n }\n\n this._slotsContainer = container\n this._element.append(container)\n this._element.classList.add(CLASS_NAME_RENDERED)\n }\n\n _addEventListeners(): void {\n this._input.addEventListener('input', this._onInput)\n this._input.addEventListener('beforeinput', this._onBeforeInput)\n this._input.addEventListener('focus', this._onFocus)\n this._input.addEventListener('pointerdown', this._onPointerDown)\n this._input.addEventListener('compositionend', this._onCompositionEnd)\n for (const type of POINTER_END_EVENTS) {\n this._input.addEventListener(type, this._onPointerEnd)\n }\n\n document.addEventListener('selectionchange', this._onSelectionChange)\n\n for (const type of SYNC_EVENTS) {\n this._input.addEventListener(type, this._onSync)\n }\n }\n\n _handleFocus(): void {\n if (this._pointerActive) {\n // Wait for focus to settle before moving the caret, or iOS raises then\n // immediately dismisses the on-screen keyboard.\n this._pointerActive = false\n this._selectSlot(this._pointerIndex)\n this._render()\n return\n }\n\n this._selectSlot(this._firstEmptyIndex())\n this._render()\n }\n\n // Bulk path: paste, SMS autofill, or a programmatic change land here as a\n // single multi-character `input` event. Single keystrokes are handled by\n // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n _handleInput(): void {\n const sanitized = this._sanitize(this._input.value)\n if (sanitized !== this._input.value) {\n this._input.value = sanitized\n }\n\n if (document.activeElement === this._input) {\n this._selectSlot(this._firstEmptyIndex())\n }\n\n this._afterValueChange()\n }\n\n // Intercepts single-character typing, Backspace and Delete so each slot is\n // overwritten in place rather than inserting and shifting the value.\n // Anything else (paste, autofill) falls through to `_handleInput`; IME\n // composition is sanitised once on `compositionend`.\n _handleBeforeInput(event: InputEvent): void {\n const { inputType, data } = event\n\n if (inputType === 'insertText' && data && data.length === 1) {\n event.preventDefault()\n\n const char = this._sanitize(data)\n if (!char) {\n return\n }\n\n const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n const end = Math.max(this._input.selectionEnd ?? index, index + 1)\n const chars = [...this._input.value]\n chars.splice(index, end - index, char)\n this._input.value = chars.join('').slice(0, this._length)\n\n this._selectSlot(index + 1)\n this._afterValueChange()\n return\n }\n\n if (inputType === 'deleteContentBackward') {\n event.preventDefault()\n\n const before = this._input.value\n\n const start = this._input.selectionStart ?? 0\n const end = this._input.selectionEnd ?? start\n const chars = [...this._input.value]\n\n if (end > start) {\n chars.splice(start, end - start)\n this._input.value = chars.join('')\n this._selectSlot(start)\n } else if (start > 0) {\n chars.splice(start - 1, 1)\n this._input.value = chars.join('')\n this._selectSlot(start - 1)\n }\n\n this._afterValueChange(before)\n return\n }\n\n if (inputType === 'deleteContentForward') {\n event.preventDefault()\n\n const before = this._input.value\n\n const start = this._input.selectionStart ?? 0\n const end = this._input.selectionEnd ?? start\n const chars = [...this._input.value]\n\n if (end > start) {\n chars.splice(start, end - start)\n this._input.value = chars.join('')\n } else if (start < chars.length) {\n chars.splice(start, 1)\n this._input.value = chars.join('')\n }\n\n this._selectSlot(start)\n this._afterValueChange(before)\n }\n }\n\n _handlePointerDown(event: PointerEvent): void {\n const index = this._slotIndexFromPoint(event.clientX)\n if (index === null) {\n return\n }\n\n const target = Math.min(index, this._firstEmptyIndex())\n\n if (document.activeElement === this._input) {\n // Already focused: safe to take over caret placement, it won't dismiss\n // the on-screen keyboard.\n event.preventDefault()\n this._selectSlot(target)\n this._render()\n return\n }\n\n // Not yet focused: let the browser focus the input natively so a tap\n // raises the on-screen keyboard; the caret is placed once focus settles.\n this._pointerActive = true\n this._pointerIndex = target\n }\n\n // Maps a viewport x-coordinate to the slot under it, clamped to the last slot.\n _slotIndexFromPoint(x: number): number | null {\n const rtl = getComputedStyle(this._element).direction === 'rtl'\n\n for (const [index, slot] of this._slots.entries()) {\n const rect = slot.getBoundingClientRect()\n // RTL mirrors the visual slot order, so the boundary flips from the\n // right edge (v6, LTR-only) to the left edge.\n const reached = rtl ? x >= rect.left : x <= rect.right\n\n if (reached || index === this._slots.length - 1) {\n return index\n }\n }\n\n return null\n }\n\n // `before` is the value ahead of the edit: a Backspace in the first slot or\n // a Delete past the last one changes nothing and fires no event.\n _afterValueChange(before?: string): void {\n this._render()\n\n if (before !== undefined && before === this._input.value) {\n return\n }\n\n EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n this._checkComplete()\n }\n\n _firstEmptyIndex(): number {\n return Math.min(this._input.value.length, this._length - 1)\n }\n\n // Represents the active slot as a selection: a filled slot is selected so\n // the next keystroke overwrites it; an empty slot gets a collapsed caret.\n _selectSlot(index: number): void {\n const clamped = Math.max(0, Math.min(index, this._length - 1))\n const end = clamped < this._input.value.length ? clamped + 1 : clamped\n this._input.setSelectionRange(clamped, end)\n }\n\n _sanitize(value: string): string {\n return value.replace(this._type.filter, '').slice(0, this._length)\n }\n\n _render(): void {\n const { value } = this._input\n const isFocused = document.activeElement === this._input\n const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n for (const [index, slot] of this._slots.entries()) {\n const char = value[index] ?? ''\n slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n }\n }\n\n // Fires once when the value becomes full, not on every edit of a full value.\n _checkComplete(): void {\n const { value } = this._input\n const complete = value.length === this._length\n\n if (complete && !this._wasComplete) {\n EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n }\n\n this._wasComplete = complete\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start otp-init\ninitAll(SELECTOR_DATA_TOGGLE, OtpInput)\n// js-docs-end otp-init\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Tabler sparkline.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 { initAll } from './bootstrap/util/component-functions'\nimport type { ComponentConfig as BaseConfig, ElementSelector } from './bootstrap/types'\n\ntype SparklineType = 'line' | 'bar' | 'circle' | 'tristate'\ntype SparklineFill = 'none' | 'auto'\ntype SparklineSpot = 'none' | 'min' | 'max' | 'last'\ntype SparklineValuesInput = number[] | number | string\n\ntype ComponentConfig = {\n type: SparklineType\n values: number[]\n width: number\n height: number\n min: number | null\n max: number | null\n fill: SparklineFill\n spot: SparklineSpot\n pad: number\n barGap: number\n barRadius: number\n label: string | number | boolean | null\n threshold: number | null\n animation: number\n}\n\ntype ComponentConfigInput = Partial<Omit<ComponentConfig, 'values'>> & {\n values?: SparklineValuesInput\n}\n\n/**\n * Constants\n */\n\nconst NAME = 'sparkline'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_RENDERED = `rendered${EVENT_KEY}`\nconst EVENT_UPDATED = `updated${EVENT_KEY}`\n\nconst CLASS_NAME_SVG = 'sparkline-svg'\nconst CLASS_NAME_LABEL = 'sparkline-label'\n\nconst SELECTOR_DATA_TOGGLE = `[data-bs-toggle=\"${NAME}\"], [data-tblr-toggle=\"${NAME}\"]`\n\n// Custom properties are declared on `.sparkline` in scss/ui/_sparkline.scss and\n// get the `--tblr-` prefix at build time.\nconst CSS_VAR_PREFIX = '--tblr-sparkline'\nconst SVG_NS = 'http://www.w3.org/2000/svg'\n\nconst Default: ComponentConfig = {\n type: 'line',\n values: [],\n width: 80,\n height: 24,\n min: null,\n max: null,\n fill: 'none',\n spot: 'none',\n pad: 2,\n barGap: 2,\n barRadius: 2,\n label: null,\n threshold: null,\n animation: 300,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n type: 'string',\n values: 'array',\n width: 'number',\n height: 'number',\n min: '(number|null)',\n max: '(number|null)',\n fill: 'string',\n spot: 'string',\n pad: 'number',\n barGap: 'number',\n barRadius: 'number',\n label: '(string|number|boolean|null)',\n threshold: '(number|null)',\n animation: 'number',\n}\n\n/**\n * Helpers\n */\n\nconst svgEl = <K extends keyof SVGElementTagNameMap>(tag: K): SVGElementTagNameMap[K] => document.createElementNS(SVG_NS, tag)\n\nconst setAttr = (el: Element, attrs: Record<string, string | number | null | undefined>): void => {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== null && value !== undefined) {\n el.setAttribute(key, String(value))\n }\n }\n}\n\nconst cssVar = (name: string): string => `var(${CSS_VAR_PREFIX}-${name})`\n\nconst clampSpan = (min: number, max: number): number => {\n const span = max - min\n return span === 0 ? 1 : span\n}\n\n// Accepts \"3,4,2\" as well as a JSON array literal \"[3,4,2]\".\nconst parseNumberList = (input: unknown): number[] => {\n const raw = String(input ?? '').trim()\n if (!raw) {\n return []\n }\n\n if (raw.startsWith('[')) {\n try {\n const arr = JSON.parse(raw)\n return Array.isArray(arr) ? arr.map(Number).filter(Number.isFinite) : []\n } catch {\n return []\n }\n }\n\n return raw\n .split(',')\n .map((value) => Number(value.trim()))\n .filter(Number.isFinite)\n}\n\nconst toValues = (input: unknown): number[] => {\n if (Array.isArray(input)) {\n return input.map(Number).filter(Number.isFinite)\n }\n\n if (typeof input === 'number') {\n return Number.isFinite(input) ? [input] : []\n }\n\n return parseNumberList(input)\n}\n\n// The value range a chart is drawn in: forced by `min` / `max`, otherwise the\n// data itself, widened to include the threshold (and zero for bars) so those\n// lines are always inside the chart.\nconst rangeOf = (values: number[], minForced: number | null, maxForced: number | null, ...include: number[]): { min: number; max: number; span: number } => {\n const min = minForced ?? Math.min(...values, ...include)\n const max = maxForced ?? Math.max(...values, ...include)\n return { min, max, span: clampSpan(min, max) }\n}\n\nconst NUMBER_RE = /-?\\d*\\.?\\d+(?:e[-+]?\\d+)?/g\n\n// Interpolates the numbers inside two attribute values with the same shape:\n// \"0,20 40,10\" → \"0,10 40,20\", or a path `d`. Falls back to the target when\n// the shapes differ.\nconst lerpAttr = (from: string, to: string, t: number): string => {\n const a = from.match(NUMBER_RE)\n const b = to.match(NUMBER_RE)\n if (!a || !b || a.length !== b.length || from.replace(NUMBER_RE, '#') !== to.replace(NUMBER_RE, '#')) {\n return to\n }\n\n let i = 0\n return to.replace(NUMBER_RE, () => {\n const value = Number(a[i]) + (Number(b[i]) - Number(a[i])) * t\n i++\n return String(Math.round(value * 1000) / 1000)\n })\n}\n\nconst easeOut = (t: number): number => 1 - (1 - t) ** 3\n\nconst findIndexByMode = (values: number[], mode: SparklineSpot): number => {\n if (values.length === 0 || mode === 'none') {\n return -1\n }\n\n if (mode === 'last') {\n return values.length - 1\n }\n\n let idx = 0\n for (let i = 1; i < values.length; i++) {\n if (mode === 'min' ? values[i] < values[idx] : values[i] > values[idx]) {\n idx = i\n }\n }\n\n return idx\n}\n\nconst getCssNumber = (element: Element, name: string, fallback: number): number => {\n const raw = getComputedStyle(element).getPropertyValue(`${CSS_VAR_PREFIX}-${name}`).trim()\n const value = Number.parseFloat(raw)\n return Number.isFinite(value) ? value : fallback\n}\n\n/**\n * Class definition\n *\n * Tiny inline SVG chart (line, bar or circle) rendered from data attributes:\n *\n * <span class=\"sparkline\" data-bs-toggle=\"sparkline\" data-bs-type=\"line\" data-bs-values=\"3,4,2,6,5,8,7\"></span>\n *\n * Colours and stroke widths come from the `--tblr-sparkline-*` custom\n * properties, so a text colour utility on the element themes the chart.\n */\n\nclass Sparkline extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _userConfig: ComponentConfigInput = {}\n _frame = 0\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n // Kept so that render() can re-read the data attributes on top of it.\n this._userConfig = { ...config }\n this.render()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n // Public\n update(values: SparklineValuesInput): void {\n const serialized = Array.isArray(values) ? values.join(',') : String(values)\n const attribute = this._element.hasAttribute('data-tblr-values') ? 'data-tblr-values' : 'data-bs-values'\n this._element.setAttribute(attribute, serialized)\n\n // The attribute is now the source of truth for the values.\n delete this._userConfig.values\n this.render()\n EventHandler.trigger(this._element, EVENT_UPDATED)\n }\n\n render(): void {\n this._config = this._getConfig(this._userConfig) as ComponentConfig\n const previous = this._element.querySelector<SVGSVGElement>('svg')\n this._element.querySelector(`.${CLASS_NAME_LABEL}`)?.remove()\n\n if (this._config.values.length === 0) {\n cancelAnimationFrame(this._frame)\n previous?.remove()\n EventHandler.trigger(this._element, EVENT_RENDERED)\n return\n }\n\n let svg: SVGSVGElement\n switch (this._config.type) {\n case 'bar':\n svg = this._renderBars()\n break\n case 'tristate':\n svg = this._renderTristate()\n break\n case 'circle':\n svg = this._renderCircle()\n break\n default:\n svg = this._renderLine()\n break\n }\n\n // On an update with the same shape (type and number of values) the old\n // SVG stays in place and its attributes are tweened to the new ones.\n if (previous && this._canAnimate(previous, svg)) {\n this._animate(previous, svg)\n } else {\n cancelAnimationFrame(this._frame)\n previous?.remove()\n this._element.append(svg)\n }\n\n // A text label centered over the chart, mainly for the circle type. Plain\n // HTML rather than SVG text, so it keeps the page font and is not\n // stretched with the viewBox.\n const text = this._labelText()\n if (text !== '') {\n const label = document.createElement('span')\n label.className = CLASS_NAME_LABEL\n label.textContent = text\n this._element.append(label)\n }\n\n EventHandler.trigger(this._element, EVENT_RENDERED)\n }\n\n dispose(): void {\n cancelAnimationFrame(this._frame)\n this._element.querySelector('svg')?.remove()\n this._element.querySelector(`.${CLASS_NAME_LABEL}`)?.remove()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config: BaseConfig): BaseConfig {\n config.values = toValues(config.values)\n return config\n }\n\n // `auto` (or `true`) derives the label from the data: the share of `max`\n // for a circle, the last value otherwise. Anything else is printed as is.\n _labelText(): string {\n const { label, values, type } = this._config\n if (label === null || label === false || label === '') {\n return ''\n }\n\n if (label !== 'auto' && label !== true) {\n return String(label)\n }\n\n if (type === 'circle') {\n return `${Math.round(this._circleRatio() * 100)}%`\n }\n\n return String(values[values.length - 1])\n }\n\n // A single value is a share of `max` (default 100); a second value may be\n // passed as the maximum instead: data-bs-values=\"72,100\".\n _circleRatio(): number {\n const cfg = this._config\n const value = cfg.values[0] ?? 0\n const max = cfg.max ?? (cfg.values.length > 1 ? cfg.values[1] : 100)\n const min = cfg.min ?? 0\n return Math.max(0, Math.min(1, (value - min) / clampSpan(min, max)))\n }\n\n _canAnimate(from: SVGSVGElement, to: SVGSVGElement): boolean {\n if (this._config.animation <= 0 || window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n return false\n }\n\n if (from.getAttribute('viewBox') !== to.getAttribute('viewBox') || from.children.length !== to.children.length) {\n return false\n }\n\n return Array.from(from.children).every((child, i) => child.tagName === to.children[i].tagName)\n }\n\n _animate(from: SVGSVGElement, to: SVGSVGElement): void {\n cancelAnimationFrame(this._frame)\n\n const pairs = Array.from(to.children).map((target, i) => {\n const source = from.children[i]\n const tweens: [string, string, string][] = []\n for (const { name } of Array.from(source.attributes)) {\n if (!target.hasAttribute(name)) {\n source.removeAttribute(name)\n }\n }\n\n for (const { name, value } of Array.from(target.attributes)) {\n const start = source.getAttribute(name)\n if (start === null || start === value) {\n source.setAttribute(name, value)\n } else {\n tweens.push([name, start, value])\n }\n }\n\n return { source, tweens }\n })\n\n const duration = this._config.animation\n const started = performance.now()\n const step = (now: number): void => {\n const t = easeOut(Math.min(1, (now - started) / duration))\n for (const { source, tweens } of pairs) {\n for (const [name, start, end] of tweens) {\n source.setAttribute(name, t >= 1 ? end : lerpAttr(start, end, t))\n }\n }\n\n if (t < 1) {\n this._frame = requestAnimationFrame(step)\n }\n }\n\n this._frame = requestAnimationFrame(step)\n }\n\n // A 1px horizontal guide: solid for the zero line, dashed for the threshold.\n _hairline(svg: SVGSVGElement, y: number, color: string, dashed = false): void {\n const line = svgEl('line')\n setAttr(line, {\n 'x1': 0,\n 'x2': this._config.width,\n 'y1': y,\n 'y2': y,\n 'stroke': cssVar(color),\n 'stroke-width': 1,\n 'stroke-dasharray': dashed ? '3 2' : null,\n 'vector-effect': 'non-scaling-stroke',\n })\n svg.append(line)\n }\n\n _createSvg(): SVGSVGElement {\n const { width, height } = this._config\n const svg = svgEl('svg')\n setAttr(svg, {\n 'viewBox': `0 0 ${width} ${height}`,\n 'preserveAspectRatio': 'none',\n 'width': width,\n 'height': height,\n 'class': CLASS_NAME_SVG,\n 'aria-hidden': 'true',\n })\n return svg\n }\n\n _renderLine(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const { min, span } = rangeOf(cfg.values, cfg.min, cfg.max, ...(cfg.threshold === null ? [] : [cfg.threshold]))\n const yOf = (value: number): number => cfg.pad + (1 - (value - min) / span) * (cfg.height - cfg.pad * 2)\n const ys = cfg.values.length === 1 ? [yOf(cfg.values[0]), yOf(cfg.values[0])] : cfg.values.map(yOf)\n const step = cfg.width / (ys.length - 1)\n\n if (cfg.threshold !== null) {\n this._hairline(svg, yOf(cfg.threshold), 'threshold', true)\n }\n\n if (cfg.fill === 'auto') {\n const area = svgEl('path')\n setAttr(area, {\n d: this._areaPath(ys, step, cfg.height),\n fill: cssVar('fill'),\n stroke: 'none',\n })\n svg.append(area)\n }\n\n const line = svgEl('polyline')\n setAttr(line, {\n 'points': ys.map((y, i) => `${i * step},${y}`).join(' '),\n 'fill': 'none',\n 'stroke': cssVar('stroke'),\n 'stroke-width': cssVar('stroke-width'),\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n })\n svg.append(line)\n\n const spotIndex = findIndexByMode(cfg.values, cfg.spot)\n if (spotIndex >= 0) {\n const spot = svgEl('circle')\n setAttr(spot, {\n cx: cfg.values.length === 1 ? cfg.width / 2 : spotIndex * step,\n cy: ys[spotIndex],\n r: getCssNumber(this._element, 'spot-size', 2),\n fill: cssVar('spot'),\n })\n svg.append(spot)\n }\n\n return svg\n }\n\n _areaPath(ys: number[], step: number, height: number): string {\n const top = ys.map((y, i) => `${i === 0 ? 'M' : 'L'} ${i * step} ${y}`).join(' ')\n const lastX = (ys.length - 1) * step\n return `${top} L ${lastX} ${height} L 0 ${height} Z`\n }\n\n _renderBars(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const { min, span } = rangeOf(cfg.values, cfg.min, cfg.max, 0, ...(cfg.threshold === null ? [] : [cfg.threshold]))\n const yOf = (value: number): number => cfg.height - ((value - min) / span) * cfg.height\n\n const count = cfg.values.length\n const barWidth = (cfg.width - cfg.barGap * (count - 1)) / count\n // Bars grow from the zero line: upwards for positive values, downwards\n // (in the \"negative\" color) for negative ones. With no negative values the\n // zero line is the bottom edge; otherwise it is drawn as a hairline.\n const zeroY = yOf(0)\n\n if (min < 0) {\n this._hairline(svg, zeroY, 'zero')\n }\n\n // With a threshold, the bars below it take the \"negative\" color instead.\n if (cfg.threshold !== null) {\n this._hairline(svg, yOf(cfg.threshold), 'threshold', true)\n }\n\n // A bar spans from the zero line to its value, clipped to the chart when a\n // forced `min` / `max` puts part of it (or the zero line) outside.\n const clip = (y: number): number => Math.max(0, Math.min(cfg.height, y))\n\n cfg.values.forEach((value, i) => {\n const top = clip(yOf(Math.max(value, 0)))\n const bottom = clip(yOf(Math.min(value, 0)))\n const below = cfg.threshold === null ? value < 0 : value < cfg.threshold\n const bar = svgEl('rect')\n setAttr(bar, {\n x: i * (barWidth + cfg.barGap),\n y: top,\n width: barWidth,\n height: bottom - top,\n rx: cfg.barRadius,\n fill: cssVar(below ? 'negative' : 'stroke'),\n })\n svg.append(bar)\n })\n\n return svg\n }\n\n // Win/loss: every value is a full bar up (positive), down (negative) or a\n // short tick on the zero line (zero), regardless of its size.\n _renderTristate(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const count = cfg.values.length\n const barWidth = (cfg.width - cfg.barGap * (count - 1)) / count\n const zeroY = cfg.height / 2\n const tick = Math.min(2, zeroY)\n\n this._hairline(svg, zeroY, 'zero')\n\n cfg.values.forEach((value, i) => {\n const bar = svgEl('rect')\n const attrs = value > 0 ? { y: 0, height: zeroY, fill: 'stroke' } : value < 0 ? { y: zeroY, height: zeroY, fill: 'negative' } : { y: zeroY - tick / 2, height: tick, fill: 'track' }\n setAttr(bar, {\n x: i * (barWidth + cfg.barGap),\n y: attrs.y,\n width: barWidth,\n height: attrs.height,\n rx: cfg.barRadius,\n fill: cssVar(attrs.fill),\n })\n svg.append(bar)\n })\n\n return svg\n }\n\n _renderCircle(): SVGSVGElement {\n const cfg = this._config\n const svg = this._createSvg()\n\n const strokeWidth = getCssNumber(this._element, 'stroke-width', 2)\n const radius = Math.max(0, Math.min(cfg.width, cfg.height) / 2 - strokeWidth / 2)\n const cx = cfg.width / 2\n const cy = cfg.height / 2\n\n const ratio = this._circleRatio()\n const circumference = 2 * Math.PI * radius\n\n const track = svgEl('circle')\n setAttr(track, {\n 'cx': cx,\n 'cy': cy,\n 'r': radius,\n 'fill': 'none',\n 'stroke': cssVar('track'),\n 'stroke-width': strokeWidth,\n })\n svg.append(track)\n\n const ring = svgEl('circle')\n setAttr(ring, {\n 'cx': cx,\n 'cy': cy,\n 'r': radius,\n 'fill': 'none',\n 'stroke': cssVar('stroke'),\n 'stroke-width': strokeWidth,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circumference,\n 'stroke-dashoffset': circumference * (1 - ratio),\n 'transform': `rotate(-90 ${cx} ${cy})`,\n })\n svg.append(ring)\n\n return svg\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start sparkline-init\ninitAll(SELECTOR_DATA_TOGGLE, Sparkline)\n// js-docs-end sparkline-init\n\nexport default Sparkline\n","/**\n * --------------------------------------------------------------------------\n * Tabler strength.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 { initAll } from './bootstrap/util/component-functions'\nimport { getElement } from './bootstrap/util/index'\nimport type { ElementSelector } from './bootstrap/types'\n\ntype StrengthLevel = 'weak' | 'fair' | 'good' | 'strong'\n\ntype ComponentConfig = {\n /** selector of the password field; without it the meter looks in its own parent */\n input: string | null\n minLength: number\n messages: Record<StrengthLevel, string>\n weights: Record<string, number>\n /** score bounds: weak up to the first, fair to the second, good to the third */\n thresholds: number[]\n /** replaces the built-in scoring; gets the password, returns a number */\n scorer: ((password: string) => number) | null\n}\n\ntype ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = `bs.${NAME}`\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_STRENGTH = `[data-bs-${NAME}], [data-tblr-${NAME}]`\nconst SELECTOR_SEGMENT = `.${NAME}-segment`\nconst SELECTOR_TEXT = `.${NAME}-text`\nconst SELECTOR_PASSWORD = 'input[type=\"password\"]'\n\nconst LEVELS: StrengthLevel[] = ['weak', 'fair', 'good', 'strong']\n\nconst Default: ComponentConfig = {\n input: null,\n minLength: 8,\n messages: {\n weak: 'Weak',\n fair: 'Fair',\n good: 'Good',\n strong: 'Strong',\n },\n weights: {\n minLength: 1,\n extraLength: 1,\n longPassword: 1,\n lowercase: 1,\n uppercase: 1,\n numbers: 1,\n special: 1,\n multipleSpecial: 1,\n },\n thresholds: [2, 4, 6],\n scorer: null,\n}\n\nconst DefaultType: Record<keyof ComponentConfig, string> = {\n input: '(string|null)',\n minLength: 'number',\n messages: 'object',\n weights: 'object',\n thresholds: 'array',\n scorer: '(function|null)',\n}\n\n/**\n * Class definition\n *\n * Rates the password typed in a field and fills a segmented meter. The score\n * is a hint for the user, never a validation: check the password on the\n * server as well.\n */\n\nclass Strength extends BaseComponent {\n declare _element: HTMLElement\n declare _config: ComponentConfig\n _input: HTMLInputElement | null = null\n _segments: HTMLElement[] = []\n _text: HTMLElement | null = null\n // What the markup put in the label element: shown while the field is empty,\n // so a form can keep its password rules there until a level replaces them.\n _emptyText = ''\n _level: StrengthLevel | null = null\n _onInput = (): void => this.evaluate()\n\n constructor(element: ElementSelector, config?: ComponentConfigInput) {\n super(element, config)\n\n if (!this._element) {\n return\n }\n\n this._input = this._getInput()\n this._segments = SelectorEngine.find(SELECTOR_SEGMENT, this._element)\n this._text = this._getText()\n this._emptyText = this._text?.textContent?.trim() ?? ''\n\n this._setUpAria()\n\n if (!this._input) {\n return\n }\n\n this._input.addEventListener('input', this._onInput)\n this.evaluate()\n }\n\n // Getters\n static get Default(): ComponentConfig {\n return Default\n }\n\n static get DefaultType(): Record<keyof ComponentConfig, string> {\n return DefaultType\n }\n\n static get NAME(): string {\n return NAME\n }\n\n get level(): StrengthLevel | null {\n return this._level\n }\n\n // Public\n evaluate(): void {\n if (!this._input) {\n return\n }\n\n const password = this._input.value\n const score = this._score(password)\n const level = this._level_(score)\n\n if (level === this._level) {\n return\n }\n\n this._level = level\n this._render(level)\n\n // The password itself is never part of the payload.\n EventHandler.trigger(this._element, EVENT_CHANGE, { strength: level, score })\n }\n\n dispose(): void {\n this._input?.removeEventListener('input', this._onInput)\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config: ComponentConfig): ComponentConfig {\n // A partial `messages` or `weights` overrides only the keys it names.\n return {\n ...config,\n messages: { ...Default.messages, ...config.messages },\n weights: { ...Default.weights, ...config.weights },\n }\n }\n\n _getInput(): HTMLInputElement | null {\n const { input } = this._config\n if (input) {\n return getElement(input) as HTMLInputElement | null\n }\n\n // Without an explicit selector only the meter's own parent is searched.\n // The nearest field before the meter wins, so a confirm-password field\n // placed after it is never mistaken for the one being rated; a meter\n // placed above its field falls back to the first field after it.\n const parent = this._element.parentElement\n const fields = parent ? (SelectorEngine.find(SELECTOR_PASSWORD, parent) as HTMLInputElement[]) : []\n const precedingFields = fields.filter((field) => Boolean(field.compareDocumentPosition(this._element) & Node.DOCUMENT_POSITION_FOLLOWING))\n return precedingFields[precedingFields.length - 1] ?? fields[0] ?? null\n }\n\n _getText(): HTMLElement | null {\n const parent = this._element.parentElement\n return parent ? SelectorEngine.findOne(SELECTOR_TEXT, parent) : null\n }\n\n _setUpAria(): void {\n const element = this._element\n element.setAttribute('role', 'progressbar')\n element.setAttribute('aria-valuemin', '0')\n element.setAttribute('aria-valuemax', String(LEVELS.length))\n element.setAttribute('aria-valuenow', '0')\n\n if (!element.hasAttribute('aria-label') && !element.hasAttribute('aria-labelledby')) {\n element.setAttribute('aria-label', 'Password strength')\n }\n\n // The segments are decoration; the level is read from the meter itself.\n for (const segment of this._segments) {\n segment.setAttribute('aria-hidden', 'true')\n }\n\n this._text?.setAttribute('aria-live', 'polite')\n }\n\n _score(password: string): number {\n if (!password) {\n return 0\n }\n\n const { scorer, weights, minLength } = this._config\n if (typeof scorer === 'function') {\n return scorer(password)\n }\n\n const rules: [boolean, number | undefined][] = [\n [password.length >= minLength, weights.minLength],\n [password.length >= minLength + 4, weights.extraLength],\n [password.length >= 16, weights.longPassword],\n [/[a-z]/.test(password), weights.lowercase],\n [/[A-Z]/.test(password), weights.uppercase],\n [/\\d/.test(password), weights.numbers],\n [/[^\\dA-Za-z]/.test(password), weights.special],\n [(password.match(/[^\\dA-Za-z]/g) ?? []).length > 1, weights.multipleSpecial],\n ]\n\n return rules.reduce((score, [passed, weight]) => score + (passed ? (weight ?? 0) : 0), 0)\n }\n\n // Trailing underscore: `_level` is the field holding the current value.\n _level_(score: number): StrengthLevel | null {\n if (score <= 0) {\n return null\n }\n\n const index = this._config.thresholds.findIndex((threshold) => score <= threshold)\n return LEVELS[index === -1 ? LEVELS.length - 1 : index] ?? null\n }\n\n _render(level: StrengthLevel | null): void {\n const element = this._element\n const index = level ? LEVELS.indexOf(level) : -1\n\n // Emptied rather than removed: `data-bs-strength` is also the attribute\n // the data API looks for, and an empty value matches no level in CSS.\n element.dataset.bsStrength = level ?? ''\n\n element.setAttribute('aria-valuenow', String(index + 1))\n // No level means no spoken value: `aria-valuenow` of 0 says it already,\n // and an invented word here could not be translated through `messages`.\n if (level) {\n element.setAttribute('aria-valuetext', this._config.messages[level] ?? level)\n } else {\n element.removeAttribute('aria-valuetext')\n }\n\n // The segments are filled in proportion, so a meter with three or five of\n // them works as well as the usual four.\n const filled = level ? Math.ceil(((index + 1) / LEVELS.length) * this._segments.length) : 0\n for (const [position, segment] of this._segments.entries()) {\n segment.classList.toggle(CLASS_NAME_ACTIVE, position < filled)\n }\n\n if (this._text) {\n this._text.textContent = level ? (this._config.messages[level] ?? '') : this._emptyText\n this._text.dataset.bsStrength = level ?? ''\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// js-docs-start strength-init\ninitAll(SELECTOR_DATA_STRENGTH, Strength)\n// js-docs-end strength-init\n\nexport default Strength\n","/**\n * Helpers kept only so that projects written for an older 1.x release keep\n * working. They are exported as the `tabler` namespace: `tabler.tabler.getColor()`\n * from the bundle, `import { tabler } from '@tabler/core'` from the module.\n *\n * Removed in 2.0, together with this file. Read the custom property yourself,\n * and mix the opacity in with `color-mix()`.\n */\n\nexport const prefix: string = 'tblr-'\n\nexport const hexToRgba = (hex: string, opacity: number): string | null => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n return result ? `rgba(${parseInt(result[1]!, 16)}, ${parseInt(result[2]!, 16)}, ${parseInt(result[3]!, 16)}, ${opacity})` : null\n}\n\nexport const getColor = (color: string, opacity: number = 1): string | null => {\n const c = getComputedStyle(document.body).getPropertyValue(`--${prefix}${color}`).trim()\n\n if (opacity === 1) {\n return c\n }\n\n // The palette is written in `oklch()` since 1.6, which `hexToRgba()` cannot\n // read, so anything that is not a hex colour gets its opacity from the browser.\n return hexToRgba(c, opacity) ?? (c ? `color-mix(in srgb, ${c} ${opacity * 100}%, transparent)` : null)\n}\n"],"x_google_ignoreList":[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,68,69],"mappings":"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"}