fdb2 1.0.17 → 1.0.18

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 (101) hide show
  1. package/dist/package.json +139 -0
  2. package/dist/pnpm-lock.yaml +7332 -0
  3. package/dist/public/.vite/manifest.json +129 -0
  4. package/dist/public/_plugin-vue_export-helper.js +12 -0
  5. package/dist/public/bootstrap-icons.woff +0 -0
  6. package/dist/public/bootstrap-icons.woff2 +0 -0
  7. package/dist/public/bootstrap.css +14152 -0
  8. package/dist/public/bootstrap.js +4717 -0
  9. package/dist/public/explorer.css +2542 -0
  10. package/dist/public/explorer.js +59004 -0
  11. package/dist/public/favicon.ico +0 -0
  12. package/dist/public/index.css +950 -0
  13. package/dist/public/index.js +614 -0
  14. package/dist/public/layout.css +318 -0
  15. package/dist/public/layout.js +35 -0
  16. package/dist/public/modal.css +150 -0
  17. package/dist/public/modal.js +4873 -0
  18. package/dist/public/rolldown-runtime.js +38 -0
  19. package/dist/public/vconsole.min.js +10355 -0
  20. package/dist/public/vue.js +6526 -0
  21. package/dist/scripts/nw-build.js +136 -0
  22. package/dist/scripts/nw-dev.js +67 -0
  23. package/dist/scripts/preinstall.js +112 -0
  24. package/dist/server/index.d.ts +2 -0
  25. package/dist/server/index.d.ts.map +1 -0
  26. package/dist/server/index.js +607 -0
  27. package/dist/server/index.js.map +1 -0
  28. package/dist/server/index.ts +685 -0
  29. package/dist/server/model/connection.entity.d.ts +55 -0
  30. package/dist/server/model/connection.entity.d.ts.map +1 -0
  31. package/dist/server/model/connection.entity.js +59 -0
  32. package/dist/server/model/connection.entity.js.map +1 -0
  33. package/dist/server/model/connection.entity.ts +66 -0
  34. package/dist/server/model/database.entity.d.ts +203 -0
  35. package/dist/server/model/database.entity.d.ts.map +1 -0
  36. package/dist/server/model/database.entity.js +211 -0
  37. package/dist/server/model/database.entity.js.map +1 -0
  38. package/dist/server/model/database.entity.ts +246 -0
  39. package/dist/server/service/connection.service.d.ts +84 -0
  40. package/dist/server/service/connection.service.d.ts.map +1 -0
  41. package/dist/server/service/connection.service.js +369 -0
  42. package/dist/server/service/connection.service.js.map +1 -0
  43. package/dist/server/service/connection.service.ts +359 -0
  44. package/dist/server/service/database/base.service.d.ts +183 -0
  45. package/dist/server/service/database/base.service.d.ts.map +1 -0
  46. package/dist/server/service/database/base.service.js +253 -0
  47. package/dist/server/service/database/base.service.js.map +1 -0
  48. package/dist/server/service/database/base.service.ts +407 -0
  49. package/dist/server/service/database/cockroachdb.service.d.ts +116 -0
  50. package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -0
  51. package/dist/server/service/database/cockroachdb.service.js +812 -0
  52. package/dist/server/service/database/cockroachdb.service.js.map +1 -0
  53. package/dist/server/service/database/cockroachdb.service.ts +871 -0
  54. package/dist/server/service/database/database.service.d.ts +495 -0
  55. package/dist/server/service/database/database.service.d.ts.map +1 -0
  56. package/dist/server/service/database/database.service.js +711 -0
  57. package/dist/server/service/database/database.service.js.map +1 -0
  58. package/dist/server/service/database/database.service.ts +776 -0
  59. package/dist/server/service/database/index.d.ts +8 -0
  60. package/dist/server/service/database/index.d.ts.map +1 -0
  61. package/dist/server/service/database/index.js +18 -0
  62. package/dist/server/service/database/index.js.map +1 -0
  63. package/dist/server/service/database/index.ts +7 -0
  64. package/dist/server/service/database/mongodb.service.d.ts +121 -0
  65. package/dist/server/service/database/mongodb.service.d.ts.map +1 -0
  66. package/dist/server/service/database/mongodb.service.js +502 -0
  67. package/dist/server/service/database/mongodb.service.js.map +1 -0
  68. package/dist/server/service/database/mongodb.service.ts +501 -0
  69. package/dist/server/service/database/mssql.service.d.ts +118 -0
  70. package/dist/server/service/database/mssql.service.d.ts.map +1 -0
  71. package/dist/server/service/database/mssql.service.js +871 -0
  72. package/dist/server/service/database/mssql.service.js.map +1 -0
  73. package/dist/server/service/database/mssql.service.ts +932 -0
  74. package/dist/server/service/database/mysql.service.d.ts +114 -0
  75. package/dist/server/service/database/mysql.service.d.ts.map +1 -0
  76. package/dist/server/service/database/mysql.service.js +960 -0
  77. package/dist/server/service/database/mysql.service.js.map +1 -0
  78. package/dist/server/service/database/mysql.service.ts +1026 -0
  79. package/dist/server/service/database/oracle.service.d.ts +126 -0
  80. package/dist/server/service/database/oracle.service.d.ts.map +1 -0
  81. package/dist/server/service/database/oracle.service.js +963 -0
  82. package/dist/server/service/database/oracle.service.js.map +1 -0
  83. package/dist/server/service/database/oracle.service.ts +1036 -0
  84. package/dist/server/service/database/postgres.service.d.ts +122 -0
  85. package/dist/server/service/database/postgres.service.d.ts.map +1 -0
  86. package/dist/server/service/database/postgres.service.js +882 -0
  87. package/dist/server/service/database/postgres.service.js.map +1 -0
  88. package/dist/server/service/database/postgres.service.ts +961 -0
  89. package/dist/server/service/database/sap.service.d.ts +115 -0
  90. package/dist/server/service/database/sap.service.d.ts.map +1 -0
  91. package/dist/server/service/database/sap.service.js +868 -0
  92. package/dist/server/service/database/sap.service.js.map +1 -0
  93. package/dist/server/service/database/sap.service.ts +922 -0
  94. package/dist/server/service/database/sqlite.service.d.ts +112 -0
  95. package/dist/server/service/database/sqlite.service.d.ts.map +1 -0
  96. package/dist/server/service/database/sqlite.service.js +723 -0
  97. package/dist/server/service/database/sqlite.service.js.map +1 -0
  98. package/dist/server/service/database/sqlite.service.ts +787 -0
  99. package/dist/server/service/session.service.ts +158 -0
  100. package/dist/view/index.html +48 -0
  101. package/package.json +2 -1
