@openeuropa/bcl-bootstrap 0.28.0 → 1.0.0

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 (283) hide show
  1. package/bootstrap-icons.svg +1 -1
  2. package/icons/0-circle-fill.svg +4 -0
  3. package/icons/0-circle.svg +4 -0
  4. package/icons/0-square-fill.svg +4 -0
  5. package/icons/0-square.svg +4 -0
  6. package/icons/1-circle-fill.svg +1 -1
  7. package/icons/amd.svg +3 -0
  8. package/icons/arrow-bar-left.svg +1 -1
  9. package/icons/arrow-bar-right.svg +1 -1
  10. package/icons/arrows-collapse.svg +1 -1
  11. package/icons/arrows-expand.svg +1 -1
  12. package/icons/building-add.svg +5 -0
  13. package/icons/building-check.svg +5 -0
  14. package/icons/building-dash.svg +5 -0
  15. package/icons/building-down.svg +5 -0
  16. package/icons/building-exclamation.svg +4 -0
  17. package/icons/building-fill-add.svg +4 -0
  18. package/icons/building-fill-check.svg +4 -0
  19. package/icons/building-fill-dash.svg +4 -0
  20. package/icons/building-fill-down.svg +4 -0
  21. package/icons/building-fill-exclamation.svg +4 -0
  22. package/icons/building-fill-gear.svg +4 -0
  23. package/icons/building-fill-lock.svg +4 -0
  24. package/icons/building-fill-slash.svg +4 -0
  25. package/icons/building-fill-up.svg +4 -0
  26. package/icons/building-fill-x.svg +4 -0
  27. package/icons/building-fill.svg +3 -0
  28. package/icons/building-gear.svg +4 -0
  29. package/icons/building-lock.svg +4 -0
  30. package/icons/building-slash.svg +5 -0
  31. package/icons/building-up.svg +5 -0
  32. package/icons/building-x.svg +4 -0
  33. package/icons/building.svg +2 -2
  34. package/icons/buildings-fill.svg +3 -0
  35. package/icons/buildings.svg +4 -0
  36. package/icons/bus-front-fill.svg +3 -0
  37. package/icons/bus-front.svg +4 -0
  38. package/icons/capsule-pill.svg +1 -1
  39. package/icons/capsule.svg +1 -1
  40. package/icons/car-front-fill.svg +1 -1
  41. package/icons/car-front.svg +1 -1
  42. package/icons/database-add.svg +4 -0
  43. package/icons/database-check.svg +4 -0
  44. package/icons/database-dash.svg +4 -0
  45. package/icons/database-down.svg +4 -0
  46. package/icons/database-exclamation.svg +4 -0
  47. package/icons/database-fill-add.svg +4 -0
  48. package/icons/database-fill-check.svg +4 -0
  49. package/icons/database-fill-dash.svg +4 -0
  50. package/icons/database-fill-down.svg +4 -0
  51. package/icons/database-fill-exclamation.svg +5 -0
  52. package/icons/database-fill-gear.svg +4 -0
  53. package/icons/database-fill-lock.svg +5 -0
  54. package/icons/database-fill-slash.svg +4 -0
  55. package/icons/database-fill-up.svg +4 -0
  56. package/icons/database-fill-x.svg +5 -0
  57. package/icons/database-fill.svg +6 -0
  58. package/icons/database-gear.svg +4 -0
  59. package/icons/database-lock.svg +4 -0
  60. package/icons/database-slash.svg +4 -0
  61. package/icons/database-up.svg +4 -0
  62. package/icons/database-x.svg +4 -0
  63. package/icons/database.svg +3 -0
  64. package/icons/envelope-at-fill.svg +4 -0
  65. package/icons/envelope-at.svg +4 -0
  66. package/icons/ev-front-fill.svg +3 -0
  67. package/icons/ev-front.svg +4 -0
  68. package/icons/globe-americas.svg +3 -0
  69. package/icons/globe-asia-australia.svg +4 -0
  70. package/icons/globe-central-south-asia.svg +3 -0
  71. package/icons/globe-europe-africa.svg +3 -0
  72. package/icons/heart-pulse-fill.svg +2 -1
  73. package/icons/heart-pulse.svg +2 -1
  74. package/icons/heartbreak-fill.svg +1 -1
  75. package/icons/heartbreak.svg +1 -1
  76. package/icons/house-add-fill.svg +5 -0
  77. package/icons/house-add.svg +4 -0
  78. package/icons/house-check-fill.svg +5 -0
  79. package/icons/house-check.svg +4 -0
  80. package/icons/house-dash-fill.svg +5 -0
  81. package/icons/house-dash.svg +4 -0
  82. package/icons/house-door-fill.svg +1 -1
  83. package/icons/house-door.svg +1 -1
  84. package/icons/house-down-fill.svg +5 -0
  85. package/icons/house-down.svg +4 -0
  86. package/icons/house-exclamation-fill.svg +5 -0
  87. package/icons/house-exclamation.svg +4 -0
  88. package/icons/house-fill.svg +2 -2
  89. package/icons/house-gear-fill.svg +5 -0
  90. package/icons/house-gear.svg +4 -0
  91. package/icons/house-lock-fill.svg +5 -0
  92. package/icons/house-lock.svg +4 -0
  93. package/icons/house-slash-fill.svg +5 -0
  94. package/icons/house-slash.svg +4 -0
  95. package/icons/house-up-fill.svg +5 -0
  96. package/icons/house-up.svg +4 -0
  97. package/icons/house-x-fill.svg +5 -0
  98. package/icons/house-x.svg +4 -0
  99. package/icons/house.svg +1 -2
  100. package/icons/houses-fill.svg +4 -0
  101. package/icons/houses.svg +3 -0
  102. package/icons/lungs-fill.svg +1 -1
  103. package/icons/nvidia.svg +3 -0
  104. package/icons/people-fill.svg +1 -3
  105. package/icons/people.svg +1 -1
  106. package/icons/person-add.svg +4 -0
  107. package/icons/person-check.svg +2 -2
  108. package/icons/person-dash.svg +2 -2
  109. package/icons/person-down.svg +4 -0
  110. package/icons/person-exclamation.svg +4 -0
  111. package/icons/person-fill-add.svg +4 -0
  112. package/icons/person-fill-check.svg +4 -0
  113. package/icons/person-fill-dash.svg +4 -0
  114. package/icons/person-fill-down.svg +4 -0
  115. package/icons/person-fill-exclamation.svg +4 -0
  116. package/icons/person-fill-gear.svg +3 -0
  117. package/icons/person-fill-lock.svg +3 -0
  118. package/icons/person-fill-slash.svg +3 -0
  119. package/icons/person-fill-up.svg +4 -0
  120. package/icons/person-fill-x.svg +4 -0
  121. package/icons/person-fill.svg +1 -1
  122. package/icons/person-gear.svg +3 -0
  123. package/icons/person-lock.svg +3 -0
  124. package/icons/person-slash.svg +3 -0
  125. package/icons/person-up.svg +4 -0
  126. package/icons/person-vcard-fill.svg +3 -0
  127. package/icons/person-vcard.svg +4 -0
  128. package/icons/person-x.svg +2 -2
  129. package/icons/person.svg +1 -1
  130. package/icons/prescription.svg +2 -2
  131. package/icons/prescription2.svg +1 -1
  132. package/icons/regex.svg +3 -0
  133. package/icons/rocket-fill.svg +4 -0
  134. package/icons/rocket-takeoff-fill.svg +4 -0
  135. package/icons/rocket-takeoff.svg +5 -0
  136. package/icons/rocket.svg +5 -0
  137. package/icons/scooter.svg +3 -0
  138. package/icons/sign-dead-end-fill.svg +4 -0
  139. package/icons/sign-dead-end.svg +4 -0
  140. package/icons/sign-do-not-enter-fill.svg +4 -0
  141. package/icons/sign-do-not-enter.svg +4 -0
  142. package/icons/sign-intersection-fill.svg +3 -0
  143. package/icons/sign-intersection-side-fill.svg +3 -0
  144. package/icons/sign-intersection-side.svg +4 -0
  145. package/icons/sign-intersection-t-fill.svg +3 -0
  146. package/icons/sign-intersection-t.svg +4 -0
  147. package/icons/sign-intersection-y-fill.svg +3 -0
  148. package/icons/sign-intersection-y.svg +4 -0
  149. package/icons/sign-intersection.svg +4 -0
  150. package/icons/sign-merge-left-fill.svg +3 -0
  151. package/icons/sign-merge-left.svg +4 -0
  152. package/icons/sign-merge-right-fill.svg +3 -0
  153. package/icons/sign-merge-right.svg +4 -0
  154. package/icons/sign-no-left-turn-fill.svg +4 -0
  155. package/icons/sign-no-left-turn.svg +3 -0
  156. package/icons/sign-no-parking-fill.svg +4 -0
  157. package/icons/sign-no-parking.svg +3 -0
  158. package/icons/sign-no-right-turn-fill.svg +4 -0
  159. package/icons/sign-no-right-turn.svg +3 -0
  160. package/icons/sign-railroad-fill.svg +5 -0
  161. package/icons/sign-railroad.svg +4 -0
  162. package/icons/sign-stop-fill.svg +1 -1
  163. package/icons/sign-stop-lights-fill.svg +1 -1
  164. package/icons/sign-turn-left-fill.svg +1 -1
  165. package/icons/sign-turn-right-fill.svg +1 -1
  166. package/icons/sign-turn-slight-left-fill.svg +1 -1
  167. package/icons/sign-turn-slight-right-fill.svg +1 -1
  168. package/icons/sign-yield-fill.svg +1 -1
  169. package/icons/sina-weibo.svg +4 -0
  170. package/icons/stripe.svg +3 -0
  171. package/icons/subscript.svg +3 -0
  172. package/icons/superscript.svg +3 -0
  173. package/icons/taxi-front-fill.svg +3 -0
  174. package/icons/taxi-front.svg +4 -0
  175. package/icons/tencent-qq.svg +4 -0
  176. package/icons/text-wrap.svg +3 -0
  177. package/icons/train-freight-front-fill.svg +1 -1
  178. package/icons/train-freight-front.svg +1 -1
  179. package/icons/train-front-fill.svg +1 -1
  180. package/icons/train-front.svg +1 -1
  181. package/icons/train-lightrail-front-fill.svg +1 -1
  182. package/icons/train-lightrail-front.svg +1 -1
  183. package/icons/trello.svg +3 -0
  184. package/icons/truck-front-fill.svg +1 -1
  185. package/icons/truck-front.svg +2 -3
  186. package/icons/virus.svg +1 -1
  187. package/icons/virus2.svg +1 -1
  188. package/icons/wikipedia.svg +3 -0
  189. package/js/dist/alert.js +14 -25
  190. package/js/dist/alert.js.map +1 -1
  191. package/js/dist/base-component.js +13 -30
  192. package/js/dist/base-component.js.map +1 -1
  193. package/js/dist/button.js +11 -15
  194. package/js/dist/button.js.map +1 -1
  195. package/js/dist/carousel.js +36 -120
  196. package/js/dist/carousel.js.map +1 -1
  197. package/js/dist/collapse.js +27 -88
  198. package/js/dist/collapse.js.map +1 -1
  199. package/js/dist/dependency/manipulator.js +72 -0
  200. package/js/dist/dependency/manipulator.js.map +1 -0
  201. package/js/dist/dom/data.js +6 -10
  202. package/js/dist/dom/data.js.map +1 -1
  203. package/js/dist/dom/event-handler.js +7 -52
  204. package/js/dist/dom/event-handler.js.map +1 -1
  205. package/js/dist/dom/manipulator.js +2 -15
  206. package/js/dist/dom/manipulator.js.map +1 -1
  207. package/js/dist/dom/selector-engine.js +2 -16
  208. package/js/dist/dom/selector-engine.js.map +1 -1
  209. package/js/dist/dropdown.js +52 -124
  210. package/js/dist/dropdown.js.map +1 -1
  211. package/js/dist/modal.js +40 -119
  212. package/js/dist/modal.js.map +1 -1
  213. package/js/dist/offcanvas.js +36 -89
  214. package/js/dist/offcanvas.js.map +1 -1
  215. package/js/dist/popover.js +15 -22
  216. package/js/dist/popover.js.map +1 -1
  217. package/js/dist/scrollspy-legacy.js +216 -0
  218. package/js/dist/scrollspy-legacy.js.map +1 -0
  219. package/js/dist/scrollspy.js +42 -80
  220. package/js/dist/scrollspy.js.map +1 -1
  221. package/js/dist/tab.js +40 -98
  222. package/js/dist/tab.js.map +1 -1
  223. package/js/dist/toast.js +30 -69
  224. package/js/dist/toast.js.map +1 -1
  225. package/js/dist/tooltip.js +74 -196
  226. package/js/dist/tooltip.js.map +1 -1
  227. package/js/dist/util/backdrop.js +13 -40
  228. package/js/dist/util/backdrop.js.map +1 -1
  229. package/js/dist/util/component-functions.js +5 -11
  230. package/js/dist/util/component-functions.js.map +1 -1
  231. package/js/dist/util/config.js +6 -18
  232. package/js/dist/util/config.js.map +1 -1
  233. package/js/dist/util/focustrap.js +16 -33
  234. package/js/dist/util/focustrap.js.map +1 -1
  235. package/js/dist/util/index.js +28 -75
  236. package/js/dist/util/index.js.map +1 -1
  237. package/js/dist/util/sanitizer.js +7 -17
  238. package/js/dist/util/sanitizer.js.map +1 -1
  239. package/js/dist/util/scrollbar.js +16 -43
  240. package/js/dist/util/scrollbar.js.map +1 -1
  241. package/js/dist/util/swipe.js +18 -40
  242. package/js/dist/util/swipe.js.map +1 -1
  243. package/js/dist/util/template-factory.js +13 -41
  244. package/js/dist/util/template-factory.js.map +1 -1
  245. package/js/src/alert.js +1 -1
  246. package/js/src/base-component.js +2 -2
  247. package/js/src/button.js +1 -1
  248. package/js/src/carousel.js +1 -1
  249. package/js/src/collapse.js +1 -1
  250. package/js/src/dependency/manipulator.js +80 -0
  251. package/js/src/dom/data.js +1 -1
  252. package/js/src/dom/event-handler.js +1 -1
  253. package/js/src/dom/manipulator.js +1 -1
  254. package/js/src/dom/selector-engine.js +1 -1
  255. package/js/src/dropdown.js +10 -3
  256. package/js/src/modal.js +3 -3
  257. package/js/src/offcanvas.js +1 -1
  258. package/js/src/popover.js +1 -1
  259. package/js/src/scrollspy-legacy.js +294 -0
  260. package/js/src/scrollspy.js +1 -1
  261. package/js/src/tab.js +2 -4
  262. package/js/src/toast.js +9 -4
  263. package/js/src/tooltip.js +27 -48
  264. package/js/src/util/backdrop.js +1 -1
  265. package/js/src/util/component-functions.js +1 -1
  266. package/js/src/util/config.js +1 -1
  267. package/js/src/util/focustrap.js +1 -1
  268. package/js/src/util/index.js +1 -1
  269. package/js/src/util/sanitizer.js +1 -1
  270. package/js/src/util/scrollbar.js +1 -1
  271. package/js/src/util/swipe.js +1 -1
  272. package/js/src/util/template-factory.js +1 -1
  273. package/legacy/dependency/manipulator.js +80 -0
  274. package/legacy/scrollspy-legacy.js +294 -0
  275. package/package.json +6 -6
  276. package/scss/_buttons.scss +8 -2
  277. package/scss/_carousel.scss +0 -3
  278. package/scss/_functions.scss +1 -1
  279. package/scss/_toasts.scss +2 -0
  280. package/scss/_variables.scss +1 -1
  281. package/scss/bootstrap-utilities.scss +3 -0
  282. package/scss/mixins/_banner.scss +1 -1
  283. package/scss/mixins/_table-variants.scss +2 -2
