PageSourceSearch

https://www.zenith-amiens.fr/_assets/67270d18075a0cd82a2b1459f1fa2652/assets/js/index.js?1765952522

js zenith-amiens.fr collected 2026-10-05 02:41:37 UTC 293,786 bytes, 8,095 lines download raw bytes

vendor: 4,280 bytes, lines 1-128
1const style$1 = "";
2var top = "top";
3var bottom = "bottom";
4var right = "right";
5var left = "left";
6var auto = "auto";
7var basePlacements = [top, bottom, right, left];
8var start = "start";
9var end = "end";
10var clippingParents = "clippingParents";
11var viewport = "viewport";
12var popper = "popper";
13var reference = "reference";
14var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
15    return acc.concat([placement + "-" + start, placement + "-" + end]);
16}, []);
17var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
18    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
19}, []);
20var beforeRead = "beforeRead";
21var read = "read";
22var afterRead = "afterRead";
23var beforeMain = "beforeMain";
24var main = "main";
25var afterMain = "afterMain";
26var beforeWrite = "beforeWrite";
27var write = "write";
28var afterWrite = "afterWrite";
29var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
30function getNodeName(element) {
31    return element ? (element.nodeName || "").toLowerCase() : null;
32}
33function getWindow(node) {
34    if (node == null) {
35        return window;
36    }
37    if (node.toString() !== "[object Window]") {
38        var ownerDocument = node.ownerDocument;
39        return ownerDocument ? ownerDocument.defaultView || window : window;
40    }
41    return node;
42}
43function isElement$1(node) {
44    var OwnElement = getWindow(node).Element;
45    return node instanceof OwnElement || node instanceof Element;
46}
47function isHTMLElement$1(node) {
48    var OwnElement = getWindow(node).HTMLElement;
49    return node instanceof OwnElement || node instanceof HTMLElement;
50}
51function isShadowRoot(node) {
52    if (typeof ShadowRoot === "undefined") {
53        return false;
54    }
55    var OwnElement = getWindow(node).ShadowRoot;
56    return node instanceof OwnElement || node instanceof ShadowRoot;
57}
58function applyStyles(_ref) {
59    var state = _ref.state;
60    Object.keys(state.elements).forEach(function(name) {
61        var style2 = state.styles[name] || {};
62        var attributes = state.attributes[name] || {};
63        var element = state.elements[name];
64        if (!isHTMLElement$1(element) || !getNodeName(element)) {
65            return;
66        }
67        Object.assign(element.style, style2);
68        Object.keys(attributes).forEach(function(name2) {
69            var value = attributes[name2];
70            if (value === false) {
71                element.removeAttribute(name2);
72            } else {
73                element.setAttribute(name2, value === true ? "" : value);
74            }
75        });
76    });
77}
78function effect$2(_ref2) {
79    var state = _ref2.state;
80    var initialStyles = {
81        popper: {
82            position: state.options.strategy,
83            left: "0",
84            top: "0",
85            margin: "0"
86        },
87        arrow: {
88            position: "absolute"
89        },
90        reference: {}
91    };
92    Object.assign(state.elements.popper.style, initialStyles.popper);
93    state.styles = initialStyles;
94    if (state.elements.arrow) {
95        Object.assign(state.elements.arrow.style, initialStyles.arrow);
96    }
97    return function() {
98        Object.keys(state.elements).forEach(function(name) {
99            var element = state.elements[name];
100            var attributes = state.attributes[name] || {};
101            var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
102            var style2 = styleProperties.reduce(function(style3, property) {
103                style3[property] = "";
104                return style3;
105            }, {});
106            if (!isHTMLElement$1(element) || !getNodeName(element)) {
107                return;
108            }
109            Object.assign(element.style, style2);
110            Object.keys(attributes).forEach(function(attribute) {
111                element.removeAttribute(attribute);
112            });
113        });
114    };
115}
116const applyStyles$1 = {
117    name: "applyStyles",
118    enabled: true,
119    phase: "write",
120    fn: applyStyles,
121    effect: effect$2,
122    requires: ["computeStyles"]
123};
124function getBasePlacement(placement) {
125    return placement.split("-")[0];
126}
127var max$1 = Math.max;
128var min$1 = Math.min;
vendor: 14,391 bytes, lines 129-491
129var round = Math.round;
130function getUAString() {
131    var uaData = navigator.userAgentData;
132    if (uaData != null && uaData.brands) {
133        return uaData.brands.map(function(item) {
134            return item.brand + "/" + item.version;
135        }).join(" ");
136    }
137    return navigator.userAgent;
138}
139function isLayoutViewport() {
140    return !/^((?!chrome|android).)*safari/i.test(getUAString());
141}
142function getBoundingClientRect(element, includeScale, isFixedStrategy) {
143    if (includeScale === void 0) {
144        includeScale = false;
145    }
146    if (isFixedStrategy === void 0) {
147        isFixedStrategy = false;
148    }
149    var clientRect = element.getBoundingClientRect();
150    var scaleX = 1;
151    var scaleY = 1;
152    if (includeScale && isHTMLElement$1(element)) {
153        scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
154        scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
155    }
156    var _ref = isElement$1(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
157    var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
158    var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
159    var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
160    var width = clientRect.width / scaleX;
161    var height = clientRect.height / scaleY;
162    return {
163        width,
164        height,
165        top: y,
166        right: x + width,
167        bottom: y + height,
168        left: x,
169        x,
170        y
171    };
172}
173function getLayoutRect(element) {
174    var clientRect = getBoundingClientRect(element);
175    var width = element.offsetWidth;
176    var height = element.offsetHeight;
177    if (Math.abs(clientRect.width - width) <= 1) {
178        width = clientRect.width;
179    }
180    if (Math.abs(clientRect.height - height) <= 1) {
181        height = clientRect.height;
182    }
183    return {
184        x: element.offsetLeft,
185        y: element.offsetTop,
186        width,
187        height
188    };
189}
190function contains(parent, child2) {
191    var rootNode = child2.getRootNode && child2.getRootNode();
192    if (parent.contains(child2)) {
193        return true;
194    } else if (rootNode && isShadowRoot(rootNode)) {
195        var next = child2;
196        do {
197            if (next && parent.isSameNode(next)) {
198                return true;
199            }
200            next = next.parentNode || next.host;
201        } while (next);
202    }
203    return false;
204}
205function getComputedStyle$1(element) {
206    return getWindow(element).getComputedStyle(element);
207}
208function isTableElement(element) {
209    return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
210}
211function getDocumentElement(element) {
212    return ((isElement$1(element) ? element.ownerDocument : (
213        // $FlowFixMe[prop-missing]
214        element.document
215    )) || window.document).documentElement;
216}
217function getParentNode(element) {
218    if (getNodeName(element) === "html") {
219        return element;
220    }
221    return (
222        // this is a quicker (but less type safe) way to save quite some bytes from the bundle
223        // $FlowFixMe[incompatible-return]
224        // $FlowFixMe[prop-missing]
225        element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
226        element.parentNode || // DOM Element detected
227        (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
228        // $FlowFixMe[incompatible-call]: HTMLElement is a Node
229        getDocumentElement(element)
230    );
231}
232function getTrueOffsetParent(element) {
233    if (!isHTMLElement$1(element) || // https://github.com/popperjs/popper-core/issues/837
234        getComputedStyle$1(element).position === "fixed") {
235        return null;
236    }
237    return element.offsetParent;
238}
239function getContainingBlock(element) {
240    var isFirefox = /firefox/i.test(getUAString());
241    var isIE = /Trident/i.test(getUAString());
242    if (isIE && isHTMLElement$1(element)) {
243        var elementCss = getComputedStyle$1(element);
244        if (elementCss.position === "fixed") {
245            return null;
246        }
247    }
248    var currentNode = getParentNode(element);
249    if (isShadowRoot(currentNode)) {
250        currentNode = currentNode.host;
251    }
252    while (isHTMLElement$1(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
253        var css = getComputedStyle$1(currentNode);
254        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") {
255            return currentNode;
256        } else {
257            currentNode = currentNode.parentNode;
258        }
259    }
260    return null;
261}
262function getOffsetParent(element) {
263    var window2 = getWindow(element);
264    var offsetParent = getTrueOffsetParent(element);
265    while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") {
266        offsetParent = getTrueOffsetParent(offsetParent);
267    }
268    if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) {
269        return window2;
270    }
271    return offsetParent || getContainingBlock(element) || window2;
272}
273function getMainAxisFromPlacement(placement) {
274    return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
275}
276function within(min2, value, max2) {
277    return max$1(min2, min$1(value, max2));
278}
279function withinMaxClamp(min2, value, max2) {
280    var v = within(min2, value, max2);
281    return v > max2 ? max2 : v;
282}
283function getFreshSideObject() {
284    return {
285        top: 0,
286        right: 0,
287        bottom: 0,
288        left: 0
289    };
290}
291function mergePaddingObject(paddingObject) {
292    return Object.assign({}, getFreshSideObject(), paddingObject);
293}
294function expandToHashMap(value, keys) {
295    return keys.reduce(function(hashMap, key) {
296        hashMap[key] = value;
297        return hashMap;
298    }, {});
299}
300var toPaddingObject = function toPaddingObject2(padding, state) {
301    padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
302        placement: state.placement
303    })) : padding;
304    return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
305};
306function arrow(_ref) {
307    var _state$modifiersData$;
308    var state = _ref.state, name = _ref.name, options = _ref.options;
309    var arrowElement = state.elements.arrow;
310    var popperOffsets2 = state.modifiersData.popperOffsets;
311    var basePlacement = getBasePlacement(state.placement);
312    var axis = getMainAxisFromPlacement(basePlacement);
313    var isVertical = [left, right].indexOf(basePlacement) >= 0;
314    var len = isVertical ? "height" : "width";
315    if (!arrowElement || !popperOffsets2) {
316        return;
317    }
318    var paddingObject = toPaddingObject(options.padding, state);
319    var arrowRect = getLayoutRect(arrowElement);
320    var minProp = axis === "y" ? top : left;
321    var maxProp = axis === "y" ? bottom : right;
322    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
323    var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
324    var arrowOffsetParent = getOffsetParent(arrowElement);
325    var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
326    var centerToReference = endDiff / 2 - startDiff / 2;
327    var min2 = paddingObject[minProp];
328    var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
329    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
330    var offset2 = within(min2, center, max2);
331    var axisProp = axis;
332    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
333}
334function effect$1(_ref2) {
335    var state = _ref2.state, options = _ref2.options;
336    var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
337    if (arrowElement == null) {
338        return;
339    }
340    if (typeof arrowElement === "string") {
341        arrowElement = state.elements.popper.querySelector(arrowElement);
342        if (!arrowElement) {
343            return;
344        }
345    }
346    if (!contains(state.elements.popper, arrowElement)) {
347        return;
348    }
349    state.elements.arrow = arrowElement;
350}
351const arrow$1 = {
352    name: "arrow",
353    enabled: true,
354    phase: "main",
355    fn: arrow,
356    effect: effect$1,
357    requires: ["popperOffsets"],
358    requiresIfExists: ["preventOverflow"]
359};
360function getVariation(placement) {
361    return placement.split("-")[1];
362}
363var unsetSides = {
364    top: "auto",
365    right: "auto",
366    bottom: "auto",
367    left: "auto"
368};
369function roundOffsetsByDPR(_ref) {
370    var x = _ref.x, y = _ref.y;
371    var win = window;
372    var dpr = win.devicePixelRatio || 1;
373    return {
374        x: round(x * dpr) / dpr || 0,
375        y: round(y * dpr) / dpr || 0
376    };
377}
378function mapToStyles(_ref2) {
379    var _Object$assign2;
380    var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
381    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;
382    var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
383        x,
384        y
385    }) : {
386        x,
387        y
388    };
389    x = _ref3.x;
390    y = _ref3.y;
391    var hasX = offsets.hasOwnProperty("x");
392    var hasY = offsets.hasOwnProperty("y");
393    var sideX = left;
394    var sideY = top;
395    var win = window;
396    if (adaptive) {
397        var offsetParent = getOffsetParent(popper2);
398        var heightProp = "clientHeight";
399        var widthProp = "clientWidth";
400        if (offsetParent === getWindow(popper2)) {
401            offsetParent = getDocumentElement(popper2);
402            if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") {
403                heightProp = "scrollHeight";
404                widthProp = "scrollWidth";
405            }
406        }
407        offsetParent = offsetParent;
408        if (placement === top || (placement === left || placement === right) && variation === end) {
409            sideY = bottom;
410            var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
411                // $FlowFixMe[prop-missing]
412                offsetParent[heightProp]
413            );
414            y -= offsetY - popperRect.height;
415            y *= gpuAcceleration ? 1 : -1;
416        }
417        if (placement === left || (placement === top || placement === bottom) && variation === end) {
418            sideX = right;
419            var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
420                // $FlowFixMe[prop-missing]
421                offsetParent[widthProp]
422            );
423            x -= offsetX - popperRect.width;
424            x *= gpuAcceleration ? 1 : -1;
425        }
426    }
427    var commonStyles = Object.assign({
428        position
429    }, adaptive && unsetSides);
430    var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
431        x,
432        y
433    }) : {
434        x,
435        y
436    };
437    x = _ref4.x;
438    y = _ref4.y;
439    if (gpuAcceleration) {
440        var _Object$assign;
441        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));
442    }
443    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
444}
445function computeStyles(_ref5) {
446    var state = _ref5.state, options = _ref5.options;
447    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;
448    var commonStyles = {
449        placement: getBasePlacement(state.placement),
450        variation: getVariation(state.placement),
451        popper: state.elements.popper,
452        popperRect: state.rects.popper,
453        gpuAcceleration,
454        isFixed: state.options.strategy === "fixed"
455    };
456    if (state.modifiersData.popperOffsets != null) {
457        state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
458            offsets: state.modifiersData.popperOffsets,
459            position: state.options.strategy,
460            adaptive,
461            roundOffsets
462        })));
463    }
464    if (state.modifiersData.arrow != null) {
465        state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
466            offsets: state.modifiersData.arrow,
467            position: "absolute",
468            adaptive: false,
469            roundOffsets
470        })));
471    }
472    state.attributes.popper = Object.assign({}, state.attributes.popper, {
473        "data-popper-placement": state.placement
474    });
475}
476const computeStyles$1 = {
477    name: "computeStyles",
478    enabled: true,
479    phase: "beforeWrite",
480    fn: computeStyles,
481    data: {}
482};
483var passive = {
484    passive: true
485};
486function effect(_ref) {
487    var state = _ref.state, instance = _ref.instance, options = _ref.options;
488    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;
489    var window2 = getWindow(state.elements.popper);
490    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
491    if (scroll) {
vendor: 1,871 bytes, lines 492-560
492        scrollParents.forEach(function(scrollParent) {
493            scrollParent.addEventListener("scroll", instance.update, passive);
494        });
495    }
496    if (resize) {
497        window2.addEventListener("resize", instance.update, passive);
498    }
499    return function() {
500        if (scroll) {
501            scrollParents.forEach(function(scrollParent) {
502                scrollParent.removeEventListener("scroll", instance.update, passive);
503            });
504        }
505        if (resize) {
506            window2.removeEventListener("resize", instance.update, passive);
507        }
508    };
509}
510const eventListeners = {
511    name: "eventListeners",
512    enabled: true,
513    phase: "write",
514    fn: function fn() {
515    },
516    effect,
517    data: {}
518};
519var hash$1 = {
520    left: "right",
521    right: "left",
522    bottom: "top",
523    top: "bottom"
524};
525function getOppositePlacement(placement) {
526    return placement.replace(/left|right|bottom|top/g, function(matched) {
527        return hash$1[matched];
528    });
529}
530var hash = {
531    start: "end",
532    end: "start"
533};
534function getOppositeVariationPlacement(placement) {
535    return placement.replace(/start|end/g, function(matched) {
536        return hash[matched];
537    });
538}
539function getWindowScroll(node) {
540    var win = getWindow(node);
541    var scrollLeft = win.pageXOffset;
542    var scrollTop = win.pageYOffset;
543    return {
544        scrollLeft,
545        scrollTop
546    };
547}
548function getWindowScrollBarX(element) {
549    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
550}
551function getViewportRect(element, strategy) {
552    var win = getWindow(element);
553    var html = getDocumentElement(element);
554    var visualViewport = win.visualViewport;
555    var width = html.clientWidth;
556    var height = html.clientHeight;
557    var x = 0;
558    var y = 0;
559    if (visualViewport) {
560        width = visualViewport.width;
vendor: 1,041 bytes, lines 561-584
561        height = visualViewport.height;
562        var layoutViewport = isLayoutViewport();
563        if (layoutViewport || !layoutViewport && strategy === "fixed") {
564            x = visualViewport.offsetLeft;
565            y = visualViewport.offsetTop;
566        }
567    }
568    return {
569        width,
570        height,
571        x: x + getWindowScrollBarX(element),
572        y
573    };
574}
575function getDocumentRect(element) {
576    var _element$ownerDocumen;
577    var html = getDocumentElement(element);
578    var winScroll = getWindowScroll(element);
579    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
580    var width = max$1(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
581    var height = max$1(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
582    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
583    var y = -winScroll.scrollTop;
584    if (getComputedStyle$1(body || html).direction === "rtl") {
vendor: 20,735 bytes, lines 585-1052
585        x += max$1(html.clientWidth, body ? body.clientWidth : 0) - width;
586    }
587    return {
588        width,
589        height,
590        x,
591        y
592    };
593}
594function isScrollParent(element) {
595    var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
596    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
597}
598function getScrollParent(node) {
599    if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
600        return node.ownerDocument.body;
601    }
602    if (isHTMLElement$1(node) && isScrollParent(node)) {
603        return node;
604    }
605    return getScrollParent(getParentNode(node));
606}
607function listScrollParents(element, list) {
608    var _element$ownerDocumen;
609    if (list === void 0) {
610        list = [];
611    }
612    var scrollParent = getScrollParent(element);
613    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
614    var win = getWindow(scrollParent);
615    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
616    var updatedList = list.concat(target);
617    return isBody ? updatedList : (
618        // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
619        updatedList.concat(listScrollParents(getParentNode(target)))
620    );
621}
622function rectToClientRect(rect2) {
623    return Object.assign({}, rect2, {
624        left: rect2.x,
625        top: rect2.y,
626        right: rect2.x + rect2.width,
627        bottom: rect2.y + rect2.height
628    });
629}
630function getInnerBoundingClientRect(element, strategy) {
631    var rect2 = getBoundingClientRect(element, false, strategy === "fixed");
632    rect2.top = rect2.top + element.clientTop;
633    rect2.left = rect2.left + element.clientLeft;
634    rect2.bottom = rect2.top + element.clientHeight;
635    rect2.right = rect2.left + element.clientWidth;
636    rect2.width = element.clientWidth;
637    rect2.height = element.clientHeight;
638    rect2.x = rect2.left;
639    rect2.y = rect2.top;
640    return rect2;
641}
642function getClientRectFromMixedType(element, clippingParent, strategy) {
643    return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
644}
645function getClippingParents(element) {
646    var clippingParents2 = listScrollParents(getParentNode(element));
647    var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0;
648    var clipperElement = canEscapeClipping && isHTMLElement$1(element) ? getOffsetParent(element) : element;
649    if (!isElement$1(clipperElement)) {
650        return [];
651    }
652    return clippingParents2.filter(function(clippingParent) {
653        return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
654    });
655}
656function getClippingRect(element, boundary, rootBoundary, strategy) {
657    var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
658    var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
659    var firstClippingParent = clippingParents2[0];
660    var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
661        var rect2 = getClientRectFromMixedType(element, clippingParent, strategy);
662        accRect.top = max$1(rect2.top, accRect.top);
663        accRect.right = min$1(rect2.right, accRect.right);
664        accRect.bottom = min$1(rect2.bottom, accRect.bottom);
665        accRect.left = max$1(rect2.left, accRect.left);
666        return accRect;
667    }, getClientRectFromMixedType(element, firstClippingParent, strategy));
668    clippingRect.width = clippingRect.right - clippingRect.left;
669    clippingRect.height = clippingRect.bottom - clippingRect.top;
670    clippingRect.x = clippingRect.left;
671    clippingRect.y = clippingRect.top;
672    return clippingRect;
673}
674function computeOffsets(_ref) {
675    var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
676    var basePlacement = placement ? getBasePlacement(placement) : null;
677    var variation = placement ? getVariation(placement) : null;
678    var commonX = reference2.x + reference2.width / 2 - element.width / 2;
679    var commonY = reference2.y + reference2.height / 2 - element.height / 2;
680    var offsets;
681    switch (basePlacement) {
682        case top:
683            offsets = {
684                x: commonX,
685                y: reference2.y - element.height
686            };
687            break;
688        case bottom:
689            offsets = {
690                x: commonX,
691                y: reference2.y + reference2.height
692            };
693            break;
694        case right:
695            offsets = {
696                x: reference2.x + reference2.width,
697                y: commonY
698            };
699            break;
700        case left:
701            offsets = {
702                x: reference2.x - element.width,
703                y: commonY
704            };
705            break;
706        default:
707            offsets = {
708                x: reference2.x,
709                y: reference2.y
710            };
711    }
712    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
713    if (mainAxis != null) {
714        var len = mainAxis === "y" ? "height" : "width";
715        switch (variation) {
716            case start:
717                offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
718                break;
719            case end:
720                offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
721                break;
722        }
723    }
724    return offsets;
725}
726function detectOverflow(state, options) {
727    if (options === void 0) {
728        options = {};
729    }
730    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;
731    var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
732    var altContext = elementContext === popper ? reference : popper;
733    var popperRect = state.rects.popper;
734    var element = state.elements[altBoundary ? altContext : elementContext];
735    var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
736    var referenceClientRect = getBoundingClientRect(state.elements.reference);
737    var popperOffsets2 = computeOffsets({
738        reference: referenceClientRect,
739        element: popperRect,
740        strategy: "absolute",
741        placement
742    });
743    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
744    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
745    var overflowOffsets = {
746        top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
747        bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
748        left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
749        right: elementClientRect.right - clippingClientRect.right + paddingObject.right
750    };
751    var offsetData = state.modifiersData.offset;
752    if (elementContext === popper && offsetData) {
753        var offset2 = offsetData[placement];
754        Object.keys(overflowOffsets).forEach(function(key) {
755            var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
756            var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
757            overflowOffsets[key] += offset2[axis] * multiply;
758        });
759    }
760    return overflowOffsets;
761}
762function computeAutoPlacement(state, options) {
763    if (options === void 0) {
764        options = {};
765    }
766    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;
767    var variation = getVariation(placement);
768    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
769        return getVariation(placement2) === variation;
770    }) : basePlacements;
771    var allowedPlacements = placements$1.filter(function(placement2) {
772        return allowedAutoPlacements.indexOf(placement2) >= 0;
773    });
774    if (allowedPlacements.length === 0) {
775        allowedPlacements = placements$1;
776    }
777    var overflows = allowedPlacements.reduce(function(acc, placement2) {
778        acc[placement2] = detectOverflow(state, {
779            placement: placement2,
780            boundary,
781            rootBoundary,
782            padding
783        })[getBasePlacement(placement2)];
784        return acc;
785    }, {});
786    return Object.keys(overflows).sort(function(a, b) {
787        return overflows[a] - overflows[b];
788    });
789}
790function getExpandedFallbackPlacements(placement) {
791    if (getBasePlacement(placement) === auto) {
792        return [];
793    }
794    var oppositePlacement = getOppositePlacement(placement);
795    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
796}
797function flip(_ref) {
798    var state = _ref.state, options = _ref.options, name = _ref.name;
799    if (state.modifiersData[name]._skip) {
800        return;
801    }
802    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;
803    var preferredPlacement = state.options.placement;
804    var basePlacement = getBasePlacement(preferredPlacement);
805    var isBasePlacement = basePlacement === preferredPlacement;
806    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
807    var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
808        return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
809            placement: placement2,
810            boundary,
811            rootBoundary,
812            padding,
813            flipVariations,
814            allowedAutoPlacements
815        }) : placement2);
816    }, []);
817    var referenceRect = state.rects.reference;
818    var popperRect = state.rects.popper;
819    var checksMap = /* @__PURE__ */ new Map();
820    var makeFallbackChecks = true;
821    var firstFittingPlacement = placements2[0];
822    for (var i = 0; i < placements2.length; i++) {
823        var placement = placements2[i];
824        var _basePlacement = getBasePlacement(placement);
825        var isStartVariation = getVariation(placement) === start;
826        var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
827        var len = isVertical ? "width" : "height";
828        var overflow = detectOverflow(state, {
829            placement,
830            boundary,
831            rootBoundary,
832            altBoundary,
833            padding
834        });
835        var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
836        if (referenceRect[len] > popperRect[len]) {
837            mainVariationSide = getOppositePlacement(mainVariationSide);
838        }
839        var altVariationSide = getOppositePlacement(mainVariationSide);
840        var checks = [];
841        if (checkMainAxis) {
842            checks.push(overflow[_basePlacement] <= 0);
843        }
844        if (checkAltAxis) {
845            checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
846        }
847        if (checks.every(function(check) {
848            return check;
849        })) {
850            firstFittingPlacement = placement;
851            makeFallbackChecks = false;
852            break;
853        }
854        checksMap.set(placement, checks);
855    }
856    if (makeFallbackChecks) {
857        var numberOfChecks = flipVariations ? 3 : 1;
858        var _loop = function _loop2(_i2) {
859            var fittingPlacement = placements2.find(function(placement2) {
860                var checks2 = checksMap.get(placement2);
861                if (checks2) {
862                    return checks2.slice(0, _i2).every(function(check) {
863                        return check;
864                    });
865                }
866            });
867            if (fittingPlacement) {
868                firstFittingPlacement = fittingPlacement;
869                return "break";
870            }
871        };
872        for (var _i = numberOfChecks; _i > 0; _i--) {
873            var _ret = _loop(_i);
874            if (_ret === "break")
875                break;
876        }
877    }
878    if (state.placement !== firstFittingPlacement) {
879        state.modifiersData[name]._skip = true;
880        state.placement = firstFittingPlacement;
881        state.reset = true;
882    }
883}
884const flip$1 = {
885    name: "flip",
886    enabled: true,
887    phase: "main",
888    fn: flip,
889    requiresIfExists: ["offset"],
890    data: {
891        _skip: false
892    }
893};
894function getSideOffsets(overflow, rect2, preventedOffsets) {
895    if (preventedOffsets === void 0) {
896        preventedOffsets = {
897            x: 0,
898            y: 0
899        };
900    }
901    return {
902        top: overflow.top - rect2.height - preventedOffsets.y,
903        right: overflow.right - rect2.width + preventedOffsets.x,
904        bottom: overflow.bottom - rect2.height + preventedOffsets.y,
905        left: overflow.left - rect2.width - preventedOffsets.x
906    };
907}
908function isAnySideFullyClipped(overflow) {
909    return [top, right, bottom, left].some(function(side) {
910        return overflow[side] >= 0;
911    });
912}
913function hide(_ref) {
914    var state = _ref.state, name = _ref.name;
915    var referenceRect = state.rects.reference;
916    var popperRect = state.rects.popper;
917    var preventedOffsets = state.modifiersData.preventOverflow;
918    var referenceOverflow = detectOverflow(state, {
919        elementContext: "reference"
920    });
921    var popperAltOverflow = detectOverflow(state, {
922        altBoundary: true
923    });
924    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
925    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
926    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
927    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
928    state.modifiersData[name] = {
929        referenceClippingOffsets,
930        popperEscapeOffsets,
931        isReferenceHidden,
932        hasPopperEscaped
933    };
934    state.attributes.popper = Object.assign({}, state.attributes.popper, {
935        "data-popper-reference-hidden": isReferenceHidden,
936        "data-popper-escaped": hasPopperEscaped
937    });
938}
939const hide$1 = {
940    name: "hide",
941    enabled: true,
942    phase: "main",
943    requiresIfExists: ["preventOverflow"],
944    fn: hide
945};
946function distanceAndSkiddingToXY(placement, rects, offset2) {
947    var basePlacement = getBasePlacement(placement);
948    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
949    var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
950        placement
951    })) : offset2, skidding = _ref[0], distance = _ref[1];
952    skidding = skidding || 0;
953    distance = (distance || 0) * invertDistance;
954    return [left, right].indexOf(basePlacement) >= 0 ? {
955        x: distance,
956        y: skidding
957    } : {
958        x: skidding,
959        y: distance
960    };
961}
962function offset(_ref2) {
963    var state = _ref2.state, options = _ref2.options, name = _ref2.name;
964    var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
965    var data = placements.reduce(function(acc, placement) {
966        acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
967        return acc;
968    }, {});
969    var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
970    if (state.modifiersData.popperOffsets != null) {
971        state.modifiersData.popperOffsets.x += x;
972        state.modifiersData.popperOffsets.y += y;
973    }
974    state.modifiersData[name] = data;
975}
976const offset$1 = {
977    name: "offset",
978    enabled: true,
979    phase: "main",
980    requires: ["popperOffsets"],
981    fn: offset
982};
983function popperOffsets(_ref) {
984    var state = _ref.state, name = _ref.name;
985    state.modifiersData[name] = computeOffsets({
986        reference: state.rects.reference,
987        element: state.rects.popper,
988        strategy: "absolute",
989        placement: state.placement
990    });
991}
992const popperOffsets$1 = {
993    name: "popperOffsets",
994    enabled: true,
995    phase: "read",
996    fn: popperOffsets,
997    data: {}
998};
999function getAltAxis(axis) {
1000    return axis === "x" ? "y" : "x";
1001}
1002function preventOverflow(_ref) {
1003    var state = _ref.state, options = _ref.options, name = _ref.name;
1004    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;
1005    var overflow = detectOverflow(state, {
1006        boundary,
1007        rootBoundary,
1008        padding,
1009        altBoundary
1010    });
1011    var basePlacement = getBasePlacement(state.placement);
1012    var variation = getVariation(state.placement);
1013    var isBasePlacement = !variation;
1014    var mainAxis = getMainAxisFromPlacement(basePlacement);
1015    var altAxis = getAltAxis(mainAxis);
1016    var popperOffsets2 = state.modifiersData.popperOffsets;
1017    var referenceRect = state.rects.reference;
1018    var popperRect = state.rects.popper;
1019    var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
1020        placement: state.placement
1021    })) : tetherOffset;
1022    var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
1023        mainAxis: tetherOffsetValue,
1024        altAxis: tetherOffsetValue
1025    } : Object.assign({
1026        mainAxis: 0,
1027        altAxis: 0
1028    }, tetherOffsetValue);
1029    var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
1030    var data = {
1031        x: 0,
1032        y: 0
1033    };
1034    if (!popperOffsets2) {
1035        return;
1036    }
1037    if (checkMainAxis) {
1038        var _offsetModifierState$;
1039        var mainSide = mainAxis === "y" ? top : left;
1040        var altSide = mainAxis === "y" ? bottom : right;
1041        var len = mainAxis === "y" ? "height" : "width";
1042        var offset2 = popperOffsets2[mainAxis];
1043        var min2 = offset2 + overflow[mainSide];
1044        var max2 = offset2 - overflow[altSide];
1045        var additive = tether ? -popperRect[len] / 2 : 0;
1046        var minLen = variation === start ? referenceRect[len] : popperRect[len];
1047        var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
1048        var arrowElement = state.elements.arrow;
1049        var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
1050            width: 0,
1051            height: 0
1052        };
vendor: 5,088 bytes, lines 1053-1151
1053        var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
1054        var arrowPaddingMin = arrowPaddingObject[mainSide];
1055        var arrowPaddingMax = arrowPaddingObject[altSide];
1056        var arrowLen = within(0, referenceRect[len], arrowRect[len]);
1057        var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
1058        var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
1059        var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
1060        var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
1061        var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
1062        var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
1063        var tetherMax = offset2 + maxOffset - offsetModifierValue;
1064        var preventedOffset = within(tether ? min$1(min2, tetherMin) : min2, offset2, tether ? max$1(max2, tetherMax) : max2);
1065        popperOffsets2[mainAxis] = preventedOffset;
1066        data[mainAxis] = preventedOffset - offset2;
1067    }
1068    if (checkAltAxis) {
1069        var _offsetModifierState$2;
1070        var _mainSide = mainAxis === "x" ? top : left;
1071        var _altSide = mainAxis === "x" ? bottom : right;
1072        var _offset = popperOffsets2[altAxis];
1073        var _len = altAxis === "y" ? "height" : "width";
1074        var _min = _offset + overflow[_mainSide];
1075        var _max = _offset - overflow[_altSide];
1076        var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
1077        var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
1078        var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
1079        var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
1080        var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
1081        popperOffsets2[altAxis] = _preventedOffset;
1082        data[altAxis] = _preventedOffset - _offset;
1083    }
1084    state.modifiersData[name] = data;
1085}
1086const preventOverflow$1 = {
1087    name: "preventOverflow",
1088    enabled: true,
1089    phase: "main",
1090    fn: preventOverflow,
1091    requiresIfExists: ["offset"]
1092};
1093function getHTMLElementScroll(element) {
1094    return {
1095        scrollLeft: element.scrollLeft,
1096        scrollTop: element.scrollTop
1097    };
1098}
1099function getNodeScroll(node) {
1100    if (node === getWindow(node) || !isHTMLElement$1(node)) {
1101        return getWindowScroll(node);
1102    } else {
1103        return getHTMLElementScroll(node);
1104    }
1105}
1106function isElementScaled(element) {
1107    var rect2 = element.getBoundingClientRect();
1108    var scaleX = round(rect2.width) / element.offsetWidth || 1;
1109    var scaleY = round(rect2.height) / element.offsetHeight || 1;
1110    return scaleX !== 1 || scaleY !== 1;
1111}
1112function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
1113    if (isFixed === void 0) {
1114        isFixed = false;
1115    }
1116    var isOffsetParentAnElement = isHTMLElement$1(offsetParent);
1117    var offsetParentIsScaled = isHTMLElement$1(offsetParent) && isElementScaled(offsetParent);
1118    var documentElement = getDocumentElement(offsetParent);
1119    var rect2 = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
1120    var scroll = {
1121        scrollLeft: 0,
1122        scrollTop: 0
1123    };
1124    var offsets = {
1125        x: 0,
1126        y: 0
1127    };
1128    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
1129        if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
1130            isScrollParent(documentElement)) {
1131            scroll = getNodeScroll(offsetParent);
1132        }
1133        if (isHTMLElement$1(offsetParent)) {
1134            offsets = getBoundingClientRect(offsetParent, true);
1135            offsets.x += offsetParent.clientLeft;
1136            offsets.y += offsetParent.clientTop;
1137        } else if (documentElement) {
1138            offsets.x = getWindowScrollBarX(documentElement);
1139        }
1140    }
1141    return {
1142        x: rect2.left + scroll.scrollLeft - offsets.x,
1143        y: rect2.top + scroll.scrollTop - offsets.y,
1144        width: rect2.width,
1145        height: rect2.height
1146    };
1147}
1148function order(modifiers) {
1149    var map = /* @__PURE__ */ new Map();
1150    var visited = /* @__PURE__ */ new Set();
1151    var result = [];
vendor: 4,217 bytes, lines 1152-1260
1152    modifiers.forEach(function(modifier) {
1153        map.set(modifier.name, modifier);
1154    });
1155    function sort(modifier) {
1156        visited.add(modifier.name);
1157        var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
1158        requires.forEach(function(dep) {
1159            if (!visited.has(dep)) {
1160                var depModifier = map.get(dep);
1161                if (depModifier) {
1162                    sort(depModifier);
1163                }
1164            }
1165        });
1166        result.push(modifier);
1167    }
1168    modifiers.forEach(function(modifier) {
1169        if (!visited.has(modifier.name)) {
1170            sort(modifier);
1171        }
1172    });
1173    return result;
1174}
1175function orderModifiers(modifiers) {
1176    var orderedModifiers = order(modifiers);
1177    return modifierPhases.reduce(function(acc, phase) {
1178        return acc.concat(orderedModifiers.filter(function(modifier) {
1179            return modifier.phase === phase;
1180        }));
1181    }, []);
1182}
1183function debounce(fn2) {
1184    var pending;
1185    return function() {
1186        if (!pending) {
1187            pending = new Promise(function(resolve) {
1188                Promise.resolve().then(function() {
1189                    pending = void 0;
1190                    resolve(fn2());
1191                });
1192            });
1193        }
1194        return pending;
1195    };
1196}
1197function mergeByName(modifiers) {
1198    var merged = modifiers.reduce(function(merged2, current) {
1199        var existing = merged2[current.name];
1200        merged2[current.name] = existing ? Object.assign({}, existing, current, {
1201            options: Object.assign({}, existing.options, current.options),
1202            data: Object.assign({}, existing.data, current.data)
1203        }) : current;
1204        return merged2;
1205    }, {});
1206    return Object.keys(merged).map(function(key) {
1207        return merged[key];
1208    });
1209}
1210var DEFAULT_OPTIONS = {
1211    placement: "bottom",
1212    modifiers: [],
1213    strategy: "absolute"
1214};
1215function areValidElements() {
1216    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1217        args[_key] = arguments[_key];
1218    }
1219    return !args.some(function(element) {
1220        return !(element && typeof element.getBoundingClientRect === "function");
1221    });
1222}
1223function popperGenerator(generatorOptions) {
1224    if (generatorOptions === void 0) {
1225        generatorOptions = {};
1226    }
1227    var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
1228    return function createPopper2(reference2, popper2, options) {
1229        if (options === void 0) {
1230            options = defaultOptions;
1231        }
1232        var state = {
1233            placement: "bottom",
1234            orderedModifiers: [],
1235            options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
1236            modifiersData: {},
1237            elements: {
1238                reference: reference2,
1239                popper: popper2
1240            },
1241            attributes: {},
1242            styles: {}
1243        };
1244        var effectCleanupFns = [];
1245        var isDestroyed = false;
1246        var instance = {
1247            state,
1248            setOptions: function setOptions(setOptionsAction) {
1249                var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
1250                cleanupModifierEffects();
1251                state.options = Object.assign({}, defaultOptions, state.options, options2);
1252                state.scrollParents = {
1253                    reference: isElement$1(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
1254                    popper: listScrollParents(popper2)
1255                };
1256                var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
1257                state.orderedModifiers = orderedModifiers.filter(function(m) {
1258                    return m.enabled;
1259                });
1260                runModifierEffects();
vendor: 7,726 bytes, lines 1261-1465
1261                return instance.update();
1262            },
1263            // Sync update – it will always be executed, even if not necessary. This
1264            // is useful for low frequency updates where sync behavior simplifies the
1265            // logic.
1266            // For high frequency updates (e.g. `resize` and `scroll` events), always
1267            // prefer the async Popper#update method
1268            forceUpdate: function forceUpdate() {
1269                if (isDestroyed) {
1270                    return;
1271                }
1272                var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
1273                if (!areValidElements(reference3, popper3)) {
1274                    return;
1275                }
1276                state.rects = {
1277                    reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
1278                    popper: getLayoutRect(popper3)
1279                };
1280                state.reset = false;
1281                state.placement = state.options.placement;
1282                state.orderedModifiers.forEach(function(modifier) {
1283                    return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
1284                });
1285                for (var index = 0; index < state.orderedModifiers.length; index++) {
1286                    if (state.reset === true) {
1287                        state.reset = false;
1288                        index = -1;
1289                        continue;
1290                    }
1291                    var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
1292                    if (typeof fn2 === "function") {
1293                        state = fn2({
1294                            state,
1295                            options: _options,
1296                            name,
1297                            instance
1298                        }) || state;
1299                    }
1300                }
1301            },
1302            // Async and optimistically optimized update – it will not be executed if
1303            // not necessary (debounced to run at most once-per-tick)
1304            update: debounce(function() {
1305                return new Promise(function(resolve) {
1306                    instance.forceUpdate();
1307                    resolve(state);
1308                });
1309            }),
1310            destroy: function destroy() {
1311                cleanupModifierEffects();
1312                isDestroyed = true;
1313            }
1314        };
1315        if (!areValidElements(reference2, popper2)) {
1316            return instance;
1317        }
1318        instance.setOptions(options).then(function(state2) {
1319            if (!isDestroyed && options.onFirstUpdate) {
1320                options.onFirstUpdate(state2);
1321            }
1322        });
1323        function runModifierEffects() {
1324            state.orderedModifiers.forEach(function(_ref3) {
1325                var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect;
1326                if (typeof effect2 === "function") {
1327                    var cleanupFn = effect2({
1328                        state,
1329                        name,
1330                        instance,
1331                        options: options2
1332                    });
1333                    var noopFn = function noopFn2() {
1334                    };
1335                    effectCleanupFns.push(cleanupFn || noopFn);
1336                }
1337            });
1338        }
1339        function cleanupModifierEffects() {
1340            effectCleanupFns.forEach(function(fn2) {
1341                return fn2();
1342            });
1343            effectCleanupFns = [];
1344        }
1345        return instance;
1346    };
1347}
1348var createPopper$2 = /* @__PURE__ */ popperGenerator();
1349var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
1350var createPopper$1 = /* @__PURE__ */ popperGenerator({
1351    defaultModifiers: defaultModifiers$1
1352});
1353var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
1354var createPopper = /* @__PURE__ */ popperGenerator({
1355    defaultModifiers
1356});
1357const Popper = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1358    __proto__: null,
1359    afterMain,
1360    afterRead,
1361    afterWrite,
1362    applyStyles: applyStyles$1,
1363    arrow: arrow$1,
1364    auto,
1365    basePlacements,
1366    beforeMain,
1367    beforeRead,
1368    beforeWrite,
1369    bottom,
1370    clippingParents,
1371    computeStyles: computeStyles$1,
1372    createPopper,
1373    createPopperBase: createPopper$2,
1374    createPopperLite: createPopper$1,
1375    detectOverflow,
1376    end,
1377    eventListeners,
1378    flip: flip$1,
1379    hide: hide$1,
1380    left,
1381    main,
1382    modifierPhases,
1383    offset: offset$1,
1384    placements,
1385    popper,
1386    popperGenerator,
1387    popperOffsets: popperOffsets$1,
1388    preventOverflow: preventOverflow$1,
1389    read,
1390    reference,
1391    right,
1392    start,
1393    top,
1394    variationPlacements,
1395    viewport,
1396    write
1397}, Symbol.toStringTag, { value: "Module" }));
1398/*!
1399  * Bootstrap v5.2.3 (https://getbootstrap.com/)
1400  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
1401  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1402  */
1403const MAX_UID = 1e6;
1404const MILLISECONDS_MULTIPLIER = 1e3;
1405const TRANSITION_END = "transitionend";
1406const toType = (object) => {
1407    if (object === null || object === void 0) {
1408        return `${object}`;
1409    }
1410    return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
1411};
1412const getUID = (prefix) => {
1413    do {
1414        prefix += Math.floor(Math.random() * MAX_UID);
1415    } while (document.getElementById(prefix));
1416    return prefix;
1417};
1418const getSelector = (element) => {
1419    let selector = element.getAttribute("data-bs-target");
1420    if (!selector || selector === "#") {
1421        let hrefAttribute = element.getAttribute("href");
1422        if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) {
1423            return null;
1424        }
1425        if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) {
1426            hrefAttribute = `#${hrefAttribute.split("#")[1]}`;
1427        }
1428        selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null;
1429    }
1430    return selector;
1431};
1432const getSelectorFromElement = (element) => {
1433    const selector = getSelector(element);
1434    if (selector) {
1435        return document.querySelector(selector) ? selector : null;
1436    }
1437    return null;
1438};
1439const getElementFromSelector = (element) => {
1440    const selector = getSelector(element);
1441    return selector ? document.querySelector(selector) : null;
1442};
1443const getTransitionDurationFromElement = (element) => {
1444    if (!element) {
1445        return 0;
1446    }
1447    let {
1448        transitionDuration,
1449        transitionDelay
1450    } = window.getComputedStyle(element);
1451    const floatTransitionDuration = Number.parseFloat(transitionDuration);
1452    const floatTransitionDelay = Number.parseFloat(transitionDelay);
1453    if (!floatTransitionDuration && !floatTransitionDelay) {
1454        return 0;
1455    }
1456    transitionDuration = transitionDuration.split(",")[0];
1457    transitionDelay = transitionDelay.split(",")[0];
1458    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
1459};
1460const triggerTransitionEnd = (element) => {
1461    element.dispatchEvent(new Event(TRANSITION_END));
1462};
1463const isElement = (object) => {
1464    if (!object || typeof object !== "object") {
1465        return false;
vendor: 5,268 bytes, lines 1466-1622
1466    }
1467    if (typeof object.jquery !== "undefined") {
1468        object = object[0];
1469    }
1470    return typeof object.nodeType !== "undefined";
1471};
1472const getElement = (object) => {
1473    if (isElement(object)) {
1474        return object.jquery ? object[0] : object;
1475    }
1476    if (typeof object === "string" && object.length > 0) {
1477        return document.querySelector(object);
1478    }
1479    return null;
1480};
1481const isVisible = (element) => {
1482    if (!isElement(element) || element.getClientRects().length === 0) {
1483        return false;
1484    }
1485    const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible";
1486    const closedDetails = element.closest("details:not([open])");
1487    if (!closedDetails) {
1488        return elementIsVisible;
1489    }
1490    if (closedDetails !== element) {
1491        const summary = element.closest("summary");
1492        if (summary && summary.parentNode !== closedDetails) {
1493            return false;
1494        }
1495        if (summary === null) {
1496            return false;
1497        }
1498    }
1499    return elementIsVisible;
1500};
1501const isDisabled = (element) => {
1502    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
1503        return true;
1504    }
1505    if (element.classList.contains("disabled")) {
1506        return true;
1507    }
1508    if (typeof element.disabled !== "undefined") {
1509        return element.disabled;
1510    }
1511    return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false";
1512};
1513const findShadowRoot = (element) => {
1514    if (!document.documentElement.attachShadow) {
1515        return null;
1516    }
1517    if (typeof element.getRootNode === "function") {
1518        const root = element.getRootNode();
1519        return root instanceof ShadowRoot ? root : null;
1520    }
1521    if (element instanceof ShadowRoot) {
1522        return element;
1523    }
1524    if (!element.parentNode) {
1525        return null;
1526    }
1527    return findShadowRoot(element.parentNode);
1528};
1529const noop$1 = () => {
1530};
1531const reflow = (element) => {
1532    element.offsetHeight;
1533};
1534const getjQuery = () => {
1535    if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) {
1536        return window.jQuery;
1537    }
1538    return null;
1539};
1540const DOMContentLoadedCallbacks = [];
1541const onDOMContentLoaded = (callback) => {
1542    if (document.readyState === "loading") {
1543        if (!DOMContentLoadedCallbacks.length) {
1544            document.addEventListener("DOMContentLoaded", () => {
1545                for (const callback2 of DOMContentLoadedCallbacks) {
1546                    callback2();
1547                }
1548            });
1549        }
1550        DOMContentLoadedCallbacks.push(callback);
1551    } else {
1552        callback();
1553    }
1554};
1555const isRTL = () => document.documentElement.dir === "rtl";
1556const defineJQueryPlugin = (plugin) => {
1557    onDOMContentLoaded(() => {
1558        const $ = getjQuery();
1559        if ($) {
1560            const name = plugin.NAME;
1561            const JQUERY_NO_CONFLICT = $.fn[name];
1562            $.fn[name] = plugin.jQueryInterface;
1563            $.fn[name].Constructor = plugin;
1564            $.fn[name].noConflict = () => {
1565                $.fn[name] = JQUERY_NO_CONFLICT;
1566                return plugin.jQueryInterface;
1567            };
1568        }
1569    });
1570};
1571const execute = (callback) => {
1572    if (typeof callback === "function") {
1573        callback();
1574    }
1575};
1576const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
1577    if (!waitForTransition) {
1578        execute(callback);
1579        return;
1580    }
1581    const durationPadding = 5;
1582    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
1583    let called = false;
1584    const handler = ({
1585                         target
1586                     }) => {
1587        if (target !== transitionElement) {
1588            return;
1589        }
1590        called = true;
1591        transitionElement.removeEventListener(TRANSITION_END, handler);
1592        execute(callback);
1593    };
1594    transitionElement.addEventListener(TRANSITION_END, handler);
1595    setTimeout(() => {
1596        if (!called) {
1597            triggerTransitionEnd(transitionElement);
1598        }
1599    }, emulatedDuration);
1600};
1601const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
1602    const listLength = list.length;
1603    let index = list.indexOf(activeElement);
1604    if (index === -1) {
1605        return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
1606    }
1607    index += shouldGetNext ? 1 : -1;
1608    if (isCycleAllowed) {
1609        index = (index + listLength) % listLength;
1610    }
1611    return list[Math.max(0, Math.min(index, listLength - 1))];
1612};
1613const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
1614const stripNameRegex = /\..*/;
1615const stripUidRegex = /::\d+$/;
1616const eventRegistry = {};
1617let uidEvent = 1;
1618const customEvents = {
1619    mouseenter: "mouseover",
1620    mouseleave: "mouseout"
1621};
1622const nativeEvents = /* @__PURE__ */ new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focu
vendor: 5,497 bytes, lines 1622-1751
1622sin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]);
1623function makeEventUid(element, uid) {
1624    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
1625}
1626function getElementEvents(element) {
1627    const uid = makeEventUid(element);
1628    element.uidEvent = uid;
1629    eventRegistry[uid] = eventRegistry[uid] || {};
1630    return eventRegistry[uid];
1631}
1632function bootstrapHandler(element, fn2) {
1633    return function handler(event) {
1634        hydrateObj(event, {
1635            delegateTarget: element
1636        });
1637        if (handler.oneOff) {
1638            EventHandler.off(element, event.type, fn2);
1639        }
1640        return fn2.apply(element, [event]);
1641    };
1642}
1643function bootstrapDelegationHandler(element, selector, fn2) {
1644    return function handler(event) {
1645        const domElements = element.querySelectorAll(selector);
1646        for (let {
1647            target
1648        } = event; target && target !== this; target = target.parentNode) {
1649            for (const domElement of domElements) {
1650                if (domElement !== target) {
1651                    continue;
1652                }
1653                hydrateObj(event, {
1654                    delegateTarget: target
1655                });
1656                if (handler.oneOff) {
1657                    EventHandler.off(element, event.type, selector, fn2);
1658                }
1659                return fn2.apply(target, [event]);
1660            }
1661        }
1662    };
1663}
1664function findHandler(events, callable, delegationSelector = null) {
1665    return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector);
1666}
1667function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
1668    const isDelegated = typeof handler === "string";
1669    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
1670    let typeEvent = getTypeEvent(originalTypeEvent);
1671    if (!nativeEvents.has(typeEvent)) {
1672        typeEvent = originalTypeEvent;
1673    }
1674    return [isDelegated, callable, typeEvent];
1675}
1676function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
1677    if (typeof originalTypeEvent !== "string" || !element) {
1678        return;
1679    }
1680    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
1681    if (originalTypeEvent in customEvents) {
1682        const wrapFunction = (fn3) => {
1683            return function(event) {
1684                if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
1685                    return fn3.call(this, event);
1686                }
1687            };
1688        };
1689        callable = wrapFunction(callable);
1690    }
1691    const events = getElementEvents(element);
1692    const handlers = events[typeEvent] || (events[typeEvent] = {});
1693    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
1694    if (previousFunction) {
1695        previousFunction.oneOff = previousFunction.oneOff && oneOff;
1696        return;
1697    }
1698    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ""));
1699    const fn2 = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
1700    fn2.delegationSelector = isDelegated ? handler : null;
1701    fn2.callable = callable;
1702    fn2.oneOff = oneOff;
1703    fn2.uidEvent = uid;
1704    handlers[uid] = fn2;
1705    element.addEventListener(typeEvent, fn2, isDelegated);
1706}
1707function removeHandler(element, events, typeEvent, handler, delegationSelector) {
1708    const fn2 = findHandler(events[typeEvent], handler, delegationSelector);
1709    if (!fn2) {
1710        return;
1711    }
1712    element.removeEventListener(typeEvent, fn2, Boolean(delegationSelector));
1713    delete events[typeEvent][fn2.uidEvent];
1714}
1715function removeNamespacedHandlers(element, events, typeEvent, namespace) {
1716    const storeElementEvent = events[typeEvent] || {};
1717    for (const handlerKey of Object.keys(storeElementEvent)) {
1718        if (handlerKey.includes(namespace)) {
1719            const event = storeElementEvent[handlerKey];
1720            removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1721        }
1722    }
1723}
1724function getTypeEvent(event) {
1725    event = event.replace(stripNameRegex, "");
1726    return customEvents[event] || event;
1727}
1728const EventHandler = {
1729    on(element, event, handler, delegationFunction) {
1730        addHandler(element, event, handler, delegationFunction, false);
1731    },
1732    one(element, event, handler, delegationFunction) {
1733        addHandler(element, event, handler, delegationFunction, true);
1734    },
1735    off(element, originalTypeEvent, handler, delegationFunction) {
1736        if (typeof originalTypeEvent !== "string" || !element) {
1737            return;
1738        }
1739        const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
1740        const inNamespace = typeEvent !== originalTypeEvent;
1741        const events = getElementEvents(element);
1742        const storeElementEvent = events[typeEvent] || {};
1743        const isNamespace = originalTypeEvent.startsWith(".");
1744        if (typeof callable !== "undefined") {
1745            if (!Object.keys(storeElementEvent).length) {
1746                return;
1747            }
1748            removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
1749            return;
1750        }
1751        if (isNamespace) {
1752            for (const elementEvent of Object.keys(events)) {
1753                removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
1754            }
1755        }
1756        for (const keyHandlers of Object.keys(storeElementEvent)) {
1757            const handlerKey = keyHandlers.replace(stripUidRegex, "");
1758            if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
1759                const event = storeElementEvent[keyHandlers];
1760                removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1761            }
1762        }
1763    },
1764    trigger(element, event, args) {
1765        if (typeof event !== "string" || !element) {
1766            return null;
1767        }
1768        const $ = getjQuery();
1769        const typeEvent = getTypeEvent(event);
1770        const inNamespace = event !== typeEvent;
1771        let jQueryEvent = null;
1772        let bubbles = true;
1773        let nativeDispatch = true;
1774        let defaultPrevented = false;
1775        if (inNamespace && $) {
1776            jQueryEvent = $.Event(event, args);
1777            $(element).trigger(jQueryEvent);
1778            bubbles = !jQueryEvent.isPropagationStopped();
1779            nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
1780            defaultPrevented = jQueryEvent.isDefaultPrevented();
1781        }
1782        let evt = new Event(event, {
1783            bubbles,
1784            cancelable: true
1785        });
1786        evt = hydrateObj(evt, args);
1787        if (defaultPrevented) {
1788            evt.preventDefault();
1789        }
1790        if (nativeDispatch) {
1791            element.dispatchEvent(evt);
1792        }
1793        if (evt.defaultPrevented && jQueryEvent) {
1794            jQueryEvent.preventDefault();
1795        }
1796        return evt;
1797    }
1798};
1799function hydrateObj(obj, meta) {
1800    for (const [key, value] of Object.entries(meta || {})) {
1801        try {
1802            obj[key] = value;
1803        } catch (_unused) {
1804            Object.defineProperty(obj, key, {
1805                configurable: true,
1806                get() {
1807                    return value;
1808                }
1809            });
1810        }
1811    }
1812    return obj;
1813}
1814const elementMap = /* @__PURE__ */ new Map();
1815const Data = {
1816    set(element, key, instance) {
1817        if (!elementMap.has(element)) {
1818            elementMap.set(element, /* @__PURE__ */ new Map());
1819        }
1820        const instanceMap = elementMap.get(element);
1821        if (!instanceMap.has(key) && instanceMap.size !== 0) {
1822            console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
1823            return;
1824        }
1825        instanceMap.set(key, instance);
1826    },
1827    get(element, key) {
1828        if (elementMap.has(element)) {
1829            return elementMap.get(element).get(key) || null;
1830        }
1831        return null;
1832    },
1833    remove(element, key) {
1834        if (!elementMap.has(element)) {
1835            return;
1836        }
1837        const instanceMap = elementMap.get(element);
1838        instanceMap.delete(key);
1839        if (instanceMap.size === 0) {
1840            elementMap.delete(element);
1841        }
1842    }
1843};
1844function normalizeData(value) {
1845    if (value === "true") {
1846        return true;
1847    }
1848    if (value === "false") {
1849        return false;
1850    }
1851    if (value === Number(value).toString()) {
1852        return Number(value);
1853    }
1854    if (value === "" || value === "null") {
1855        return null;
1856    }
1857    if (typeof value !== "string") {
1858        return value;
1859    }
1860    try {
1861        return JSON.parse(decodeURIComponent(value));
1862    } catch (_unused) {
1863        return value;
1864    }
1865}
1866function normalizeDataKey(key) {
1867    return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
1868}
1869const Manipulator = {
1870    setDataAttribute(element, key, value) {
1871        element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
1872    },
1873    removeDataAttribute(element, key) {
1874        element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
1875    },
1876    getDataAttributes(element) {
1877        if (!element) {
1878            return {};
1879        }
1880        const attributes = {};
1881        const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig"));
1882        for (const key of bsKeys) {
1883            let pureKey = key.replace(/^bs/, "");
1884            pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
1885            attributes[pureKey] = normalizeData(element.dataset[key]);
1886        }
1887        return attributes;
1888    },
1889    getDataAttribute(element, key) {
1890        return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
1891    }
1892};
1893class Config {
1894    // Getters
1895    static get Default() {
1896        return {};
1897    }
1898    static get DefaultType() {
1899        return {};
1900    }
1901    static get NAME() {
1902        throw new Error('You have to implement the static method "NAME", for each component!');
1903    }
1904    _getConfig(config) {
1905        config = this._mergeConfigObj(config);
1906        config = this._configAfterMerge(config);
1907        this._typeCheckConfig(config);
1908        return config;
1909    }
1910    _configAfterMerge(config) {
1911        return config;
1912    }
1913    _mergeConfigObj(config, element) {
1914        const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, "config") : {};
1915        return {
1916            ...this.constructor.Default,
1917            ...typeof jsonConfig === "object" ? jsonConfig : {},
1918            ...isElement(element) ? Manipulator.getDataAttributes(element) : {},
1919            ...typeof config === "object" ? config : {}
1920        };
1921    }
1922    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
1923        for (const property of Object.keys(configTypes)) {
1924            const expectedTypes = configTypes[property];
1925            const value = config[property];
1926            const valueType = isElement(value) ? "element" : toType(value);
1927            if (!new RegExp(expectedTypes).test(valueType)) {
1928                throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
1929            }
1930        }
1931    }
1932}
1933const VERSION = "5.2.3";
1934class BaseComponent extends Config {
1935    constructor(element, config) {
1936        super();
1937        element = getElement(element);
1938        if (!element) {
1939            return;
1940        }
1941        this._element = element;
1942        this._config = this._getConfig(config);
1943        Data.set(this._element, this.constructor.DATA_KEY, this);
1944    }
1945    // Public
1946    dispose() {
1947        Data.remove(this._element, this.constructor.DATA_KEY);
1948        EventHandler.off(this._element, this.constructor.EVENT_KEY);
vendor: 48,227 bytes, lines 1949-3281
1949        for (const propertyName of Object.getOwnPropertyNames(this)) {
1950            this[propertyName] = null;
1951        }
1952    }
1953    _queueCallback(callback, element, isAnimated = true) {
1954        executeAfterTransition(callback, element, isAnimated);
1955    }
1956    _getConfig(config) {
1957        config = this._mergeConfigObj(config, this._element);
1958        config = this._configAfterMerge(config);
1959        this._typeCheckConfig(config);
1960        return config;
1961    }
1962    // Static
1963    static getInstance(element) {
1964        return Data.get(getElement(element), this.DATA_KEY);
1965    }
1966    static getOrCreateInstance(element, config = {}) {
1967        return this.getInstance(element) || new this(element, typeof config === "object" ? config : null);
1968    }
1969    static get VERSION() {
1970        return VERSION;
1971    }
1972    static get DATA_KEY() {
1973        return `bs.${this.NAME}`;
1974    }
1975    static get EVENT_KEY() {
1976        return `.${this.DATA_KEY}`;
1977    }
1978    static eventName(name) {
1979        return `${name}${this.EVENT_KEY}`;
1980    }
1981}
1982const enableDismissTrigger = (component, method = "hide") => {
1983    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
1984    const name = component.NAME;
1985    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) {
1986        if (["A", "AREA"].includes(this.tagName)) {
1987            event.preventDefault();
1988        }
1989        if (isDisabled(this)) {
1990            return;
1991        }
1992        const target = getElementFromSelector(this) || this.closest(`.${name}`);
1993        const instance = component.getOrCreateInstance(target);
1994        instance[method]();
1995    });
1996};
1997const NAME$f = "alert";
1998const DATA_KEY$a = "bs.alert";
1999const EVENT_KEY$b = `.${DATA_KEY$a}`;
2000const EVENT_CLOSE = `close${EVENT_KEY$b}`;
2001const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
2002const CLASS_NAME_FADE$5 = "fade";
2003const CLASS_NAME_SHOW$8 = "show";
2004class Alert extends BaseComponent {
2005    // Getters
2006    static get NAME() {
2007        return NAME$f;
2008    }
2009    // Public
2010    close() {
2011        const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
2012        if (closeEvent.defaultPrevented) {
2013            return;
2014        }
2015        this._element.classList.remove(CLASS_NAME_SHOW$8);
2016        const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
2017        this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
2018    }
2019    // Private
2020    _destroyElement() {
2021        this._element.remove();
2022        EventHandler.trigger(this._element, EVENT_CLOSED);
2023        this.dispose();
2024    }
2025    // Static
2026    static jQueryInterface(config) {
2027        return this.each(function() {
2028            const data = Alert.getOrCreateInstance(this);
2029            if (typeof config !== "string") {
2030                return;
2031            }
2032            if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
2033                throw new TypeError(`No method named "${config}"`);
2034            }
2035            data[config](this);
2036        });
2037    }
2038}
2039enableDismissTrigger(Alert, "close");
2040defineJQueryPlugin(Alert);
2041const NAME$e = "button";
2042const DATA_KEY$9 = "bs.button";
2043const EVENT_KEY$a = `.${DATA_KEY$9}`;
2044const DATA_API_KEY$6 = ".data-api";
2045const CLASS_NAME_ACTIVE$3 = "active";
2046const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
2047const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
2048class Button extends BaseComponent {
2049    // Getters
2050    static get NAME() {
2051        return NAME$e;
2052    }
2053    // Public
2054    toggle() {
2055        this._element.setAttribute("aria-pressed", this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
2056    }
2057    // Static
2058    static jQueryInterface(config) {
2059        return this.each(function() {
2060            const data = Button.getOrCreateInstance(this);
2061            if (config === "toggle") {
2062                data[config]();
2063            }
2064        });
2065    }
2066}
2067EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event) => {
2068    event.preventDefault();
2069    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
2070    const data = Button.getOrCreateInstance(button);
2071    data.toggle();
2072});
2073defineJQueryPlugin(Button);
2074const SelectorEngine = {
2075    find(selector, element = document.documentElement) {
2076        return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
2077    },
2078    findOne(selector, element = document.documentElement) {
2079        return Element.prototype.querySelector.call(element, selector);
2080    },
2081    children(element, selector) {
2082        return [].concat(...element.children).filter((child2) => child2.matches(selector));
2083    },
2084    parents(element, selector) {
2085        const parents = [];
2086        let ancestor = element.parentNode.closest(selector);
2087        while (ancestor) {
2088            parents.push(ancestor);
2089            ancestor = ancestor.parentNode.closest(selector);
2090        }
2091        return parents;
2092    },
2093    prev(element, selector) {
2094        let previous = element.previousElementSibling;
2095        while (previous) {
2096            if (previous.matches(selector)) {
2097                return [previous];
2098            }
2099            previous = previous.previousElementSibling;
2100        }
2101        return [];
2102    },
2103    // TODO: this is now unused; remove later along with prev()
2104    next(element, selector) {
2105        let next = element.nextElementSibling;
2106        while (next) {
2107            if (next.matches(selector)) {
2108                return [next];
2109            }
2110            next = next.nextElementSibling;
2111        }
2112        return [];
2113    },
2114    focusableChildren(element) {
2115        const focusables = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((selector) => `${selector}:not([tabindex^="-"])`).join(",");
2116        return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));
2117    }
2118};
2119const NAME$d = "swipe";
2120const EVENT_KEY$9 = ".bs.swipe";
2121const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
2122const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
2123const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
2124const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
2125const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
2126const POINTER_TYPE_TOUCH = "touch";
2127const POINTER_TYPE_PEN = "pen";
2128const CLASS_NAME_POINTER_EVENT = "pointer-event";
2129const SWIPE_THRESHOLD = 40;
2130const Default$c = {
2131    endCallback: null,
2132    leftCallback: null,
2133    rightCallback: null
2134};
2135const DefaultType$c = {
2136    endCallback: "(function|null)",
2137    leftCallback: "(function|null)",
2138    rightCallback: "(function|null)"
2139};
2140class Swipe extends Config {
2141    constructor(element, config) {
2142        super();
2143        this._element = element;
2144        if (!element || !Swipe.isSupported()) {
2145            return;
2146        }
2147        this._config = this._getConfig(config);
2148        this._deltaX = 0;
2149        this._supportPointerEvents = Boolean(window.PointerEvent);
2150        this._initEvents();
2151    }
2152    // Getters
2153    static get Default() {
2154        return Default$c;
2155    }
2156    static get DefaultType() {
2157        return DefaultType$c;
2158    }
2159    static get NAME() {
2160        return NAME$d;
2161    }
2162    // Public
2163    dispose() {
2164        EventHandler.off(this._element, EVENT_KEY$9);
2165    }
2166    // Private
2167    _start(event) {
2168        if (!this._supportPointerEvents) {
2169            this._deltaX = event.touches[0].clientX;
2170            return;
2171        }
2172        if (this._eventIsPointerPenTouch(event)) {
2173            this._deltaX = event.clientX;
2174        }
2175    }
2176    _end(event) {
2177        if (this._eventIsPointerPenTouch(event)) {
2178            this._deltaX = event.clientX - this._deltaX;
2179        }
2180        this._handleSwipe();
2181        execute(this._config.endCallback);
2182    }
2183    _move(event) {
2184        this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
2185    }
2186    _handleSwipe() {
2187        const absDeltaX = Math.abs(this._deltaX);
2188        if (absDeltaX <= SWIPE_THRESHOLD) {
2189            return;
2190        }
2191        const direction = absDeltaX / this._deltaX;
2192        this._deltaX = 0;
2193        if (!direction) {
2194            return;
2195        }
2196        execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
2197    }
2198    _initEvents() {
2199        if (this._supportPointerEvents) {
2200            EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event));
2201            EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event));
2202            this._element.classList.add(CLASS_NAME_POINTER_EVENT);
2203        } else {
2204            EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event));
2205            EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event));
2206            EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event));
2207        }
2208    }
2209    _eventIsPointerPenTouch(event) {
2210        return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
2211    }
2212    // Static
2213    static isSupported() {
2214        return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
2215    }
2216}
2217const NAME$c = "carousel";
2218const DATA_KEY$8 = "bs.carousel";
2219const EVENT_KEY$8 = `.${DATA_KEY$8}`;
2220const DATA_API_KEY$5 = ".data-api";
2221const ARROW_LEFT_KEY$1 = "ArrowLeft";
2222const ARROW_RIGHT_KEY$1 = "ArrowRight";
2223const TOUCHEVENT_COMPAT_WAIT = 500;
2224const ORDER_NEXT = "next";
2225const ORDER_PREV = "prev";
2226const DIRECTION_LEFT = "left";
2227const DIRECTION_RIGHT = "right";
2228const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
2229const EVENT_SLID = `slid${EVENT_KEY$8}`;
2230const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
2231const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
2232const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
2233const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
2234const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
2235const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
2236const CLASS_NAME_CAROUSEL = "carousel";
2237const CLASS_NAME_ACTIVE$2 = "active";
2238const CLASS_NAME_SLIDE = "slide";
2239const CLASS_NAME_END = "carousel-item-end";
2240const CLASS_NAME_START = "carousel-item-start";
2241const CLASS_NAME_NEXT = "carousel-item-next";
2242const CLASS_NAME_PREV = "carousel-item-prev";
2243const SELECTOR_ACTIVE = ".active";
2244const SELECTOR_ITEM = ".carousel-item";
2245const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
2246const SELECTOR_ITEM_IMG = ".carousel-item img";
2247const SELECTOR_INDICATORS = ".carousel-indicators";
2248const SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to]";
2249const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
2250const KEY_TO_DIRECTION = {
2251    [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
2252    [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
2253};
2254const Default$b = {
2255    interval: 5e3,
2256    keyboard: true,
2257    pause: "hover",
2258    ride: false,
2259    touch: true,
2260    wrap: true
2261};
2262const DefaultType$b = {
2263    interval: "(number|boolean)",
2264    // TODO:v6 remove boolean support
2265    keyboard: "boolean",
2266    pause: "(string|boolean)",
2267    ride: "(boolean|string)",
2268    touch: "boolean",
2269    wrap: "boolean"
2270};
2271let Carousel$1 = class Carousel extends BaseComponent {
2272    constructor(element, config) {
2273        super(element, config);
2274        this._interval = null;
2275        this._activeElement = null;
2276        this._isSliding = false;
2277        this.touchTimeout = null;
2278        this._swipeHelper = null;
2279        this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
2280        this._addEventListeners();
2281        if (this._config.ride === CLASS_NAME_CAROUSEL) {
2282            this.cycle();
2283        }
2284    }
2285    // Getters
2286    static get Default() {
2287        return Default$b;
2288    }
2289    static get DefaultType() {
2290        return DefaultType$b;
2291    }
2292    static get NAME() {
2293        return NAME$c;
2294    }
2295    // Public
2296    next() {
2297        this._slide(ORDER_NEXT);
2298    }
2299    nextWhenVisible() {
2300        if (!document.hidden && isVisible(this._element)) {
2301            this.next();
2302        }
2303    }
2304    prev() {
2305        this._slide(ORDER_PREV);
2306    }
2307    pause() {
2308        if (this._isSliding) {
2309            triggerTransitionEnd(this._element);
2310        }
2311        this._clearInterval();
2312    }
2313    cycle() {
2314        this._clearInterval();
2315        this._updateInterval();
2316        this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
2317    }
2318    _maybeEnableCycle() {
2319        if (!this._config.ride) {
2320            return;
2321        }
2322        if (this._isSliding) {
2323            EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
2324            return;
2325        }
2326        this.cycle();
2327    }
2328    to(index) {
2329        const items = this._getItems();
2330        if (index > items.length - 1 || index < 0) {
2331            return;
2332        }
2333        if (this._isSliding) {
2334            EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
2335            return;
2336        }
2337        const activeIndex = this._getItemIndex(this._getActive());
2338        if (activeIndex === index) {
2339            return;
2340        }
2341        const order2 = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
2342        this._slide(order2, items[index]);
2343    }
2344    dispose() {
2345        if (this._swipeHelper) {
2346            this._swipeHelper.dispose();
2347        }
2348        super.dispose();
2349    }
2350    // Private
2351    _configAfterMerge(config) {
2352        config.defaultInterval = config.interval;
2353        return config;
2354    }
2355    _addEventListeners() {
2356        if (this._config.keyboard) {
2357            EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event));
2358        }
2359        if (this._config.pause === "hover") {
2360            EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
2361            EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
2362        }
2363        if (this._config.touch && Swipe.isSupported()) {
2364            this._addTouchEventListeners();
2365        }
2366    }
2367    _addTouchEventListeners() {
2368        for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
2369            EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());
2370        }
2371        const endCallBack = () => {
2372            if (this._config.pause !== "hover") {
2373                return;
2374            }
2375            this.pause();
2376            if (this.touchTimeout) {
2377                clearTimeout(this.touchTimeout);
2378            }
2379            this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
2380        };
2381        const swipeConfig = {
2382            leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
2383            rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
2384            endCallback: endCallBack
2385        };
2386        this._swipeHelper = new Swipe(this._element, swipeConfig);
2387    }
2388    _keydown(event) {
2389        if (/input|textarea/i.test(event.target.tagName)) {
2390            return;
2391        }
2392        const direction = KEY_TO_DIRECTION[event.key];
2393        if (direction) {
2394            event.preventDefault();
2395            this._slide(this._directionToOrder(direction));
2396        }
2397    }
2398    _getItemIndex(element) {
2399        return this._getItems().indexOf(element);
2400    }
2401    _setActiveIndicatorElement(index) {
2402        if (!this._indicatorsElement) {
2403            return;
2404        }
2405        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
2406        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
2407        activeIndicator.removeAttribute("aria-current");
2408        const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
2409        if (newActiveIndicator) {
2410            newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
2411            newActiveIndicator.setAttribute("aria-current", "true");
2412        }
2413    }
2414    _updateInterval() {
2415        const element = this._activeElement || this._getActive();
2416        if (!element) {
2417            return;
2418        }
2419        const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval"), 10);
2420        this._config.interval = elementInterval || this._config.defaultInterval;
2421    }
2422    _slide(order2, element = null) {
2423        if (this._isSliding) {
2424            return;
2425        }
2426        const activeElement = this._getActive();
2427        const isNext = order2 === ORDER_NEXT;
2428        const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
2429        if (nextElement === activeElement) {
2430            return;
2431        }
2432        const nextElementIndex = this._getItemIndex(nextElement);
2433        const triggerEvent = (eventName) => {
2434            return EventHandler.trigger(this._element, eventName, {
2435                relatedTarget: nextElement,
2436                direction: this._orderToDirection(order2),
2437                from: this._getItemIndex(activeElement),
2438                to: nextElementIndex
2439            });
2440        };
2441        const slideEvent = triggerEvent(EVENT_SLIDE);
2442        if (slideEvent.defaultPrevented) {
2443            return;
2444        }
2445        if (!activeElement || !nextElement) {
2446            return;
2447        }
2448        const isCycling = Boolean(this._interval);
2449        this.pause();
2450        this._isSliding = true;
2451        this._setActiveIndicatorElement(nextElementIndex);
2452        this._activeElement = nextElement;
2453        const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
2454        const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
2455        nextElement.classList.add(orderClassName);
2456        reflow(nextElement);
2457        activeElement.classList.add(directionalClassName);
2458        nextElement.classList.add(directionalClassName);
2459        const completeCallBack = () => {
2460            nextElement.classList.remove(directionalClassName, orderClassName);
2461            nextElement.classList.add(CLASS_NAME_ACTIVE$2);
2462            activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
2463            this._isSliding = false;
2464            triggerEvent(EVENT_SLID);
2465        };
2466        this._queueCallback(completeCallBack, activeElement, this._isAnimated());
2467        if (isCycling) {
2468            this.cycle();
2469        }
2470    }
2471    _isAnimated() {
2472        return this._element.classList.contains(CLASS_NAME_SLIDE);
2473    }
2474    _getActive() {
2475        return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
2476    }
2477    _getItems() {
2478        return SelectorEngine.find(SELECTOR_ITEM, this._element);
2479    }
2480    _clearInterval() {
2481        if (this._interval) {
2482            clearInterval(this._interval);
2483            this._interval = null;
2484        }
2485    }
2486    _directionToOrder(direction) {
2487        if (isRTL()) {
2488            return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
2489        }
2490        return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
2491    }
2492    _orderToDirection(order2) {
2493        if (isRTL()) {
2494            return order2 === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
2495        }
2496        return order2 === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
2497    }
2498    // Static
2499    static jQueryInterface(config) {
2500        return this.each(function() {
2501            const data = Carousel.getOrCreateInstance(this, config);
2502            if (typeof config === "number") {
2503                data.to(config);
2504                return;
2505            }
2506            if (typeof config === "string") {
2507                if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
2508                    throw new TypeError(`No method named "${config}"`);
2509                }
2510                data[config]();
2511            }
2512        });
2513    }
2514};
2515EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) {
2516    const target = getElementFromSelector(this);
2517    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
2518        return;
2519    }
2520    event.preventDefault();
2521    const carousel = Carousel$1.getOrCreateInstance(target);
2522    const slideIndex = this.getAttribute("data-bs-slide-to");
2523    if (slideIndex) {
2524        carousel.to(slideIndex);
2525        carousel._maybeEnableCycle();
2526        return;
2527    }
2528    if (Manipulator.getDataAttribute(this, "slide") === "next") {
2529        carousel.next();
2530        carousel._maybeEnableCycle();
2531        return;
2532    }
2533    carousel.prev();
2534    carousel._maybeEnableCycle();
2535});
2536EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
2537    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
2538    for (const carousel of carousels) {
2539        Carousel$1.getOrCreateInstance(carousel);
2540    }
2541});
2542defineJQueryPlugin(Carousel$1);
2543const NAME$b = "collapse";
2544const DATA_KEY$7 = "bs.collapse";
2545const EVENT_KEY$7 = `.${DATA_KEY$7}`;
2546const DATA_API_KEY$4 = ".data-api";
2547const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
2548const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
2549const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
2550const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
2551const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
2552const CLASS_NAME_SHOW$7 = "show";
2553const CLASS_NAME_COLLAPSE = "collapse";
2554const CLASS_NAME_COLLAPSING = "collapsing";
2555const CLASS_NAME_COLLAPSED = "collapsed";
2556const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
2557const CLASS_NAME_HORIZONTAL = "collapse-horizontal";
2558const WIDTH = "width";
2559const HEIGHT = "height";
2560const SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing";
2561const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
2562const Default$a = {
2563    parent: null,
2564    toggle: true
2565};
2566const DefaultType$a = {
2567    parent: "(null|element)",
2568    toggle: "boolean"
2569};
2570class Collapse extends BaseComponent {
2571    constructor(element, config) {
2572        super(element, config);
2573        this._isTransitioning = false;
2574        this._triggerArray = [];
2575        const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
2576        for (const elem of toggleList) {
2577            const selector = getSelectorFromElement(elem);
2578            const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element);
2579            if (selector !== null && filterElement.length) {
2580                this._triggerArray.push(elem);
2581            }
2582        }
2583        this._initializeChildren();
2584        if (!this._config.parent) {
2585            this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
2586        }
2587        if (this._config.toggle) {
2588            this.toggle();
2589        }
2590    }
2591    // Getters
2592    static get Default() {
2593        return Default$a;
2594    }
2595    static get DefaultType() {
2596        return DefaultType$a;
2597    }
2598    static get NAME() {
2599        return NAME$b;
2600    }
2601    // Public
2602    toggle() {
2603        if (this._isShown()) {
2604            this.hide();
2605        } else {
2606            this.show();
2607        }
2608    }
2609    show() {
2610        if (this._isTransitioning || this._isShown()) {
2611            return;
2612        }
2613        let activeChildren = [];
2614        if (this._config.parent) {
2615            activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => Collapse.getOrCreateInstance(element, {
2616                toggle: false
2617            }));
2618        }
2619        if (activeChildren.length && activeChildren[0]._isTransitioning) {
2620            return;
2621        }
2622        const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
2623        if (startEvent.defaultPrevented) {
2624            return;
2625        }
2626        for (const activeInstance of activeChildren) {
2627            activeInstance.hide();
2628        }
2629        const dimension = this._getDimension();
2630        this._element.classList.remove(CLASS_NAME_COLLAPSE);
2631        this._element.classList.add(CLASS_NAME_COLLAPSING);
2632        this._element.style[dimension] = 0;
2633        this._addAriaAndCollapsedClass(this._triggerArray, true);
2634        this._isTransitioning = true;
2635        const complete = () => {
2636            this._isTransitioning = false;
2637            this._element.classList.remove(CLASS_NAME_COLLAPSING);
2638            this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
2639            this._element.style[dimension] = "";
2640            EventHandler.trigger(this._element, EVENT_SHOWN$6);
2641        };
2642        const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
2643        const scrollSize = `scroll${capitalizedDimension}`;
2644        this._queueCallback(complete, this._element, true);
2645        this._element.style[dimension] = `${this._element[scrollSize]}px`;
2646    }
2647    hide() {
2648        if (this._isTransitioning || !this._isShown()) {
2649            return;
2650        }
2651        const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
2652        if (startEvent.defaultPrevented) {
2653            return;
2654        }
2655        const dimension = this._getDimension();
2656        this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
2657        reflow(this._element);
2658        this._element.classList.add(CLASS_NAME_COLLAPSING);
2659        this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
2660        for (const trigger of this._triggerArray) {
2661            const element = getElementFromSelector(trigger);
2662            if (element && !this._isShown(element)) {
2663                this._addAriaAndCollapsedClass([trigger], false);
2664            }
2665        }
2666        this._isTransitioning = true;
2667        const complete = () => {
2668            this._isTransitioning = false;
2669            this._element.classList.remove(CLASS_NAME_COLLAPSING);
2670            this._element.classList.add(CLASS_NAME_COLLAPSE);
2671            EventHandler.trigger(this._element, EVENT_HIDDEN$6);
2672        };
2673        this._element.style[dimension] = "";
2674        this._queueCallback(complete, this._element, true);
2675    }
2676    _isShown(element = this._element) {
2677        return element.classList.contains(CLASS_NAME_SHOW$7);
2678    }
2679    // Private
2680    _configAfterMerge(config) {
2681        config.toggle = Boolean(config.toggle);
2682        config.parent = getElement(config.parent);
2683        return config;
2684    }
2685    _getDimension() {
2686        return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
2687    }
2688    _initializeChildren() {
2689        if (!this._config.parent) {
2690            return;
2691        }
2692        const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
2693        for (const element of children2) {
2694            const selected = getElementFromSelector(element);
2695            if (selected) {
2696                this._addAriaAndCollapsedClass([element], this._isShown(selected));
2697            }
2698        }
2699    }
2700    _getFirstLevelChildren(selector) {
2701        const children2 = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
2702        return SelectorEngine.find(selector, this._config.parent).filter((element) => !children2.includes(element));
2703    }
2704    _addAriaAndCollapsedClass(triggerArray, isOpen) {
2705        if (!triggerArray.length) {
2706            return;
2707        }
2708        for (const element of triggerArray) {
2709            element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
2710            element.setAttribute("aria-expanded", isOpen);
2711        }
2712    }
2713    // Static
2714    static jQueryInterface(config) {
2715        const _config = {};
2716        if (typeof config === "string" && /show|hide/.test(config)) {
2717            _config.toggle = false;
2718        }
2719        return this.each(function() {
2720            const data = Collapse.getOrCreateInstance(this, _config);
2721            if (typeof config === "string") {
2722                if (typeof data[config] === "undefined") {
2723                    throw new TypeError(`No method named "${config}"`);
2724                }
2725                data[config]();
2726            }
2727        });
2728    }
2729}
2730EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event) {
2731    if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") {
2732        event.preventDefault();
2733    }
2734    const selector = getSelectorFromElement(this);
2735    const selectorElements = SelectorEngine.find(selector);
2736    for (const element of selectorElements) {
2737        Collapse.getOrCreateInstance(element, {
2738            toggle: false
2739        }).toggle();
2740    }
2741});
2742defineJQueryPlugin(Collapse);
2743const NAME$a = "dropdown";
2744const DATA_KEY$6 = "bs.dropdown";
2745const EVENT_KEY$6 = `.${DATA_KEY$6}`;
2746const DATA_API_KEY$3 = ".data-api";
2747const ESCAPE_KEY$2 = "Escape";
2748const TAB_KEY$1 = "Tab";
2749const ARROW_UP_KEY$1 = "ArrowUp";
2750const ARROW_DOWN_KEY$1 = "ArrowDown";
2751const RIGHT_MOUSE_BUTTON = 2;
2752const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
2753const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
2754const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
2755const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
2756const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
2757const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
2758const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
2759const CLASS_NAME_SHOW$6 = "show";
2760const CLASS_NAME_DROPUP = "dropup";
2761const CLASS_NAME_DROPEND = "dropend";
2762const CLASS_NAME_DROPSTART = "dropstart";
2763const CLASS_NAME_DROPUP_CENTER = "dropup-center";
2764const CLASS_NAME_DROPDOWN_CENTER = "dropdown-center";
2765const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
2766const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
2767const SELECTOR_MENU = ".dropdown-menu";
2768const SELECTOR_NAVBAR = ".navbar";
2769const SELECTOR_NAVBAR_NAV = ".navbar-nav";
2770const SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
2771const PLACEMENT_TOP = isRTL() ? "top-end" : "top-start";
2772const PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end";
2773const PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start";
2774const PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end";
2775const PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start";
2776const PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start";
2777const PLACEMENT_TOPCENTER = "top";
2778const PLACEMENT_BOTTOMCENTER = "bottom";
2779const Default$9 = {
2780    autoClose: true,
2781    boundary: "clippingParents",
2782    display: "dynamic",
2783    offset: [0, 2],
2784    popperConfig: null,
2785    reference: "toggle"
2786};
2787const DefaultType$9 = {
2788    autoClose: "(boolean|string)",
2789    boundary: "(string|element)",
2790    display: "string",
2791    offset: "(array|string|function)",
2792    popperConfig: "(null|object|function)",
2793    reference: "(string|element|object)"
2794};
2795let Dropdown$1 = class Dropdown extends BaseComponent {
2796    constructor(element, config) {
2797        super(element, config);
2798        this._popper = null;
2799        this._parent = this._element.parentNode;
2800        this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
2801        this._inNavbar = this._detectNavbar();
2802    }
2803    // Getters
2804    static get Default() {
2805        return Default$9;
2806    }
2807    static get DefaultType() {
2808        return DefaultType$9;
2809    }
2810    static get NAME() {
2811        return NAME$a;
2812    }
2813    // Public
2814    toggle() {
2815        return this._isShown() ? this.hide() : this.show();
2816    }
2817    show() {
2818        if (isDisabled(this._element) || this._isShown()) {
2819            return;
2820        }
2821        const relatedTarget = {
2822            relatedTarget: this._element
2823        };
2824        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
2825        if (showEvent.defaultPrevented) {
2826            return;
2827        }
2828        this._createPopper();
2829        if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
2830            for (const element of [].concat(...document.body.children)) {
2831                EventHandler.on(element, "mouseover", noop$1);
2832            }
2833        }
2834        this._element.focus();
2835        this._element.setAttribute("aria-expanded", true);
2836        this._menu.classList.add(CLASS_NAME_SHOW$6);
2837        this._element.classList.add(CLASS_NAME_SHOW$6);
2838        EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
2839    }
2840    hide() {
2841        if (isDisabled(this._element) || !this._isShown()) {
2842            return;
2843        }
2844        const relatedTarget = {
2845            relatedTarget: this._element
2846        };
2847        this._completeHide(relatedTarget);
2848    }
2849    dispose() {
2850        if (this._popper) {
2851            this._popper.destroy();
2852        }
2853        super.dispose();
2854    }
2855    update() {
2856        this._inNavbar = this._detectNavbar();
2857        if (this._popper) {
2858            this._popper.update();
2859        }
2860    }
2861    // Private
2862    _completeHide(relatedTarget) {
2863        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
2864        if (hideEvent.defaultPrevented) {
2865            return;
2866        }
2867        if ("ontouchstart" in document.documentElement) {
2868            for (const element of [].concat(...document.body.children)) {
2869                EventHandler.off(element, "mouseover", noop$1);
2870            }
2871        }
2872        if (this._popper) {
2873            this._popper.destroy();
2874        }
2875        this._menu.classList.remove(CLASS_NAME_SHOW$6);
2876        this._element.classList.remove(CLASS_NAME_SHOW$6);
2877        this._element.setAttribute("aria-expanded", "false");
2878        Manipulator.removeDataAttribute(this._menu, "popper");
2879        EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
2880    }
2881    _getConfig(config) {
2882        config = super._getConfig(config);
2883        if (typeof config.reference === "object" && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== "function") {
2884            throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
2885        }
2886        return config;
2887    }
2888    _createPopper() {
2889        if (typeof Popper === "undefined") {
2890            throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
2891        }
2892        let referenceElement = this._element;
2893        if (this._config.reference === "parent") {
2894            referenceElement = this._parent;
2895        } else if (isElement(this._config.reference)) {
2896            referenceElement = getElement(this._config.reference);
2897        } else if (typeof this._config.reference === "object") {
2898            referenceElement = this._config.reference;
2899        }
2900        const popperConfig = this._getPopperConfig();
2901        this._popper = createPopper(referenceElement, this._menu, popperConfig);
2902    }
2903    _isShown() {
2904        return this._menu.classList.contains(CLASS_NAME_SHOW$6);
2905    }
2906    _getPlacement() {
2907        const parentDropdown = this._parent;
2908        if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
2909            return PLACEMENT_RIGHT;
2910        }
2911        if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
2912            return PLACEMENT_LEFT;
2913        }
2914        if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
2915            return PLACEMENT_TOPCENTER;
2916        }
2917        if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
2918            return PLACEMENT_BOTTOMCENTER;
2919        }
2920        const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end";
2921        if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
2922            return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
2923        }
2924        return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
2925    }
2926    _detectNavbar() {
2927        return this._element.closest(SELECTOR_NAVBAR) !== null;
2928    }
2929    _getOffset() {
2930        const {
2931            offset: offset2
2932        } = this._config;
2933        if (typeof offset2 === "string") {
2934            return offset2.split(",").map((value) => Number.parseInt(value, 10));
2935        }
2936        if (typeof offset2 === "function") {
2937            return (popperData) => offset2(popperData, this._element);
2938        }
2939        return offset2;
2940    }
2941    _getPopperConfig() {
2942        const defaultBsPopperConfig = {
2943            placement: this._getPlacement(),
2944            modifiers: [{
2945                name: "preventOverflow",
2946                options: {
2947                    boundary: this._config.boundary
2948                }
2949            }, {
2950                name: "offset",
2951                options: {
2952                    offset: this._getOffset()
2953                }
2954            }]
2955        };
2956        if (this._inNavbar || this._config.display === "static") {
2957            Manipulator.setDataAttribute(this._menu, "popper", "static");
2958            defaultBsPopperConfig.modifiers = [{
2959                name: "applyStyles",
2960                enabled: false
2961            }];
2962        }
2963        return {
2964            ...defaultBsPopperConfig,
2965            ...typeof this._config.popperConfig === "function" ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig
2966        };
2967    }
2968    _selectMenuItem({
2969                        key,
2970                        target
2971                    }) {
2972        const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));
2973        if (!items.length) {
2974            return;
2975        }
2976        getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
2977    }
2978    // Static
2979    static jQueryInterface(config) {
2980        return this.each(function() {
2981            const data = Dropdown.getOrCreateInstance(this, config);
2982            if (typeof config !== "string") {
2983                return;
2984            }
2985            if (typeof data[config] === "undefined") {
2986                throw new TypeError(`No method named "${config}"`);
2987            }
2988            data[config]();
2989        });
2990    }
2991    static clearMenus(event) {
2992        if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) {
2993            return;
2994        }
2995        const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
2996        for (const toggle of openToggles) {
2997            const context = Dropdown.getInstance(toggle);
2998            if (!context || context._config.autoClose === false) {
2999                continue;
3000            }
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) {
3004                continue;
3005            }
3006            if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
3007                continue;
3008            }
3009            const relatedTarget = {
3010                relatedTarget: context._element
3011            };
3012            if (event.type === "click") {
3013                relatedTarget.clickEvent = event;
3014            }
3015            context._completeHide(relatedTarget);
3016        }
3017    }
3018    static dataApiKeydownHandler(event) {
3019        const isInput = /input|textarea/i.test(event.target.tagName);
3020        const isEscapeEvent = event.key === ESCAPE_KEY$2;
3021        const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
3022        if (!isUpOrDownEvent && !isEscapeEvent) {
3023            return;
3024        }
3025        if (isInput && !isEscapeEvent) {
3026            return;
3027        }
3028        event.preventDefault();
3029        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);
3030        const instance = Dropdown.getOrCreateInstance(getToggleButton);
3031        if (isUpOrDownEvent) {
3032            event.stopPropagation();
3033            instance.show();
3034            instance._selectMenuItem(event);
3035            return;
3036        }
3037        if (instance._isShown()) {
3038            event.stopPropagation();
3039            instance.hide();
3040            getToggleButton.focus();
3041        }
3042    }
3043};
3044EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown$1.dataApiKeydownHandler);
3045EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown$1.dataApiKeydownHandler);
3046EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown$1.clearMenus);
3047EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown$1.clearMenus);
3048EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event) {
3049    event.preventDefault();
3050    Dropdown$1.getOrCreateInstance(this).toggle();
3051});
3052defineJQueryPlugin(Dropdown$1);
3053const SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
3054const SELECTOR_STICKY_CONTENT = ".sticky-top";
3055const PROPERTY_PADDING = "padding-right";
3056const PROPERTY_MARGIN = "margin-right";
3057class ScrollBarHelper {
3058    constructor() {
3059        this._element = document.body;
3060    }
3061    // Public
3062    getWidth() {
3063        const documentWidth = document.documentElement.clientWidth;
3064        return Math.abs(window.innerWidth - documentWidth);
3065    }
3066    hide() {
3067        const width = this.getWidth();
3068        this._disableOverFlow();
3069        this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
3070        this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
3071        this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);
3072    }
3073    reset() {
3074        this._resetElementAttributes(this._element, "overflow");
3075        this._resetElementAttributes(this._element, PROPERTY_PADDING);
3076        this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
3077        this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
3078    }
3079    isOverflowing() {
3080        return this.getWidth() > 0;
3081    }
3082    // Private
3083    _disableOverFlow() {
3084        this._saveInitialAttribute(this._element, "overflow");
3085        this._element.style.overflow = "hidden";
3086    }
3087    _setElementAttributes(selector, styleProperty, callback) {
3088        const scrollbarWidth = this.getWidth();
3089        const manipulationCallBack = (element) => {
3090            if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
3091                return;
3092            }
3093            this._saveInitialAttribute(element, styleProperty);
3094            const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
3095            element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
3096        };
3097        this._applyManipulationCallback(selector, manipulationCallBack);
3098    }
3099    _saveInitialAttribute(element, styleProperty) {
3100        const actualValue = element.style.getPropertyValue(styleProperty);
3101        if (actualValue) {
3102            Manipulator.setDataAttribute(element, styleProperty, actualValue);
3103        }
3104    }
3105    _resetElementAttributes(selector, styleProperty) {
3106        const manipulationCallBack = (element) => {
3107            const value = Manipulator.getDataAttribute(element, styleProperty);
3108            if (value === null) {
3109                element.style.removeProperty(styleProperty);
3110                return;
3111            }
3112            Manipulator.removeDataAttribute(element, styleProperty);
3113            element.style.setProperty(styleProperty, value);
3114        };
3115        this._applyManipulationCallback(selector, manipulationCallBack);
3116    }
3117    _applyManipulationCallback(selector, callBack) {
3118        if (isElement(selector)) {
3119            callBack(selector);
3120            return;
3121        }
3122        for (const sel of SelectorEngine.find(selector, this._element)) {
3123            callBack(sel);
3124        }
3125    }
3126}
3127const NAME$9 = "backdrop";
3128const CLASS_NAME_FADE$4 = "fade";
3129const CLASS_NAME_SHOW$5 = "show";
3130const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
3131const Default$8 = {
3132    className: "modal-backdrop",
3133    clickCallback: null,
3134    isAnimated: false,
3135    isVisible: true,
3136    // if false, we use the backdrop helper without adding any element to the dom
3137    rootElement: "body"
3138    // give the choice to place backdrop under different elements
3139};
3140const DefaultType$8 = {
3141    className: "string",
3142    clickCallback: "(function|null)",
3143    isAnimated: "boolean",
3144    isVisible: "boolean",
3145    rootElement: "(element|string)"
3146};
3147class Backdrop extends Config {
3148    constructor(config) {
3149        super();
3150        this._config = this._getConfig(config);
3151        this._isAppended = false;
3152        this._element = null;
3153    }
3154    // Getters
3155    static get Default() {
3156        return Default$8;
3157    }
3158    static get DefaultType() {
3159        return DefaultType$8;
3160    }
3161    static get NAME() {
3162        return NAME$9;
3163    }
3164    // Public
3165    show(callback) {
3166        if (!this._config.isVisible) {
3167            execute(callback);
3168            return;
3169        }
3170        this._append();
3171        const element = this._getElement();
3172        if (this._config.isAnimated) {
3173            reflow(element);
3174        }
3175        element.classList.add(CLASS_NAME_SHOW$5);
3176        this._emulateAnimation(() => {
3177            execute(callback);
3178        });
3179    }
3180    hide(callback) {
3181        if (!this._config.isVisible) {
3182            execute(callback);
3183            return;
3184        }
3185        this._getElement().classList.remove(CLASS_NAME_SHOW$5);
3186        this._emulateAnimation(() => {
3187            this.dispose();
3188            execute(callback);
3189        });
3190    }
3191    dispose() {
3192        if (!this._isAppended) {
3193            return;
3194        }
3195        EventHandler.off(this._element, EVENT_MOUSEDOWN);
3196        this._element.remove();
3197        this._isAppended = false;
3198    }
3199    // Private
3200    _getElement() {
3201        if (!this._element) {
3202            const backdrop = document.createElement("div");
3203            backdrop.className = this._config.className;
3204            if (this._config.isAnimated) {
3205                backdrop.classList.add(CLASS_NAME_FADE$4);
3206            }
3207            this._element = backdrop;
3208        }
3209        return this._element;
3210    }
3211    _configAfterMerge(config) {
3212        config.rootElement = getElement(config.rootElement);
3213        return config;
3214    }
3215    _append() {
3216        if (this._isAppended) {
3217            return;
3218        }
3219        const element = this._getElement();
3220        this._config.rootElement.append(element);
3221        EventHandler.on(element, EVENT_MOUSEDOWN, () => {
3222            execute(this._config.clickCallback);
3223        });
3224        this._isAppended = true;
3225    }
3226    _emulateAnimation(callback) {
3227        executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
3228    }
3229}
3230const NAME$8 = "focustrap";
3231const DATA_KEY$5 = "bs.focustrap";
3232const EVENT_KEY$5 = `.${DATA_KEY$5}`;
3233const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
3234const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
3235const TAB_KEY = "Tab";
3236const TAB_NAV_FORWARD = "forward";
3237const TAB_NAV_BACKWARD = "backward";
3238const Default$7 = {
3239    autofocus: true,
3240    trapElement: null
3241    // The element to trap focus inside of
3242};
3243const DefaultType$7 = {
3244    autofocus: "boolean",
3245    trapElement: "element"
3246};
3247class FocusTrap extends Config {
3248    constructor(config) {
3249        super();
3250        this._config = this._getConfig(config);
3251        this._isActive = false;
3252        this._lastTabNavDirection = null;
3253    }
3254    // Getters
3255    static get Default() {
3256        return Default$7;
3257    }
3258    static get DefaultType() {
3259        return DefaultType$7;
3260    }
3261    static get NAME() {
3262        return NAME$8;
3263    }
3264    // Public
3265    activate() {
3266        if (this._isActive) {
3267            return;
3268        }
3269        if (this._config.autofocus) {
3270            this._config.trapElement.focus();
3271        }
3272        EventHandler.off(document, EVENT_KEY$5);
3273        EventHandler.on(document, EVENT_FOCUSIN$2, (event) => this._handleFocusin(event));
3274        EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));
3275        this._isActive = true;
3276    }
3277    deactivate() {
3278        if (!this._isActive) {
3279            return;
3280        }
3281        this._isActive = false;
vendor: 5,402 bytes, lines 3282-3440
3282        EventHandler.off(document, EVENT_KEY$5);
3283    }
3284    // Private
3285    _handleFocusin(event) {
3286        const {
3287            trapElement
3288        } = this._config;
3289        if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
3290            return;
3291        }
3292        const elements = SelectorEngine.focusableChildren(trapElement);
3293        if (elements.length === 0) {
3294            trapElement.focus();
3295        } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
3296            elements[elements.length - 1].focus();
3297        } else {
3298            elements[0].focus();
3299        }
3300    }
3301    _handleKeydown(event) {
3302        if (event.key !== TAB_KEY) {
3303            return;
3304        }
3305        this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
3306    }
3307}
3308const NAME$7 = "modal";
3309const DATA_KEY$4 = "bs.modal";
3310const EVENT_KEY$4 = `.${DATA_KEY$4}`;
3311const DATA_API_KEY$2 = ".data-api";
3312const ESCAPE_KEY$1 = "Escape";
3313const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
3314const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
3315const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
3316const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
3317const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
3318const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
3319const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
3320const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
3321const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
3322const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
3323const CLASS_NAME_OPEN = "modal-open";
3324const CLASS_NAME_FADE$3 = "fade";
3325const CLASS_NAME_SHOW$4 = "show";
3326const CLASS_NAME_STATIC = "modal-static";
3327const OPEN_SELECTOR$1 = ".modal.show";
3328const SELECTOR_DIALOG = ".modal-dialog";
3329const SELECTOR_MODAL_BODY = ".modal-body";
3330const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
3331const Default$6 = {
3332    backdrop: true,
3333    focus: true,
3334    keyboard: true
3335};
3336const DefaultType$6 = {
3337    backdrop: "(boolean|string)",
3338    focus: "boolean",
3339    keyboard: "boolean"
3340};
3341class Modal extends BaseComponent {
3342    constructor(element, config) {
3343        super(element, config);
3344        this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
3345        this._backdrop = this._initializeBackDrop();
3346        this._focustrap = this._initializeFocusTrap();
3347        this._isShown = false;
3348        this._isTransitioning = false;
3349        this._scrollBar = new ScrollBarHelper();
3350        this._addEventListeners();
3351    }
3352    // Getters
3353    static get Default() {
3354        return Default$6;
3355    }
3356    static get DefaultType() {
3357        return DefaultType$6;
3358    }
3359    static get NAME() {
3360        return NAME$7;
3361    }
3362    // Public
3363    toggle(relatedTarget) {
3364        return this._isShown ? this.hide() : this.show(relatedTarget);
3365    }
3366    show(relatedTarget) {
3367        if (this._isShown || this._isTransitioning) {
3368            return;
3369        }
3370        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
3371            relatedTarget
3372        });
3373        if (showEvent.defaultPrevented) {
3374            return;
3375        }
3376        this._isShown = true;
3377        this._isTransitioning = true;
3378        this._scrollBar.hide();
3379        document.body.classList.add(CLASS_NAME_OPEN);
3380        this._adjustDialog();
3381        this._backdrop.show(() => this._showElement(relatedTarget));
3382    }
3383    hide() {
3384        if (!this._isShown || this._isTransitioning) {
3385            return;
3386        }
3387        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
3388        if (hideEvent.defaultPrevented) {
3389            return;
3390        }
3391        this._isShown = false;
3392        this._isTransitioning = true;
3393        this._focustrap.deactivate();
3394        this._element.classList.remove(CLASS_NAME_SHOW$4);
3395        this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
3396    }
3397    dispose() {
3398        for (const htmlElement of [window, this._dialog]) {
3399            EventHandler.off(htmlElement, EVENT_KEY$4);
3400        }
3401        this._backdrop.dispose();
3402        this._focustrap.deactivate();
3403        super.dispose();
3404    }
3405    handleUpdate() {
3406        this._adjustDialog();
3407    }
3408    // Private
3409    _initializeBackDrop() {
3410        return new Backdrop({
3411            isVisible: Boolean(this._config.backdrop),
3412            // 'static' option will be translated to true, and booleans will keep their value,
3413            isAnimated: this._isAnimated()
3414        });
3415    }
3416    _initializeFocusTrap() {
3417        return new FocusTrap({
3418            trapElement: this._element
3419        });
3420    }
3421    _showElement(relatedTarget) {
3422        if (!document.body.contains(this._element)) {
3423            document.body.append(this._element);
3424        }
3425        this._element.style.display = "block";
3426        this._element.removeAttribute("aria-hidden");
3427        this._element.setAttribute("aria-modal", true);
3428        this._element.setAttribute("role", "dialog");
3429        this._element.scrollTop = 0;
3430        const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
3431        if (modalBody) {
3432            modalBody.scrollTop = 0;
3433        }
3434        reflow(this._element);
3435        this._element.classList.add(CLASS_NAME_SHOW$4);
3436        const transitionComplete = () => {
3437            if (this._config.focus) {
3438                this._focustrap.activate();
3439            }
3440            this._isTransitioning = false;
vendor: 10,266 bytes, lines 3441-3728
3441            EventHandler.trigger(this._element, EVENT_SHOWN$4, {
3442                relatedTarget
3443            });
3444        };
3445        this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
3446    }
3447    _addEventListeners() {
3448        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => {
3449            if (event.key !== ESCAPE_KEY$1) {
3450                return;
3451            }
3452            if (this._config.keyboard) {
3453                event.preventDefault();
3454                this.hide();
3455                return;
3456            }
3457            this._triggerBackdropTransition();
3458        });
3459        EventHandler.on(window, EVENT_RESIZE$1, () => {
3460            if (this._isShown && !this._isTransitioning) {
3461                this._adjustDialog();
3462            }
3463        });
3464        EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
3465            EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
3466                if (this._element !== event.target || this._element !== event2.target) {
3467                    return;
3468                }
3469                if (this._config.backdrop === "static") {
3470                    this._triggerBackdropTransition();
3471                    return;
3472                }
3473                if (this._config.backdrop) {
3474                    this.hide();
3475                }
3476            });
3477        });
3478    }
3479    _hideModal() {
3480        this._element.style.display = "none";
3481        this._element.setAttribute("aria-hidden", true);
3482        this._element.removeAttribute("aria-modal");
3483        this._element.removeAttribute("role");
3484        this._isTransitioning = false;
3485        this._backdrop.hide(() => {
3486            document.body.classList.remove(CLASS_NAME_OPEN);
3487            this._resetAdjustments();
3488            this._scrollBar.reset();
3489            EventHandler.trigger(this._element, EVENT_HIDDEN$4);
3490        });
3491    }
3492    _isAnimated() {
3493        return this._element.classList.contains(CLASS_NAME_FADE$3);
3494    }
3495    _triggerBackdropTransition() {
3496        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
3497        if (hideEvent.defaultPrevented) {
3498            return;
3499        }
3500        const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3501        const initialOverflowY = this._element.style.overflowY;
3502        if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) {
3503            return;
3504        }
3505        if (!isModalOverflowing) {
3506            this._element.style.overflowY = "hidden";
3507        }
3508        this._element.classList.add(CLASS_NAME_STATIC);
3509        this._queueCallback(() => {
3510            this._element.classList.remove(CLASS_NAME_STATIC);
3511            this._queueCallback(() => {
3512                this._element.style.overflowY = initialOverflowY;
3513            }, this._dialog);
3514        }, this._dialog);
3515        this._element.focus();
3516    }
3517    /**
3518     * The following methods are used to handle overflowing modals
3519     */
3520    _adjustDialog() {
3521        const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3522        const scrollbarWidth = this._scrollBar.getWidth();
3523        const isBodyOverflowing = scrollbarWidth > 0;
3524        if (isBodyOverflowing && !isModalOverflowing) {
3525            const property = isRTL() ? "paddingLeft" : "paddingRight";
3526            this._element.style[property] = `${scrollbarWidth}px`;
3527        }
3528        if (!isBodyOverflowing && isModalOverflowing) {
3529            const property = isRTL() ? "paddingRight" : "paddingLeft";
3530            this._element.style[property] = `${scrollbarWidth}px`;
3531        }
3532    }
3533    _resetAdjustments() {
3534        this._element.style.paddingLeft = "";
3535        this._element.style.paddingRight = "";
3536    }
3537    // Static
3538    static jQueryInterface(config, relatedTarget) {
3539        return this.each(function() {
3540            const data = Modal.getOrCreateInstance(this, config);
3541            if (typeof config !== "string") {
3542                return;
3543            }
3544            if (typeof data[config] === "undefined") {
3545                throw new TypeError(`No method named "${config}"`);
3546            }
3547            data[config](relatedTarget);
3548        });
3549    }
3550}
3551EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event) {
3552    const target = getElementFromSelector(this);
3553    if (["A", "AREA"].includes(this.tagName)) {
3554        event.preventDefault();
3555    }
3556    EventHandler.one(target, EVENT_SHOW$4, (showEvent) => {
3557        if (showEvent.defaultPrevented) {
3558            return;
3559        }
3560        EventHandler.one(target, EVENT_HIDDEN$4, () => {
3561            if (isVisible(this)) {
3562                this.focus();
3563            }
3564        });
3565    });
3566    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
3567    if (alreadyOpen) {
3568        Modal.getInstance(alreadyOpen).hide();
3569    }
3570    const data = Modal.getOrCreateInstance(target);
3571    data.toggle(this);
3572});
3573enableDismissTrigger(Modal);
3574defineJQueryPlugin(Modal);
3575const NAME$6 = "offcanvas";
3576const DATA_KEY$3 = "bs.offcanvas";
3577const EVENT_KEY$3 = `.${DATA_KEY$3}`;
3578const DATA_API_KEY$1 = ".data-api";
3579const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
3580const ESCAPE_KEY = "Escape";
3581const CLASS_NAME_SHOW$3 = "show";
3582const CLASS_NAME_SHOWING$1 = "showing";
3583const CLASS_NAME_HIDING = "hiding";
3584const CLASS_NAME_BACKDROP = "offcanvas-backdrop";
3585const OPEN_SELECTOR = ".offcanvas.show";
3586const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
3587const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
3588const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
3589const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
3590const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
3591const EVENT_RESIZE$2 = `resize${EVENT_KEY$3}`;
3592const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
3593const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
3594const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
3595const Default$5 = {
3596    backdrop: true,
3597    keyboard: true,
3598    scroll: false
3599};
3600const DefaultType$5 = {
3601    backdrop: "(boolean|string)",
3602    keyboard: "boolean",
3603    scroll: "boolean"
3604};
3605class Offcanvas extends BaseComponent {
3606    constructor(element, config) {
3607        super(element, config);
3608        this._isShown = false;
3609        this._backdrop = this._initializeBackDrop();
3610        this._focustrap = this._initializeFocusTrap();
3611        this._addEventListeners();
3612    }
3613    // Getters
3614    static get Default() {
3615        return Default$5;
3616    }
3617    static get DefaultType() {
3618        return DefaultType$5;
3619    }
3620    static get NAME() {
3621        return NAME$6;
3622    }
3623    // Public
3624    toggle(relatedTarget) {
3625        return this._isShown ? this.hide() : this.show(relatedTarget);
3626    }
3627    show(relatedTarget) {
3628        if (this._isShown) {
3629            return;
3630        }
3631        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
3632            relatedTarget
3633        });
3634        if (showEvent.defaultPrevented) {
3635            return;
3636        }
3637        this._isShown = true;
3638        this._backdrop.show();
3639        if (!this._config.scroll) {
3640            new ScrollBarHelper().hide();
3641        }
3642        this._element.setAttribute("aria-modal", true);
3643        this._element.setAttribute("role", "dialog");
3644        this._element.classList.add(CLASS_NAME_SHOWING$1);
3645        const completeCallBack = () => {
3646            if (!this._config.scroll || this._config.backdrop) {
3647                this._focustrap.activate();
3648            }
3649            this._element.classList.add(CLASS_NAME_SHOW$3);
3650            this._element.classList.remove(CLASS_NAME_SHOWING$1);
3651            EventHandler.trigger(this._element, EVENT_SHOWN$3, {
3652                relatedTarget
3653            });
3654        };
3655        this._queueCallback(completeCallBack, this._element, true);
3656    }
3657    hide() {
3658        if (!this._isShown) {
3659            return;
3660        }
3661        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
3662        if (hideEvent.defaultPrevented) {
3663            return;
3664        }
3665        this._focustrap.deactivate();
3666        this._element.blur();
3667        this._isShown = false;
3668        this._element.classList.add(CLASS_NAME_HIDING);
3669        this._backdrop.hide();
3670        const completeCallback = () => {
3671            this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
3672            this._element.removeAttribute("aria-modal");
3673            this._element.removeAttribute("role");
3674            if (!this._config.scroll) {
3675                new ScrollBarHelper().reset();
3676            }
3677            EventHandler.trigger(this._element, EVENT_HIDDEN$3);
3678        };
3679        this._queueCallback(completeCallback, this._element, true);
3680    }
3681    dispose() {
3682        this._backdrop.dispose();
3683        this._focustrap.deactivate();
3684        super.dispose();
3685    }
3686    // Private
3687    _initializeBackDrop() {
3688        const clickCallback = () => {
3689            if (this._config.backdrop === "static") {
3690                EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
3691                return;
3692            }
3693            this.hide();
3694        };
3695        const isVisible2 = Boolean(this._config.backdrop);
3696        return new Backdrop({
3697            className: CLASS_NAME_BACKDROP,
3698            isVisible: isVisible2,
3699            isAnimated: true,
3700            rootElement: this._element.parentNode,
3701            clickCallback: isVisible2 ? clickCallback : null
3702        });
3703    }
3704    _initializeFocusTrap() {
3705        return new FocusTrap({
3706            trapElement: this._element
3707        });
3708    }
3709    _addEventListeners() {
3710        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
3711            if (event.key !== ESCAPE_KEY) {
3712                return;
3713            }
3714            if (!this._config.keyboard) {
3715                EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
3716                return;
3717            }
3718            this.hide();
3719        });
3720    }
3721    // Static
3722    static jQueryInterface(config) {
3723        return this.each(function() {
3724            const data = Offcanvas.getOrCreateInstance(this, config);
3725            if (typeof config !== "string") {
3726                return;
3727            }
3728            if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
3729                throw new TypeError(`No method named "${config}"`);
3730            }
3731            data[config](this);
3732        });
3733    }
3734}
3735EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event) {
3736    const target = getElementFromSelector(this);
3737    if (["A", "AREA"].includes(this.tagName)) {
3738        event.preventDefault();
3739    }
3740    if (isDisabled(this)) {
3741        return;
3742    }
3743    EventHandler.one(target, EVENT_HIDDEN$3, () => {
3744        if (isVisible(this)) {
3745            this.focus();
3746        }
3747    });
3748    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
3749    if (alreadyOpen && alreadyOpen !== target) {
3750        Offcanvas.getInstance(alreadyOpen).hide();
3751    }
3752    const data = Offcanvas.getOrCreateInstance(target);
3753    data.toggle(this);
3754});
3755EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
3756    for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
3757        Offcanvas.getOrCreateInstance(selector).show();
3758    }
3759});
3760EventHandler.on(window, EVENT_RESIZE$2, () => {
3761    for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) {
3762        if (getComputedStyle(element).position !== "fixed") {
3763            Offcanvas.getOrCreateInstance(element).hide();
3764        }
3765    }
3766});
3767enableDismissTrigger(Offcanvas);
3768defineJQueryPlugin(Offcanvas);
3769const uriAttributes = /* @__PURE__ */ new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]);
3770const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
3771const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
3772const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
3773const allowedAttribute = (attribute, allowedAttributeList) => {
3774    const attributeName = attribute.nodeName.toLowerCase();
3775    if (allowedAttributeList.includes(attributeName)) {
3776        if (uriAttributes.has(attributeName)) {
3777            return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
3778        }
3779        return true;
3780    }
3781    return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName));
3782};
3783const DefaultAllowlist = {
3784    // Global attributes allowed on any supplied element below.
3785    "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN],
3786    a: ["target", "href", "title", "rel"],
3787    area: [],
3788    b: [],
3789    br: [],
3790    col: [],
3791    code: [],
3792    div: [],
3793    em: [],
3794    hr: [],
3795    h1: [],
3796    h2: [],
3797    h3: [],
3798    h4: [],
3799    h5: [],
3800    h6: [],
3801    i: [],
3802    img: ["src", "srcset", "alt", "title", "width", "height"],
3803    li: [],
3804    ol: [],
3805    p: [],
3806    pre: [],
3807    s: [],
3808    small: [],
3809    span: [],
3810    sub: [],
3811    sup: [],
3812    strong: [],
3813    u: [],
3814    ul: []
3815};
3816function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
3817    if (!unsafeHtml.length) {
3818        return unsafeHtml;
3819    }
3820    if (sanitizeFunction && typeof sanitizeFunction === "function") {
3821        return sanitizeFunction(unsafeHtml);
3822    }
3823    const domParser = new window.DOMParser();
3824    const createdDocument = domParser.parseFromString(unsafeHtml, "text/html");
3825    const elements = [].concat(...createdDocument.body.querySelectorAll("*"));
3826    for (const element of elements) {
3827        const elementName = element.nodeName.toLowerCase();
3828        if (!Object.keys(allowList).includes(elementName)) {
3829            element.remove();
3830            continue;
3831        }
3832        const attributeList = [].concat(...element.attributes);
3833        const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []);
3834        for (const attribute of attributeList) {
3835            if (!allowedAttribute(attribute, allowedAttributes)) {
3836                element.removeAttribute(attribute.nodeName);
3837            }
3838        }
3839    }
3840    return createdDocument.body.innerHTML;
3841}
3842const NAME$5 = "TemplateFactory";
3843const Default$4 = {
3844    allowList: DefaultAllowlist,
3845    content: {},
3846    // { selector : text ,  selector2 : text2 , }
3847    extraClass: "",
3848    html: false,
3849    sanitize: true,
3850    sanitizeFn: null,
3851    template: "<div></div>"
3852};
3853const DefaultType$4 = {
3854    allowList: "object",
3855    content: "object",
3856    extraClass: "(string|function)",
3857    html: "boolean",
3858    sanitize: "boolean",
3859    sanitizeFn: "(null|function)",
3860    template: "string"
3861};
3862const DefaultContentType = {
3863    entry: "(string|element|function|null)",
3864    selector: "(string|element)"
3865};
3866class TemplateFactory extends Config {
3867    constructor(config) {
3868        super();
3869        this._config = this._getConfig(config);
3870    }
3871    // Getters
3872    static get Default() {
3873        return Default$4;
3874    }
3875    static get DefaultType() {
3876        return DefaultType$4;
3877    }
3878    static get NAME() {
3879        return NAME$5;
3880    }
3881    // Public
3882    getContent() {
3883        return Object.values(this._config.content).map((config) =>
vendor: 5,493 bytes, lines 3883-4058
3883 this._resolvePossibleFunction(config)).filter(Boolean);
3884    }
3885    hasContent() {
3886        return this.getContent().length > 0;
3887    }
3888    changeContent(content) {
3889        this._checkContent(content);
3890        this._config.content = {
3891            ...this._config.content,
3892            ...content
3893        };
3894        return this;
3895    }
3896    toHtml() {
3897        const templateWrapper = document.createElement("div");
3898        templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
3899        for (const [selector, text] of Object.entries(this._config.content)) {
3900            this._setContent(templateWrapper, text, selector);
3901        }
3902        const template = templateWrapper.children[0];
3903        const extraClass = this._resolvePossibleFunction(this._config.extraClass);
3904        if (extraClass) {
3905            template.classList.add(...extraClass.split(" "));
3906        }
3907        return template;
3908    }
3909    // Private
3910    _typeCheckConfig(config) {
3911        super._typeCheckConfig(config);
3912        this._checkContent(config.content);
3913    }
3914    _checkContent(arg) {
3915        for (const [selector, content] of Object.entries(arg)) {
3916            super._typeCheckConfig({
3917                selector,
3918                entry: content
3919            }, DefaultContentType);
3920        }
3921    }
3922    _setContent(template, content, selector) {
3923        const templateElement = SelectorEngine.findOne(selector, template);
3924        if (!templateElement) {
3925            return;
3926        }
3927        content = this._resolvePossibleFunction(content);
3928        if (!content) {
3929            templateElement.remove();
3930            return;
3931        }
3932        if (isElement(content)) {
3933            this._putElementInTemplate(getElement(content), templateElement);
3934            return;
3935        }
3936        if (this._config.html) {
3937            templateElement.innerHTML = this._maybeSanitize(content);
3938            return;
3939        }
3940        templateElement.textContent = content;
3941    }
3942    _maybeSanitize(arg) {
3943        return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
3944    }
3945    _resolvePossibleFunction(arg) {
3946        return typeof arg === "function" ? arg(this) : arg;
3947    }
3948    _putElementInTemplate(element, templateElement) {
3949        if (this._config.html) {
3950            templateElement.innerHTML = "";
3951            templateElement.append(element);
3952            return;
3953        }
3954        templateElement.textContent = element.textContent;
3955    }
3956}
3957const NAME$4 = "tooltip";
3958const DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]);
3959const CLASS_NAME_FADE$2 = "fade";
3960const CLASS_NAME_MODAL = "modal";
3961const CLASS_NAME_SHOW$2 = "show";
3962const SELECTOR_TOOLTIP_INNER = ".tooltip-inner";
3963const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
3964const EVENT_MODAL_HIDE = "hide.bs.modal";
3965const TRIGGER_HOVER = "hover";
3966const TRIGGER_FOCUS = "focus";
3967const TRIGGER_CLICK = "click";
3968const TRIGGER_MANUAL = "manual";
3969const EVENT_HIDE$2 = "hide";
3970const EVENT_HIDDEN$2 = "hidden";
3971const EVENT_SHOW$2 = "show";
3972const EVENT_SHOWN$2 = "shown";
3973const EVENT_INSERTED = "inserted";
3974const EVENT_CLICK$1 = "click";
3975const EVENT_FOCUSIN$1 = "focusin";
3976const EVENT_FOCUSOUT$1 = "focusout";
3977const EVENT_MOUSEENTER = "mouseenter";
3978const EVENT_MOUSELEAVE = "mouseleave";
3979const AttachmentMap = {
3980    AUTO: "auto",
3981    TOP: "top",
3982    RIGHT: isRTL() ? "left" : "right",
3983    BOTTOM: "bottom",
3984    LEFT: isRTL() ? "right" : "left"
3985};
3986const Default$3 = {
3987    allowList: DefaultAllowlist,
3988    animation: true,
3989    boundary: "clippingParents",
3990    container: false,
3991    customClass: "",
3992    delay: 0,
3993    fallbackPlacements: ["top", "right", "bottom", "left"],
3994    html: false,
3995    offset: [0, 0],
3996    placement: "top",
3997    popperConfig: null,
3998    sanitize: true,
3999    sanitizeFn: null,
4000    selector: false,
4001    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
4002    title: "",
4003    trigger: "hover focus"
4004};
4005const DefaultType$3 = {
4006    allowList: "object",
4007    animation: "boolean",
4008    boundary: "(string|element)",
4009    container: "(string|element|boolean)",
4010    customClass: "(string|function)",
4011    delay: "(number|object)",
4012    fallbackPlacements: "array",
4013    html: "boolean",
4014    offset: "(array|string|function)",
4015    placement: "(string|function)",
4016    popperConfig: "(null|object|function)",
4017    sanitize: "boolean",
4018    sanitizeFn: "(null|function)",
4019    selector: "(string|boolean)",
4020    template: "string",
4021    title: "(string|element|function)",
4022    trigger: "string"
4023};
4024class Tooltip extends BaseComponent {
4025    constructor(element, config) {
4026        if (typeof Popper === "undefined") {
4027            throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
4028        }
4029        super(element, config);
4030        this._isEnabled = true;
4031        this._timeout = 0;
4032        this._isHovered = null;
4033        this._activeTrigger = {};
4034        this._popper = null;
4035        this._templateFactory = null;
4036        this._newContent = null;
4037        this.tip = null;
4038        this._setListeners();
4039        if (!this._config.selector) {
4040            this._fixTitle();
4041        }
4042    }
4043    // Getters
4044    static get Default() {
4045        return Default$3;
4046    }
4047    static get DefaultType() {
4048        return DefaultType$3;
4049    }
4050    static get NAME() {
4051        return NAME$4;
4052    }
4053    // Public
4054    enable() {
4055        this._isEnabled = true;
4056    }
4057    disable() {
4058        this._isEnabled = false;
vendor: 10,575 bytes, lines 4059-4335
4059    }
4060    toggleEnabled() {
4061        this._isEnabled = !this._isEnabled;
4062    }
4063    toggle() {
4064        if (!this._isEnabled) {
4065            return;
4066        }
4067        this._activeTrigger.click = !this._activeTrigger.click;
4068        if (this._isShown()) {
4069            this._leave();
4070            return;
4071        }
4072        this._enter();
4073    }
4074    dispose() {
4075        clearTimeout(this._timeout);
4076        EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
4077        if (this._element.getAttribute("data-bs-original-title")) {
4078            this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title"));
4079        }
4080        this._disposePopper();
4081        super.dispose();
4082    }
4083    show() {
4084        if (this._element.style.display === "none") {
4085            throw new Error("Please use show on visible elements");
4086        }
4087        if (!(this._isWithContent() && this._isEnabled)) {
4088            return;
4089        }
4090        const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
4091        const shadowRoot = findShadowRoot(this._element);
4092        const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
4093        if (showEvent.defaultPrevented || !isInTheDom) {
4094            return;
4095        }
4096        this._disposePopper();
4097        const tip = this._getTipElement();
4098        this._element.setAttribute("aria-describedby", tip.getAttribute("id"));
4099        const {
4100            container
4101        } = this._config;
4102        if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
4103            container.append(tip);
4104            EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
4105        }
4106        this._popper = this._createPopper(tip);
4107        tip.classList.add(CLASS_NAME_SHOW$2);
4108        if ("ontouchstart" in document.documentElement) {
4109            for (const element of [].concat(...document.body.children)) {
4110                EventHandler.on(element, "mouseover", noop$1);
4111            }
4112        }
4113        const complete = () => {
4114            EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
4115            if (this._isHovered === false) {
4116                this._leave();
4117            }
4118            this._isHovered = false;
4119        };
4120        this._queueCallback(complete, this.tip, this._isAnimated());
4121    }
4122    hide() {
4123        if (!this._isShown()) {
4124            return;
4125        }
4126        const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
4127        if (hideEvent.defaultPrevented) {
4128            return;
4129        }
4130        const tip = this._getTipElement();
4131        tip.classList.remove(CLASS_NAME_SHOW$2);
4132        if ("ontouchstart" in document.documentElement) {
4133            for (const element of [].concat(...document.body.children)) {
4134                EventHandler.off(element, "mouseover", noop$1);
4135            }
4136        }
4137        this._activeTrigger[TRIGGER_CLICK] = false;
4138        this._activeTrigger[TRIGGER_FOCUS] = false;
4139        this._activeTrigger[TRIGGER_HOVER] = false;
4140        this._isHovered = null;
4141        const complete = () => {
4142            if (this._isWithActiveTrigger()) {
4143                return;
4144            }
4145            if (!this._isHovered) {
4146                this._disposePopper();
4147            }
4148            this._element.removeAttribute("aria-describedby");
4149            EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
4150        };
4151        this._queueCallback(complete, this.tip, this._isAnimated());
4152    }
4153    update() {
4154        if (this._popper) {
4155            this._popper.update();
4156        }
4157    }
4158    // Protected
4159    _isWithContent() {
4160        return Boolean(this._getTitle());
4161    }
4162    _getTipElement() {
4163        if (!this.tip) {
4164            this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
4165        }
4166        return this.tip;
4167    }
4168    _createTipElement(content) {
4169        const tip = this._getTemplateFactory(content).toHtml();
4170        if (!tip) {
4171            return null;
4172        }
4173        tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
4174        tip.classList.add(`bs-${this.constructor.NAME}-auto`);
4175        const tipId = getUID(this.constructor.NAME).toString();
4176        tip.setAttribute("id", tipId);
4177        if (this._isAnimated()) {
4178            tip.classList.add(CLASS_NAME_FADE$2);
4179        }
4180        return tip;
4181    }
4182    setContent(content) {
4183        this._newContent = content;
4184        if (this._isShown()) {
4185            this._disposePopper();
4186            this.show();
4187        }
4188    }
4189    _getTemplateFactory(content) {
4190        if (this._templateFactory) {
4191            this._templateFactory.changeContent(content);
4192        } else {
4193            this._templateFactory = new TemplateFactory({
4194                ...this._config,
4195                // the `content` var has to be after `this._config`
4196                // to override config.content in case of popover
4197                content,
4198                extraClass: this._resolvePossibleFunction(this._config.customClass)
4199            });
4200        }
4201        return this._templateFactory;
4202    }
4203    _getContentForTemplate() {
4204        return {
4205            [SELECTOR_TOOLTIP_INNER]: this._getTitle()
4206        };
4207    }
4208    _getTitle() {
4209        return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title");
4210    }
4211    // Private
4212    _initializeOnDelegatedTarget(event) {
4213        return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
4214    }
4215    _isAnimated() {
4216        return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
4217    }
4218    _isShown() {
4219        return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
4220    }
4221    _createPopper(tip) {
4222        const placement = typeof this._config.placement === "function" ? this._config.placement.call(this, tip, this._element) : this._config.placement;
4223        const attachment = AttachmentMap[placement.toUpperCase()];
4224        return createPopper(this._element, tip, this._getPopperConfig(attachment));
4225    }
4226    _getOffset() {
4227        const {
4228            offset: offset2
4229        } = this._config;
4230        if (typeof offset2 === "string") {
4231            return offset2.split(",").map((value) => Number.parseInt(value, 10));
4232        }
4233        if (typeof offset2 === "function") {
4234            return (popperData) => offset2(popperData, this._element);
4235        }
4236        return offset2;
4237    }
4238    _resolvePossibleFunction(arg) {
4239        return typeof arg === "function" ? arg.call(this._element) : arg;
4240    }
4241    _getPopperConfig(attachment) {
4242        const defaultBsPopperConfig = {
4243            placement: attachment,
4244            modifiers: [{
4245                name: "flip",
4246                options: {
4247                    fallbackPlacements: this._config.fallbackPlacements
4248                }
4249            }, {
4250                name: "offset",
4251                options: {
4252                    offset: this._getOffset()
4253                }
4254            }, {
4255                name: "preventOverflow",
4256                options: {
4257                    boundary: this._config.boundary
4258                }
4259            }, {
4260                name: "arrow",
4261                options: {
4262                    element: `.${this.constructor.NAME}-arrow`
4263                }
4264            }, {
4265                name: "preSetPlacement",
4266                enabled: true,
4267                phase: "beforeMain",
4268                fn: (data) => {
4269                    this._getTipElement().setAttribute("data-popper-placement", data.state.placement);
4270                }
4271            }]
4272        };
4273        return {
4274            ...defaultBsPopperConfig,
4275            ...typeof this._config.popperConfig === "function" ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig
4276        };
4277    }
4278    _setListeners() {
4279        const triggers = this._config.trigger.split(" ");
4280        for (const trigger of triggers) {
4281            if (trigger === "click") {
4282                EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, (event) => {
4283                    const context = this._initializeOnDelegatedTarget(event);
4284                    context.toggle();
4285                });
4286            } else if (trigger !== TRIGGER_MANUAL) {
4287                const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
4288                const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
4289                EventHandler.on(this._element, eventIn, this._config.selector, (event) => {
4290                    const context = this._initializeOnDelegatedTarget(event);
4291                    context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
4292                    context._enter();
4293                });
4294                EventHandler.on(this._element, eventOut, this._config.selector, (event) => {
4295                    const context = this._initializeOnDelegatedTarget(event);
4296                    context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
4297                    context._leave();
4298                });
4299            }
4300        }
4301        this._hideModalHandler = () => {
4302            if (this._element) {
4303                this.hide();
4304            }
4305        };
4306        EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
4307    }
4308    _fixTitle() {
4309        const title = this._element.getAttribute("title");
4310        if (!title) {
4311            return;
4312        }
4313        if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) {
4314            this._element.setAttribute("aria-label", title);
4315        }
4316        this._element.setAttribute("data-bs-original-title", title);
4317        this._element.removeAttribute("title");
4318    }
4319    _enter() {
4320        if (this._isShown() || this._isHovered) {
4321            this._isHovered = true;
4322            return;
4323        }
4324        this._isHovered = true;
4325        this._setTimeout(() => {
4326            if (this._isHovered) {
4327                this.show();
4328            }
4329        }, this._config.delay.show);
4330    }
4331    _leave() {
4332        if (this._isWithActiveTrigger()) {
4333            return;
4334        }
4335        this._isHovered = false;
4336        this._setTimeout(() => {
4337            if (!this._isHovered) {
4338                this.hide();
4339            }
4340        }, this._config.delay.hide);
4341    }
4342    _setTimeout(handler, timeout) {
4343        clearTimeout(this._timeout);
4344        this._timeout = setTimeout(handler, timeout);
4345    }
4346    _isWithActiveTrigger() {
4347        return Object.values(this._activeTrigger).includes(true);
4348    }
4349    _getConfig(config) {
4350        const dataAttributes = Manipulator.getDataAttributes(this._element);
4351        for (const dataAttribute of Object.keys(dataAttributes)) {
4352            if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
4353                delete dataAttributes[dataAttribute];
4354            }
4355        }
4356        config = {
4357            ...dataAttributes,
4358            ...typeof config === "object" && config ? config : {}
4359        };
4360        config = this._mergeConfigObj(config);
4361        config = this._configAfterMerge(config);
4362        this._typeCheckConfig(config);
4363        return config;
4364    }
4365    _configAfterMerge(config) {
4366        config.container = config.container === false ? document.body : getElement(config.container);
4367        if (typeof config.delay === "number") {
4368            config.delay = {
4369                show: config.delay,
4370                hide: config.delay
4371            };
4372        }
4373        if (typeof config.title === "number") {
4374            config.title = config.title.toString();
4375        }
4376        if (typeof config.content === "number") {
4377            config.content = config.content.toString();
4378        }
4379        return config;
4380    }
4381    _getDelegateConfig() {
4382        const config = {};
4383        for (const key in this._config) {
4384            if (this.constructor.Default[key] !== this._config[key]) {
4385                config[key] = this._config[key];
4386            }
4387        }
4388        config.selector = false;
4389        config.trigger = "manual";
4390        return config;
4391    }
4392    _disposePopper() {
4393        if (this._popper) {
4394            this._popper.destroy();
4395            this._popper = null;
4396        }
4397        if (this.tip) {
4398            this.tip.remove();
4399            this.tip = null;
4400        }
4401    }
4402    // Static
4403    static jQueryInterface(config) {
4404        return this.each(function() {
4405            const data = Tooltip.getOrCreateInstance(this, config);
4406            if (typeof config !== "string") {
4407                return;
4408            }
4409            if (typeof data[config] === "undefined") {
4410                throw new TypeError(`No method named "${config}"`);
4411            }
4412            data[config]();
4413        });
4414    }
4415}
4416defineJQueryPlugin(Tooltip);
4417const NAME$3 = "popover";
4418const SELECTOR_TITLE = ".popover-header";
4419const SELECTOR_CONTENT = ".popover-body";
4420const Default$2 = {
4421    ...Tooltip.Default,
4422    content: "",
4423    offset: [0, 8],
4424    placement: "right",
4425    template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
4426    trigger: "click"
4427};
4428const DefaultType$2 = {
4429    ...Tooltip.DefaultType,
4430    content: "(null|string|element|function)"
4431};
4432class Popover extends Tooltip {
4433    // Getters
4434    static get Default() {
4435        return Default$2;
4436    }
4437    static get DefaultType() {
4438        return DefaultType$2;
4439    }
4440    static get NAME() {
4441        return NAME$3;
4442    }
4443    // Overrides
4444    _isWithContent() {
4445        return this._getTitle() || this._getContent();
4446    }
4447    // Private
4448    _getContentForTemplate() {
4449        return {
4450            [SELECTOR_TITLE]: this._getTitle(),
4451            [SELECTOR_CONTENT]: this._getContent()
4452        };
4453    }
4454    _getContent() {
4455        return this._resolvePossibleFunction(this._config.content);
4456    }
4457    // Static
4458    static jQueryInterface(config) {
4459        return this.each(function() {
4460            const data = Popover.getOrCreateInstance(this, config);
4461            if (typeof config !== "string") {
4462                return;
4463            }
4464            if (typeof data[config] === "undefined") {
4465                throw new TypeError(`No method named "${config}"`);
4466            }
4467            data[config]();
4468        });
4469    }
4470}
4471defineJQueryPlugin(Popover);
4472const NAME$2 = "scrollspy";
4473const DATA_KEY$2 = "bs.scrollspy";
4474const EVENT_KEY$2 = `.${DATA_KEY$2}`;
4475const DATA_API_KEY = ".data-api";
4476const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
4477const EVENT_CLICK$2 = `click${EVENT_KEY$2}`;
4478const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
vendor: 4,385 bytes, lines 4479-4595
4479const CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
4480const CLASS_NAME_ACTIVE$1 = "active";
4481const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
4482const SELECTOR_TARGET_LINKS = "[href]";
4483const SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
4484const SELECTOR_NAV_LINKS = ".nav-link";
4485const SELECTOR_NAV_ITEMS = ".nav-item";
4486const SELECTOR_LIST_ITEMS = ".list-group-item";
4487const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
4488const SELECTOR_DROPDOWN = ".dropdown";
4489const SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle";
4490const Default$1 = {
4491    offset: null,
4492    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
4493    rootMargin: "0px 0px -25%",
4494    smoothScroll: false,
4495    target: null,
4496    threshold: [0.1, 0.5, 1]
4497};
4498const DefaultType$1 = {
4499    offset: "(number|null)",
4500    // TODO v6 @deprecated, keep it for backwards compatibility reasons
4501    rootMargin: "string",
4502    smoothScroll: "boolean",
4503    target: "element",
4504    threshold: "array"
4505};
4506class ScrollSpy extends BaseComponent {
4507    constructor(element, config) {
4508        super(element, config);
4509        this._targetLinks = /* @__PURE__ */ new Map();
4510        this._observableSections = /* @__PURE__ */ new Map();
4511        this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element;
4512        this._activeTarget = null;
4513        this._observer = null;
4514        this._previousScrollData = {
4515            visibleEntryTop: 0,
4516            parentScrollTop: 0
4517        };
4518        this.refresh();
4519    }
4520    // Getters
4521    static get Default() {
4522        return Default$1;
4523    }
4524    static get DefaultType() {
4525        return DefaultType$1;
4526    }
4527    static get NAME() {
4528        return NAME$2;
4529    }
4530    // Public
4531    refresh() {
4532        this._initializeTargetsAndObservables();
4533        this._maybeEnableSmoothScroll();
4534        if (this._observer) {
4535            this._observer.disconnect();
4536        } else {
4537            this._observer = this._getNewObserver();
4538        }
4539        for (const section of this._observableSections.values()) {
4540            this._observer.observe(section);
4541        }
4542    }
4543    dispose() {
4544        this._observer.disconnect();
4545        super.dispose();
4546    }
4547    // Private
4548    _configAfterMerge(config) {
4549        config.target = getElement(config.target) || document.body;
4550        config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
4551        if (typeof config.threshold === "string") {
4552            config.threshold = config.threshold.split(",").map((value) => Number.parseFloat(value));
4553        }
4554        return config;
4555    }
4556    _maybeEnableSmoothScroll() {
4557        if (!this._config.smoothScroll) {
4558            return;
4559        }
4560        EventHandler.off(this._config.target, EVENT_CLICK$2);
4561        EventHandler.on(this._config.target, EVENT_CLICK$2, SELECTOR_TARGET_LINKS, (event) => {
4562            const observableSection = this._observableSections.get(event.target.hash);
4563            if (observableSection) {
4564                event.preventDefault();
4565                const root = this._rootElement || window;
4566                const height = observableSection.offsetTop - this._element.offsetTop;
4567                if (root.scrollTo) {
4568                    root.scrollTo({
4569                        top: height,
4570                        behavior: "smooth"
4571                    });
4572                    return;
4573                }
4574                root.scrollTop = height;
4575            }
4576        });
4577    }
4578    _getNewObserver() {
4579        const options = {
4580            root: this._rootElement,
4581            threshold: this._config.threshold,
4582            rootMargin: this._config.rootMargin
4583        };
4584        return new IntersectionObserver((entries) => this._observerCallback(entries), options);
4585    }
4586    // The logic of selection
4587    _observerCallback(entries) {
4588        const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);
4589        const activate = (entry) => {
4590            this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
4591            this._process(targetElement(entry));
4592        };
4593        const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
4594        const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
4595        this._previousScrollData.parentScrollTop = parentScrollTop;
vendor: 5,125 bytes, lines 4596-4715
4596        for (const entry of entries) {
4597            if (!entry.isIntersecting) {
4598                this._activeTarget = null;
4599                this._clearActiveClass(targetElement(entry));
4600                continue;
4601            }
4602            const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
4603            if (userScrollsDown && entryIsLowerThanPrevious) {
4604                activate(entry);
4605                if (!parentScrollTop) {
4606                    return;
4607                }
4608                continue;
4609            }
4610            if (!userScrollsDown && !entryIsLowerThanPrevious) {
4611                activate(entry);
4612            }
4613        }
4614    }
4615    _initializeTargetsAndObservables() {
4616        this._targetLinks = /* @__PURE__ */ new Map();
4617        this._observableSections = /* @__PURE__ */ new Map();
4618        const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
4619        for (const anchor of targetLinks) {
4620            if (!anchor.hash || isDisabled(anchor)) {
4621                continue;
4622            }
4623            const observableSection = SelectorEngine.findOne(anchor.hash, this._element);
4624            if (isVisible(observableSection)) {
4625                this._targetLinks.set(anchor.hash, anchor);
4626                this._observableSections.set(anchor.hash, observableSection);
4627            }
4628        }
4629    }
4630    _process(target) {
4631        if (this._activeTarget === target) {
4632            return;
4633        }
4634        this._clearActiveClass(this._config.target);
4635        this._activeTarget = target;
4636        target.classList.add(CLASS_NAME_ACTIVE$1);
4637        this._activateParents(target);
4638        EventHandler.trigger(this._element, EVENT_ACTIVATE, {
4639            relatedTarget: target
4640        });
4641    }
4642    _activateParents(target) {
4643        if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
4644            SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
4645            return;
4646        }
4647        for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
4648            for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
4649                item.classList.add(CLASS_NAME_ACTIVE$1);
4650            }
4651        }
4652    }
4653    _clearActiveClass(parent) {
4654        parent.classList.remove(CLASS_NAME_ACTIVE$1);
4655        const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
4656        for (const node of activeNodes) {
4657            node.classList.remove(CLASS_NAME_ACTIVE$1);
4658        }
4659    }
4660    // Static
4661    static jQueryInterface(config) {
4662        return this.each(function() {
4663            const data = ScrollSpy.getOrCreateInstance(this, config);
4664            if (typeof config !== "string") {
4665                return;
4666            }
4667            if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
4668                throw new TypeError(`No method named "${config}"`);
4669            }
4670            data[config]();
4671        });
4672    }
4673}
4674EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
4675    for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
4676        ScrollSpy.getOrCreateInstance(spy);
4677    }
4678});
4679defineJQueryPlugin(ScrollSpy);
4680const NAME$1 = "tab";
4681const DATA_KEY$1 = "bs.tab";
4682const EVENT_KEY$1 = `.${DATA_KEY$1}`;
4683const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
4684const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
4685const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
4686const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
4687const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
4688const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
4689const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
4690const ARROW_LEFT_KEY = "ArrowLeft";
4691const ARROW_RIGHT_KEY = "ArrowRight";
4692const ARROW_UP_KEY = "ArrowUp";
4693const ARROW_DOWN_KEY = "ArrowDown";
4694const CLASS_NAME_ACTIVE = "active";
4695const CLASS_NAME_FADE$1 = "fade";
4696const CLASS_NAME_SHOW$1 = "show";
4697const CLASS_DROPDOWN = "dropdown";
4698const SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
4699const SELECTOR_DROPDOWN_MENU = ".dropdown-menu";
4700const NOT_SELECTOR_DROPDOWN_TOGGLE = ":not(.dropdown-toggle)";
4701const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
4702const SELECTOR_OUTER = ".nav-item, .list-group-item";
4703const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
4704const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
4705const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
4706const 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"]`;
4707class Tab extends BaseComponent {
4708    constructor(element) {
4709        super(element);
4710        this._parent = this._element.closest(SELECTOR_TAB_PANEL);
4711        if (!this._parent) {
4712            return;
4713        }
4714        this._setInitialAttributes(this._parent, this._getChildren());
4715        EventHandler.on(this._element, EVENT_KEYDOWN, (event) =>
vendor: 4,379 bytes, lines 4715-4832
4715 this._keydown(event));
4716    }
4717    // Getters
4718    static get NAME() {
4719        return NAME$1;
4720    }
4721    // Public
4722    show() {
4723        const innerElem = this._element;
4724        if (this._elemIsActive(innerElem)) {
4725            return;
4726        }
4727        const active = this._getActiveElem();
4728        const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
4729            relatedTarget: innerElem
4730        }) : null;
4731        const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
4732            relatedTarget: active
4733        });
4734        if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
4735            return;
4736        }
4737        this._deactivate(active, innerElem);
4738        this._activate(innerElem, active);
4739    }
4740    // Private
4741    _activate(element, relatedElem) {
4742        if (!element) {
4743            return;
4744        }
4745        element.classList.add(CLASS_NAME_ACTIVE);
4746        this._activate(getElementFromSelector(element));
4747        const complete = () => {
4748            if (element.getAttribute("role") !== "tab") {
4749                element.classList.add(CLASS_NAME_SHOW$1);
4750                return;
4751            }
4752            element.removeAttribute("tabindex");
4753            element.setAttribute("aria-selected", true);
4754            this._toggleDropDown(element, true);
4755            EventHandler.trigger(element, EVENT_SHOWN$1, {
4756                relatedTarget: relatedElem
4757            });
4758        };
4759        this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
4760    }
4761    _deactivate(element, relatedElem) {
4762        if (!element) {
4763            return;
4764        }
4765        element.classList.remove(CLASS_NAME_ACTIVE);
4766        element.blur();
4767        this._deactivate(getElementFromSelector(element));
4768        const complete = () => {
4769            if (element.getAttribute("role") !== "tab") {
4770                element.classList.remove(CLASS_NAME_SHOW$1);
4771                return;
4772            }
4773            element.setAttribute("aria-selected", false);
4774            element.setAttribute("tabindex", "-1");
4775            this._toggleDropDown(element, false);
4776            EventHandler.trigger(element, EVENT_HIDDEN$1, {
4777                relatedTarget: relatedElem
4778            });
4779        };
4780        this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
4781    }
4782    _keydown(event) {
4783        if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {
4784            return;
4785        }
4786        event.stopPropagation();
4787        event.preventDefault();
4788        const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
4789        const nextActiveElement = getNextActiveElement(this._getChildren().filter((element) => !isDisabled(element)), event.target, isNext, true);
4790        if (nextActiveElement) {
4791            nextActiveElement.focus({
4792                preventScroll: true
4793            });
4794            Tab.getOrCreateInstance(nextActiveElement).show();
4795        }
4796    }
4797    _getChildren() {
4798        return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
4799    }
4800    _getActiveElem() {
4801        return this._getChildren().find((child2) => this._elemIsActive(child2)) || null;
4802    }
4803    _setInitialAttributes(parent, children2) {
4804        this._setAttributeIfNotExists(parent, "role", "tablist");
4805        for (const child2 of children2) {
4806            this._setInitialAttributesOnChild(child2);
4807        }
4808    }
4809    _setInitialAttributesOnChild(child2) {
4810        child2 = this._getInnerElement(child2);
4811        const isActive = this._elemIsActive(child2);
4812        const outerElem = this._getOuterElement(child2);
4813        child2.setAttribute("aria-selected", isActive);
4814        if (outerElem !== child2) {
4815            this._setAttributeIfNotExists(outerElem, "role", "presentation");
4816        }
4817        if (!isActive) {
4818            child2.setAttribute("tabindex", "-1");
4819        }
4820        this._setAttributeIfNotExists(child2, "role", "tab");
4821        this._setInitialAttributesOnTargetPanel(child2);
4822    }
4823    _setInitialAttributesOnTargetPanel(child2) {
4824        const target = getElementFromSelector(child2);
4825        if (!target) {
4826            return;
4827        }
4828        this._setAttributeIfNotExists(target, "role", "tabpanel");
4829        if (child2.id) {
4830            this._setAttributeIfNotExists(target, "aria-labelledby", `#${child2.id}`);
4831        }
4832    }
vendor: 6,789 bytes, lines 4833-5032
4833    _toggleDropDown(element, open) {
4834        const outerElem = this._getOuterElement(element);
4835        if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
4836            return;
4837        }
4838        const toggle = (selector, className) => {
4839            const element2 = SelectorEngine.findOne(selector, outerElem);
4840            if (element2) {
4841                element2.classList.toggle(className, open);
4842            }
4843        };
4844        toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
4845        toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
4846        outerElem.setAttribute("aria-expanded", open);
4847    }
4848    _setAttributeIfNotExists(element, attribute, value) {
4849        if (!element.hasAttribute(attribute)) {
4850            element.setAttribute(attribute, value);
4851        }
4852    }
4853    _elemIsActive(elem) {
4854        return elem.classList.contains(CLASS_NAME_ACTIVE);
4855    }
4856    // Try to get the inner element (usually the .nav-link)
4857    _getInnerElement(elem) {
4858        return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
4859    }
4860    // Try to get the outer element (usually the .nav-item)
4861    _getOuterElement(elem) {
4862        return elem.closest(SELECTOR_OUTER) || elem;
4863    }
4864    // Static
4865    static jQueryInterface(config) {
4866        return this.each(function() {
4867            const data = Tab.getOrCreateInstance(this);
4868            if (typeof config !== "string") {
4869                return;
4870            }
4871            if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
4872                throw new TypeError(`No method named "${config}"`);
4873            }
4874            data[config]();
4875        });
4876    }
4877}
4878EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
4879    if (["A", "AREA"].includes(this.tagName)) {
4880        event.preventDefault();
4881    }
4882    if (isDisabled(this)) {
4883        return;
4884    }
4885    Tab.getOrCreateInstance(this).show();
4886});
4887EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
4888    for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
4889        Tab.getOrCreateInstance(element);
4890    }
4891});
4892defineJQueryPlugin(Tab);
4893const NAME = "toast";
4894const DATA_KEY = "bs.toast";
4895const EVENT_KEY = `.${DATA_KEY}`;
4896const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
4897const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
4898const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
4899const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
4900const EVENT_HIDE = `hide${EVENT_KEY}`;
4901const EVENT_HIDDEN$7 = `hidden${EVENT_KEY}`;
4902const EVENT_SHOW = `show${EVENT_KEY}`;
4903const EVENT_SHOWN = `shown${EVENT_KEY}`;
4904const CLASS_NAME_FADE = "fade";
4905const CLASS_NAME_HIDE = "hide";
4906const CLASS_NAME_SHOW = "show";
4907const CLASS_NAME_SHOWING = "showing";
4908const DefaultType = {
4909    animation: "boolean",
4910    autohide: "boolean",
4911    delay: "number"
4912};
4913const Default = {
4914    animation: true,
4915    autohide: true,
4916    delay: 5e3
4917};
4918class Toast extends BaseComponent {
4919    constructor(element, config) {
4920        super(element, config);
4921        this._timeout = null;
4922        this._hasMouseInteraction = false;
4923        this._hasKeyboardInteraction = false;
4924        this._setListeners();
4925    }
4926    // Getters
4927    static get Default() {
4928        return Default;
4929    }
4930    static get DefaultType() {
4931        return DefaultType;
4932    }
4933    static get NAME() {
4934        return NAME;
4935    }
4936    // Public
4937    show() {
4938        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
4939        if (showEvent.defaultPrevented) {
4940            return;
4941        }
4942        this._clearTimeout();
4943        if (this._config.animation) {
4944            this._element.classList.add(CLASS_NAME_FADE);
4945        }
4946        const complete = () => {
4947            this._element.classList.remove(CLASS_NAME_SHOWING);
4948            EventHandler.trigger(this._element, EVENT_SHOWN);
4949            this._maybeScheduleHide();
4950        };
4951        this._element.classList.remove(CLASS_NAME_HIDE);
4952        reflow(this._element);
4953        this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
4954        this._queueCallback(complete, this._element, this._config.animation);
4955    }
4956    hide() {
4957        if (!this.isShown()) {
4958            return;
4959        }
4960        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
4961        if (hideEvent.defaultPrevented) {
4962            return;
4963        }
4964        const complete = () => {
4965            this._element.classList.add(CLASS_NAME_HIDE);
4966            this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
4967            EventHandler.trigger(this._element, EVENT_HIDDEN$7);
4968        };
4969        this._element.classList.add(CLASS_NAME_SHOWING);
4970        this._queueCallback(complete, this._element, this._config.animation);
4971    }
4972    dispose() {
4973        this._clearTimeout();
4974        if (this.isShown()) {
4975            this._element.classList.remove(CLASS_NAME_SHOW);
4976        }
4977        super.dispose();
4978    }
4979    isShown() {
4980        return this._element.classList.contains(CLASS_NAME_SHOW);
4981    }
4982    // Private
4983    _maybeScheduleHide() {
4984        if (!this._config.autohide) {
4985            return;
4986        }
4987        if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
4988            return;
4989        }
4990        this._timeout = setTimeout(() => {
4991            this.hide();
4992        }, this._config.delay);
4993    }
4994    _onInteraction(event, isInteracting) {
4995        switch (event.type) {
4996            case "mouseover":
4997            case "mouseout": {
4998                this._hasMouseInteraction = isInteracting;
4999                break;
5000            }
5001            case "focusin":
5002            case "focusout": {
5003                this._hasKeyboardInteraction = isInteracting;
5004                break;
5005            }
5006        }
5007        if (isInteracting) {
5008            this._clearTimeout();
5009            return;
5010        }
5011        const nextElement = event.relatedTarget;
5012        if (this._element === nextElement || this._element.contains(nextElement)) {
5013            return;
5014        }
5015        this._maybeScheduleHide();
5016    }
5017    _setListeners() {
5018        EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true));
5019        EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false));
5020        EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true));
5021        EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
5022    }
5023    _clearTimeout() {
5024        clearTimeout(this._timeout);
5025        this._timeout = null;
5026    }
5027    // Static
5028    static jQueryInterface(config) {
5029        return this.each(function() {
5030            const data = Toast.getOrCreateInstance(this, config);
5031            if (typeof config === "string") {
5032                if (typeof data[config] === "undefined") {
vendor: 23,855 bytes, lines 5033-5789
5033                    throw new TypeError(`No method named "${config}"`);
5034                }
5035                data[config](this);
5036            }
5037        });
5038    }
5039}
5040enableDismissTrigger(Toast);
5041defineJQueryPlugin(Toast);
5042function _defineProperties(target, props) {
5043    for (var i = 0; i < props.length; i++) {
5044        var descriptor = props[i];
5045        descriptor.enumerable = descriptor.enumerable || false;
5046        descriptor.configurable = true;
5047        if ("value" in descriptor)
5048            descriptor.writable = true;
5049        Object.defineProperty(target, descriptor.key, descriptor);
5050    }
5051}
5052function _createClass(Constructor, protoProps, staticProps) {
5053    if (protoProps)
5054        _defineProperties(Constructor.prototype, protoProps);
5055    if (staticProps)
5056        _defineProperties(Constructor, staticProps);
5057    Object.defineProperty(Constructor, "prototype", { writable: false });
5058    return Constructor;
5059}
5060/*!
5061 * Splide.js
5062 * Version  : 4.1.4
5063 * License  : MIT
5064 * Copyright: 2022 Naotoshi Fujita
5065 */
5066var MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)";
5067var CREATED = 1;
5068var MOUNTED = 2;
5069var IDLE = 3;
5070var MOVING = 4;
5071var SCROLLING = 5;
5072var DRAGGING = 6;
5073var DESTROYED = 7;
5074var STATES = {
5075    CREATED,
5076    MOUNTED,
5077    IDLE,
5078    MOVING,
5079    SCROLLING,
5080    DRAGGING,
5081    DESTROYED
5082};
5083function empty(array) {
5084    array.length = 0;
5085}
5086function slice(arrayLike, start2, end2) {
5087    return Array.prototype.slice.call(arrayLike, start2, end2);
5088}
5089function apply(func) {
5090    return func.bind.apply(func, [null].concat(slice(arguments, 1)));
5091}
5092var nextTick = setTimeout;
5093var noop = function noop2() {
5094};
5095function raf(func) {
5096    return requestAnimationFrame(func);
5097}
5098function typeOf(type, subject) {
5099    return typeof subject === type;
5100}
5101function isObject(subject) {
5102    return !isNull(subject) && typeOf("object", subject);
5103}
5104var isArray = Array.isArray;
5105var isFunction = apply(typeOf, "function");
5106var isString = apply(typeOf, "string");
5107var isUndefined = apply(typeOf, "undefined");
5108function isNull(subject) {
5109    return subject === null;
5110}
5111function isHTMLElement(subject) {
5112    try {
5113        return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;
5114    } catch (e) {
5115        return false;
5116    }
5117}
5118function toArray(value) {
5119    return isArray(value) ? value : [value];
5120}
5121function forEach(values, iteratee) {
5122    toArray(values).forEach(iteratee);
5123}
5124function includes(array, value) {
5125    return array.indexOf(value) > -1;
5126}
5127function push(array, items) {
5128    array.push.apply(array, toArray(items));
5129    return array;
5130}
5131function toggleClass(elm, classes, add) {
5132    if (elm) {
5133        forEach(classes, function(name) {
5134            if (name) {
5135                elm.classList[add ? "add" : "remove"](name);
5136            }
5137        });
5138    }
5139}
5140function addClass(elm, classes) {
5141    toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true);
5142}
5143function append(parent, children2) {
5144    forEach(children2, parent.appendChild.bind(parent));
5145}
5146function before(nodes, ref) {
5147    forEach(nodes, function(node) {
5148        var parent = (ref || node).parentNode;
5149        if (parent) {
5150            parent.insertBefore(node, ref);
5151        }
5152    });
5153}
5154function matches(elm, selector) {
5155    return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector);
5156}
5157function children(parent, selector) {
5158    var children2 = parent ? slice(parent.children) : [];
5159    return selector ? children2.filter(function(child2) {
5160        return matches(child2, selector);
5161    }) : children2;
5162}
5163function child(parent, selector) {
5164    return selector ? children(parent, selector)[0] : parent.firstElementChild;
5165}
5166var ownKeys = Object.keys;
5167function forOwn(object, iteratee, right2) {
5168    if (object) {
5169        (right2 ? ownKeys(object).reverse() : ownKeys(object)).forEach(function(key) {
5170            key !== "__proto__" && iteratee(object[key], key);
5171        });
5172    }
5173    return object;
5174}
5175function assign(object) {
5176    slice(arguments, 1).forEach(function(source) {
5177        forOwn(source, function(value, key) {
5178            object[key] = source[key];
5179        });
5180    });
5181    return object;
5182}
5183function merge(object) {
5184    slice(arguments, 1).forEach(function(source) {
5185        forOwn(source, function(value, key) {
5186            if (isArray(value)) {
5187                object[key] = value.slice();
5188            } else if (isObject(value)) {
5189                object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
5190            } else {
5191                object[key] = value;
5192            }
5193        });
5194    });
5195    return object;
5196}
5197function omit(object, keys) {
5198    forEach(keys || ownKeys(object), function(key) {
5199        delete object[key];
5200    });
5201}
5202function removeAttribute(elms, attrs) {
5203    forEach(elms, function(elm) {
5204        forEach(attrs, function(attr) {
5205            elm && elm.removeAttribute(attr);
5206        });
5207    });
5208}
5209function setAttribute(elms, attrs, value) {
5210    if (isObject(attrs)) {
5211        forOwn(attrs, function(value2, name) {
5212            setAttribute(elms, name, value2);
5213        });
5214    } else {
5215        forEach(elms, function(elm) {
5216            isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));
5217        });
5218    }
5219}
5220function create(tag, attrs, parent) {
5221    var elm = document.createElement(tag);
5222    if (attrs) {
5223        isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);
5224    }
5225    parent && append(parent, elm);
5226    return elm;
5227}
5228function style(elm, prop, value) {
5229    if (isUndefined(value)) {
5230        return getComputedStyle(elm)[prop];
5231    }
5232    if (!isNull(value)) {
5233        elm.style[prop] = "" + value;
5234    }
5235}
5236function display(elm, display2) {
5237    style(elm, "display", display2);
5238}
5239function focus(elm) {
5240    elm["setActive"] && elm["setActive"]() || elm.focus({
5241        preventScroll: true
5242    });
5243}
5244function getAttribute(elm, attr) {
5245    return elm.getAttribute(attr);
5246}
5247function hasClass(elm, className) {
5248    return elm && elm.classList.contains(className);
5249}
5250function rect(target) {
5251    return target.getBoundingClientRect();
5252}
5253function remove(nodes) {
5254    forEach(nodes, function(node) {
5255        if (node && node.parentNode) {
5256            node.parentNode.removeChild(node);
5257        }
5258    });
5259}
5260function parseHtml(html) {
5261    return child(new DOMParser().parseFromString(html, "text/html").body);
5262}
5263function prevent(e, stopPropagation) {
5264    e.preventDefault();
5265    if (stopPropagation) {
5266        e.stopPropagation();
5267        e.stopImmediatePropagation();
5268    }
5269}
5270function query(parent, selector) {
5271    return parent && parent.querySelector(selector);
5272}
5273function queryAll(parent, selector) {
5274    return selector ? slice(parent.querySelectorAll(selector)) : [];
5275}
5276function removeClass(elm, classes) {
5277    toggleClass(elm, classes, false);
5278}
5279function timeOf(e) {
5280    return e.timeStamp;
5281}
5282function unit(value) {
5283    return isString(value) ? value : value ? value + "px" : "";
5284}
5285var PROJECT_CODE = "splide";
5286var DATA_ATTRIBUTE = "data-" + PROJECT_CODE;
5287function assert(condition, message) {
5288    if (!condition) {
5289        throw new Error("[" + PROJECT_CODE + "] " + (message || ""));
5290    }
5291}
5292var min = Math.min, max = Math.max, floor = Math.floor, ceil = Math.ceil, abs = Math.abs;
5293function approximatelyEqual(x, y, epsilon) {
5294    return abs(x - y) < epsilon;
5295}
5296function between(number, x, y, exclusive) {
5297    var minimum = min(x, y);
5298    var maximum = max(x, y);
5299    return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;
5300}
5301function clamp(number, x, y) {
5302    var minimum = min(x, y);
5303    var maximum = max(x, y);
5304    return min(max(minimum, number), maximum);
5305}
5306function sign(x) {
5307    return +(x > 0) - +(x < 0);
5308}
5309function format(string, replacements) {
5310    forEach(replacements, function(replacement) {
5311        string = string.replace("%s", "" + replacement);
5312    });
5313    return string;
5314}
5315function pad(number) {
5316    return number < 10 ? "0" + number : "" + number;
5317}
5318var ids = {};
5319function uniqueId(prefix) {
5320    return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);
5321}
5322function EventBinder() {
5323    var listeners = [];
5324    function bind(targets, events, callback, options) {
5325        forEachEvent(targets, events, function(target, event, namespace) {
5326            var isEventTarget = "addEventListener" in target;
5327            var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback);
5328            isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback);
5329            listeners.push([target, event, namespace, callback, remover]);
5330        });
5331    }
5332    function unbind(targets, events, callback) {
5333        forEachEvent(targets, events, function(target, event, namespace) {
5334            listeners = listeners.filter(function(listener) {
5335                if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {
5336                    listener[4]();
5337                    return false;
5338                }
5339                return true;
5340            });
5341        });
5342    }
5343    function dispatch(target, type, detail) {
5344        var e;
5345        var bubbles = true;
5346        if (typeof CustomEvent === "function") {
5347            e = new CustomEvent(type, {
5348                bubbles,
5349                detail
5350            });
5351        } else {
5352            e = document.createEvent("CustomEvent");
5353            e.initCustomEvent(type, bubbles, false, detail);
5354        }
5355        target.dispatchEvent(e);
5356        return e;
5357    }
5358    function forEachEvent(targets, events, iteratee) {
5359        forEach(targets, function(target) {
5360            target && forEach(events, function(events2) {
5361                events2.split(" ").forEach(function(eventNS) {
5362                    var fragment = eventNS.split(".");
5363                    iteratee(target, fragment[0], fragment[1]);
5364                });
5365            });
5366        });
5367    }
5368    function destroy() {
5369        listeners.forEach(function(data) {
5370            data[4]();
5371        });
5372        empty(listeners);
5373    }
5374    return {
5375        bind,
5376        unbind,
5377        dispatch,
5378        destroy
5379    };
5380}
5381var EVENT_MOUNTED = "mounted";
5382var EVENT_READY = "ready";
5383var EVENT_MOVE = "move";
5384var EVENT_MOVED = "moved";
5385var EVENT_CLICK = "click";
5386var EVENT_ACTIVE = "active";
5387var EVENT_INACTIVE = "inactive";
5388var EVENT_VISIBLE = "visible";
5389var EVENT_HIDDEN = "hidden";
5390var EVENT_REFRESH = "refresh";
5391var EVENT_UPDATED = "updated";
5392var EVENT_RESIZE = "resize";
5393var EVENT_RESIZED = "resized";
5394var EVENT_DRAG = "drag";
5395var EVENT_DRAGGING = "dragging";
5396var EVENT_DRAGGED = "dragged";
5397var EVENT_SCROLL = "scroll";
5398var EVENT_SCROLLED = "scrolled";
5399var EVENT_OVERFLOW = "overflow";
5400var EVENT_DESTROY = "destroy";
5401var EVENT_ARROWS_MOUNTED = "arrows:mounted";
5402var EVENT_ARROWS_UPDATED = "arrows:updated";
5403var EVENT_PAGINATION_MOUNTED = "pagination:mounted";
5404var EVENT_PAGINATION_UPDATED = "pagination:updated";
5405var EVENT_NAVIGATION_MOUNTED = "navigation:mounted";
5406var EVENT_AUTOPLAY_PLAY = "autoplay:play";
5407var EVENT_AUTOPLAY_PLAYING = "autoplay:playing";
5408var EVENT_AUTOPLAY_PAUSE = "autoplay:pause";
5409var EVENT_LAZYLOAD_LOADED = "lazyload:loaded";
5410var EVENT_SLIDE_KEYDOWN = "sk";
5411var EVENT_SHIFTED = "sh";
5412var EVENT_END_INDEX_CHANGED = "ei";
5413function EventInterface(Splide2) {
5414    var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
5415    var binder = EventBinder();
5416    function on(events, callback) {
5417        binder.bind(bus, toArray(events).join(" "), function(e) {
5418            callback.apply(callback, isArray(e.detail) ? e.detail : []);
5419        });
5420    }
5421    function emit(event) {
5422        binder.dispatch(bus, event, slice(arguments, 1));
5423    }
5424    if (Splide2) {
5425        Splide2.event.on(EVENT_DESTROY, binder.destroy);
5426    }
5427    return assign(binder, {
5428        bus,
5429        on,
5430        off: apply(binder.unbind, bus),
5431        emit
5432    });
5433}
5434function RequestInterval(interval, onInterval, onUpdate, limit) {
5435    var now = Date.now;
5436    var startTime;
5437    var rate = 0;
5438    var id;
5439    var paused = true;
5440    var count = 0;
5441    function update() {
5442        if (!paused) {
5443            rate = interval ? min((now() - startTime) / interval, 1) : 1;
5444            onUpdate && onUpdate(rate);
5445            if (rate >= 1) {
5446                onInterval();
5447                startTime = now();
5448                if (limit && ++count >= limit) {
5449                    return pause();
5450                }
5451            }
5452            id = raf(update);
5453        }
5454    }
5455    function start2(resume) {
5456        resume || cancel();
5457        startTime = now() - (resume ? rate * interval : 0);
5458        paused = false;
5459        id = raf(update);
5460    }
5461    function pause() {
5462        paused = true;
5463    }
5464    function rewind() {
5465        startTime = now();
5466        rate = 0;
5467        if (onUpdate) {
5468            onUpdate(rate);
5469        }
5470    }
5471    function cancel() {
5472        id && cancelAnimationFrame(id);
5473        rate = 0;
5474        id = 0;
5475        paused = true;
5476    }
5477    function set(time) {
5478        interval = time;
5479    }
5480    function isPaused() {
5481        return paused;
5482    }
5483    return {
5484        start: start2,
5485        rewind,
5486        pause,
5487        cancel,
5488        set,
5489        isPaused
5490    };
5491}
5492function State(initialState) {
5493    var state = initialState;
5494    function set(value) {
5495        state = value;
5496    }
5497    function is(states) {
5498        return includes(toArray(states), state);
5499    }
5500    return {
5501        set,
5502        is
5503    };
5504}
5505function Throttle(func, duration) {
5506    var interval = RequestInterval(duration || 0, func, null, 1);
5507    return function() {
5508        interval.isPaused() && interval.start();
5509    };
5510}
5511function Media(Splide2, Components2, options) {
5512    var state = Splide2.state;
5513    var breakpoints = options.breakpoints || {};
5514    var reducedMotion = options.reducedMotion || {};
5515    var binder = EventBinder();
5516    var queries = [];
5517    function setup() {
5518        var isMin = options.mediaQuery === "min";
5519        ownKeys(breakpoints).sort(function(n, m) {
5520            return isMin ? +n - +m : +m - +n;
5521        }).forEach(function(key) {
5522            register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)");
5523        });
5524        register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);
5525        update();
5526    }
5527    function destroy(completely) {
5528        if (completely) {
5529            binder.destroy();
5530        }
5531    }
5532    function register(options2, query2) {
5533        var queryList = matchMedia(query2);
5534        binder.bind(queryList, "change", update);
5535        queries.push([options2, queryList]);
5536    }
5537    function update() {
5538        var destroyed = state.is(DESTROYED);
5539        var direction = options.direction;
5540        var merged = queries.reduce(function(merged2, entry) {
5541            return merge(merged2, entry[1].matches ? entry[0] : {});
5542        }, {});
5543        omit(options);
5544        set(merged);
5545        if (options.destroy) {
5546            Splide2.destroy(options.destroy === "completely");
5547        } else if (destroyed) {
5548            destroy(true);
5549            Splide2.mount();
5550        } else {
5551            direction !== options.direction && Splide2.refresh();
5552        }
5553    }
5554    function reduce(enable) {
5555        if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {
5556            enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));
5557        }
5558    }
5559    function set(opts, base, notify) {
5560        merge(options, opts);
5561        base && merge(Object.getPrototypeOf(options), opts);
5562        if (notify || !state.is(CREATED)) {
5563            Splide2.emit(EVENT_UPDATED, options);
5564        }
5565    }
5566    return {
5567        setup,
5568        destroy,
5569        reduce,
5570        set
5571    };
5572}
5573var ARROW = "Arrow";
5574var ARROW_LEFT = ARROW + "Left";
5575var ARROW_RIGHT = ARROW + "Right";
5576var ARROW_UP = ARROW + "Up";
5577var ARROW_DOWN = ARROW + "Down";
5578var RTL = "rtl";
5579var TTB = "ttb";
5580var ORIENTATION_MAP = {
5581    width: ["height"],
5582    left: ["top", "right"],
5583    right: ["bottom", "left"],
5584    x: ["y"],
5585    X: ["Y"],
5586    Y: ["X"],
5587    ArrowLeft: [ARROW_UP, ARROW_RIGHT],
5588    ArrowRight: [ARROW_DOWN, ARROW_LEFT]
5589};
5590function Direction(Splide2, Components2, options) {
5591    function resolve(prop, axisOnly, direction) {
5592        direction = direction || options.direction;
5593        var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;
5594        return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function(match, offset2) {
5595            var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;
5596            return offset2 > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;
5597        });
5598    }
5599    function orient(value) {
5600        return value * (options.direction === RTL ? 1 : -1);
5601    }
5602    return {
5603        resolve,
5604        orient
5605    };
5606}
5607var ROLE = "role";
5608var TAB_INDEX = "tabindex";
5609var DISABLED = "disabled";
5610var ARIA_PREFIX = "aria-";
5611var ARIA_CONTROLS = ARIA_PREFIX + "controls";
5612var ARIA_CURRENT = ARIA_PREFIX + "current";
5613var ARIA_SELECTED = ARIA_PREFIX + "selected";
5614var ARIA_LABEL = ARIA_PREFIX + "label";
5615var ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby";
5616var ARIA_HIDDEN = ARIA_PREFIX + "hidden";
5617var ARIA_ORIENTATION = ARIA_PREFIX + "orientation";
5618var ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription";
5619var ARIA_LIVE = ARIA_PREFIX + "live";
5620var ARIA_BUSY = ARIA_PREFIX + "busy";
5621var ARIA_ATOMIC = ARIA_PREFIX + "atomic";
5622var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];
5623var CLASS_PREFIX = PROJECT_CODE + "__";
5624var STATUS_CLASS_PREFIX = "is-";
5625var CLASS_ROOT = PROJECT_CODE;
5626var CLASS_TRACK = CLASS_PREFIX + "track";
5627var CLASS_LIST = CLASS_PREFIX + "list";
5628var CLASS_SLIDE = CLASS_PREFIX + "slide";
5629var CLASS_CLONE = CLASS_SLIDE + "--clone";
5630var CLASS_CONTAINER = CLASS_SLIDE + "__container";
5631var CLASS_ARROWS = CLASS_PREFIX + "arrows";
5632var CLASS_ARROW = CLASS_PREFIX + "arrow";
5633var CLASS_ARROW_PREV = CLASS_ARROW + "--prev";
5634var CLASS_ARROW_NEXT = CLASS_ARROW + "--next";
5635var CLASS_PAGINATION = CLASS_PREFIX + "pagination";
5636var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page";
5637var CLASS_PROGRESS = CLASS_PREFIX + "progress";
5638var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar";
5639var CLASS_TOGGLE = CLASS_PREFIX + "toggle";
5640var CLASS_SPINNER = CLASS_PREFIX + "spinner";
5641var CLASS_SR = CLASS_PREFIX + "sr";
5642var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized";
5643var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active";
5644var CLASS_PREV = STATUS_CLASS_PREFIX + "prev";
5645var CLASS_NEXT = STATUS_CLASS_PREFIX + "next";
5646var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible";
5647var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading";
5648var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in";
5649var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow";
5650var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];
5651var CLASSES = {
5652    slide: CLASS_SLIDE,
5653    clone: CLASS_CLONE,
5654    arrows: CLASS_ARROWS,
5655    arrow: CLASS_ARROW,
5656    prev: CLASS_ARROW_PREV,
5657    next: CLASS_ARROW_NEXT,
5658    pagination: CLASS_PAGINATION,
5659    page: CLASS_PAGINATION_PAGE,
5660    spinner: CLASS_SPINNER
5661};
5662function closest(from, selector) {
5663    if (isFunction(from.closest)) {
5664        return from.closest(selector);
5665    }
5666    var elm = from;
5667    while (elm && elm.nodeType === 1) {
5668        if (matches(elm, selector)) {
5669            break;
5670        }
5671        elm = elm.parentElement;
5672    }
5673    return elm;
5674}
5675var FRICTION = 5;
5676var LOG_INTERVAL = 200;
5677var POINTER_DOWN_EVENTS = "touchstart mousedown";
5678var POINTER_MOVE_EVENTS = "touchmove mousemove";
5679var POINTER_UP_EVENTS = "touchend touchcancel mouseup click";
5680function Elements(Splide2, Components2, options) {
5681    var _EventInterface = EventInterface(Splide2), on = _EventInterface.on, bind = _EventInterface.bind;
5682    var root = Splide2.root;
5683    var i18n = options.i18n;
5684    var elements = {};
5685    var slides = [];
5686    var rootClasses = [];
5687    var trackClasses = [];
5688    var track;
5689    var list;
5690    var isUsingKey;
5691    function setup() {
5692        collect();
5693        init();
5694        update();
5695    }
5696    function mount() {
5697        on(EVENT_REFRESH, destroy);
5698        on(EVENT_REFRESH, setup);
5699        on(EVENT_UPDATED, update);
5700        bind(document, POINTER_DOWN_EVENTS + " keydown", function(e) {
5701            isUsingKey = e.type === "keydown";
5702        }, {
5703            capture: true
5704        });
5705        bind(root, "focusin", function() {
5706            toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);
5707        });
5708    }
5709    function destroy(completely) {
5710        var attrs = ALL_ATTRIBUTES.concat("style");
5711        empty(slides);
5712        removeClass(root, rootClasses);
5713        removeClass(track, trackClasses);
5714        removeAttribute([track, list], attrs);
5715        removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]);
5716    }
5717    function update() {
5718        removeClass(root, rootClasses);
5719        removeClass(track, trackClasses);
5720        rootClasses = getClasses(CLASS_ROOT);
5721        trackClasses = getClasses(CLASS_TRACK);
5722        addClass(root, rootClasses);
5723        addClass(track, trackClasses);
5724        setAttribute(root, ARIA_LABEL, options.label);
5725        setAttribute(root, ARIA_LABELLEDBY, options.labelledby);
5726    }
5727    function collect() {
5728        track = find("." + CLASS_TRACK);
5729        list = child(track, "." + CLASS_LIST);
5730        assert(track && list, "A track/list element is missing.");
5731        push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")"));
5732        forOwn({
5733            arrows: CLASS_ARROWS,
5734            pagination: CLASS_PAGINATION,
5735            prev: CLASS_ARROW_PREV,
5736            next: CLASS_ARROW_NEXT,
5737            bar: CLASS_PROGRESS_BAR,
5738            toggle: CLASS_TOGGLE
5739        }, function(className, key) {
5740            elements[key] = find("." + className);
5741        });
5742        assign(elements, {
5743            root,
5744            track,
5745            list,
5746            slides
5747        });
5748    }
5749    function init() {
5750        var id = root.id || uniqueId(PROJECT_CODE);
5751        var role = options.role;
5752        root.id = id;
5753        track.id = track.id || id + "-track";
5754        list.id = list.id || id + "-list";
5755        if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) {
5756            setAttribute(root, ROLE, role);
5757        }
5758        setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);
5759        setAttribute(list, ROLE, "presentation");
5760    }
5761    function find(selector) {
5762        var elm = query(root, selector);
5763        return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0;
5764    }
5765    function getClasses(base) {
5766        return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE];
5767    }
5768    return assign(elements, {
5769        setup,
5770        mount,
5771        destroy
5772    });
5773}
5774var SLIDE = "slide";
5775var LOOP = "loop";
5776var FADE = "fade";
5777function Slide$1(Splide2, index, slideIndex, slide) {
5778    var event = EventInterface(Splide2);
5779    var on = event.on, emit = event.emit, bind = event.bind;
5780    var Components = Splide2.Components, root = Splide2.root, options = Splide2.options;
5781    var isNavigation = options.isNavigation, updateOnMove = options.updateOnMove, i18n = options.i18n, pagination = options.pagination, slideFocus = options.slideFocus;
5782    var resolve = Components.Direction.resolve;
5783    var styles = getAttribute(slide, "style");
5784    var label = getAttribute(slide, ARIA_LABEL);
5785    var isClone = slideIndex > -1;
5786    var container = child(slide, "." + CLASS_CONTAINER);
5787    var destroyed;
5788    function mount() {
5789        if (!isClone) {
vendor: 1,212 bytes, lines 5790-5818
5790            slide.id = root.id + "-slide" + pad(index + 1);
5791            setAttribute(slide, ROLE, pagination ? "tabpanel" : "group");
5792            setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);
5793            setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));
5794        }
5795        listen();
5796    }
5797    function listen() {
5798        bind(slide, "click", apply(emit, EVENT_CLICK, self));
5799        bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self));
5800        on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);
5801        on(EVENT_NAVIGATION_MOUNTED, initNavigation);
5802        if (updateOnMove) {
5803            on(EVENT_MOVE, onMove);
5804        }
5805    }
5806    function destroy() {
5807        destroyed = true;
5808        event.destroy();
5809        removeClass(slide, STATUS_CLASSES);
5810        removeAttribute(slide, ALL_ATTRIBUTES);
5811        setAttribute(slide, "style", styles);
5812        setAttribute(slide, ARIA_LABEL, label || "");
5813    }
5814    function initNavigation() {
5815        var controls = Splide2.splides.map(function(target) {
5816            var Slide2 = target.splide.Components.Slides.getAt(index);
5817            return Slide2 ? Slide2.slide.id : "";
5818        }).join(" ");
vendor: 34,964 bytes, lines 5819-6790
5819        setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));
5820        setAttribute(slide, ARIA_CONTROLS, controls);
5821        setAttribute(slide, ROLE, slideFocus ? "button" : "");
5822        slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);
5823    }
5824    function onMove() {
5825        if (!destroyed) {
5826            update();
5827        }
5828    }
5829    function update() {
5830        if (!destroyed) {
5831            var curr = Splide2.index;
5832            updateActivity();
5833            updateVisibility();
5834            toggleClass(slide, CLASS_PREV, index === curr - 1);
5835            toggleClass(slide, CLASS_NEXT, index === curr + 1);
5836        }
5837    }
5838    function updateActivity() {
5839        var active = isActive();
5840        if (active !== hasClass(slide, CLASS_ACTIVE)) {
5841            toggleClass(slide, CLASS_ACTIVE, active);
5842            setAttribute(slide, ARIA_CURRENT, isNavigation && active || "");
5843            emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);
5844        }
5845    }
5846    function updateVisibility() {
5847        var visible = isVisible2();
5848        var hidden = !visible && (!isActive() || isClone);
5849        if (!Splide2.state.is([MOVING, SCROLLING])) {
5850            setAttribute(slide, ARIA_HIDDEN, hidden || "");
5851        }
5852        setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : "");
5853        if (slideFocus) {
5854            setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);
5855        }
5856        if (visible !== hasClass(slide, CLASS_VISIBLE)) {
5857            toggleClass(slide, CLASS_VISIBLE, visible);
5858            emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);
5859        }
5860        if (!visible && document.activeElement === slide) {
5861            var Slide2 = Components.Slides.getAt(Splide2.index);
5862            Slide2 && focus(Slide2.slide);
5863        }
5864    }
5865    function style$12(prop, value, useContainer) {
5866        style(useContainer && container || slide, prop, value);
5867    }
5868    function isActive() {
5869        var curr = Splide2.index;
5870        return curr === index || options.cloneStatus && curr === slideIndex;
5871    }
5872    function isVisible2() {
5873        if (Splide2.is(FADE)) {
5874            return isActive();
5875        }
5876        var trackRect = rect(Components.Elements.track);
5877        var slideRect = rect(slide);
5878        var left2 = resolve("left", true);
5879        var right2 = resolve("right", true);
5880        return floor(trackRect[left2]) <= ceil(slideRect[left2]) && floor(slideRect[right2]) <= ceil(trackRect[right2]);
5881    }
5882    function isWithin(from, distance) {
5883        var diff = abs(from - index);
5884        if (!isClone && (options.rewind || Splide2.is(LOOP))) {
5885            diff = min(diff, Splide2.length - diff);
5886        }
5887        return diff <= distance;
5888    }
5889    var self = {
5890        index,
5891        slideIndex,
5892        slide,
5893        container,
5894        isClone,
5895        mount,
5896        destroy,
5897        update,
5898        style: style$12,
5899        isWithin
5900    };
5901    return self;
5902}
5903function Slides(Splide2, Components2, options) {
5904    var _EventInterface2 = EventInterface(Splide2), on = _EventInterface2.on, emit = _EventInterface2.emit, bind = _EventInterface2.bind;
5905    var _Components2$Elements = Components2.Elements, slides = _Components2$Elements.slides, list = _Components2$Elements.list;
5906    var Slides2 = [];
5907    function mount() {
5908        init();
5909        on(EVENT_REFRESH, destroy);
5910        on(EVENT_REFRESH, init);
5911    }
5912    function init() {
5913        slides.forEach(function(slide, index) {
5914            register(slide, index, -1);
5915        });
5916    }
5917    function destroy() {
5918        forEach$1(function(Slide2) {
5919            Slide2.destroy();
5920        });
5921        empty(Slides2);
5922    }
5923    function update() {
5924        forEach$1(function(Slide2) {
5925            Slide2.update();
5926        });
5927    }
5928    function register(slide, index, slideIndex) {
5929        var object = Slide$1(Splide2, index, slideIndex, slide);
5930        object.mount();
5931        Slides2.push(object);
5932        Slides2.sort(function(Slide1, Slide2) {
5933            return Slide1.index - Slide2.index;
5934        });
5935    }
5936    function get(excludeClones) {
5937        return excludeClones ? filter(function(Slide2) {
5938            return !Slide2.isClone;
5939        }) : Slides2;
5940    }
5941    function getIn(page) {
5942        var Controller2 = Components2.Controller;
5943        var index = Controller2.toIndex(page);
5944        var max2 = Controller2.hasFocus() ? 1 : options.perPage;
5945        return filter(function(Slide2) {
5946            return between(Slide2.index, index, index + max2 - 1);
5947        });
5948    }
5949    function getAt(index) {
5950        return filter(index)[0];
5951    }
5952    function add(items, index) {
5953        forEach(items, function(slide) {
5954            if (isString(slide)) {
5955                slide = parseHtml(slide);
5956            }
5957            if (isHTMLElement(slide)) {
5958                var ref = slides[index];
5959                ref ? before(slide, ref) : append(list, slide);
5960                addClass(slide, options.classes.slide);
5961                observeImages(slide, apply(emit, EVENT_RESIZE));
5962            }
5963        });
5964        emit(EVENT_REFRESH);
5965    }
5966    function remove$1(matcher) {
5967        remove(filter(matcher).map(function(Slide2) {
5968            return Slide2.slide;
5969        }));
5970        emit(EVENT_REFRESH);
5971    }
5972    function forEach$1(iteratee, excludeClones) {
5973        get(excludeClones).forEach(iteratee);
5974    }
5975    function filter(matcher) {
5976        return Slides2.filter(isFunction(matcher) ? matcher : function(Slide2) {
5977            return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);
5978        });
5979    }
5980    function style2(prop, value, useContainer) {
5981        forEach$1(function(Slide2) {
5982            Slide2.style(prop, value, useContainer);
5983        });
5984    }
5985    function observeImages(elm, callback) {
5986        var images = queryAll(elm, "img");
5987        var length = images.length;
5988        if (length) {
5989            images.forEach(function(img) {
5990                bind(img, "load error", function() {
5991                    if (!--length) {
5992                        callback();
5993                    }
5994                });
5995            });
5996        } else {
5997            callback();
5998        }
5999    }
6000    function getLength(excludeClones) {
6001        return excludeClones ? slides.length : Slides2.length;
6002    }
6003    function isEnough() {
6004        return Slides2.length > options.perPage;
6005    }
6006    return {
6007        mount,
6008        destroy,
6009        update,
6010        register,
6011        get,
6012        getIn,
6013        getAt,
6014        add,
6015        remove: remove$1,
6016        forEach: forEach$1,
6017        filter,
6018        style: style2,
6019        getLength,
6020        isEnough
6021    };
6022}
6023function Layout(Splide2, Components2, options) {
6024    var _EventInterface3 = EventInterface(Splide2), on = _EventInterface3.on, bind = _EventInterface3.bind, emit = _EventInterface3.emit;
6025    var Slides2 = Components2.Slides;
6026    var resolve = Components2.Direction.resolve;
6027    var _Components2$Elements2 = Components2.Elements, root = _Components2$Elements2.root, track = _Components2$Elements2.track, list = _Components2$Elements2.list;
6028    var getAt = Slides2.getAt, styleSlides = Slides2.style;
6029    var vertical;
6030    var rootRect;
6031    var overflow;
6032    function mount() {
6033        init();
6034        bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE)));
6035        on([EVENT_UPDATED, EVENT_REFRESH], init);
6036        on(EVENT_RESIZE, resize);
6037    }
6038    function init() {
6039        vertical = options.direction === TTB;
6040        style(root, "maxWidth", unit(options.width));
6041        style(track, resolve("paddingLeft"), cssPadding(false));
6042        style(track, resolve("paddingRight"), cssPadding(true));
6043        resize(true);
6044    }
6045    function resize(force) {
6046        var newRect = rect(root);
6047        if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {
6048            style(track, "height", cssTrackHeight());
6049            styleSlides(resolve("marginRight"), unit(options.gap));
6050            styleSlides("width", cssSlideWidth());
6051            styleSlides("height", cssSlideHeight(), true);
6052            rootRect = newRect;
6053            emit(EVENT_RESIZED);
6054            if (overflow !== (overflow = isOverflow())) {
6055                toggleClass(root, CLASS_OVERFLOW, overflow);
6056                emit(EVENT_OVERFLOW, overflow);
6057            }
6058        }
6059    }
6060    function cssPadding(right2) {
6061        var padding = options.padding;
6062        var prop = resolve(right2 ? "right" : "left");
6063        return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px";
6064    }
6065    function cssTrackHeight() {
6066        var height = "";
6067        if (vertical) {
6068            height = cssHeight();
6069            assert(height, "height or heightRatio is missing.");
6070            height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")";
6071        }
6072        return height;
6073    }
6074    function cssHeight() {
6075        return unit(options.height || rect(list).width * options.heightRatio);
6076    }
6077    function cssSlideWidth() {
6078        return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize());
6079    }
6080    function cssSlideHeight() {
6081        return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());
6082    }
6083    function cssSlideSize() {
6084        var gap = unit(options.gap);
6085        return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")";
6086    }
6087    function listSize() {
6088        return rect(list)[resolve("width")];
6089    }
6090    function slideSize(index, withoutGap) {
6091        var Slide2 = getAt(index || 0);
6092        return Slide2 ? rect(Slide2.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0;
6093    }
6094    function totalSize(index, withoutGap) {
6095        var Slide2 = getAt(index);
6096        if (Slide2) {
6097            var right2 = rect(Slide2.slide)[resolve("right")];
6098            var left2 = rect(list)[resolve("left")];
6099            return abs(right2 - left2) + (withoutGap ? 0 : getGap());
6100        }
6101        return 0;
6102    }
6103    function sliderSize(withoutGap) {
6104        return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);
6105    }
6106    function getGap() {
6107        var Slide2 = getAt(0);
6108        return Slide2 && parseFloat(style(Slide2.slide, resolve("marginRight"))) || 0;
6109    }
6110    function getPadding(right2) {
6111        return parseFloat(style(track, resolve("padding" + (right2 ? "Right" : "Left")))) || 0;
6112    }
6113    function isOverflow() {
6114        return Splide2.is(FADE) || sliderSize(true) > listSize();
6115    }
6116    return {
6117        mount,
6118        resize,
6119        listSize,
6120        slideSize,
6121        sliderSize,
6122        totalSize,
6123        getPadding,
6124        isOverflow
6125    };
6126}
6127var MULTIPLIER = 2;
6128function Clones(Splide2, Components2, options) {
6129    var event = EventInterface(Splide2);
6130    var on = event.on;
6131    var Elements2 = Components2.Elements, Slides2 = Components2.Slides;
6132    var resolve = Components2.Direction.resolve;
6133    var clones = [];
6134    var cloneCount;
6135    function mount() {
6136        on(EVENT_REFRESH, remount);
6137        on([EVENT_UPDATED, EVENT_RESIZE], observe);
6138        if (cloneCount = computeCloneCount()) {
6139            generate(cloneCount);
6140            Components2.Layout.resize(true);
6141        }
6142    }
6143    function remount() {
6144        destroy();
6145        mount();
6146    }
6147    function destroy() {
6148        remove(clones);
6149        empty(clones);
6150        event.destroy();
6151    }
6152    function observe() {
6153        var count = computeCloneCount();
6154        if (cloneCount !== count) {
6155            if (cloneCount < count || !count) {
6156                event.emit(EVENT_REFRESH);
6157            }
6158        }
6159    }
6160    function generate(count) {
6161        var slides = Slides2.get().slice();
6162        var length = slides.length;
6163        if (length) {
6164            while (slides.length < count) {
6165                push(slides, slides);
6166            }
6167            push(slides.slice(-count), slides.slice(0, count)).forEach(function(Slide2, index) {
6168                var isHead = index < count;
6169                var clone = cloneDeep(Slide2.slide, index);
6170                isHead ? before(clone, slides[0].slide) : append(Elements2.list, clone);
6171                push(clones, clone);
6172                Slides2.register(clone, index - count + (isHead ? 0 : length), Slide2.index);
6173            });
6174        }
6175    }
6176    function cloneDeep(elm, index) {
6177        var clone = elm.cloneNode(true);
6178        addClass(clone, options.classes.clone);
6179        clone.id = Splide2.root.id + "-clone" + pad(index + 1);
6180        return clone;
6181    }
6182    function computeCloneCount() {
6183        var clones2 = options.clones;
6184        if (!Splide2.is(LOOP)) {
6185            clones2 = 0;
6186        } else if (isUndefined(clones2)) {
6187            var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0);
6188            var fixedCount = fixedSize && ceil(rect(Elements2.track)[resolve("width")] / fixedSize);
6189            clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER;
6190        }
6191        return clones2;
6192    }
6193    return {
6194        mount,
6195        destroy
6196    };
6197}
6198function Move(Splide2, Components2, options) {
6199    var _EventInterface4 = EventInterface(Splide2), on = _EventInterface4.on, emit = _EventInterface4.emit;
6200    var set = Splide2.state.set;
6201    var _Components2$Layout = Components2.Layout, slideSize = _Components2$Layout.slideSize, getPadding = _Components2$Layout.getPadding, totalSize = _Components2$Layout.totalSize, listSize = _Components2$Layout.listSize, sliderSize = _Components2$Layout.sliderSize;
6202    var _Components2$Directio = Components2.Direction, resolve = _Components2$Directio.resolve, orient = _Components2$Directio.orient;
6203    var _Components2$Elements3 = Components2.Elements, list = _Components2$Elements3.list, track = _Components2$Elements3.track;
6204    var Transition;
6205    function mount() {
6206        Transition = Components2.Transition;
6207        on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);
6208    }
6209    function reposition() {
6210        if (!Components2.Controller.isBusy()) {
6211            Components2.Scroll.cancel();
6212            jump(Splide2.index);
6213            Components2.Slides.update();
6214        }
6215    }
6216    function move(dest, index, prev, callback) {
6217        if (dest !== index && canShift(dest > prev)) {
6218            cancel();
6219            translate(shift(getPosition(), dest > prev), true);
6220        }
6221        set(MOVING);
6222        emit(EVENT_MOVE, index, prev, dest);
6223        Transition.start(index, function() {
6224            set(IDLE);
6225            emit(EVENT_MOVED, index, prev, dest);
6226            callback && callback();
6227        });
6228    }
6229    function jump(index) {
6230        translate(toPosition(index, true));
6231    }
6232    function translate(position, preventLoop) {
6233        if (!Splide2.is(FADE)) {
6234            var destination = preventLoop ? position : loop(position);
6235            style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)");
6236            position !== destination && emit(EVENT_SHIFTED);
6237        }
6238    }
6239    function loop(position) {
6240        if (Splide2.is(LOOP)) {
6241            var index = toIndex(position);
6242            var exceededMax = index > Components2.Controller.getEnd();
6243            var exceededMin = index < 0;
6244            if (exceededMin || exceededMax) {
6245                position = shift(position, exceededMax);
6246            }
6247        }
6248        return position;
6249    }
6250    function shift(position, backwards) {
6251        var excess = position - getLimit(backwards);
6252        var size = sliderSize();
6253        position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);
6254        return position;
6255    }
6256    function cancel() {
6257        translate(getPosition(), true);
6258        Transition.cancel();
6259    }
6260    function toIndex(position) {
6261        var Slides2 = Components2.Slides.get();
6262        var index = 0;
6263        var minDistance = Infinity;
6264        for (var i = 0; i < Slides2.length; i++) {
6265            var slideIndex = Slides2[i].index;
6266            var distance = abs(toPosition(slideIndex, true) - position);
6267            if (distance <= minDistance) {
6268                minDistance = distance;
6269                index = slideIndex;
6270            } else {
6271                break;
6272            }
6273        }
6274        return index;
6275    }
6276    function toPosition(index, trimming) {
6277        var position = orient(totalSize(index - 1) - offset2(index));
6278        return trimming ? trim(position) : position;
6279    }
6280    function getPosition() {
6281        var left2 = resolve("left");
6282        return rect(list)[left2] - rect(track)[left2] + orient(getPadding(false));
6283    }
6284    function trim(position) {
6285        if (options.trimSpace && Splide2.is(SLIDE)) {
6286            position = clamp(position, 0, orient(sliderSize(true) - listSize()));
6287        }
6288        return position;
6289    }
6290    function offset2(index) {
6291        var focus2 = options.focus;
6292        return focus2 === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus2 * slideSize(index) || 0;
6293    }
6294    function getLimit(max2) {
6295        return toPosition(max2 ? Components2.Controller.getEnd() : 0, !!options.trimSpace);
6296    }
6297    function canShift(backwards) {
6298        var shifted = orient(shift(getPosition(), backwards));
6299        return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")];
6300    }
6301    function exceededLimit(max2, position) {
6302        position = isUndefined(position) ? getPosition() : position;
6303        var exceededMin = max2 !== true && orient(position) < orient(getLimit(false));
6304        var exceededMax = max2 !== false && orient(position) > orient(getLimit(true));
6305        return exceededMin || exceededMax;
6306    }
6307    return {
6308        mount,
6309        move,
6310        jump,
6311        translate,
6312        shift,
6313        cancel,
6314        toIndex,
6315        toPosition,
6316        getPosition,
6317        getLimit,
6318        exceededLimit,
6319        reposition
6320    };
6321}
6322function Controller(Splide2, Components2, options) {
6323    var _EventInterface5 = EventInterface(Splide2), on = _EventInterface5.on, emit = _EventInterface5.emit;
6324    var Move2 = Components2.Move;
6325    var getPosition = Move2.getPosition, getLimit = Move2.getLimit, toPosition = Move2.toPosition;
6326    var _Components2$Slides = Components2.Slides, isEnough = _Components2$Slides.isEnough, getLength = _Components2$Slides.getLength;
6327    var omitEnd = options.omitEnd;
6328    var isLoop = Splide2.is(LOOP);
6329    var isSlide = Splide2.is(SLIDE);
6330    var getNext = apply(getAdjacent, false);
6331    var getPrev = apply(getAdjacent, true);
6332    var currIndex = options.start || 0;
6333    var endIndex;
6334    var prevIndex = currIndex;
6335    var slideCount;
6336    var perMove;
6337    var perPage;
6338    function mount() {
6339        init();
6340        on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);
6341        on(EVENT_RESIZED, onResized);
6342    }
6343    function init() {
6344        slideCount = getLength(true);
6345        perMove = options.perMove;
6346        perPage = options.perPage;
6347        endIndex = getEnd();
6348        var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);
6349        if (index !== currIndex) {
6350            currIndex = index;
6351            Move2.reposition();
6352        }
6353    }
6354    function onResized() {
6355        if (endIndex !== getEnd()) {
6356            emit(EVENT_END_INDEX_CHANGED);
6357        }
6358    }
6359    function go(control, allowSameIndex, callback) {
6360        if (!isBusy()) {
6361            var dest = parse(control);
6362            var index = loop(dest);
6363            if (index > -1 && (allowSameIndex || index !== currIndex)) {
6364                setIndex(index);
6365                Move2.move(dest, index, prevIndex, callback);
6366            }
6367        }
6368    }
6369    function scroll(destination, duration, snap, callback) {
6370        Components2.Scroll.scroll(destination, duration, snap, function() {
6371            var index = loop(Move2.toIndex(getPosition()));
6372            setIndex(omitEnd ? min(index, endIndex) : index);
6373            callback && callback();
6374        });
6375    }
6376    function parse(control) {
6377        var index = currIndex;
6378        if (isString(control)) {
6379            var _ref = control.match(/([+\-<>])(\d+)?/) || [], indicator = _ref[1], number = _ref[2];
6380            if (indicator === "+" || indicator === "-") {
6381                index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex);
6382            } else if (indicator === ">") {
6383                index = number ? toIndex(+number) : getNext(true);
6384            } else if (indicator === "<") {
6385                index = getPrev(true);
6386            }
6387        } else {
6388            index = isLoop ? control : clamp(control, 0, endIndex);
6389        }
6390        return index;
6391    }
6392    function getAdjacent(prev, destination) {
6393        var number = perMove || (hasFocus() ? 1 : perPage);
6394        var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));
6395        if (dest === -1 && isSlide) {
6396            if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {
6397                return prev ? 0 : endIndex;
6398            }
6399        }
6400        return destination ? dest : loop(dest);
6401    }
6402    function computeDestIndex(dest, from, snapPage) {
6403        if (isEnough() || hasFocus()) {
6404            var index = computeMovableDestIndex(dest);
6405            if (index !== dest) {
6406                from = dest;
6407                dest = index;
6408                snapPage = false;
6409            }
6410            if (dest < 0 || dest > endIndex) {
6411                if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {
6412                    dest = toIndex(toPage(dest));
6413                } else {
6414                    if (isLoop) {
6415                        dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;
6416                    } else if (options.rewind) {
6417                        dest = dest < 0 ? endIndex : 0;
6418                    } else {
6419                        dest = -1;
6420                    }
6421                }
6422            } else {
6423                if (snapPage && dest !== from) {
6424                    dest = toIndex(toPage(from) + (dest < from ? -1 : 1));
6425                }
6426            }
6427        } else {
6428            dest = -1;
6429        }
6430        return dest;
6431    }
6432    function computeMovableDestIndex(dest) {
6433        if (isSlide && options.trimSpace === "move" && dest !== currIndex) {
6434            var position = getPosition();
6435            while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {
6436                dest < currIndex ? --dest : ++dest;
6437            }
6438        }
6439        return dest;
6440    }
6441    function loop(index) {
6442        return isLoop ? (index + slideCount) % slideCount || 0 : index;
6443    }
6444    function getEnd() {
6445        var end2 = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);
6446        while (omitEnd && end2-- > 0) {
6447            if (toPosition(slideCount - 1, true) !== toPosition(end2, true)) {
6448                end2++;
6449                break;
6450            }
6451        }
6452        return clamp(end2, 0, slideCount - 1);
6453    }
6454    function toIndex(page) {
6455        return clamp(hasFocus() ? page : perPage * page, 0, endIndex);
6456    }
6457    function toPage(index) {
6458        return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);
6459    }
6460    function toDest(destination) {
6461        var closest2 = Move2.toIndex(destination);
6462        return isSlide ? clamp(closest2, 0, endIndex) : closest2;
6463    }
6464    function setIndex(index) {
6465        if (index !== currIndex) {
6466            prevIndex = currIndex;
6467            currIndex = index;
6468        }
6469    }
6470    function getIndex(prev) {
6471        return prev ? prevIndex : currIndex;
6472    }
6473    function hasFocus() {
6474        return !isUndefined(options.focus) || options.isNavigation;
6475    }
6476    function isBusy() {
6477        return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;
6478    }
6479    return {
6480        mount,
6481        go,
6482        scroll,
6483        getNext,
6484        getPrev,
6485        getAdjacent,
6486        getEnd,
6487        setIndex,
6488        getIndex,
6489        toIndex,
6490        toPage,
6491        toDest,
6492        hasFocus,
6493        isBusy
6494    };
6495}
6496var XML_NAME_SPACE = "http://www.w3.org/2000/svg";
6497var PATH = "m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z";
6498var SIZE = 40;
6499function Arrows(Splide2, Components2, options) {
6500    var event = EventInterface(Splide2);
6501    var on = event.on, bind = event.bind, emit = event.emit;
6502    var classes = options.classes, i18n = options.i18n;
6503    var Elements2 = Components2.Elements, Controller2 = Components2.Controller;
6504    var placeholder = Elements2.arrows, track = Elements2.track;
6505    var wrapper = placeholder;
6506    var prev = Elements2.prev;
6507    var next = Elements2.next;
6508    var created;
6509    var wrapperClasses;
6510    var arrows = {};
6511    function mount() {
6512        init();
6513        on(EVENT_UPDATED, remount);
6514    }
6515    function remount() {
6516        destroy();
6517        mount();
6518    }
6519    function init() {
6520        var enabled = options.arrows;
6521        if (enabled && !(prev && next)) {
6522            createArrows();
6523        }
6524        if (prev && next) {
6525            assign(arrows, {
6526                prev,
6527                next
6528            });
6529            display(wrapper, enabled ? "" : "none");
6530            addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction);
6531            if (enabled) {
6532                listen();
6533                update();
6534                setAttribute([prev, next], ARIA_CONTROLS, track.id);
6535                emit(EVENT_ARROWS_MOUNTED, prev, next);
6536            }
6537        }
6538    }
6539    function destroy() {
6540        event.destroy();
6541        removeClass(wrapper, wrapperClasses);
6542        if (created) {
6543            remove(placeholder ? [prev, next] : wrapper);
6544            prev = next = null;
6545        } else {
6546            removeAttribute([prev, next], ALL_ATTRIBUTES);
6547        }
6548    }
6549    function listen() {
6550        on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);
6551        bind(next, "click", apply(go, ">"));
6552        bind(prev, "click", apply(go, "<"));
6553    }
6554    function go(control) {
6555        Controller2.go(control, true);
6556    }
6557    function createArrows() {
6558        wrapper = placeholder || create("div", classes.arrows);
6559        prev = createArrow(true);
6560        next = createArrow(false);
6561        created = true;
6562        append(wrapper, [prev, next]);
6563        !placeholder && before(wrapper, track);
6564    }
6565    function createArrow(prev2) {
6566        var arrow2 = '<button class="' + classes.arrow + " " + (prev2 ? classes.prev : classes.next) + '" type="button"><svg xmlns="' + XML_NAME_SPACE + '" viewBox="0 0 ' + SIZE + " " + SIZE + '" width="' + SIZE + '" height="' + SIZE + '" focusable="false"><path d="' + (options.arrowPath || PATH) + '" />';
6567        return parseHtml(arrow2);
6568    }
6569    function update() {
6570        if (prev && next) {
6571            var index = Splide2.index;
6572            var prevIndex = Controller2.getPrev();
6573            var nextIndex = Controller2.getNext();
6574            var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;
6575            var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;
6576            prev.disabled = prevIndex < 0;
6577            next.disabled = nextIndex < 0;
6578            setAttribute(prev, ARIA_LABEL, prevLabel);
6579            setAttribute(next, ARIA_LABEL, nextLabel);
6580            emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);
6581        }
6582    }
6583    return {
6584        arrows,
6585        mount,
6586        destroy,
6587        update
6588    };
6589}
6590var INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval";
6591function Autoplay(Splide2, Components2, options) {
6592    var _EventInterface6 = EventInterface(Splide2), on = _EventInterface6.on, bind = _EventInterface6.bind, emit = _EventInterface6.emit;
6593    var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame);
6594    var isPaused = interval.isPaused;
6595    var Elements2 = Components2.Elements, _Components2$Elements4 = Components2.Elements, root = _Components2$Elements4.root, toggle = _Components2$Elements4.toggle;
6596    var autoplay = options.autoplay;
6597    var hovered;
6598    var focused;
6599    var stopped = autoplay === "pause";
6600    function mount() {
6601        if (autoplay) {
6602            listen();
6603            toggle && setAttribute(toggle, ARIA_CONTROLS, Elements2.track.id);
6604            stopped || play();
6605            update();
6606        }
6607    }
6608    function listen() {
6609        if (options.pauseOnHover) {
6610            bind(root, "mouseenter mouseleave", function(e) {
6611                hovered = e.type === "mouseenter";
6612                autoToggle();
6613            });
6614        }
6615        if (options.pauseOnFocus) {
6616            bind(root, "focusin focusout", function(e) {
6617                focused = e.type === "focusin";
6618                autoToggle();
6619            });
6620        }
6621        if (toggle) {
6622            bind(toggle, "click", function() {
6623                stopped ? play() : pause(true);
6624            });
6625        }
6626        on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind);
6627        on(EVENT_MOVE, onMove);
6628    }
6629    function play() {
6630        if (isPaused() && Components2.Slides.isEnough()) {
6631            interval.start(!options.resetProgress);
6632            focused = hovered = stopped = false;
6633            update();
6634            emit(EVENT_AUTOPLAY_PLAY);
6635        }
6636    }
6637    function pause(stop) {
6638        if (stop === void 0) {
6639            stop = true;
6640        }
6641        stopped = !!stop;
6642        update();
6643        if (!isPaused()) {
6644            interval.pause();
6645            emit(EVENT_AUTOPLAY_PAUSE);
6646        }
6647    }
6648    function autoToggle() {
6649        if (!stopped) {
6650            hovered || focused ? pause(false) : play();
6651        }
6652    }
6653    function update() {
6654        if (toggle) {
6655            toggleClass(toggle, CLASS_ACTIVE, !stopped);
6656            setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? "play" : "pause"]);
6657        }
6658    }
6659    function onAnimationFrame(rate) {
6660        var bar = Elements2.bar;
6661        bar && style(bar, "width", rate * 100 + "%");
6662        emit(EVENT_AUTOPLAY_PLAYING, rate);
6663    }
6664    function onMove(index) {
6665        var Slide2 = Components2.Slides.getAt(index);
6666        interval.set(Slide2 && +getAttribute(Slide2.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval);
6667    }
6668    return {
6669        mount,
6670        destroy: interval.cancel,
6671        play,
6672        pause,
6673        isPaused
6674    };
6675}
6676function Cover(Splide2, Components2, options) {
6677    var _EventInterface7 = EventInterface(Splide2), on = _EventInterface7.on;
6678    function mount() {
6679        if (options.cover) {
6680            on(EVENT_LAZYLOAD_LOADED, apply(toggle, true));
6681            on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true));
6682        }
6683    }
6684    function cover(cover2) {
6685        Components2.Slides.forEach(function(Slide2) {
6686            var img = child(Slide2.container || Slide2.slide, "img");
6687            if (img && img.src) {
6688                toggle(cover2, img, Slide2);
6689            }
6690        });
6691    }
6692    function toggle(cover2, img, Slide2) {
6693        Slide2.style("background", cover2 ? 'center/cover no-repeat url("' + img.src + '")' : "", true);
6694        display(img, cover2 ? "none" : "");
6695    }
6696    return {
6697        mount,
6698        destroy: apply(cover, false)
6699    };
6700}
6701var BOUNCE_DIFF_THRESHOLD = 10;
6702var BOUNCE_DURATION = 600;
6703var FRICTION_FACTOR = 0.6;
6704var BASE_VELOCITY = 1.5;
6705var MIN_DURATION = 800;
6706function Scroll(Splide2, Components2, options) {
6707    var _EventInterface8 = EventInterface(Splide2), on = _EventInterface8.on, emit = _EventInterface8.emit;
6708    var set = Splide2.state.set;
6709    var Move2 = Components2.Move;
6710    var getPosition = Move2.getPosition, getLimit = Move2.getLimit, exceededLimit = Move2.exceededLimit, translate = Move2.translate;
6711    var isSlide = Splide2.is(SLIDE);
6712    var interval;
6713    var callback;
6714    var friction = 1;
6715    function mount() {
6716        on(EVENT_MOVE, clear);
6717        on([EVENT_UPDATED, EVENT_REFRESH], cancel);
6718    }
6719    function scroll(destination, duration, snap, onScrolled, noConstrain) {
6720        var from = getPosition();
6721        clear();
6722        if (snap && (!isSlide || !exceededLimit())) {
6723            var size = Components2.Layout.sliderSize();
6724            var offset2 = sign(destination) * size * floor(abs(destination) / size) || 0;
6725            destination = Move2.toPosition(Components2.Controller.toDest(destination % size)) + offset2;
6726        }
6727        var noDistance = approximatelyEqual(from, destination, 1);
6728        friction = 1;
6729        duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION);
6730        callback = onScrolled;
6731        interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1);
6732        set(SCROLLING);
6733        emit(EVENT_SCROLL);
6734        interval.start();
6735    }
6736    function onEnd() {
6737        set(IDLE);
6738        callback && callback();
6739        emit(EVENT_SCROLLED);
6740    }
6741    function update(from, to, noConstrain, rate) {
6742        var position = getPosition();
6743        var target = from + (to - from) * easing(rate);
6744        var diff = (target - position) * friction;
6745        translate(position + diff);
6746        if (isSlide && !noConstrain && exceededLimit()) {
6747            friction *= FRICTION_FACTOR;
6748            if (abs(diff) < BOUNCE_DIFF_THRESHOLD) {
6749                scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true);
6750            }
6751        }
6752    }
6753    function clear() {
6754        if (interval) {
6755            interval.cancel();
6756        }
6757    }
6758    function cancel() {
6759        if (interval && !interval.isPaused()) {
6760            clear();
6761            onEnd();
6762        }
6763    }
6764    function easing(t) {
6765        var easingFunc = options.easingFunc;
6766        return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4);
6767    }
6768    return {
6769        mount,
6770        destroy: clear,
6771        scroll,
6772        cancel
6773    };
6774}
6775var SCROLL_LISTENER_OPTIONS = {
6776    passive: false,
6777    capture: true
6778};
6779function Drag(Splide2, Components2, options) {
6780    var _EventInterface9 = EventInterface(Splide2), on = _EventInterface9.on, emit = _EventInterface9.emit, bind = _EventInterface9.bind, unbind = _EventInterface9.unbind;
6781    var state = Splide2.state;
6782    var Move2 = Components2.Move, Scroll2 = Components2.Scroll, Controller2 = Components2.Controller, track = Components2.Elements.track, reduce = Components2.Media.reduce;
6783    var _Components2$Directio2 = Components2.Direction, resolve = _Components2$Directio2.resolve, orient = _Components2$Directio2.orient;
6784    var getPosition = Move2.getPosition, exceededLimit = Move2.exceededLimit;
6785    var basePosition;
6786    var baseEvent;
6787    var prevBaseEvent;
6788    var isFree;
6789    var dragging;
6790    var exceeded = false;
vendor: 4,376 bytes, lines 6791-6912
6791    var clickPrevented;
6792    var disabled;
6793    var target;
6794    function mount() {
6795        bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS);
6796        bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS);
6797        bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS);
6798        bind(track, "click", onClick, {
6799            capture: true
6800        });
6801        bind(track, "dragstart", prevent);
6802        on([EVENT_MOUNTED, EVENT_UPDATED], init);
6803    }
6804    function init() {
6805        var drag = options.drag;
6806        disable(!drag);
6807        isFree = drag === "free";
6808    }
6809    function onPointerDown(e) {
6810        clickPrevented = false;
6811        if (!disabled) {
6812            var isTouch = isTouchEvent(e);
6813            if (isDraggable(e.target) && (isTouch || !e.button)) {
6814                if (!Controller2.isBusy()) {
6815                    target = isTouch ? track : window;
6816                    dragging = state.is([MOVING, SCROLLING]);
6817                    prevBaseEvent = null;
6818                    bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS);
6819                    bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS);
6820                    Move2.cancel();
6821                    Scroll2.cancel();
6822                    save(e);
6823                } else {
6824                    prevent(e, true);
6825                }
6826            }
6827        }
6828    }
6829    function onPointerMove(e) {
6830        if (!state.is(DRAGGING)) {
6831            state.set(DRAGGING);
6832            emit(EVENT_DRAG);
6833        }
6834        if (e.cancelable) {
6835            if (dragging) {
6836                Move2.translate(basePosition + constrain(diffCoord(e)));
6837                var expired = diffTime(e) > LOG_INTERVAL;
6838                var hasExceeded = exceeded !== (exceeded = exceededLimit());
6839                if (expired || hasExceeded) {
6840                    save(e);
6841                }
6842                clickPrevented = true;
6843                emit(EVENT_DRAGGING);
6844                prevent(e);
6845            } else if (isSliderDirection(e)) {
6846                dragging = shouldStart(e);
6847                prevent(e);
6848            }
6849        }
6850    }
6851    function onPointerUp(e) {
6852        if (state.is(DRAGGING)) {
6853            state.set(IDLE);
6854            emit(EVENT_DRAGGED);
6855        }
6856        if (dragging) {
6857            move(e);
6858            prevent(e);
6859        }
6860        unbind(target, POINTER_MOVE_EVENTS, onPointerMove);
6861        unbind(target, POINTER_UP_EVENTS, onPointerUp);
6862        dragging = false;
6863    }
6864    function onClick(e) {
6865        if (!disabled && clickPrevented) {
6866            prevent(e, true);
6867        }
6868    }
6869    function save(e) {
6870        prevBaseEvent = baseEvent;
6871        baseEvent = e;
6872        basePosition = getPosition();
6873    }
6874    function move(e) {
6875        var velocity = computeVelocity(e);
6876        var destination = computeDestination(velocity);
6877        var rewind = options.rewind && options.rewindByDrag;
6878        reduce(false);
6879        if (isFree) {
6880            Controller2.scroll(destination, 0, options.snap);
6881        } else if (Splide2.is(FADE)) {
6882            Controller2.go(orient(sign(velocity)) < 0 ? rewind ? "<" : "-" : rewind ? ">" : "+");
6883        } else if (Splide2.is(SLIDE) && exceeded && rewind) {
6884            Controller2.go(exceededLimit(true) ? ">" : "<");
6885        } else {
6886            Controller2.go(Controller2.toDest(destination), true);
6887        }
6888        reduce(true);
6889    }
6890    function shouldStart(e) {
6891        var thresholds = options.dragMinThreshold;
6892        var isObj = isObject(thresholds);
6893        var mouse = isObj && thresholds.mouse || 0;
6894        var touch = (isObj ? thresholds.touch : +thresholds) || 10;
6895        return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse);
6896    }
6897    function isSliderDirection(e) {
6898        return abs(diffCoord(e)) > abs(diffCoord(e, true));
6899    }
6900    function computeVelocity(e) {
6901        if (Splide2.is(LOOP) || !exceeded) {
6902            var time = diffTime(e);
6903            if (time && time < LOG_INTERVAL) {
6904                return diffCoord(e) / time;
6905            }
6906        }
6907        return 0;
6908    }
6909    function computeDestination(velocity) {
6910        return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1));
6911    }
6912    function diffCoord(e, orthogonal) {
vendor: 19,553 bytes, lines 6913-7517
6913        return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal);
6914    }
6915    function diffTime(e) {
6916        return timeOf(e) - timeOf(getBaseEvent(e));
6917    }
6918    function getBaseEvent(e) {
6919        return baseEvent === e && prevBaseEvent || baseEvent;
6920    }
6921    function coordOf(e, orthogonal) {
6922        return (isTouchEvent(e) ? e.changedTouches[0] : e)["page" + resolve(orthogonal ? "Y" : "X")];
6923    }
6924    function constrain(diff) {
6925        return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1);
6926    }
6927    function isDraggable(target2) {
6928        var noDrag = options.noDrag;
6929        return !matches(target2, "." + CLASS_PAGINATION_PAGE + ", ." + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag));
6930    }
6931    function isTouchEvent(e) {
6932        return typeof TouchEvent !== "undefined" && e instanceof TouchEvent;
6933    }
6934    function isDragging() {
6935        return dragging;
6936    }
6937    function disable(value) {
6938        disabled = value;
6939    }
6940    return {
6941        mount,
6942        disable,
6943        isDragging
6944    };
6945}
6946var NORMALIZATION_MAP = {
6947    Spacebar: " ",
6948    Right: ARROW_RIGHT,
6949    Left: ARROW_LEFT,
6950    Up: ARROW_UP,
6951    Down: ARROW_DOWN
6952};
6953function normalizeKey(key) {
6954    key = isString(key) ? key : key.key;
6955    return NORMALIZATION_MAP[key] || key;
6956}
6957var KEYBOARD_EVENT = "keydown";
6958function Keyboard(Splide2, Components2, options) {
6959    var _EventInterface10 = EventInterface(Splide2), on = _EventInterface10.on, bind = _EventInterface10.bind, unbind = _EventInterface10.unbind;
6960    var root = Splide2.root;
6961    var resolve = Components2.Direction.resolve;
6962    var target;
6963    var disabled;
6964    function mount() {
6965        init();
6966        on(EVENT_UPDATED, destroy);
6967        on(EVENT_UPDATED, init);
6968        on(EVENT_MOVE, onMove);
6969    }
6970    function init() {
6971        var keyboard = options.keyboard;
6972        if (keyboard) {
6973            target = keyboard === "global" ? window : root;
6974            bind(target, KEYBOARD_EVENT, onKeydown);
6975        }
6976    }
6977    function destroy() {
6978        unbind(target, KEYBOARD_EVENT);
6979    }
6980    function disable(value) {
6981        disabled = value;
6982    }
6983    function onMove() {
6984        var _disabled = disabled;
6985        disabled = true;
6986        nextTick(function() {
6987            disabled = _disabled;
6988        });
6989    }
6990    function onKeydown(e) {
6991        if (!disabled) {
6992            var key = normalizeKey(e);
6993            if (key === resolve(ARROW_LEFT)) {
6994                Splide2.go("<");
6995            } else if (key === resolve(ARROW_RIGHT)) {
6996                Splide2.go(">");
6997            }
6998        }
6999    }
7000    return {
7001        mount,
7002        destroy,
7003        disable
7004    };
7005}
7006var SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-lazy";
7007var SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset";
7008var IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]";
7009function LazyLoad(Splide2, Components2, options) {
7010    var _EventInterface11 = EventInterface(Splide2), on = _EventInterface11.on, off = _EventInterface11.off, bind = _EventInterface11.bind, emit = _EventInterface11.emit;
7011    var isSequential = options.lazyLoad === "sequential";
7012    var events = [EVENT_MOVED, EVENT_SCROLLED];
7013    var entries = [];
7014    function mount() {
7015        if (options.lazyLoad) {
7016            init();
7017            on(EVENT_REFRESH, init);
7018        }
7019    }
7020    function init() {
7021        empty(entries);
7022        register();
7023        if (isSequential) {
7024            loadNext();
7025        } else {
7026            off(events);
7027            on(events, check);
7028            check();
7029        }
7030    }
7031    function register() {
7032        Components2.Slides.forEach(function(Slide2) {
7033            queryAll(Slide2.slide, IMAGE_SELECTOR).forEach(function(img) {
7034                var src = getAttribute(img, SRC_DATA_ATTRIBUTE);
7035                var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE);
7036                if (src !== img.src || srcset !== img.srcset) {
7037                    var className = options.classes.spinner;
7038                    var parent = img.parentElement;
7039                    var spinner = child(parent, "." + className) || create("span", className, parent);
7040                    entries.push([img, Slide2, spinner]);
7041                    img.src || display(img, "none");
7042                }
7043            });
7044        });
7045    }
7046    function check() {
7047        entries = entries.filter(function(data) {
7048            var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1;
7049            return data[1].isWithin(Splide2.index, distance) ? load(data) : true;
7050        });
7051        entries.length || off(events);
7052    }
7053    function load(data) {
7054        var img = data[0];
7055        addClass(data[1].slide, CLASS_LOADING);
7056        bind(img, "load error", apply(onLoad, data));
7057        setAttribute(img, "src", getAttribute(img, SRC_DATA_ATTRIBUTE));
7058        setAttribute(img, "srcset", getAttribute(img, SRCSET_DATA_ATTRIBUTE));
7059        removeAttribute(img, SRC_DATA_ATTRIBUTE);
7060        removeAttribute(img, SRCSET_DATA_ATTRIBUTE);
7061    }
7062    function onLoad(data, e) {
7063        var img = data[0], Slide2 = data[1];
7064        removeClass(Slide2.slide, CLASS_LOADING);
7065        if (e.type !== "error") {
7066            remove(data[2]);
7067            display(img, "");
7068            emit(EVENT_LAZYLOAD_LOADED, img, Slide2);
7069            emit(EVENT_RESIZE);
7070        }
7071        isSequential && loadNext();
7072    }
7073    function loadNext() {
7074        entries.length && load(entries.shift());
7075    }
7076    return {
7077        mount,
7078        destroy: apply(empty, entries),
7079        check
7080    };
7081}
7082function Pagination(Splide2, Components2, options) {
7083    var event = EventInterface(Splide2);
7084    var on = event.on, emit = event.emit, bind = event.bind;
7085    var Slides2 = Components2.Slides, Elements2 = Components2.Elements, Controller2 = Components2.Controller;
7086    var hasFocus = Controller2.hasFocus, getIndex = Controller2.getIndex, go = Controller2.go;
7087    var resolve = Components2.Direction.resolve;
7088    var placeholder = Elements2.pagination;
7089    var items = [];
7090    var list;
7091    var paginationClasses;
7092    function mount() {
7093        destroy();
7094        on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);
7095        var enabled = options.pagination;
7096        placeholder && display(placeholder, enabled ? "" : "none");
7097        if (enabled) {
7098            on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update);
7099            createPagination();
7100            update();
7101            emit(EVENT_PAGINATION_MOUNTED, {
7102                list,
7103                items
7104            }, getAt(Splide2.index));
7105        }
7106    }
7107    function destroy() {
7108        if (list) {
7109            remove(placeholder ? slice(list.children) : list);
7110            removeClass(list, paginationClasses);
7111            empty(items);
7112            list = null;
7113        }
7114        event.destroy();
7115    }
7116    function createPagination() {
7117        var length = Splide2.length;
7118        var classes = options.classes, i18n = options.i18n, perPage = options.perPage;
7119        var max2 = hasFocus() ? Controller2.getEnd() + 1 : ceil(length / perPage);
7120        list = placeholder || create("ul", classes.pagination, Elements2.track.parentElement);
7121        addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection());
7122        setAttribute(list, ROLE, "tablist");
7123        setAttribute(list, ARIA_LABEL, i18n.select);
7124        setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? "vertical" : "");
7125        for (var i = 0; i < max2; i++) {
7126            var li = create("li", null, list);
7127            var button = create("button", {
7128                class: classes.page,
7129                type: "button"
7130            }, li);
7131            var controls = Slides2.getIn(i).map(function(Slide2) {
7132                return Slide2.slide.id;
7133            });
7134            var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX;
7135            bind(button, "click", apply(onClick, i));
7136            if (options.paginationKeyboard) {
7137                bind(button, "keydown", apply(onKeydown, i));
7138            }
7139            setAttribute(li, ROLE, "presentation");
7140            setAttribute(button, ROLE, "tab");
7141            setAttribute(button, ARIA_CONTROLS, controls.join(" "));
7142            setAttribute(button, ARIA_LABEL, format(text, i + 1));
7143            setAttribute(button, TAB_INDEX, -1);
7144            items.push({
7145                li,
7146                button,
7147                page: i
7148            });
7149        }
7150    }
7151    function onClick(page) {
7152        go(">" + page, true);
7153    }
7154    function onKeydown(page, e) {
7155        var length = items.length;
7156        var key = normalizeKey(e);
7157        var dir = getDirection();
7158        var nextPage = -1;
7159        if (key === resolve(ARROW_RIGHT, false, dir)) {
7160            nextPage = ++page % length;
7161        } else if (key === resolve(ARROW_LEFT, false, dir)) {
7162            nextPage = (--page + length) % length;
7163        } else if (key === "Home") {
7164            nextPage = 0;
7165        } else if (key === "End") {
7166            nextPage = length - 1;
7167        }
7168        var item = items[nextPage];
7169        if (item) {
7170            focus(item.button);
7171            go(">" + nextPage);
7172            prevent(e, true);
7173        }
7174    }
7175    function getDirection() {
7176        return options.paginationDirection || options.direction;
7177    }
7178    function getAt(index) {
7179        return items[Controller2.toPage(index)];
7180    }
7181    function update() {
7182        var prev = getAt(getIndex(true));
7183        var curr = getAt(getIndex());
7184        if (prev) {
7185            var button = prev.button;
7186            removeClass(button, CLASS_ACTIVE);
7187            removeAttribute(button, ARIA_SELECTED);
7188            setAttribute(button, TAB_INDEX, -1);
7189        }
7190        if (curr) {
7191            var _button = curr.button;
7192            addClass(_button, CLASS_ACTIVE);
7193            setAttribute(_button, ARIA_SELECTED, true);
7194            setAttribute(_button, TAB_INDEX, "");
7195        }
7196        emit(EVENT_PAGINATION_UPDATED, {
7197            list,
7198            items
7199        }, prev, curr);
7200    }
7201    return {
7202        items,
7203        mount,
7204        destroy,
7205        getAt,
7206        update
7207    };
7208}
7209var TRIGGER_KEYS = [" ", "Enter"];
7210function Sync(Splide2, Components2, options) {
7211    var isNavigation = options.isNavigation, slideFocus = options.slideFocus;
7212    var events = [];
7213    function mount() {
7214        Splide2.splides.forEach(function(target) {
7215            if (!target.isParent) {
7216                sync(Splide2, target.splide);
7217                sync(target.splide, Splide2);
7218            }
7219        });
7220        if (isNavigation) {
7221            navigate();
7222        }
7223    }
7224    function destroy() {
7225        events.forEach(function(event) {
7226            event.destroy();
7227        });
7228        empty(events);
7229    }
7230    function remount() {
7231        destroy();
7232        mount();
7233    }
7234    function sync(splide, target) {
7235        var event = EventInterface(splide);
7236        event.on(EVENT_MOVE, function(index, prev, dest) {
7237            target.go(target.is(LOOP) ? dest : index);
7238        });
7239        events.push(event);
7240    }
7241    function navigate() {
7242        var event = EventInterface(Splide2);
7243        var on = event.on;
7244        on(EVENT_CLICK, onClick);
7245        on(EVENT_SLIDE_KEYDOWN, onKeydown);
7246        on([EVENT_MOUNTED, EVENT_UPDATED], update);
7247        events.push(event);
7248        event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides);
7249    }
7250    function update() {
7251        setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? "vertical" : "");
7252    }
7253    function onClick(Slide2) {
7254        Splide2.go(Slide2.index);
7255    }
7256    function onKeydown(Slide2, e) {
7257        if (includes(TRIGGER_KEYS, normalizeKey(e))) {
7258            onClick(Slide2);
7259            prevent(e);
7260        }
7261    }
7262    return {
7263        setup: apply(Components2.Media.set, {
7264            slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
7265        }, true),
7266        mount,
7267        destroy,
7268        remount
7269    };
7270}
7271function Wheel(Splide2, Components2, options) {
7272    var _EventInterface12 = EventInterface(Splide2), bind = _EventInterface12.bind;
7273    var lastTime = 0;
7274    function mount() {
7275        if (options.wheel) {
7276            bind(Components2.Elements.track, "wheel", onWheel, SCROLL_LISTENER_OPTIONS);
7277        }
7278    }
7279    function onWheel(e) {
7280        if (e.cancelable) {
7281            var deltaY = e.deltaY;
7282            var backwards = deltaY < 0;
7283            var timeStamp = timeOf(e);
7284            var _min = options.wheelMinThreshold || 0;
7285            var sleep = options.wheelSleep || 0;
7286            if (abs(deltaY) > _min && timeStamp - lastTime > sleep) {
7287                Splide2.go(backwards ? "<" : ">");
7288                lastTime = timeStamp;
7289            }
7290            shouldPrevent(backwards) && prevent(e);
7291        }
7292    }
7293    function shouldPrevent(backwards) {
7294        return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1;
7295    }
7296    return {
7297        mount
7298    };
7299}
7300var SR_REMOVAL_DELAY = 90;
7301function Live(Splide2, Components2, options) {
7302    var _EventInterface13 = EventInterface(Splide2), on = _EventInterface13.on;
7303    var track = Components2.Elements.track;
7304    var enabled = options.live && !options.isNavigation;
7305    var sr = create("span", CLASS_SR);
7306    var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false));
7307    function mount() {
7308        if (enabled) {
7309            disable(!Components2.Autoplay.isPaused());
7310            setAttribute(track, ARIA_ATOMIC, true);
7311            sr.textContent = "…";
7312            on(EVENT_AUTOPLAY_PLAY, apply(disable, true));
7313            on(EVENT_AUTOPLAY_PAUSE, apply(disable, false));
7314            on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true));
7315        }
7316    }
7317    function toggle(active) {
7318        setAttribute(track, ARIA_BUSY, active);
7319        if (active) {
7320            append(track, sr);
7321            interval.start();
7322        } else {
7323            remove(sr);
7324            interval.cancel();
7325        }
7326    }
7327    function destroy() {
7328        removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]);
7329        remove(sr);
7330    }
7331    function disable(disabled) {
7332        if (enabled) {
7333            setAttribute(track, ARIA_LIVE, disabled ? "off" : "polite");
7334        }
7335    }
7336    return {
7337        mount,
7338        disable,
7339        destroy
7340    };
7341}
7342var ComponentConstructors = /* @__PURE__ */ Object.freeze({
7343    __proto__: null,
7344    Media,
7345    Direction,
7346    Elements,
7347    Slides,
7348    Layout,
7349    Clones,
7350    Move,
7351    Controller,
7352    Arrows,
7353    Autoplay,
7354    Cover,
7355    Scroll,
7356    Drag,
7357    Keyboard,
7358    LazyLoad,
7359    Pagination,
7360    Sync,
7361    Wheel,
7362    Live
7363});
7364var I18N = {
7365    prev: "Previous slide",
7366    next: "Next slide",
7367    first: "Go to first slide",
7368    last: "Go to last slide",
7369    slideX: "Go to slide %s",
7370    pageX: "Go to page %s",
7371    play: "Start autoplay",
7372    pause: "Pause autoplay",
7373    carousel: "carousel",
7374    slide: "slide",
7375    select: "Select a slide to show",
7376    slideLabel: "%s of %s"
7377};
7378var DEFAULTS = {
7379    type: "slide",
7380    role: "region",
7381    speed: 400,
7382    perPage: 1,
7383    cloneStatus: true,
7384    arrows: true,
7385    pagination: true,
7386    paginationKeyboard: true,
7387    interval: 5e3,
7388    pauseOnHover: true,
7389    pauseOnFocus: true,
7390    resetProgress: true,
7391    easing: "cubic-bezier(0.25, 1, 0.5, 1)",
7392    drag: true,
7393    direction: "ltr",
7394    trimSpace: true,
7395    focusableNodes: "a, button, textarea, input, select, iframe",
7396    live: true,
7397    classes: CLASSES,
7398    i18n: I18N,
7399    reducedMotion: {
7400        speed: 0,
7401        rewindSpeed: 0,
7402        autoplay: "pause"
7403    }
7404};
7405function Fade(Splide2, Components2, options) {
7406    var Slides2 = Components2.Slides;
7407    function mount() {
7408        EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);
7409    }
7410    function init() {
7411        Slides2.forEach(function(Slide2) {
7412            Slide2.style("transform", "translateX(-" + 100 * Slide2.index + "%)");
7413        });
7414    }
7415    function start2(index, done) {
7416        Slides2.style("transition", "opacity " + options.speed + "ms " + options.easing);
7417        nextTick(done);
7418    }
7419    return {
7420        mount,
7421        start: start2,
7422        cancel: noop
7423    };
7424}
7425function Slide(Splide2, Components2, options) {
7426    var Move2 = Components2.Move, Controller2 = Components2.Controller, Scroll2 = Components2.Scroll;
7427    var list = Components2.Elements.list;
7428    var transition = apply(style, list, "transition");
7429    var endCallback;
7430    function mount() {
7431        EventInterface(Splide2).bind(list, "transitionend", function(e) {
7432            if (e.target === list && endCallback) {
7433                cancel();
7434                endCallback();
7435            }
7436        });
7437    }
7438    function start2(index, done) {
7439        var destination = Move2.toPosition(index, true);
7440        var position = Move2.getPosition();
7441        var speed = getSpeed(index);
7442        if (abs(destination - position) >= 1 && speed >= 1) {
7443            if (options.useScroll) {
7444                Scroll2.scroll(destination, speed, false, done);
7445            } else {
7446                transition("transform " + speed + "ms " + options.easing);
7447                Move2.translate(destination, true);
7448                endCallback = done;
7449            }
7450        } else {
7451            Move2.jump(index);
7452            done();
7453        }
7454    }
7455    function cancel() {
7456        transition("");
7457        Scroll2.cancel();
7458    }
7459    function getSpeed(index) {
7460        var rewindSpeed = options.rewindSpeed;
7461        if (Splide2.is(SLIDE) && rewindSpeed) {
7462            var prev = Controller2.getIndex(true);
7463            var end2 = Controller2.getEnd();
7464            if (prev === 0 && index >= end2 || prev >= end2 && index === 0) {
7465                return rewindSpeed;
7466            }
7467        }
7468        return options.speed;
7469    }
7470    return {
7471        mount,
7472        start: start2,
7473        cancel
7474    };
7475}
7476var _Splide = /* @__PURE__ */ function() {
7477    function _Splide2(target, options) {
7478        this.event = EventInterface();
7479        this.Components = {};
7480        this.state = State(CREATED);
7481        this.splides = [];
7482        this._o = {};
7483        this._E = {};
7484        var root = isString(target) ? query(document, target) : target;
7485        assert(root, root + " is invalid.");
7486        this.root = root;
7487        options = merge({
7488            label: getAttribute(root, ARIA_LABEL) || "",
7489            labelledby: getAttribute(root, ARIA_LABELLEDBY) || ""
7490        }, DEFAULTS, _Splide2.defaults, options || {});
7491        try {
7492            merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE)));
7493        } catch (e) {
7494            assert(false, "Invalid JSON");
7495        }
7496        this._o = Object.create(merge({}, options));
7497    }
7498    var _proto = _Splide2.prototype;
7499    _proto.mount = function mount(Extensions, Transition) {
7500        var _this = this;
7501        var state = this.state, Components2 = this.Components;
7502        assert(state.is([CREATED, DESTROYED]), "Already mounted!");
7503        state.set(CREATED);
7504        this._C = Components2;
7505        this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide);
7506        this._E = Extensions || this._E;
7507        var Constructors = assign({}, ComponentConstructors, this._E, {
7508            Transition: this._T
7509        });
7510        forOwn(Constructors, function(Component, key) {
7511            var component = Component(_this, Components2, _this._o);
7512            Components2[key] = component;
7513            component.setup && component.setup();
7514        });
7515        forOwn(Components2, function(component) {
7516            component.mount && component.mount();
7517        });
7518        this.emit(EVENT_MOUNTED);
7519        addClass(this.root, CLASS_INITIALIZED);
7520        state.set(IDLE);
7521        this.emit(EVENT_READY);
7522        return this;
7523    };
7524    _proto.sync = function sync(splide) {
7525        this.splides.push({
7526            splide
7527        });
7528        splide.splides.push({
7529            splide: this,
7530            isParent: true
7531        });
7532        if (this.state.is(IDLE)) {
7533            this._C.Sync.remount();
7534            splide.Components.Sync.remount();
7535        }
7536        return this;
7537    };
7538    _proto.go = function go(control) {
7539        this._C.Controller.go(control);
7540        return this;
7541    };
7542    _proto.on = function on(events, callback) {
7543        this.event.on(events, callback);
7544        return this;
7545    };
7546    _proto.off = function off(events) {
7547        this.event.off(events);
7548        return this;
7549    };
7550    _proto.emit = function emit(event) {
7551        var _this$event;
7552        (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1)));
7553        return this;
7554    };
7555    _proto.add = function add(slides, index) {
7556        this._C.Slides.add(slides, index);
7557        return this;
7558    };
7559    _proto.remove = function remove2(matcher) {
7560        this._C.Slides.remove(matcher);
7561        return this;
7562    };
7563    _proto.is = function is(type) {
7564        return this._o.type === type;
7565    };
7566    _proto.refresh = function refresh() {
7567        this.emit(EVENT_REFRESH);
7568        return this;
7569    };
7570    _proto.destroy = function destroy(completely) {
7571        if (completely === void 0) {
7572            completely = true;
7573        }
7574        var event = this.event, state = this.state;
7575        if (state.is(CREATED)) {
7576            EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely));
7577        } else {
7578            forOwn(this._C, function(component) {
7579                component.destroy && component.destroy(completely);
7580            }, true);
7581            event.emit(EVENT_DESTROY);
7582            event.destroy();
7583            completely && empty(this.splides);
7584            state.set(DESTROYED);
7585        }
7586        return this;
7587    };
7588    _createClass(_Splide2, [{
7589        key: "options",
7590        get: function get() {
7591            return this._o;
7592        },
7593        set: function set(options) {
7594            this._C.Media.set(options, true, true);
7595        }
7596    }, {
7597        key: "length",
7598        get: function get() {
7599            return this._C.Slides.getLength(true);
7600        }
7601    }, {
7602        key: "index",
7603        get: function get() {
7604            return this._C.Controller.getIndex();
7605        }
7606    }]);
7607    return _Splide2;
7608}();
7609var Splide = _Splide;
7610Splide.defaults = {};
7611Splide.STATES = STATES;
7612function Carousel2() {
7613    const elms = document.getElementsByClassName("splide");
7614    for (let i = 0; i < elms.length; i++) {
7615        new Splide(elms[i]).mount();
7616    }
7617    if (document.querySelector(".events-carousel")) {
7618        const informations = document.querySelectorAll(".events-carousel .informations");
7619        informations.forEach((info) => {
7620            const rect2 = info.getBoundingClientRect();
7621            const width = rect2.width;
7622            if (width > 515) {
7623                info.classList.add("long-content");
7624            }
7625        });
7626    }
7627}
7628function MenuMobile() {
7629    const menuTrigger = document.querySelector(".menu--trigger");
7630    const menuClose = document.querySelector(".menu--close button");
7631    const menu = document.querySelector(".menu--main nav ul");
7632    menuTrigger.addEventListener("click", () => {
7633        menu.classList.add("is-open");
7634    });
7635    menuClose.addEventListener("click", () => {
7636        menu.classList.remove("is-open");
7637    });
7638}
7639function EventModal() {
7640    const elements = document.querySelectorAll(".element-modal");
7641    elements.forEach((element) => {
7642        const button = element.querySelector("button");
7643        if (button) {
7644            button.addEventListener("click", () => {
7645                const nameElement = element.querySelector(".informations .name");
7646                const eventElement = element.querySelector(".informations .event");
7647                const dateElement = element.querySelector(".informations .date");
7648                const ticketsElement = element.querySelector(".informations .tickets");
7649                const coverImageElement = element.querySelector(".informations .cover");
7650                const name = nameElement ? nameElement.textContent : "";
7651                const event = eventElement ? eventElement.textContent : "";
7652                const date = dateElement ? dateElement.textContent : "";
7653                let ticketsHtml = ticketsElement ? ticketsElement.innerHTML : "";
7654                const dateParts = date.split("-");
7655                const coverSrc = coverImageElement ? coverImageElement.src : "";
7656                const modal = document.getElementById("event-modal");
7657                modal.querySelector(".modal-body .name").textContent = name;
7658                modal.querySelector(".modal-body .event").textContent = event;
7659                modal.querySelector(".modal-body .date p").textContent = dateParts[0];
7660                modal.querySelector(".modal-body .date p").textContent = dateParts[0];
7661                modal.querySelector(".modal-body .hour p").textContent = dateParts[1];
7662                function showModalElement(className) {
7663                    let target = modal.querySelector(".modal-body ." + className);
7664                    if (target) {
7665                        target.classList.add("d-flex");
7666                        target.classList.remove("d-none");
7667                    }
7668                }
7669                function hideModalElement(className) {
7670                    let target = modal.querySelector(".modal-body ." + className);
7671                    if (target) {
7672                        target.classList.add("d-none");
7673                        target.classList.remove("d-flex");
7674                    }
7675                }
7676                if (dateParts.length > 1) {
7677                    dateParts[0].trim() != "" ? showModalElement("date") : hideModalElement("date");
7678                    dateParts[1].trim() != "" ? showModalElement("hour") : hideModalElement("hour");
7679                    dateParts[0].trim() == "" && dateParts[1].trim() == "" ? hideModalElement("dateHourBlock") : showModalElement("dateHourBlock");
7680                } else {
7681                    hideModalElement("dateHourBlock");
7682                }
7683                modal.querySelector(".modal-body .tickets").innerHTML = ticketsHtml;
7684                modal.querySelector(".modal-header .cover").src = coverSrc;
7685                let buttonsPMR = document.querySelectorAll(".cta-
7685pmr-modal");
7686                if (buttonsPMR.length > 0) {
7687                    buttonsPMR.forEach((buttonPmr) => {
7688                        let modalButtonPMR = document.getElementById("pmr-modal-button-" + buttonPmr.dataset.event);
7689                        if (buttonPmr) {
7690                            buttonPmr.addEventListener("click", function(e) {
7691                                e.preventDefault();
7692                                modalButtonPMR.click();
7693                            });
7694                        }
7695                    });
7696                }
7697                let buttonsGroup = document.querySelectorAll(".cta-groupe-modal");
7698                if (buttonsGroup.length > 0) {
7699                    buttonsGroup.forEach((button2) => {
7700                        let modalTrigger = document.getElementById(
7701                            "groupe-modal-button-" + button2.dataset.event
7702                        );
7703                        if (button2) {
7704                            button2.addEventListener("click", function(e) {
7705                                e.preventDefault();
7706                                modalTrigger.click();
7707                            });
7708                        }
7709                    });
7710                }
7711            });
7712        }
7713    });
7714    let buttonsStatut = document.querySelectorAll(".cta-statut-modal");
7715    if (buttonsStatut.length > 0) {
7716        buttonsStatut.forEach((button) => {
7717            let modalTrigger = document.getElementById(
7718                "statut-modal-button-" + button.dataset.event
7719            );
7720            if (button) {
7721                button.addEventListener("click", function(e) {
7722                    e.preventDefault();
7723                    modalTrigger.click();
7724                });
7725            }
7726        });
7727    }
7728}
7729function DatePickerCustom() {
7730    const dateFieldContainers = document.querySelectorAll(".form-date-container");
7731    dateFieldContainers.forEach((dateFieldContainer) => {
7732        const select = dateFieldContainer.querySelector("select");
7733        let wrapper = select.closest(".form-date-container");
7734        if (!select)
7735            return;
7736        select.addEventListener("mousedown", (e) => {
7737            e.preventDefault();
7738            if (wrapper.classList.contains("show")) {
7739                wrapper.classList.remove("show");
7740            } else {
7741                wrapper.classList.add("show");
7742            }
7743        });
7744        wrapper.addEventListener("mouseleave", (e) => {
7745            wrapper.classList.remove("show");
7746        });
7747        showDeleteSymbol(select);
7748        const values = Array.from(select.options).map((option) => option.value.trim().toUpperCase()).filter((value) => value !== "");
7749        const calendar = dateFieldContainer.querySelector(".calendar");
7750        if (!calendar)
7751            return;
7752        const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
7753        const year = calendar.querySelector(".year .value");
7754        const prev = calendar.querySelector(".year .prev");
7755        const next = calendar.querySelector(".year .next");
7756        if (!year || !prev || !next)
7757            return;
7758        year.textContent = currentYear;
7759        const updateMonths = () => {
7760            getMonths(calendar, year.textContent, values, select);
7761        };
7762        prev.addEventListener("click", (e) => {
7763            e.preventDefault();
7764            const yearValue = parseInt(year.textContent);
7765            if (yearValue > currentYear) {
7766                year.textContent = yearValue - 1;
7767                updateMonths();
7768            }
7769        });
7770        next.addEventListener("click", (e) => {
7771            e.preventDefault();
7772            year.textContent = parseInt(year.textContent) + 1;
7773            updateMonths();
7774        });
7775        updateMonths();
7776    });
7777}
7778function getMonths(calendar, year, values, select) {
7779    const months = calendar.querySelectorAll(".months button");
7780    months.forEach((button) => {
7781        const value = `${button.getAttribute("data-month")}/${year}`;
7782        const isHighlighted = values.includes(value);
7783        button.classList.toggle("highlighted", isHighlighted);
7784        button.removeEventListener("click", handleMonthClick);
7785        button.addEventListener("click", handleMonthClick);
7786        function handleMonthClick(e) {
7787            e.preventDefault();
7788            if (isHighlighted) {
7789                select.value = value;
7790                showDeleteSymbol(select);
7791            }
7792        }
7793    });
7794}
7795function showDeleteSymbol(select) {
7796    if (select.value) {
7797        if (!document.querySelector(".delete-icon")) {
7798            const iconDelete = document.createElement("div");
7799            iconDelete.style.position = "absolute";
7800            iconDelete.classList.add("delete-icon");
7801            iconDelete.style.left = "100px";
7802            iconDelete.style.top = "50%";
7803            iconDelete.style.bottom = "50%";
7804            iconDelete.style.transform = "translate(-50%, -50%)";
7805            iconDelete.style.width = "10px";
7806            iconDelete.style.height = "10px";
7807            iconDelete.style.cursor = "pointer";
7808            iconDelete.style.backgroundImage = `url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMTAiIHkyPSIxMCIgc3Ryb2tlPSIjRTMwNjEzIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8bGluZSB4MT0iMCIgeTE9IjEwIiB4Mj0iMTAiIHkyPSIwIiBzdHJva2U9IiNFMzA2MTMiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=")`;
7809            iconDelete.style.backgroundRepeat = `no-repeat`;
7810            iconDelete.style.zIndex = "9";
7811            iconDelete.addEventListener("click", () => {
7812                select.value = "";
7813                iconDelete.remove();
7814            });
7815            select.closest(".form-date-container").appendChild(iconDelete);
7816        }
7817    }
7818}
7819function Dropdown2() {
7820    const triggerDropdown = document.querySelector(".dropdown");
7821    if (triggerDropdown) {
7822        const contentDropdown = document.querySelector(".dropdownContent");
7823        triggerDropdown.addEventListener("click", () => {
7824            triggerDropdown.classList.toggle("active");
7825            contentDropdown.classList.toggle("active");
7826            const contentDropdownActive = document.querySelector(".dropdownContent.active");
7827            const innerWidthDropdown = triggerDropdown.offsetWidth;
7828            if (contentDropdownActive) {
7829                contentDropdown.style.width = innerWidthDropdown + "px";
7830            }
7831        });
7832        const active = contentDropdown.querySelector("li a.is-active");
7833        if (active) {
7834            let html = active.textContent;
7835            let buttonPage = triggerDropdown.querySelector("span");
7836            buttonPage.textContent = html;
7837        }
7838    }
7839}
7840function Map$1() {
7841    let pathsSvg = document.querySelectorAll(".elHover");
7842    pathsSvg.forEach(function(path) {
7843        path.addEventListener("click", function() {
7844            const link = this.getAttribute("data-link");
7845            if (link) {
7846                window.open(link, "_blank");
7847            } else {
7848                console.warn("Aucun lien trouvé pour cet élément.");
7849            }
7850        });
7851    });
7852}
7853function adaptativeSize() {
7854    const parentChild = document.querySelector(".bg-main .news--slider");
7855    if (parentChild) {
7856        const newsSlider = document.querySelector(".news--slider");
7857        const bgMain = newsSlider.closest(".bg-main");
7858        bgMain.style.padding = "0";
7859    }
7860}
7861function InitGallery() {
7862    let gallerySplide = null;
7863    function initializeGallerySplide() {
7864        if (gallerySplide) {
7865            gallerySplide.destroy();
7866        }
7867        gallerySplide = new Splide(document.querySelector("#gallery-splide"), {
7868            pagination: true
7869        });
7870        gallerySplide.mount();
7871    }
7872    let galeries = document.querySelectorAll("a[data-gallery-id]");
7873    if (galeries.length > 0) {
7874        galeries.forEach((elem) => {
7875            elem.addEventListener("click", function(event) {
7876                event.preventDefault();
7877                let buttonModaleGalerie = document.querySelector("#modal-galerie-button");
7878                let modaleGalerie = document.getElementById("ModalGalerie");
7879                let gallerieId = this.getAttribute("data-gallery-id");
7880                let listOfPictures = document.getElementById(gallerieId).querySelectorAll("li");
7881                let html = "";
7882                Array.from(listOfPictures).forEach((e) => {
7883                    e.classList.add("splide__slide");
7884                    html += e.outerHTML;
7885                });
7886                modaleGalerie.querySelector("ul.splide__list").innerHTML = html;
7887                initializeGallerySplide();
7888                buttonModaleGalerie.click();
7889            });
7890        });
7891    }
7892}
7893function Init() {
7894    const modalButton = document.querySelector('.alerts--popin button[data-bs-toggle="modal"]');
7895    if (modalButton) {
7896        modalButton.click();
7897    }
7898    InitGallery();
7899    const alertModal = document.getElementById("alert-modal");
7900    if (alertModal) {
7901        alertModal.addEventListener("shown.bs.modal", function() {
7902            document.body.style.overflow = "hidden";
7903        });
7904        alertModal.addEventListener("hidden.bs.modal", function() {
7905            document.body.style.overflow = "auto";
7906        });
7907    }
7908}
7909function animArrows() {
7910    let arrowsToAnimate = document.querySelectorAll(".icon-arrow-animated.anim-long-bar");
7911    const isMobile = window.matchMedia("(max-width: 768px)").matches;
7912    if (arrowsToAnimate.length > 0 && !isMobile) {
7913        arrowsToAnimate.forEach((arrow2) => {
7914            let svg = arrow2;
7915            let path = arrow2.querySelector("path");
7916            let firstValue = 19;
7917            let secondValue = 39;
7918            let classReference = "hovered";
7919            let target = null;
7920            if (arrow2.closest(".element")) {
7921                target = arrow2.closest(".element");
7922            } else {
7923                target = arrow2;
7924            }
7925            target.addEventListener("mouseenter", () => {
7926                if (!arrow2.classList.contains(classReference)) {
7927                    changeSVGViewBox(svg, secondValue);
7928                    changeSVGWidth(svg, secondValue);
7929                    changeSVGPath(path, secondValue);
7930                    arrow2.classList.add(classReference);
7931                }
7932            });
7933            target.addEventListener("mouseleave", () => {
7934                if (arrow2.classList.contains(classReference)) {
7935                    changeSVGPath(path, firstValue);
7936                    changeSVGViewBox(svg, firstValue);
7937                    changeSVGWidth(svg, firstValue);
7938                    arrow2.classList.remove(classReference);
7939                }
7940            });
7941        });
7942    }
7943}
7944function changeSVGPath(path, newValue) {
7945    let d = path.getAttribute("d").split(" ");
7946    d.splice(0, 1, `M${newValue}`);
7947    path.setAttribute("d", d.join(" "));
7948}
7949function changeSVGWidth(svg, newValue) {
7950    svg.setAttribute("width", newValue);
7951}
7952function changeSVGViewBox(svg, newValue) {
7953    let viewbox = svg.getAttribute("viewBox").split(" ");
7954    viewbox.splice(2, 1, newValue);
7955    svg.setAttribute("viewBox", viewbox.join(" "));
7956}
7957function form() {
7958    let form2 = document.querySelector("form");
7959    let inputs = [];
7960    let textInputs = form2.querySelectorAll("input[type='text']");
7961    let emailInputs = form2.querySelectorAll("input[type='email']");
7962    let textareas = form2.querySelectorAll("textarea");
7963    if (form2) {
7964        inputs = [...textInputs, ...emailInputs, ...textareas];
7965        const logicLabel = (input) => {
7966            let classInputReference = "written";
7967            if (input.value.length > 0 && !input.classList.contains(classInputReference)) {
7968                input.classList.add(classInputReference);
7969            }
7970            if (input.value.length == 0) {
7971                input.classList.remove(classInputReference);
7972            }
7973        };
7974        if (inputs.length > 0) {
7975            inputs.forEach((input) => {
7976                input.addEventListener("keyup", function() {
7977                    logicLabel(input);
7978                });
7979            });
7980        }
7981    }
7982}
7983function SelectPickerCustom() {
7984    const selectFieldContainers = document.querySelectorAll(".form-select-container");
7985    selectFieldContainers.forEach((selectFieldContainer) => {
7986        const select = selectFieldContainer.querySelector("select");
7987        let wrapper = select.closest(".form-select-container");
7988        if (!select)
7989            return;
7990        select.addEventListener("mousedown", (e) => {
7991            e.preventDefault();
7992            if (wrapper.classList.contains("show")) {
7993                wrapper.classList.remove("show");
7994            } else {
7995                wrapper.classList.add("show");
7996            }
7997        });
7998        wrapper.addEventListener("mouseleave", (e) => {
7999            wrapper.classList.remove("show");
8000        });
8001        Array.from(select.options).map((option) => option.value.trim().toUpperCase()).filter((value) => value !== "");
8002        const buttons = selectFieldContainer.querySelectorAll(".options button");
8003        buttons.forEach((button) => {
8004            const value = `${button.getAttribute("data-value")}`;
8005            button.removeEventListener("click", handleMonthClick);
8006            button.addEventListener("click", handleMonthClick);
8007            function handleMonthClick(e) {
8008                e.preventDefault();
8009                select.value = value;
8010                wrapper.classList.remove("show");
8011            }
8012        });
8013    });
8014}
8015function EventsMenu() {
8016    const header = document.querySelector("header");
8017    const isMobile = window.matchMedia("(max-width: 768px)").matches;
8018    const menu = header.querySelector("nav > ul");
8019    const itemsWithSub = menu.querySelectorAll(":scope > li:has(ul)");
8020    if (!isMobile) {
8021        let closeAllSubmenus2 = function() {
8022            itemsWithSub.forEach((item) => {
8023                const submenu = item.querySelector(".menu--sub");
8024                if (submenu)
8025                    submenu.classList.remove("visible");
8026            });
8027        };
8028        var closeAllSubmenus = closeAllSubmenus2;
8029        let usingKeyboard = false;
8030        document.addEventListener("keydown", (event) => {
8031            if (event.key === "Tab") {
8032                usingKeyboard = true;
8033            }
8034        });
8035        document.addEventListener("mousedown", () => {
8036            usingKeyboard = false;
8037        });
8038        itemsWithSub.forEach((item) => {
8039            const submenu = item.querySelector(".menu--sub");
8040            if (!submenu)
8041                return;
8042            item.addEventListener("mouseover", () => {
8043                closeAllSubmenus2();
8044                submenu.classList.add("visible");
8045            });
8046            item.addEventListener("focusin", () => {
8047                closeAllSubmenus2();
8048                submenu.classList.add("visible");
8049            });
8050            item.addEventListener("mouseout", (event) => {
8051                if (!item.contains(event.relatedTarget)) {
8052                    submenu.classList.remove("visible");
8053                }
8054            });
8055            item.addEventListener("focusout", (event) => {
8056                if (usingKeyboard && !item.contains(event.relatedTarget)) {
8057                    submenu.classList.remove("visible");
8058                }
8059            });
8060        });
8061    } else {
8062        itemsWithSub.forEach((item) => {
8063            const submenu = item.querySelector(".menu--sub");
8064            if (!submenu)
8065                return;
8066            const trigger = item.querySelector("svg.icon-chevron");
8067            if (!trigger)
8068                return;
8069            trigger.addEventListener("click", () => {
8070                submenu.classList.toggle("visible");
8071                item.classList.toggle("is-open");
8072            });
8073        });
8074    }
8075}
8076document.addEventListener("DOMContentLoaded", function() {
8077    Carousel2();
8078    MenuMobile();
8079    EventModal();
8080    DatePickerCustom();
8081    Dropdown2();
8082    Map$1();
8083    adaptativeSize();
8084    animArrows();
8085    form();
8086    Init();
8087    SelectPickerCustom();
8088    EventsMenu();
8089});
8090window.addEventListener("pageshow", function(event) {
8091    const historyTraversal = event.persisted || typeof window.performance != "undefined" && window.performance.navigation.type === 2;
8092    if (historyTraversal) {
8093        window.location.reload();
8094    }
8095});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.