@@ -0,0 +1,4717 @@
1
+ import { n as __esmMin, r as __exportAll } from "./rolldown-runtime.js";
2
+ //#region node_modules/.pnpm/bootstrap@5.3.8_@popperjs+core@2.11.8/node_modules/bootstrap/dist/css/bootstrap.css
3
+ var init_bootstrap = __esmMin((() => {}));
4
+ //#endregion
5
+ //#region node_modules/.pnpm/bootstrap-icons@1.13.1/node_modules/bootstrap-icons/font/bootstrap-icons.css
6
+ var init_bootstrap_icons = __esmMin((() => {})), bottom, right, left, auto, basePlacements, start, clippingParents, viewport, popper, reference, variationPlacements, placements, beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite, modifierPhases;
7
+ var init_enums = __esmMin((() => {
8
+ bottom = "bottom";
9
+ right = "right";
10
+ left = "left";
11
+ auto = "auto";
12
+ basePlacements = [
13
+ "top",
14
+ bottom,
15
+ right,
16
+ left
17
+ ];
18
+ start = "start";
19
+ clippingParents = "clippingParents";
20
+ viewport = "viewport";
21
+ popper = "popper";
22
+ reference = "reference";
23
+ variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
24
+ return acc.concat([placement + "-" + start, placement + "-end"]);
25
+ }, []);
26
+ placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
27
+ return acc.concat([
28
+ placement,
29
+ placement + "-" + start,
30
+ placement + "-end"
31
+ ]);
32
+ }, []);
33
+ beforeRead = "beforeRead";
34
+ read = "read";
35
+ afterRead = "afterRead";
36
+ beforeMain = "beforeMain";
37
+ main = "main";
38
+ afterMain = "afterMain";
39
+ beforeWrite = "beforeWrite";
40
+ write = "write";
41
+ afterWrite = "afterWrite";
42
+ modifierPhases = [
43
+ beforeRead,
44
+ read,
45
+ afterRead,
46
+ beforeMain,
47
+ main,
48
+ afterMain,
49
+ beforeWrite,
50
+ write,
51
+ afterWrite
52
+ ];
53
+ }));
54
+ //#endregion
55
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
56
+ function getNodeName(element) {
57
+ return element ? (element.nodeName || "").toLowerCase() : null;
58
+ }
59
+ var init_getNodeName = __esmMin((() => {}));
60
+ //#endregion
61
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js
62
+ function getWindow(node) {
63
+ if (node == null) return window;
64
+ if (node.toString() !== "[object Window]") {
65
+ var ownerDocument = node.ownerDocument;
66
+ return ownerDocument ? ownerDocument.defaultView || window : window;
67
+ }
68
+ return node;
69
+ }
70
+ var init_getWindow = __esmMin((() => {}));
71
+ //#endregion
72
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
73
+ function isElement$1(node) {
74
+ return node instanceof getWindow(node).Element || node instanceof Element;
75
+ }
76
+ function isHTMLElement(node) {
77
+ return node instanceof getWindow(node).HTMLElement || node instanceof HTMLElement;
78
+ }
79
+ function isShadowRoot(node) {
80
+ if (typeof ShadowRoot === "undefined") return false;
81
+ return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;
82
+ }
83
+ var init_instanceOf = __esmMin((() => {
84
+ init_getWindow();
85
+ }));
86
+ //#endregion
87
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js
88
+ function applyStyles(_ref) {
89
+ var state = _ref.state;
90
+ Object.keys(state.elements).forEach(function(name) {
91
+ var style = state.styles[name] || {};
92
+ var attributes = state.attributes[name] || {};
93
+ var element = state.elements[name];
94
+ if (!isHTMLElement(element) || !getNodeName(element)) return;
95
+ Object.assign(element.style, style);
96
+ Object.keys(attributes).forEach(function(name) {
97
+ var value = attributes[name];
98
+ if (value === false) element.removeAttribute(name);
99
+ else element.setAttribute(name, value === true ? "" : value);
100
+ });
101
+ });
102
+ }
103
+ function effect$2(_ref2) {
104
+ var state = _ref2.state;
105
+ var initialStyles = {
106
+ popper: {
107
+ position: state.options.strategy,
108
+ left: "0",
109
+ top: "0",
110
+ margin: "0"
111
+ },
112
+ arrow: { position: "absolute" },
113
+ reference: {}
114
+ };
115
+ Object.assign(state.elements.popper.style, initialStyles.popper);
116
+ state.styles = initialStyles;
117
+ if (state.elements.arrow) Object.assign(state.elements.arrow.style, initialStyles.arrow);
118
+ return function() {
119
+ Object.keys(state.elements).forEach(function(name) {
120
+ var element = state.elements[name];
121
+ var attributes = state.attributes[name] || {};
122
+ var style = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]).reduce(function(style, property) {
123
+ style[property] = "";
124
+ return style;
125
+ }, {});
126
+ if (!isHTMLElement(element) || !getNodeName(element)) return;
127
+ Object.assign(element.style, style);
128
+ Object.keys(attributes).forEach(function(attribute) {
129
+ element.removeAttribute(attribute);
130
+ });
131
+ });
132
+ };
133
+ }
134
+ var applyStyles_default;
135
+ var init_applyStyles = __esmMin((() => {
136
+ init_getNodeName();
137
+ init_instanceOf();
138
+ applyStyles_default = {
139
+ name: "applyStyles",
140
+ enabled: true,
141
+ phase: "write",
142
+ fn: applyStyles,
143
+ effect: effect$2,
144
+ requires: ["computeStyles"]
145
+ };
146
+ }));
147
+ //#endregion
148
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js
149
+ function getBasePlacement(placement) {
150
+ return placement.split("-")[0];
151
+ }
152
+ var init_getBasePlacement = __esmMin((() => {}));
153
+ //#endregion
154
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js
155
+ var max, min, round;
156
+ var init_math = __esmMin((() => {
157
+ max = Math.max;
158
+ min = Math.min;
159
+ round = Math.round;
160
+ }));
161
+ //#endregion
162
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js
163
+ function getUAString() {
164
+ var uaData = navigator.userAgentData;
165
+ if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) return uaData.brands.map(function(item) {
166
+ return item.brand + "/" + item.version;
167
+ }).join(" ");
168
+ return navigator.userAgent;
169
+ }
170
+ var init_userAgent = __esmMin((() => {}));
171
+ //#endregion
172
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
173
+ function isLayoutViewport() {
174
+ return !/^((?!chrome|android).)*safari/i.test(getUAString());
175
+ }
176
+ var init_isLayoutViewport = __esmMin((() => {
177
+ init_userAgent();
178
+ }));
179
+ //#endregion
180
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
181
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
182
+ if (includeScale === void 0) includeScale = false;
183
+ if (isFixedStrategy === void 0) isFixedStrategy = false;
184
+ var clientRect = element.getBoundingClientRect();
185
+ var scaleX = 1;
186
+ var scaleY = 1;
187
+ if (includeScale && isHTMLElement(element)) {
188
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
189
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
190
+ }
191
+ var visualViewport = (isElement$1(element) ? getWindow(element) : window).visualViewport;
192
+ var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
193
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
194
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
195
+ var width = clientRect.width / scaleX;
196
+ var height = clientRect.height / scaleY;
197
+ return {
198
+ width,
199
+ height,
200
+ top: y,
201
+ right: x + width,
202
+ bottom: y + height,
203
+ left: x,
204
+ x,
205
+ y
206
+ };
207
+ }
208
+ var init_getBoundingClientRect = __esmMin((() => {
209
+ init_instanceOf();
210
+ init_math();
211
+ init_getWindow();
212
+ init_isLayoutViewport();
213
+ }));
214
+ //#endregion
215
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
216
+ function getLayoutRect(element) {
217
+ var clientRect = getBoundingClientRect(element);
218
+ var width = element.offsetWidth;
219
+ var height = element.offsetHeight;
220
+ if (Math.abs(clientRect.width - width) <= 1) width = clientRect.width;
221
+ if (Math.abs(clientRect.height - height) <= 1) height = clientRect.height;
222
+ return {
223
+ x: element.offsetLeft,
224
+ y: element.offsetTop,
225
+ width,
226
+ height
227
+ };
228
+ }
229
+ var init_getLayoutRect = __esmMin((() => {
230
+ init_getBoundingClientRect();
231
+ }));
232
+ //#endregion
233
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js
234
+ function contains(parent, child) {
235
+ var rootNode = child.getRootNode && child.getRootNode();
236
+ if (parent.contains(child)) return true;
237
+ else if (rootNode && isShadowRoot(rootNode)) {
238
+ var next = child;
239
+ do {
240
+ if (next && parent.isSameNode(next)) return true;
241
+ next = next.parentNode || next.host;
242
+ } while (next);
243
+ }
244
+ return false;
245
+ }
246
+ var init_contains = __esmMin((() => {
247
+ init_instanceOf();
248
+ }));
249
+ //#endregion
250
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
251
+ function getComputedStyle$1(element) {
252
+ return getWindow(element).getComputedStyle(element);
253
+ }
254
+ var init_getComputedStyle = __esmMin((() => {
255
+ init_getWindow();
256
+ }));
257
+ //#endregion
258
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
259
+ function isTableElement(element) {
260
+ return [
261
+ "table",
262
+ "td",
263
+ "th"
264
+ ].indexOf(getNodeName(element)) >= 0;
265
+ }
266
+ var init_isTableElement = __esmMin((() => {
267
+ init_getNodeName();
268
+ }));
269
+ //#endregion
270
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
271
+ function getDocumentElement(element) {
272
+ return ((isElement$1(element) ? element.ownerDocument : element.document) || window.document).documentElement;
273
+ }
274
+ var init_getDocumentElement = __esmMin((() => {
275
+ init_instanceOf();
276
+ }));
277
+ //#endregion
278
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
279
+ function getParentNode(element) {
280
+ if (getNodeName(element) === "html") return element;
281
+ return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
282
+ }
283
+ var init_getParentNode = __esmMin((() => {
284
+ init_getNodeName();
285
+ init_getDocumentElement();
286
+ init_instanceOf();
287
+ }));
288
+ //#endregion
289
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
290
+ function getTrueOffsetParent(element) {
291
+ if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") return null;
292
+ return element.offsetParent;
293
+ }
294
+ function getContainingBlock(element) {
295
+ var isFirefox = /firefox/i.test(getUAString());
296
+ if (/Trident/i.test(getUAString()) && isHTMLElement(element)) {
297
+ if (getComputedStyle$1(element).position === "fixed") return null;
298
+ }
299
+ var currentNode = getParentNode(element);
300
+ if (isShadowRoot(currentNode)) currentNode = currentNode.host;
301
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
302
+ var css = getComputedStyle$1(currentNode);
303
+ if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") return currentNode;
304
+ else currentNode = currentNode.parentNode;
305
+ }
306
+ return null;
307
+ }
308
+ function getOffsetParent(element) {
309
+ var window = getWindow(element);
310
+ var offsetParent = getTrueOffsetParent(element);
311
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") offsetParent = getTrueOffsetParent(offsetParent);
312
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) return window;
313
+ return offsetParent || getContainingBlock(element) || window;
314
+ }
315
+ var init_getOffsetParent = __esmMin((() => {
316
+ init_getWindow();
317
+ init_getNodeName();
318
+ init_getComputedStyle();
319
+ init_instanceOf();
320
+ init_isTableElement();
321
+ init_getParentNode();
322
+ init_userAgent();
323
+ }));
324
+ //#endregion
325
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
326
+ function getMainAxisFromPlacement(placement) {
327
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
328
+ }
329
+ var init_getMainAxisFromPlacement = __esmMin((() => {}));
330
+ //#endregion
331
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js
332
+ function within(min$2, value, max$2) {
333
+ return max(min$2, min(value, max$2));
334
+ }
335
+ function withinMaxClamp(min, value, max) {
336
+ var v = within(min, value, max);
337
+ return v > max ? max : v;
338
+ }
339
+ var init_within = __esmMin((() => {
340
+ init_math();
341
+ }));
342
+ //#endregion
343
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
344
+ function getFreshSideObject() {
345
+ return {
346
+ top: 0,
347
+ right: 0,
348
+ bottom: 0,
349
+ left: 0
350
+ };
351
+ }
352
+ var init_getFreshSideObject = __esmMin((() => {}));
353
+ //#endregion
354
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
355
+ function mergePaddingObject(paddingObject) {
356
+ return Object.assign({}, getFreshSideObject(), paddingObject);
357
+ }
358
+ var init_mergePaddingObject = __esmMin((() => {
359
+ init_getFreshSideObject();
360
+ }));
361
+ //#endregion
362
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js
363
+ function expandToHashMap(value, keys) {
364
+ return keys.reduce(function(hashMap, key) {
365
+ hashMap[key] = value;
366
+ return hashMap;
367
+ }, {});
368
+ }
369
+ var init_expandToHashMap = __esmMin((() => {}));
370
+ //#endregion
371
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js
372
+ function arrow(_ref) {
373
+ var _state$modifiersData$;
374
+ var state = _ref.state, name = _ref.name, options = _ref.options;
375
+ var arrowElement = state.elements.arrow;
376
+ var popperOffsets = state.modifiersData.popperOffsets;
377
+ var basePlacement = getBasePlacement(state.placement);
378
+ var axis = getMainAxisFromPlacement(basePlacement);
379
+ var len = ["left", "right"].indexOf(basePlacement) >= 0 ? "height" : "width";
380
+ if (!arrowElement || !popperOffsets) return;
381
+ var paddingObject = toPaddingObject(options.padding, state);
382
+ var arrowRect = getLayoutRect(arrowElement);
383
+ var minProp = axis === "y" ? "top" : left;
384
+ var maxProp = axis === "y" ? bottom : right;
385
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
386
+ var startDiff = popperOffsets[axis] - state.rects.reference[axis];
387
+ var arrowOffsetParent = getOffsetParent(arrowElement);
388
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
389
+ var centerToReference = endDiff / 2 - startDiff / 2;
390
+ var min = paddingObject[minProp];
391
+ var max = clientSize - arrowRect[len] - paddingObject[maxProp];
392
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
393
+ var offset = within(min, center, max);
394
+ var axisProp = axis;
395
+ state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
396
+ }
397
+ function effect$1(_ref2) {
398
+ var state = _ref2.state;
399
+ var _options$element = _ref2.options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
400
+ if (arrowElement == null) return;
401
+ if (typeof arrowElement === "string") {
402
+ arrowElement = state.elements.popper.querySelector(arrowElement);
403
+ if (!arrowElement) return;
404
+ }
405
+ if (!contains(state.elements.popper, arrowElement)) return;
406
+ state.elements.arrow = arrowElement;
407
+ }
408
+ var toPaddingObject, arrow_default;
409
+ var init_arrow = __esmMin((() => {
410
+ init_getBasePlacement();
411
+ init_getLayoutRect();
412
+ init_contains();
413
+ init_getOffsetParent();
414
+ init_getMainAxisFromPlacement();
415
+ init_within();
416
+ init_mergePaddingObject();
417
+ init_expandToHashMap();
418
+ init_enums();
419
+ toPaddingObject = function toPaddingObject(padding, state) {
420
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding;
421
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
422
+ };
423
+ arrow_default = {
424
+ name: "arrow",
425
+ enabled: true,
426
+ phase: "main",
427
+ fn: arrow,
428
+ effect: effect$1,
429
+ requires: ["popperOffsets"],
430
+ requiresIfExists: ["preventOverflow"]
431
+ };
432
+ }));
433
+ //#endregion
434
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js
435
+ function getVariation(placement) {
436
+ return placement.split("-")[1];
437
+ }
438
+ var init_getVariation = __esmMin((() => {}));
439
+ //#endregion
440
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js
441
+ function roundOffsetsByDPR(_ref, win) {
442
+ var x = _ref.x, y = _ref.y;
443
+ var dpr = win.devicePixelRatio || 1;
444
+ return {
445
+ x: round(x * dpr) / dpr || 0,
446
+ y: round(y * dpr) / dpr || 0
447
+ };
448
+ }
449
+ function mapToStyles(_ref2) {
450
+ var _Object$assign2;
451
+ var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
452
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
453
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
454
+ x,
455
+ y
456
+ }) : {
457
+ x,
458
+ y
459
+ };
460
+ x = _ref3.x;
461
+ y = _ref3.y;
462
+ var hasX = offsets.hasOwnProperty("x");
463
+ var hasY = offsets.hasOwnProperty("y");
464
+ var sideX = left;
465
+ var sideY = "top";
466
+ var win = window;
467
+ if (adaptive) {
468
+ var offsetParent = getOffsetParent(popper);
469
+ var heightProp = "clientHeight";
470
+ var widthProp = "clientWidth";
471
+ if (offsetParent === getWindow(popper)) {
472
+ offsetParent = getDocumentElement(popper);
473
+ if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") {
474
+ heightProp = "scrollHeight";
475
+ widthProp = "scrollWidth";
476
+ }
477
+ }
478
+ offsetParent = offsetParent;
479
+ if (placement === "top" || (placement === "left" || placement === "right") && variation === "end") {
480
+ sideY = bottom;
481
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
482
+ y -= offsetY - popperRect.height;
483
+ y *= gpuAcceleration ? 1 : -1;
484
+ }
485
+ if (placement === "left" || (placement === "top" || placement === "bottom") && variation === "end") {
486
+ sideX = right;
487
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
488
+ x -= offsetX - popperRect.width;
489
+ x *= gpuAcceleration ? 1 : -1;
490
+ }
491
+ }
492
+ var commonStyles = Object.assign({ position }, adaptive && unsetSides);
493
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
494
+ x,
495
+ y
496
+ }, getWindow(popper)) : {
497
+ x,
498
+ y
499
+ };
500
+ x = _ref4.x;
501
+ y = _ref4.y;
502
+ if (gpuAcceleration) {
503
+ var _Object$assign;
504
+ 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));
505
+ }
506
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
507
+ }
508
+ function computeStyles(_ref5) {
509
+ var state = _ref5.state, options = _ref5.options;
510
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
511
+ var commonStyles = {
512
+ placement: getBasePlacement(state.placement),
513
+ variation: getVariation(state.placement),
514
+ popper: state.elements.popper,
515
+ popperRect: state.rects.popper,
516
+ gpuAcceleration,
517
+ isFixed: state.options.strategy === "fixed"
518
+ };
519
+ if (state.modifiersData.popperOffsets != null) state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
520
+ offsets: state.modifiersData.popperOffsets,
521
+ position: state.options.strategy,
522
+ adaptive,
523
+ roundOffsets
524
+ })));
525
+ if (state.modifiersData.arrow != null) state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
526
+ offsets: state.modifiersData.arrow,
527
+ position: "absolute",
528
+ adaptive: false,
529
+ roundOffsets
530
+ })));
531
+ state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-placement": state.placement });
532
+ }
533
+ var unsetSides, computeStyles_default;
534
+ var init_computeStyles = __esmMin((() => {
535
+ init_enums();
536
+ init_getOffsetParent();
537
+ init_getWindow();
538
+ init_getDocumentElement();
539
+ init_getComputedStyle();
540
+ init_getBasePlacement();
541
+ init_getVariation();
542
+ init_math();
543
+ unsetSides = {
544
+ top: "auto",
545
+ right: "auto",
546
+ bottom: "auto",
547
+ left: "auto"
548
+ };
549
+ computeStyles_default = {
550
+ name: "computeStyles",
551
+ enabled: true,
552
+ phase: "beforeWrite",
553
+ fn: computeStyles,
554
+ data: {}
555
+ };
556
+ }));
557
+ //#endregion
558
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js
559
+ function effect(_ref) {
560
+ var state = _ref.state, instance = _ref.instance, options = _ref.options;
561
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
562
+ var window = getWindow(state.elements.popper);
563
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
564
+ if (scroll) scrollParents.forEach(function(scrollParent) {
565
+ scrollParent.addEventListener("scroll", instance.update, passive);
566
+ });
567
+ if (resize) window.addEventListener("resize", instance.update, passive);
568
+ return function() {
569
+ if (scroll) scrollParents.forEach(function(scrollParent) {
570
+ scrollParent.removeEventListener("scroll", instance.update, passive);
571
+ });
572
+ if (resize) window.removeEventListener("resize", instance.update, passive);
573
+ };
574
+ }
575
+ var passive, eventListeners_default;
576
+ var init_eventListeners = __esmMin((() => {
577
+ init_getWindow();
578
+ passive = { passive: true };
579
+ eventListeners_default = {
580
+ name: "eventListeners",
581
+ enabled: true,
582
+ phase: "write",
583
+ fn: function fn() {},
584
+ effect,
585
+ data: {}
586
+ };
587
+ }));
588
+ //#endregion
589
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
590
+ function getOppositePlacement(placement) {
591
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
592
+ return hash$1[matched];
593
+ });
594
+ }
595
+ var hash$1;
596
+ var init_getOppositePlacement = __esmMin((() => {
597
+ hash$1 = {
598
+ left: "right",
599
+ right: "left",
600
+ bottom: "top",
601
+ top: "bottom"
602
+ };
603
+ }));
604
+ //#endregion
605
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
606
+ function getOppositeVariationPlacement(placement) {
607
+ return placement.replace(/start|end/g, function(matched) {
608
+ return hash[matched];
609
+ });
610
+ }
611
+ var hash;
612
+ var init_getOppositeVariationPlacement = __esmMin((() => {
613
+ hash = {
614
+ start: "end",
615
+ end: "start"
616
+ };
617
+ }));
618
+ //#endregion
619
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
620
+ function getWindowScroll(node) {
621
+ var win = getWindow(node);
622
+ return {
623
+ scrollLeft: win.pageXOffset,
624
+ scrollTop: win.pageYOffset
625
+ };
626
+ }
627
+ var init_getWindowScroll = __esmMin((() => {
628
+ init_getWindow();
629
+ }));
630
+ //#endregion
631
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
632
+ function getWindowScrollBarX(element) {
633
+ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
634
+ }
635
+ var init_getWindowScrollBarX = __esmMin((() => {
636
+ init_getBoundingClientRect();
637
+ init_getDocumentElement();
638
+ init_getWindowScroll();
639
+ }));
640
+ //#endregion
641
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
642
+ function getViewportRect(element, strategy) {
643
+ var win = getWindow(element);
644
+ var html = getDocumentElement(element);
645
+ var visualViewport = win.visualViewport;
646
+ var width = html.clientWidth;
647
+ var height = html.clientHeight;
648
+ var x = 0;
649
+ var y = 0;
650
+ if (visualViewport) {
651
+ width = visualViewport.width;
652
+ height = visualViewport.height;
653
+ var layoutViewport = isLayoutViewport();
654
+ if (layoutViewport || !layoutViewport && strategy === "fixed") {
655
+ x = visualViewport.offsetLeft;
656
+ y = visualViewport.offsetTop;
657
+ }
658
+ }
659
+ return {
660
+ width,
661
+ height,
662
+ x: x + getWindowScrollBarX(element),
663
+ y
664
+ };
665
+ }
666
+ var init_getViewportRect = __esmMin((() => {
667
+ init_getWindow();
668
+ init_getDocumentElement();
669
+ init_getWindowScrollBarX();
670
+ init_isLayoutViewport();
671
+ }));
672
+ //#endregion
673
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
674
+ function getDocumentRect(element) {
675
+ var _element$ownerDocumen;
676
+ var html = getDocumentElement(element);
677
+ var winScroll = getWindowScroll(element);
678
+ var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
679
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
680
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
681
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
682
+ var y = -winScroll.scrollTop;
683
+ if (getComputedStyle$1(body || html).direction === "rtl") x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
684
+ return {
685
+ width,
686
+ height,
687
+ x,
688
+ y
689
+ };
690
+ }
691
+ var init_getDocumentRect = __esmMin((() => {
692
+ init_getDocumentElement();
693
+ init_getComputedStyle();
694
+ init_getWindowScrollBarX();
695
+ init_getWindowScroll();
696
+ init_math();
697
+ }));
698
+ //#endregion
699
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
700
+ function isScrollParent(element) {
701
+ var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
702
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
703
+ }
704
+ var init_isScrollParent = __esmMin((() => {
705
+ init_getComputedStyle();
706
+ }));
707
+ //#endregion
708
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
709
+ function getScrollParent(node) {
710
+ if ([
711
+ "html",
712
+ "body",
713
+ "#document"
714
+ ].indexOf(getNodeName(node)) >= 0) return node.ownerDocument.body;
715
+ if (isHTMLElement(node) && isScrollParent(node)) return node;
716
+ return getScrollParent(getParentNode(node));
717
+ }
718
+ var init_getScrollParent = __esmMin((() => {
719
+ init_getParentNode();
720
+ init_isScrollParent();
721
+ init_getNodeName();
722
+ init_instanceOf();
723
+ }));
724
+ //#endregion
725
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
726
+ function listScrollParents(element, list) {
727
+ var _element$ownerDocumen;
728
+ if (list === void 0) list = [];
729
+ var scrollParent = getScrollParent(element);
730
+ var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
731
+ var win = getWindow(scrollParent);
732
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
733
+ var updatedList = list.concat(target);
734
+ return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
735
+ }
736
+ var init_listScrollParents = __esmMin((() => {
737
+ init_getScrollParent();
738
+ init_getParentNode();
739
+ init_getWindow();
740
+ init_isScrollParent();
741
+ }));
742
+ //#endregion
743
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js
744
+ function rectToClientRect(rect) {
745
+ return Object.assign({}, rect, {
746
+ left: rect.x,
747
+ top: rect.y,
748
+ right: rect.x + rect.width,
749
+ bottom: rect.y + rect.height
750
+ });
751
+ }
752
+ var init_rectToClientRect = __esmMin((() => {}));
753
+ //#endregion
754
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
755
+ function getInnerBoundingClientRect(element, strategy) {
756
+ var rect = getBoundingClientRect(element, false, strategy === "fixed");
757
+ rect.top = rect.top + element.clientTop;
758
+ rect.left = rect.left + element.clientLeft;
759
+ rect.bottom = rect.top + element.clientHeight;
760
+ rect.right = rect.left + element.clientWidth;
761
+ rect.width = element.clientWidth;
762
+ rect.height = element.clientHeight;
763
+ rect.x = rect.left;
764
+ rect.y = rect.top;
765
+ return rect;
766
+ }
767
+ function getClientRectFromMixedType(element, clippingParent, strategy) {
768
+ return clippingParent === "viewport" ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
769
+ }
770
+ function getClippingParents(element) {
771
+ var clippingParents = listScrollParents(getParentNode(element));
772
+ var clipperElement = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0 && isHTMLElement(element) ? getOffsetParent(element) : element;
773
+ if (!isElement$1(clipperElement)) return [];
774
+ return clippingParents.filter(function(clippingParent) {
775
+ return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
776
+ });
777
+ }
778
+ function getClippingRect(element, boundary, rootBoundary, strategy) {
779
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
780
+ var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
781
+ var firstClippingParent = clippingParents[0];
782
+ var clippingRect = clippingParents.reduce(function(accRect, clippingParent) {
783
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
784
+ accRect.top = max(rect.top, accRect.top);
785
+ accRect.right = min(rect.right, accRect.right);
786
+ accRect.bottom = min(rect.bottom, accRect.bottom);
787
+ accRect.left = max(rect.left, accRect.left);
788
+ return accRect;
789
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
790
+ clippingRect.width = clippingRect.right - clippingRect.left;
791
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
792
+ clippingRect.x = clippingRect.left;
793
+ clippingRect.y = clippingRect.top;
794
+ return clippingRect;
795
+ }
796
+ var init_getClippingRect = __esmMin((() => {
797
+ init_enums();
798
+ init_getViewportRect();
799
+ init_getDocumentRect();
800
+ init_listScrollParents();
801
+ init_getOffsetParent();
802
+ init_getDocumentElement();
803
+ init_getComputedStyle();
804
+ init_instanceOf();
805
+ init_getBoundingClientRect();
806
+ init_getParentNode();
807
+ init_contains();
808
+ init_getNodeName();
809
+ init_rectToClientRect();
810
+ init_math();
811
+ }));
812
+ //#endregion
813
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js
814
+ function computeOffsets(_ref) {
815
+ var reference = _ref.reference, element = _ref.element, placement = _ref.placement;
816
+ var basePlacement = placement ? getBasePlacement(placement) : null;
817
+ var variation = placement ? getVariation(placement) : null;
818
+ var commonX = reference.x + reference.width / 2 - element.width / 2;
819
+ var commonY = reference.y + reference.height / 2 - element.height / 2;
820
+ var offsets;
821
+ switch (basePlacement) {
822
+ case "top":
823
+ offsets = {
824
+ x: commonX,
825
+ y: reference.y - element.height
826
+ };
827
+ break;
828
+ case bottom:
829
+ offsets = {
830
+ x: commonX,
831
+ y: reference.y + reference.height
832
+ };
833
+ break;
834
+ case right:
835
+ offsets = {
836
+ x: reference.x + reference.width,
837
+ y: commonY
838
+ };
839
+ break;
840
+ case left:
841
+ offsets = {
842
+ x: reference.x - element.width,
843
+ y: commonY
844
+ };
845
+ break;
846
+ default: offsets = {
847
+ x: reference.x,
848
+ y: reference.y
849
+ };
850
+ }
851
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
852
+ if (mainAxis != null) {
853
+ var len = mainAxis === "y" ? "height" : "width";
854
+ switch (variation) {
855
+ case start:
856
+ offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
857
+ break;
858
+ case "end":
859
+ offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
860
+ break;
861
+ default:
862
+ }
863
+ }
864
+ return offsets;
865
+ }
866
+ var init_computeOffsets = __esmMin((() => {
867
+ init_getBasePlacement();
868
+ init_getVariation();
869
+ init_getMainAxisFromPlacement();
870
+ init_enums();
871
+ }));
872
+ //#endregion
873
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js
874
+ function detectOverflow(state, options) {
875
+ if (options === void 0) options = {};
876
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
877
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
878
+ var altContext = elementContext === "popper" ? reference : popper;
879
+ var popperRect = state.rects.popper;
880
+ var element = state.elements[altBoundary ? altContext : elementContext];
881
+ var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
882
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
883
+ var popperOffsets = computeOffsets({
884
+ reference: referenceClientRect,
885
+ element: popperRect,
886
+ strategy: "absolute",
887
+ placement
888
+ });
889
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
890
+ var elementClientRect = elementContext === "popper" ? popperClientRect : referenceClientRect;
891
+ var overflowOffsets = {
892
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
893
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
894
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
895
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
896
+ };
897
+ var offsetData = state.modifiersData.offset;
898
+ if (elementContext === "popper" && offsetData) {
899
+ var offset = offsetData[placement];
900
+ Object.keys(overflowOffsets).forEach(function(key) {
901
+ var multiply = ["right", "bottom"].indexOf(key) >= 0 ? 1 : -1;
902
+ var axis = ["top", "bottom"].indexOf(key) >= 0 ? "y" : "x";
903
+ overflowOffsets[key] += offset[axis] * multiply;
904
+ });
905
+ }
906
+ return overflowOffsets;
907
+ }
908
+ var init_detectOverflow = __esmMin((() => {
909
+ init_getClippingRect();
910
+ init_getDocumentElement();
911
+ init_getBoundingClientRect();
912
+ init_computeOffsets();
913
+ init_rectToClientRect();
914
+ init_enums();
915
+ init_instanceOf();
916
+ init_mergePaddingObject();
917
+ init_expandToHashMap();
918
+ }));
919
+ //#endregion
920
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
921
+ function computeAutoPlacement(state, options) {
922
+ if (options === void 0) options = {};
923
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
924
+ var variation = getVariation(placement);
925
+ var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement) {
926
+ return getVariation(placement) === variation;
927
+ }) : basePlacements;
928
+ var allowedPlacements = placements$1.filter(function(placement) {
929
+ return allowedAutoPlacements.indexOf(placement) >= 0;
930
+ });
931
+ if (allowedPlacements.length === 0) allowedPlacements = placements$1;
932
+ var overflows = allowedPlacements.reduce(function(acc, placement) {
933
+ acc[placement] = detectOverflow(state, {
934
+ placement,
935
+ boundary,
936
+ rootBoundary,
937
+ padding
938
+ })[getBasePlacement(placement)];
939
+ return acc;
940
+ }, {});
941
+ return Object.keys(overflows).sort(function(a, b) {
942
+ return overflows[a] - overflows[b];
943
+ });
944
+ }
945
+ var init_computeAutoPlacement = __esmMin((() => {
946
+ init_getVariation();
947
+ init_enums();
948
+ init_detectOverflow();
949
+ init_getBasePlacement();
950
+ }));
951
+ //#endregion
952
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js
953
+ function getExpandedFallbackPlacements(placement) {
954
+ if (getBasePlacement(placement) === "auto") return [];
955
+ var oppositePlacement = getOppositePlacement(placement);
956
+ return [
957
+ getOppositeVariationPlacement(placement),
958
+ oppositePlacement,
959
+ getOppositeVariationPlacement(oppositePlacement)
960
+ ];
961
+ }
962
+ function flip(_ref) {
963
+ var state = _ref.state, options = _ref.options, name = _ref.name;
964
+ if (state.modifiersData[name]._skip) return;
965
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
966
+ var preferredPlacement = state.options.placement;
967
+ var isBasePlacement = getBasePlacement(preferredPlacement) === preferredPlacement;
968
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
969
+ var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement) {
970
+ return acc.concat(getBasePlacement(placement) === "auto" ? computeAutoPlacement(state, {
971
+ placement,
972
+ boundary,
973
+ rootBoundary,
974
+ padding,
975
+ flipVariations,
976
+ allowedAutoPlacements
977
+ }) : placement);
978
+ }, []);
979
+ var referenceRect = state.rects.reference;
980
+ var popperRect = state.rects.popper;
981
+ var checksMap = /* @__PURE__ */ new Map();
982
+ var makeFallbackChecks = true;
983
+ var firstFittingPlacement = placements[0];
984
+ for (var i = 0; i < placements.length; i++) {
985
+ var placement = placements[i];
986
+ var _basePlacement = getBasePlacement(placement);
987
+ var isStartVariation = getVariation(placement) === start;
988
+ var isVertical = ["top", bottom].indexOf(_basePlacement) >= 0;
989
+ var len = isVertical ? "width" : "height";
990
+ var overflow = detectOverflow(state, {
991
+ placement,
992
+ boundary,
993
+ rootBoundary,
994
+ altBoundary,
995
+ padding
996
+ });
997
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : "top";
998
+ if (referenceRect[len] > popperRect[len]) mainVariationSide = getOppositePlacement(mainVariationSide);
999
+ var altVariationSide = getOppositePlacement(mainVariationSide);
1000
+ var checks = [];
1001
+ if (checkMainAxis) checks.push(overflow[_basePlacement] <= 0);
1002
+ if (checkAltAxis) checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
1003
+ if (checks.every(function(check) {
1004
+ return check;
1005
+ })) {
1006
+ firstFittingPlacement = placement;
1007
+ makeFallbackChecks = false;
1008
+ break;
1009
+ }
1010
+ checksMap.set(placement, checks);
1011
+ }
1012
+ if (makeFallbackChecks) {
1013
+ var numberOfChecks = flipVariations ? 3 : 1;
1014
+ var _loop = function _loop(_i) {
1015
+ var fittingPlacement = placements.find(function(placement) {
1016
+ var checks = checksMap.get(placement);
1017
+ if (checks) return checks.slice(0, _i).every(function(check) {
1018
+ return check;
1019
+ });
1020
+ });
1021
+ if (fittingPlacement) {
1022
+ firstFittingPlacement = fittingPlacement;
1023
+ return "break";
1024
+ }
1025
+ };
1026
+ for (var _i = numberOfChecks; _i > 0; _i--) if (_loop(_i) === "break") break;
1027
+ }
1028
+ if (state.placement !== firstFittingPlacement) {
1029
+ state.modifiersData[name]._skip = true;
1030
+ state.placement = firstFittingPlacement;
1031
+ state.reset = true;
1032
+ }
1033
+ }
1034
+ var flip_default;
1035
+ var init_flip = __esmMin((() => {
1036
+ init_getOppositePlacement();
1037
+ init_getBasePlacement();
1038
+ init_getOppositeVariationPlacement();
1039
+ init_detectOverflow();
1040
+ init_computeAutoPlacement();
1041
+ init_enums();
1042
+ init_getVariation();
1043
+ flip_default = {
1044
+ name: "flip",
1045
+ enabled: true,
1046
+ phase: "main",
1047
+ fn: flip,
1048
+ requiresIfExists: ["offset"],
1049
+ data: { _skip: false }
1050
+ };
1051
+ }));
1052
+ //#endregion
1053
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js
1054
+ function getSideOffsets(overflow, rect, preventedOffsets) {
1055
+ if (preventedOffsets === void 0) preventedOffsets = {
1056
+ x: 0,
1057
+ y: 0
1058
+ };
1059
+ return {
1060
+ top: overflow.top - rect.height - preventedOffsets.y,
1061
+ right: overflow.right - rect.width + preventedOffsets.x,
1062
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
1063
+ left: overflow.left - rect.width - preventedOffsets.x
1064
+ };
1065
+ }
1066
+ function isAnySideFullyClipped(overflow) {
1067
+ return [
1068
+ "top",
1069
+ right,
1070
+ bottom,
1071
+ left
1072
+ ].some(function(side) {
1073
+ return overflow[side] >= 0;
1074
+ });
1075
+ }
1076
+ function hide(_ref) {
1077
+ var state = _ref.state, name = _ref.name;
1078
+ var referenceRect = state.rects.reference;
1079
+ var popperRect = state.rects.popper;
1080
+ var preventedOffsets = state.modifiersData.preventOverflow;
1081
+ var referenceOverflow = detectOverflow(state, { elementContext: "reference" });
1082
+ var popperAltOverflow = detectOverflow(state, { altBoundary: true });
1083
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
1084
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
1085
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
1086
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
1087
+ state.modifiersData[name] = {
1088
+ referenceClippingOffsets,
1089
+ popperEscapeOffsets,
1090
+ isReferenceHidden,
1091
+ hasPopperEscaped
1092
+ };
1093
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
1094
+ "data-popper-reference-hidden": isReferenceHidden,
1095
+ "data-popper-escaped": hasPopperEscaped
1096
+ });
1097
+ }
1098
+ var hide_default;
1099
+ var init_hide = __esmMin((() => {
1100
+ init_enums();
1101
+ init_detectOverflow();
1102
+ hide_default = {
1103
+ name: "hide",
1104
+ enabled: true,
1105
+ phase: "main",
1106
+ requiresIfExists: ["preventOverflow"],
1107
+ fn: hide
1108
+ };
1109
+ }));
1110
+ //#endregion
1111
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js
1112
+ function distanceAndSkiddingToXY(placement, rects, offset) {
1113
+ var basePlacement = getBasePlacement(placement);
1114
+ var invertDistance = ["left", "top"].indexOf(basePlacement) >= 0 ? -1 : 1;
1115
+ var _ref = typeof offset === "function" ? offset(Object.assign({}, rects, { placement })) : offset, skidding = _ref[0], distance = _ref[1];
1116
+ skidding = skidding || 0;
1117
+ distance = (distance || 0) * invertDistance;
1118
+ return ["left", "right"].indexOf(basePlacement) >= 0 ? {
1119
+ x: distance,
1120
+ y: skidding
1121
+ } : {
1122
+ x: skidding,
1123
+ y: distance
1124
+ };
1125
+ }
1126
+ function offset(_ref2) {
1127
+ var state = _ref2.state, options = _ref2.options, name = _ref2.name;
1128
+ var _options$offset = options.offset, offset = _options$offset === void 0 ? [0, 0] : _options$offset;
1129
+ var data = placements.reduce(function(acc, placement) {
1130
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
1131
+ return acc;
1132
+ }, {});
1133
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
1134
+ if (state.modifiersData.popperOffsets != null) {
1135
+ state.modifiersData.popperOffsets.x += x;
1136
+ state.modifiersData.popperOffsets.y += y;
1137
+ }
1138
+ state.modifiersData[name] = data;
1139
+ }
1140
+ var offset_default;
1141
+ var init_offset = __esmMin((() => {
1142
+ init_getBasePlacement();
1143
+ init_enums();
1144
+ offset_default = {
1145
+ name: "offset",
1146
+ enabled: true,
1147
+ phase: "main",
1148
+ requires: ["popperOffsets"],
1149
+ fn: offset
1150
+ };
1151
+ }));
1152
+ //#endregion
1153
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
1154
+ function popperOffsets(_ref) {
1155
+ var state = _ref.state, name = _ref.name;
1156
+ state.modifiersData[name] = computeOffsets({
1157
+ reference: state.rects.reference,
1158
+ element: state.rects.popper,
1159
+ strategy: "absolute",
1160
+ placement: state.placement
1161
+ });
1162
+ }
1163
+ var popperOffsets_default;
1164
+ var init_popperOffsets = __esmMin((() => {
1165
+ init_computeOffsets();
1166
+ popperOffsets_default = {
1167
+ name: "popperOffsets",
1168
+ enabled: true,
1169
+ phase: "read",
1170
+ fn: popperOffsets,
1171
+ data: {}
1172
+ };
1173
+ }));
1174
+ //#endregion
1175
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js
1176
+ function getAltAxis(axis) {
1177
+ return axis === "x" ? "y" : "x";
1178
+ }
1179
+ var init_getAltAxis = __esmMin((() => {}));
1180
+ //#endregion
1181
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
1182
+ function preventOverflow(_ref) {
1183
+ var state = _ref.state, options = _ref.options, name = _ref.name;
1184
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
1185
+ var overflow = detectOverflow(state, {
1186
+ boundary,
1187
+ rootBoundary,
1188
+ padding,
1189
+ altBoundary
1190
+ });
1191
+ var basePlacement = getBasePlacement(state.placement);
1192
+ var variation = getVariation(state.placement);
1193
+ var isBasePlacement = !variation;
1194
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
1195
+ var altAxis = getAltAxis(mainAxis);
1196
+ var popperOffsets = state.modifiersData.popperOffsets;
1197
+ var referenceRect = state.rects.reference;
1198
+ var popperRect = state.rects.popper;
1199
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset;
1200
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
1201
+ mainAxis: tetherOffsetValue,
1202
+ altAxis: tetherOffsetValue
1203
+ } : Object.assign({
1204
+ mainAxis: 0,
1205
+ altAxis: 0
1206
+ }, tetherOffsetValue);
1207
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
1208
+ var data = {
1209
+ x: 0,
1210
+ y: 0
1211
+ };
1212
+ if (!popperOffsets) return;
1213
+ if (checkMainAxis) {
1214
+ var _offsetModifierState$;
1215
+ var mainSide = mainAxis === "y" ? "top" : left;
1216
+ var altSide = mainAxis === "y" ? bottom : right;
1217
+ var len = mainAxis === "y" ? "height" : "width";
1218
+ var offset = popperOffsets[mainAxis];
1219
+ var min$1 = offset + overflow[mainSide];
1220
+ var max$1 = offset - overflow[altSide];
1221
+ var additive = tether ? -popperRect[len] / 2 : 0;
1222
+ var minLen = variation === "start" ? referenceRect[len] : popperRect[len];
1223
+ var maxLen = variation === "start" ? -popperRect[len] : -referenceRect[len];
1224
+ var arrowElement = state.elements.arrow;
1225
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
1226
+ width: 0,
1227
+ height: 0
1228
+ };
1229
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
1230
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
1231
+ var arrowPaddingMax = arrowPaddingObject[altSide];
1232
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
1233
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
1234
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
1235
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
1236
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
1237
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
1238
+ var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
1239
+ var tetherMax = offset + maxOffset - offsetModifierValue;
1240
+ var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
1241
+ popperOffsets[mainAxis] = preventedOffset;
1242
+ data[mainAxis] = preventedOffset - offset;
1243
+ }
1244
+ if (checkAltAxis) {
1245
+ var _offsetModifierState$2;
1246
+ var _mainSide = mainAxis === "x" ? "top" : left;
1247
+ var _altSide = mainAxis === "x" ? bottom : right;
1248
+ var _offset = popperOffsets[altAxis];
1249
+ var _len = altAxis === "y" ? "height" : "width";
1250
+ var _min = _offset + overflow[_mainSide];
1251
+ var _max = _offset - overflow[_altSide];
1252
+ var isOriginSide = ["top", left].indexOf(basePlacement) !== -1;
1253
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
1254
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
1255
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
1256
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
1257
+ popperOffsets[altAxis] = _preventedOffset;
1258
+ data[altAxis] = _preventedOffset - _offset;
1259
+ }
1260
+ state.modifiersData[name] = data;
1261
+ }
1262
+ var preventOverflow_default;
1263
+ var init_preventOverflow = __esmMin((() => {
1264
+ init_enums();
1265
+ init_getBasePlacement();
1266
+ init_getMainAxisFromPlacement();
1267
+ init_getAltAxis();
1268
+ init_within();
1269
+ init_getLayoutRect();
1270
+ init_getOffsetParent();
1271
+ init_detectOverflow();
1272
+ init_getVariation();
1273
+ init_getFreshSideObject();
1274
+ init_math();
1275
+ preventOverflow_default = {
1276
+ name: "preventOverflow",
1277
+ enabled: true,
1278
+ phase: "main",
1279
+ fn: preventOverflow,
1280
+ requiresIfExists: ["offset"]
1281
+ };
1282
+ }));
1283
+ //#endregion
1284
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/index.js
1285
+ var init_modifiers = __esmMin((() => {
1286
+ init_applyStyles();
1287
+ init_arrow();
1288
+ init_computeStyles();
1289
+ init_eventListeners();
1290
+ init_flip();
1291
+ init_hide();
1292
+ init_offset();
1293
+ init_popperOffsets();
1294
+ init_preventOverflow();
1295
+ }));
1296
+ //#endregion
1297
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
1298
+ function getHTMLElementScroll(element) {
1299
+ return {
1300
+ scrollLeft: element.scrollLeft,
1301
+ scrollTop: element.scrollTop
1302
+ };
1303
+ }
1304
+ var init_getHTMLElementScroll = __esmMin((() => {}));
1305
+ //#endregion
1306
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
1307
+ function getNodeScroll(node) {
1308
+ if (node === getWindow(node) || !isHTMLElement(node)) return getWindowScroll(node);
1309
+ else return getHTMLElementScroll(node);
1310
+ }
1311
+ var init_getNodeScroll = __esmMin((() => {
1312
+ init_getWindowScroll();
1313
+ init_getWindow();
1314
+ init_instanceOf();
1315
+ init_getHTMLElementScroll();
1316
+ }));
1317
+ //#endregion
1318
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
1319
+ function isElementScaled(element) {
1320
+ var rect = element.getBoundingClientRect();
1321
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
1322
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
1323
+ return scaleX !== 1 || scaleY !== 1;
1324
+ }
1325
+ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
1326
+ if (isFixed === void 0) isFixed = false;
1327
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
1328
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
1329
+ var documentElement = getDocumentElement(offsetParent);
1330
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
1331
+ var scroll = {
1332
+ scrollLeft: 0,
1333
+ scrollTop: 0
1334
+ };
1335
+ var offsets = {
1336
+ x: 0,
1337
+ y: 0
1338
+ };
1339
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
1340
+ if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) scroll = getNodeScroll(offsetParent);
1341
+ if (isHTMLElement(offsetParent)) {
1342
+ offsets = getBoundingClientRect(offsetParent, true);
1343
+ offsets.x += offsetParent.clientLeft;
1344
+ offsets.y += offsetParent.clientTop;
1345
+ } else if (documentElement) offsets.x = getWindowScrollBarX(documentElement);
1346
+ }
1347
+ return {
1348
+ x: rect.left + scroll.scrollLeft - offsets.x,
1349
+ y: rect.top + scroll.scrollTop - offsets.y,
1350
+ width: rect.width,
1351
+ height: rect.height
1352
+ };
1353
+ }
1354
+ var init_getCompositeRect = __esmMin((() => {
1355
+ init_getBoundingClientRect();
1356
+ init_getNodeScroll();
1357
+ init_getNodeName();
1358
+ init_instanceOf();
1359
+ init_getWindowScrollBarX();
1360
+ init_getDocumentElement();
1361
+ init_isScrollParent();
1362
+ init_math();
1363
+ }));
1364
+ //#endregion
1365
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js
1366
+ function order(modifiers) {
1367
+ var map = /* @__PURE__ */ new Map();
1368
+ var visited = /* @__PURE__ */ new Set();
1369
+ var result = [];
1370
+ modifiers.forEach(function(modifier) {
1371
+ map.set(modifier.name, modifier);
1372
+ });
1373
+ function sort(modifier) {
1374
+ visited.add(modifier.name);
1375
+ [].concat(modifier.requires || [], modifier.requiresIfExists || []).forEach(function(dep) {
1376
+ if (!visited.has(dep)) {
1377
+ var depModifier = map.get(dep);
1378
+ if (depModifier) sort(depModifier);
1379
+ }
1380
+ });
1381
+ result.push(modifier);
1382
+ }
1383
+ modifiers.forEach(function(modifier) {
1384
+ if (!visited.has(modifier.name)) sort(modifier);
1385
+ });
1386
+ return result;
1387
+ }
1388
+ function orderModifiers(modifiers) {
1389
+ var orderedModifiers = order(modifiers);
1390
+ return modifierPhases.reduce(function(acc, phase) {
1391
+ return acc.concat(orderedModifiers.filter(function(modifier) {
1392
+ return modifier.phase === phase;
1393
+ }));
1394
+ }, []);
1395
+ }
1396
+ var init_orderModifiers = __esmMin((() => {
1397
+ init_enums();
1398
+ }));
1399
+ //#endregion
1400
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js
1401
+ function debounce(fn) {
1402
+ var pending;
1403
+ return function() {
1404
+ if (!pending) pending = new Promise(function(resolve) {
1405
+ Promise.resolve().then(function() {
1406
+ pending = void 0;
1407
+ resolve(fn());
1408
+ });
1409
+ });
1410
+ return pending;
1411
+ };
1412
+ }
1413
+ var init_debounce = __esmMin((() => {}));
1414
+ //#endregion
1415
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js
1416
+ function mergeByName(modifiers) {
1417
+ var merged = modifiers.reduce(function(merged, current) {
1418
+ var existing = merged[current.name];
1419
+ merged[current.name] = existing ? Object.assign({}, existing, current, {
1420
+ options: Object.assign({}, existing.options, current.options),
1421
+ data: Object.assign({}, existing.data, current.data)
1422
+ }) : current;
1423
+ return merged;
1424
+ }, {});
1425
+ return Object.keys(merged).map(function(key) {
1426
+ return merged[key];
1427
+ });
1428
+ }
1429
+ var init_mergeByName = __esmMin((() => {}));
1430
+ //#endregion
1431
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js
1432
+ function areValidElements() {
1433
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
1434
+ return !args.some(function(element) {
1435
+ return !(element && typeof element.getBoundingClientRect === "function");
1436
+ });
1437
+ }
1438
+ function popperGenerator(generatorOptions) {
1439
+ if (generatorOptions === void 0) generatorOptions = {};
1440
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
1441
+ return function createPopper(reference, popper, options) {
1442
+ if (options === void 0) options = defaultOptions;
1443
+ var state = {
1444
+ placement: "bottom",
1445
+ orderedModifiers: [],
1446
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
1447
+ modifiersData: {},
1448
+ elements: {
1449
+ reference,
1450
+ popper
1451
+ },
1452
+ attributes: {},
1453
+ styles: {}
1454
+ };
1455
+ var effectCleanupFns = [];
1456
+ var isDestroyed = false;
1457
+ var instance = {
1458
+ state,
1459
+ setOptions: function setOptions(setOptionsAction) {
1460
+ var options = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
1461
+ cleanupModifierEffects();
1462
+ state.options = Object.assign({}, defaultOptions, state.options, options);
1463
+ state.scrollParents = {
1464
+ reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
1465
+ popper: listScrollParents(popper)
1466
+ };
1467
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers)));
1468
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
1469
+ return m.enabled;
1470
+ });
1471
+ runModifierEffects();
1472
+ return instance.update();
1473
+ },
1474
+ forceUpdate: function forceUpdate() {
1475
+ if (isDestroyed) return;
1476
+ var _state$elements = state.elements, reference = _state$elements.reference, popper = _state$elements.popper;
1477
+ if (!areValidElements(reference, popper)) return;
1478
+ state.rects = {
1479
+ reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === "fixed"),
1480
+ popper: getLayoutRect(popper)
1481
+ };
1482
+ state.reset = false;
1483
+ state.placement = state.options.placement;
1484
+ state.orderedModifiers.forEach(function(modifier) {
1485
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
1486
+ });
1487
+ for (var index = 0; index < state.orderedModifiers.length; index++) {
1488
+ if (state.reset === true) {
1489
+ state.reset = false;
1490
+ index = -1;
1491
+ continue;
1492
+ }
1493
+ var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
1494
+ if (typeof fn === "function") state = fn({
1495
+ state,
1496
+ options: _options,
1497
+ name,
1498
+ instance
1499
+ }) || state;
1500
+ }
1501
+ },
1502
+ update: debounce(function() {
1503
+ return new Promise(function(resolve) {
1504
+ instance.forceUpdate();
1505
+ resolve(state);
1506
+ });
1507
+ }),
1508
+ destroy: function destroy() {
1509
+ cleanupModifierEffects();
1510
+ isDestroyed = true;
1511
+ }
1512
+ };
1513
+ if (!areValidElements(reference, popper)) return instance;
1514
+ instance.setOptions(options).then(function(state) {
1515
+ if (!isDestroyed && options.onFirstUpdate) options.onFirstUpdate(state);
1516
+ });
1517
+ function runModifierEffects() {
1518
+ state.orderedModifiers.forEach(function(_ref) {
1519
+ var name = _ref.name, _ref$options = _ref.options, options = _ref$options === void 0 ? {} : _ref$options, effect = _ref.effect;
1520
+ if (typeof effect === "function") {
1521
+ var cleanupFn = effect({
1522
+ state,
1523
+ name,
1524
+ instance,
1525
+ options
1526
+ });
1527
+ effectCleanupFns.push(cleanupFn || function noopFn() {});
1528
+ }
1529
+ });
1530
+ }
1531
+ function cleanupModifierEffects() {
1532
+ effectCleanupFns.forEach(function(fn) {
1533
+ return fn();
1534
+ });
1535
+ effectCleanupFns = [];
1536
+ }
1537
+ return instance;
1538
+ };
1539
+ }
1540
+ var DEFAULT_OPTIONS, createPopper$2;
1541
+ var init_createPopper = __esmMin((() => {
1542
+ init_getCompositeRect();
1543
+ init_getLayoutRect();
1544
+ init_listScrollParents();
1545
+ init_getOffsetParent();
1546
+ init_orderModifiers();
1547
+ init_debounce();
1548
+ init_mergeByName();
1549
+ init_detectOverflow();
1550
+ init_instanceOf();
1551
+ DEFAULT_OPTIONS = {
1552
+ placement: "bottom",
1553
+ modifiers: [],
1554
+ strategy: "absolute"
1555
+ };
1556
+ createPopper$2 = /* @__PURE__ */ popperGenerator();
1557
+ }));
1558
+ //#endregion
1559
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper-lite.js
1560
+ var defaultModifiers$1, createPopper$1;
1561
+ var init_popper_lite = __esmMin((() => {
1562
+ init_createPopper();
1563
+ init_eventListeners();
1564
+ init_popperOffsets();
1565
+ init_computeStyles();
1566
+ init_applyStyles();
1567
+ defaultModifiers$1 = [
1568
+ eventListeners_default,
1569
+ popperOffsets_default,
1570
+ computeStyles_default,
1571
+ applyStyles_default
1572
+ ];
1573
+ createPopper$1 = /* @__PURE__ */ popperGenerator({ defaultModifiers: defaultModifiers$1 });
1574
+ }));
1575
+ //#endregion
1576
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.js
1577
+ var defaultModifiers, createPopper;
1578
+ var init_popper = __esmMin((() => {
1579
+ init_createPopper();
1580
+ init_eventListeners();
1581
+ init_popperOffsets();
1582
+ init_computeStyles();
1583
+ init_applyStyles();
1584
+ init_offset();
1585
+ init_flip();
1586
+ init_preventOverflow();
1587
+ init_arrow();
1588
+ init_hide();
1589
+ init_popper_lite();
1590
+ init_modifiers();
1591
+ defaultModifiers = [
1592
+ eventListeners_default,
1593
+ popperOffsets_default,
1594
+ computeStyles_default,
1595
+ applyStyles_default,
1596
+ offset_default,
1597
+ flip_default,
1598
+ preventOverflow_default,
1599
+ arrow_default,
1600
+ hide_default
1601
+ ];
1602
+ createPopper = /* @__PURE__ */ popperGenerator({ defaultModifiers });
1603
+ }));
1604
+ //#endregion
1605
+ //#region node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.js
1606
+ var lib_exports = /* @__PURE__ */ __exportAll({
1607
+ afterMain: () => afterMain,
1608
+ afterRead: () => afterRead,
1609
+ afterWrite: () => afterWrite,
1610
+ applyStyles: () => applyStyles_default,
1611
+ arrow: () => arrow_default,
1612
+ auto: () => auto,
1613
+ basePlacements: () => basePlacements,
1614
+ beforeMain: () => beforeMain,
1615
+ beforeRead: () => beforeRead,
1616
+ beforeWrite: () => beforeWrite,
1617
+ bottom: () => bottom,
1618
+ clippingParents: () => clippingParents,
1619
+ computeStyles: () => computeStyles_default,
1620
+ createPopper: () => createPopper,
1621
+ createPopperBase: () => createPopper$2,
1622
+ createPopperLite: () => createPopper$1,
1623
+ detectOverflow: () => detectOverflow,
1624
+ end: () => "end",
1625
+ eventListeners: () => eventListeners_default,
1626
+ flip: () => flip_default,
1627
+ hide: () => hide_default,
1628
+ left: () => left,
1629
+ main: () => main,
1630
+ modifierPhases: () => modifierPhases,
1631
+ offset: () => offset_default,
1632
+ placements: () => placements,
1633
+ popper: () => popper,
1634
+ popperGenerator: () => popperGenerator,
1635
+ popperOffsets: () => popperOffsets_default,
1636
+ preventOverflow: () => preventOverflow_default,
1637
+ read: () => read,
1638
+ reference: () => reference,
1639
+ right: () => right,
1640
+ start: () => start,
1641
+ top: () => "top",
1642
+ variationPlacements: () => variationPlacements,
1643
+ viewport: () => viewport,
1644
+ write: () => write
1645
+ });
1646
+ var init_lib = __esmMin((() => {
1647
+ init_enums();
1648
+ init_modifiers();
1649
+ init_createPopper();
1650
+ init_popper();
1651
+ init_popper_lite();
1652
+ }));
1653
+ //#endregion
1654
+ //#region node_modules/.pnpm/bootstrap@5.3.8_@popperjs+core@2.11.8/node_modules/bootstrap/dist/js/bootstrap.esm.js
1655
+ /**
1656
+ * Private methods
1657
+ */
1658
+ function makeEventUid(element, uid) {
1659
+ return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
1660
+ }
1661
+ function getElementEvents(element) {
1662
+ const uid = makeEventUid(element);
1663
+ element.uidEvent = uid;
1664
+ eventRegistry[uid] = eventRegistry[uid] || {};
1665
+ return eventRegistry[uid];
1666
+ }
1667
+ function bootstrapHandler(element, fn) {
1668
+ return function handler(event) {
1669
+ hydrateObj(event, { delegateTarget: element });
1670
+ if (handler.oneOff) EventHandler.off(element, event.type, fn);
1671
+ return fn.apply(element, [event]);
1672
+ };
1673
+ }
1674
+ function bootstrapDelegationHandler(element, selector, fn) {
1675
+ return function handler(event) {
1676
+ const domElements = element.querySelectorAll(selector);
1677
+ for (let { target } = event; target && target !== this; target = target.parentNode) for (const domElement of domElements) {
1678
+ if (domElement !== target) continue;
1679
+ hydrateObj(event, { delegateTarget: target });
1680
+ if (handler.oneOff) EventHandler.off(element, event.type, selector, fn);
1681
+ return fn.apply(target, [event]);
1682
+ }
1683
+ };
1684
+ }
1685
+ function findHandler(events, callable, delegationSelector = null) {
1686
+ return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector);
1687
+ }
1688
+ function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
1689
+ const isDelegated = typeof handler === "string";
1690
+ const callable = isDelegated ? delegationFunction : handler || delegationFunction;
1691
+ let typeEvent = getTypeEvent(originalTypeEvent);
1692
+ if (!nativeEvents.has(typeEvent)) typeEvent = originalTypeEvent;
1693
+ return [
1694
+ isDelegated,
1695
+ callable,
1696
+ typeEvent
1697
+ ];
1698
+ }
1699
+ function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
1700
+ if (typeof originalTypeEvent !== "string" || !element) return;
1701
+ let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
1702
+ if (originalTypeEvent in customEvents) {
1703
+ const wrapFunction = (fn) => {
1704
+ return function(event) {
1705
+ if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) return fn.call(this, event);
1706
+ };
1707
+ };
1708
+ callable = wrapFunction(callable);
1709
+ }
1710
+ const events = getElementEvents(element);
1711
+ const handlers = events[typeEvent] || (events[typeEvent] = {});
1712
+ const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
1713
+ if (previousFunction) {
1714
+ previousFunction.oneOff = previousFunction.oneOff && oneOff;
1715
+ return;
1716
+ }
1717
+ const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ""));
1718
+ const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
1719
+ fn.delegationSelector = isDelegated ? handler : null;
1720
+ fn.callable = callable;
1721
+ fn.oneOff = oneOff;
1722
+ fn.uidEvent = uid;
1723
+ handlers[uid] = fn;
1724
+ element.addEventListener(typeEvent, fn, isDelegated);
1725
+ }
1726
+ function removeHandler(element, events, typeEvent, handler, delegationSelector) {
1727
+ const fn = findHandler(events[typeEvent], handler, delegationSelector);
1728
+ if (!fn) return;
1729
+ element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
1730
+ delete events[typeEvent][fn.uidEvent];
1731
+ }
1732
+ function removeNamespacedHandlers(element, events, typeEvent, namespace) {
1733
+ const storeElementEvent = events[typeEvent] || {};
1734
+ for (const [handlerKey, event] of Object.entries(storeElementEvent)) if (handlerKey.includes(namespace)) removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1735
+ }
1736
+ function getTypeEvent(event) {
1737
+ event = event.replace(stripNameRegex, "");
1738
+ return customEvents[event] || event;
1739
+ }
1740
+ function hydrateObj(obj, meta = {}) {
1741
+ for (const [key, value] of Object.entries(meta)) try {
1742
+ obj[key] = value;
1743
+ } catch (_unused) {
1744
+ Object.defineProperty(obj, key, {
1745
+ configurable: true,
1746
+ get() {
1747
+ return value;
1748
+ }
1749
+ });
1750
+ }
1751
+ return obj;
1752
+ }
1753
+ /**
1754
+ * --------------------------------------------------------------------------
1755
+ * Bootstrap dom/manipulator.js
1756
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1757
+ * --------------------------------------------------------------------------
1758
+ */
1759
+ function normalizeData(value) {
1760
+ if (value === "true") return true;
1761
+ if (value === "false") return false;
1762
+ if (value === Number(value).toString()) return Number(value);
1763
+ if (value === "" || value === "null") return null;
1764
+ if (typeof value !== "string") return value;
1765
+ try {
1766
+ return JSON.parse(decodeURIComponent(value));
1767
+ } catch (_unused) {
1768
+ return value;
1769
+ }
1770
+ }
1771
+ function normalizeDataKey(key) {
1772
+ return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
1773
+ }
1774
+ function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
1775
+ if (!unsafeHtml.length) return unsafeHtml;
1776
+ if (sanitizeFunction && typeof sanitizeFunction === "function") return sanitizeFunction(unsafeHtml);
1777
+ const createdDocument = new window.DOMParser().parseFromString(unsafeHtml, "text/html");
1778
+ const elements = [].concat(...createdDocument.body.querySelectorAll("*"));
1779
+ for (const element of elements) {
1780
+ const elementName = element.nodeName.toLowerCase();
1781
+ if (!Object.keys(allowList).includes(elementName)) {
1782
+ element.remove();
1783
+ continue;
1784
+ }
1785
+ const attributeList = [].concat(...element.attributes);
1786
+ const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []);
1787
+ for (const attribute of attributeList) if (!allowedAttribute(attribute, allowedAttributes)) element.removeAttribute(attribute.nodeName);
1788
+ }
1789
+ return createdDocument.body.innerHTML;
1790
+ }
1791
+ var elementMap, Data, MAX_UID, MILLISECONDS_MULTIPLIER, TRANSITION_END, parseSelector, toType, getUID, getTransitionDurationFromElement, triggerTransitionEnd, isElement, getElement, isVisible, isDisabled, findShadowRoot, noop, reflow, getjQuery, DOMContentLoadedCallbacks, onDOMContentLoaded, isRTL, defineJQueryPlugin, execute, executeAfterTransition, getNextActiveElement, namespaceRegex, stripNameRegex, stripUidRegex, eventRegistry, uidEvent, customEvents, nativeEvents, EventHandler, Manipulator, Config, VERSION, BaseComponent, getSelector, SelectorEngine, enableDismissTrigger, NAME$f, EVENT_KEY$b, EVENT_CLOSE, EVENT_CLOSED, CLASS_NAME_FADE$5, CLASS_NAME_SHOW$8, Alert, NAME$e, EVENT_KEY$a, DATA_API_KEY$6, CLASS_NAME_ACTIVE$3, SELECTOR_DATA_TOGGLE$5, EVENT_CLICK_DATA_API$6, Button, NAME$d, EVENT_KEY$9, EVENT_TOUCHSTART, EVENT_TOUCHMOVE, EVENT_TOUCHEND, EVENT_POINTERDOWN, EVENT_POINTERUP, POINTER_TYPE_TOUCH, POINTER_TYPE_PEN, CLASS_NAME_POINTER_EVENT, SWIPE_THRESHOLD, Default$c, DefaultType$c, Swipe, NAME$c, EVENT_KEY$8, DATA_API_KEY$5, ARROW_LEFT_KEY$1, ARROW_RIGHT_KEY$1, TOUCHEVENT_COMPAT_WAIT, ORDER_NEXT, ORDER_PREV, DIRECTION_LEFT, DIRECTION_RIGHT, EVENT_SLIDE, EVENT_SLID, EVENT_KEYDOWN$1, EVENT_MOUSEENTER$1, EVENT_MOUSELEAVE$1, EVENT_DRAG_START, EVENT_LOAD_DATA_API$3, EVENT_CLICK_DATA_API$5, CLASS_NAME_CAROUSEL, CLASS_NAME_ACTIVE$2, CLASS_NAME_SLIDE, CLASS_NAME_END, CLASS_NAME_START, CLASS_NAME_NEXT, CLASS_NAME_PREV, SELECTOR_ACTIVE, SELECTOR_ITEM, SELECTOR_ACTIVE_ITEM, SELECTOR_ITEM_IMG, SELECTOR_INDICATORS, SELECTOR_DATA_SLIDE, SELECTOR_DATA_RIDE, KEY_TO_DIRECTION, Default$b, DefaultType$b, Carousel, NAME$b, EVENT_KEY$7, DATA_API_KEY$4, EVENT_SHOW$6, EVENT_SHOWN$6, EVENT_HIDE$6, EVENT_HIDDEN$6, EVENT_CLICK_DATA_API$4, CLASS_NAME_SHOW$7, CLASS_NAME_COLLAPSE, CLASS_NAME_COLLAPSING, CLASS_NAME_COLLAPSED, CLASS_NAME_DEEPER_CHILDREN, CLASS_NAME_HORIZONTAL, WIDTH, HEIGHT, SELECTOR_ACTIVES, SELECTOR_DATA_TOGGLE$4, Default$a, DefaultType$a, Collapse, NAME$a, EVENT_KEY$6, DATA_API_KEY$3, ESCAPE_KEY$2, TAB_KEY$1, ARROW_UP_KEY$1, ARROW_DOWN_KEY$1, RIGHT_MOUSE_BUTTON, EVENT_HIDE$5, EVENT_HIDDEN$5, EVENT_SHOW$5, EVENT_SHOWN$5, EVENT_CLICK_DATA_API$3, EVENT_KEYDOWN_DATA_API, EVENT_KEYUP_DATA_API, CLASS_NAME_SHOW$6, CLASS_NAME_DROPUP, CLASS_NAME_DROPEND, CLASS_NAME_DROPSTART, CLASS_NAME_DROPUP_CENTER, CLASS_NAME_DROPDOWN_CENTER, SELECTOR_DATA_TOGGLE$3, SELECTOR_DATA_TOGGLE_SHOWN, SELECTOR_MENU, SELECTOR_NAVBAR, SELECTOR_NAVBAR_NAV, SELECTOR_VISIBLE_ITEMS, PLACEMENT_TOP, PLACEMENT_TOPEND, PLACEMENT_BOTTOM, PLACEMENT_BOTTOMEND, PLACEMENT_RIGHT, PLACEMENT_LEFT, PLACEMENT_TOPCENTER, PLACEMENT_BOTTOMCENTER, Default$9, DefaultType$9, Dropdown, NAME$9, CLASS_NAME_FADE$4, CLASS_NAME_SHOW$5, EVENT_MOUSEDOWN, Default$8, DefaultType$8, Backdrop, NAME$8, EVENT_KEY$5, EVENT_FOCUSIN$2, EVENT_KEYDOWN_TAB, TAB_KEY, TAB_NAV_FORWARD, TAB_NAV_BACKWARD, Default$7, DefaultType$7, FocusTrap, SELECTOR_FIXED_CONTENT, SELECTOR_STICKY_CONTENT, PROPERTY_PADDING, PROPERTY_MARGIN, ScrollBarHelper, NAME$7, EVENT_KEY$4, DATA_API_KEY$2, ESCAPE_KEY$1, EVENT_HIDE$4, EVENT_HIDE_PREVENTED$1, EVENT_HIDDEN$4, EVENT_SHOW$4, EVENT_SHOWN$4, EVENT_RESIZE$1, EVENT_CLICK_DISMISS, EVENT_MOUSEDOWN_DISMISS, EVENT_KEYDOWN_DISMISS$1, EVENT_CLICK_DATA_API$2, CLASS_NAME_OPEN, CLASS_NAME_FADE$3, CLASS_NAME_SHOW$4, CLASS_NAME_STATIC, OPEN_SELECTOR$1, SELECTOR_DIALOG, SELECTOR_MODAL_BODY, SELECTOR_DATA_TOGGLE$2, Default$6, DefaultType$6, Modal, NAME$6, EVENT_KEY$3, DATA_API_KEY$1, EVENT_LOAD_DATA_API$2, ESCAPE_KEY, CLASS_NAME_SHOW$3, CLASS_NAME_SHOWING$1, CLASS_NAME_HIDING, CLASS_NAME_BACKDROP, OPEN_SELECTOR, EVENT_SHOW$3, EVENT_SHOWN$3, EVENT_HIDE$3, EVENT_HIDE_PREVENTED, EVENT_HIDDEN$3, EVENT_RESIZE, EVENT_CLICK_DATA_API$1, EVENT_KEYDOWN_DISMISS, SELECTOR_DATA_TOGGLE$1, Default$5, DefaultType$5, Offcanvas, DefaultAllowlist, uriAttributes, SAFE_URL_PATTERN, allowedAttribute, NAME$5, Default$4, DefaultType$4, DefaultContentType, TemplateFactory, NAME$4, DISALLOWED_ATTRIBUTES, CLASS_NAME_FADE$2, CLASS_NAME_MODAL, CLASS_NAME_SHOW$2, SELECTOR_TOOLTIP_INNER, SELECTOR_MODAL, EVENT_MODAL_HIDE, TRIGGER_HOVER, TRIGGER_FOCUS, TRIGGER_CLICK, TRIGGER_MANUAL, EVENT_HIDE$2, EVENT_HIDDEN$2, EVENT_SHOW$2, EVENT_SHOWN$2, EVENT_INSERTED, EVENT_CLICK$1, EVENT_FOCUSIN$1, EVENT_FOCUSOUT$1, EVENT_MOUSEENTER, EVENT_MOUSELEAVE, AttachmentMap, Default$3, DefaultType$3, Tooltip, NAME$3, SELECTOR_TITLE, SELECTOR_CONTENT, Default$2, DefaultType$2, Popover, NAME$2, EVENT_KEY$2, DATA_API_KEY, EVENT_ACTIVATE, EVENT_CLICK, EVENT_LOAD_DATA_API$1, CLASS_NAME_DROPDOWN_ITEM, CLASS_NAME_ACTIVE$1, SELECTOR_DATA_SPY, SELECTOR_TARGET_LINKS, SELECTOR_NAV_LIST_GROUP, SELECTOR_NAV_LINKS, SELECTOR_LINK_ITEMS, SELECTOR_DROPDOWN, SELECTOR_DROPDOWN_TOGGLE$1, Default$1, DefaultType$1, ScrollSpy, NAME$1, EVENT_KEY$1, EVENT_HIDE$1, EVENT_HIDDEN$1, EVENT_SHOW$1, EVENT_SHOWN$1, EVENT_CLICK_DATA_API, EVENT_KEYDOWN, EVENT_LOAD_DATA_API, ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY, CLASS_NAME_ACTIVE, CLASS_NAME_FADE$1, CLASS_NAME_SHOW$1, CLASS_DROPDOWN, SELECTOR_DROPDOWN_TOGGLE, SELECTOR_DROPDOWN_MENU, NOT_SELECTOR_DROPDOWN_TOGGLE, SELECTOR_TAB_PANEL, SELECTOR_OUTER, SELECTOR_INNER, SELECTOR_DATA_TOGGLE, SELECTOR_INNER_ELEM, SELECTOR_DATA_TOGGLE_ACTIVE, Tab, NAME, EVENT_KEY, EVENT_MOUSEOVER, EVENT_MOUSEOUT, EVENT_FOCUSIN, EVENT_FOCUSOUT, EVENT_HIDE, EVENT_HIDDEN, EVENT_SHOW, EVENT_SHOWN, CLASS_NAME_FADE, CLASS_NAME_HIDE, CLASS_NAME_SHOW, CLASS_NAME_SHOWING, DefaultType, Default, Toast;
1792
+ var init_bootstrap_esm = __esmMin((() => {
1793
+ init_lib();
1794
+ elementMap = /* @__PURE__ */ new Map();
1795
+ Data = {
1796
+ set(element, key, instance) {
1797
+ if (!elementMap.has(element)) elementMap.set(element, /* @__PURE__ */ new Map());
1798
+ const instanceMap = elementMap.get(element);
1799
+ if (!instanceMap.has(key) && instanceMap.size !== 0) {
1800
+ console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
1801
+ return;
1802
+ }
1803
+ instanceMap.set(key, instance);
1804
+ },
1805
+ get(element, key) {
1806
+ if (elementMap.has(element)) return elementMap.get(element).get(key) || null;
1807
+ return null;
1808
+ },
1809
+ remove(element, key) {
1810
+ if (!elementMap.has(element)) return;
1811
+ const instanceMap = elementMap.get(element);
1812
+ instanceMap.delete(key);
1813
+ if (instanceMap.size === 0) elementMap.delete(element);
1814
+ }
1815
+ };
1816
+ MAX_UID = 1e6;
1817
+ MILLISECONDS_MULTIPLIER = 1e3;
1818
+ TRANSITION_END = "transitionend";
1819
+ parseSelector = (selector) => {
1820
+ if (selector && window.CSS && window.CSS.escape) selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
1821
+ return selector;
1822
+ };
1823
+ toType = (object) => {
1824
+ if (object === null || object === void 0) return `${object}`;
1825
+ return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
1826
+ };
1827
+ getUID = (prefix) => {
1828
+ do
1829
+ prefix += Math.floor(Math.random() * MAX_UID);
1830
+ while (document.getElementById(prefix));
1831
+ return prefix;
1832
+ };
1833
+ getTransitionDurationFromElement = (element) => {
1834
+ if (!element) return 0;
1835
+ let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
1836
+ if (!Number.parseFloat(transitionDuration) && !Number.parseFloat(transitionDelay)) return 0;
1837
+ transitionDuration = transitionDuration.split(",")[0];
1838
+ transitionDelay = transitionDelay.split(",")[0];
1839
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
1840
+ };
1841
+ triggerTransitionEnd = (element) => {
1842
+ element.dispatchEvent(new Event(TRANSITION_END));
1843
+ };
1844
+ isElement = (object) => {
1845
+ if (!object || typeof object !== "object") return false;
1846
+ if (typeof object.jquery !== "undefined") object = object[0];
1847
+ return typeof object.nodeType !== "undefined";
1848
+ };
1849
+ getElement = (object) => {
1850
+ if (isElement(object)) return object.jquery ? object[0] : object;
1851
+ if (typeof object === "string" && object.length > 0) return document.querySelector(parseSelector(object));
1852
+ return null;
1853
+ };
1854
+ isVisible = (element) => {
1855
+ if (!isElement(element) || element.getClientRects().length === 0) return false;
1856
+ const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible";
1857
+ const closedDetails = element.closest("details:not([open])");
1858
+ if (!closedDetails) return elementIsVisible;
1859
+ if (closedDetails !== element) {
1860
+ const summary = element.closest("summary");
1861
+ if (summary && summary.parentNode !== closedDetails) return false;
1862
+ if (summary === null) return false;
1863
+ }
1864
+ return elementIsVisible;
1865
+ };
1866
+ isDisabled = (element) => {
1867
+ if (!element || element.nodeType !== Node.ELEMENT_NODE) return true;
1868
+ if (element.classList.contains("disabled")) return true;
1869
+ if (typeof element.disabled !== "undefined") return element.disabled;
1870
+ return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false";
1871
+ };
1872
+ findShadowRoot = (element) => {
1873
+ if (!document.documentElement.attachShadow) return null;
1874
+ if (typeof element.getRootNode === "function") {
1875
+ const root = element.getRootNode();
1876
+ return root instanceof ShadowRoot ? root : null;
1877
+ }
1878
+ if (element instanceof ShadowRoot) return element;
1879
+ if (!element.parentNode) return null;
1880
+ return findShadowRoot(element.parentNode);
1881
+ };
1882
+ noop = () => {};
1883
+ reflow = (element) => {
1884
+ element.offsetHeight;
1885
+ };
1886
+ getjQuery = () => {
1887
+ if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) return window.jQuery;
1888
+ return null;
1889
+ };
1890
+ DOMContentLoadedCallbacks = [];
1891
+ onDOMContentLoaded = (callback) => {
1892
+ if (document.readyState === "loading") {
1893
+ if (!DOMContentLoadedCallbacks.length) document.addEventListener("DOMContentLoaded", () => {
1894
+ for (const callback of DOMContentLoadedCallbacks) callback();
1895
+ });
1896
+ DOMContentLoadedCallbacks.push(callback);
1897
+ } else callback();
1898
+ };
1899
+ isRTL = () => document.documentElement.dir === "rtl";
1900
+ defineJQueryPlugin = (plugin) => {
1901
+ onDOMContentLoaded(() => {
1902
+ const $ = getjQuery();
1903
+ /* istanbul ignore if */
1904
+ if ($) {
1905
+ const name = plugin.NAME;
1906
+ const JQUERY_NO_CONFLICT = $.fn[name];
1907
+ $.fn[name] = plugin.jQueryInterface;
1908
+ $.fn[name].Constructor = plugin;
1909
+ $.fn[name].noConflict = () => {
1910
+ $.fn[name] = JQUERY_NO_CONFLICT;
1911
+ return plugin.jQueryInterface;
1912
+ };
1913
+ }
1914
+ });
1915
+ };
1916
+ execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
1917
+ return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue;
1918
+ };
1919
+ executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
1920
+ if (!waitForTransition) {
1921
+ execute(callback);
1922
+ return;
1923
+ }
1924
+ const emulatedDuration = getTransitionDurationFromElement(transitionElement) + 5;
1925
+ let called = false;
1926
+ const handler = ({ target }) => {
1927
+ if (target !== transitionElement) return;
1928
+ called = true;
1929
+ transitionElement.removeEventListener(TRANSITION_END, handler);
1930
+ execute(callback);
1931
+ };
1932
+ transitionElement.addEventListener(TRANSITION_END, handler);
1933
+ setTimeout(() => {
1934
+ if (!called) triggerTransitionEnd(transitionElement);
1935
+ }, emulatedDuration);
1936
+ };
1937
+ getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
1938
+ const listLength = list.length;
1939
+ let index = list.indexOf(activeElement);
1940
+ if (index === -1) return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
1941
+ index += shouldGetNext ? 1 : -1;
1942
+ if (isCycleAllowed) index = (index + listLength) % listLength;
1943
+ return list[Math.max(0, Math.min(index, listLength - 1))];
1944
+ };
1945
+ namespaceRegex = /[^.]*(?=\..*)\.|.*/;
1946
+ stripNameRegex = /\..*/;
1947
+ stripUidRegex = /::\d+$/;
1948
+ eventRegistry = {};
1949
+ uidEvent = 1;
1950
+ customEvents = {
1951
+ mouseenter: "mouseover",
1952
+ mouseleave: "mouseout"
1953
+ };
1954
+ nativeEvents = new Set([
1955
+ "click",
1956
+ "dblclick",
1957
+ "mouseup",
1958
+ "mousedown",
1959
+ "contextmenu",
1960
+ "mousewheel",
1961
+ "DOMMouseScroll",
1962
+ "mouseover",
1963
+ "mouseout",
1964
+ "mousemove",
1965
+ "selectstart",
1966
+ "selectend",
1967
+ "keydown",
1968
+ "keypress",
1969
+ "keyup",
1970
+ "orientationchange",
1971
+ "touchstart",
1972
+ "touchmove",
1973
+ "touchend",
1974
+ "touchcancel",
1975
+ "pointerdown",
1976
+ "pointermove",
1977
+ "pointerup",
1978
+ "pointerleave",
1979
+ "pointercancel",
1980
+ "gesturestart",
1981
+ "gesturechange",
1982
+ "gestureend",
1983
+ "focus",
1984
+ "blur",
1985
+ "change",
1986
+ "reset",
1987
+ "select",
1988
+ "submit",
1989
+ "focusin",
1990
+ "focusout",
1991
+ "load",
1992
+ "unload",
1993
+ "beforeunload",
1994
+ "resize",
1995
+ "move",
1996
+ "DOMContentLoaded",
1997
+ "readystatechange",
1998
+ "error",
1999
+ "abort",
2000
+ "scroll"
2001
+ ]);
2002
+ EventHandler = {
2003
+ on(element, event, handler, delegationFunction) {
2004
+ addHandler(element, event, handler, delegationFunction, false);
2005
+ },
2006
+ one(element, event, handler, delegationFunction) {
2007
+ addHandler(element, event, handler, delegationFunction, true);
2008
+ },
2009
+ off(element, originalTypeEvent, handler, delegationFunction) {
2010
+ if (typeof originalTypeEvent !== "string" || !element) return;
2011
+ const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
2012
+ const inNamespace = typeEvent !== originalTypeEvent;
2013
+ const events = getElementEvents(element);
2014
+ const storeElementEvent = events[typeEvent] || {};
2015
+ const isNamespace = originalTypeEvent.startsWith(".");
2016
+ if (typeof callable !== "undefined") {
2017
+ if (!Object.keys(storeElementEvent).length) return;
2018
+ removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
2019
+ return;
2020
+ }
2021
+ if (isNamespace) for (const elementEvent of Object.keys(events)) removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
2022
+ for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
2023
+ const handlerKey = keyHandlers.replace(stripUidRegex, "");
2024
+ if (!inNamespace || originalTypeEvent.includes(handlerKey)) removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
2025
+ }
2026
+ },
2027
+ trigger(element, event, args) {
2028
+ if (typeof event !== "string" || !element) return null;
2029
+ const $ = getjQuery();
2030
+ const inNamespace = event !== getTypeEvent(event);
2031
+ let jQueryEvent = null;
2032
+ let bubbles = true;
2033
+ let nativeDispatch = true;
2034
+ let defaultPrevented = false;
2035
+ if (inNamespace && $) {
2036
+ jQueryEvent = $.Event(event, args);
2037
+ $(element).trigger(jQueryEvent);
2038
+ bubbles = !jQueryEvent.isPropagationStopped();
2039
+ nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
2040
+ defaultPrevented = jQueryEvent.isDefaultPrevented();
2041
+ }
2042
+ const evt = hydrateObj(new Event(event, {
2043
+ bubbles,
2044
+ cancelable: true
2045
+ }), args);
2046
+ if (defaultPrevented) evt.preventDefault();
2047
+ if (nativeDispatch) element.dispatchEvent(evt);
2048
+ if (evt.defaultPrevented && jQueryEvent) jQueryEvent.preventDefault();
2049
+ return evt;
2050
+ }
2051
+ };
2052
+ Manipulator = {
2053
+ setDataAttribute(element, key, value) {
2054
+ element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
2055
+ },
2056
+ removeDataAttribute(element, key) {
2057
+ element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
2058
+ },
2059
+ getDataAttributes(element) {
2060
+ if (!element) return {};
2061
+ const attributes = {};
2062
+ const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig"));
2063
+ for (const key of bsKeys) {
2064
+ let pureKey = key.replace(/^bs/, "");
2065
+ pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);
2066
+ attributes[pureKey] = normalizeData(element.dataset[key]);
2067
+ }
2068
+ return attributes;
2069
+ },
2070
+ getDataAttribute(element, key) {
2071
+ return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
2072
+ }
2073
+ };
2074
+ Config = class {
2075
+ static get Default() {
2076
+ return {};
2077
+ }
2078
+ static get DefaultType() {
2079
+ return {};
2080
+ }
2081
+ static get NAME() {
2082
+ throw new Error("You have to implement the static method \"NAME\", for each component!");
2083
+ }
2084
+ _getConfig(config) {
2085
+ config = this._mergeConfigObj(config);
2086
+ config = this._configAfterMerge(config);
2087
+ this._typeCheckConfig(config);
2088
+ return config;
2089
+ }
2090
+ _configAfterMerge(config) {
2091
+ return config;
2092
+ }
2093
+ _mergeConfigObj(config, element) {
2094
+ const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, "config") : {};
2095
+ return {
2096
+ ...this.constructor.Default,
2097
+ ...typeof jsonConfig === "object" ? jsonConfig : {},
2098
+ ...isElement(element) ? Manipulator.getDataAttributes(element) : {},
2099
+ ...typeof config === "object" ? config : {}
2100
+ };
2101
+ }
2102
+ _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
2103
+ for (const [property, expectedTypes] of Object.entries(configTypes)) {
2104
+ const value = config[property];
2105
+ const valueType = isElement(value) ? "element" : toType(value);
2106
+ if (!new RegExp(expectedTypes).test(valueType)) throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
2107
+ }
2108
+ }
2109
+ };
2110
+ VERSION = "5.3.8";
2111
+ BaseComponent = class extends Config {
2112
+ constructor(element, config) {
2113
+ super();
2114
+ element = getElement(element);
2115
+ if (!element) return;
2116
+ this._element = element;
2117
+ this._config = this._getConfig(config);
2118
+ Data.set(this._element, this.constructor.DATA_KEY, this);
2119
+ }
2120
+ dispose() {
2121
+ Data.remove(this._element, this.constructor.DATA_KEY);
2122
+ EventHandler.off(this._element, this.constructor.EVENT_KEY);
2123
+ for (const propertyName of Object.getOwnPropertyNames(this)) this[propertyName] = null;
2124
+ }
2125
+ _queueCallback(callback, element, isAnimated = true) {
2126
+ executeAfterTransition(callback, element, isAnimated);
2127
+ }
2128
+ _getConfig(config) {
2129
+ config = this._mergeConfigObj(config, this._element);
2130
+ config = this._configAfterMerge(config);
2131
+ this._typeCheckConfig(config);
2132
+ return config;
2133
+ }
2134
+ static getInstance(element) {
2135
+ return Data.get(getElement(element), this.DATA_KEY);
2136
+ }
2137
+ static getOrCreateInstance(element, config = {}) {
2138
+ return this.getInstance(element) || new this(element, typeof config === "object" ? config : null);
2139
+ }
2140
+ static get VERSION() {
2141
+ return VERSION;
2142
+ }
2143
+ static get DATA_KEY() {
2144
+ return `bs.${this.NAME}`;
2145
+ }
2146
+ static get EVENT_KEY() {
2147
+ return `.${this.DATA_KEY}`;
2148
+ }
2149
+ static eventName(name) {
2150
+ return `${name}${this.EVENT_KEY}`;
2151
+ }
2152
+ };
2153
+ getSelector = (element) => {
2154
+ let selector = element.getAttribute("data-bs-target");
2155
+ if (!selector || selector === "#") {
2156
+ let hrefAttribute = element.getAttribute("href");
2157
+ if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) return null;
2158
+ if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) hrefAttribute = `#${hrefAttribute.split("#")[1]}`;
2159
+ selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null;
2160
+ }
2161
+ return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null;
2162
+ };
2163
+ SelectorEngine = {
2164
+ find(selector, element = document.documentElement) {
2165
+ return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
2166
+ },
2167
+ findOne(selector, element = document.documentElement) {
2168
+ return Element.prototype.querySelector.call(element, selector);
2169
+ },
2170
+ children(element, selector) {
2171
+ return [].concat(...element.children).filter((child) => child.matches(selector));
2172
+ },
2173
+ parents(element, selector) {
2174
+ const parents = [];
2175
+ let ancestor = element.parentNode.closest(selector);
2176
+ while (ancestor) {
2177
+ parents.push(ancestor);
2178
+ ancestor = ancestor.parentNode.closest(selector);
2179
+ }
2180
+ return parents;
2181
+ },
2182
+ prev(element, selector) {
2183
+ let previous = element.previousElementSibling;
2184
+ while (previous) {
2185
+ if (previous.matches(selector)) return [previous];
2186
+ previous = previous.previousElementSibling;
2187
+ }
2188
+ return [];
2189
+ },
2190
+ next(element, selector) {
2191
+ let next = element.nextElementSibling;
2192
+ while (next) {
2193
+ if (next.matches(selector)) return [next];
2194
+ next = next.nextElementSibling;
2195
+ }
2196
+ return [];
2197
+ },
2198
+ focusableChildren(element) {
2199
+ const focusables = [
2200
+ "a",
2201
+ "button",
2202
+ "input",
2203
+ "textarea",
2204
+ "select",
2205
+ "details",
2206
+ "[tabindex]",
2207
+ "[contenteditable=\"true\"]"
2208
+ ].map((selector) => `${selector}:not([tabindex^="-"])`).join(",");
2209
+ return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));
2210
+ },
2211
+ getSelectorFromElement(element) {
2212
+ const selector = getSelector(element);
2213
+ if (selector) return SelectorEngine.findOne(selector) ? selector : null;
2214
+ return null;
2215
+ },
2216
+ getElementFromSelector(element) {
2217
+ const selector = getSelector(element);
2218
+ return selector ? SelectorEngine.findOne(selector) : null;
2219
+ },
2220
+ getMultipleElementsFromSelector(element) {
2221
+ const selector = getSelector(element);
2222
+ return selector ? SelectorEngine.find(selector) : [];
2223
+ }
2224
+ };
2225
+ enableDismissTrigger = (component, method = "hide") => {
2226
+ const clickEvent = `click.dismiss${component.EVENT_KEY}`;
2227
+ const name = component.NAME;
2228
+ EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) {
2229
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
2230
+ if (isDisabled(this)) return;
2231
+ const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
2232
+ component.getOrCreateInstance(target)[method]();
2233
+ });
2234
+ };
2235
+ NAME$f = "alert";
2236
+ EVENT_KEY$b = `.bs.alert`;
2237
+ EVENT_CLOSE = `close${EVENT_KEY$b}`;
2238
+ EVENT_CLOSED = `closed${EVENT_KEY$b}`;
2239
+ CLASS_NAME_FADE$5 = "fade";
2240
+ CLASS_NAME_SHOW$8 = "show";
2241
+ Alert = class Alert extends BaseComponent {
2242
+ static get NAME() {
2243
+ return NAME$f;
2244
+ }
2245
+ close() {
2246
+ if (EventHandler.trigger(this._element, EVENT_CLOSE).defaultPrevented) return;
2247
+ this._element.classList.remove(CLASS_NAME_SHOW$8);
2248
+ const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
2249
+ this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
2250
+ }
2251
+ _destroyElement() {
2252
+ this._element.remove();
2253
+ EventHandler.trigger(this._element, EVENT_CLOSED);
2254
+ this.dispose();
2255
+ }
2256
+ static jQueryInterface(config) {
2257
+ return this.each(function() {
2258
+ const data = Alert.getOrCreateInstance(this);
2259
+ if (typeof config !== "string") return;
2260
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") throw new TypeError(`No method named "${config}"`);
2261
+ data[config](this);
2262
+ });
2263
+ }
2264
+ };
2265
+ /**
2266
+ * Data API implementation
2267
+ */
2268
+ enableDismissTrigger(Alert, "close");
2269
+ /**
2270
+ * jQuery
2271
+ */
2272
+ defineJQueryPlugin(Alert);
2273
+ NAME$e = "button";
2274
+ EVENT_KEY$a = `.bs.button`;
2275
+ DATA_API_KEY$6 = ".data-api";
2276
+ CLASS_NAME_ACTIVE$3 = "active";
2277
+ SELECTOR_DATA_TOGGLE$5 = "[data-bs-toggle=\"button\"]";
2278
+ EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
2279
+ Button = class Button extends BaseComponent {
2280
+ static get NAME() {
2281
+ return NAME$e;
2282
+ }
2283
+ toggle() {
2284
+ this._element.setAttribute("aria-pressed", this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
2285
+ }
2286
+ static jQueryInterface(config) {
2287
+ return this.each(function() {
2288
+ const data = Button.getOrCreateInstance(this);
2289
+ if (config === "toggle") data[config]();
2290
+ });
2291
+ }
2292
+ };
2293
+ /**
2294
+ * Data API implementation
2295
+ */
2296
+ EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event) => {
2297
+ event.preventDefault();
2298
+ const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
2299
+ Button.getOrCreateInstance(button).toggle();
2300
+ });
2301
+ /**
2302
+ * jQuery
2303
+ */
2304
+ defineJQueryPlugin(Button);
2305
+ NAME$d = "swipe";
2306
+ EVENT_KEY$9 = ".bs.swipe";
2307
+ EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
2308
+ EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
2309
+ EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
2310
+ EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
2311
+ EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
2312
+ POINTER_TYPE_TOUCH = "touch";
2313
+ POINTER_TYPE_PEN = "pen";
2314
+ CLASS_NAME_POINTER_EVENT = "pointer-event";
2315
+ SWIPE_THRESHOLD = 40;
2316
+ Default$c = {
2317
+ endCallback: null,
2318
+ leftCallback: null,
2319
+ rightCallback: null
2320
+ };
2321
+ DefaultType$c = {
2322
+ endCallback: "(function|null)",
2323
+ leftCallback: "(function|null)",
2324
+ rightCallback: "(function|null)"
2325
+ };
2326
+ Swipe = class Swipe extends Config {
2327
+ constructor(element, config) {
2328
+ super();
2329
+ this._element = element;
2330
+ if (!element || !Swipe.isSupported()) return;
2331
+ this._config = this._getConfig(config);
2332
+ this._deltaX = 0;
2333
+ this._supportPointerEvents = Boolean(window.PointerEvent);
2334
+ this._initEvents();
2335
+ }
2336
+ static get Default() {
2337
+ return Default$c;
2338
+ }
2339
+ static get DefaultType() {
2340
+ return DefaultType$c;
2341
+ }
2342
+ static get NAME() {
2343
+ return NAME$d;
2344
+ }
2345
+ dispose() {
2346
+ EventHandler.off(this._element, EVENT_KEY$9);
2347
+ }
2348
+ _start(event) {
2349
+ if (!this._supportPointerEvents) {
2350
+ this._deltaX = event.touches[0].clientX;
2351
+ return;
2352
+ }
2353
+ if (this._eventIsPointerPenTouch(event)) this._deltaX = event.clientX;
2354
+ }
2355
+ _end(event) {
2356
+ if (this._eventIsPointerPenTouch(event)) this._deltaX = event.clientX - this._deltaX;
2357
+ this._handleSwipe();
2358
+ execute(this._config.endCallback);
2359
+ }
2360
+ _move(event) {
2361
+ this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
2362
+ }
2363
+ _handleSwipe() {
2364
+ const absDeltaX = Math.abs(this._deltaX);
2365
+ if (absDeltaX <= SWIPE_THRESHOLD) return;
2366
+ const direction = absDeltaX / this._deltaX;
2367
+ this._deltaX = 0;
2368
+ if (!direction) return;
2369
+ execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
2370
+ }
2371
+ _initEvents() {
2372
+ if (this._supportPointerEvents) {
2373
+ EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event));
2374
+ EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event));
2375
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
2376
+ } else {
2377
+ EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event));
2378
+ EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event));
2379
+ EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event));
2380
+ }
2381
+ }
2382
+ _eventIsPointerPenTouch(event) {
2383
+ return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
2384
+ }
2385
+ static isSupported() {
2386
+ return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
2387
+ }
2388
+ };
2389
+ NAME$c = "carousel";
2390
+ EVENT_KEY$8 = `.bs.carousel`;
2391
+ DATA_API_KEY$5 = ".data-api";
2392
+ ARROW_LEFT_KEY$1 = "ArrowLeft";
2393
+ ARROW_RIGHT_KEY$1 = "ArrowRight";
2394
+ TOUCHEVENT_COMPAT_WAIT = 500;
2395
+ ORDER_NEXT = "next";
2396
+ ORDER_PREV = "prev";
2397
+ DIRECTION_LEFT = "left";
2398
+ DIRECTION_RIGHT = "right";
2399
+ EVENT_SLIDE = `slide${EVENT_KEY$8}`;
2400
+ EVENT_SLID = `slid${EVENT_KEY$8}`;
2401
+ EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
2402
+ EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
2403
+ EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
2404
+ EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
2405
+ EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
2406
+ EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
2407
+ CLASS_NAME_CAROUSEL = "carousel";
2408
+ CLASS_NAME_ACTIVE$2 = "active";
2409
+ CLASS_NAME_SLIDE = "slide";
2410
+ CLASS_NAME_END = "carousel-item-end";
2411
+ CLASS_NAME_START = "carousel-item-start";
2412
+ CLASS_NAME_NEXT = "carousel-item-next";
2413
+ CLASS_NAME_PREV = "carousel-item-prev";
2414
+ SELECTOR_ACTIVE = ".active";
2415
+ SELECTOR_ITEM = ".carousel-item";
2416
+ SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
2417
+ SELECTOR_ITEM_IMG = ".carousel-item img";
2418
+ SELECTOR_INDICATORS = ".carousel-indicators";
2419
+ SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to]";
2420
+ SELECTOR_DATA_RIDE = "[data-bs-ride=\"carousel\"]";
2421
+ KEY_TO_DIRECTION = {
2422
+ [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
2423
+ [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
2424
+ };
2425
+ Default$b = {
2426
+ interval: 5e3,
2427
+ keyboard: true,
2428
+ pause: "hover",
2429
+ ride: false,
2430
+ touch: true,
2431
+ wrap: true
2432
+ };
2433
+ DefaultType$b = {
2434
+ interval: "(number|boolean)",
2435
+ keyboard: "boolean",
2436
+ pause: "(string|boolean)",
2437
+ ride: "(boolean|string)",
2438
+ touch: "boolean",
2439
+ wrap: "boolean"
2440
+ };
2441
+ Carousel = class Carousel extends BaseComponent {
2442
+ constructor(element, config) {
2443
+ super(element, config);
2444
+ this._interval = null;
2445
+ this._activeElement = null;
2446
+ this._isSliding = false;
2447
+ this.touchTimeout = null;
2448
+ this._swipeHelper = null;
2449
+ this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
2450
+ this._addEventListeners();
2451
+ if (this._config.ride === CLASS_NAME_CAROUSEL) this.cycle();
2452
+ }
2453
+ static get Default() {
2454
+ return Default$b;
2455
+ }
2456
+ static get DefaultType() {
2457
+ return DefaultType$b;
2458
+ }
2459
+ static get NAME() {
2460
+ return NAME$c;
2461
+ }
2462
+ next() {
2463
+ this._slide(ORDER_NEXT);
2464
+ }
2465
+ nextWhenVisible() {
2466
+ if (!document.hidden && isVisible(this._element)) this.next();
2467
+ }
2468
+ prev() {
2469
+ this._slide(ORDER_PREV);
2470
+ }
2471
+ pause() {
2472
+ if (this._isSliding) triggerTransitionEnd(this._element);
2473
+ this._clearInterval();
2474
+ }
2475
+ cycle() {
2476
+ this._clearInterval();
2477
+ this._updateInterval();
2478
+ this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
2479
+ }
2480
+ _maybeEnableCycle() {
2481
+ if (!this._config.ride) return;
2482
+ if (this._isSliding) {
2483
+ EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
2484
+ return;
2485
+ }
2486
+ this.cycle();
2487
+ }
2488
+ to(index) {
2489
+ const items = this._getItems();
2490
+ if (index > items.length - 1 || index < 0) return;
2491
+ if (this._isSliding) {
2492
+ EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
2493
+ return;
2494
+ }
2495
+ const activeIndex = this._getItemIndex(this._getActive());
2496
+ if (activeIndex === index) return;
2497
+ const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
2498
+ this._slide(order, items[index]);
2499
+ }
2500
+ dispose() {
2501
+ if (this._swipeHelper) this._swipeHelper.dispose();
2502
+ super.dispose();
2503
+ }
2504
+ _configAfterMerge(config) {
2505
+ config.defaultInterval = config.interval;
2506
+ return config;
2507
+ }
2508
+ _addEventListeners() {
2509
+ if (this._config.keyboard) EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event));
2510
+ if (this._config.pause === "hover") {
2511
+ EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
2512
+ EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
2513
+ }
2514
+ if (this._config.touch && Swipe.isSupported()) this._addTouchEventListeners();
2515
+ }
2516
+ _addTouchEventListeners() {
2517
+ for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());
2518
+ const endCallBack = () => {
2519
+ if (this._config.pause !== "hover") return;
2520
+ this.pause();
2521
+ if (this.touchTimeout) clearTimeout(this.touchTimeout);
2522
+ this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
2523
+ };
2524
+ const swipeConfig = {
2525
+ leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
2526
+ rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
2527
+ endCallback: endCallBack
2528
+ };
2529
+ this._swipeHelper = new Swipe(this._element, swipeConfig);
2530
+ }
2531
+ _keydown(event) {
2532
+ if (/input|textarea/i.test(event.target.tagName)) return;
2533
+ const direction = KEY_TO_DIRECTION[event.key];
2534
+ if (direction) {
2535
+ event.preventDefault();
2536
+ this._slide(this._directionToOrder(direction));
2537
+ }
2538
+ }
2539
+ _getItemIndex(element) {
2540
+ return this._getItems().indexOf(element);
2541
+ }
2542
+ _setActiveIndicatorElement(index) {
2543
+ if (!this._indicatorsElement) return;
2544
+ const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
2545
+ activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
2546
+ activeIndicator.removeAttribute("aria-current");
2547
+ const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
2548
+ if (newActiveIndicator) {
2549
+ newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
2550
+ newActiveIndicator.setAttribute("aria-current", "true");
2551
+ }
2552
+ }
2553
+ _updateInterval() {
2554
+ const element = this._activeElement || this._getActive();
2555
+ if (!element) return;
2556
+ const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval"), 10);
2557
+ this._config.interval = elementInterval || this._config.defaultInterval;
2558
+ }
2559
+ _slide(order, element = null) {
2560
+ if (this._isSliding) return;
2561
+ const activeElement = this._getActive();
2562
+ const isNext = order === ORDER_NEXT;
2563
+ const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
2564
+ if (nextElement === activeElement) return;
2565
+ const nextElementIndex = this._getItemIndex(nextElement);
2566
+ const triggerEvent = (eventName) => {
2567
+ return EventHandler.trigger(this._element, eventName, {
2568
+ relatedTarget: nextElement,
2569
+ direction: this._orderToDirection(order),
2570
+ from: this._getItemIndex(activeElement),
2571
+ to: nextElementIndex
2572
+ });
2573
+ };
2574
+ if (triggerEvent(EVENT_SLIDE).defaultPrevented) return;
2575
+ if (!activeElement || !nextElement) return;
2576
+ const isCycling = Boolean(this._interval);
2577
+ this.pause();
2578
+ this._isSliding = true;
2579
+ this._setActiveIndicatorElement(nextElementIndex);
2580
+ this._activeElement = nextElement;
2581
+ const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
2582
+ const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
2583
+ nextElement.classList.add(orderClassName);
2584
+ reflow(nextElement);
2585
+ activeElement.classList.add(directionalClassName);
2586
+ nextElement.classList.add(directionalClassName);
2587
+ const completeCallBack = () => {
2588
+ nextElement.classList.remove(directionalClassName, orderClassName);
2589
+ nextElement.classList.add(CLASS_NAME_ACTIVE$2);
2590
+ activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
2591
+ this._isSliding = false;
2592
+ triggerEvent(EVENT_SLID);
2593
+ };
2594
+ this._queueCallback(completeCallBack, activeElement, this._isAnimated());
2595
+ if (isCycling) this.cycle();
2596
+ }
2597
+ _isAnimated() {
2598
+ return this._element.classList.contains(CLASS_NAME_SLIDE);
2599
+ }
2600
+ _getActive() {
2601
+ return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
2602
+ }
2603
+ _getItems() {
2604
+ return SelectorEngine.find(SELECTOR_ITEM, this._element);
2605
+ }
2606
+ _clearInterval() {
2607
+ if (this._interval) {
2608
+ clearInterval(this._interval);
2609
+ this._interval = null;
2610
+ }
2611
+ }
2612
+ _directionToOrder(direction) {
2613
+ if (isRTL()) return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
2614
+ return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
2615
+ }
2616
+ _orderToDirection(order) {
2617
+ if (isRTL()) return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
2618
+ return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
2619
+ }
2620
+ static jQueryInterface(config) {
2621
+ return this.each(function() {
2622
+ const data = Carousel.getOrCreateInstance(this, config);
2623
+ if (typeof config === "number") {
2624
+ data.to(config);
2625
+ return;
2626
+ }
2627
+ if (typeof config === "string") {
2628
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") throw new TypeError(`No method named "${config}"`);
2629
+ data[config]();
2630
+ }
2631
+ });
2632
+ }
2633
+ };
2634
+ /**
2635
+ * Data API implementation
2636
+ */
2637
+ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) {
2638
+ const target = SelectorEngine.getElementFromSelector(this);
2639
+ if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) return;
2640
+ event.preventDefault();
2641
+ const carousel = Carousel.getOrCreateInstance(target);
2642
+ const slideIndex = this.getAttribute("data-bs-slide-to");
2643
+ if (slideIndex) {
2644
+ carousel.to(slideIndex);
2645
+ carousel._maybeEnableCycle();
2646
+ return;
2647
+ }
2648
+ if (Manipulator.getDataAttribute(this, "slide") === "next") {
2649
+ carousel.next();
2650
+ carousel._maybeEnableCycle();
2651
+ return;
2652
+ }
2653
+ carousel.prev();
2654
+ carousel._maybeEnableCycle();
2655
+ });
2656
+ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
2657
+ const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
2658
+ for (const carousel of carousels) Carousel.getOrCreateInstance(carousel);
2659
+ });
2660
+ /**
2661
+ * jQuery
2662
+ */
2663
+ defineJQueryPlugin(Carousel);
2664
+ NAME$b = "collapse";
2665
+ EVENT_KEY$7 = `.bs.collapse`;
2666
+ DATA_API_KEY$4 = ".data-api";
2667
+ EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
2668
+ EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
2669
+ EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
2670
+ EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
2671
+ EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
2672
+ CLASS_NAME_SHOW$7 = "show";
2673
+ CLASS_NAME_COLLAPSE = "collapse";
2674
+ CLASS_NAME_COLLAPSING = "collapsing";
2675
+ CLASS_NAME_COLLAPSED = "collapsed";
2676
+ CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
2677
+ CLASS_NAME_HORIZONTAL = "collapse-horizontal";
2678
+ WIDTH = "width";
2679
+ HEIGHT = "height";
2680
+ SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing";
2681
+ SELECTOR_DATA_TOGGLE$4 = "[data-bs-toggle=\"collapse\"]";
2682
+ Default$a = {
2683
+ parent: null,
2684
+ toggle: true
2685
+ };
2686
+ DefaultType$a = {
2687
+ parent: "(null|element)",
2688
+ toggle: "boolean"
2689
+ };
2690
+ Collapse = class Collapse extends BaseComponent {
2691
+ constructor(element, config) {
2692
+ super(element, config);
2693
+ this._isTransitioning = false;
2694
+ this._triggerArray = [];
2695
+ const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
2696
+ for (const elem of toggleList) {
2697
+ const selector = SelectorEngine.getSelectorFromElement(elem);
2698
+ const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element);
2699
+ if (selector !== null && filterElement.length) this._triggerArray.push(elem);
2700
+ }
2701
+ this._initializeChildren();
2702
+ if (!this._config.parent) this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
2703
+ if (this._config.toggle) this.toggle();
2704
+ }
2705
+ static get Default() {
2706
+ return Default$a;
2707
+ }
2708
+ static get DefaultType() {
2709
+ return DefaultType$a;
2710
+ }
2711
+ static get NAME() {
2712
+ return NAME$b;
2713
+ }
2714
+ toggle() {
2715
+ if (this._isShown()) this.hide();
2716
+ else this.show();
2717
+ }
2718
+ show() {
2719
+ if (this._isTransitioning || this._isShown()) return;
2720
+ let activeChildren = [];
2721
+ if (this._config.parent) activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => Collapse.getOrCreateInstance(element, { toggle: false }));
2722
+ if (activeChildren.length && activeChildren[0]._isTransitioning) return;
2723
+ if (EventHandler.trigger(this._element, EVENT_SHOW$6).defaultPrevented) return;
2724
+ for (const activeInstance of activeChildren) activeInstance.hide();
2725
+ const dimension = this._getDimension();
2726
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
2727
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
2728
+ this._element.style[dimension] = 0;
2729
+ this._addAriaAndCollapsedClass(this._triggerArray, true);
2730
+ this._isTransitioning = true;
2731
+ const complete = () => {
2732
+ this._isTransitioning = false;
2733
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
2734
+ this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
2735
+ this._element.style[dimension] = "";
2736
+ EventHandler.trigger(this._element, EVENT_SHOWN$6);
2737
+ };
2738
+ const scrollSize = `scroll${dimension[0].toUpperCase() + dimension.slice(1)}`;
2739
+ this._queueCallback(complete, this._element, true);
2740
+ this._element.style[dimension] = `${this._element[scrollSize]}px`;
2741
+ }
2742
+ hide() {
2743
+ if (this._isTransitioning || !this._isShown()) return;
2744
+ if (EventHandler.trigger(this._element, EVENT_HIDE$6).defaultPrevented) return;
2745
+ const dimension = this._getDimension();
2746
+ this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
2747
+ reflow(this._element);
2748
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
2749
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
2750
+ for (const trigger of this._triggerArray) {
2751
+ const element = SelectorEngine.getElementFromSelector(trigger);
2752
+ if (element && !this._isShown(element)) this._addAriaAndCollapsedClass([trigger], false);
2753
+ }
2754
+ this._isTransitioning = true;
2755
+ const complete = () => {
2756
+ this._isTransitioning = false;
2757
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
2758
+ this._element.classList.add(CLASS_NAME_COLLAPSE);
2759
+ EventHandler.trigger(this._element, EVENT_HIDDEN$6);
2760
+ };
2761
+ this._element.style[dimension] = "";
2762
+ this._queueCallback(complete, this._element, true);
2763
+ }
2764
+ _isShown(element = this._element) {
2765
+ return element.classList.contains(CLASS_NAME_SHOW$7);
2766
+ }
2767
+ _configAfterMerge(config) {
2768
+ config.toggle = Boolean(config.toggle);
2769
+ config.parent = getElement(config.parent);
2770
+ return config;
2771
+ }
2772
+ _getDimension() {
2773
+ return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
2774
+ }
2775
+ _initializeChildren() {
2776
+ if (!this._config.parent) return;
2777
+ const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
2778
+ for (const element of children) {
2779
+ const selected = SelectorEngine.getElementFromSelector(element);
2780
+ if (selected) this._addAriaAndCollapsedClass([element], this._isShown(selected));
2781
+ }
2782
+ }
2783
+ _getFirstLevelChildren(selector) {
2784
+ const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
2785
+ return SelectorEngine.find(selector, this._config.parent).filter((element) => !children.includes(element));
2786
+ }
2787
+ _addAriaAndCollapsedClass(triggerArray, isOpen) {
2788
+ if (!triggerArray.length) return;
2789
+ for (const element of triggerArray) {
2790
+ element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
2791
+ element.setAttribute("aria-expanded", isOpen);
2792
+ }
2793
+ }
2794
+ static jQueryInterface(config) {
2795
+ const _config = {};
2796
+ if (typeof config === "string" && /show|hide/.test(config)) _config.toggle = false;
2797
+ return this.each(function() {
2798
+ const data = Collapse.getOrCreateInstance(this, _config);
2799
+ if (typeof config === "string") {
2800
+ if (typeof data[config] === "undefined") throw new TypeError(`No method named "${config}"`);
2801
+ data[config]();
2802
+ }
2803
+ });
2804
+ }
2805
+ };
2806
+ /**
2807
+ * Data API implementation
2808
+ */
2809
+ EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event) {
2810
+ if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") event.preventDefault();
2811
+ for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) Collapse.getOrCreateInstance(element, { toggle: false }).toggle();
2812
+ });
2813
+ /**
2814
+ * jQuery
2815
+ */
2816
+ defineJQueryPlugin(Collapse);
2817
+ NAME$a = "dropdown";
2818
+ EVENT_KEY$6 = `.bs.dropdown`;
2819
+ DATA_API_KEY$3 = ".data-api";
2820
+ ESCAPE_KEY$2 = "Escape";
2821
+ TAB_KEY$1 = "Tab";
2822
+ ARROW_UP_KEY$1 = "ArrowUp";
2823
+ ARROW_DOWN_KEY$1 = "ArrowDown";
2824
+ RIGHT_MOUSE_BUTTON = 2;
2825
+ EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
2826
+ EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
2827
+ EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
2828
+ EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
2829
+ EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
2830
+ EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
2831
+ EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
2832
+ CLASS_NAME_SHOW$6 = "show";
2833
+ CLASS_NAME_DROPUP = "dropup";
2834
+ CLASS_NAME_DROPEND = "dropend";
2835
+ CLASS_NAME_DROPSTART = "dropstart";
2836
+ CLASS_NAME_DROPUP_CENTER = "dropup-center";
2837
+ CLASS_NAME_DROPDOWN_CENTER = "dropdown-center";
2838
+ SELECTOR_DATA_TOGGLE$3 = "[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)";
2839
+ SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
2840
+ SELECTOR_MENU = ".dropdown-menu";
2841
+ SELECTOR_NAVBAR = ".navbar";
2842
+ SELECTOR_NAVBAR_NAV = ".navbar-nav";
2843
+ SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
2844
+ PLACEMENT_TOP = isRTL() ? "top-end" : "top-start";
2845
+ PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end";
2846
+ PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start";
2847
+ PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end";
2848
+ PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start";
2849
+ PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start";
2850
+ PLACEMENT_TOPCENTER = "top";
2851
+ PLACEMENT_BOTTOMCENTER = "bottom";
2852
+ Default$9 = {
2853
+ autoClose: true,
2854
+ boundary: "clippingParents",
2855
+ display: "dynamic",
2856
+ offset: [0, 2],
2857
+ popperConfig: null,
2858
+ reference: "toggle"
2859
+ };
2860
+ DefaultType$9 = {
2861
+ autoClose: "(boolean|string)",
2862
+ boundary: "(string|element)",
2863
+ display: "string",
2864
+ offset: "(array|string|function)",
2865
+ popperConfig: "(null|object|function)",
2866
+ reference: "(string|element|object)"
2867
+ };
2868
+ Dropdown = class Dropdown extends BaseComponent {
2869
+ constructor(element, config) {
2870
+ super(element, config);
2871
+ this._popper = null;
2872
+ this._parent = this._element.parentNode;
2873
+ this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
2874
+ this._inNavbar = this._detectNavbar();
2875
+ }
2876
+ static get Default() {
2877
+ return Default$9;
2878
+ }
2879
+ static get DefaultType() {
2880
+ return DefaultType$9;
2881
+ }
2882
+ static get NAME() {
2883
+ return NAME$a;
2884
+ }
2885
+ toggle() {
2886
+ return this._isShown() ? this.hide() : this.show();
2887
+ }
2888
+ show() {
2889
+ if (isDisabled(this._element) || this._isShown()) return;
2890
+ const relatedTarget = { relatedTarget: this._element };
2891
+ if (EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget).defaultPrevented) return;
2892
+ this._createPopper();
2893
+ if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) for (const element of [].concat(...document.body.children)) EventHandler.on(element, "mouseover", noop);
2894
+ this._element.focus();
2895
+ this._element.setAttribute("aria-expanded", true);
2896
+ this._menu.classList.add(CLASS_NAME_SHOW$6);
2897
+ this._element.classList.add(CLASS_NAME_SHOW$6);
2898
+ EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
2899
+ }
2900
+ hide() {
2901
+ if (isDisabled(this._element) || !this._isShown()) return;
2902
+ const relatedTarget = { relatedTarget: this._element };
2903
+ this._completeHide(relatedTarget);
2904
+ }
2905
+ dispose() {
2906
+ if (this._popper) this._popper.destroy();
2907
+ super.dispose();
2908
+ }
2909
+ update() {
2910
+ this._inNavbar = this._detectNavbar();
2911
+ if (this._popper) this._popper.update();
2912
+ }
2913
+ _completeHide(relatedTarget) {
2914
+ if (EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget).defaultPrevented) return;
2915
+ if ("ontouchstart" in document.documentElement) for (const element of [].concat(...document.body.children)) EventHandler.off(element, "mouseover", noop);
2916
+ if (this._popper) this._popper.destroy();
2917
+ this._menu.classList.remove(CLASS_NAME_SHOW$6);
2918
+ this._element.classList.remove(CLASS_NAME_SHOW$6);
2919
+ this._element.setAttribute("aria-expanded", "false");
2920
+ Manipulator.removeDataAttribute(this._menu, "popper");
2921
+ EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
2922
+ }
2923
+ _getConfig(config) {
2924
+ config = super._getConfig(config);
2925
+ if (typeof config.reference === "object" && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== "function") throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
2926
+ return config;
2927
+ }
2928
+ _createPopper() {
2929
+ if (typeof lib_exports === "undefined") throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");
2930
+ let referenceElement = this._element;
2931
+ if (this._config.reference === "parent") referenceElement = this._parent;
2932
+ else if (isElement(this._config.reference)) referenceElement = getElement(this._config.reference);
2933
+ else if (typeof this._config.reference === "object") referenceElement = this._config.reference;
2934
+ const popperConfig = this._getPopperConfig();
2935
+ this._popper = createPopper(referenceElement, this._menu, popperConfig);
2936
+ }
2937
+ _isShown() {
2938
+ return this._menu.classList.contains(CLASS_NAME_SHOW$6);
2939
+ }
2940
+ _getPlacement() {
2941
+ const parentDropdown = this._parent;
2942
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) return PLACEMENT_RIGHT;
2943
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) return PLACEMENT_LEFT;
2944
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) return PLACEMENT_TOPCENTER;
2945
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) return PLACEMENT_BOTTOMCENTER;
2946
+ const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end";
2947
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
2948
+ return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
2949
+ }
2950
+ _detectNavbar() {
2951
+ return this._element.closest(SELECTOR_NAVBAR) !== null;
2952
+ }
2953
+ _getOffset() {
2954
+ const { offset } = this._config;
2955
+ if (typeof offset === "string") return offset.split(",").map((value) => Number.parseInt(value, 10));
2956
+ if (typeof offset === "function") return (popperData) => offset(popperData, this._element);
2957
+ return offset;
2958
+ }
2959
+ _getPopperConfig() {
2960
+ const defaultBsPopperConfig = {
2961
+ placement: this._getPlacement(),
2962
+ modifiers: [{
2963
+ name: "preventOverflow",
2964
+ options: { boundary: this._config.boundary }
2965
+ }, {
2966
+ name: "offset",
2967
+ options: { offset: this._getOffset() }
2968
+ }]
2969
+ };
2970
+ if (this._inNavbar || this._config.display === "static") {
2971
+ Manipulator.setDataAttribute(this._menu, "popper", "static");
2972
+ defaultBsPopperConfig.modifiers = [{
2973
+ name: "applyStyles",
2974
+ enabled: false
2975
+ }];
2976
+ }
2977
+ return {
2978
+ ...defaultBsPopperConfig,
2979
+ ...execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])
2980
+ };
2981
+ }
2982
+ _selectMenuItem({ key, target }) {
2983
+ const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));
2984
+ if (!items.length) return;
2985
+ getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
2986
+ }
2987
+ static jQueryInterface(config) {
2988
+ return this.each(function() {
2989
+ const data = Dropdown.getOrCreateInstance(this, config);
2990
+ if (typeof config !== "string") return;
2991
+ if (typeof data[config] === "undefined") throw new TypeError(`No method named "${config}"`);
2992
+ data[config]();
2993
+ });
2994
+ }
2995
+ static clearMenus(event) {
2996
+ if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) return;
2997
+ const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
2998
+ for (const toggle of openToggles) {
2999
+ const context = Dropdown.getInstance(toggle);
3000
+ if (!context || context._config.autoClose === false) continue;
3001
+ const composedPath = event.composedPath();
3002
+ const isMenuTarget = composedPath.includes(context._menu);
3003
+ if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) continue;
3004
+ if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) continue;
3005
+ const relatedTarget = { relatedTarget: context._element };
3006
+ if (event.type === "click") relatedTarget.clickEvent = event;
3007
+ context._completeHide(relatedTarget);
3008
+ }
3009
+ }
3010
+ static dataApiKeydownHandler(event) {
3011
+ const isInput = /input|textarea/i.test(event.target.tagName);
3012
+ const isEscapeEvent = event.key === ESCAPE_KEY$2;
3013
+ const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
3014
+ if (!isUpOrDownEvent && !isEscapeEvent) return;
3015
+ if (isInput && !isEscapeEvent) return;
3016
+ event.preventDefault();
3017
+ const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
3018
+ const instance = Dropdown.getOrCreateInstance(getToggleButton);
3019
+ if (isUpOrDownEvent) {
3020
+ event.stopPropagation();
3021
+ instance.show();
3022
+ instance._selectMenuItem(event);
3023
+ return;
3024
+ }
3025
+ if (instance._isShown()) {
3026
+ event.stopPropagation();
3027
+ instance.hide();
3028
+ getToggleButton.focus();
3029
+ }
3030
+ }
3031
+ };
3032
+ /**
3033
+ * Data API implementation
3034
+ */
3035
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
3036
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
3037
+ EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
3038
+ EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
3039
+ EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event) {
3040
+ event.preventDefault();
3041
+ Dropdown.getOrCreateInstance(this).toggle();
3042
+ });
3043
+ /**
3044
+ * jQuery
3045
+ */
3046
+ defineJQueryPlugin(Dropdown);
3047
+ NAME$9 = "backdrop";
3048
+ CLASS_NAME_FADE$4 = "fade";
3049
+ CLASS_NAME_SHOW$5 = "show";
3050
+ EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
3051
+ Default$8 = {
3052
+ className: "modal-backdrop",
3053
+ clickCallback: null,
3054
+ isAnimated: false,
3055
+ isVisible: true,
3056
+ rootElement: "body"
3057
+ };
3058
+ DefaultType$8 = {
3059
+ className: "string",
3060
+ clickCallback: "(function|null)",
3061
+ isAnimated: "boolean",
3062
+ isVisible: "boolean",
3063
+ rootElement: "(element|string)"
3064
+ };
3065
+ Backdrop = class extends Config {
3066
+ constructor(config) {
3067
+ super();
3068
+ this._config = this._getConfig(config);
3069
+ this._isAppended = false;
3070
+ this._element = null;
3071
+ }
3072
+ static get Default() {
3073
+ return Default$8;
3074
+ }
3075
+ static get DefaultType() {
3076
+ return DefaultType$8;
3077
+ }
3078
+ static get NAME() {
3079
+ return NAME$9;
3080
+ }
3081
+ show(callback) {
3082
+ if (!this._config.isVisible) {
3083
+ execute(callback);
3084
+ return;
3085
+ }
3086
+ this._append();
3087
+ const element = this._getElement();
3088
+ if (this._config.isAnimated) reflow(element);
3089
+ element.classList.add(CLASS_NAME_SHOW$5);
3090
+ this._emulateAnimation(() => {
3091
+ execute(callback);
3092
+ });
3093
+ }
3094
+ hide(callback) {
3095
+ if (!this._config.isVisible) {
3096
+ execute(callback);
3097
+ return;
3098
+ }
3099
+ this._getElement().classList.remove(CLASS_NAME_SHOW$5);
3100
+ this._emulateAnimation(() => {
3101
+ this.dispose();
3102
+ execute(callback);
3103
+ });
3104
+ }
3105
+ dispose() {
3106
+ if (!this._isAppended) return;
3107
+ EventHandler.off(this._element, EVENT_MOUSEDOWN);
3108
+ this._element.remove();
3109
+ this._isAppended = false;
3110
+ }
3111
+ _getElement() {
3112
+ if (!this._element) {
3113
+ const backdrop = document.createElement("div");
3114
+ backdrop.className = this._config.className;
3115
+ if (this._config.isAnimated) backdrop.classList.add(CLASS_NAME_FADE$4);
3116
+ this._element = backdrop;
3117
+ }
3118
+ return this._element;
3119
+ }
3120
+ _configAfterMerge(config) {
3121
+ config.rootElement = getElement(config.rootElement);
3122
+ return config;
3123
+ }
3124
+ _append() {
3125
+ if (this._isAppended) return;
3126
+ const element = this._getElement();
3127
+ this._config.rootElement.append(element);
3128
+ EventHandler.on(element, EVENT_MOUSEDOWN, () => {
3129
+ execute(this._config.clickCallback);
3130
+ });
3131
+ this._isAppended = true;
3132
+ }
3133
+ _emulateAnimation(callback) {
3134
+ executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
3135
+ }
3136
+ };
3137
+ NAME$8 = "focustrap";
3138
+ EVENT_KEY$5 = `.bs.focustrap`;
3139
+ EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
3140
+ EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
3141
+ TAB_KEY = "Tab";
3142
+ TAB_NAV_FORWARD = "forward";
3143
+ TAB_NAV_BACKWARD = "backward";
3144
+ Default$7 = {
3145
+ autofocus: true,
3146
+ trapElement: null
3147
+ };
3148
+ DefaultType$7 = {
3149
+ autofocus: "boolean",
3150
+ trapElement: "element"
3151
+ };
3152
+ FocusTrap = class extends Config {
3153
+ constructor(config) {
3154
+ super();
3155
+ this._config = this._getConfig(config);
3156
+ this._isActive = false;
3157
+ this._lastTabNavDirection = null;
3158
+ }
3159
+ static get Default() {
3160
+ return Default$7;
3161
+ }
3162
+ static get DefaultType() {
3163
+ return DefaultType$7;
3164
+ }
3165
+ static get NAME() {
3166
+ return NAME$8;
3167
+ }
3168
+ activate() {
3169
+ if (this._isActive) return;
3170
+ if (this._config.autofocus) this._config.trapElement.focus();
3171
+ EventHandler.off(document, EVENT_KEY$5);
3172
+ EventHandler.on(document, EVENT_FOCUSIN$2, (event) => this._handleFocusin(event));
3173
+ EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));
3174
+ this._isActive = true;
3175
+ }
3176
+ deactivate() {
3177
+ if (!this._isActive) return;
3178
+ this._isActive = false;
3179
+ EventHandler.off(document, EVENT_KEY$5);
3180
+ }
3181
+ _handleFocusin(event) {
3182
+ const { trapElement } = this._config;
3183
+ if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) return;
3184
+ const elements = SelectorEngine.focusableChildren(trapElement);
3185
+ if (elements.length === 0) trapElement.focus();
3186
+ else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) elements[elements.length - 1].focus();
3187
+ else elements[0].focus();
3188
+ }
3189
+ _handleKeydown(event) {
3190
+ if (event.key !== TAB_KEY) return;
3191
+ this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
3192
+ }
3193
+ };
3194
+ SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
3195
+ SELECTOR_STICKY_CONTENT = ".sticky-top";
3196
+ PROPERTY_PADDING = "padding-right";
3197
+ PROPERTY_MARGIN = "margin-right";
3198
+ ScrollBarHelper = class {
3199
+ constructor() {
3200
+ this._element = document.body;
3201
+ }
3202
+ getWidth() {
3203
+ const documentWidth = document.documentElement.clientWidth;
3204
+ return Math.abs(window.innerWidth - documentWidth);
3205
+ }
3206
+ hide() {
3207
+ const width = this.getWidth();
3208
+ this._disableOverFlow();
3209
+ this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
3210
+ this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
3211
+ this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);
3212
+ }
3213
+ reset() {
3214
+ this._resetElementAttributes(this._element, "overflow");
3215
+ this._resetElementAttributes(this._element, PROPERTY_PADDING);
3216
+ this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
3217
+ this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
3218
+ }
3219
+ isOverflowing() {
3220
+ return this.getWidth() > 0;
3221
+ }
3222
+ _disableOverFlow() {
3223
+ this._saveInitialAttribute(this._element, "overflow");
3224
+ this._element.style.overflow = "hidden";
3225
+ }
3226
+ _setElementAttributes(selector, styleProperty, callback) {
3227
+ const scrollbarWidth = this.getWidth();
3228
+ const manipulationCallBack = (element) => {
3229
+ if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) return;
3230
+ this._saveInitialAttribute(element, styleProperty);
3231
+ const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
3232
+ element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
3233
+ };
3234
+ this._applyManipulationCallback(selector, manipulationCallBack);
3235
+ }
3236
+ _saveInitialAttribute(element, styleProperty) {
3237
+ const actualValue = element.style.getPropertyValue(styleProperty);
3238
+ if (actualValue) Manipulator.setDataAttribute(element, styleProperty, actualValue);
3239
+ }
3240
+ _resetElementAttributes(selector, styleProperty) {
3241
+ const manipulationCallBack = (element) => {
3242
+ const value = Manipulator.getDataAttribute(element, styleProperty);
3243
+ if (value === null) {
3244
+ element.style.removeProperty(styleProperty);
3245
+ return;
3246
+ }
3247
+ Manipulator.removeDataAttribute(element, styleProperty);
3248
+ element.style.setProperty(styleProperty, value);
3249
+ };
3250
+ this._applyManipulationCallback(selector, manipulationCallBack);
3251
+ }
3252
+ _applyManipulationCallback(selector, callBack) {
3253
+ if (isElement(selector)) {
3254
+ callBack(selector);
3255
+ return;
3256
+ }
3257
+ for (const sel of SelectorEngine.find(selector, this._element)) callBack(sel);
3258
+ }
3259
+ };
3260
+ NAME$7 = "modal";
3261
+ EVENT_KEY$4 = `.bs.modal`;
3262
+ DATA_API_KEY$2 = ".data-api";
3263
+ ESCAPE_KEY$1 = "Escape";
3264
+ EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
3265
+ EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
3266
+ EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
3267
+ EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
3268
+ EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
3269
+ EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
3270
+ EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
3271
+ EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
3272
+ EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
3273
+ EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
3274
+ CLASS_NAME_OPEN = "modal-open";
3275
+ CLASS_NAME_FADE$3 = "fade";
3276
+ CLASS_NAME_SHOW$4 = "show";
3277
+ CLASS_NAME_STATIC = "modal-static";
3278
+ OPEN_SELECTOR$1 = ".modal.show";
3279
+ SELECTOR_DIALOG = ".modal-dialog";
3280
+ SELECTOR_MODAL_BODY = ".modal-body";
3281
+ SELECTOR_DATA_TOGGLE$2 = "[data-bs-toggle=\"modal\"]";
3282
+ Default$6 = {
3283
+ backdrop: true,
3284
+ focus: true,
3285
+ keyboard: true
3286
+ };
3287
+ DefaultType$6 = {
3288
+ backdrop: "(boolean|string)",
3289
+ focus: "boolean",
3290
+ keyboard: "boolean"
3291
+ };
3292
+ Modal = class Modal extends BaseComponent {
3293
+ constructor(element, config) {
3294
+ super(element, config);
3295
+ this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
3296
+ this._backdrop = this._initializeBackDrop();
3297
+ this._focustrap = this._initializeFocusTrap();
3298
+ this._isShown = false;
3299
+ this._isTransitioning = false;
3300
+ this._scrollBar = new ScrollBarHelper();
3301
+ this._addEventListeners();
3302
+ }
3303
+ static get Default() {
3304
+ return Default$6;
3305
+ }
3306
+ static get DefaultType() {
3307
+ return DefaultType$6;
3308
+ }
3309
+ static get NAME() {
3310
+ return NAME$7;
3311
+ }
3312
+ toggle(relatedTarget) {
3313
+ return this._isShown ? this.hide() : this.show(relatedTarget);
3314
+ }
3315
+ show(relatedTarget) {
3316
+ if (this._isShown || this._isTransitioning) return;
3317
+ if (EventHandler.trigger(this._element, EVENT_SHOW$4, { relatedTarget }).defaultPrevented) return;
3318
+ this._isShown = true;
3319
+ this._isTransitioning = true;
3320
+ this._scrollBar.hide();
3321
+ document.body.classList.add(CLASS_NAME_OPEN);
3322
+ this._adjustDialog();
3323
+ this._backdrop.show(() => this._showElement(relatedTarget));
3324
+ }
3325
+ hide() {
3326
+ if (!this._isShown || this._isTransitioning) return;
3327
+ if (EventHandler.trigger(this._element, EVENT_HIDE$4).defaultPrevented) return;
3328
+ this._isShown = false;
3329
+ this._isTransitioning = true;
3330
+ this._focustrap.deactivate();
3331
+ this._element.classList.remove(CLASS_NAME_SHOW$4);
3332
+ this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
3333
+ }
3334
+ dispose() {
3335
+ EventHandler.off(window, EVENT_KEY$4);
3336
+ EventHandler.off(this._dialog, EVENT_KEY$4);
3337
+ this._backdrop.dispose();
3338
+ this._focustrap.deactivate();
3339
+ super.dispose();
3340
+ }
3341
+ handleUpdate() {
3342
+ this._adjustDialog();
3343
+ }
3344
+ _initializeBackDrop() {
3345
+ return new Backdrop({
3346
+ isVisible: Boolean(this._config.backdrop),
3347
+ isAnimated: this._isAnimated()
3348
+ });
3349
+ }
3350
+ _initializeFocusTrap() {
3351
+ return new FocusTrap({ trapElement: this._element });
3352
+ }
3353
+ _showElement(relatedTarget) {
3354
+ if (!document.body.contains(this._element)) document.body.append(this._element);
3355
+ this._element.style.display = "block";
3356
+ this._element.removeAttribute("aria-hidden");
3357
+ this._element.setAttribute("aria-modal", true);
3358
+ this._element.setAttribute("role", "dialog");
3359
+ this._element.scrollTop = 0;
3360
+ const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
3361
+ if (modalBody) modalBody.scrollTop = 0;
3362
+ reflow(this._element);
3363
+ this._element.classList.add(CLASS_NAME_SHOW$4);
3364
+ const transitionComplete = () => {
3365
+ if (this._config.focus) this._focustrap.activate();
3366
+ this._isTransitioning = false;
3367
+ EventHandler.trigger(this._element, EVENT_SHOWN$4, { relatedTarget });
3368
+ };
3369
+ this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
3370
+ }
3371
+ _addEventListeners() {
3372
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => {
3373
+ if (event.key !== ESCAPE_KEY$1) return;
3374
+ if (this._config.keyboard) {
3375
+ this.hide();
3376
+ return;
3377
+ }
3378
+ this._triggerBackdropTransition();
3379
+ });
3380
+ EventHandler.on(window, EVENT_RESIZE$1, () => {
3381
+ if (this._isShown && !this._isTransitioning) this._adjustDialog();
3382
+ });
3383
+ EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
3384
+ EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
3385
+ if (this._element !== event.target || this._element !== event2.target) return;
3386
+ if (this._config.backdrop === "static") {
3387
+ this._triggerBackdropTransition();
3388
+ return;
3389
+ }
3390
+ if (this._config.backdrop) this.hide();
3391
+ });
3392
+ });
3393
+ }
3394
+ _hideModal() {
3395
+ this._element.style.display = "none";
3396
+ this._element.setAttribute("aria-hidden", true);
3397
+ this._element.removeAttribute("aria-modal");
3398
+ this._element.removeAttribute("role");
3399
+ this._isTransitioning = false;
3400
+ this._backdrop.hide(() => {
3401
+ document.body.classList.remove(CLASS_NAME_OPEN);
3402
+ this._resetAdjustments();
3403
+ this._scrollBar.reset();
3404
+ EventHandler.trigger(this._element, EVENT_HIDDEN$4);
3405
+ });
3406
+ }
3407
+ _isAnimated() {
3408
+ return this._element.classList.contains(CLASS_NAME_FADE$3);
3409
+ }
3410
+ _triggerBackdropTransition() {
3411
+ if (EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1).defaultPrevented) return;
3412
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3413
+ const initialOverflowY = this._element.style.overflowY;
3414
+ if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) return;
3415
+ if (!isModalOverflowing) this._element.style.overflowY = "hidden";
3416
+ this._element.classList.add(CLASS_NAME_STATIC);
3417
+ this._queueCallback(() => {
3418
+ this._element.classList.remove(CLASS_NAME_STATIC);
3419
+ this._queueCallback(() => {
3420
+ this._element.style.overflowY = initialOverflowY;
3421
+ }, this._dialog);
3422
+ }, this._dialog);
3423
+ this._element.focus();
3424
+ }
3425
+ /**
3426
+ * The following methods are used to handle overflowing modals
3427
+ */
3428
+ _adjustDialog() {
3429
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3430
+ const scrollbarWidth = this._scrollBar.getWidth();
3431
+ const isBodyOverflowing = scrollbarWidth > 0;
3432
+ if (isBodyOverflowing && !isModalOverflowing) {
3433
+ const property = isRTL() ? "paddingLeft" : "paddingRight";
3434
+ this._element.style[property] = `${scrollbarWidth}px`;
3435
+ }
3436
+ if (!isBodyOverflowing && isModalOverflowing) {
3437
+ const property = isRTL() ? "paddingRight" : "paddingLeft";
3438
+ this._element.style[property] = `${scrollbarWidth}px`;
3439
+ }
3440
+ }
3441
+ _resetAdjustments() {
3442
+ this._element.style.paddingLeft = "";
3443
+ this._element.style.paddingRight = "";
3444
+ }
3445
+ static jQueryInterface(config, relatedTarget) {
3446
+ return this.each(function() {
3447
+ const data = Modal.getOrCreateInstance(this, config);
3448
+ if (typeof config !== "string") return;
3449
+ if (typeof data[config] === "undefined") throw new TypeError(`No method named "${config}"`);
3450
+ data[config](relatedTarget);
3451
+ });
3452
+ }
3453
+ };
3454
+ /**
3455
+ * Data API implementation
3456
+ */
3457
+ EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event) {
3458
+ const target = SelectorEngine.getElementFromSelector(this);
3459
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
3460
+ EventHandler.one(target, EVENT_SHOW$4, (showEvent) => {
3461
+ if (showEvent.defaultPrevented) return;
3462
+ EventHandler.one(target, EVENT_HIDDEN$4, () => {
3463
+ if (isVisible(this)) this.focus();
3464
+ });
3465
+ });
3466
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
3467
+ if (alreadyOpen) Modal.getInstance(alreadyOpen).hide();
3468
+ Modal.getOrCreateInstance(target).toggle(this);
3469
+ });
3470
+ enableDismissTrigger(Modal);
3471
+ /**
3472
+ * jQuery
3473
+ */
3474
+ defineJQueryPlugin(Modal);
3475
+ NAME$6 = "offcanvas";
3476
+ EVENT_KEY$3 = `.bs.offcanvas`;
3477
+ DATA_API_KEY$1 = ".data-api";
3478
+ EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
3479
+ ESCAPE_KEY = "Escape";
3480
+ CLASS_NAME_SHOW$3 = "show";
3481
+ CLASS_NAME_SHOWING$1 = "showing";
3482
+ CLASS_NAME_HIDING = "hiding";
3483
+ CLASS_NAME_BACKDROP = "offcanvas-backdrop";
3484
+ OPEN_SELECTOR = ".offcanvas.show";
3485
+ EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
3486
+ EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
3487
+ EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
3488
+ EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
3489
+ EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
3490
+ EVENT_RESIZE = `resize${EVENT_KEY$3}`;
3491
+ EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
3492
+ EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
3493
+ SELECTOR_DATA_TOGGLE$1 = "[data-bs-toggle=\"offcanvas\"]";
3494
+ Default$5 = {
3495
+ backdrop: true,
3496
+ keyboard: true,
3497
+ scroll: false
3498
+ };
3499
+ DefaultType$5 = {
3500
+ backdrop: "(boolean|string)",
3501
+ keyboard: "boolean",
3502
+ scroll: "boolean"
3503
+ };
3504
+ Offcanvas = class Offcanvas extends BaseComponent {
3505
+ constructor(element, config) {
3506
+ super(element, config);
3507
+ this._isShown = false;
3508
+ this._backdrop = this._initializeBackDrop();
3509
+ this._focustrap = this._initializeFocusTrap();
3510
+ this._addEventListeners();
3511
+ }
3512
+ static get Default() {
3513
+ return Default$5;
3514
+ }
3515
+ static get DefaultType() {
3516
+ return DefaultType$5;
3517
+ }
3518
+ static get NAME() {
3519
+ return NAME$6;
3520
+ }
3521
+ toggle(relatedTarget) {
3522
+ return this._isShown ? this.hide() : this.show(relatedTarget);
3523
+ }
3524
+ show(relatedTarget) {
3525
+ if (this._isShown) return;
3526
+ if (EventHandler.trigger(this._element, EVENT_SHOW$3, { relatedTarget }).defaultPrevented) return;
3527
+ this._isShown = true;
3528
+ this._backdrop.show();
3529
+ if (!this._config.scroll) new ScrollBarHelper().hide();
3530
+ this._element.setAttribute("aria-modal", true);
3531
+ this._element.setAttribute("role", "dialog");
3532
+ this._element.classList.add(CLASS_NAME_SHOWING$1);
3533
+ const completeCallBack = () => {
3534
+ if (!this._config.scroll || this._config.backdrop) this._focustrap.activate();
3535
+ this._element.classList.add(CLASS_NAME_SHOW$3);
3536
+ this._element.classList.remove(CLASS_NAME_SHOWING$1);
3537
+ EventHandler.trigger(this._element, EVENT_SHOWN$3, { relatedTarget });
3538
+ };
3539
+ this._queueCallback(completeCallBack, this._element, true);
3540
+ }
3541
+ hide() {
3542
+ if (!this._isShown) return;
3543
+ if (EventHandler.trigger(this._element, EVENT_HIDE$3).defaultPrevented) return;
3544
+ this._focustrap.deactivate();
3545
+ this._element.blur();
3546
+ this._isShown = false;
3547
+ this._element.classList.add(CLASS_NAME_HIDING);
3548
+ this._backdrop.hide();
3549
+ const completeCallback = () => {
3550
+ this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
3551
+ this._element.removeAttribute("aria-modal");
3552
+ this._element.removeAttribute("role");
3553
+ if (!this._config.scroll) new ScrollBarHelper().reset();
3554
+ EventHandler.trigger(this._element, EVENT_HIDDEN$3);
3555
+ };
3556
+ this._queueCallback(completeCallback, this._element, true);
3557
+ }
3558
+ dispose() {
3559
+ this._backdrop.dispose();
3560
+ this._focustrap.deactivate();
3561
+ super.dispose();
3562
+ }
3563
+ _initializeBackDrop() {
3564
+ const clickCallback = () => {
3565
+ if (this._config.backdrop === "static") {
3566
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
3567
+ return;
3568
+ }
3569
+ this.hide();
3570
+ };
3571
+ const isVisible = Boolean(this._config.backdrop);
3572
+ return new Backdrop({
3573
+ className: CLASS_NAME_BACKDROP,
3574
+ isVisible,
3575
+ isAnimated: true,
3576
+ rootElement: this._element.parentNode,
3577
+ clickCallback: isVisible ? clickCallback : null
3578
+ });
3579
+ }
3580
+ _initializeFocusTrap() {
3581
+ return new FocusTrap({ trapElement: this._element });
3582
+ }
3583
+ _addEventListeners() {
3584
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
3585
+ if (event.key !== ESCAPE_KEY) return;
3586
+ if (this._config.keyboard) {
3587
+ this.hide();
3588
+ return;
3589
+ }
3590
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
3591
+ });
3592
+ }
3593
+ static jQueryInterface(config) {
3594
+ return this.each(function() {
3595
+ const data = Offcanvas.getOrCreateInstance(this, config);
3596
+ if (typeof config !== "string") return;
3597
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") throw new TypeError(`No method named "${config}"`);
3598
+ data[config](this);
3599
+ });
3600
+ }
3601
+ };
3602
+ /**
3603
+ * Data API implementation
3604
+ */
3605
+ EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event) {
3606
+ const target = SelectorEngine.getElementFromSelector(this);
3607
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
3608
+ if (isDisabled(this)) return;
3609
+ EventHandler.one(target, EVENT_HIDDEN$3, () => {
3610
+ if (isVisible(this)) this.focus();
3611
+ });
3612
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
3613
+ if (alreadyOpen && alreadyOpen !== target) Offcanvas.getInstance(alreadyOpen).hide();
3614
+ Offcanvas.getOrCreateInstance(target).toggle(this);
3615
+ });
3616
+ EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
3617
+ for (const selector of SelectorEngine.find(OPEN_SELECTOR)) Offcanvas.getOrCreateInstance(selector).show();
3618
+ });
3619
+ EventHandler.on(window, EVENT_RESIZE, () => {
3620
+ for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) if (getComputedStyle(element).position !== "fixed") Offcanvas.getOrCreateInstance(element).hide();
3621
+ });
3622
+ enableDismissTrigger(Offcanvas);
3623
+ /**
3624
+ * jQuery
3625
+ */
3626
+ defineJQueryPlugin(Offcanvas);
3627
+ DefaultAllowlist = {
3628
+ "*": [
3629
+ "class",
3630
+ "dir",
3631
+ "id",
3632
+ "lang",
3633
+ "role",
3634
+ /^aria-[\w-]*$/i
3635
+ ],
3636
+ a: [
3637
+ "target",
3638
+ "href",
3639
+ "title",
3640
+ "rel"
3641
+ ],
3642
+ area: [],
3643
+ b: [],
3644
+ br: [],
3645
+ col: [],
3646
+ code: [],
3647
+ dd: [],
3648
+ div: [],
3649
+ dl: [],
3650
+ dt: [],
3651
+ em: [],
3652
+ hr: [],
3653
+ h1: [],
3654
+ h2: [],
3655
+ h3: [],
3656
+ h4: [],
3657
+ h5: [],
3658
+ h6: [],
3659
+ i: [],
3660
+ img: [
3661
+ "src",
3662
+ "srcset",
3663
+ "alt",
3664
+ "title",
3665
+ "width",
3666
+ "height"
3667
+ ],
3668
+ li: [],
3669
+ ol: [],
3670
+ p: [],
3671
+ pre: [],
3672
+ s: [],
3673
+ small: [],
3674
+ span: [],
3675
+ sub: [],
3676
+ sup: [],
3677
+ strong: [],
3678
+ u: [],
3679
+ ul: []
3680
+ };
3681
+ uriAttributes = new Set([
3682
+ "background",
3683
+ "cite",
3684
+ "href",
3685
+ "itemtype",
3686
+ "longdesc",
3687
+ "poster",
3688
+ "src",
3689
+ "xlink:href"
3690
+ ]);
3691
+ SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
3692
+ allowedAttribute = (attribute, allowedAttributeList) => {
3693
+ const attributeName = attribute.nodeName.toLowerCase();
3694
+ if (allowedAttributeList.includes(attributeName)) {
3695
+ if (uriAttributes.has(attributeName)) return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
3696
+ return true;
3697
+ }
3698
+ return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName));
3699
+ };
3700
+ NAME$5 = "TemplateFactory";
3701
+ Default$4 = {
3702
+ allowList: DefaultAllowlist,
3703
+ content: {},
3704
+ extraClass: "",
3705
+ html: false,
3706
+ sanitize: true,
3707
+ sanitizeFn: null,
3708
+ template: "<div></div>"
3709
+ };
3710
+ DefaultType$4 = {
3711
+ allowList: "object",
3712
+ content: "object",
3713
+ extraClass: "(string|function)",
3714
+ html: "boolean",
3715
+ sanitize: "boolean",
3716
+ sanitizeFn: "(null|function)",
3717
+ template: "string"
3718
+ };
3719
+ DefaultContentType = {
3720
+ entry: "(string|element|function|null)",
3721
+ selector: "(string|element)"
3722
+ };
3723
+ TemplateFactory = class extends Config {
3724
+ constructor(config) {
3725
+ super();
3726
+ this._config = this._getConfig(config);
3727
+ }
3728
+ static get Default() {
3729
+ return Default$4;
3730
+ }
3731
+ static get DefaultType() {
3732
+ return DefaultType$4;
3733
+ }
3734
+ static get NAME() {
3735
+ return NAME$5;
3736
+ }
3737
+ getContent() {
3738
+ return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean);
3739
+ }
3740
+ hasContent() {
3741
+ return this.getContent().length > 0;
3742
+ }
3743
+ changeContent(content) {
3744
+ this._checkContent(content);
3745
+ this._config.content = {
3746
+ ...this._config.content,
3747
+ ...content
3748
+ };
3749
+ return this;
3750
+ }
3751
+ toHtml() {
3752
+ const templateWrapper = document.createElement("div");
3753
+ templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
3754
+ for (const [selector, text] of Object.entries(this._config.content)) this._setContent(templateWrapper, text, selector);
3755
+ const template = templateWrapper.children[0];
3756
+ const extraClass = this._resolvePossibleFunction(this._config.extraClass);
3757
+ if (extraClass) template.classList.add(...extraClass.split(" "));
3758
+ return template;
3759
+ }
3760
+ _typeCheckConfig(config) {
3761
+ super._typeCheckConfig(config);
3762
+ this._checkContent(config.content);
3763
+ }
3764
+ _checkContent(arg) {
3765
+ for (const [selector, content] of Object.entries(arg)) super._typeCheckConfig({
3766
+ selector,
3767
+ entry: content
3768
+ }, DefaultContentType);
3769
+ }
3770
+ _setContent(template, content, selector) {
3771
+ const templateElement = SelectorEngine.findOne(selector, template);
3772
+ if (!templateElement) return;
3773
+ content = this._resolvePossibleFunction(content);
3774
+ if (!content) {
3775
+ templateElement.remove();
3776
+ return;
3777
+ }
3778
+ if (isElement(content)) {
3779
+ this._putElementInTemplate(getElement(content), templateElement);
3780
+ return;
3781
+ }
3782
+ if (this._config.html) {
3783
+ templateElement.innerHTML = this._maybeSanitize(content);
3784
+ return;
3785
+ }
3786
+ templateElement.textContent = content;
3787
+ }
3788
+ _maybeSanitize(arg) {
3789
+ return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
3790
+ }
3791
+ _resolvePossibleFunction(arg) {
3792
+ return execute(arg, [void 0, this]);
3793
+ }
3794
+ _putElementInTemplate(element, templateElement) {
3795
+ if (this._config.html) {
3796
+ templateElement.innerHTML = "";
3797
+ templateElement.append(element);
3798
+ return;
3799
+ }
3800
+ templateElement.textContent = element.textContent;
3801
+ }
3802
+ };
3803
+ NAME$4 = "tooltip";
3804
+ DISALLOWED_ATTRIBUTES = new Set([
3805
+ "sanitize",
3806
+ "allowList",
3807
+ "sanitizeFn"
3808
+ ]);
3809
+ CLASS_NAME_FADE$2 = "fade";
3810
+ CLASS_NAME_MODAL = "modal";
3811
+ CLASS_NAME_SHOW$2 = "show";
3812
+ SELECTOR_TOOLTIP_INNER = ".tooltip-inner";
3813
+ SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
3814
+ EVENT_MODAL_HIDE = "hide.bs.modal";
3815
+ TRIGGER_HOVER = "hover";
3816
+ TRIGGER_FOCUS = "focus";
3817
+ TRIGGER_CLICK = "click";
3818
+ TRIGGER_MANUAL = "manual";
3819
+ EVENT_HIDE$2 = "hide";
3820
+ EVENT_HIDDEN$2 = "hidden";
3821
+ EVENT_SHOW$2 = "show";
3822
+ EVENT_SHOWN$2 = "shown";
3823
+ EVENT_INSERTED = "inserted";
3824
+ EVENT_CLICK$1 = "click";
3825
+ EVENT_FOCUSIN$1 = "focusin";
3826
+ EVENT_FOCUSOUT$1 = "focusout";
3827
+ EVENT_MOUSEENTER = "mouseenter";
3828
+ EVENT_MOUSELEAVE = "mouseleave";
3829
+ AttachmentMap = {
3830
+ AUTO: "auto",
3831
+ TOP: "top",
3832
+ RIGHT: isRTL() ? "left" : "right",
3833
+ BOTTOM: "bottom",
3834
+ LEFT: isRTL() ? "right" : "left"
3835
+ };
3836
+ Default$3 = {
3837
+ allowList: DefaultAllowlist,
3838
+ animation: true,
3839
+ boundary: "clippingParents",
3840
+ container: false,
3841
+ customClass: "",
3842
+ delay: 0,
3843
+ fallbackPlacements: [
3844
+ "top",
3845
+ "right",
3846
+ "bottom",
3847
+ "left"
3848
+ ],
3849
+ html: false,
3850
+ offset: [0, 6],
3851
+ placement: "top",
3852
+ popperConfig: null,
3853
+ sanitize: true,
3854
+ sanitizeFn: null,
3855
+ selector: false,
3856
+ template: "<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>",
3857
+ title: "",
3858
+ trigger: "hover focus"
3859
+ };
3860
+ DefaultType$3 = {
3861
+ allowList: "object",
3862
+ animation: "boolean",
3863
+ boundary: "(string|element)",
3864
+ container: "(string|element|boolean)",
3865
+ customClass: "(string|function)",
3866
+ delay: "(number|object)",
3867
+ fallbackPlacements: "array",
3868
+ html: "boolean",
3869
+ offset: "(array|string|function)",
3870
+ placement: "(string|function)",
3871
+ popperConfig: "(null|object|function)",
3872
+ sanitize: "boolean",
3873
+ sanitizeFn: "(null|function)",
3874
+ selector: "(string|boolean)",
3875
+ template: "string",
3876
+ title: "(string|element|function)",
3877
+ trigger: "string"
3878
+ };
3879
+ Tooltip = class Tooltip extends BaseComponent {
3880
+ constructor(element, config) {
3881
+ if (typeof lib_exports === "undefined") throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");
3882
+ super(element, config);
3883
+ this._isEnabled = true;
3884
+ this._timeout = 0;
3885
+ this._isHovered = null;
3886
+ this._activeTrigger = {};
3887
+ this._popper = null;
3888
+ this._templateFactory = null;
3889
+ this._newContent = null;
3890
+ this.tip = null;
3891
+ this._setListeners();
3892
+ if (!this._config.selector) this._fixTitle();
3893
+ }
3894
+ static get Default() {
3895
+ return Default$3;
3896
+ }
3897
+ static get DefaultType() {
3898
+ return DefaultType$3;
3899
+ }
3900
+ static get NAME() {
3901
+ return NAME$4;
3902
+ }
3903
+ enable() {
3904
+ this._isEnabled = true;
3905
+ }
3906
+ disable() {
3907
+ this._isEnabled = false;
3908
+ }
3909
+ toggleEnabled() {
3910
+ this._isEnabled = !this._isEnabled;
3911
+ }
3912
+ toggle() {
3913
+ if (!this._isEnabled) return;
3914
+ if (this._isShown()) {
3915
+ this._leave();
3916
+ return;
3917
+ }
3918
+ this._enter();
3919
+ }
3920
+ dispose() {
3921
+ clearTimeout(this._timeout);
3922
+ EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
3923
+ if (this._element.getAttribute("data-bs-original-title")) this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title"));
3924
+ this._disposePopper();
3925
+ super.dispose();
3926
+ }
3927
+ show() {
3928
+ if (this._element.style.display === "none") throw new Error("Please use show on visible elements");
3929
+ if (!(this._isWithContent() && this._isEnabled)) return;
3930
+ const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
3931
+ const isInTheDom = (findShadowRoot(this._element) || this._element.ownerDocument.documentElement).contains(this._element);
3932
+ if (showEvent.defaultPrevented || !isInTheDom) return;
3933
+ this._disposePopper();
3934
+ const tip = this._getTipElement();
3935
+ this._element.setAttribute("aria-describedby", tip.getAttribute("id"));
3936
+ const { container } = this._config;
3937
+ if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
3938
+ container.append(tip);
3939
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
3940
+ }
3941
+ this._popper = this._createPopper(tip);
3942
+ tip.classList.add(CLASS_NAME_SHOW$2);
3943
+ if ("ontouchstart" in document.documentElement) for (const element of [].concat(...document.body.children)) EventHandler.on(element, "mouseover", noop);
3944
+ const complete = () => {
3945
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
3946
+ if (this._isHovered === false) this._leave();
3947
+ this._isHovered = false;
3948
+ };
3949
+ this._queueCallback(complete, this.tip, this._isAnimated());
3950
+ }
3951
+ hide() {
3952
+ if (!this._isShown()) return;
3953
+ if (EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)).defaultPrevented) return;
3954
+ this._getTipElement().classList.remove(CLASS_NAME_SHOW$2);
3955
+ if ("ontouchstart" in document.documentElement) for (const element of [].concat(...document.body.children)) EventHandler.off(element, "mouseover", noop);
3956
+ this._activeTrigger[TRIGGER_CLICK] = false;
3957
+ this._activeTrigger[TRIGGER_FOCUS] = false;
3958
+ this._activeTrigger[TRIGGER_HOVER] = false;
3959
+ this._isHovered = null;
3960
+ const complete = () => {
3961
+ if (this._isWithActiveTrigger()) return;
3962
+ if (!this._isHovered) this._disposePopper();
3963
+ this._element.removeAttribute("aria-describedby");
3964
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
3965
+ };
3966
+ this._queueCallback(complete, this.tip, this._isAnimated());
3967
+ }
3968
+ update() {
3969
+ if (this._popper) this._popper.update();
3970
+ }
3971
+ _isWithContent() {
3972
+ return Boolean(this._getTitle());
3973
+ }
3974
+ _getTipElement() {
3975
+ if (!this.tip) this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
3976
+ return this.tip;
3977
+ }
3978
+ _createTipElement(content) {
3979
+ const tip = this._getTemplateFactory(content).toHtml();
3980
+ if (!tip) return null;
3981
+ tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
3982
+ tip.classList.add(`bs-${this.constructor.NAME}-auto`);
3983
+ const tipId = getUID(this.constructor.NAME).toString();
3984
+ tip.setAttribute("id", tipId);
3985
+ if (this._isAnimated()) tip.classList.add(CLASS_NAME_FADE$2);
3986
+ return tip;
3987
+ }
3988
+ setContent(content) {
3989
+ this._newContent = content;
3990
+ if (this._isShown()) {
3991
+ this._disposePopper();
3992
+ this.show();
3993
+ }
3994
+ }
3995
+ _getTemplateFactory(content) {
3996
+ if (this._templateFactory) this._templateFactory.changeContent(content);
3997
+ else this._templateFactory = new TemplateFactory({
3998
+ ...this._config,
3999
+ content,
4000
+ extraClass: this._resolvePossibleFunction(this._config.customClass)
4001
+ });
4002
+ return this._templateFactory;
4003
+ }
4004
+ _getContentForTemplate() {
4005
+ return { [SELECTOR_TOOLTIP_INNER]: this._getTitle() };
4006
+ }
4007
+ _getTitle() {
4008
+ return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title");
4009
+ }
4010
+ _initializeOnDelegatedTarget(event) {
4011
+ return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
4012
+ }
4013
+ _isAnimated() {
4014
+ return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
4015
+ }
4016
+ _isShown() {
4017
+ return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
4018
+ }
4019
+ _createPopper(tip) {
4020
+ const attachment = AttachmentMap[execute(this._config.placement, [
4021
+ this,
4022
+ tip,
4023
+ this._element
4024
+ ]).toUpperCase()];
4025
+ return createPopper(this._element, tip, this._getPopperConfig(attachment));
4026
+ }
4027
+ _getOffset() {
4028
+ const { offset } = this._config;
4029
+ if (typeof offset === "string") return offset.split(",").map((value) => Number.parseInt(value, 10));
4030
+ if (typeof offset === "function") return (popperData) => offset(popperData, this._element);
4031
+ return offset;
4032
+ }
4033
+ _resolvePossibleFunction(arg) {
4034
+ return execute(arg, [this._element, this._element]);
4035
+ }
4036
+ _getPopperConfig(attachment) {
4037
+ const defaultBsPopperConfig = {
4038
+ placement: attachment,
4039
+ modifiers: [
4040
+ {
4041
+ name: "flip",
4042
+ options: { fallbackPlacements: this._config.fallbackPlacements }
4043
+ },
4044
+ {
4045
+ name: "offset",
4046
+ options: { offset: this._getOffset() }
4047
+ },
4048
+ {
4049
+ name: "preventOverflow",
4050
+ options: { boundary: this._config.boundary }
4051
+ },
4052
+ {
4053
+ name: "arrow",
4054
+ options: { element: `.${this.constructor.NAME}-arrow` }
4055
+ },
4056
+ {
4057
+ name: "preSetPlacement",
4058
+ enabled: true,
4059
+ phase: "beforeMain",
4060
+ fn: (data) => {
4061
+ this._getTipElement().setAttribute("data-popper-placement", data.state.placement);
4062
+ }
4063
+ }
4064
+ ]
4065
+ };
4066
+ return {
4067
+ ...defaultBsPopperConfig,
4068
+ ...execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])
4069
+ };
4070
+ }
4071
+ _setListeners() {
4072
+ const triggers = this._config.trigger.split(" ");
4073
+ for (const trigger of triggers) if (trigger === "click") EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, (event) => {
4074
+ const context = this._initializeOnDelegatedTarget(event);
4075
+ context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
4076
+ context.toggle();
4077
+ });
4078
+ else if (trigger !== TRIGGER_MANUAL) {
4079
+ const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
4080
+ const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
4081
+ EventHandler.on(this._element, eventIn, this._config.selector, (event) => {
4082
+ const context = this._initializeOnDelegatedTarget(event);
4083
+ context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
4084
+ context._enter();
4085
+ });
4086
+ EventHandler.on(this._element, eventOut, this._config.selector, (event) => {
4087
+ const context = this._initializeOnDelegatedTarget(event);
4088
+ context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
4089
+ context._leave();
4090
+ });
4091
+ }
4092
+ this._hideModalHandler = () => {
4093
+ if (this._element) this.hide();
4094
+ };
4095
+ EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
4096
+ }
4097
+ _fixTitle() {
4098
+ const title = this._element.getAttribute("title");
4099
+ if (!title) return;
4100
+ if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) this._element.setAttribute("aria-label", title);
4101
+ this._element.setAttribute("data-bs-original-title", title);
4102
+ this._element.removeAttribute("title");
4103
+ }
4104
+ _enter() {
4105
+ if (this._isShown() || this._isHovered) {
4106
+ this._isHovered = true;
4107
+ return;
4108
+ }
4109
+ this._isHovered = true;
4110
+ this._setTimeout(() => {
4111
+ if (this._isHovered) this.show();
4112
+ }, this._config.delay.show);
4113
+ }
4114
+ _leave() {
4115
+ if (this._isWithActiveTrigger()) return;
4116
+ this._isHovered = false;
4117
+ this._setTimeout(() => {
4118
+ if (!this._isHovered) this.hide();
4119
+ }, this._config.delay.hide);
4120
+ }
4121
+ _setTimeout(handler, timeout) {
4122
+ clearTimeout(this._timeout);
4123
+ this._timeout = setTimeout(handler, timeout);
4124
+ }
4125
+ _isWithActiveTrigger() {
4126
+ return Object.values(this._activeTrigger).includes(true);
4127
+ }
4128
+ _getConfig(config) {
4129
+ const dataAttributes = Manipulator.getDataAttributes(this._element);
4130
+ for (const dataAttribute of Object.keys(dataAttributes)) if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) delete dataAttributes[dataAttribute];
4131
+ config = {
4132
+ ...dataAttributes,
4133
+ ...typeof config === "object" && config ? config : {}
4134
+ };
4135
+ config = this._mergeConfigObj(config);
4136
+ config = this._configAfterMerge(config);
4137
+ this._typeCheckConfig(config);
4138
+ return config;
4139
+ }
4140
+ _configAfterMerge(config) {
4141
+ config.container = config.container === false ? document.body : getElement(config.container);
4142
+ if (typeof config.delay === "number") config.delay = {
4143
+ show: config.delay,
4144
+ hide: config.delay
4145
+ };
4146
+ if (typeof config.title === "number") config.title = config.title.toString();
4147
+ if (typeof config.content === "number") config.content = config.content.toString();
4148
+ return config;
4149
+ }
4150
+ _getDelegateConfig() {
4151
+ const config = {};
4152
+ for (const [key, value] of Object.entries(this._config)) if (this.constructor.Default[key] !== value) config[key] = value;
4153
+ config.selector = false;
4154
+ config.trigger = "manual";
4155
+ return config;
4156
+ }
4157
+ _disposePopper() {
4158
+ if (this._popper) {
4159
+ this._popper.destroy();
4160
+ this._popper = null;
4161
+ }
4162
+ if (this.tip) {
4163
+ this.tip.remove();
4164
+ this.tip = null;
4165
+ }
4166
+ }
4167
+ static jQueryInterface(config) {
4168
+ return this.each(function() {
4169
+ const data = Tooltip.getOrCreateInstance(this, config);
4170
+ if (typeof config !== "string") return;
4171
+ if (typeof data[config] === "undefined") throw new TypeError(`No method named "${config}"`);
4172
+ data[config]();
4173
+ });
4174
+ }
4175
+ };
4176
+ /**
4177
+ * jQuery
4178
+ */
4179
+ defineJQueryPlugin(Tooltip);
4180
+ NAME$3 = "popover";
4181
+ SELECTOR_TITLE = ".popover-header";
4182
+ SELECTOR_CONTENT = ".popover-body";
4183
+ Default$2 = {
4184
+ ...Tooltip.Default,
4185
+ content: "",
4186
+ offset: [0, 8],
4187
+ placement: "right",
4188
+ template: "<div class=\"popover\" role=\"tooltip\"><div class=\"popover-arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>",
4189
+ trigger: "click"
4190
+ };
4191
+ DefaultType$2 = {
4192
+ ...Tooltip.DefaultType,
4193
+ content: "(null|string|element|function)"
4194
+ };
4195
+ Popover = class Popover extends Tooltip {
4196
+ static get Default() {
4197
+ return Default$2;
4198
+ }
4199
+ static get DefaultType() {
4200
+ return DefaultType$2;
4201
+ }
4202
+ static get NAME() {
4203
+ return NAME$3;
4204
+ }
4205
+ _isWithContent() {
4206
+ return this._getTitle() || this._getContent();
4207
+ }
4208
+ _getContentForTemplate() {
4209
+ return {
4210
+ [SELECTOR_TITLE]: this._getTitle(),
4211
+ [SELECTOR_CONTENT]: this._getContent()
4212
+ };
4213
+ }
4214
+ _getContent() {
4215
+ return this._resolvePossibleFunction(this._config.content);
4216
+ }
4217
+ static jQueryInterface(config) {
4218
+ return this.each(function() {
4219
+ const data = Popover.getOrCreateInstance(this, config);
4220
+ if (typeof config !== "string") return;
4221
+ if (typeof data[config] === "undefined") throw new TypeError(`No method named "${config}"`);
4222
+ data[config]();
4223
+ });
4224
+ }
4225
+ };
4226
+ /**
4227
+ * jQuery
4228
+ */
4229
+ defineJQueryPlugin(Popover);
4230
+ NAME$2 = "scrollspy";
4231
+ EVENT_KEY$2 = `.bs.scrollspy`;
4232
+ DATA_API_KEY = ".data-api";
4233
+ EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
4234
+ EVENT_CLICK = `click${EVENT_KEY$2}`;
4235
+ EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
4236
+ CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
4237
+ CLASS_NAME_ACTIVE$1 = "active";
4238
+ SELECTOR_DATA_SPY = "[data-bs-spy=\"scroll\"]";
4239
+ SELECTOR_TARGET_LINKS = "[href]";
4240
+ SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
4241
+ SELECTOR_NAV_LINKS = ".nav-link";
4242
+ SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, .nav-item > ${SELECTOR_NAV_LINKS}, .list-group-item`;
4243
+ SELECTOR_DROPDOWN = ".dropdown";
4244
+ SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle";
4245
+ Default$1 = {
4246
+ offset: null,
4247
+ rootMargin: "0px 0px -25%",
4248
+ smoothScroll: false,
4249
+ target: null,
4250
+ threshold: [
4251
+ .1,
4252
+ .5,
4253
+ 1
4254
+ ]
4255
+ };
4256
+ DefaultType$1 = {
4257
+ offset: "(number|null)",
4258
+ rootMargin: "string",
4259
+ smoothScroll: "boolean",
4260
+ target: "element",
4261
+ threshold: "array"
4262
+ };
4263
+ ScrollSpy = class ScrollSpy extends BaseComponent {
4264
+ constructor(element, config) {
4265
+ super(element, config);
4266
+ this._targetLinks = /* @__PURE__ */ new Map();
4267
+ this._observableSections = /* @__PURE__ */ new Map();
4268
+ this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element;
4269
+ this._activeTarget = null;
4270
+ this._observer = null;
4271
+ this._previousScrollData = {
4272
+ visibleEntryTop: 0,
4273
+ parentScrollTop: 0
4274
+ };
4275
+ this.refresh();
4276
+ }
4277
+ static get Default() {
4278
+ return Default$1;
4279
+ }
4280
+ static get DefaultType() {
4281
+ return DefaultType$1;
4282
+ }
4283
+ static get NAME() {
4284
+ return NAME$2;
4285
+ }
4286
+ refresh() {
4287
+ this._initializeTargetsAndObservables();
4288
+ this._maybeEnableSmoothScroll();
4289
+ if (this._observer) this._observer.disconnect();
4290
+ else this._observer = this._getNewObserver();
4291
+ for (const section of this._observableSections.values()) this._observer.observe(section);
4292
+ }
4293
+ dispose() {
4294
+ this._observer.disconnect();
4295
+ super.dispose();
4296
+ }
4297
+ _configAfterMerge(config) {
4298
+ config.target = getElement(config.target) || document.body;
4299
+ config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
4300
+ if (typeof config.threshold === "string") config.threshold = config.threshold.split(",").map((value) => Number.parseFloat(value));
4301
+ return config;
4302
+ }
4303
+ _maybeEnableSmoothScroll() {
4304
+ if (!this._config.smoothScroll) return;
4305
+ EventHandler.off(this._config.target, EVENT_CLICK);
4306
+ EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => {
4307
+ const observableSection = this._observableSections.get(event.target.hash);
4308
+ if (observableSection) {
4309
+ event.preventDefault();
4310
+ const root = this._rootElement || window;
4311
+ const height = observableSection.offsetTop - this._element.offsetTop;
4312
+ if (root.scrollTo) {
4313
+ root.scrollTo({
4314
+ top: height,
4315
+ behavior: "smooth"
4316
+ });
4317
+ return;
4318
+ }
4319
+ root.scrollTop = height;
4320
+ }
4321
+ });
4322
+ }
4323
+ _getNewObserver() {
4324
+ const options = {
4325
+ root: this._rootElement,
4326
+ threshold: this._config.threshold,
4327
+ rootMargin: this._config.rootMargin
4328
+ };
4329
+ return new IntersectionObserver((entries) => this._observerCallback(entries), options);
4330
+ }
4331
+ _observerCallback(entries) {
4332
+ const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);
4333
+ const activate = (entry) => {
4334
+ this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
4335
+ this._process(targetElement(entry));
4336
+ };
4337
+ const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
4338
+ const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
4339
+ this._previousScrollData.parentScrollTop = parentScrollTop;
4340
+ for (const entry of entries) {
4341
+ if (!entry.isIntersecting) {
4342
+ this._activeTarget = null;
4343
+ this._clearActiveClass(targetElement(entry));
4344
+ continue;
4345
+ }
4346
+ const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
4347
+ if (userScrollsDown && entryIsLowerThanPrevious) {
4348
+ activate(entry);
4349
+ if (!parentScrollTop) return;
4350
+ continue;
4351
+ }
4352
+ if (!userScrollsDown && !entryIsLowerThanPrevious) activate(entry);
4353
+ }
4354
+ }
4355
+ _initializeTargetsAndObservables() {
4356
+ this._targetLinks = /* @__PURE__ */ new Map();
4357
+ this._observableSections = /* @__PURE__ */ new Map();
4358
+ const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
4359
+ for (const anchor of targetLinks) {
4360
+ if (!anchor.hash || isDisabled(anchor)) continue;
4361
+ const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
4362
+ if (isVisible(observableSection)) {
4363
+ this._targetLinks.set(decodeURI(anchor.hash), anchor);
4364
+ this._observableSections.set(anchor.hash, observableSection);
4365
+ }
4366
+ }
4367
+ }
4368
+ _process(target) {
4369
+ if (this._activeTarget === target) return;
4370
+ this._clearActiveClass(this._config.target);
4371
+ this._activeTarget = target;
4372
+ target.classList.add(CLASS_NAME_ACTIVE$1);
4373
+ this._activateParents(target);
4374
+ EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target });
4375
+ }
4376
+ _activateParents(target) {
4377
+ if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
4378
+ SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
4379
+ return;
4380
+ }
4381
+ for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) item.classList.add(CLASS_NAME_ACTIVE$1);
4382
+ }
4383
+ _clearActiveClass(parent) {
4384
+ parent.classList.remove(CLASS_NAME_ACTIVE$1);
4385
+ const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
4386
+ for (const node of activeNodes) node.classList.remove(CLASS_NAME_ACTIVE$1);
4387
+ }
4388
+ static jQueryInterface(config) {
4389
+ return this.each(function() {
4390
+ const data = ScrollSpy.getOrCreateInstance(this, config);
4391
+ if (typeof config !== "string") return;
4392
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") throw new TypeError(`No method named "${config}"`);
4393
+ data[config]();
4394
+ });
4395
+ }
4396
+ };
4397
+ /**
4398
+ * Data API implementation
4399
+ */
4400
+ EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
4401
+ for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) ScrollSpy.getOrCreateInstance(spy);
4402
+ });
4403
+ /**
4404
+ * jQuery
4405
+ */
4406
+ defineJQueryPlugin(ScrollSpy);
4407
+ NAME$1 = "tab";
4408
+ EVENT_KEY$1 = `.bs.tab`;
4409
+ EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
4410
+ EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
4411
+ EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
4412
+ EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
4413
+ EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
4414
+ EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
4415
+ EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
4416
+ ARROW_LEFT_KEY = "ArrowLeft";
4417
+ ARROW_RIGHT_KEY = "ArrowRight";
4418
+ ARROW_UP_KEY = "ArrowUp";
4419
+ ARROW_DOWN_KEY = "ArrowDown";
4420
+ HOME_KEY = "Home";
4421
+ END_KEY = "End";
4422
+ CLASS_NAME_ACTIVE = "active";
4423
+ CLASS_NAME_FADE$1 = "fade";
4424
+ CLASS_NAME_SHOW$1 = "show";
4425
+ CLASS_DROPDOWN = "dropdown";
4426
+ SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
4427
+ SELECTOR_DROPDOWN_MENU = ".dropdown-menu";
4428
+ NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
4429
+ SELECTOR_TAB_PANEL = ".list-group, .nav, [role=\"tablist\"]";
4430
+ SELECTOR_OUTER = ".nav-item, .list-group-item";
4431
+ SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
4432
+ SELECTOR_DATA_TOGGLE = "[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]";
4433
+ SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
4434
+ 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"]`;
4435
+ Tab = class Tab extends BaseComponent {
4436
+ constructor(element) {
4437
+ super(element);
4438
+ this._parent = this._element.closest(SELECTOR_TAB_PANEL);
4439
+ if (!this._parent) return;
4440
+ this._setInitialAttributes(this._parent, this._getChildren());
4441
+ EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
4442
+ }
4443
+ static get NAME() {
4444
+ return NAME$1;
4445
+ }
4446
+ show() {
4447
+ const innerElem = this._element;
4448
+ if (this._elemIsActive(innerElem)) return;
4449
+ const active = this._getActiveElem();
4450
+ const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { relatedTarget: innerElem }) : null;
4451
+ if (EventHandler.trigger(innerElem, EVENT_SHOW$1, { relatedTarget: active }).defaultPrevented || hideEvent && hideEvent.defaultPrevented) return;
4452
+ this._deactivate(active, innerElem);
4453
+ this._activate(innerElem, active);
4454
+ }
4455
+ _activate(element, relatedElem) {
4456
+ if (!element) return;
4457
+ element.classList.add(CLASS_NAME_ACTIVE);
4458
+ this._activate(SelectorEngine.getElementFromSelector(element));
4459
+ const complete = () => {
4460
+ if (element.getAttribute("role") !== "tab") {
4461
+ element.classList.add(CLASS_NAME_SHOW$1);
4462
+ return;
4463
+ }
4464
+ element.removeAttribute("tabindex");
4465
+ element.setAttribute("aria-selected", true);
4466
+ this._toggleDropDown(element, true);
4467
+ EventHandler.trigger(element, EVENT_SHOWN$1, { relatedTarget: relatedElem });
4468
+ };
4469
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
4470
+ }
4471
+ _deactivate(element, relatedElem) {
4472
+ if (!element) return;
4473
+ element.classList.remove(CLASS_NAME_ACTIVE);
4474
+ element.blur();
4475
+ this._deactivate(SelectorEngine.getElementFromSelector(element));
4476
+ const complete = () => {
4477
+ if (element.getAttribute("role") !== "tab") {
4478
+ element.classList.remove(CLASS_NAME_SHOW$1);
4479
+ return;
4480
+ }
4481
+ element.setAttribute("aria-selected", false);
4482
+ element.setAttribute("tabindex", "-1");
4483
+ this._toggleDropDown(element, false);
4484
+ EventHandler.trigger(element, EVENT_HIDDEN$1, { relatedTarget: relatedElem });
4485
+ };
4486
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
4487
+ }
4488
+ _keydown(event) {
4489
+ if (![
4490
+ ARROW_LEFT_KEY,
4491
+ ARROW_RIGHT_KEY,
4492
+ ARROW_UP_KEY,
4493
+ ARROW_DOWN_KEY,
4494
+ HOME_KEY,
4495
+ END_KEY
4496
+ ].includes(event.key)) return;
4497
+ event.stopPropagation();
4498
+ event.preventDefault();
4499
+ const children = this._getChildren().filter((element) => !isDisabled(element));
4500
+ let nextActiveElement;
4501
+ if ([HOME_KEY, END_KEY].includes(event.key)) nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
4502
+ else {
4503
+ const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
4504
+ nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
4505
+ }
4506
+ if (nextActiveElement) {
4507
+ nextActiveElement.focus({ preventScroll: true });
4508
+ Tab.getOrCreateInstance(nextActiveElement).show();
4509
+ }
4510
+ }
4511
+ _getChildren() {
4512
+ return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
4513
+ }
4514
+ _getActiveElem() {
4515
+ return this._getChildren().find((child) => this._elemIsActive(child)) || null;
4516
+ }
4517
+ _setInitialAttributes(parent, children) {
4518
+ this._setAttributeIfNotExists(parent, "role", "tablist");
4519
+ for (const child of children) this._setInitialAttributesOnChild(child);
4520
+ }
4521
+ _setInitialAttributesOnChild(child) {
4522
+ child = this._getInnerElement(child);
4523
+ const isActive = this._elemIsActive(child);
4524
+ const outerElem = this._getOuterElement(child);
4525
+ child.setAttribute("aria-selected", isActive);
4526
+ if (outerElem !== child) this._setAttributeIfNotExists(outerElem, "role", "presentation");
4527
+ if (!isActive) child.setAttribute("tabindex", "-1");
4528
+ this._setAttributeIfNotExists(child, "role", "tab");
4529
+ this._setInitialAttributesOnTargetPanel(child);
4530
+ }
4531
+ _setInitialAttributesOnTargetPanel(child) {
4532
+ const target = SelectorEngine.getElementFromSelector(child);
4533
+ if (!target) return;
4534
+ this._setAttributeIfNotExists(target, "role", "tabpanel");
4535
+ if (child.id) this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`);
4536
+ }
4537
+ _toggleDropDown(element, open) {
4538
+ const outerElem = this._getOuterElement(element);
4539
+ if (!outerElem.classList.contains(CLASS_DROPDOWN)) return;
4540
+ const toggle = (selector, className) => {
4541
+ const element = SelectorEngine.findOne(selector, outerElem);
4542
+ if (element) element.classList.toggle(className, open);
4543
+ };
4544
+ toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
4545
+ toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
4546
+ outerElem.setAttribute("aria-expanded", open);
4547
+ }
4548
+ _setAttributeIfNotExists(element, attribute, value) {
4549
+ if (!element.hasAttribute(attribute)) element.setAttribute(attribute, value);
4550
+ }
4551
+ _elemIsActive(elem) {
4552
+ return elem.classList.contains(CLASS_NAME_ACTIVE);
4553
+ }
4554
+ _getInnerElement(elem) {
4555
+ return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
4556
+ }
4557
+ _getOuterElement(elem) {
4558
+ return elem.closest(SELECTOR_OUTER) || elem;
4559
+ }
4560
+ static jQueryInterface(config) {
4561
+ return this.each(function() {
4562
+ const data = Tab.getOrCreateInstance(this);
4563
+ if (typeof config !== "string") return;
4564
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") throw new TypeError(`No method named "${config}"`);
4565
+ data[config]();
4566
+ });
4567
+ }
4568
+ };
4569
+ /**
4570
+ * Data API implementation
4571
+ */
4572
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
4573
+ if (["A", "AREA"].includes(this.tagName)) event.preventDefault();
4574
+ if (isDisabled(this)) return;
4575
+ Tab.getOrCreateInstance(this).show();
4576
+ });
4577
+ /**
4578
+ * Initialize on focus
4579
+ */
4580
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
4581
+ for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) Tab.getOrCreateInstance(element);
4582
+ });
4583
+ /**
4584
+ * jQuery
4585
+ */
4586
+ defineJQueryPlugin(Tab);
4587
+ NAME = "toast";
4588
+ EVENT_KEY = `.bs.toast`;
4589
+ EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
4590
+ EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
4591
+ EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
4592
+ EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
4593
+ EVENT_HIDE = `hide${EVENT_KEY}`;
4594
+ EVENT_HIDDEN = `hidden${EVENT_KEY}`;
4595
+ EVENT_SHOW = `show${EVENT_KEY}`;
4596
+ EVENT_SHOWN = `shown${EVENT_KEY}`;
4597
+ CLASS_NAME_FADE = "fade";
4598
+ CLASS_NAME_HIDE = "hide";
4599
+ CLASS_NAME_SHOW = "show";
4600
+ CLASS_NAME_SHOWING = "showing";
4601
+ DefaultType = {
4602
+ animation: "boolean",
4603
+ autohide: "boolean",
4604
+ delay: "number"
4605
+ };
4606
+ Default = {
4607
+ animation: true,
4608
+ autohide: true,
4609
+ delay: 5e3
4610
+ };
4611
+ Toast = class Toast extends BaseComponent {
4612
+ constructor(element, config) {
4613
+ super(element, config);
4614
+ this._timeout = null;
4615
+ this._hasMouseInteraction = false;
4616
+ this._hasKeyboardInteraction = false;
4617
+ this._setListeners();
4618
+ }
4619
+ static get Default() {
4620
+ return Default;
4621
+ }
4622
+ static get DefaultType() {
4623
+ return DefaultType;
4624
+ }
4625
+ static get NAME() {
4626
+ return NAME;
4627
+ }
4628
+ show() {
4629
+ if (EventHandler.trigger(this._element, EVENT_SHOW).defaultPrevented) return;
4630
+ this._clearTimeout();
4631
+ if (this._config.animation) this._element.classList.add(CLASS_NAME_FADE);
4632
+ const complete = () => {
4633
+ this._element.classList.remove(CLASS_NAME_SHOWING);
4634
+ EventHandler.trigger(this._element, EVENT_SHOWN);
4635
+ this._maybeScheduleHide();
4636
+ };
4637
+ this._element.classList.remove(CLASS_NAME_HIDE);
4638
+ reflow(this._element);
4639
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
4640
+ this._queueCallback(complete, this._element, this._config.animation);
4641
+ }
4642
+ hide() {
4643
+ if (!this.isShown()) return;
4644
+ if (EventHandler.trigger(this._element, EVENT_HIDE).defaultPrevented) return;
4645
+ const complete = () => {
4646
+ this._element.classList.add(CLASS_NAME_HIDE);
4647
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
4648
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
4649
+ };
4650
+ this._element.classList.add(CLASS_NAME_SHOWING);
4651
+ this._queueCallback(complete, this._element, this._config.animation);
4652
+ }
4653
+ dispose() {
4654
+ this._clearTimeout();
4655
+ if (this.isShown()) this._element.classList.remove(CLASS_NAME_SHOW);
4656
+ super.dispose();
4657
+ }
4658
+ isShown() {
4659
+ return this._element.classList.contains(CLASS_NAME_SHOW);
4660
+ }
4661
+ _maybeScheduleHide() {
4662
+ if (!this._config.autohide) return;
4663
+ if (this._hasMouseInteraction || this._hasKeyboardInteraction) return;
4664
+ this._timeout = setTimeout(() => {
4665
+ this.hide();
4666
+ }, this._config.delay);
4667
+ }
4668
+ _onInteraction(event, isInteracting) {
4669
+ switch (event.type) {
4670
+ case "mouseover":
4671
+ case "mouseout":
4672
+ this._hasMouseInteraction = isInteracting;
4673
+ break;
4674
+ case "focusin":
4675
+ case "focusout":
4676
+ this._hasKeyboardInteraction = isInteracting;
4677
+ break;
4678
+ }
4679
+ if (isInteracting) {
4680
+ this._clearTimeout();
4681
+ return;
4682
+ }
4683
+ const nextElement = event.relatedTarget;
4684
+ if (this._element === nextElement || this._element.contains(nextElement)) return;
4685
+ this._maybeScheduleHide();
4686
+ }
4687
+ _setListeners() {
4688
+ EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true));
4689
+ EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false));
4690
+ EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true));
4691
+ EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
4692
+ }
4693
+ _clearTimeout() {
4694
+ clearTimeout(this._timeout);
4695
+ this._timeout = null;
4696
+ }
4697
+ static jQueryInterface(config) {
4698
+ return this.each(function() {
4699
+ const data = Toast.getOrCreateInstance(this, config);
4700
+ if (typeof config === "string") {
4701
+ if (typeof data[config] === "undefined") throw new TypeError(`No method named "${config}"`);
4702
+ data[config](this);
4703
+ }
4704
+ });
4705
+ }
4706
+ };
4707
+ /**
4708
+ * Data API implementation
4709
+ */
4710
+ enableDismissTrigger(Toast);
4711
+ /**
4712
+ * jQuery
4713
+ */
4714
+ defineJQueryPlugin(Toast);
4715
+ }));
4716
+ //#endregion
4717
+ export { init_bootstrap as i, init_bootstrap_esm as n, init_bootstrap_icons as r, Modal as t };