@@ -4,18 +4,13 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Focustrap = factory(global.EventHandler, global.SelectorEngine, global.Config));
5
5
  })(this, (function (EventHandler, SelectorEngine, Config) { 'use strict';
6
6
 
7
- const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
8
-
9
- const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
10
- const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
11
- const Config__default = /*#__PURE__*/_interopDefaultLegacy(Config);
12
-
13
7
  /**
14
8
  * --------------------------------------------------------------------------
15
- * Bootstrap (v5.2.1): util/focustrap.js
9
+ * Bootstrap (v5.2.3): util/focustrap.js
16
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17
11
  * --------------------------------------------------------------------------
18
12
  */
13
+
19
14
  /**
20
15
  * Constants
21
16
  */
@@ -31,75 +26,66 @@
31
26
  const Default = {
32
27
  autofocus: true,
33
28
  trapElement: null // The element to trap focus inside of
34
-
35
29
  };
30
+
36
31
  const DefaultType = {
37
32
  autofocus: 'boolean',
38
33
  trapElement: 'element'
39
34
  };
35
+
40
36
  /**
41
37
  * Class definition
42
38
  */
43
39
 
44
- class FocusTrap extends Config__default.default {
40
+ class FocusTrap extends Config {
45
41
  constructor(config) {
46
42
  super();
47
43
  this._config = this._getConfig(config);
48
44
  this._isActive = false;
49
45
  this._lastTabNavDirection = null;
50
- } // Getters
51
-
46
+ }
52
47
 
48
+ // Getters
53
49
  static get Default() {
54
50
  return Default;
55
51
  }
56
-
57
52
  static get DefaultType() {
58
53
  return DefaultType;
59
54
  }
60
-
61
55
  static get NAME() {
62
56
  return NAME;
63
- } // Public
64
-
57
+ }
65
58
 
59
+ // Public
66
60
  activate() {
67
61
  if (this._isActive) {
68
62
  return;
69
63
  }
70
-
71
64
  if (this._config.autofocus) {
72
65
  this._config.trapElement.focus();
73
66
  }
74
-
75
- EventHandler__default.default.off(document, EVENT_KEY); // guard against infinite focus loop
76
-
77
- EventHandler__default.default.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event));
78
- EventHandler__default.default.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
67
+ EventHandler.off(document, EVENT_KEY); // guard against infinite focus loop
68
+ EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event));
69
+ EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
79
70
  this._isActive = true;
