(() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { try { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; } catch (e) { throw mod = 0, e; } }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // node_modules/toastify-js/src/toastify.js var require_toastify = __commonJS({ "node_modules/toastify-js/src/toastify.js"(exports, module) { (function(root, factory) { if (typeof module === "object" && module.exports) { module.exports = factory(); } else { root.Toastify = factory(); } })(exports, function(global) { var Toastify2 = function(options) { return new Toastify2.lib.init(options); }, version = "1.12.0"; Toastify2.defaults = { oldestFirst: true, text: "Toastify is awesome!", node: void 0, duration: 3e3, selector: void 0, callback: function() { }, destination: void 0, newWindow: false, close: false, gravity: "toastify-top", positionLeft: false, position: "", backgroundColor: "", avatar: "", className: "", stopOnFocus: true, onClick: function() { }, offset: { x: 0, y: 0 }, escapeMarkup: true, ariaLive: "polite", style: { background: "" } }; Toastify2.lib = Toastify2.prototype = { toastify: version, constructor: Toastify2, // Initializing the object with required parameters init: function(options) { if (!options) { options = {}; } this.options = {}; this.toastElement = null; this.options.text = options.text || Toastify2.defaults.text; this.options.node = options.node || Toastify2.defaults.node; this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify2.defaults.duration; this.options.selector = options.selector || Toastify2.defaults.selector; this.options.callback = options.callback || Toastify2.defaults.callback; this.options.destination = options.destination || Toastify2.defaults.destination; this.options.newWindow = options.newWindow || Toastify2.defaults.newWindow; this.options.close = options.close || Toastify2.defaults.close; this.options.gravity = options.gravity === "bottom" ? "toastify-bottom" : Toastify2.defaults.gravity; this.options.positionLeft = options.positionLeft || Toastify2.defaults.positionLeft; this.options.position = options.position || Toastify2.defaults.position; this.options.backgroundColor = options.backgroundColor || Toastify2.defaults.backgroundColor; this.options.avatar = options.avatar || Toastify2.defaults.avatar; this.options.className = options.className || Toastify2.defaults.className; this.options.stopOnFocus = options.stopOnFocus === void 0 ? Toastify2.defaults.stopOnFocus : options.stopOnFocus; this.options.onClick = options.onClick || Toastify2.defaults.onClick; this.options.offset = options.offset || Toastify2.defaults.offset; this.options.escapeMarkup = options.escapeMarkup !== void 0 ? options.escapeMarkup : Toastify2.defaults.escapeMarkup; this.options.ariaLive = options.ariaLive || Toastify2.defaults.ariaLive; this.options.style = options.style || Toastify2.defaults.style; if (options.backgroundColor) { this.options.style.background = options.backgroundColor; } return this; }, // Building the DOM element buildToast: function() { if (!this.options) { throw "Toastify is not initialized"; } var divElement = document.createElement("div"); divElement.className = "toastify on " + this.options.className; if (!!this.options.position) { divElement.className += " toastify-" + this.options.position; } else { if (this.options.positionLeft === true) { divElement.className += " toastify-left"; console.warn("Property `positionLeft` will be depreciated in further versions. Please use `position` instead."); } else { divElement.className += " toastify-right"; } } divElement.className += " " + this.options.gravity; if (this.options.backgroundColor) { console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.'); } for (var property in this.options.style) { divElement.style[property] = this.options.style[property]; } if (this.options.ariaLive) { divElement.setAttribute("aria-live", this.options.ariaLive); } if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) { divElement.appendChild(this.options.node); } else { if (this.options.escapeMarkup) { divElement.innerText = this.options.text; } else { divElement.innerHTML = this.options.text; } if (this.options.avatar !== "") { var avatarElement = document.createElement("img"); avatarElement.src = this.options.avatar; avatarElement.className = "toastify-avatar"; if (this.options.position == "left" || this.options.positionLeft === true) { divElement.appendChild(avatarElement); } else { divElement.insertAdjacentElement("afterbegin", avatarElement); } } } if (this.options.close === true) { var closeElement = document.createElement("button"); closeElement.type = "button"; closeElement.setAttribute("aria-label", "Close"); closeElement.className = "toast-close"; closeElement.innerHTML = "✖"; closeElement.addEventListener( "click", function(event) { event.stopPropagation(); this.removeElement(this.toastElement); window.clearTimeout(this.toastElement.timeOutValue); }.bind(this) ); var width = window.innerWidth > 0 ? window.innerWidth : screen.width; if ((this.options.position == "left" || this.options.positionLeft === true) && width > 360) { divElement.insertAdjacentElement("afterbegin", closeElement); } else { divElement.appendChild(closeElement); } } if (this.options.stopOnFocus && this.options.duration > 0) { var self = this; divElement.addEventListener( "mouseover", function(event) { window.clearTimeout(divElement.timeOutValue); } ); divElement.addEventListener( "mouseleave", function() { divElement.timeOutValue = window.setTimeout( function() { self.removeElement(divElement); }, self.options.duration ); } ); } if (typeof this.options.destination !== "undefined") { divElement.addEventListener( "click", function(event) { event.stopPropagation(); if (this.options.newWindow === true) { window.open(this.options.destination, "_blank"); } else { window.location = this.options.destination; } }.bind(this) ); } if (typeof this.options.onClick === "function" && typeof this.options.destination === "undefined") { divElement.addEventListener( "click", function(event) { event.stopPropagation(); this.options.onClick(); }.bind(this) ); } if (typeof this.options.offset === "object") { var x = getAxisOffsetAValue("x", this.options); var y = getAxisOffsetAValue("y", this.options); var xOffset = this.options.position == "left" ? x : "-" + x; var yOffset = this.options.gravity == "toastify-top" ? y : "-" + y; divElement.style.transform = "translate(" + xOffset + "," + yOffset + ")"; } return divElement; }, // Displaying the toast showToast: function() { this.toastElement = this.buildToast(); var rootElement; if (typeof this.options.selector === "string") { rootElement = document.getElementById(this.options.selector); } else if (this.options.selector instanceof HTMLElement || typeof ShadowRoot !== "undefined" && this.options.selector instanceof ShadowRoot) { rootElement = this.options.selector; } else { rootElement = document.body; } if (!rootElement) { throw "Root element is not defined"; } var elementToInsert = Toastify2.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild; rootElement.insertBefore(this.toastElement, elementToInsert); Toastify2.reposition(); if (this.options.duration > 0) { this.toastElement.timeOutValue = window.setTimeout( function() { this.removeElement(this.toastElement); }.bind(this), this.options.duration ); } return this; }, hideToast: function() { if (this.toastElement.timeOutValue) { clearTimeout(this.toastElement.timeOutValue); } this.removeElement(this.toastElement); }, // Removing the element from the DOM removeElement: function(toastElement) { toastElement.className = toastElement.className.replace(" on", ""); window.setTimeout( function() { if (this.options.node && this.options.node.parentNode) { this.options.node.parentNode.removeChild(this.options.node); } if (toastElement.parentNode) { toastElement.parentNode.removeChild(toastElement); } this.options.callback.call(toastElement); Toastify2.reposition(); }.bind(this), 400 ); } }; Toastify2.reposition = function() { var topLeftOffsetSize = { top: 15, bottom: 15 }; var topRightOffsetSize = { top: 15, bottom: 15 }; var offsetSize = { top: 15, bottom: 15 }; var allToasts = document.getElementsByClassName("toastify"); var classUsed; for (var i = 0; i < allToasts.length; i++) { if (containsClass(allToasts[i], "toastify-top") === true) { classUsed = "toastify-top"; } else { classUsed = "toastify-bottom"; } var height = allToasts[i].offsetHeight; classUsed = classUsed.substr(9, classUsed.length - 1); var offset2 = 15; var width = window.innerWidth > 0 ? window.innerWidth : screen.width; if (width <= 360) { allToasts[i].style[classUsed] = offsetSize[classUsed] + "px"; offsetSize[classUsed] += height + offset2; } else { if (containsClass(allToasts[i], "toastify-left") === true) { allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + "px"; topLeftOffsetSize[classUsed] += height + offset2; } else { allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + "px"; topRightOffsetSize[classUsed] += height + offset2; } } } return this; }; function getAxisOffsetAValue(axis, options) { if (options.offset[axis]) { if (isNaN(options.offset[axis])) { return options.offset[axis]; } else { return options.offset[axis] + "px"; } } return "0px"; } function containsClass(elem, yourClass) { if (!elem || typeof yourClass !== "string") { return false; } else if (elem.className && elem.className.trim().split(/\s+/gi).indexOf(yourClass) > -1) { return true; } else { return false; } } Toastify2.lib.init.prototype = Toastify2.lib; return Toastify2; }); } }); // node_modules/@popperjs/core/lib/index.js var lib_exports = {}; __export(lib_exports, { afterMain: () => afterMain, afterRead: () => afterRead, afterWrite: () => afterWrite, applyStyles: () => applyStyles_default, arrow: () => arrow_default, auto: () => auto, basePlacements: () => basePlacements, beforeMain: () => beforeMain, beforeRead: () => beforeRead, beforeWrite: () => beforeWrite, bottom: () => bottom, clippingParents: () => clippingParents, computeStyles: () => computeStyles_default, createPopper: () => createPopper3, createPopperBase: () => createPopper, createPopperLite: () => createPopper2, detectOverflow: () => detectOverflow, end: () => end, eventListeners: () => eventListeners_default, flip: () => flip_default, hide: () => hide_default, left: () => left, main: () => main, modifierPhases: () => modifierPhases, offset: () => offset_default, placements: () => placements, popper: () => popper, popperGenerator: () => popperGenerator, popperOffsets: () => popperOffsets_default, preventOverflow: () => preventOverflow_default, read: () => read, reference: () => reference, right: () => right, start: () => start, top: () => top, variationPlacements: () => variationPlacements, viewport: () => viewport, write: () => write }); // node_modules/@popperjs/core/lib/enums.js var top = "top"; var bottom = "bottom"; var right = "right"; var left = "left"; var auto = "auto"; var basePlacements = [top, bottom, right, left]; var start = "start"; var end = "end"; var clippingParents = "clippingParents"; var viewport = "viewport"; var popper = "popper"; var reference = "reference"; var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { return acc.concat([placement + "-" + start, placement + "-" + end]); }, []); var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { return acc.concat([placement, placement + "-" + start, placement + "-" + end]); }, []); var beforeRead = "beforeRead"; var read = "read"; var afterRead = "afterRead"; var beforeMain = "beforeMain"; var main = "main"; var afterMain = "afterMain"; var beforeWrite = "beforeWrite"; var write = "write"; var afterWrite = "afterWrite"; var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; // node_modules/@popperjs/core/lib/dom-utils/getNodeName.js function getNodeName(element) { return element ? (element.nodeName || "").toLowerCase() : null; } // node_modules/@popperjs/core/lib/dom-utils/getWindow.js function getWindow(node) { if (node == null) { return window; } if (node.toString() !== "[object Window]") { var ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; } return node; } // node_modules/@popperjs/core/lib/dom-utils/instanceOf.js function isElement(node) { var OwnElement = getWindow(node).Element; return node instanceof OwnElement || node instanceof Element; } function isHTMLElement(node) { var OwnElement = getWindow(node).HTMLElement; return node instanceof OwnElement || node instanceof HTMLElement; } function isShadowRoot(node) { if (typeof ShadowRoot === "undefined") { return false; } var OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } // node_modules/@popperjs/core/lib/modifiers/applyStyles.js function applyStyles(_ref) { var state = _ref.state; Object.keys(state.elements).forEach(function(name) { var style2 = state.styles[name] || {}; var attributes = state.attributes[name] || {}; var element = state.elements[name]; if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style2); Object.keys(attributes).forEach(function(name2) { var value = attributes[name2]; if (value === false) { element.removeAttribute(name2); } else { element.setAttribute(name2, value === true ? "" : value); } }); }); } function effect(_ref2) { var state = _ref2.state; var initialStyles = { popper: { position: state.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); state.styles = initialStyles; if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); } return function() { Object.keys(state.elements).forEach(function(name) { var element = state.elements[name]; var attributes = state.attributes[name] || {}; var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); var style2 = styleProperties.reduce(function(style3, property) { style3[property] = ""; return style3; }, {}); if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style2); Object.keys(attributes).forEach(function(attribute) { element.removeAttribute(attribute); }); }); }; } var applyStyles_default = { name: "applyStyles", enabled: true, phase: "write", fn: applyStyles, effect, requires: ["computeStyles"] }; // node_modules/@popperjs/core/lib/utils/getBasePlacement.js function getBasePlacement(placement) { return placement.split("-")[0]; } // node_modules/@popperjs/core/lib/utils/math.js var max = Math.max; var min = Math.min; var round = Math.round; // node_modules/@popperjs/core/lib/utils/userAgent.js function getUAString() { var uaData = navigator.userAgentData; if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { return uaData.brands.map(function(item) { return item.brand + "/" + item.version; }).join(" "); } return navigator.userAgent; } // node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js function isLayoutViewport() { return !/^((?!chrome|android).)*safari/i.test(getUAString()); } // node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js function getBoundingClientRect(element, includeScale, isFixedStrategy) { if (includeScale === void 0) { includeScale = false; } if (isFixedStrategy === void 0) { isFixedStrategy = false; } var clientRect = element.getBoundingClientRect(); var scaleX = 1; var scaleY = 1; if (includeScale && isHTMLElement(element)) { scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; } var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport; var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; var width = clientRect.width / scaleX; var height = clientRect.height / scaleY; return { width, height, top: y, right: x + width, bottom: y + height, left: x, x, y }; } // node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js function getLayoutRect(element) { var clientRect = getBoundingClientRect(element); var width = element.offsetWidth; var height = element.offsetHeight; if (Math.abs(clientRect.width - width) <= 1) { width = clientRect.width; } if (Math.abs(clientRect.height - height) <= 1) { height = clientRect.height; } return { x: element.offsetLeft, y: element.offsetTop, width, height }; } // node_modules/@popperjs/core/lib/dom-utils/contains.js function contains(parent, child2) { var rootNode = child2.getRootNode && child2.getRootNode(); if (parent.contains(child2)) { return true; } else if (rootNode && isShadowRoot(rootNode)) { var next = child2; do { if (next && parent.isSameNode(next)) { return true; } next = next.parentNode || next.host; } while (next); } return false; } // node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js function getComputedStyle2(element) { return getWindow(element).getComputedStyle(element); } // node_modules/@popperjs/core/lib/dom-utils/isTableElement.js function isTableElement(element) { return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; } // node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js function getDocumentElement(element) { return ((isElement(element) ? element.ownerDocument : ( // $FlowFixMe[prop-missing] element.document )) || window.document).documentElement; } // node_modules/@popperjs/core/lib/dom-utils/getParentNode.js function getParentNode(element) { if (getNodeName(element) === "html") { return element; } return ( // this is a quicker (but less type safe) way to save quite some bytes from the bundle // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] element.assignedSlot || // step into the shadow DOM of the parent of a slotted node element.parentNode || // DOM Element detected (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected // $FlowFixMe[incompatible-call]: HTMLElement is a Node getDocumentElement(element) ); } // node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js function getTrueOffsetParent(element) { if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 getComputedStyle2(element).position === "fixed") { return null; } return element.offsetParent; } function getContainingBlock(element) { var isFirefox = /firefox/i.test(getUAString()); var isIE = /Trident/i.test(getUAString()); if (isIE && isHTMLElement(element)) { var elementCss = getComputedStyle2(element); if (elementCss.position === "fixed") { return null; } } var currentNode = getParentNode(element); if (isShadowRoot(currentNode)) { currentNode = currentNode.host; } while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle2(currentNode); if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { return currentNode; } else { currentNode = currentNode.parentNode; } } return null; } function getOffsetParent(element) { var window2 = getWindow(element); var offsetParent = getTrueOffsetParent(element); while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { offsetParent = getTrueOffsetParent(offsetParent); } if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { return window2; } return offsetParent || getContainingBlock(element) || window2; } // node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js function getMainAxisFromPlacement(placement) { return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; } // node_modules/@popperjs/core/lib/utils/within.js function within(min3, value, max3) { return max(min3, min(value, max3)); } function withinMaxClamp(min3, value, max3) { var v = within(min3, value, max3); return v > max3 ? max3 : v; } // node_modules/@popperjs/core/lib/utils/getFreshSideObject.js function getFreshSideObject() { return { top: 0, right: 0, bottom: 0, left: 0 }; } // node_modules/@popperjs/core/lib/utils/mergePaddingObject.js function mergePaddingObject(paddingObject) { return Object.assign({}, getFreshSideObject(), paddingObject); } // node_modules/@popperjs/core/lib/utils/expandToHashMap.js function expandToHashMap(value, keys) { return keys.reduce(function(hashMap, key) { hashMap[key] = value; return hashMap; }, {}); } // node_modules/@popperjs/core/lib/modifiers/arrow.js var toPaddingObject = function toPaddingObject2(padding, state) { padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding; return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); }; function arrow(_ref) { var _state$modifiersData$; var state = _ref.state, name = _ref.name, options = _ref.options; var arrowElement = state.elements.arrow; var popperOffsets2 = state.modifiersData.popperOffsets; var basePlacement = getBasePlacement(state.placement); var axis = getMainAxisFromPlacement(basePlacement); var isVertical = [left, right].indexOf(basePlacement) >= 0; var len = isVertical ? "height" : "width"; if (!arrowElement || !popperOffsets2) { return; } var paddingObject = toPaddingObject(options.padding, state); var arrowRect = getLayoutRect(arrowElement); var minProp = axis === "y" ? top : left; var maxProp = axis === "y" ? bottom : right; var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; var arrowOffsetParent = getOffsetParent(arrowElement); var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; var centerToReference = endDiff / 2 - startDiff / 2; var min3 = paddingObject[minProp]; var max3 = clientSize - arrowRect[len] - paddingObject[maxProp]; var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; var offset2 = within(min3, center, max3); var axisProp = axis; state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); } function effect2(_ref2) { var state = _ref2.state, options = _ref2.options; var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; if (arrowElement == null) { return; } if (typeof arrowElement === "string") { arrowElement = state.elements.popper.querySelector(arrowElement); if (!arrowElement) { return; } } if (!contains(state.elements.popper, arrowElement)) { return; } state.elements.arrow = arrowElement; } var arrow_default = { name: "arrow", enabled: true, phase: "main", fn: arrow, effect: effect2, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; // node_modules/@popperjs/core/lib/utils/getVariation.js function getVariation(placement) { return placement.split("-")[1]; } // node_modules/@popperjs/core/lib/modifiers/computeStyles.js var unsetSides = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function roundOffsetsByDPR(_ref, win) { var x = _ref.x, y = _ref.y; var dpr = win.devicePixelRatio || 1; return { x: round(x * dpr) / dpr || 0, y: round(y * dpr) / dpr || 0 }; } function mapToStyles(_ref2) { var _Object$assign2; var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y; var _ref3 = typeof roundOffsets === "function" ? roundOffsets({ x, y }) : { x, y }; x = _ref3.x; y = _ref3.y; var hasX = offsets.hasOwnProperty("x"); var hasY = offsets.hasOwnProperty("y"); var sideX = left; var sideY = top; var win = window; if (adaptive) { var offsetParent = getOffsetParent(popper2); var heightProp = "clientHeight"; var widthProp = "clientWidth"; if (offsetParent === getWindow(popper2)) { offsetParent = getDocumentElement(popper2); if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { heightProp = "scrollHeight"; widthProp = "scrollWidth"; } } offsetParent = offsetParent; if (placement === top || (placement === left || placement === right) && variation === end) { sideY = bottom; var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : ( // $FlowFixMe[prop-missing] offsetParent[heightProp] ); y -= offsetY - popperRect.height; y *= gpuAcceleration ? 1 : -1; } if (placement === left || (placement === top || placement === bottom) && variation === end) { sideX = right; var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : ( // $FlowFixMe[prop-missing] offsetParent[widthProp] ); x -= offsetX - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } var commonStyles = Object.assign({ position }, adaptive && unsetSides); var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ x, y }, getWindow(popper2)) : { x, y }; x = _ref4.x; y = _ref4.y; if (gpuAcceleration) { var _Object$assign; return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); } function computeStyles(_ref5) { var state = _ref5.state, options = _ref5.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; var commonStyles = { placement: getBasePlacement(state.placement), variation: getVariation(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, gpuAcceleration, isFixed: state.options.strategy === "fixed" }; if (state.modifiersData.popperOffsets != null) { state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.popperOffsets, position: state.options.strategy, adaptive, roundOffsets }))); } if (state.modifiersData.arrow != null) { state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.arrow, position: "absolute", adaptive: false, roundOffsets }))); } state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-placement": state.placement }); } var computeStyles_default = { name: "computeStyles", enabled: true, phase: "beforeWrite", fn: computeStyles, data: {} }; // node_modules/@popperjs/core/lib/modifiers/eventListeners.js var passive = { passive: true }; function effect3(_ref) { var state = _ref.state, instance = _ref.instance, options = _ref.options; var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; var window2 = getWindow(state.elements.popper); var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); if (scroll) { scrollParents.forEach(function(scrollParent) { scrollParent.addEventListener("scroll", instance.update, passive); }); } if (resize) { window2.addEventListener("resize", instance.update, passive); } return function() { if (scroll) { scrollParents.forEach(function(scrollParent) { scrollParent.removeEventListener("scroll", instance.update, passive); }); } if (resize) { window2.removeEventListener("resize", instance.update, passive); } }; } var eventListeners_default = { name: "eventListeners", enabled: true, phase: "write", fn: function fn() { }, effect: effect3, data: {} }; // node_modules/@popperjs/core/lib/utils/getOppositePlacement.js var hash = { left: "right", right: "left", bottom: "top", top: "bottom" }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, function(matched) { return hash[matched]; }); } // node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js var hash2 = { start: "end", end: "start" }; function getOppositeVariationPlacement(placement) { return placement.replace(/start|end/g, function(matched) { return hash2[matched]; }); } // node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js function getWindowScroll(node) { var win = getWindow(node); var scrollLeft = win.pageXOffset; var scrollTop = win.pageYOffset; return { scrollLeft, scrollTop }; } // node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js function getWindowScrollBarX(element) { return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } // node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js function getViewportRect(element, strategy) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x = 0; var y = 0; if (visualViewport) { width = visualViewport.width; height = visualViewport.height; var layoutViewport = isLayoutViewport(); if (layoutViewport || !layoutViewport && strategy === "fixed") { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } } return { width, height, x: x + getWindowScrollBarX(element), y }; } // node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js function getDocumentRect(element) { var _element$ownerDocumen; var html = getDocumentElement(element); var winScroll = getWindowScroll(element); var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); var x = -winScroll.scrollLeft + getWindowScrollBarX(element); var y = -winScroll.scrollTop; if (getComputedStyle2(body || html).direction === "rtl") { x += max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { width, height, x, y }; } // node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js function isScrollParent(element) { var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } // node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js function getScrollParent(node) { if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { return node.ownerDocument.body; } if (isHTMLElement(node) && isScrollParent(node)) { return node; } return getScrollParent(getParentNode(node)); } // node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js function listScrollParents(element, list) { var _element$ownerDocumen; if (list === void 0) { list = []; } var scrollParent = getScrollParent(element); var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); var win = getWindow(scrollParent); var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; var updatedList = list.concat(target); return isBody ? updatedList : ( // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here updatedList.concat(listScrollParents(getParentNode(target))) ); } // node_modules/@popperjs/core/lib/utils/rectToClientRect.js function rectToClientRect(rect2) { return Object.assign({}, rect2, { left: rect2.x, top: rect2.y, right: rect2.x + rect2.width, bottom: rect2.y + rect2.height }); } // node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js function getInnerBoundingClientRect(element, strategy) { var rect2 = getBoundingClientRect(element, false, strategy === "fixed"); rect2.top = rect2.top + element.clientTop; rect2.left = rect2.left + element.clientLeft; rect2.bottom = rect2.top + element.clientHeight; rect2.right = rect2.left + element.clientWidth; rect2.width = element.clientWidth; rect2.height = element.clientHeight; rect2.x = rect2.left; rect2.y = rect2.top; return rect2; } function getClientRectFromMixedType(element, clippingParent, strategy) { return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); } function getClippingParents(element) { var clippingParents2 = listScrollParents(getParentNode(element)); var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; if (!isElement(clipperElement)) { return []; } return clippingParents2.filter(function(clippingParent) { return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body"; }); } function getClippingRect(element, boundary, rootBoundary, strategy) { var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); var firstClippingParent = clippingParents2[0]; var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { var rect2 = getClientRectFromMixedType(element, clippingParent, strategy); accRect.top = max(rect2.top, accRect.top); accRect.right = min(rect2.right, accRect.right); accRect.bottom = min(rect2.bottom, accRect.bottom); accRect.left = max(rect2.left, accRect.left); return accRect; }, getClientRectFromMixedType(element, firstClippingParent, strategy)); clippingRect.width = clippingRect.right - clippingRect.left; clippingRect.height = clippingRect.bottom - clippingRect.top; clippingRect.x = clippingRect.left; clippingRect.y = clippingRect.top; return clippingRect; } // node_modules/@popperjs/core/lib/utils/computeOffsets.js function computeOffsets(_ref) { var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; var basePlacement = placement ? getBasePlacement(placement) : null; var variation = placement ? getVariation(placement) : null; var commonX = reference2.x + reference2.width / 2 - element.width / 2; var commonY = reference2.y + reference2.height / 2 - element.height / 2; var offsets; switch (basePlacement) { case top: offsets = { x: commonX, y: reference2.y - element.height }; break; case bottom: offsets = { x: commonX, y: reference2.y + reference2.height }; break; case right: offsets = { x: reference2.x + reference2.width, y: commonY }; break; case left: offsets = { x: reference2.x - element.width, y: commonY }; break; default: offsets = { x: reference2.x, y: reference2.y }; } var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; if (mainAxis != null) { var len = mainAxis === "y" ? "height" : "width"; switch (variation) { case start: offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); break; case end: offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); break; default: } } return offsets; } // node_modules/@popperjs/core/lib/utils/detectOverflow.js function detectOverflow(state, options) { if (options === void 0) { options = {}; } var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); var altContext = elementContext === popper ? reference : popper; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); var referenceClientRect = getBoundingClientRect(state.elements.reference); var popperOffsets2 = computeOffsets({ reference: referenceClientRect, element: popperRect, strategy: "absolute", placement }); var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; var overflowOffsets = { top: clippingClientRect.top - elementClientRect.top + paddingObject.top, bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, left: clippingClientRect.left - elementClientRect.left + paddingObject.left, right: elementClientRect.right - clippingClientRect.right + paddingObject.right }; var offsetData = state.modifiersData.offset; if (elementContext === popper && offsetData) { var offset2 = offsetData[placement]; Object.keys(overflowOffsets).forEach(function(key) { var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; overflowOffsets[key] += offset2[axis] * multiply; }); } return overflowOffsets; } // node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js function computeAutoPlacement(state, options) { if (options === void 0) { options = {}; } var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; var variation = getVariation(placement); var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { return getVariation(placement2) === variation; }) : basePlacements; var allowedPlacements = placements2.filter(function(placement2) { return allowedAutoPlacements.indexOf(placement2) >= 0; }); if (allowedPlacements.length === 0) { allowedPlacements = placements2; } var overflows = allowedPlacements.reduce(function(acc, placement2) { acc[placement2] = detectOverflow(state, { placement: placement2, boundary, rootBoundary, padding })[getBasePlacement(placement2)]; return acc; }, {}); return Object.keys(overflows).sort(function(a, b) { return overflows[a] - overflows[b]; }); } // node_modules/@popperjs/core/lib/modifiers/flip.js function getExpandedFallbackPlacements(placement) { if (getBasePlacement(placement) === auto) { return []; } var oppositePlacement = getOppositePlacement(placement); return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; } function flip(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; if (state.modifiersData[name]._skip) { return; } var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; var preferredPlacement = state.options.placement; var basePlacement = getBasePlacement(preferredPlacement); var isBasePlacement = basePlacement === preferredPlacement; var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { placement: placement2, boundary, rootBoundary, padding, flipVariations, allowedAutoPlacements }) : placement2); }, []); var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var checksMap = /* @__PURE__ */ new Map(); var makeFallbackChecks = true; var firstFittingPlacement = placements2[0]; for (var i = 0; i < placements2.length; i++) { var placement = placements2[i]; var _basePlacement = getBasePlacement(placement); var isStartVariation = getVariation(placement) === start; var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; var len = isVertical ? "width" : "height"; var overflow = detectOverflow(state, { placement, boundary, rootBoundary, altBoundary, padding }); var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; if (referenceRect[len] > popperRect[len]) { mainVariationSide = getOppositePlacement(mainVariationSide); } var altVariationSide = getOppositePlacement(mainVariationSide); var checks = []; if (checkMainAxis) { checks.push(overflow[_basePlacement] <= 0); } if (checkAltAxis) { checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); } if (checks.every(function(check) { return check; })) { firstFittingPlacement = placement; makeFallbackChecks = false; break; } checksMap.set(placement, checks); } if (makeFallbackChecks) { var numberOfChecks = flipVariations ? 3 : 1; var _loop = function _loop2(_i2) { var fittingPlacement = placements2.find(function(placement2) { var checks2 = checksMap.get(placement2); if (checks2) { return checks2.slice(0, _i2).every(function(check) { return check; }); } }); if (fittingPlacement) { firstFittingPlacement = fittingPlacement; return "break"; } }; for (var _i = numberOfChecks; _i > 0; _i--) { var _ret = _loop(_i); if (_ret === "break") break; } } if (state.placement !== firstFittingPlacement) { state.modifiersData[name]._skip = true; state.placement = firstFittingPlacement; state.reset = true; } } var flip_default = { name: "flip", enabled: true, phase: "main", fn: flip, requiresIfExists: ["offset"], data: { _skip: false } }; // node_modules/@popperjs/core/lib/modifiers/hide.js function getSideOffsets(overflow, rect2, preventedOffsets) { if (preventedOffsets === void 0) { preventedOffsets = { x: 0, y: 0 }; } return { top: overflow.top - rect2.height - preventedOffsets.y, right: overflow.right - rect2.width + preventedOffsets.x, bottom: overflow.bottom - rect2.height + preventedOffsets.y, left: overflow.left - rect2.width - preventedOffsets.x }; } function isAnySideFullyClipped(overflow) { return [top, right, bottom, left].some(function(side) { return overflow[side] >= 0; }); } function hide(_ref) { var state = _ref.state, name = _ref.name; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var preventedOffsets = state.modifiersData.preventOverflow; var referenceOverflow = detectOverflow(state, { elementContext: "reference" }); var popperAltOverflow = detectOverflow(state, { altBoundary: true }); var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); state.modifiersData[name] = { referenceClippingOffsets, popperEscapeOffsets, isReferenceHidden, hasPopperEscaped }; state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-reference-hidden": isReferenceHidden, "data-popper-escaped": hasPopperEscaped }); } var hide_default = { name: "hide", enabled: true, phase: "main", requiresIfExists: ["preventOverflow"], fn: hide }; // node_modules/@popperjs/core/lib/modifiers/offset.js function distanceAndSkiddingToXY(placement, rects, offset2) { var basePlacement = getBasePlacement(placement); var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { placement })) : offset2, skidding = _ref[0], distance = _ref[1]; skidding = skidding || 0; distance = (distance || 0) * invertDistance; return [left, right].indexOf(basePlacement) >= 0 ? { x: distance, y: skidding } : { x: skidding, y: distance }; } function offset(_ref2) { var state = _ref2.state, options = _ref2.options, name = _ref2.name; var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; var data = placements.reduce(function(acc, placement) { acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); return acc; }, {}); var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; if (state.modifiersData.popperOffsets != null) { state.modifiersData.popperOffsets.x += x; state.modifiersData.popperOffsets.y += y; } state.modifiersData[name] = data; } var offset_default = { name: "offset", enabled: true, phase: "main", requires: ["popperOffsets"], fn: offset }; // node_modules/@popperjs/core/lib/modifiers/popperOffsets.js function popperOffsets(_ref) { var state = _ref.state, name = _ref.name; state.modifiersData[name] = computeOffsets({ reference: state.rects.reference, element: state.rects.popper, strategy: "absolute", placement: state.placement }); } var popperOffsets_default = { name: "popperOffsets", enabled: true, phase: "read", fn: popperOffsets, data: {} }; // node_modules/@popperjs/core/lib/utils/getAltAxis.js function getAltAxis(axis) { return axis === "x" ? "y" : "x"; } // node_modules/@popperjs/core/lib/modifiers/preventOverflow.js function preventOverflow(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; var overflow = detectOverflow(state, { boundary, rootBoundary, padding, altBoundary }); var basePlacement = getBasePlacement(state.placement); var variation = getVariation(state.placement); var isBasePlacement = !variation; var mainAxis = getMainAxisFromPlacement(basePlacement); var altAxis = getAltAxis(mainAxis); var popperOffsets2 = state.modifiersData.popperOffsets; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset; var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { mainAxis: tetherOffsetValue, altAxis: tetherOffsetValue } : Object.assign({ mainAxis: 0, altAxis: 0 }, tetherOffsetValue); var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; var data = { x: 0, y: 0 }; if (!popperOffsets2) { return; } if (checkMainAxis) { var _offsetModifierState$; var mainSide = mainAxis === "y" ? top : left; var altSide = mainAxis === "y" ? bottom : right; var len = mainAxis === "y" ? "height" : "width"; var offset2 = popperOffsets2[mainAxis]; var min3 = offset2 + overflow[mainSide]; var max3 = offset2 - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start ? referenceRect[len] : popperRect[len]; var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; var arrowElement = state.elements.arrow; var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { width: 0, height: 0 }; var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); var arrowPaddingMin = arrowPaddingObject[mainSide]; var arrowPaddingMax = arrowPaddingObject[altSide]; var arrowLen = within(0, referenceRect[len], arrowRect[len]); var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; var tetherMax = offset2 + maxOffset - offsetModifierValue; var preventedOffset = within(tether ? min(min3, tetherMin) : min3, offset2, tether ? max(max3, tetherMax) : max3); popperOffsets2[mainAxis] = preventedOffset; data[mainAxis] = preventedOffset - offset2; } if (checkAltAxis) { var _offsetModifierState$2; var _mainSide = mainAxis === "x" ? top : left; var _altSide = mainAxis === "x" ? bottom : right; var _offset = popperOffsets2[altAxis]; var _len = altAxis === "y" ? "height" : "width"; var _min = _offset + overflow[_mainSide]; var _max = _offset - overflow[_altSide]; var isOriginSide = [top, left].indexOf(basePlacement) !== -1; var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); popperOffsets2[altAxis] = _preventedOffset; data[altAxis] = _preventedOffset - _offset; } state.modifiersData[name] = data; } var preventOverflow_default = { name: "preventOverflow", enabled: true, phase: "main", fn: preventOverflow, requiresIfExists: ["offset"] }; // node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js function getHTMLElementScroll(element) { return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; } // node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js function getNodeScroll(node) { if (node === getWindow(node) || !isHTMLElement(node)) { return getWindowScroll(node); } else { return getHTMLElementScroll(node); } } // node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js function isElementScaled(element) { var rect2 = element.getBoundingClientRect(); var scaleX = round(rect2.width) / element.offsetWidth || 1; var scaleY = round(rect2.height) / element.offsetHeight || 1; return scaleX !== 1 || scaleY !== 1; } function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { if (isFixed === void 0) { isFixed = false; } var isOffsetParentAnElement = isHTMLElement(offsetParent); var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); var documentElement = getDocumentElement(offsetParent); var rect2 = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); var scroll = { scrollLeft: 0, scrollTop: 0 }; var offsets = { x: 0, y: 0 }; if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 isScrollParent(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { offsets = getBoundingClientRect(offsetParent, true); offsets.x += offsetParent.clientLeft; offsets.y += offsetParent.clientTop; } else if (documentElement) { offsets.x = getWindowScrollBarX(documentElement); } } return { x: rect2.left + scroll.scrollLeft - offsets.x, y: rect2.top + scroll.scrollTop - offsets.y, width: rect2.width, height: rect2.height }; } // node_modules/@popperjs/core/lib/utils/orderModifiers.js function order(modifiers) { var map = /* @__PURE__ */ new Map(); var visited = /* @__PURE__ */ new Set(); var result = []; modifiers.forEach(function(modifier) { map.set(modifier.name, modifier); }); function sort(modifier) { visited.add(modifier.name); var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); requires.forEach(function(dep) { if (!visited.has(dep)) { var depModifier = map.get(dep); if (depModifier) { sort(depModifier); } } }); result.push(modifier); } modifiers.forEach(function(modifier) { if (!visited.has(modifier.name)) { sort(modifier); } }); return result; } function orderModifiers(modifiers) { var orderedModifiers = order(modifiers); return modifierPhases.reduce(function(acc, phase) { return acc.concat(orderedModifiers.filter(function(modifier) { return modifier.phase === phase; })); }, []); } // node_modules/@popperjs/core/lib/utils/debounce.js function debounce(fn2) { var pending; return function() { if (!pending) { pending = new Promise(function(resolve) { Promise.resolve().then(function() { pending = void 0; resolve(fn2()); }); }); } return pending; }; } // node_modules/@popperjs/core/lib/utils/mergeByName.js function mergeByName(modifiers) { var merged = modifiers.reduce(function(merged2, current) { var existing = merged2[current.name]; merged2[current.name] = existing ? Object.assign({}, existing, current, { options: Object.assign({}, existing.options, current.options), data: Object.assign({}, existing.data, current.data) }) : current; return merged2; }, {}); return Object.keys(merged).map(function(key) { return merged[key]; }); } // node_modules/@popperjs/core/lib/createPopper.js var DEFAULT_OPTIONS = { placement: "bottom", modifiers: [], strategy: "absolute" }; function areValidElements() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return !args.some(function(element) { return !(element && typeof element.getBoundingClientRect === "function"); }); } function popperGenerator(generatorOptions) { if (generatorOptions === void 0) { generatorOptions = {}; } var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers3 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; return function createPopper4(reference2, popper2, options) { if (options === void 0) { options = defaultOptions; } var state = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), modifiersData: {}, elements: { reference: reference2, popper: popper2 }, attributes: {}, styles: {} }; var effectCleanupFns = []; var isDestroyed = false; var instance = { state, setOptions: function setOptions(setOptionsAction) { var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; cleanupModifierEffects(); state.options = Object.assign({}, defaultOptions, state.options, options2); state.scrollParents = { reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], popper: listScrollParents(popper2) }; var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers3, state.options.modifiers))); state.orderedModifiers = orderedModifiers.filter(function(m) { return m.enabled; }); runModifierEffects(); return instance.update(); }, // Sync update – it will always be executed, even if not necessary. This // is useful for low frequency updates where sync behavior simplifies the // logic. // For high frequency updates (e.g. `resize` and `scroll` events), always // prefer the async Popper#update method forceUpdate: function forceUpdate() { if (isDestroyed) { return; } var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; if (!areValidElements(reference3, popper3)) { return; } state.rects = { reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), popper: getLayoutRect(popper3) }; state.reset = false; state.placement = state.options.placement; state.orderedModifiers.forEach(function(modifier) { return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); }); for (var index = 0; index < state.orderedModifiers.length; index++) { if (state.reset === true) { state.reset = false; index = -1; continue; } var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; if (typeof fn2 === "function") { state = fn2({ state, options: _options, name, instance }) || state; } } }, // Async and optimistically optimized update – it will not be executed if // not necessary (debounced to run at most once-per-tick) update: debounce(function() { return new Promise(function(resolve) { instance.forceUpdate(); resolve(state); }); }), destroy: function destroy() { cleanupModifierEffects(); isDestroyed = true; } }; if (!areValidElements(reference2, popper2)) { return instance; } instance.setOptions(options).then(function(state2) { if (!isDestroyed && options.onFirstUpdate) { options.onFirstUpdate(state2); } }); function runModifierEffects() { state.orderedModifiers.forEach(function(_ref) { var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect; if (typeof effect4 === "function") { var cleanupFn = effect4({ state, name, instance, options: options2 }); var noopFn = function noopFn2() { }; effectCleanupFns.push(cleanupFn || noopFn); } }); } function cleanupModifierEffects() { effectCleanupFns.forEach(function(fn2) { return fn2(); }); effectCleanupFns = []; } return instance; }; } var createPopper = /* @__PURE__ */ popperGenerator(); // node_modules/@popperjs/core/lib/popper-lite.js var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default]; var createPopper2 = /* @__PURE__ */ popperGenerator({ defaultModifiers }); // node_modules/@popperjs/core/lib/popper.js var defaultModifiers2 = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default]; var createPopper3 = /* @__PURE__ */ popperGenerator({ defaultModifiers: defaultModifiers2 }); // node_modules/bootstrap/dist/js/bootstrap.esm.js var elementMap = /* @__PURE__ */ new Map(); var Data = { set(element, key, instance) { if (!elementMap.has(element)) { elementMap.set(element, /* @__PURE__ */ new Map()); } const instanceMap = elementMap.get(element); if (!instanceMap.has(key) && instanceMap.size !== 0) { console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); return; } instanceMap.set(key, instance); }, get(element, key) { if (elementMap.has(element)) { return elementMap.get(element).get(key) || null; } return null; }, remove(element, key) { if (!elementMap.has(element)) { return; } const instanceMap = elementMap.get(element); instanceMap.delete(key); if (instanceMap.size === 0) { elementMap.delete(element); } } }; var MAX_UID = 1e6; var MILLISECONDS_MULTIPLIER = 1e3; var TRANSITION_END = "transitionend"; var parseSelector = (selector) => { if (selector && window.CSS && window.CSS.escape) { selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); } return selector; }; var toType = (object) => { if (object === null || object === void 0) { return `${object}`; } return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); }; var getUID = (prefix) => { do { prefix += Math.floor(Math.random() * MAX_UID); } while (document.getElementById(prefix)); return prefix; }; var getTransitionDurationFromElement = (element) => { if (!element) { return 0; } let { transitionDuration, transitionDelay } = window.getComputedStyle(element); const floatTransitionDuration = Number.parseFloat(transitionDuration); const floatTransitionDelay = Number.parseFloat(transitionDelay); if (!floatTransitionDuration && !floatTransitionDelay) { return 0; } transitionDuration = transitionDuration.split(",")[0]; transitionDelay = transitionDelay.split(",")[0]; return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; }; var triggerTransitionEnd = (element) => { element.dispatchEvent(new Event(TRANSITION_END)); }; var isElement2 = (object) => { if (!object || typeof object !== "object") { return false; } if (typeof object.jquery !== "undefined") { object = object[0]; } return typeof object.nodeType !== "undefined"; }; var getElement = (object) => { if (isElement2(object)) { return object.jquery ? object[0] : object; } if (typeof object === "string" && object.length > 0) { return document.querySelector(parseSelector(object)); } return null; }; var isVisible = (element) => { if (!isElement2(element) || element.getClientRects().length === 0) { return false; } const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; const closedDetails = element.closest("details:not([open])"); if (!closedDetails) { return elementIsVisible; } if (closedDetails !== element) { const summary = element.closest("summary"); if (summary && summary.parentNode !== closedDetails) { return false; } if (summary === null) { return false; } } return elementIsVisible; }; var isDisabled = (element) => { if (!element || element.nodeType !== Node.ELEMENT_NODE) { return true; } if (element.classList.contains("disabled")) { return true; } if (typeof element.disabled !== "undefined") { return element.disabled; } return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; }; var findShadowRoot = (element) => { if (!document.documentElement.attachShadow) { return null; } if (typeof element.getRootNode === "function") { const root = element.getRootNode(); return root instanceof ShadowRoot ? root : null; } if (element instanceof ShadowRoot) { return element; } if (!element.parentNode) { return null; } return findShadowRoot(element.parentNode); }; var noop = () => { }; var reflow = (element) => { element.offsetHeight; }; var getjQuery = () => { if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { return window.jQuery; } return null; }; var DOMContentLoadedCallbacks = []; var onDOMContentLoaded = (callback) => { if (document.readyState === "loading") { if (!DOMContentLoadedCallbacks.length) { document.addEventListener("DOMContentLoaded", () => { for (const callback2 of DOMContentLoadedCallbacks) { callback2(); } }); } DOMContentLoadedCallbacks.push(callback); } else { callback(); } }; var isRTL = () => document.documentElement.dir === "rtl"; var defineJQueryPlugin = (plugin) => { onDOMContentLoaded(() => { const $ = getjQuery(); if ($) { const name = plugin.NAME; const JQUERY_NO_CONFLICT = $.fn[name]; $.fn[name] = plugin.jQueryInterface; $.fn[name].Constructor = plugin; $.fn[name].noConflict = () => { $.fn[name] = JQUERY_NO_CONFLICT; return plugin.jQueryInterface; }; } }); }; var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; }; var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { if (!waitForTransition) { execute(callback); return; } const durationPadding = 5; const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; let called = false; const handler = ({ target }) => { if (target !== transitionElement) { return; } called = true; transitionElement.removeEventListener(TRANSITION_END, handler); execute(callback); }; transitionElement.addEventListener(TRANSITION_END, handler); setTimeout(() => { if (!called) { triggerTransitionEnd(transitionElement); } }, emulatedDuration); }; var getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { const listLength = list.length; let index = list.indexOf(activeElement); if (index === -1) { return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; } index += shouldGetNext ? 1 : -1; if (isCycleAllowed) { index = (index + listLength) % listLength; } return list[Math.max(0, Math.min(index, listLength - 1))]; }; var namespaceRegex = /[^.]*(?=\..*)\.|.*/; var stripNameRegex = /\..*/; var stripUidRegex = /::\d+$/; var eventRegistry = {}; var uidEvent = 1; var customEvents = { mouseenter: "mouseover", mouseleave: "mouseout" }; var nativeEvents = /* @__PURE__ */ new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]); function makeEventUid(element, uid) { return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; } function getElementEvents(element) { const uid = makeEventUid(element); element.uidEvent = uid; eventRegistry[uid] = eventRegistry[uid] || {}; return eventRegistry[uid]; } function bootstrapHandler(element, fn2) { return function handler(event) { hydrateObj(event, { delegateTarget: element }); if (handler.oneOff) { EventHandler.off(element, event.type, fn2); } return fn2.apply(element, [event]); }; } function bootstrapDelegationHandler(element, selector, fn2) { return function handler(event) { const domElements = element.querySelectorAll(selector); for (let { target } = event; target && target !== this; target = target.parentNode) { for (const domElement of domElements) { if (domElement !== target) { continue; } hydrateObj(event, { delegateTarget: target }); if (handler.oneOff) { EventHandler.off(element, event.type, selector, fn2); } return fn2.apply(target, [event]); } } }; } function findHandler(events, callable, delegationSelector = null) { return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); } function normalizeParameters(originalTypeEvent, handler, delegationFunction) { const isDelegated = typeof handler === "string"; const callable = isDelegated ? delegationFunction : handler || delegationFunction; let typeEvent = getTypeEvent(originalTypeEvent); if (!nativeEvents.has(typeEvent)) { typeEvent = originalTypeEvent; } return [isDelegated, callable, typeEvent]; } function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { if (typeof originalTypeEvent !== "string" || !element) { return; } let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); if (originalTypeEvent in customEvents) { const wrapFunction = (fn3) => { return function(event) { if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { return fn3.call(this, event); } }; }; callable = wrapFunction(callable); } const events = getElementEvents(element); const handlers = events[typeEvent] || (events[typeEvent] = {}); const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); if (previousFunction) { previousFunction.oneOff = previousFunction.oneOff && oneOff; return; } const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); const fn2 = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); fn2.delegationSelector = isDelegated ? handler : null; fn2.callable = callable; fn2.oneOff = oneOff; fn2.uidEvent = uid; handlers[uid] = fn2; element.addEventListener(typeEvent, fn2, isDelegated); } function removeHandler(element, events, typeEvent, handler, delegationSelector) { const fn2 = findHandler(events[typeEvent], handler, delegationSelector); if (!fn2) { return; } element.removeEventListener(typeEvent, fn2, Boolean(delegationSelector)); delete events[typeEvent][fn2.uidEvent]; } function removeNamespacedHandlers(element, events, typeEvent, namespace) { const storeElementEvent = events[typeEvent] || {}; for (const [handlerKey, event] of Object.entries(storeElementEvent)) { if (handlerKey.includes(namespace)) { removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); } } } function getTypeEvent(event) { event = event.replace(stripNameRegex, ""); return customEvents[event] || event; } var EventHandler = { on(element, event, handler, delegationFunction) { addHandler(element, event, handler, delegationFunction, false); }, one(element, event, handler, delegationFunction) { addHandler(element, event, handler, delegationFunction, true); }, off(element, originalTypeEvent, handler, delegationFunction) { if (typeof originalTypeEvent !== "string" || !element) { return; } const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); const inNamespace = typeEvent !== originalTypeEvent; const events = getElementEvents(element); const storeElementEvent = events[typeEvent] || {}; const isNamespace = originalTypeEvent.startsWith("."); if (typeof callable !== "undefined") { if (!Object.keys(storeElementEvent).length) { return; } removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); return; } if (isNamespace) { for (const elementEvent of Object.keys(events)) { removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); } } for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { const handlerKey = keyHandlers.replace(stripUidRegex, ""); if (!inNamespace || originalTypeEvent.includes(handlerKey)) { removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); } } }, trigger(element, event, args) { if (typeof event !== "string" || !element) { return null; } const $ = getjQuery(); const typeEvent = getTypeEvent(event); const inNamespace = event !== typeEvent; let jQueryEvent = null; let bubbles = true; let nativeDispatch = true; let defaultPrevented = false; if (inNamespace && $) { jQueryEvent = $.Event(event, args); $(element).trigger(jQueryEvent); bubbles = !jQueryEvent.isPropagationStopped(); nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); defaultPrevented = jQueryEvent.isDefaultPrevented(); } const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); if (defaultPrevented) { evt.preventDefault(); } if (nativeDispatch) { element.dispatchEvent(evt); } if (evt.defaultPrevented && jQueryEvent) { jQueryEvent.preventDefault(); } return evt; } }; function hydrateObj(obj, meta = {}) { for (const [key, value] of Object.entries(meta)) { try { obj[key] = value; } catch (_unused) { Object.defineProperty(obj, key, { configurable: true, get() { return value; } }); } } return obj; } function normalizeData(value) { if (value === "true") { return true; } if (value === "false") { return false; } if (value === Number(value).toString()) { return Number(value); } if (value === "" || value === "null") { return null; } if (typeof value !== "string") { return value; } try { return JSON.parse(decodeURIComponent(value)); } catch (_unused) { return value; } } function normalizeDataKey(key) { return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); } var Manipulator = { setDataAttribute(element, key, value) { element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); }, removeDataAttribute(element, key) { element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); }, getDataAttributes(element) { if (!element) { return {}; } const attributes = {}; const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); for (const key of bsKeys) { let pureKey = key.replace(/^bs/, ""); pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); attributes[pureKey] = normalizeData(element.dataset[key]); } return attributes; }, getDataAttribute(element, key) { return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); } }; var Config = class { // Getters static get Default() { return {}; } static get DefaultType() { return {}; } static get NAME() { throw new Error('You have to implement the static method "NAME", for each component!'); } _getConfig(config) { config = this._mergeConfigObj(config); config = this._configAfterMerge(config); this._typeCheckConfig(config); return config; } _configAfterMerge(config) { return config; } _mergeConfigObj(config, element) { const jsonConfig = isElement2(element) ? Manipulator.getDataAttribute(element, "config") : {}; return { ...this.constructor.Default, ...typeof jsonConfig === "object" ? jsonConfig : {}, ...isElement2(element) ? Manipulator.getDataAttributes(element) : {}, ...typeof config === "object" ? config : {} }; } _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { for (const [property, expectedTypes] of Object.entries(configTypes)) { const value = config[property]; const valueType = isElement2(value) ? "element" : toType(value); if (!new RegExp(expectedTypes).test(valueType)) { throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); } } } }; var VERSION = "5.3.8"; var BaseComponent = class extends Config { constructor(element, config) { super(); element = getElement(element); if (!element) { return; } this._element = element; this._config = this._getConfig(config); Data.set(this._element, this.constructor.DATA_KEY, this); } // Public dispose() { Data.remove(this._element, this.constructor.DATA_KEY); EventHandler.off(this._element, this.constructor.EVENT_KEY); for (const propertyName of Object.getOwnPropertyNames(this)) { this[propertyName] = null; } } // Private _queueCallback(callback, element, isAnimated = true) { executeAfterTransition(callback, element, isAnimated); } _getConfig(config) { config = this._mergeConfigObj(config, this._element); config = this._configAfterMerge(config); this._typeCheckConfig(config); return config; } // Static static getInstance(element) { return Data.get(getElement(element), this.DATA_KEY); } static getOrCreateInstance(element, config = {}) { return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); } static get VERSION() { return VERSION; } static get DATA_KEY() { return `bs.${this.NAME}`; } static get EVENT_KEY() { return `.${this.DATA_KEY}`; } static eventName(name) { return `${name}${this.EVENT_KEY}`; } }; var getSelector = (element) => { let selector = element.getAttribute("data-bs-target"); if (!selector || selector === "#") { let hrefAttribute = element.getAttribute("href"); if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { return null; } if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { hrefAttribute = `#${hrefAttribute.split("#")[1]}`; } selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; } return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null; }; var SelectorEngine = { find(selector, element = document.documentElement) { return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); }, findOne(selector, element = document.documentElement) { return Element.prototype.querySelector.call(element, selector); }, children(element, selector) { return [].concat(...element.children).filter((child2) => child2.matches(selector)); }, parents(element, selector) { const parents = []; let ancestor = element.parentNode.closest(selector); while (ancestor) { parents.push(ancestor); ancestor = ancestor.parentNode.closest(selector); } return parents; }, prev(element, selector) { let previous = element.previousElementSibling; while (previous) { if (previous.matches(selector)) { return [previous]; } previous = previous.previousElementSibling; } return []; }, // TODO: this is now unused; remove later along with prev() next(element, selector) { let next = element.nextElementSibling; while (next) { if (next.matches(selector)) { return [next]; } next = next.nextElementSibling; } return []; }, focusableChildren(element) { const focusables = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); }, getSelectorFromElement(element) { const selector = getSelector(element); if (selector) { return SelectorEngine.findOne(selector) ? selector : null; } return null; }, getElementFromSelector(element) { const selector = getSelector(element); return selector ? SelectorEngine.findOne(selector) : null; }, getMultipleElementsFromSelector(element) { const selector = getSelector(element); return selector ? SelectorEngine.find(selector) : []; } }; var enableDismissTrigger = (component, method = "hide") => { const clickEvent = `click.dismiss${component.EVENT_KEY}`; const name = component.NAME; EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) { if (["A", "AREA"].includes(this.tagName)) { event.preventDefault(); } if (isDisabled(this)) { return; } const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); const instance = component.getOrCreateInstance(target); instance[method](); }); }; var NAME$f = "alert"; var DATA_KEY$a = "bs.alert"; var EVENT_KEY$b = `.${DATA_KEY$a}`; var EVENT_CLOSE = `close${EVENT_KEY$b}`; var EVENT_CLOSED = `closed${EVENT_KEY$b}`; var CLASS_NAME_FADE$5 = "fade"; var CLASS_NAME_SHOW$8 = "show"; var Alert = class _Alert extends BaseComponent { // Getters static get NAME() { return NAME$f; } // Public close() { const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); if (closeEvent.defaultPrevented) { return; } this._element.classList.remove(CLASS_NAME_SHOW$8); const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); this._queueCallback(() => this._destroyElement(), this._element, isAnimated); } // Private _destroyElement() { this._element.remove(); EventHandler.trigger(this._element, EVENT_CLOSED); this.dispose(); } // Static static jQueryInterface(config) { return this.each(function() { const data = _Alert.getOrCreateInstance(this); if (typeof config !== "string") { return; } if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { throw new TypeError(`No method named "${config}"`); } data[config](this); }); } }; enableDismissTrigger(Alert, "close"); defineJQueryPlugin(Alert); var NAME$e = "button"; var DATA_KEY$9 = "bs.button"; var EVENT_KEY$a = `.${DATA_KEY$9}`; var DATA_API_KEY$6 = ".data-api"; var CLASS_NAME_ACTIVE$3 = "active"; var SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; var EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; var Button = class _Button extends BaseComponent { // Getters static get NAME() { return NAME$e; } // Public toggle() { this._element.setAttribute("aria-pressed", this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); } // Static static jQueryInterface(config) { return this.each(function() { const data = _Button.getOrCreateInstance(this); if (config === "toggle") { data[config](); } }); } }; EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event) => { event.preventDefault(); const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); const data = Button.getOrCreateInstance(button); data.toggle(); }); defineJQueryPlugin(Button); var NAME$d = "swipe"; var EVENT_KEY$9 = ".bs.swipe"; var EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; var EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; var EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; var EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; var EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; var POINTER_TYPE_TOUCH = "touch"; var POINTER_TYPE_PEN = "pen"; var CLASS_NAME_POINTER_EVENT = "pointer-event"; var SWIPE_THRESHOLD = 40; var Default$c = { endCallback: null, leftCallback: null, rightCallback: null }; var DefaultType$c = { endCallback: "(function|null)", leftCallback: "(function|null)", rightCallback: "(function|null)" }; var Swipe = class _Swipe extends Config { constructor(element, config) { super(); this._element = element; if (!element || !_Swipe.isSupported()) { return; } this._config = this._getConfig(config); this._deltaX = 0; this._supportPointerEvents = Boolean(window.PointerEvent); this._initEvents(); } // Getters static get Default() { return Default$c; } static get DefaultType() { return DefaultType$c; } static get NAME() { return NAME$d; } // Public dispose() { EventHandler.off(this._element, EVENT_KEY$9); } // Private _start(event) { if (!this._supportPointerEvents) { this._deltaX = event.touches[0].clientX; return; } if (this._eventIsPointerPenTouch(event)) { this._deltaX = event.clientX; } } _end(event) { if (this._eventIsPointerPenTouch(event)) { this._deltaX = event.clientX - this._deltaX; } this._handleSwipe(); execute(this._config.endCallback); } _move(event) { this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; } _handleSwipe() { const absDeltaX = Math.abs(this._deltaX); if (absDeltaX <= SWIPE_THRESHOLD) { return; } const direction = absDeltaX / this._deltaX; this._deltaX = 0; if (!direction) { return; } execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); } _initEvents() { if (this._supportPointerEvents) { EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event)); EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event)); this._element.classList.add(CLASS_NAME_POINTER_EVENT); } else { EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event)); EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event)); EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event)); } } _eventIsPointerPenTouch(event) { return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); } // Static static isSupported() { return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0; } }; var NAME$c = "carousel"; var DATA_KEY$8 = "bs.carousel"; var EVENT_KEY$8 = `.${DATA_KEY$8}`; var DATA_API_KEY$5 = ".data-api"; var ARROW_LEFT_KEY$1 = "ArrowLeft"; var ARROW_RIGHT_KEY$1 = "ArrowRight"; var TOUCHEVENT_COMPAT_WAIT = 500; var ORDER_NEXT = "next"; var ORDER_PREV = "prev"; var DIRECTION_LEFT = "left"; var DIRECTION_RIGHT = "right"; var EVENT_SLIDE = `slide${EVENT_KEY$8}`; var EVENT_SLID = `slid${EVENT_KEY$8}`; var EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; var EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; var EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; var EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; var EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; var EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; var CLASS_NAME_CAROUSEL = "carousel"; var CLASS_NAME_ACTIVE$2 = "active"; var CLASS_NAME_SLIDE = "slide"; var CLASS_NAME_END = "carousel-item-end"; var CLASS_NAME_START = "carousel-item-start"; var CLASS_NAME_NEXT = "carousel-item-next"; var CLASS_NAME_PREV = "carousel-item-prev"; var SELECTOR_ACTIVE = ".active"; var SELECTOR_ITEM = ".carousel-item"; var SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; var SELECTOR_ITEM_IMG = ".carousel-item img"; var SELECTOR_INDICATORS = ".carousel-indicators"; var SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to]"; var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; var KEY_TO_DIRECTION = { [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT }; var Default$b = { interval: 5e3, keyboard: true, pause: "hover", ride: false, touch: true, wrap: true }; var DefaultType$b = { interval: "(number|boolean)", // TODO:v6 remove boolean support keyboard: "boolean", pause: "(string|boolean)", ride: "(boolean|string)", touch: "boolean", wrap: "boolean" }; var Carousel = class _Carousel extends BaseComponent { constructor(element, config) { super(element, config); this._interval = null; this._activeElement = null; this._isSliding = false; this.touchTimeout = null; this._swipeHelper = null; this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); this._addEventListeners(); if (this._config.ride === CLASS_NAME_CAROUSEL) { this.cycle(); } } // Getters static get Default() { return Default$b; } static get DefaultType() { return DefaultType$b; } static get NAME() { return NAME$c; } // Public next() { this._slide(ORDER_NEXT); } nextWhenVisible() { if (!document.hidden && isVisible(this._element)) { this.next(); } } prev() { this._slide(ORDER_PREV); } pause() { if (this._isSliding) { triggerTransitionEnd(this._element); } this._clearInterval(); } cycle() { this._clearInterval(); this._updateInterval(); this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); } _maybeEnableCycle() { if (!this._config.ride) { return; } if (this._isSliding) { EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); return; } this.cycle(); } to(index) { const items = this._getItems(); if (index > items.length - 1 || index < 0) { return; } if (this._isSliding) { EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); return; } const activeIndex = this._getItemIndex(this._getActive()); if (activeIndex === index) { return; } const order2 = index > activeIndex ? ORDER_NEXT : ORDER_PREV; this._slide(order2, items[index]); } dispose() { if (this._swipeHelper) { this._swipeHelper.dispose(); } super.dispose(); } // Private _configAfterMerge(config) { config.defaultInterval = config.interval; return config; } _addEventListeners() { if (this._config.keyboard) { EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event)); } if (this._config.pause === "hover") { EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); } if (this._config.touch && Swipe.isSupported()) { this._addTouchEventListeners(); } } _addTouchEventListeners() { for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault()); } const endCallBack = () => { if (this._config.pause !== "hover") { return; } this.pause(); if (this.touchTimeout) { clearTimeout(this.touchTimeout); } this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); }; const swipeConfig = { leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), endCallback: endCallBack }; this._swipeHelper = new Swipe(this._element, swipeConfig); } _keydown(event) { if (/input|textarea/i.test(event.target.tagName)) { return; } const direction = KEY_TO_DIRECTION[event.key]; if (direction) { event.preventDefault(); this._slide(this._directionToOrder(direction)); } } _getItemIndex(element) { return this._getItems().indexOf(element); } _setActiveIndicatorElement(index) { if (!this._indicatorsElement) { return; } const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); activeIndicator.removeAttribute("aria-current"); const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); if (newActiveIndicator) { newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); newActiveIndicator.setAttribute("aria-current", "true"); } } _updateInterval() { const element = this._activeElement || this._getActive(); if (!element) { return; } const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval"), 10); this._config.interval = elementInterval || this._config.defaultInterval; } _slide(order2, element = null) { if (this._isSliding) { return; } const activeElement = this._getActive(); const isNext = order2 === ORDER_NEXT; const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); if (nextElement === activeElement) { return; } const nextElementIndex = this._getItemIndex(nextElement); const triggerEvent = (eventName) => { return EventHandler.trigger(this._element, eventName, { relatedTarget: nextElement, direction: this._orderToDirection(order2), from: this._getItemIndex(activeElement), to: nextElementIndex }); }; const slideEvent = triggerEvent(EVENT_SLIDE); if (slideEvent.defaultPrevented) { return; } if (!activeElement || !nextElement) { return; } const isCycling = Boolean(this._interval); this.pause(); this._isSliding = true; this._setActiveIndicatorElement(nextElementIndex); this._activeElement = nextElement; const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; nextElement.classList.add(orderClassName); reflow(nextElement); activeElement.classList.add(directionalClassName); nextElement.classList.add(directionalClassName); const completeCallBack = () => { nextElement.classList.remove(directionalClassName, orderClassName); nextElement.classList.add(CLASS_NAME_ACTIVE$2); activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); this._isSliding = false; triggerEvent(EVENT_SLID); }; this._queueCallback(completeCallBack, activeElement, this._isAnimated()); if (isCycling) { this.cycle(); } } _isAnimated() { return this._element.classList.contains(CLASS_NAME_SLIDE); } _getActive() { return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); } _getItems() { return SelectorEngine.find(SELECTOR_ITEM, this._element); } _clearInterval() { if (this._interval) { clearInterval(this._interval); this._interval = null; } } _directionToOrder(direction) { if (isRTL()) { return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; } return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; } _orderToDirection(order2) { if (isRTL()) { return order2 === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; } return order2 === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; } // Static static jQueryInterface(config) { return this.each(function() { const data = _Carousel.getOrCreateInstance(this, config); if (typeof config === "number") { data.to(config); return; } if (typeof config === "string") { if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { throw new TypeError(`No method named "${config}"`); } data[config](); } }); } }; EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) { const target = SelectorEngine.getElementFromSelector(this); if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { return; } event.preventDefault(); const carousel = Carousel.getOrCreateInstance(target); const slideIndex = this.getAttribute("data-bs-slide-to"); if (slideIndex) { carousel.to(slideIndex); carousel._maybeEnableCycle(); return; } if (Manipulator.getDataAttribute(this, "slide") === "next") { carousel.next(); carousel._maybeEnableCycle(); return; } carousel.prev(); carousel._maybeEnableCycle(); }); EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); for (const carousel of carousels) { Carousel.getOrCreateInstance(carousel); } }); defineJQueryPlugin(Carousel); var NAME$b = "collapse"; var DATA_KEY$7 = "bs.collapse"; var EVENT_KEY$7 = `.${DATA_KEY$7}`; var DATA_API_KEY$4 = ".data-api"; var EVENT_SHOW$6 = `show${EVENT_KEY$7}`; var EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; var EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; var EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; var EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; var CLASS_NAME_SHOW$7 = "show"; var CLASS_NAME_COLLAPSE = "collapse"; var CLASS_NAME_COLLAPSING = "collapsing"; var CLASS_NAME_COLLAPSED = "collapsed"; var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; var WIDTH = "width"; var HEIGHT = "height"; var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; var Default$a = { parent: null, toggle: true }; var DefaultType$a = { parent: "(null|element)", toggle: "boolean" }; var Collapse = class _Collapse extends BaseComponent { constructor(element, config) { super(element, config); this._isTransitioning = false; this._triggerArray = []; const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); for (const elem of toggleList) { const selector = SelectorEngine.getSelectorFromElement(elem); const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element); if (selector !== null && filterElement.length) { this._triggerArray.push(elem); } } this._initializeChildren(); if (!this._config.parent) { this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); } if (this._config.toggle) { this.toggle(); } } // Getters static get Default() { return Default$a; } static get DefaultType() { return DefaultType$a; } static get NAME() { return NAME$b; } // Public toggle() { if (this._isShown()) { this.hide(); } else { this.show(); } } show() { if (this._isTransitioning || this._isShown()) { return; } let activeChildren = []; if (this._config.parent) { activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); } if (activeChildren.length && activeChildren[0]._isTransitioning) { return; } const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); if (startEvent.defaultPrevented) { return; } for (const activeInstance of activeChildren) { activeInstance.hide(); } const dimension = this._getDimension(); this._element.classList.remove(CLASS_NAME_COLLAPSE); this._element.classList.add(CLASS_NAME_COLLAPSING); this._element.style[dimension] = 0; this._addAriaAndCollapsedClass(this._triggerArray, true); this._isTransitioning = true; const complete = () => { this._isTransitioning = false; this._element.classList.remove(CLASS_NAME_COLLAPSING); this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); this._element.style[dimension] = ""; EventHandler.trigger(this._element, EVENT_SHOWN$6); }; const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); const scrollSize = `scroll${capitalizedDimension}`; this._queueCallback(complete, this._element, true); this._element.style[dimension] = `${this._element[scrollSize]}px`; } hide() { if (this._isTransitioning || !this._isShown()) { return; } const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); if (startEvent.defaultPrevented) { return; } const dimension = this._getDimension(); this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; reflow(this._element); this._element.classList.add(CLASS_NAME_COLLAPSING); this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); for (const trigger of this._triggerArray) { const element = SelectorEngine.getElementFromSelector(trigger); if (element && !this._isShown(element)) { this._addAriaAndCollapsedClass([trigger], false); } } this._isTransitioning = true; const complete = () => { this._isTransitioning = false; this._element.classList.remove(CLASS_NAME_COLLAPSING); this._element.classList.add(CLASS_NAME_COLLAPSE); EventHandler.trigger(this._element, EVENT_HIDDEN$6); }; this._element.style[dimension] = ""; this._queueCallback(complete, this._element, true); } // Private _isShown(element = this._element) { return element.classList.contains(CLASS_NAME_SHOW$7); } _configAfterMerge(config) { config.toggle = Boolean(config.toggle); config.parent = getElement(config.parent); return config; } _getDimension() { return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; } _initializeChildren() { if (!this._config.parent) { return; } const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); for (const element of children2) { const selected = SelectorEngine.getElementFromSelector(element); if (selected) { this._addAriaAndCollapsedClass([element], this._isShown(selected)); } } } _getFirstLevelChildren(selector) { const children2 = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); return SelectorEngine.find(selector, this._config.parent).filter((element) => !children2.includes(element)); } _addAriaAndCollapsedClass(triggerArray, isOpen) { if (!triggerArray.length) { return; } for (const element of triggerArray) { element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); element.setAttribute("aria-expanded", isOpen); } } // Static static jQueryInterface(config) { const _config = {}; if (typeof config === "string" && /show|hide/.test(config)) { _config.toggle = false; } return this.each(function() { const data = _Collapse.getOrCreateInstance(this, _config); if (typeof config === "string") { if (typeof data[config] === "undefined") { throw new TypeError(`No method named "${config}"`); } data[config](); } }); } }; EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event) { if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { event.preventDefault(); } for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); } }); defineJQueryPlugin(Collapse); var NAME$a = "dropdown"; var DATA_KEY$6 = "bs.dropdown"; var EVENT_KEY$6 = `.${DATA_KEY$6}`; var DATA_API_KEY$3 = ".data-api"; var ESCAPE_KEY$2 = "Escape"; var TAB_KEY$1 = "Tab"; var ARROW_UP_KEY$1 = "ArrowUp"; var ARROW_DOWN_KEY$1 = "ArrowDown"; var RIGHT_MOUSE_BUTTON = 2; var EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; var EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; var EVENT_SHOW$5 = `show${EVENT_KEY$6}`; var EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; var EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; var EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; var EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; var CLASS_NAME_SHOW$6 = "show"; var CLASS_NAME_DROPUP = "dropup"; var CLASS_NAME_DROPEND = "dropend"; var CLASS_NAME_DROPSTART = "dropstart"; var CLASS_NAME_DROPUP_CENTER = "dropup-center"; var CLASS_NAME_DROPDOWN_CENTER = "dropdown-center"; var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; var SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; var SELECTOR_MENU = ".dropdown-menu"; var SELECTOR_NAVBAR = ".navbar"; var SELECTOR_NAVBAR_NAV = ".navbar-nav"; var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)"; var PLACEMENT_TOP = isRTL() ? "top-end" : "top-start"; var PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end"; var PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start"; var PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end"; var PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start"; var PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start"; var PLACEMENT_TOPCENTER = "top"; var PLACEMENT_BOTTOMCENTER = "bottom"; var Default$9 = { autoClose: true, boundary: "clippingParents", display: "dynamic", offset: [0, 2], popperConfig: null, reference: "toggle" }; var DefaultType$9 = { autoClose: "(boolean|string)", boundary: "(string|element)", display: "string", offset: "(array|string|function)", popperConfig: "(null|object|function)", reference: "(string|element|object)" }; var Dropdown = class _Dropdown extends BaseComponent { constructor(element, config) { super(element, config); this._popper = null; this._parent = this._element.parentNode; this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); this._inNavbar = this._detectNavbar(); } // Getters static get Default() { return Default$9; } static get DefaultType() { return DefaultType$9; } static get NAME() { return NAME$a; } // Public toggle() { return this._isShown() ? this.hide() : this.show(); } show() { if (isDisabled(this._element) || this._isShown()) { return; } const relatedTarget = { relatedTarget: this._element }; const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); if (showEvent.defaultPrevented) { return; } this._createPopper(); if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { for (const element of [].concat(...document.body.children)) { EventHandler.on(element, "mouseover", noop); } } this._element.focus(); this._element.setAttribute("aria-expanded", true); this._menu.classList.add(CLASS_NAME_SHOW$6); this._element.classList.add(CLASS_NAME_SHOW$6); EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); } hide() { if (isDisabled(this._element) || !this._isShown()) { return; } const relatedTarget = { relatedTarget: this._element }; this._completeHide(relatedTarget); } dispose() { if (this._popper) { this._popper.destroy(); } super.dispose(); } update() { this._inNavbar = this._detectNavbar(); if (this._popper) { this._popper.update(); } } // Private _completeHide(relatedTarget) { const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); if (hideEvent.defaultPrevented) { return; } if ("ontouchstart" in document.documentElement) { for (const element of [].concat(...document.body.children)) { EventHandler.off(element, "mouseover", noop); } } if (this._popper) { this._popper.destroy(); } this._menu.classList.remove(CLASS_NAME_SHOW$6); this._element.classList.remove(CLASS_NAME_SHOW$6); this._element.setAttribute("aria-expanded", "false"); Manipulator.removeDataAttribute(this._menu, "popper"); EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); } _getConfig(config) { config = super._getConfig(config); if (typeof config.reference === "object" && !isElement2(config.reference) && typeof config.reference.getBoundingClientRect !== "function") { throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); } return config; } _createPopper() { if (typeof lib_exports === "undefined") { throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)"); } let referenceElement = this._element; if (this._config.reference === "parent") { referenceElement = this._parent; } else if (isElement2(this._config.reference)) { referenceElement = getElement(this._config.reference); } else if (typeof this._config.reference === "object") { referenceElement = this._config.reference; } const popperConfig = this._getPopperConfig(); this._popper = createPopper3(referenceElement, this._menu, popperConfig); } _isShown() { return this._menu.classList.contains(CLASS_NAME_SHOW$6); } _getPlacement() { const parentDropdown = this._parent; if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { return PLACEMENT_RIGHT; } if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { return PLACEMENT_LEFT; } if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { return PLACEMENT_TOPCENTER; } if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { return PLACEMENT_BOTTOMCENTER; } const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end"; if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; } return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; } _detectNavbar() { return this._element.closest(SELECTOR_NAVBAR) !== null; } _getOffset() { const { offset: offset2 } = this._config; if (typeof offset2 === "string") { return offset2.split(",").map((value) => Number.parseInt(value, 10)); } if (typeof offset2 === "function") { return (popperData) => offset2(popperData, this._element); } return offset2; } _getPopperConfig() { const defaultBsPopperConfig = { placement: this._getPlacement(), modifiers: [{ name: "preventOverflow", options: { boundary: this._config.boundary } }, { name: "offset", options: { offset: this._getOffset() } }] }; if (this._inNavbar || this._config.display === "static") { Manipulator.setDataAttribute(this._menu, "popper", "static"); defaultBsPopperConfig.modifiers = [{ name: "applyStyles", enabled: false }]; } return { ...defaultBsPopperConfig, ...execute(this._config.popperConfig, [void 0, defaultBsPopperConfig]) }; } _selectMenuItem({ key, target }) { const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element)); if (!items.length) { return; } getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); } // Static static jQueryInterface(config) { return this.each(function() { const data = _Dropdown.getOrCreateInstance(this, config); if (typeof config !== "string") { return; } if (typeof data[config] === "undefined") { throw new TypeError(`No method named "${config}"`); } data[config](); }); } static clearMenus(event) { if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) { return; } const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); for (const toggle of openToggles) { const context = _Dropdown.getInstance(toggle); if (!context || context._config.autoClose === false) { continue; } const composedPath = event.composedPath(); const isMenuTarget = composedPath.includes(context._menu); if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) { continue; } if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { continue; } const relatedTarget = { relatedTarget: context._element }; if (event.type === "click") { relatedTarget.clickEvent = event; } context._completeHide(relatedTarget); } } static dataApiKeydownHandler(event) { const isInput = /input|textarea/i.test(event.target.tagName); const isEscapeEvent = event.key === ESCAPE_KEY$2; const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); if (!isUpOrDownEvent && !isEscapeEvent) { return; } if (isInput && !isEscapeEvent) { return; } event.preventDefault(); const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); const instance = _Dropdown.getOrCreateInstance(getToggleButton); if (isUpOrDownEvent) { event.stopPropagation(); instance.show(); instance._selectMenuItem(event); return; } if (instance._isShown()) { event.stopPropagation(); instance.hide(); getToggleButton.focus(); } } }; EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event) { event.preventDefault(); Dropdown.getOrCreateInstance(this).toggle(); }); defineJQueryPlugin(Dropdown); var NAME$9 = "backdrop"; var CLASS_NAME_FADE$4 = "fade"; var CLASS_NAME_SHOW$5 = "show"; var EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; var Default$8 = { className: "modal-backdrop", clickCallback: null, isAnimated: false, isVisible: true, // if false, we use the backdrop helper without adding any element to the dom rootElement: "body" // give the choice to place backdrop under different elements }; var DefaultType$8 = { className: "string", clickCallback: "(function|null)", isAnimated: "boolean", isVisible: "boolean", rootElement: "(element|string)" }; var Backdrop = class extends Config { constructor(config) { super(); this._config = this._getConfig(config); this._isAppended = false; this._element = null; } // Getters static get Default() { return Default$8; } static get DefaultType() { return DefaultType$8; } static get NAME() { return NAME$9; } // Public show(callback) { if (!this._config.isVisible) { execute(callback); return; } this._append(); const element = this._getElement(); if (this._config.isAnimated) { reflow(element); } element.classList.add(CLASS_NAME_SHOW$5); this._emulateAnimation(() => { execute(callback); }); } hide(callback) { if (!this._config.isVisible) { execute(callback); return; } this._getElement().classList.remove(CLASS_NAME_SHOW$5); this._emulateAnimation(() => { this.dispose(); execute(callback); }); } dispose() { if (!this._isAppended) { return; } EventHandler.off(this._element, EVENT_MOUSEDOWN); this._element.remove(); this._isAppended = false; } // Private _getElement() { if (!this._element) { const backdrop = document.createElement("div"); backdrop.className = this._config.className; if (this._config.isAnimated) { backdrop.classList.add(CLASS_NAME_FADE$4); } this._element = backdrop; } return this._element; } _configAfterMerge(config) { config.rootElement = getElement(config.rootElement); return config; } _append() { if (this._isAppended) { return; } const element = this._getElement(); this._config.rootElement.append(element); EventHandler.on(element, EVENT_MOUSEDOWN, () => { execute(this._config.clickCallback); }); this._isAppended = true; } _emulateAnimation(callback) { executeAfterTransition(callback, this._getElement(), this._config.isAnimated); } }; var NAME$8 = "focustrap"; var DATA_KEY$5 = "bs.focustrap"; var EVENT_KEY$5 = `.${DATA_KEY$5}`; var EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; var EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; var TAB_KEY = "Tab"; var TAB_NAV_FORWARD = "forward"; var TAB_NAV_BACKWARD = "backward"; var Default$7 = { autofocus: true, trapElement: null // The element to trap focus inside of }; var DefaultType$7 = { autofocus: "boolean", trapElement: "element" }; var FocusTrap = class extends Config { constructor(config) { super(); this._config = this._getConfig(config); this._isActive = false; this._lastTabNavDirection = null; } // Getters static get Default() { return Default$7; } static get DefaultType() { return DefaultType$7; } static get NAME() { return NAME$8; } // Public activate() { if (this._isActive) { return; } if (this._config.autofocus) { this._config.trapElement.focus(); } EventHandler.off(document, EVENT_KEY$5); EventHandler.on(document, EVENT_FOCUSIN$2, (event) => this._handleFocusin(event)); EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event)); this._isActive = true; } deactivate() { if (!this._isActive) { return; } this._isActive = false; EventHandler.off(document, EVENT_KEY$5); } // Private _handleFocusin(event) { const { trapElement } = this._config; if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { return; } const elements = SelectorEngine.focusableChildren(trapElement); if (elements.length === 0) { trapElement.focus(); } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { elements[elements.length - 1].focus(); } else { elements[0].focus(); } } _handleKeydown(event) { if (event.key !== TAB_KEY) { return; } this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; } }; var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"; var SELECTOR_STICKY_CONTENT = ".sticky-top"; var PROPERTY_PADDING = "padding-right"; var PROPERTY_MARGIN = "margin-right"; var ScrollBarHelper = class { constructor() { this._element = document.body; } // Public getWidth() { const documentWidth = document.documentElement.clientWidth; return Math.abs(window.innerWidth - documentWidth); } hide() { const width = this.getWidth(); this._disableOverFlow(); this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width); this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width); this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width); } reset() { this._resetElementAttributes(this._element, "overflow"); this._resetElementAttributes(this._element, PROPERTY_PADDING); this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); } isOverflowing() { return this.getWidth() > 0; } // Private _disableOverFlow() { this._saveInitialAttribute(this._element, "overflow"); this._element.style.overflow = "hidden"; } _setElementAttributes(selector, styleProperty, callback) { const scrollbarWidth = this.getWidth(); const manipulationCallBack = (element) => { if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { return; } this._saveInitialAttribute(element, styleProperty); const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); }; this._applyManipulationCallback(selector, manipulationCallBack); } _saveInitialAttribute(element, styleProperty) { const actualValue = element.style.getPropertyValue(styleProperty); if (actualValue) { Manipulator.setDataAttribute(element, styleProperty, actualValue); } } _resetElementAttributes(selector, styleProperty) { const manipulationCallBack = (element) => { const value = Manipulator.getDataAttribute(element, styleProperty); if (value === null) { element.style.removeProperty(styleProperty); return; } Manipulator.removeDataAttribute(element, styleProperty); element.style.setProperty(styleProperty, value); }; this._applyManipulationCallback(selector, manipulationCallBack); } _applyManipulationCallback(selector, callBack) { if (isElement2(selector)) { callBack(selector); return; } for (const sel of SelectorEngine.find(selector, this._element)) { callBack(sel); } } }; var NAME$7 = "modal"; var DATA_KEY$4 = "bs.modal"; var EVENT_KEY$4 = `.${DATA_KEY$4}`; var DATA_API_KEY$2 = ".data-api"; var ESCAPE_KEY$1 = "Escape"; var EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; var EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; var EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; var EVENT_SHOW$4 = `show${EVENT_KEY$4}`; var EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; var EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; var EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; var EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; var EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; var EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; var CLASS_NAME_OPEN = "modal-open"; var CLASS_NAME_FADE$3 = "fade"; var CLASS_NAME_SHOW$4 = "show"; var CLASS_NAME_STATIC = "modal-static"; var OPEN_SELECTOR$1 = ".modal.show"; var SELECTOR_DIALOG = ".modal-dialog"; var SELECTOR_MODAL_BODY = ".modal-body"; var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; var Default$6 = { backdrop: true, focus: true, keyboard: true }; var DefaultType$6 = { backdrop: "(boolean|string)", focus: "boolean", keyboard: "boolean" }; var Modal = class _Modal extends BaseComponent { constructor(element, config) { super(element, config); this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); this._backdrop = this._initializeBackDrop(); this._focustrap = this._initializeFocusTrap(); this._isShown = false; this._isTransitioning = false; this._scrollBar = new ScrollBarHelper(); this._addEventListeners(); } // Getters static get Default() { return Default$6; } static get DefaultType() { return DefaultType$6; } static get NAME() { return NAME$7; } // Public toggle(relatedTarget) { return this._isShown ? this.hide() : this.show(relatedTarget); } show(relatedTarget) { if (this._isShown || this._isTransitioning) { return; } const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { relatedTarget }); if (showEvent.defaultPrevented) { return; } this._isShown = true; this._isTransitioning = true; this._scrollBar.hide(); document.body.classList.add(CLASS_NAME_OPEN); this._adjustDialog(); this._backdrop.show(() => this._showElement(relatedTarget)); } hide() { if (!this._isShown || this._isTransitioning) { return; } const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); if (hideEvent.defaultPrevented) { return; } this._isShown = false; this._isTransitioning = true; this._focustrap.deactivate(); this._element.classList.remove(CLASS_NAME_SHOW$4); this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); } dispose() { EventHandler.off(window, EVENT_KEY$4); EventHandler.off(this._dialog, EVENT_KEY$4); this._backdrop.dispose(); this._focustrap.deactivate(); super.dispose(); } handleUpdate() { this._adjustDialog(); } // Private _initializeBackDrop() { return new Backdrop({ isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value, isAnimated: this._isAnimated() }); } _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); } _showElement(relatedTarget) { if (!document.body.contains(this._element)) { document.body.append(this._element); } this._element.style.display = "block"; this._element.removeAttribute("aria-hidden"); this._element.setAttribute("aria-modal", true); this._element.setAttribute("role", "dialog"); this._element.scrollTop = 0; const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); if (modalBody) { modalBody.scrollTop = 0; } reflow(this._element); this._element.classList.add(CLASS_NAME_SHOW$4); const transitionComplete = () => { if (this._config.focus) { this._focustrap.activate(); } this._isTransitioning = false; EventHandler.trigger(this._element, EVENT_SHOWN$4, { relatedTarget }); }; this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); } _addEventListeners() { EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => { if (event.key !== ESCAPE_KEY$1) { return; } if (this._config.keyboard) { this.hide(); return; } this._triggerBackdropTransition(); }); EventHandler.on(window, EVENT_RESIZE$1, () => { if (this._isShown && !this._isTransitioning) { this._adjustDialog(); } }); EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => { EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => { if (this._element !== event.target || this._element !== event2.target) { return; } if (this._config.backdrop === "static") { this._triggerBackdropTransition(); return; } if (this._config.backdrop) { this.hide(); } }); }); } _hideModal() { this._element.style.display = "none"; this._element.setAttribute("aria-hidden", true); this._element.removeAttribute("aria-modal"); this._element.removeAttribute("role"); this._isTransitioning = false; this._backdrop.hide(() => { document.body.classList.remove(CLASS_NAME_OPEN); this._resetAdjustments(); this._scrollBar.reset(); EventHandler.trigger(this._element, EVENT_HIDDEN$4); }); } _isAnimated() { return this._element.classList.contains(CLASS_NAME_FADE$3); } _triggerBackdropTransition() { const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); if (hideEvent.defaultPrevented) { return; } const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; const initialOverflowY = this._element.style.overflowY; if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) { return; } if (!isModalOverflowing) { this._element.style.overflowY = "hidden"; } this._element.classList.add(CLASS_NAME_STATIC); this._queueCallback(() => { this._element.classList.remove(CLASS_NAME_STATIC); this._queueCallback(() => { this._element.style.overflowY = initialOverflowY; }, this._dialog); }, this._dialog); this._element.focus(); } /** * The following methods are used to handle overflowing modals */ _adjustDialog() { const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; const scrollbarWidth = this._scrollBar.getWidth(); const isBodyOverflowing = scrollbarWidth > 0; if (isBodyOverflowing && !isModalOverflowing) { const property = isRTL() ? "paddingLeft" : "paddingRight"; this._element.style[property] = `${scrollbarWidth}px`; } if (!isBodyOverflowing && isModalOverflowing) { const property = isRTL() ? "paddingRight" : "paddingLeft"; this._element.style[property] = `${scrollbarWidth}px`; } } _resetAdjustments() { this._element.style.paddingLeft = ""; this._element.style.paddingRight = ""; } // Static static jQueryInterface(config, relatedTarget) { return this.each(function() { const data = _Modal.getOrCreateInstance(this, config); if (typeof config !== "string") { return; } if (typeof data[config] === "undefined") { throw new TypeError(`No method named "${config}"`); } data[config](relatedTarget); }); } }; EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event) { const target = SelectorEngine.getElementFromSelector(this); if (["A", "AREA"].includes(this.tagName)) { event.preventDefault(); } EventHandler.one(target, EVENT_SHOW$4, (showEvent) => { if (showEvent.defaultPrevented) { return; } EventHandler.one(target, EVENT_HIDDEN$4, () => { if (isVisible(this)) { this.focus(); } }); }); const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); if (alreadyOpen) { Modal.getInstance(alreadyOpen).hide(); } const data = Modal.getOrCreateInstance(target); data.toggle(this); }); enableDismissTrigger(Modal); defineJQueryPlugin(Modal); var NAME$6 = "offcanvas"; var DATA_KEY$3 = "bs.offcanvas"; var EVENT_KEY$3 = `.${DATA_KEY$3}`; var DATA_API_KEY$1 = ".data-api"; var EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; var ESCAPE_KEY = "Escape"; var CLASS_NAME_SHOW$3 = "show"; var CLASS_NAME_SHOWING$1 = "showing"; var CLASS_NAME_HIDING = "hiding"; var CLASS_NAME_BACKDROP = "offcanvas-backdrop"; var OPEN_SELECTOR = ".offcanvas.show"; var EVENT_SHOW$3 = `show${EVENT_KEY$3}`; var EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; var EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; var EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; var EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; var EVENT_RESIZE = `resize${EVENT_KEY$3}`; var EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; var EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; var Default$5 = { backdrop: true, keyboard: true, scroll: false }; var DefaultType$5 = { backdrop: "(boolean|string)", keyboard: "boolean", scroll: "boolean" }; var Offcanvas = class _Offcanvas extends BaseComponent { constructor(element, config) { super(element, config); this._isShown = false; this._backdrop = this._initializeBackDrop(); this._focustrap = this._initializeFocusTrap(); this._addEventListeners(); } // Getters static get Default() { return Default$5; } static get DefaultType() { return DefaultType$5; } static get NAME() { return NAME$6; } // Public toggle(relatedTarget) { return this._isShown ? this.hide() : this.show(relatedTarget); } show(relatedTarget) { if (this._isShown) { return; } const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { relatedTarget }); if (showEvent.defaultPrevented) { return; } this._isShown = true; this._backdrop.show(); if (!this._config.scroll) { new ScrollBarHelper().hide(); } this._element.setAttribute("aria-modal", true); this._element.setAttribute("role", "dialog"); this._element.classList.add(CLASS_NAME_SHOWING$1); const completeCallBack = () => { if (!this._config.scroll || this._config.backdrop) { this._focustrap.activate(); } this._element.classList.add(CLASS_NAME_SHOW$3); this._element.classList.remove(CLASS_NAME_SHOWING$1); EventHandler.trigger(this._element, EVENT_SHOWN$3, { relatedTarget }); }; this._queueCallback(completeCallBack, this._element, true); } hide() { if (!this._isShown) { return; } const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); if (hideEvent.defaultPrevented) { return; } this._focustrap.deactivate(); this._element.blur(); this._isShown = false; this._element.classList.add(CLASS_NAME_HIDING); this._backdrop.hide(); const completeCallback = () => { this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); this._element.removeAttribute("aria-modal"); this._element.removeAttribute("role"); if (!this._config.scroll) { new ScrollBarHelper().reset(); } EventHandler.trigger(this._element, EVENT_HIDDEN$3); }; this._queueCallback(completeCallback, this._element, true); } dispose() { this._backdrop.dispose(); this._focustrap.deactivate(); super.dispose(); } // Private _initializeBackDrop() { const clickCallback = () => { if (this._config.backdrop === "static") { EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); return; } this.hide(); }; const isVisible2 = Boolean(this._config.backdrop); return new Backdrop({ className: CLASS_NAME_BACKDROP, isVisible: isVisible2, isAnimated: true, rootElement: this._element.parentNode, clickCallback: isVisible2 ? clickCallback : null }); } _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); } _addEventListeners() { EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => { if (event.key !== ESCAPE_KEY) { return; } if (this._config.keyboard) { this.hide(); return; } EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); }); } // Static static jQueryInterface(config) { return this.each(function() { const data = _Offcanvas.getOrCreateInstance(this, config); if (typeof config !== "string") { return; } if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { throw new TypeError(`No method named "${config}"`); } data[config](this); }); } }; EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event) { const target = SelectorEngine.getElementFromSelector(this); if (["A", "AREA"].includes(this.tagName)) { event.preventDefault(); } if (isDisabled(this)) { return; } EventHandler.one(target, EVENT_HIDDEN$3, () => { if (isVisible(this)) { this.focus(); } }); const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); if (alreadyOpen && alreadyOpen !== target) { Offcanvas.getInstance(alreadyOpen).hide(); } const data = Offcanvas.getOrCreateInstance(target); data.toggle(this); }); EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { Offcanvas.getOrCreateInstance(selector).show(); } }); EventHandler.on(window, EVENT_RESIZE, () => { for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) { if (getComputedStyle(element).position !== "fixed") { Offcanvas.getOrCreateInstance(element).hide(); } } }); enableDismissTrigger(Offcanvas); defineJQueryPlugin(Offcanvas); var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; var DefaultAllowlist = { // Global attributes allowed on any supplied element below. "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], a: ["target", "href", "title", "rel"], area: [], b: [], br: [], col: [], code: [], dd: [], div: [], dl: [], dt: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ["src", "srcset", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [] }; var uriAttributes = /* @__PURE__ */ new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]); var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; var allowedAttribute = (attribute, allowedAttributeList) => { const attributeName = attribute.nodeName.toLowerCase(); if (allowedAttributeList.includes(attributeName)) { if (uriAttributes.has(attributeName)) { return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); } return true; } return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); }; function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { if (!unsafeHtml.length) { return unsafeHtml; } if (sanitizeFunction && typeof sanitizeFunction === "function") { return sanitizeFunction(unsafeHtml); } const domParser = new window.DOMParser(); const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); const elements = [].concat(...createdDocument.body.querySelectorAll("*")); for (const element of elements) { const elementName = element.nodeName.toLowerCase(); if (!Object.keys(allowList).includes(elementName)) { element.remove(); continue; } const attributeList = [].concat(...element.attributes); const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); for (const attribute of attributeList) { if (!allowedAttribute(attribute, allowedAttributes)) { element.removeAttribute(attribute.nodeName); } } } return createdDocument.body.innerHTML; } var NAME$5 = "TemplateFactory"; var Default$4 = { allowList: DefaultAllowlist, content: {}, // { selector : text , selector2 : text2 , } extraClass: "", html: false, sanitize: true, sanitizeFn: null, template: "
" }; var DefaultType$4 = { allowList: "object", content: "object", extraClass: "(string|function)", html: "boolean", sanitize: "boolean", sanitizeFn: "(null|function)", template: "string" }; var DefaultContentType = { entry: "(string|element|function|null)", selector: "(string|element)" }; var TemplateFactory = class extends Config { constructor(config) { super(); this._config = this._getConfig(config); } // Getters static get Default() { return Default$4; } static get DefaultType() { return DefaultType$4; } static get NAME() { return NAME$5; } // Public getContent() { return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); } hasContent() { return this.getContent().length > 0; } changeContent(content) { this._checkContent(content); this._config.content = { ...this._config.content, ...content }; return this; } toHtml() { const templateWrapper = document.createElement("div"); templateWrapper.innerHTML = this._maybeSanitize(this._config.template); for (const [selector, text] of Object.entries(this._config.content)) { this._setContent(templateWrapper, text, selector); } const template = templateWrapper.children[0]; const extraClass = this._resolvePossibleFunction(this._config.extraClass); if (extraClass) { template.classList.add(...extraClass.split(" ")); } return template; } // Private _typeCheckConfig(config) { super._typeCheckConfig(config); this._checkContent(config.content); } _checkContent(arg) { for (const [selector, content] of Object.entries(arg)) { super._typeCheckConfig({ selector, entry: content }, DefaultContentType); } } _setContent(template, content, selector) { const templateElement = SelectorEngine.findOne(selector, template); if (!templateElement) { return; } content = this._resolvePossibleFunction(content); if (!content) { templateElement.remove(); return; } if (isElement2(content)) { this._putElementInTemplate(getElement(content), templateElement); return; } if (this._config.html) { templateElement.innerHTML = this._maybeSanitize(content); return; } templateElement.textContent = content; } _maybeSanitize(arg) { return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; } _resolvePossibleFunction(arg) { return execute(arg, [void 0, this]); } _putElementInTemplate(element, templateElement) { if (this._config.html) { templateElement.innerHTML = ""; templateElement.append(element); return; } templateElement.textContent = element.textContent; } }; var NAME$4 = "tooltip"; var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); var CLASS_NAME_FADE$2 = "fade"; var CLASS_NAME_MODAL = "modal"; var CLASS_NAME_SHOW$2 = "show"; var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; var EVENT_MODAL_HIDE = "hide.bs.modal"; var TRIGGER_HOVER = "hover"; var TRIGGER_FOCUS = "focus"; var TRIGGER_CLICK = "click"; var TRIGGER_MANUAL = "manual"; var EVENT_HIDE$2 = "hide"; var EVENT_HIDDEN$2 = "hidden"; var EVENT_SHOW$2 = "show"; var EVENT_SHOWN$2 = "shown"; var EVENT_INSERTED = "inserted"; var EVENT_CLICK$1 = "click"; var EVENT_FOCUSIN$1 = "focusin"; var EVENT_FOCUSOUT$1 = "focusout"; var EVENT_MOUSEENTER = "mouseenter"; var EVENT_MOUSELEAVE = "mouseleave"; var AttachmentMap = { AUTO: "auto", TOP: "top", RIGHT: isRTL() ? "left" : "right", BOTTOM: "bottom", LEFT: isRTL() ? "right" : "left" }; var Default$3 = { allowList: DefaultAllowlist, animation: true, boundary: "clippingParents", container: false, customClass: "", delay: 0, fallbackPlacements: ["top", "right", "bottom", "left"], html: false, offset: [0, 6], placement: "top", popperConfig: null, sanitize: true, sanitizeFn: null, selector: false, template: '', title: "", trigger: "hover focus" }; var DefaultType$3 = { allowList: "object", animation: "boolean", boundary: "(string|element)", container: "(string|element|boolean)", customClass: "(string|function)", delay: "(number|object)", fallbackPlacements: "array", html: "boolean", offset: "(array|string|function)", placement: "(string|function)", popperConfig: "(null|object|function)", sanitize: "boolean", sanitizeFn: "(null|function)", selector: "(string|boolean)", template: "string", title: "(string|element|function)", trigger: "string" }; var Tooltip = class _Tooltip extends BaseComponent { constructor(element, config) { if (typeof lib_exports === "undefined") { throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); } super(element, config); this._isEnabled = true; this._timeout = 0; this._isHovered = null; this._activeTrigger = {}; this._popper = null; this._templateFactory = null; this._newContent = null; this.tip = null; this._setListeners(); if (!this._config.selector) { this._fixTitle(); } } // Getters static get Default() { return Default$3; } static get DefaultType() { return DefaultType$3; } static get NAME() { return NAME$4; } // Public enable() { this._isEnabled = true; } disable() { this._isEnabled = false; } toggleEnabled() { this._isEnabled = !this._isEnabled; } toggle() { if (!this._isEnabled) { return; } if (this._isShown()) { this._leave(); return; } this._enter(); } dispose() { clearTimeout(this._timeout); EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); if (this._element.getAttribute("data-bs-original-title")) { this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); } this._disposePopper(); super.dispose(); } show() { if (this._element.style.display === "none") { throw new Error("Please use show on visible elements"); } if (!(this._isWithContent() && this._isEnabled)) { return; } const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); const shadowRoot = findShadowRoot(this._element); const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); if (showEvent.defaultPrevented || !isInTheDom) { return; } this._disposePopper(); const tip = this._getTipElement(); this._element.setAttribute("aria-describedby", tip.getAttribute("id")); const { container } = this._config; if (!this._element.ownerDocument.documentElement.contains(this.tip)) { container.append(tip); EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); } this._popper = this._createPopper(tip); tip.classList.add(CLASS_NAME_SHOW$2); if ("ontouchstart" in document.documentElement) { for (const element of [].concat(...document.body.children)) { EventHandler.on(element, "mouseover", noop); } } const complete = () => { EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); if (this._isHovered === false) { this._leave(); } this._isHovered = false; }; this._queueCallback(complete, this.tip, this._isAnimated()); } hide() { if (!this._isShown()) { return; } const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); if (hideEvent.defaultPrevented) { return; } const tip = this._getTipElement(); tip.classList.remove(CLASS_NAME_SHOW$2); if ("ontouchstart" in document.documentElement) { for (const element of [].concat(...document.body.children)) { EventHandler.off(element, "mouseover", noop); } } this._activeTrigger[TRIGGER_CLICK] = false; this._activeTrigger[TRIGGER_FOCUS] = false; this._activeTrigger[TRIGGER_HOVER] = false; this._isHovered = null; const complete = () => { if (this._isWithActiveTrigger()) { return; } if (!this._isHovered) { this._disposePopper(); } this._element.removeAttribute("aria-describedby"); EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); }; this._queueCallback(complete, this.tip, this._isAnimated()); } update() { if (this._popper) { this._popper.update(); } } // Protected _isWithContent() { return Boolean(this._getTitle()); } _getTipElement() { if (!this.tip) { this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); } return this.tip; } _createTipElement(content) { const tip = this._getTemplateFactory(content).toHtml(); if (!tip) { return null; } tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); tip.classList.add(`bs-${this.constructor.NAME}-auto`); const tipId = getUID(this.constructor.NAME).toString(); tip.setAttribute("id", tipId); if (this._isAnimated()) { tip.classList.add(CLASS_NAME_FADE$2); } return tip; } setContent(content) { this._newContent = content; if (this._isShown()) { this._disposePopper(); this.show(); } } _getTemplateFactory(content) { if (this._templateFactory) { this._templateFactory.changeContent(content); } else { this._templateFactory = new TemplateFactory({ ...this._config, // the `content` var has to be after `this._config` // to override config.content in case of popover content, extraClass: this._resolvePossibleFunction(this._config.customClass) }); } return this._templateFactory; } _getContentForTemplate() { return { [SELECTOR_TOOLTIP_INNER]: this._getTitle() }; } _getTitle() { return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); } // Private _initializeOnDelegatedTarget(event) { return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); } _isAnimated() { return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); } _isShown() { return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); } _createPopper(tip) { const placement = execute(this._config.placement, [this, tip, this._element]); const attachment = AttachmentMap[placement.toUpperCase()]; return createPopper3(this._element, tip, this._getPopperConfig(attachment)); } _getOffset() { const { offset: offset2 } = this._config; if (typeof offset2 === "string") { return offset2.split(",").map((value) => Number.parseInt(value, 10)); } if (typeof offset2 === "function") { return (popperData) => offset2(popperData, this._element); } return offset2; } _resolvePossibleFunction(arg) { return execute(arg, [this._element, this._element]); } _getPopperConfig(attachment) { const defaultBsPopperConfig = { placement: attachment, modifiers: [{ name: "flip", options: { fallbackPlacements: this._config.fallbackPlacements } }, { name: "offset", options: { offset: this._getOffset() } }, { name: "preventOverflow", options: { boundary: this._config.boundary } }, { name: "arrow", options: { element: `.${this.constructor.NAME}-arrow` } }, { name: "preSetPlacement", enabled: true, phase: "beforeMain", fn: (data) => { this._getTipElement().setAttribute("data-popper-placement", data.state.placement); } }] }; return { ...defaultBsPopperConfig, ...execute(this._config.popperConfig, [void 0, defaultBsPopperConfig]) }; } _setListeners() { const triggers = this._config.trigger.split(" "); for (const trigger of triggers) { if (trigger === "click") { EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, (event) => { const context = this._initializeOnDelegatedTarget(event); context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); context.toggle(); }); } else if (trigger !== TRIGGER_MANUAL) { const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); EventHandler.on(this._element, eventIn, this._config.selector, (event) => { const context = this._initializeOnDelegatedTarget(event); context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; context._enter(); }); EventHandler.on(this._element, eventOut, this._config.selector, (event) => { const context = this._initializeOnDelegatedTarget(event); context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); context._leave(); }); } } this._hideModalHandler = () => { if (this._element) { this.hide(); } }; EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); } _fixTitle() { const title = this._element.getAttribute("title"); if (!title) { return; } if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { this._element.setAttribute("aria-label", title); } this._element.setAttribute("data-bs-original-title", title); this._element.removeAttribute("title"); } _enter() { if (this._isShown() || this._isHovered) { this._isHovered = true; return; } this._isHovered = true; this._setTimeout(() => { if (this._isHovered) { this.show(); } }, this._config.delay.show); } _leave() { if (this._isWithActiveTrigger()) { return; } this._isHovered = false; this._setTimeout(() => { if (!this._isHovered) { this.hide(); } }, this._config.delay.hide); } _setTimeout(handler, timeout) { clearTimeout(this._timeout); this._timeout = setTimeout(handler, timeout); } _isWithActiveTrigger() { return Object.values(this._activeTrigger).includes(true); } _getConfig(config) { const dataAttributes = Manipulator.getDataAttributes(this._element); for (const dataAttribute of Object.keys(dataAttributes)) { if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { delete dataAttributes[dataAttribute]; } } config = { ...dataAttributes, ...typeof config === "object" && config ? config : {} }; config = this._mergeConfigObj(config); config = this._configAfterMerge(config); this._typeCheckConfig(config); return config; } _configAfterMerge(config) { config.container = config.container === false ? document.body : getElement(config.container); if (typeof config.delay === "number") { config.delay = { show: config.delay, hide: config.delay }; } if (typeof config.title === "number") { config.title = config.title.toString(); } if (typeof config.content === "number") { config.content = config.content.toString(); } return config; } _getDelegateConfig() { const config = {}; for (const [key, value] of Object.entries(this._config)) { if (this.constructor.Default[key] !== value) { config[key] = value; } } config.selector = false; config.trigger = "manual"; return config; } _disposePopper() { if (this._popper) { this._popper.destroy(); this._popper = null; } if (this.tip) { this.tip.remove(); this.tip = null; } } // Static static jQueryInterface(config) { return this.each(function() { const data = _Tooltip.getOrCreateInstance(this, config); if (typeof config !== "string") { return; } if (typeof data[config] === "undefined") { throw new TypeError(`No method named "${config}"`); } data[config](); }); } }; defineJQueryPlugin(Tooltip); var NAME$3 = "popover"; var SELECTOR_TITLE = ".popover-header"; var SELECTOR_CONTENT = ".popover-body"; var Default$2 = { ...Tooltip.Default, content: "", offset: [0, 8], placement: "right", template: '', trigger: "click" }; var DefaultType$2 = { ...Tooltip.DefaultType, content: "(null|string|element|function)" }; var Popover = class _Popover extends Tooltip { // Getters static get Default() { return Default$2; } static get DefaultType() { return DefaultType$2; } static get NAME() { return NAME$3; } // Overrides _isWithContent() { return this._getTitle() || this._getContent(); } // Private _getContentForTemplate() { return { [SELECTOR_TITLE]: this._getTitle(), [SELECTOR_CONTENT]: this._getContent() }; } _getContent() { return this._resolvePossibleFunction(this._config.content); } // Static static jQueryInterface(config) { return this.each(function() { const data = _Popover.getOrCreateInstance(this, config); if (typeof config !== "string") { return; } if (typeof data[config] === "undefined") { throw new TypeError(`No method named "${config}"`); } data[config](); }); } }; defineJQueryPlugin(Popover); var NAME$2 = "scrollspy"; var DATA_KEY$2 = "bs.scrollspy"; var EVENT_KEY$2 = `.${DATA_KEY$2}`; var DATA_API_KEY = ".data-api"; var EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; var EVENT_CLICK = `click${EVENT_KEY$2}`; var EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; var CLASS_NAME_DROPDOWN_ITEM = "dropdown-item"; var CLASS_NAME_ACTIVE$1 = "active"; var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; var SELECTOR_TARGET_LINKS = "[href]"; var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group"; var SELECTOR_NAV_LINKS = ".nav-link"; var SELECTOR_NAV_ITEMS = ".nav-item"; var SELECTOR_LIST_ITEMS = ".list-group-item"; var SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; var SELECTOR_DROPDOWN = ".dropdown"; var SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle"; var Default$1 = { offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons rootMargin: "0px 0px -25%", smoothScroll: false, target: null, threshold: [0.1, 0.5, 1] }; var DefaultType$1 = { offset: "(number|null)", // TODO v6 @deprecated, keep it for backwards compatibility reasons rootMargin: "string", smoothScroll: "boolean", target: "element", threshold: "array" }; var ScrollSpy = class _ScrollSpy extends BaseComponent { constructor(element, config) { super(element, config); this._targetLinks = /* @__PURE__ */ new Map(); this._observableSections = /* @__PURE__ */ new Map(); this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element; this._activeTarget = null; this._observer = null; this._previousScrollData = { visibleEntryTop: 0, parentScrollTop: 0 }; this.refresh(); } // Getters static get Default() { return Default$1; } static get DefaultType() { return DefaultType$1; } static get NAME() { return NAME$2; } // Public refresh() { this._initializeTargetsAndObservables(); this._maybeEnableSmoothScroll(); if (this._observer) { this._observer.disconnect(); } else { this._observer = this._getNewObserver(); } for (const section of this._observableSections.values()) { this._observer.observe(section); } } dispose() { this._observer.disconnect(); super.dispose(); } // Private _configAfterMerge(config) { config.target = getElement(config.target) || document.body; config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; if (typeof config.threshold === "string") { config.threshold = config.threshold.split(",").map((value) => Number.parseFloat(value)); } return config; } _maybeEnableSmoothScroll() { if (!this._config.smoothScroll) { return; } EventHandler.off(this._config.target, EVENT_CLICK); EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => { const observableSection = this._observableSections.get(event.target.hash); if (observableSection) { event.preventDefault(); const root = this._rootElement || window; const height = observableSection.offsetTop - this._element.offsetTop; if (root.scrollTo) { root.scrollTo({ top: height, behavior: "smooth" }); return; } root.scrollTop = height; } }); } _getNewObserver() { const options = { root: this._rootElement, threshold: this._config.threshold, rootMargin: this._config.rootMargin }; return new IntersectionObserver((entries) => this._observerCallback(entries), options); } // The logic of selection _observerCallback(entries) { const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`); const activate = (entry) => { this._previousScrollData.visibleEntryTop = entry.target.offsetTop; this._process(targetElement(entry)); }; const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; this._previousScrollData.parentScrollTop = parentScrollTop; for (const entry of entries) { if (!entry.isIntersecting) { this._activeTarget = null; this._clearActiveClass(targetElement(entry)); continue; } const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; if (userScrollsDown && entryIsLowerThanPrevious) { activate(entry); if (!parentScrollTop) { return; } continue; } if (!userScrollsDown && !entryIsLowerThanPrevious) { activate(entry); } } } _initializeTargetsAndObservables() { this._targetLinks = /* @__PURE__ */ new Map(); this._observableSections = /* @__PURE__ */ new Map(); const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); for (const anchor of targetLinks) { if (!anchor.hash || isDisabled(anchor)) { continue; } const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); if (isVisible(observableSection)) { this._targetLinks.set(decodeURI(anchor.hash), anchor); this._observableSections.set(anchor.hash, observableSection); } } } _process(target) { if (this._activeTarget === target) { return; } this._clearActiveClass(this._config.target); this._activeTarget = target; target.classList.add(CLASS_NAME_ACTIVE$1); this._activateParents(target); EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target }); } _activateParents(target) { if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); return; } for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { item.classList.add(CLASS_NAME_ACTIVE$1); } } } _clearActiveClass(parent) { parent.classList.remove(CLASS_NAME_ACTIVE$1); const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); for (const node of activeNodes) { node.classList.remove(CLASS_NAME_ACTIVE$1); } } // Static static jQueryInterface(config) { return this.each(function() { const data = _ScrollSpy.getOrCreateInstance(this, config); if (typeof config !== "string") { return; } if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { throw new TypeError(`No method named "${config}"`); } data[config](); }); } }; EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { ScrollSpy.getOrCreateInstance(spy); } }); defineJQueryPlugin(ScrollSpy); var NAME$1 = "tab"; var DATA_KEY$1 = "bs.tab"; var EVENT_KEY$1 = `.${DATA_KEY$1}`; var EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; var EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; var EVENT_SHOW$1 = `show${EVENT_KEY$1}`; var EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; var EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; var EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; var EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; var ARROW_LEFT_KEY = "ArrowLeft"; var ARROW_RIGHT_KEY = "ArrowRight"; var ARROW_UP_KEY = "ArrowUp"; var ARROW_DOWN_KEY = "ArrowDown"; var HOME_KEY = "Home"; var END_KEY = "End"; var CLASS_NAME_ACTIVE = "active"; var CLASS_NAME_FADE$1 = "fade"; var CLASS_NAME_SHOW$1 = "show"; var CLASS_DROPDOWN = "dropdown"; var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle"; var SELECTOR_DROPDOWN_MENU = ".dropdown-menu"; var NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`; var SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; var SELECTOR_OUTER = ".nav-item, .list-group-item"; var SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; var SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; var 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"]`; var Tab = class _Tab extends BaseComponent { constructor(element) { super(element); this._parent = this._element.closest(SELECTOR_TAB_PANEL); if (!this._parent) { return; } this._setInitialAttributes(this._parent, this._getChildren()); EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event)); } // Getters static get NAME() { return NAME$1; } // Public show() { const innerElem = this._element; if (this._elemIsActive(innerElem)) { return; } const active = this._getActiveElem(); const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { relatedTarget: innerElem }) : null; const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { relatedTarget: active }); if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { return; } this._deactivate(active, innerElem); this._activate(innerElem, active); } // Private _activate(element, relatedElem) { if (!element) { return; } element.classList.add(CLASS_NAME_ACTIVE); this._activate(SelectorEngine.getElementFromSelector(element)); const complete = () => { if (element.getAttribute("role") !== "tab") { element.classList.add(CLASS_NAME_SHOW$1); return; } element.removeAttribute("tabindex"); element.setAttribute("aria-selected", true); this._toggleDropDown(element, true); EventHandler.trigger(element, EVENT_SHOWN$1, { relatedTarget: relatedElem }); }; this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); } _deactivate(element, relatedElem) { if (!element) { return; } element.classList.remove(CLASS_NAME_ACTIVE); element.blur(); this._deactivate(SelectorEngine.getElementFromSelector(element)); const complete = () => { if (element.getAttribute("role") !== "tab") { element.classList.remove(CLASS_NAME_SHOW$1); return; } element.setAttribute("aria-selected", false); element.setAttribute("tabindex", "-1"); this._toggleDropDown(element, false); EventHandler.trigger(element, EVENT_HIDDEN$1, { relatedTarget: relatedElem }); }; this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); } _keydown(event) { if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { return; } event.stopPropagation(); event.preventDefault(); const children2 = this._getChildren().filter((element) => !isDisabled(element)); let nextActiveElement; if ([HOME_KEY, END_KEY].includes(event.key)) { nextActiveElement = children2[event.key === HOME_KEY ? 0 : children2.length - 1]; } else { const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); nextActiveElement = getNextActiveElement(children2, event.target, isNext, true); } if (nextActiveElement) { nextActiveElement.focus({ preventScroll: true }); _Tab.getOrCreateInstance(nextActiveElement).show(); } } _getChildren() { return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); } _getActiveElem() { return this._getChildren().find((child2) => this._elemIsActive(child2)) || null; } _setInitialAttributes(parent, children2) { this._setAttributeIfNotExists(parent, "role", "tablist"); for (const child2 of children2) { this._setInitialAttributesOnChild(child2); } } _setInitialAttributesOnChild(child2) { child2 = this._getInnerElement(child2); const isActive = this._elemIsActive(child2); const outerElem = this._getOuterElement(child2); child2.setAttribute("aria-selected", isActive); if (outerElem !== child2) { this._setAttributeIfNotExists(outerElem, "role", "presentation"); } if (!isActive) { child2.setAttribute("tabindex", "-1"); } this._setAttributeIfNotExists(child2, "role", "tab"); this._setInitialAttributesOnTargetPanel(child2); } _setInitialAttributesOnTargetPanel(child2) { const target = SelectorEngine.getElementFromSelector(child2); if (!target) { return; } this._setAttributeIfNotExists(target, "role", "tabpanel"); if (child2.id) { this._setAttributeIfNotExists(target, "aria-labelledby", `${child2.id}`); } } _toggleDropDown(element, open) { const outerElem = this._getOuterElement(element); if (!outerElem.classList.contains(CLASS_DROPDOWN)) { return; } const toggle = (selector, className) => { const element2 = SelectorEngine.findOne(selector, outerElem); if (element2) { element2.classList.toggle(className, open); } }; toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); outerElem.setAttribute("aria-expanded", open); } _setAttributeIfNotExists(element, attribute, value) { if (!element.hasAttribute(attribute)) { element.setAttribute(attribute, value); } } _elemIsActive(elem) { return elem.classList.contains(CLASS_NAME_ACTIVE); } // Try to get the inner element (usually the .nav-link) _getInnerElement(elem) { return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); } // Try to get the outer element (usually the .nav-item) _getOuterElement(elem) { return elem.closest(SELECTOR_OUTER) || elem; } // Static static jQueryInterface(config) { return this.each(function() { const data = _Tab.getOrCreateInstance(this); if (typeof config !== "string") { return; } if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { throw new TypeError(`No method named "${config}"`); } data[config](); }); } }; EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { if (["A", "AREA"].includes(this.tagName)) { event.preventDefault(); } if (isDisabled(this)) { return; } Tab.getOrCreateInstance(this).show(); }); EventHandler.on(window, EVENT_LOAD_DATA_API, () => { for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { Tab.getOrCreateInstance(element); } }); defineJQueryPlugin(Tab); var NAME = "toast"; var DATA_KEY = "bs.toast"; var EVENT_KEY = `.${DATA_KEY}`; var EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; var EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; var EVENT_FOCUSIN = `focusin${EVENT_KEY}`; var EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; var EVENT_HIDE = `hide${EVENT_KEY}`; var EVENT_HIDDEN = `hidden${EVENT_KEY}`; var EVENT_SHOW = `show${EVENT_KEY}`; var EVENT_SHOWN = `shown${EVENT_KEY}`; var CLASS_NAME_FADE = "fade"; var CLASS_NAME_HIDE = "hide"; var CLASS_NAME_SHOW = "show"; var CLASS_NAME_SHOWING = "showing"; var DefaultType = { animation: "boolean", autohide: "boolean", delay: "number" }; var Default = { animation: true, autohide: true, delay: 5e3 }; var Toast = class _Toast extends BaseComponent { constructor(element, config) { super(element, config); this._timeout = null; this._hasMouseInteraction = false; this._hasKeyboardInteraction = false; this._setListeners(); } // Getters static get Default() { return Default; } static get DefaultType() { return DefaultType; } static get NAME() { return NAME; } // Public show() { const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); if (showEvent.defaultPrevented) { return; } this._clearTimeout(); if (this._config.animation) { this._element.classList.add(CLASS_NAME_FADE); } const complete = () => { this._element.classList.remove(CLASS_NAME_SHOWING); EventHandler.trigger(this._element, EVENT_SHOWN); this._maybeScheduleHide(); }; this._element.classList.remove(CLASS_NAME_HIDE); reflow(this._element); this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); this._queueCallback(complete, this._element, this._config.animation); } hide() { if (!this.isShown()) { return; } const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); if (hideEvent.defaultPrevented) { return; } const complete = () => { this._element.classList.add(CLASS_NAME_HIDE); this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); EventHandler.trigger(this._element, EVENT_HIDDEN); }; this._element.classList.add(CLASS_NAME_SHOWING); this._queueCallback(complete, this._element, this._config.animation); } dispose() { this._clearTimeout(); if (this.isShown()) { this._element.classList.remove(CLASS_NAME_SHOW); } super.dispose(); } isShown() { return this._element.classList.contains(CLASS_NAME_SHOW); } // Private _maybeScheduleHide() { if (!this._config.autohide) { return; } if (this._hasMouseInteraction || this._hasKeyboardInteraction) { return; } this._timeout = setTimeout(() => { this.hide(); }, this._config.delay); } _onInteraction(event, isInteracting) { switch (event.type) { case "mouseover": case "mouseout": { this._hasMouseInteraction = isInteracting; break; } case "focusin": case "focusout": { this._hasKeyboardInteraction = isInteracting; break; } } if (isInteracting) { this._clearTimeout(); return; } const nextElement = event.relatedTarget; if (this._element === nextElement || this._element.contains(nextElement)) { return; } this._maybeScheduleHide(); } _setListeners() { EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true)); EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false)); EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true)); EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false)); } _clearTimeout() { clearTimeout(this._timeout); this._timeout = null; } // Static static jQueryInterface(config) { return this.each(function() { const data = _Toast.getOrCreateInstance(this, config); if (typeof config === "string") { if (typeof data[config] === "undefined") { throw new TypeError(`No method named "${config}"`); } data[config](this); } }); } }; enableDismissTrigger(Toast); defineJQueryPlugin(Toast); // dev/scripts/modules/Toast.js var import_toastify_js = __toESM(require_toastify(), 1); var Toast2 = (text = "", variant = "primary") => { const getColorByName = (variant2 = "") => { let color; switch (variant2.trim().toLowerCase()) { case "primary": color = "#0d6efd"; break; case "secondary": color = "#6c757d"; break; case "warning": color = "#ffc720"; break; case "success": color = "#13653f"; break; case "info": color = "#25cff2"; break; case "error": case "danger": color = "#a52834"; break; case "light": color = "#babbbc"; break; case "dark": color = "#373b3e"; break; default: console.warn("variant not found"); color: "white"; } return color; }; const show = () => { (0, import_toastify_js.default)({ text, duration: 2e3, className: variant, gravity: "top", // `top` or `bottom` position: "center", // `left`, `center` or `right` stopOnFocus: true, // Prevents dismissing of toast on hover style: { background: getColorByName(variant) } }).showToast(); }; return { show }; }; var Toast_default = Toast2; // dev/scripts/modules/ProductManager.js var ProductManager = (el = null) => { const BASE_URL = "http://127.0.0.1:8000"; const module = el || document.querySelector(".product-manager") || console.error("Product Manager not found"); if (!module) return; const DOM = { module, table: module.querySelector(".table-products"), tBody: module.querySelector("tbody"), inputName: module.querySelector(".input-product-name"), inputPrice: module.querySelector(".input-product-price"), btnAdd: module.querySelector(".button-product-add"), templateRow: module.querySelector(".template-row"), // Nav Actions btnSave: module.querySelector(".button-products-save"), btnReset: module.querySelector(".button-products-reset"), // Modal Edit modalEdit: module.querySelector(".modal-edit"), formEdit: module.querySelector(".form-product-edit"), inputEditName: module.querySelector(".input-edit-name"), inputEditPrice: module.querySelector(".input-edit-price"), inputEditId: module.querySelector(".input-edit-id"), inputEditPosition: module.querySelector(".input-edit-position"), btnUpdate: module.querySelector(".button-product-update"), // Modal Delete modalDelete: module.querySelector(".modal-delete"), productName: module.querySelector("strong.product-name"), btnConfirmDelete: module.querySelector(".button-confirm-delete") }; console.log(DOM); const bsModalEdit = new Modal(DOM.modalEdit, { backdrop: "static", // true keyboard: true }); const bsModalDelete = new Modal(DOM.modalDelete, { backdrop: "static", // true keyboard: true }); const init = () => { console.log("init"); initProducts(); DOM.btnReset.addEventListener("click", onClickReset); DOM.btnSave.addEventListener("click", onClickSave); DOM.btnAdd.addEventListener("click", onClickAdd); DOM.btnAdd.disabled = true; DOM.btnConfirmDelete.addEventListener("click", onClickConfirmDelete); DOM.formEdit.addEventListener("submit", onSubmitEdit); window.addEventListener("keyup", onKeyUp); }; const onKeyUp = (e) => { DOM.btnAdd.disabled = DOM.inputName.value === "" || DOM.inputPrice.value === ""; }; const onClickReset = (e) => { const btnEl = e.currentTarget; resetProducts().then((data) => { if (data.success) { Toast_default(data.msg, "success").show(); loadProducts(); } }); }; const onClickSave = (e) => { const btnEl = e.currentTarget; const icon = btnEl.querySelector("i"); icon.classList.add("fa-jello"); saveProducts().then((data) => { if (data.success) { setTimeout(() => { icon.classList.remove("fa-jello"); }, 500); Toast_default(data.msg, "success").show(); } }); }; const onSubmitEdit = (e) => { e.preventDefault(); const product = { name: DOM.inputEditName.value, price: Number(DOM.inputEditPrice.value), _id: DOM.inputEditId.value, position: DOM.inputEditPosition.value }; DOM.btnUpdate.querySelector("i").classList.add("fa-spin"); updateProduct(product).then((data) => { console.log(data); if (data.success) { Toast_default(data.msg, "success").show(); DOM.btnUpdate.querySelector("i").classList.remove("fa-spin"); loadProducts(); resetFields(); bsModalEdit.hide(); } else { Toast_default(data.msg, "error").show(); } }); }; const onClickAdd = (e) => { console.log("click"); const product = { name: DOM.inputName.value, price: Number(DOM.inputPrice.value) }; createProduct(product).then((data) => { console.log(data); if (data.success) { console.log("add"); Toast_default(data.msg, "success").show(); loadProducts(); resetFields(); } }); disableNonFunctionalButtons(); }; const onClickEdit = (e) => { const btnEl = e.currentTarget; const currentRow = parents(btnEl, "tr")[0]; const id = currentRow.dataset.id; getProduct(id).then((data) => { showModalEdit(data); }); }; const onClickRemove = (e) => { const btnEl = e.currentTarget; const currentRow = parents(btnEl, "tr")[0]; const id = currentRow.dataset.id; const productName = currentRow.querySelector(".td-name").textContent.trim(); DOM.btnConfirmDelete.dataset.id = id; DOM.productName.textContent = productName; }; const onClickConfirmDelete = (e) => { const btnEl = e.currentTarget; const id = btnEl.dataset.id; deleteProduct(id).then((data) => { if (data.success) { Toast_default(data.msg, "success").show(); bsModalDelete.hide(); loadProducts(); } else { Toast_default(data.msg, "error").show(); console.error(data); } }); }; const onClickMoveUp = (e) => { const btnEl = e.currentTarget; const currentRowEl = parents(btnEl, "tr")[0]; currentRowEl.previousElementSibling.before(currentRowEl); console.log("move up"); disableNonFunctionalButtons(); }; const onClickMoveDown = (e) => { const btnEl = e.currentTarget; const currentRowEl = parents(btnEl, "tr")[0]; currentRowEl.nextElementSibling.after(currentRowEl); console.log("move down"); disableNonFunctionalButtons(); }; const onMouseDownDrag = (e) => { const btnEl = e.currentTarget; const currentRowEl = parents(btnEl, "tr")[0]; currentRowEl.draggable = true; }; const onMouseUpDrag = (e) => { const btnEl = e.currentTarget; const currentRowEl = parents(btnEl, "tr")[0]; currentRowEl.draggable = false; }; const onDragStart = (e) => { console.log("DragEvent: ", e); const currentRowEl = e.currentTarget; const idx = [...currentRowEl.parentNode.children].indexOf(currentRowEl); e.dataTransfer.setData("text/plain", idx); console.log("tr index:", idx); }; const onDragOver = (e) => { e.preventDefault(); }; const onDrop = (e) => { const currentRowEl = e.currentTarget; const targetIdx = [...currentRowEl.parentNode.children].indexOf(currentRowEl); const sourceIdx = parseInt(e.dataTransfer.getData("text/plain")); console.log({ targetIdx, sourceIdx }); if (sourceIdx === targetIdx) { return; } const draggedEl = DOM.tBody.querySelector(`tr:nth-child(${sourceIdx + 1})`); if (sourceIdx > targetIdx) { currentRowEl.before(draggedEl); } else { currentRowEl.after(draggedEl); } disableNonFunctionalButtons(); }; const resetProducts = async () => { try { const response = await fetch(`${BASE_URL}/api/products/reset`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ reset: true }) }); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { Toast_default(error, "error").show(); console.error(error); return error; } }; const saveProducts = async () => { try { const response = await fetch(`${BASE_URL}/api/products/save`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ save: true }) }); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { Toast_default(error, "error").show(); console.error(error); return error; } }; const createProduct = async (product) => { try { const response = await fetch(`${BASE_URL}/api/products`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(product) }); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { Toast_default(error, "error").show(); console.error(error); return error; } }; const getProducts = async () => { try { const response = await fetch(`${BASE_URL}/api/products`); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { console.error(error); return error; } }; const getProduct = async (id) => { try { const response = await fetch(`${BASE_URL}/api/products/${id}`); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { console.error(error); return error; } }; const updateProduct = async (product) => { try { const response = await fetch(`${BASE_URL}/api/products`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(product) }); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { console.error(error); return error; } }; const deleteProduct = async (id) => { try { const response = await fetch(`${BASE_URL}/api/products/${id}`, { method: "DELETE", headers: { "Content-Type": "application/json" } }); if (!response.ok) { throw new Error("Fetch went wrong."); } const data = await response.json(); return data; } catch (error) { console.error(error); return error; } }; const initProducts = () => { getProducts().then((products) => { products.forEach((product) => { addProduct(product); }); Toast_default("Init products").show(); disableNonFunctionalButtons(); }); }; const loadProducts = () => { DOM.tBody.innerHTML = ""; getProducts().then((data) => { data.forEach((product) => { addProduct(product); }); disableNonFunctionalButtons(); }); }; const addProduct = (product) => { const { name, price, _id: id, position } = product; const trEl = DOM.templateRow.content.firstElementChild.cloneNode(true); const tdNameEl = trEl.querySelector(".td-name"); const tdPriceEl = trEl.querySelector(".td-price"); const btnRemoveEl = trEl.querySelector(".button-product-remove"); const btnMoveUpEl = trEl.querySelector(".button-product-move-up"); const btnMoveDownEl = trEl.querySelector(".button-product-move-down"); const btnDragEl = trEl.querySelector(".button-drag"); const btnEditEl = trEl.querySelector(".button-product-edit"); tdNameEl.textContent = name; tdPriceEl.textContent = price; btnEditEl.addEventListener("click", onClickEdit); btnRemoveEl.addEventListener("click", onClickRemove); btnMoveUpEl.addEventListener("click", onClickMoveUp); btnMoveDownEl.addEventListener("click", onClickMoveDown); btnDragEl.addEventListener("mousedown", onMouseDownDrag); btnDragEl.addEventListener("mouseup", onMouseUpDrag); trEl.addEventListener("dragstart", onDragStart); trEl.addEventListener("dragover", onDragOver); trEl.addEventListener("drop", onDrop); trEl.dataset.id = id; trEl.dataset.position = position; DOM.tBody.appendChild(trEl); }; const showModalEdit = (product) => { const { name = "", price = 0, _id: id, position } = product; DOM.inputEditName.value = name; DOM.inputEditPrice.value = price; DOM.inputEditId.value = id; DOM.inputEditPosition.value = position; }; const resetFields = () => { DOM.btnAdd.disabled = true; DOM.inputPrice.value = ""; DOM.inputName.value = ""; DOM.formEdit.reset(); }; const disableNonFunctionalButtons = () => { Array.from(DOM.tBody.querySelectorAll("tr")).forEach((tr) => { const btnMoveUp = tr.querySelector(".button-product-move-up"); const btnMoveDown = tr.querySelector(".button-product-move-down"); btnMoveUp.disabled = !tr.previousElementSibling; btnMoveDown.disabled = !tr.nextElementSibling; }); }; const parents = (el2, selector) => { const parents2 = []; while ((el2 = el2.parentNode) && el2 !== document) { if (!selector || el2.matches(selector)) parents2.push(el2); } return parents2; }; init(); return { init, initProducts, resetFields }; }; var ProductManager_default = ProductManager; // node_modules/@splidejs/splide/dist/js/splide.esm.js function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } var MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)"; var CREATED = 1; var MOUNTED = 2; var IDLE = 3; var MOVING = 4; var SCROLLING = 5; var DRAGGING = 6; var DESTROYED = 7; var STATES = { CREATED, MOUNTED, IDLE, MOVING, SCROLLING, DRAGGING, DESTROYED }; function empty(array) { array.length = 0; } function slice(arrayLike, start2, end2) { return Array.prototype.slice.call(arrayLike, start2, end2); } function apply(func) { return func.bind.apply(func, [null].concat(slice(arguments, 1))); } var nextTick = setTimeout; var noop2 = function noop3() { }; function raf(func) { return requestAnimationFrame(func); } function typeOf(type, subject) { return typeof subject === type; } function isObject(subject) { return !isNull(subject) && typeOf("object", subject); } var isArray = Array.isArray; var isFunction = apply(typeOf, "function"); var isString = apply(typeOf, "string"); var isUndefined = apply(typeOf, "undefined"); function isNull(subject) { return subject === null; } function isHTMLElement2(subject) { try { return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement; } catch (e) { return false; } } function toArray(value) { return isArray(value) ? value : [value]; } function forEach(values, iteratee) { toArray(values).forEach(iteratee); } function includes(array, value) { return array.indexOf(value) > -1; } function push(array, items) { array.push.apply(array, toArray(items)); return array; } function toggleClass(elm, classes, add) { if (elm) { forEach(classes, function(name) { if (name) { elm.classList[add ? "add" : "remove"](name); } }); } } function addClass(elm, classes) { toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true); } function append(parent, children2) { forEach(children2, parent.appendChild.bind(parent)); } function before(nodes, ref) { forEach(nodes, function(node) { var parent = (ref || node).parentNode; if (parent) { parent.insertBefore(node, ref); } }); } function matches(elm, selector) { return isHTMLElement2(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector); } function children(parent, selector) { var children2 = parent ? slice(parent.children) : []; return selector ? children2.filter(function(child2) { return matches(child2, selector); }) : children2; } function child(parent, selector) { return selector ? children(parent, selector)[0] : parent.firstElementChild; } var ownKeys = Object.keys; function forOwn(object, iteratee, right2) { if (object) { (right2 ? ownKeys(object).reverse() : ownKeys(object)).forEach(function(key) { key !== "__proto__" && iteratee(object[key], key); }); } return object; } function assign(object) { slice(arguments, 1).forEach(function(source) { forOwn(source, function(value, key) { object[key] = source[key]; }); }); return object; } function merge(object) { slice(arguments, 1).forEach(function(source) { forOwn(source, function(value, key) { if (isArray(value)) { object[key] = value.slice(); } else if (isObject(value)) { object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value); } else { object[key] = value; } }); }); return object; } function omit(object, keys) { forEach(keys || ownKeys(object), function(key) { delete object[key]; }); } function removeAttribute(elms, attrs) { forEach(elms, function(elm) { forEach(attrs, function(attr) { elm && elm.removeAttribute(attr); }); }); } function setAttribute(elms, attrs, value) { if (isObject(attrs)) { forOwn(attrs, function(value2, name) { setAttribute(elms, name, value2); }); } else { forEach(elms, function(elm) { isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); }); } } function create(tag, attrs, parent) { var elm = document.createElement(tag); if (attrs) { isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs); } parent && append(parent, elm); return elm; } function style(elm, prop, value) { if (isUndefined(value)) { return getComputedStyle(elm)[prop]; } if (!isNull(value)) { elm.style[prop] = "" + value; } } function display(elm, display2) { style(elm, "display", display2); } function focus(elm) { elm["setActive"] && elm["setActive"]() || elm.focus({ preventScroll: true }); } function getAttribute(elm, attr) { return elm.getAttribute(attr); } function hasClass(elm, className) { return elm && elm.classList.contains(className); } function rect(target) { return target.getBoundingClientRect(); } function remove(nodes) { forEach(nodes, function(node) { if (node && node.parentNode) { node.parentNode.removeChild(node); } }); } function parseHtml(html) { return child(new DOMParser().parseFromString(html, "text/html").body); } function prevent(e, stopPropagation) { e.preventDefault(); if (stopPropagation) { e.stopPropagation(); e.stopImmediatePropagation(); } } function query(parent, selector) { return parent && parent.querySelector(selector); } function queryAll(parent, selector) { return selector ? slice(parent.querySelectorAll(selector)) : []; } function removeClass(elm, classes) { toggleClass(elm, classes, false); } function timeOf(e) { return e.timeStamp; } function unit(value) { return isString(value) ? value : value ? value + "px" : ""; } var PROJECT_CODE = "splide"; var DATA_ATTRIBUTE = "data-" + PROJECT_CODE; function assert(condition, message) { if (!condition) { throw new Error("[" + PROJECT_CODE + "] " + (message || "")); } } var min2 = Math.min; var max2 = Math.max; var floor = Math.floor; var ceil = Math.ceil; var abs = Math.abs; function approximatelyEqual(x, y, epsilon) { return abs(x - y) < epsilon; } function between(number, x, y, exclusive) { var minimum = min2(x, y); var maximum = max2(x, y); return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum; } function clamp(number, x, y) { var minimum = min2(x, y); var maximum = max2(x, y); return min2(max2(minimum, number), maximum); } function sign(x) { return +(x > 0) - +(x < 0); } function format(string, replacements) { forEach(replacements, function(replacement) { string = string.replace("%s", "" + replacement); }); return string; } function pad(number) { return number < 10 ? "0" + number : "" + number; } var ids = {}; function uniqueId(prefix) { return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1); } function EventBinder() { var listeners = []; function bind(targets, events, callback, options) { forEachEvent(targets, events, function(target, event, namespace) { var isEventTarget = "addEventListener" in target; var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); listeners.push([target, event, namespace, callback, remover]); }); } function unbind(targets, events, callback) { forEachEvent(targets, events, function(target, event, namespace) { listeners = listeners.filter(function(listener) { if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { listener[4](); return false; } return true; }); }); } function dispatch(target, type, detail) { var e; var bubbles = true; if (typeof CustomEvent === "function") { e = new CustomEvent(type, { bubbles, detail }); } else { e = document.createEvent("CustomEvent"); e.initCustomEvent(type, bubbles, false, detail); } target.dispatchEvent(e); return e; } function forEachEvent(targets, events, iteratee) { forEach(targets, function(target) { target && forEach(events, function(events2) { events2.split(" ").forEach(function(eventNS) { var fragment = eventNS.split("."); iteratee(target, fragment[0], fragment[1]); }); }); }); } function destroy() { listeners.forEach(function(data) { data[4](); }); empty(listeners); } return { bind, unbind, dispatch, destroy }; } var EVENT_MOUNTED = "mounted"; var EVENT_READY = "ready"; var EVENT_MOVE = "move"; var EVENT_MOVED = "moved"; var EVENT_CLICK2 = "click"; var EVENT_ACTIVE = "active"; var EVENT_INACTIVE = "inactive"; var EVENT_VISIBLE = "visible"; var EVENT_HIDDEN2 = "hidden"; var EVENT_REFRESH = "refresh"; var EVENT_UPDATED = "updated"; var EVENT_RESIZE2 = "resize"; var EVENT_RESIZED = "resized"; var EVENT_DRAG = "drag"; var EVENT_DRAGGING = "dragging"; var EVENT_DRAGGED = "dragged"; var EVENT_SCROLL = "scroll"; var EVENT_SCROLLED = "scrolled"; var EVENT_OVERFLOW = "overflow"; var EVENT_DESTROY = "destroy"; var EVENT_ARROWS_MOUNTED = "arrows:mounted"; var EVENT_ARROWS_UPDATED = "arrows:updated"; var EVENT_PAGINATION_MOUNTED = "pagination:mounted"; var EVENT_PAGINATION_UPDATED = "pagination:updated"; var EVENT_NAVIGATION_MOUNTED = "navigation:mounted"; var EVENT_AUTOPLAY_PLAY = "autoplay:play"; var EVENT_AUTOPLAY_PLAYING = "autoplay:playing"; var EVENT_AUTOPLAY_PAUSE = "autoplay:pause"; var EVENT_LAZYLOAD_LOADED = "lazyload:loaded"; var EVENT_SLIDE_KEYDOWN = "sk"; var EVENT_SHIFTED = "sh"; var EVENT_END_INDEX_CHANGED = "ei"; function EventInterface(Splide2) { var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); var binder = EventBinder(); function on(events, callback) { binder.bind(bus, toArray(events).join(" "), function(e) { callback.apply(callback, isArray(e.detail) ? e.detail : []); }); } function emit(event) { binder.dispatch(bus, event, slice(arguments, 1)); } if (Splide2) { Splide2.event.on(EVENT_DESTROY, binder.destroy); } return assign(binder, { bus, on, off: apply(binder.unbind, bus), emit }); } function RequestInterval(interval, onInterval, onUpdate, limit) { var now = Date.now; var startTime; var rate = 0; var id; var paused = true; var count = 0; function update() { if (!paused) { rate = interval ? min2((now() - startTime) / interval, 1) : 1; onUpdate && onUpdate(rate); if (rate >= 1) { onInterval(); startTime = now(); if (limit && ++count >= limit) { return pause(); } } id = raf(update); } } function start2(resume) { resume || cancel(); startTime = now() - (resume ? rate * interval : 0); paused = false; id = raf(update); } function pause() { paused = true; } function rewind() { startTime = now(); rate = 0; if (onUpdate) { onUpdate(rate); } } function cancel() { id && cancelAnimationFrame(id); rate = 0; id = 0; paused = true; } function set(time) { interval = time; } function isPaused() { return paused; } return { start: start2, rewind, pause, cancel, set, isPaused }; } function State(initialState) { var state = initialState; function set(value) { state = value; } function is(states) { return includes(toArray(states), state); } return { set, is }; } function Throttle(func, duration) { var interval = RequestInterval(duration || 0, func, null, 1); return function() { interval.isPaused() && interval.start(); }; } function Media(Splide2, Components2, options) { var state = Splide2.state; var breakpoints = options.breakpoints || {}; var reducedMotion = options.reducedMotion || {}; var binder = EventBinder(); var queries = []; function setup() { var isMin = options.mediaQuery === "min"; ownKeys(breakpoints).sort(function(n, m) { return isMin ? +n - +m : +m - +n; }).forEach(function(key) { register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)"); }); register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION); update(); } function destroy(completely) { if (completely) { binder.destroy(); } } function register(options2, query2) { var queryList = matchMedia(query2); binder.bind(queryList, "change", update); queries.push([options2, queryList]); } function update() { var destroyed = state.is(DESTROYED); var direction = options.direction; var merged = queries.reduce(function(merged2, entry) { return merge(merged2, entry[1].matches ? entry[0] : {}); }, {}); omit(options); set(merged); if (options.destroy) { Splide2.destroy(options.destroy === "completely"); } else if (destroyed) { destroy(true); Splide2.mount(); } else { direction !== options.direction && Splide2.refresh(); } } function reduce(enable) { if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) { enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion)); } } function set(opts, base, notify) { merge(options, opts); base && merge(Object.getPrototypeOf(options), opts); if (notify || !state.is(CREATED)) { Splide2.emit(EVENT_UPDATED, options); } } return { setup, destroy, reduce, set }; } var ARROW = "Arrow"; var ARROW_LEFT = ARROW + "Left"; var ARROW_RIGHT = ARROW + "Right"; var ARROW_UP = ARROW + "Up"; var ARROW_DOWN = ARROW + "Down"; var RTL = "rtl"; var TTB = "ttb"; var ORIENTATION_MAP = { width: ["height"], left: ["top", "right"], right: ["bottom", "left"], x: ["y"], X: ["Y"], Y: ["X"], ArrowLeft: [ARROW_UP, ARROW_RIGHT], ArrowRight: [ARROW_DOWN, ARROW_LEFT] }; function Direction(Splide2, Components2, options) { function resolve(prop, axisOnly, direction) { direction = direction || options.direction; var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1; return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function(match, offset2) { var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match; return offset2 > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement; }); } function orient(value) { return value * (options.direction === RTL ? 1 : -1); } return { resolve, orient }; } var ROLE = "role"; var TAB_INDEX = "tabindex"; var DISABLED = "disabled"; var ARIA_PREFIX = "aria-"; var ARIA_CONTROLS = ARIA_PREFIX + "controls"; var ARIA_CURRENT = ARIA_PREFIX + "current"; var ARIA_SELECTED = ARIA_PREFIX + "selected"; var ARIA_LABEL = ARIA_PREFIX + "label"; var ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby"; var ARIA_HIDDEN = ARIA_PREFIX + "hidden"; var ARIA_ORIENTATION = ARIA_PREFIX + "orientation"; var ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription"; var ARIA_LIVE = ARIA_PREFIX + "live"; var ARIA_BUSY = ARIA_PREFIX + "busy"; var ARIA_ATOMIC = ARIA_PREFIX + "atomic"; var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION]; var CLASS_PREFIX = PROJECT_CODE + "__"; var STATUS_CLASS_PREFIX = "is-"; var CLASS_ROOT = PROJECT_CODE; var CLASS_TRACK = CLASS_PREFIX + "track"; var CLASS_LIST = CLASS_PREFIX + "list"; var CLASS_SLIDE = CLASS_PREFIX + "slide"; var CLASS_CLONE = CLASS_SLIDE + "--clone"; var CLASS_CONTAINER = CLASS_SLIDE + "__container"; var CLASS_ARROWS = CLASS_PREFIX + "arrows"; var CLASS_ARROW = CLASS_PREFIX + "arrow"; var CLASS_ARROW_PREV = CLASS_ARROW + "--prev"; var CLASS_ARROW_NEXT = CLASS_ARROW + "--next"; var CLASS_PAGINATION = CLASS_PREFIX + "pagination"; var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page"; var CLASS_PROGRESS = CLASS_PREFIX + "progress"; var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar"; var CLASS_TOGGLE = CLASS_PREFIX + "toggle"; var CLASS_TOGGLE_PLAY = CLASS_TOGGLE + "__play"; var CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + "__pause"; var CLASS_SPINNER = CLASS_PREFIX + "spinner"; var CLASS_SR = CLASS_PREFIX + "sr"; var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized"; var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active"; var CLASS_PREV = STATUS_CLASS_PREFIX + "prev"; var CLASS_NEXT = STATUS_CLASS_PREFIX + "next"; var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible"; var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading"; var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in"; var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow"; var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW]; var CLASSES = { slide: CLASS_SLIDE, clone: CLASS_CLONE, arrows: CLASS_ARROWS, arrow: CLASS_ARROW, prev: CLASS_ARROW_PREV, next: CLASS_ARROW_NEXT, pagination: CLASS_PAGINATION, page: CLASS_PAGINATION_PAGE, spinner: CLASS_SPINNER }; function closest(from, selector) { if (isFunction(from.closest)) { return from.closest(selector); } var elm = from; while (elm && elm.nodeType === 1) { if (matches(elm, selector)) { break; } elm = elm.parentElement; } return elm; } var FRICTION = 5; var LOG_INTERVAL = 200; var POINTER_DOWN_EVENTS = "touchstart mousedown"; var POINTER_MOVE_EVENTS = "touchmove mousemove"; var POINTER_UP_EVENTS = "touchend touchcancel mouseup click"; function Elements(Splide2, Components2, options) { var _EventInterface = EventInterface(Splide2), on = _EventInterface.on, bind = _EventInterface.bind; var root = Splide2.root; var i18n = options.i18n; var elements = {}; var slides = []; var rootClasses = []; var trackClasses = []; var track; var list; var isUsingKey; function setup() { collect(); init(); update(); } function mount() { on(EVENT_REFRESH, destroy); on(EVENT_REFRESH, setup); on(EVENT_UPDATED, update); bind(document, POINTER_DOWN_EVENTS + " keydown", function(e) { isUsingKey = e.type === "keydown"; }, { capture: true }); bind(root, "focusin", function() { toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey); }); } function destroy(completely) { var attrs = ALL_ATTRIBUTES.concat("style"); empty(slides); removeClass(root, rootClasses); removeClass(track, trackClasses); removeAttribute([track, list], attrs); removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]); } function update() { removeClass(root, rootClasses); removeClass(track, trackClasses); rootClasses = getClasses(CLASS_ROOT); trackClasses = getClasses(CLASS_TRACK); addClass(root, rootClasses); addClass(track, trackClasses); setAttribute(root, ARIA_LABEL, options.label); setAttribute(root, ARIA_LABELLEDBY, options.labelledby); } function collect() { track = find("." + CLASS_TRACK); list = child(track, "." + CLASS_LIST); assert(track && list, "A track/list element is missing."); push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")")); forOwn({ arrows: CLASS_ARROWS, pagination: CLASS_PAGINATION, prev: CLASS_ARROW_PREV, next: CLASS_ARROW_NEXT, bar: CLASS_PROGRESS_BAR, toggle: CLASS_TOGGLE }, function(className, key) { elements[key] = find("." + className); }); assign(elements, { root, track, list, slides }); } function init() { var id = root.id || uniqueId(PROJECT_CODE); var role = options.role; root.id = id; track.id = track.id || id + "-track"; list.id = list.id || id + "-list"; if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) { setAttribute(root, ROLE, role); } setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel); setAttribute(list, ROLE, "presentation"); } function find(selector) { var elm = query(root, selector); return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0; } function getClasses(base) { return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE]; } return assign(elements, { setup, mount, destroy }); } var SLIDE = "slide"; var LOOP = "loop"; var FADE = "fade"; function Slide$1(Splide2, index, slideIndex, slide) { var event = EventInterface(Splide2); var on = event.on, emit = event.emit, bind = event.bind; var Components = Splide2.Components, root = Splide2.root, options = Splide2.options; var isNavigation = options.isNavigation, updateOnMove = options.updateOnMove, i18n = options.i18n, pagination = options.pagination, slideFocus = options.slideFocus; var resolve = Components.Direction.resolve; var styles = getAttribute(slide, "style"); var label = getAttribute(slide, ARIA_LABEL); var isClone = slideIndex > -1; var container = child(slide, "." + CLASS_CONTAINER); var destroyed; function mount() { if (!isClone) { slide.id = root.id + "-slide" + pad(index + 1); setAttribute(slide, ROLE, pagination ? "tabpanel" : "group"); setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide); setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length])); } listen(); } function listen() { bind(slide, "click", apply(emit, EVENT_CLICK2, self)); bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self)); on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update); on(EVENT_NAVIGATION_MOUNTED, initNavigation); if (updateOnMove) { on(EVENT_MOVE, onMove); } } function destroy() { destroyed = true; event.destroy(); removeClass(slide, STATUS_CLASSES); removeAttribute(slide, ALL_ATTRIBUTES); setAttribute(slide, "style", styles); setAttribute(slide, ARIA_LABEL, label || ""); } function initNavigation() { var controls = Splide2.splides.map(function(target) { var Slide2 = target.splide.Components.Slides.getAt(index); return Slide2 ? Slide2.slide.id : ""; }).join(" "); setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1)); setAttribute(slide, ARIA_CONTROLS, controls); setAttribute(slide, ROLE, slideFocus ? "button" : ""); slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION); } function onMove() { if (!destroyed) { update(); } } function update() { if (!destroyed) { var curr = Splide2.index; updateActivity(); updateVisibility(); toggleClass(slide, CLASS_PREV, index === curr - 1); toggleClass(slide, CLASS_NEXT, index === curr + 1); } } function updateActivity() { var active = isActive(); if (active !== hasClass(slide, CLASS_ACTIVE)) { toggleClass(slide, CLASS_ACTIVE, active); setAttribute(slide, ARIA_CURRENT, isNavigation && active || ""); emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self); } } function updateVisibility() { var visible = isVisible2(); var hidden = !visible && (!isActive() || isClone); if (!Splide2.state.is([MOVING, SCROLLING])) { setAttribute(slide, ARIA_HIDDEN, hidden || ""); } setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : ""); if (slideFocus) { setAttribute(slide, TAB_INDEX, hidden ? -1 : 0); } if (visible !== hasClass(slide, CLASS_VISIBLE)) { toggleClass(slide, CLASS_VISIBLE, visible); emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN2, self); } if (!visible && document.activeElement === slide) { var Slide2 = Components.Slides.getAt(Splide2.index); Slide2 && focus(Slide2.slide); } } function style$1(prop, value, useContainer) { style(useContainer && container || slide, prop, value); } function isActive() { var curr = Splide2.index; return curr === index || options.cloneStatus && curr === slideIndex; } function isVisible2() { if (Splide2.is(FADE)) { return isActive(); } var trackRect = rect(Components.Elements.track); var slideRect = rect(slide); var left2 = resolve("left", true); var right2 = resolve("right", true); return floor(trackRect[left2]) <= ceil(slideRect[left2]) && floor(slideRect[right2]) <= ceil(trackRect[right2]); } function isWithin(from, distance) { var diff = abs(from - index); if (!isClone && (options.rewind || Splide2.is(LOOP))) { diff = min2(diff, Splide2.length - diff); } return diff <= distance; } var self = { index, slideIndex, slide, container, isClone, mount, destroy, update, style: style$1, isWithin }; return self; } function Slides(Splide2, Components2, options) { var _EventInterface2 = EventInterface(Splide2), on = _EventInterface2.on, emit = _EventInterface2.emit, bind = _EventInterface2.bind; var _Components2$Elements = Components2.Elements, slides = _Components2$Elements.slides, list = _Components2$Elements.list; var Slides2 = []; function mount() { init(); on(EVENT_REFRESH, destroy); on(EVENT_REFRESH, init); } function init() { slides.forEach(function(slide, index) { register(slide, index, -1); }); } function destroy() { forEach$1(function(Slide2) { Slide2.destroy(); }); empty(Slides2); } function update() { forEach$1(function(Slide2) { Slide2.update(); }); } function register(slide, index, slideIndex) { var object = Slide$1(Splide2, index, slideIndex, slide); object.mount(); Slides2.push(object); Slides2.sort(function(Slide1, Slide2) { return Slide1.index - Slide2.index; }); } function get(excludeClones) { return excludeClones ? filter(function(Slide2) { return !Slide2.isClone; }) : Slides2; } function getIn(page) { var Controller2 = Components2.Controller; var index = Controller2.toIndex(page); var max3 = Controller2.hasFocus() ? 1 : options.perPage; return filter(function(Slide2) { return between(Slide2.index, index, index + max3 - 1); }); } function getAt(index) { return filter(index)[0]; } function add(items, index) { forEach(items, function(slide) { if (isString(slide)) { slide = parseHtml(slide); } if (isHTMLElement2(slide)) { var ref = slides[index]; ref ? before(slide, ref) : append(list, slide); addClass(slide, options.classes.slide); observeImages(slide, apply(emit, EVENT_RESIZE2)); } }); emit(EVENT_REFRESH); } function remove$1(matcher) { remove(filter(matcher).map(function(Slide2) { return Slide2.slide; })); emit(EVENT_REFRESH); } function forEach$1(iteratee, excludeClones) { get(excludeClones).forEach(iteratee); } function filter(matcher) { return Slides2.filter(isFunction(matcher) ? matcher : function(Slide2) { return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index); }); } function style2(prop, value, useContainer) { forEach$1(function(Slide2) { Slide2.style(prop, value, useContainer); }); } function observeImages(elm, callback) { var images = queryAll(elm, "img"); var length = images.length; if (length) { images.forEach(function(img) { bind(img, "load error", function() { if (!--length) { callback(); } }); }); } else { callback(); } } function getLength(excludeClones) { return excludeClones ? slides.length : Slides2.length; } function isEnough() { return Slides2.length > options.perPage; } return { mount, destroy, update, register, get, getIn, getAt, add, remove: remove$1, forEach: forEach$1, filter, style: style2, getLength, isEnough }; } function Layout(Splide2, Components2, options) { var _EventInterface3 = EventInterface(Splide2), on = _EventInterface3.on, bind = _EventInterface3.bind, emit = _EventInterface3.emit; var Slides2 = Components2.Slides; var resolve = Components2.Direction.resolve; var _Components2$Elements2 = Components2.Elements, root = _Components2$Elements2.root, track = _Components2$Elements2.track, list = _Components2$Elements2.list; var getAt = Slides2.getAt, styleSlides = Slides2.style; var vertical; var rootRect; var overflow; function mount() { init(); bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE2))); on([EVENT_UPDATED, EVENT_REFRESH], init); on(EVENT_RESIZE2, resize); } function init() { vertical = options.direction === TTB; style(root, "maxWidth", unit(options.width)); style(track, resolve("paddingLeft"), cssPadding(false)); style(track, resolve("paddingRight"), cssPadding(true)); resize(true); } function resize(force) { var newRect = rect(root); if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) { style(track, "height", cssTrackHeight()); styleSlides(resolve("marginRight"), unit(options.gap)); styleSlides("width", cssSlideWidth()); styleSlides("height", cssSlideHeight(), true); rootRect = newRect; emit(EVENT_RESIZED); if (overflow !== (overflow = isOverflow())) { toggleClass(root, CLASS_OVERFLOW, overflow); emit(EVENT_OVERFLOW, overflow); } } } function cssPadding(right2) { var padding = options.padding; var prop = resolve(right2 ? "right" : "left"); return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px"; } function cssTrackHeight() { var height = ""; if (vertical) { height = cssHeight(); assert(height, "height or heightRatio is missing."); height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")"; } return height; } function cssHeight() { return unit(options.height || rect(list).width * options.heightRatio); } function cssSlideWidth() { return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize()); } function cssSlideHeight() { return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight()); } function cssSlideSize() { var gap = unit(options.gap); return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")"; } function listSize() { return rect(list)[resolve("width")]; } function slideSize(index, withoutGap) { var Slide2 = getAt(index || 0); return Slide2 ? rect(Slide2.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0; } function totalSize(index, withoutGap) { var Slide2 = getAt(index); if (Slide2) { var right2 = rect(Slide2.slide)[resolve("right")]; var left2 = rect(list)[resolve("left")]; return abs(right2 - left2) + (withoutGap ? 0 : getGap()); } return 0; } function sliderSize(withoutGap) { return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap); } function getGap() { var Slide2 = getAt(0); return Slide2 && parseFloat(style(Slide2.slide, resolve("marginRight"))) || 0; } function getPadding(right2) { return parseFloat(style(track, resolve("padding" + (right2 ? "Right" : "Left")))) || 0; } function isOverflow() { return Splide2.is(FADE) || sliderSize(true) > listSize(); } return { mount, resize, listSize, slideSize, sliderSize, totalSize, getPadding, isOverflow }; } var MULTIPLIER = 2; function Clones(Splide2, Components2, options) { var event = EventInterface(Splide2); var on = event.on; var Elements2 = Components2.Elements, Slides2 = Components2.Slides; var resolve = Components2.Direction.resolve; var clones = []; var cloneCount; function mount() { on(EVENT_REFRESH, remount); on([EVENT_UPDATED, EVENT_RESIZE2], observe); if (cloneCount = computeCloneCount()) { generate(cloneCount); Components2.Layout.resize(true); } } function remount() { destroy(); mount(); } function destroy() { remove(clones); empty(clones); event.destroy(); } function observe() { var count = computeCloneCount(); if (cloneCount !== count) { if (cloneCount < count || !count) { event.emit(EVENT_REFRESH); } } } function generate(count) { var slides = Slides2.get().slice(); var length = slides.length; if (length) { while (slides.length < count) { push(slides, slides); } push(slides.slice(-count), slides.slice(0, count)).forEach(function(Slide2, index) { var isHead = index < count; var clone = cloneDeep(Slide2.slide, index); isHead ? before(clone, slides[0].slide) : append(Elements2.list, clone); push(clones, clone); Slides2.register(clone, index - count + (isHead ? 0 : length), Slide2.index); }); } } function cloneDeep(elm, index) { var clone = elm.cloneNode(true); addClass(clone, options.classes.clone); clone.id = Splide2.root.id + "-clone" + pad(index + 1); return clone; } function computeCloneCount() { var clones2 = options.clones; if (!Splide2.is(LOOP)) { clones2 = 0; } else if (isUndefined(clones2)) { var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0); var fixedCount = fixedSize && ceil(rect(Elements2.track)[resolve("width")] / fixedSize); clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER; } return clones2; } return { mount, destroy }; } function Move(Splide2, Components2, options) { var _EventInterface4 = EventInterface(Splide2), on = _EventInterface4.on, emit = _EventInterface4.emit; var set = Splide2.state.set; 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; var _Components2$Directio = Components2.Direction, resolve = _Components2$Directio.resolve, orient = _Components2$Directio.orient; var _Components2$Elements3 = Components2.Elements, list = _Components2$Elements3.list, track = _Components2$Elements3.track; var Transition; function mount() { Transition = Components2.Transition; on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition); } function reposition() { if (!Components2.Controller.isBusy()) { Components2.Scroll.cancel(); jump(Splide2.index); Components2.Slides.update(); } } function move(dest, index, prev, callback) { if (dest !== index && canShift(dest > prev)) { cancel(); translate(shift(getPosition(), dest > prev), true); } set(MOVING); emit(EVENT_MOVE, index, prev, dest); Transition.start(index, function() { set(IDLE); emit(EVENT_MOVED, index, prev, dest); callback && callback(); }); } function jump(index) { translate(toPosition(index, true)); } function translate(position, preventLoop) { if (!Splide2.is(FADE)) { var destination = preventLoop ? position : loop(position); style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)"); position !== destination && emit(EVENT_SHIFTED); } } function loop(position) { if (Splide2.is(LOOP)) { var index = toIndex(position); var exceededMax = index > Components2.Controller.getEnd(); var exceededMin = index < 0; if (exceededMin || exceededMax) { position = shift(position, exceededMax); } } return position; } function shift(position, backwards) { var excess = position - getLimit(backwards); var size = sliderSize(); position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1); return position; } function cancel() { translate(getPosition(), true); Transition.cancel(); } function toIndex(position) { var Slides2 = Components2.Slides.get(); var index = 0; var minDistance = Infinity; for (var i = 0; i < Slides2.length; i++) { var slideIndex = Slides2[i].index; var distance = abs(toPosition(slideIndex, true) - position); if (distance <= minDistance) { minDistance = distance; index = slideIndex; } else { break; } } return index; } function toPosition(index, trimming) { var position = orient(totalSize(index - 1) - offset2(index)); return trimming ? trim(position) : position; } function getPosition() { var left2 = resolve("left"); return rect(list)[left2] - rect(track)[left2] + orient(getPadding(false)); } function trim(position) { if (options.trimSpace && Splide2.is(SLIDE)) { position = clamp(position, 0, orient(sliderSize(true) - listSize())); } return position; } function offset2(index) { var focus2 = options.focus; return focus2 === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus2 * slideSize(index) || 0; } function getLimit(max3) { return toPosition(max3 ? Components2.Controller.getEnd() : 0, !!options.trimSpace); } function canShift(backwards) { var shifted = orient(shift(getPosition(), backwards)); return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")]; } function exceededLimit(max3, position) { position = isUndefined(position) ? getPosition() : position; var exceededMin = max3 !== true && orient(position) < orient(getLimit(false)); var exceededMax = max3 !== false && orient(position) > orient(getLimit(true)); return exceededMin || exceededMax; } return { mount, move, jump, translate, shift, cancel, toIndex, toPosition, getPosition, getLimit, exceededLimit, reposition }; } function Controller(Splide2, Components2, options) { var _EventInterface5 = EventInterface(Splide2), on = _EventInterface5.on, emit = _EventInterface5.emit; var Move2 = Components2.Move; var getPosition = Move2.getPosition, getLimit = Move2.getLimit, toPosition = Move2.toPosition; var _Components2$Slides = Components2.Slides, isEnough = _Components2$Slides.isEnough, getLength = _Components2$Slides.getLength; var omitEnd = options.omitEnd; var isLoop = Splide2.is(LOOP); var isSlide = Splide2.is(SLIDE); var getNext = apply(getAdjacent, false); var getPrev = apply(getAdjacent, true); var currIndex = options.start || 0; var endIndex; var prevIndex = currIndex; var slideCount; var perMove; var perPage; function mount() { init(); on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init); on(EVENT_RESIZED, onResized); } function init() { slideCount = getLength(true); perMove = options.perMove; perPage = options.perPage; endIndex = getEnd(); var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1); if (index !== currIndex) { currIndex = index; Move2.reposition(); } } function onResized() { if (endIndex !== getEnd()) { emit(EVENT_END_INDEX_CHANGED); } } function go(control, allowSameIndex, callback) { if (!isBusy()) { var dest = parse(control); var index = loop(dest); if (index > -1 && (allowSameIndex || index !== currIndex)) { setIndex(index); Move2.move(dest, index, prevIndex, callback); } } } function scroll(destination, duration, snap, callback) { Components2.Scroll.scroll(destination, duration, snap, function() { var index = loop(Move2.toIndex(getPosition())); setIndex(omitEnd ? min2(index, endIndex) : index); callback && callback(); }); } function parse(control) { var index = currIndex; if (isString(control)) { var _ref = control.match(/([+\-<>])(\d+)?/) || [], indicator = _ref[1], number = _ref[2]; if (indicator === "+" || indicator === "-") { index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex); } else if (indicator === ">") { index = number ? toIndex(+number) : getNext(true); } else if (indicator === "<") { index = getPrev(true); } } else { index = isLoop ? control : clamp(control, 0, endIndex); } return index; } function getAdjacent(prev, destination) { var number = perMove || (hasFocus() ? 1 : perPage); var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus())); if (dest === -1 && isSlide) { if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) { return prev ? 0 : endIndex; } } return destination ? dest : loop(dest); } function computeDestIndex(dest, from, snapPage) { if (isEnough() || hasFocus()) { var index = computeMovableDestIndex(dest); if (index !== dest) { from = dest; dest = index; snapPage = false; } if (dest < 0 || dest > endIndex) { if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) { dest = toIndex(toPage(dest)); } else { if (isLoop) { dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest; } else if (options.rewind) { dest = dest < 0 ? endIndex : 0; } else { dest = -1; } } } else { if (snapPage && dest !== from) { dest = toIndex(toPage(from) + (dest < from ? -1 : 1)); } } } else { dest = -1; } return dest; } function computeMovableDestIndex(dest) { if (isSlide && options.trimSpace === "move" && dest !== currIndex) { var position = getPosition(); while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) { dest < currIndex ? --dest : ++dest; } } return dest; } function loop(index) { return isLoop ? (index + slideCount) % slideCount || 0 : index; } function getEnd() { var end2 = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage); while (omitEnd && end2-- > 0) { if (toPosition(slideCount - 1, true) !== toPosition(end2, true)) { end2++; break; } } return clamp(end2, 0, slideCount - 1); } function toIndex(page) { return clamp(hasFocus() ? page : perPage * page, 0, endIndex); } function toPage(index) { return hasFocus() ? min2(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage); } function toDest(destination) { var closest2 = Move2.toIndex(destination); return isSlide ? clamp(closest2, 0, endIndex) : closest2; } function setIndex(index) { if (index !== currIndex) { prevIndex = currIndex; currIndex = index; } } function getIndex(prev) { return prev ? prevIndex : currIndex; } function hasFocus() { return !isUndefined(options.focus) || options.isNavigation; } function isBusy() { return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition; } return { mount, go, scroll, getNext, getPrev, getAdjacent, getEnd, setIndex, getIndex, toIndex, toPage, toDest, hasFocus, isBusy }; } var XML_NAME_SPACE = "http://www.w3.org/2000/svg"; var 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"; var SIZE = 40; function Arrows(Splide2, Components2, options) { var event = EventInterface(Splide2); var on = event.on, bind = event.bind, emit = event.emit; var classes = options.classes, i18n = options.i18n; var Elements2 = Components2.Elements, Controller2 = Components2.Controller; var placeholder = Elements2.arrows, track = Elements2.track; var wrapper = placeholder; var prev = Elements2.prev; var next = Elements2.next; var created; var wrapperClasses; var arrows = {}; function mount() { init(); on(EVENT_UPDATED, remount); } function remount() { destroy(); mount(); } function init() { var enabled = options.arrows; if (enabled && !(prev && next)) { createArrows(); } if (prev && next) { assign(arrows, { prev, next }); display(wrapper, enabled ? "" : "none"); addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction); if (enabled) { listen(); update(); setAttribute([prev, next], ARIA_CONTROLS, track.id); emit(EVENT_ARROWS_MOUNTED, prev, next); } } } function destroy() { event.destroy(); removeClass(wrapper, wrapperClasses); if (created) { remove(placeholder ? [prev, next] : wrapper); prev = next = null; } else { removeAttribute([prev, next], ALL_ATTRIBUTES); } } function listen() { on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update); bind(next, "click", apply(go, ">")); bind(prev, "click", apply(go, "<")); } function go(control) { Controller2.go(control, true); } function createArrows() { wrapper = placeholder || create("div", classes.arrows); prev = createArrow(true); next = createArrow(false); created = true; append(wrapper, [prev, next]); !placeholder && before(wrapper, track); } function createArrow(prev2) { var arrow2 = '