80
71
  }
81
-
82
72
  deactivate() {
83
73
  if (!this._isActive) {
84
74
  return;
85
75
  }
86
-
87
76
  this._isActive = false;
88
- EventHandler__default.default.off(document, EVENT_KEY);
89
- } // Private
90
-
77
+ EventHandler.off(document, EVENT_KEY);
78
+ }
91
79
 
80
+ // Private
92
81
  _handleFocusin(event) {
93
82
  const {
94
83
  trapElement
95
84
  } = this._config;
96
-
97
85
  if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
98
86
  return;
99
87
  }
100
-
101
- const elements = SelectorEngine__default.default.focusableChildren(trapElement);
102
-
88
+ const elements = SelectorEngine.focusableChildren(trapElement);
103
89
  if (elements.length === 0) {
104
90
  trapElement.focus();
105
91
  } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
@@ -108,15 +94,12 @@
108
94
  elements[0].focus();
109
95
  }
110
96
  }
111
-
112
97
  _handleKeydown(event) {
113
98
  if (event.key !== TAB_KEY) {
114
99
  return;
115
100
  }
116
-
117
101
  this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
118
102
  }
119
-
120
103
  }
121
104
 
122
105
  return FocusTrap;
@@ -1 +1 @@
1
- {"version":3,"file":"focustrap.js","sources":["../../src/util/focustrap.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.1): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\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) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","Default","autofocus","trapElement","DefaultType","FocusTrap","Config","constructor","config","_config","_getConfig","_isActive","_lastTabNavDirection","activate","focus","EventHandler","off","document","on","event","_handleFocusin","_handleKeydown","deactivate","target","contains","elements","SelectorEngine","focusableChildren","length","key","shiftKey"],"mappings":"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"}
1
+ {"version":3,"file":"focustrap.js","sources":["../../src/util/focustrap.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\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) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","Default","autofocus","trapElement","DefaultType","FocusTrap","Config","constructor","config","_config","_getConfig","_isActive","_lastTabNavDirection","activate","focus","EventHandler","off","document","on","event","_handleFocusin","_handleKeydown","deactivate","target","contains","elements","SelectorEngine","focusableChildren","length","key","shiftKey"],"mappings":"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"}
@@ -6,193 +6,165 @@
6
6
 
7
7
  /**
8
8
  * --------------------------------------------------------------------------
9
- * Bootstrap (v5.2.1): util/index.js
9
+ * Bootstrap (v5.2.3): util/index.js
10
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
11
11
  * --------------------------------------------------------------------------
12
12
  */
13
+
13
14
  const MAX_UID = 1_000_000;
14
15
  const MILLISECONDS_MULTIPLIER = 1000;
15
- const TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)
16
+ const TRANSITION_END = 'transitionend';
16
17
 
18
+ // Shout-out Angus Croll (https://goo.gl/pxwQGp)
17
19
  const toType = object => {
18
20
  if (object === null || object === undefined) {
19
21
  return `${object}`;
20
22
  }
21
-
22
23
  return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
23
24
  };
25
+
24
26
  /**
25
27
  * Public Util API
26
28
  */
27
29
 
28
-
29
30
  const getUID = prefix => {
30
31
  do {
31
32
  prefix += Math.floor(Math.random() * MAX_UID);
32
33
  } while (document.getElementById(prefix));
33
-
34
34
  return prefix;
35
35
  };
36
-
37
36
  const getSelector = element => {
38
37
  let selector = element.getAttribute('data-bs-target');
39
-
40
38
  if (!selector || selector === '#') {
41
- let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
39
+ let hrefAttribute = element.getAttribute('href');
40
+
41
+ // The only valid content that could double as a selector are IDs or classes,
42
42
  // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
43
43
  // `document.querySelector` will rightfully complain it is invalid.
44
44
  // See https://github.com/twbs/bootstrap/issues/32273
45
-
46
45
  if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
47
46
  return null;
48
- } // Just in case some CMS puts out a full URL with the anchor appended
49
-
47
+ }
50
48
 
49
+ // Just in case some CMS puts out a full URL with the anchor appended
51
50
  if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
52
51
  hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
53
52
  }
54
-
55
53
  selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
56
54
  }
57
-
58
55
  return selector;
59
56
  };
60
-
61
57
  const getSelectorFromElement = element => {
62
58
  const selector = getSelector(element);
63
-
64
59
  if (selector) {
65
60
  return document.querySelector(selector) ? selector : null;
66
61
  }
67
-
68
62
  return null;
69
63
  };
70
-
71
64
  const getElementFromSelector = element => {
72
65
  const selector = getSelector(element);
73
66
  return selector ? document.querySelector(selector) : null;
74
67
  };
75
-
76
68
  const getTransitionDurationFromElement = element => {
77
69
  if (!element) {
78
70
  return 0;
79
- } // Get transition-duration of the element
80
-
71
+ }
81
72
 
73
+ // Get transition-duration of the element
82
74
  let {
83
75
  transitionDuration,
84
76
  transitionDelay
85
77
  } = window.getComputedStyle(element);
86
78
  const floatTransitionDuration = Number.parseFloat(transitionDuration);
87
- const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
79
+ const floatTransitionDelay = Number.parseFloat(transitionDelay);
88
80
 
81
+ // Return 0 if element or transition duration is not found
89
82
  if (!floatTransitionDuration && !floatTransitionDelay) {
90
83
  return 0;
91
- } // If multiple durations are defined, take the first
92
-
84
+ }
93
85
 
86
+ // If multiple durations are defined, take the first
94
87
  transitionDuration = transitionDuration.split(',')[0];
95
88
  transitionDelay = transitionDelay.split(',')[0];
96
89
  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
97
90
  };
98
-
99
91
  const triggerTransitionEnd = element => {
100
92
  element.dispatchEvent(new Event(TRANSITION_END));
101
93
  };
102
-
103
94
  const isElement = object => {
104
95
  if (!object || typeof object !== 'object') {
105
96
  return false;
106
97
  }
107
-
108
98
  if (typeof object.jquery !== 'undefined') {
109
99
  object = object[0];
110
100
  }
111
-
112
101
  return typeof object.nodeType !== 'undefined';
113
102
  };
114
-
115
103
  const getElement = object => {
116
104
  // it's a jQuery object or a node element
117
105
  if (isElement(object)) {
118
106
  return object.jquery ? object[0] : object;
119
107
  }
120
-
121
108
  if (typeof object === 'string' && object.length > 0) {
122
109
  return document.querySelector(object);
123
110
  }
124
-
125
111
  return null;
126
112
  };
127
-
128
113
  const isVisible = element => {
129
114
  if (!isElement(element) || element.getClientRects().length === 0) {
130
115
  return false;
131
116
  }
132
-
133
- const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed
134
-
117
+ const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
118
+ // Handle `details` element as its content may falsie appear visible when it is closed
135
119
  const closedDetails = element.closest('details:not([open])');
136
-
137
120
  if (!closedDetails) {
138
121
  return elementIsVisible;
139
122
  }
140
-
141
123
  if (closedDetails !== element) {
142
124
  const summary = element.closest('summary');
143
-
144
125
  if (summary && summary.parentNode !== closedDetails) {
145
126
  return false;
146
127
  }
147
-
148
128
  if (summary === null) {
149
129
  return false;
150
130
  }
151
131
  }
152
-
153
132
  return elementIsVisible;
154
133
  };
155
-
156
134
  const isDisabled = element => {
157
135
  if (!element || element.nodeType !== Node.ELEMENT_NODE) {
158
136
  return true;
159
137
  }
160
-
161
138
  if (element.classList.contains('disabled')) {
162
139
  return true;
163
140
  }
164
-
165
141
  if (typeof element.disabled !== 'undefined') {
166
142
  return element.disabled;
167
143
  }
168
-
169
144
  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
170
145
  };
171
-
172
146
  const findShadowRoot = element => {
173
147
  if (!document.documentElement.attachShadow) {
174
148
  return null;
175
- } // Can find the shadow root otherwise it'll return the document
176
-
149
+ }
177
150
 
151
+ // Can find the shadow root otherwise it'll return the document
178
152
  if (typeof element.getRootNode === 'function') {
179
153
  const root = element.getRootNode();
180
154
  return root instanceof ShadowRoot ? root : null;
181
155
  }
182
-
183
156
  if (element instanceof ShadowRoot) {
184
157
  return element;
185
- } // when we don't find a shadow root
186
-
158
+ }
187
159
 
160
+ // when we don't find a shadow root
188
161
  if (!element.parentNode) {
189
162
  return null;
190
163
  }
191
-
192
164
  return findShadowRoot(element.parentNode);
193
165
  };
194
-
195
166
  const noop = () => {};
167
+
196
168
  /**
197
169
  * Trick to restart an element's animation
198
170
  *
@@ -201,8 +173,6 @@
201
173
  *
202
174
  * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
203
175
  */
204
-
205
-
206
176
  const reflow = element => {
207
177
  element.offsetHeight; // eslint-disable-line no-unused-expressions
208
178
  };
@@ -211,12 +181,9 @@
211
181
  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
212
182
  return window.jQuery;
213
183
  }
214
-
215
184
  return null;
216
185
  };
217
-
218
186
  const DOMContentLoadedCallbacks = [];
219
-
220
187
  const onDOMContentLoaded = callback => {
221
188
  if (document.readyState === 'loading') {
222
189
  // add listener on the first call when the document is in loading state
@@ -227,26 +194,21 @@
227
194
  }
228
195
  });
229
196
  }
230
-
231
197
  DOMContentLoadedCallbacks.push(callback);
232
198
  } else {
233
199
  callback();
234
200
  }
235
201
  };
236
-
237
202
  const isRTL = () => document.documentElement.dir === 'rtl';
238
-
239
203
  const defineJQueryPlugin = plugin => {
240
204
  onDOMContentLoaded(() => {
241
205
  const $ = getjQuery();
242
206
  /* istanbul ignore if */
243
-
244
207
  if ($) {
245
208
  const name = plugin.NAME;
246
209
  const JQUERY_NO_CONFLICT = $.fn[name];
247
210
  $.fn[name] = plugin.jQueryInterface;
248
211
  $.fn[name].Constructor = plugin;
249
-
250
212
  $.fn[name].noConflict = () => {
251
213
  $.fn[name] = JQUERY_NO_CONFLICT;
252
214
  return plugin.jQueryInterface;
@@ -254,35 +216,29 @@
254
216
  }
255
217
  });
256
218
  };
257
-
258
219
  const execute = callback => {
259
220
  if (typeof callback === 'function') {
260
221
  callback();
261
222
  }
262
223
  };
263
-
264
224
  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
265
225
  if (!waitForTransition) {
266
226
  execute(callback);
267
227
  return;
268
228
  }
269
-
270
229
  const durationPadding = 5;
271
230
  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
272
231
  let called = false;
273
-
274
232
  const handler = ({
275
233
  target
276
234
  }) => {
277
235
  if (target !== transitionElement) {
278
236
  return;
279
237
  }
280
-
281
238
  called = true;
282
239
  transitionElement.removeEventListener(TRANSITION_END, handler);
283
240
  execute(callback);
284
241
  };
285
-
286
242
  transitionElement.addEventListener(TRANSITION_END, handler);
287
243
  setTimeout(() => {
288
244
  if (!called) {
@@ -290,6 +246,7 @@
290
246
  }
291
247
  }, emulatedDuration);
292
248
  };
249
+
293
250
  /**
294
251
  * Return the previous/next element of a list.
295
252
  *
@@ -299,23 +256,19 @@
299
256
  * @param isCycleAllowed
300
257
  * @return {Element|elem} The proper element
301
258
  */
302
-
303
-
304
259
  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
305
260
  const listLength = list.length;
306
- let index = list.indexOf(activeElement); // if the element does not exist in the list return an element
307
- // depending on the direction and if cycle is allowed
261
+ let index = list.indexOf(activeElement);
308
262
 
263
+ // if the element does not exist in the list return an element
264
+ // depending on the direction and if cycle is allowed
309
265
  if (index === -1) {
310
266
  return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
311
267
  }
312
-
313
268
  index += shouldGetNext ? 1 : -1;
314
-
315
269
  if (isCycleAllowed) {
316
270
  index = (index + listLength) % listLength;
317
271
  }
318
-
319
272
  return list[Math.max(0, Math.min(index, listLength - 1))];
320
273
  };
321
274
 
@@ -340,7 +293,7 @@
340
293
  exports.toType = toType;
341
294
  exports.triggerTransitionEnd = triggerTransitionEnd;
342
295
 
343
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
296
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
344
297
 
345
298
  }));
346
299
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/util/index.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\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}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\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 => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getjQuery,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType\n}\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","object","undefined","Object","prototype","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min"],"mappings":";;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMA,OAAO,GAAG,SAAhB,CAAA;EACA,MAAMC,uBAAuB,GAAG,IAAhC,CAAA;EACA,MAAMC,cAAc,GAAG,eAAvB;;AAGMC,QAAAA,MAAM,GAAGC,MAAM,IAAI;EACvB,EAAA,IAAIA,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAKC,SAAlC,EAA6C;MAC3C,OAAQ,CAAA,EAAED,MAAO,CAAjB,CAAA,CAAA;EACD,GAAA;;EAED,EAAA,OAAOE,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BL,MAA/B,CAAA,CAAuCM,KAAvC,CAA6C,aAA7C,EAA4D,CAA5D,CAAA,CAA+DC,WAA/D,EAAP,CAAA;EACD,EAND;EAQA;EACA;EACA;;;AAEMC,QAAAA,MAAM,GAAGC,MAAM,IAAI;IACvB,GAAG;MACDA,MAAM,IAAIC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,EAAgBhB,GAAAA,OAA3B,CAAV,CAAA;EACD,GAFD,QAESiB,QAAQ,CAACC,cAAT,CAAwBL,MAAxB,CAFT,EAAA;;EAIA,EAAA,OAAOA,MAAP,CAAA;EACD,EAND;;EAQA,MAAMM,WAAW,GAAGC,OAAO,IAAI;EAC7B,EAAA,IAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAR,CAAqB,gBAArB,CAAf,CAAA;;EAEA,EAAA,IAAI,CAACD,QAAD,IAAaA,QAAQ,KAAK,GAA9B,EAAmC;MACjC,IAAIE,aAAa,GAAGH,OAAO,CAACE,YAAR,CAAqB,MAArB,CAApB,CADiC;EAIjC;EACA;EACA;;EACA,IAAA,IAAI,CAACC,aAAD,IAAmB,CAACA,aAAa,CAACC,QAAd,CAAuB,GAAvB,CAAD,IAAgC,CAACD,aAAa,CAACE,UAAd,CAAyB,GAAzB,CAAxD,EAAwF;EACtF,MAAA,OAAO,IAAP,CAAA;EACD,KATgC;;;EAYjC,IAAA,IAAIF,aAAa,CAACC,QAAd,CAAuB,GAAvB,CAAA,IAA+B,CAACD,aAAa,CAACE,UAAd,CAAyB,GAAzB,CAApC,EAAmE;QACjEF,aAAa,GAAI,CAAGA,CAAAA,EAAAA,aAAa,CAACG,KAAd,CAAoB,GAApB,CAAA,CAAyB,CAAzB,CAA4B,CAAhD,CAAA,CAAA;EACD,KAAA;;EAEDL,IAAAA,QAAQ,GAAGE,aAAa,IAAIA,aAAa,KAAK,GAAnC,GAAyCA,aAAa,CAACI,IAAd,EAAzC,GAAgE,IAA3E,CAAA;EACD,GAAA;;EAED,EAAA,OAAON,QAAP,CAAA;EACD,CAvBD,CAAA;;AAyBMO,QAAAA,sBAAsB,GAAGR,OAAO,IAAI;EACxC,EAAA,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B,CAAA;;EAEA,EAAA,IAAIC,QAAJ,EAAc;MACZ,OAAOJ,QAAQ,CAACY,aAAT,CAAuBR,QAAvB,CAAmCA,GAAAA,QAAnC,GAA8C,IAArD,CAAA;EACD,GAAA;;EAED,EAAA,OAAO,IAAP,CAAA;EACD,EARD;;AAUMS,QAAAA,sBAAsB,GAAGV,OAAO,IAAI;EACxC,EAAA,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B,CAAA;IAEA,OAAOC,QAAQ,GAAGJ,QAAQ,CAACY,aAAT,CAAuBR,QAAvB,CAAH,GAAsC,IAArD,CAAA;EACD,EAJD;;AAMMU,QAAAA,gCAAgC,GAAGX,OAAO,IAAI;IAClD,IAAI,CAACA,OAAL,EAAc;EACZ,IAAA,OAAO,CAAP,CAAA;EACD,GAHiD;;;IAMlD,IAAI;MAAEY,kBAAF;EAAsBC,IAAAA,eAAAA;EAAtB,GAAA,GAA0CC,MAAM,CAACC,gBAAP,CAAwBf,OAAxB,CAA9C,CAAA;EAEA,EAAA,MAAMgB,uBAAuB,GAAGC,MAAM,CAACC,UAAP,CAAkBN,kBAAlB,CAAhC,CAAA;IACA,MAAMO,oBAAoB,GAAGF,MAAM,CAACC,UAAP,CAAkBL,eAAlB,CAA7B,CATkD;;EAYlD,EAAA,IAAI,CAACG,uBAAD,IAA4B,CAACG,oBAAjC,EAAuD;EACrD,IAAA,OAAO,CAAP,CAAA;EACD,GAdiD;;;IAiBlDP,kBAAkB,GAAGA,kBAAkB,CAACN,KAAnB,CAAyB,GAAzB,CAAA,CAA8B,CAA9B,CAArB,CAAA;IACAO,eAAe,GAAGA,eAAe,CAACP,KAAhB,CAAsB,GAAtB,CAAA,CAA2B,CAA3B,CAAlB,CAAA;EAEA,EAAA,OAAO,CAACW,MAAM,CAACC,UAAP,CAAkBN,kBAAlB,CAAA,GAAwCK,MAAM,CAACC,UAAP,CAAkBL,eAAlB,CAAzC,IAA+EhC,uBAAtF,CAAA;EACD,EArBD;;AAuBMuC,QAAAA,oBAAoB,GAAGpB,OAAO,IAAI;EACtCA,EAAAA,OAAO,CAACqB,aAAR,CAAsB,IAAIC,KAAJ,CAAUxC,cAAV,CAAtB,CAAA,CAAA;EACD,EAFD;;AAIMyC,QAAAA,SAAS,GAAGvC,MAAM,IAAI;EAC1B,EAAA,IAAI,CAACA,MAAD,IAAW,OAAOA,MAAP,KAAkB,QAAjC,EAA2C;EACzC,IAAA,OAAO,KAAP,CAAA;EACD,GAAA;;EAED,EAAA,IAAI,OAAOA,MAAM,CAACwC,MAAd,KAAyB,WAA7B,EAA0C;EACxCxC,IAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf,CAAA;EACD,GAAA;;EAED,EAAA,OAAO,OAAOA,MAAM,CAACyC,QAAd,KAA2B,WAAlC,CAAA;EACD,EAVD;;AAYMC,QAAAA,UAAU,GAAG1C,MAAM,IAAI;EAC3B;EACA,EAAA,IAAIuC,SAAS,CAACvC,MAAD,CAAb,EAAuB;MACrB,OAAOA,MAAM,CAACwC,MAAP,GAAgBxC,MAAM,CAAC,CAAD,CAAtB,GAA4BA,MAAnC,CAAA;EACD,GAAA;;IAED,IAAI,OAAOA,MAAP,KAAkB,QAAlB,IAA8BA,MAAM,CAAC2C,MAAP,GAAgB,CAAlD,EAAqD;EACnD,IAAA,OAAO9B,QAAQ,CAACY,aAAT,CAAuBzB,MAAvB,CAAP,CAAA;EACD,GAAA;;EAED,EAAA,OAAO,IAAP,CAAA;EACD,EAXD;;AAaM4C,QAAAA,SAAS,GAAG5B,OAAO,IAAI;EAC3B,EAAA,IAAI,CAACuB,SAAS,CAACvB,OAAD,CAAV,IAAuBA,OAAO,CAAC6B,cAAR,EAAA,CAAyBF,MAAzB,KAAoC,CAA/D,EAAkE;EAChE,IAAA,OAAO,KAAP,CAAA;EACD,GAAA;;EAED,EAAA,MAAMG,gBAAgB,GAAGf,gBAAgB,CAACf,OAAD,CAAhB,CAA0B+B,gBAA1B,CAA2C,YAA3C,CAA6D,KAAA,SAAtF,CAL2B;;EAO3B,EAAA,MAAMC,aAAa,GAAGhC,OAAO,CAACiC,OAAR,CAAgB,qBAAhB,CAAtB,CAAA;;IAEA,IAAI,CAACD,aAAL,EAAoB;EAClB,IAAA,OAAOF,gBAAP,CAAA;EACD,GAAA;;IAED,IAAIE,aAAa,KAAKhC,OAAtB,EAA+B;EAC7B,IAAA,MAAMkC,OAAO,GAAGlC,OAAO,CAACiC,OAAR,CAAgB,SAAhB,CAAhB,CAAA;;EACA,IAAA,IAAIC,OAAO,IAAIA,OAAO,CAACC,UAAR,KAAuBH,aAAtC,EAAqD;EACnD,MAAA,OAAO,KAAP,CAAA;EACD,KAAA;;MAED,IAAIE,OAAO,KAAK,IAAhB,EAAsB;EACpB,MAAA,OAAO,KAAP,CAAA;EACD,KAAA;EACF,GAAA;;EAED,EAAA,OAAOJ,gBAAP,CAAA;EACD,EAzBD;;AA2BMM,QAAAA,UAAU,GAAGpC,OAAO,IAAI;IAC5B,IAAI,CAACA,OAAD,IAAYA,OAAO,CAACyB,QAAR,KAAqBY,IAAI,CAACC,YAA1C,EAAwD;EACtD,IAAA,OAAO,IAAP,CAAA;EACD,GAAA;;IAED,IAAItC,OAAO,CAACuC,SAAR,CAAkBC,QAAlB,CAA2B,UAA3B,CAAJ,EAA4C;EAC1C,IAAA,OAAO,IAAP,CAAA;EACD,GAAA;;EAED,EAAA,IAAI,OAAOxC,OAAO,CAACyC,QAAf,KAA4B,WAAhC,EAA6C;MAC3C,OAAOzC,OAAO,CAACyC,QAAf,CAAA;EACD,GAAA;;EAED,EAAA,OAAOzC,OAAO,CAAC0C,YAAR,CAAqB,UAArB,CAAA,IAAoC1C,OAAO,CAACE,YAAR,CAAqB,UAArB,CAAA,KAAqC,OAAhF,CAAA;EACD,EAdD;;AAgBMyC,QAAAA,cAAc,GAAG3C,OAAO,IAAI;EAChC,EAAA,IAAI,CAACH,QAAQ,CAAC+C,eAAT,CAAyBC,YAA9B,EAA4C;EAC1C,IAAA,OAAO,IAAP,CAAA;EACD,GAH+B;;;EAMhC,EAAA,IAAI,OAAO7C,OAAO,CAAC8C,WAAf,KAA+B,UAAnC,EAA+C;EAC7C,IAAA,MAAMC,IAAI,GAAG/C,OAAO,CAAC8C,WAAR,EAAb,CAAA;EACA,IAAA,OAAOC,IAAI,YAAYC,UAAhB,GAA6BD,IAA7B,GAAoC,IAA3C,CAAA;EACD,GAAA;;IAED,IAAI/C,OAAO,YAAYgD,UAAvB,EAAmC;EACjC,IAAA,OAAOhD,OAAP,CAAA;EACD,GAb+B;;;EAgBhC,EAAA,IAAI,CAACA,OAAO,CAACmC,UAAb,EAAyB;EACvB,IAAA,OAAO,IAAP,CAAA;EACD,GAAA;;EAED,EAAA,OAAOQ,cAAc,CAAC3C,OAAO,CAACmC,UAAT,CAArB,CAAA;EACD,EArBD;;AAuBA,QAAMc,IAAI,GAAG,MAAM,GAAnB;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AACMC,QAAAA,MAAM,GAAGlD,OAAO,IAAI;IACxBA,OAAO,CAACmD,YAAR,CADwB;EAEzB,EAFD;;AAIMC,QAAAA,SAAS,GAAG,MAAM;EACtB,EAAA,IAAItC,MAAM,CAACuC,MAAP,IAAiB,CAACxD,QAAQ,CAACyD,IAAT,CAAcZ,YAAd,CAA2B,mBAA3B,CAAtB,EAAuE;MACrE,OAAO5B,MAAM,CAACuC,MAAd,CAAA;EACD,GAAA;;EAED,EAAA,OAAO,IAAP,CAAA;EACD,EAND;;EAQA,MAAME,yBAAyB,GAAG,EAAlC,CAAA;;AAEMC,QAAAA,kBAAkB,GAAGC,QAAQ,IAAI;EACrC,EAAA,IAAI5D,QAAQ,CAAC6D,UAAT,KAAwB,SAA5B,EAAuC;EACrC;EACA,IAAA,IAAI,CAACH,yBAAyB,CAAC5B,MAA/B,EAAuC;EACrC9B,MAAAA,QAAQ,CAAC8D,gBAAT,CAA0B,kBAA1B,EAA8C,MAAM;EAClD,QAAA,KAAK,MAAMF,QAAX,IAAuBF,yBAAvB,EAAkD;YAChDE,QAAQ,EAAA,CAAA;EACT,SAAA;SAHH,CAAA,CAAA;EAKD,KAAA;;MAEDF,yBAAyB,CAACK,IAA1B,CAA+BH,QAA/B,CAAA,CAAA;EACD,GAXD,MAWO;MACLA,QAAQ,EAAA,CAAA;EACT,GAAA;EACF,EAfD;;AAiBMI,QAAAA,KAAK,GAAG,MAAMhE,QAAQ,CAAC+C,eAAT,CAAyBkB,GAAzB,KAAiC,MAArD;;AAEMC,QAAAA,kBAAkB,GAAGC,MAAM,IAAI;EACnCR,EAAAA,kBAAkB,CAAC,MAAM;MACvB,MAAMS,CAAC,GAAGb,SAAS,EAAnB,CAAA;EACA;;EACA,IAAA,IAAIa,CAAJ,EAAO;EACL,MAAA,MAAMC,IAAI,GAAGF,MAAM,CAACG,IAApB,CAAA;EACA,MAAA,MAAMC,kBAAkB,GAAGH,CAAC,CAACI,EAAF,CAAKH,IAAL,CAA3B,CAAA;EACAD,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,CAAaF,GAAAA,MAAM,CAACM,eAApB,CAAA;EACAL,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,CAAWK,CAAAA,WAAX,GAAyBP,MAAzB,CAAA;;EACAC,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,CAAWM,CAAAA,UAAX,GAAwB,MAAM;EAC5BP,QAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,IAAaE,kBAAb,CAAA;UACA,OAAOJ,MAAM,CAACM,eAAd,CAAA;SAFF,CAAA;EAID,KAAA;EACF,GAbiB,CAAlB,CAAA;EAcD,EAfD;;AAiBMG,QAAAA,OAAO,GAAGhB,QAAQ,IAAI;EAC1B,EAAA,IAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;MAClCA,QAAQ,EAAA,CAAA;EACT,GAAA;EACF,EAJD;;AAMMiB,QAAAA,sBAAsB,GAAG,CAACjB,QAAD,EAAWkB,iBAAX,EAA8BC,iBAAiB,GAAG,IAAlD,KAA2D;IACxF,IAAI,CAACA,iBAAL,EAAwB;MACtBH,OAAO,CAAChB,QAAD,CAAP,CAAA;EACA,IAAA,OAAA;EACD,GAAA;;IAED,MAAMoB,eAAe,GAAG,CAAxB,CAAA;EACA,EAAA,MAAMC,gBAAgB,GAAGnE,gCAAgC,CAACgE,iBAAD,CAAhC,GAAsDE,eAA/E,CAAA;IAEA,IAAIE,MAAM,GAAG,KAAb,CAAA;;IAEA,MAAMC,OAAO,GAAG,CAAC;EAAEC,IAAAA,MAAAA;EAAF,GAAD,KAAgB;MAC9B,IAAIA,MAAM,KAAKN,iBAAf,EAAkC;EAChC,MAAA,OAAA;EACD,KAAA;;EAEDI,IAAAA,MAAM,GAAG,IAAT,CAAA;EACAJ,IAAAA,iBAAiB,CAACO,mBAAlB,CAAsCpG,cAAtC,EAAsDkG,OAAtD,CAAA,CAAA;MACAP,OAAO,CAAChB,QAAD,CAAP,CAAA;KAPF,CAAA;;EAUAkB,EAAAA,iBAAiB,CAAChB,gBAAlB,CAAmC7E,cAAnC,EAAmDkG,OAAnD,CAAA,CAAA;EACAG,EAAAA,UAAU,CAAC,MAAM;MACf,IAAI,CAACJ,MAAL,EAAa;QACX3D,oBAAoB,CAACuD,iBAAD,CAApB,CAAA;EACD,KAAA;KAHO,EAIPG,gBAJO,CAAV,CAAA;EAKD,EA3BD;EA6BA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AACMM,QAAAA,oBAAoB,GAAG,CAACC,IAAD,EAAOC,aAAP,EAAsBC,aAAtB,EAAqCC,cAArC,KAAwD;EACnF,EAAA,MAAMC,UAAU,GAAGJ,IAAI,CAAC1D,MAAxB,CAAA;IACA,IAAI+D,KAAK,GAAGL,IAAI,CAACM,OAAL,CAAaL,aAAb,CAAZ,CAFmF;EAKnF;;EACA,EAAA,IAAII,KAAK,KAAK,CAAC,CAAf,EAAkB;EAChB,IAAA,OAAO,CAACH,aAAD,IAAkBC,cAAlB,GAAmCH,IAAI,CAACI,UAAU,GAAG,CAAd,CAAvC,GAA0DJ,IAAI,CAAC,CAAD,CAArE,CAAA;EACD,GAAA;;EAEDK,EAAAA,KAAK,IAAIH,aAAa,GAAG,CAAH,GAAO,CAAC,CAA9B,CAAA;;EAEA,EAAA,IAAIC,cAAJ,EAAoB;EAClBE,IAAAA,KAAK,GAAG,CAACA,KAAK,GAAGD,UAAT,IAAuBA,UAA/B,CAAA;EACD,GAAA;;EAED,EAAA,OAAOJ,IAAI,CAAC3F,IAAI,CAACkG,GAAL,CAAS,CAAT,EAAYlG,IAAI,CAACmG,GAAL,CAASH,KAAT,EAAgBD,UAAU,GAAG,CAA7B,CAAZ,CAAD,CAAX,CAAA;EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/util/index.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\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}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\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 => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getjQuery,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType\n}\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","object","undefined","Object","prototype","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min"],"mappings":"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"}