File indexing completed on 2026-04-09 07:58:23
0001
0002
0003
0004
0005
0006 (function (global, factory) {
0007 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
0008 typeof define === 'function' && define.amd ? define(factory) :
0009 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory());
0010 }(this, (function () { 'use strict';
0011
0012 function _defineProperties(target, props) {
0013 for (var i = 0; i < props.length; i++) {
0014 var descriptor = props[i];
0015 descriptor.enumerable = descriptor.enumerable || false;
0016 descriptor.configurable = true;
0017 if ("value" in descriptor) descriptor.writable = true;
0018 Object.defineProperty(target, descriptor.key, descriptor);
0019 }
0020 }
0021
0022 function _createClass(Constructor, protoProps, staticProps) {
0023 if (protoProps) _defineProperties(Constructor.prototype, protoProps);
0024 if (staticProps) _defineProperties(Constructor, staticProps);
0025 return Constructor;
0026 }
0027
0028 function _extends() {
0029 _extends = Object.assign || function (target) {
0030 for (var i = 1; i < arguments.length; i++) {
0031 var source = arguments[i];
0032
0033 for (var key in source) {
0034 if (Object.prototype.hasOwnProperty.call(source, key)) {
0035 target[key] = source[key];
0036 }
0037 }
0038 }
0039
0040 return target;
0041 };
0042
0043 return _extends.apply(this, arguments);
0044 }
0045
0046 function _inheritsLoose(subClass, superClass) {
0047 subClass.prototype = Object.create(superClass.prototype);
0048 subClass.prototype.constructor = subClass;
0049 subClass.__proto__ = superClass;
0050 }
0051
0052
0053
0054
0055
0056
0057
0058 var MAX_UID = 1000000;
0059 var MILLISECONDS_MULTIPLIER = 1000;
0060 var TRANSITION_END = 'transitionend';
0061
0062 var toType = function toType(obj) {
0063 if (obj === null || obj === undefined) {
0064 return "" + obj;
0065 }
0066
0067 return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
0068 };
0069
0070
0071
0072
0073
0074
0075
0076 var getUID = function getUID(prefix) {
0077 do {
0078 prefix += Math.floor(Math.random() * MAX_UID);
0079 } while (document.getElementById(prefix));
0080
0081 return prefix;
0082 };
0083
0084 var getSelector = function getSelector(element) {
0085 var selector = element.getAttribute('data-bs-target');
0086
0087 if (!selector || selector === '#') {
0088 var hrefAttr = element.getAttribute('href');
0089 selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
0090 }
0091
0092 return selector;
0093 };
0094
0095 var getSelectorFromElement = function getSelectorFromElement(element) {
0096 var selector = getSelector(element);
0097
0098 if (selector) {
0099 return document.querySelector(selector) ? selector : null;
0100 }
0101
0102 return null;
0103 };
0104
0105 var getElementFromSelector = function getElementFromSelector(element) {
0106 var selector = getSelector(element);
0107 return selector ? document.querySelector(selector) : null;
0108 };
0109
0110 var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
0111 if (!element) {
0112 return 0;
0113 }
0114
0115
0116 var _window$getComputedSt = window.getComputedStyle(element),
0117 transitionDuration = _window$getComputedSt.transitionDuration,
0118 transitionDelay = _window$getComputedSt.transitionDelay;
0119
0120 var floatTransitionDuration = Number.parseFloat(transitionDuration);
0121 var floatTransitionDelay = Number.parseFloat(transitionDelay);
0122
0123 if (!floatTransitionDuration && !floatTransitionDelay) {
0124 return 0;
0125 }
0126
0127
0128 transitionDuration = transitionDuration.split(',')[0];
0129 transitionDelay = transitionDelay.split(',')[0];
0130 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
0131 };
0132
0133 var triggerTransitionEnd = function triggerTransitionEnd(element) {
0134 element.dispatchEvent(new Event(TRANSITION_END));
0135 };
0136
0137 var isElement = function isElement(obj) {
0138 return (obj[0] || obj).nodeType;
0139 };
0140
0141 var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
0142 var called = false;
0143 var durationPadding = 5;
0144 var emulatedDuration = duration + durationPadding;
0145
0146 function listener() {
0147 called = true;
0148 element.removeEventListener(TRANSITION_END, listener);
0149 }
0150
0151 element.addEventListener(TRANSITION_END, listener);
0152 setTimeout(function () {
0153 if (!called) {
0154 triggerTransitionEnd(element);
0155 }
0156 }, emulatedDuration);
0157 };
0158
0159 var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
0160 Object.keys(configTypes).forEach(function (property) {
0161 var expectedTypes = configTypes[property];
0162 var value = config[property];
0163 var valueType = value && isElement(value) ? 'element' : toType(value);
0164
0165 if (!new RegExp(expectedTypes).test(valueType)) {
0166 throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
0167 }
0168 });
0169 };
0170
0171 var isVisible = function isVisible(element) {
0172 if (!element) {
0173 return false;
0174 }
0175
0176 if (element.style && element.parentNode && element.parentNode.style) {
0177 var elementStyle = getComputedStyle(element);
0178 var parentNodeStyle = getComputedStyle(element.parentNode);
0179 return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
0180 }
0181
0182 return false;
0183 };
0184
0185 var findShadowRoot = function findShadowRoot(element) {
0186 if (!document.documentElement.attachShadow) {
0187 return null;
0188 }
0189
0190
0191 if (typeof element.getRootNode === 'function') {
0192 var root = element.getRootNode();
0193 return root instanceof ShadowRoot ? root : null;
0194 }
0195
0196 if (element instanceof ShadowRoot) {
0197 return element;
0198 }
0199
0200
0201 if (!element.parentNode) {
0202 return null;
0203 }
0204
0205 return findShadowRoot(element.parentNode);
0206 };
0207
0208 var noop = function noop() {
0209 return function () {};
0210 };
0211
0212 var reflow = function reflow(element) {
0213 return element.offsetHeight;
0214 };
0215
0216 var getjQuery = function getjQuery() {
0217 var _window = window,
0218 jQuery = _window.jQuery;
0219
0220 if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
0221 return jQuery;
0222 }
0223
0224 return null;
0225 };
0226
0227 var onDOMContentLoaded = function onDOMContentLoaded(callback) {
0228 if (document.readyState === 'loading') {
0229 document.addEventListener('DOMContentLoaded', callback);
0230 } else {
0231 callback();
0232 }
0233 };
0234
0235 var isRTL = document.documentElement.dir === 'rtl';
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249 var mapData = function () {
0250 var storeData = {};
0251 var id = 1;
0252 return {
0253 set: function set(element, key, data) {
0254 if (typeof element.bsKey === 'undefined') {
0255 element.bsKey = {
0256 key: key,
0257 id: id
0258 };
0259 id++;
0260 }
0261
0262 storeData[element.bsKey.id] = data;
0263 },
0264 get: function get(element, key) {
0265 if (!element || typeof element.bsKey === 'undefined') {
0266 return null;
0267 }
0268
0269 var keyProperties = element.bsKey;
0270
0271 if (keyProperties.key === key) {
0272 return storeData[keyProperties.id];
0273 }
0274
0275 return null;
0276 },
0277 delete: function _delete(element, key) {
0278 if (typeof element.bsKey === 'undefined') {
0279 return;
0280 }
0281
0282 var keyProperties = element.bsKey;
0283
0284 if (keyProperties.key === key) {
0285 delete storeData[keyProperties.id];
0286 delete element.bsKey;
0287 }
0288 }
0289 };
0290 }();
0291
0292 var Data = {
0293 setData: function setData(instance, key, data) {
0294 mapData.set(instance, key, data);
0295 },
0296 getData: function getData(instance, key) {
0297 return mapData.get(instance, key);
0298 },
0299 removeData: function removeData(instance, key) {
0300 mapData.delete(instance, key);
0301 }
0302 };
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316 var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
0317 var stripNameRegex = /\..*/;
0318 var stripUidRegex = /::\d+$/;
0319 var eventRegistry = {};
0320
0321 var uidEvent = 1;
0322 var customEvents = {
0323 mouseenter: 'mouseover',
0324 mouseleave: 'mouseout'
0325 };
0326 var nativeEvents = 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']);
0327
0328
0329
0330
0331
0332
0333 function getUidEvent(element, uid) {
0334 return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++;
0335 }
0336
0337 function getEvent(element) {
0338 var uid = getUidEvent(element);
0339 element.uidEvent = uid;
0340 eventRegistry[uid] = eventRegistry[uid] || {};
0341 return eventRegistry[uid];
0342 }
0343
0344 function bootstrapHandler(element, fn) {
0345 return function handler(event) {
0346 event.delegateTarget = element;
0347
0348 if (handler.oneOff) {
0349 EventHandler.off(element, event.type, fn);
0350 }
0351
0352 return fn.apply(element, [event]);
0353 };
0354 }
0355
0356 function bootstrapDelegationHandler(element, selector, fn) {
0357 return function handler(event) {
0358 var domElements = element.querySelectorAll(selector);
0359
0360 for (var target = event.target; target && target !== this; target = target.parentNode) {
0361 for (var i = domElements.length; i--;) {
0362 if (domElements[i] === target) {
0363 event.delegateTarget = target;
0364
0365 if (handler.oneOff) {
0366 EventHandler.off(element, event.type, fn);
0367 }
0368
0369 return fn.apply(target, [event]);
0370 }
0371 }
0372 }
0373
0374
0375 return null;
0376 };
0377 }
0378
0379 function findHandler(events, handler, delegationSelector) {
0380 if (delegationSelector === void 0) {
0381 delegationSelector = null;
0382 }
0383
0384 var uidEventList = Object.keys(events);
0385
0386 for (var i = 0, len = uidEventList.length; i < len; i++) {
0387 var event = events[uidEventList[i]];
0388
0389 if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
0390 return event;
0391 }
0392 }
0393
0394 return null;
0395 }
0396
0397 function normalizeParams(originalTypeEvent, handler, delegationFn) {
0398 var delegation = typeof handler === 'string';
0399 var originalHandler = delegation ? delegationFn : handler;
0400
0401 var typeEvent = originalTypeEvent.replace(stripNameRegex, '');
0402 var custom = customEvents[typeEvent];
0403
0404 if (custom) {
0405 typeEvent = custom;
0406 }
0407
0408 var isNative = nativeEvents.has(typeEvent);
0409
0410 if (!isNative) {
0411 typeEvent = originalTypeEvent;
0412 }
0413
0414 return [delegation, originalHandler, typeEvent];
0415 }
0416
0417 function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
0418 if (typeof originalTypeEvent !== 'string' || !element) {
0419 return;
0420 }
0421
0422 if (!handler) {
0423 handler = delegationFn;
0424 delegationFn = null;
0425 }
0426
0427 var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn),
0428 delegation = _normalizeParams[0],
0429 originalHandler = _normalizeParams[1],
0430 typeEvent = _normalizeParams[2];
0431
0432 var events = getEvent(element);
0433 var handlers = events[typeEvent] || (events[typeEvent] = {});
0434 var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
0435
0436 if (previousFn) {
0437 previousFn.oneOff = previousFn.oneOff && oneOff;
0438 return;
0439 }
0440
0441 var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
0442 var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
0443 fn.delegationSelector = delegation ? handler : null;
0444 fn.originalHandler = originalHandler;
0445 fn.oneOff = oneOff;
0446 fn.uidEvent = uid;
0447 handlers[uid] = fn;
0448 element.addEventListener(typeEvent, fn, delegation);
0449 }
0450
0451 function removeHandler(element, events, typeEvent, handler, delegationSelector) {
0452 var fn = findHandler(events[typeEvent], handler, delegationSelector);
0453
0454 if (!fn) {
0455 return;
0456 }
0457
0458 element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
0459 delete events[typeEvent][fn.uidEvent];
0460 }
0461
0462 function removeNamespacedHandlers(element, events, typeEvent, namespace) {
0463 var storeElementEvent = events[typeEvent] || {};
0464 Object.keys(storeElementEvent).forEach(function (handlerKey) {
0465 if (handlerKey.includes(namespace)) {
0466 var event = storeElementEvent[handlerKey];
0467 removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
0468 }
0469 });
0470 }
0471
0472 var EventHandler = {
0473 on: function on(element, event, handler, delegationFn) {
0474 addHandler(element, event, handler, delegationFn, false);
0475 },
0476 one: function one(element, event, handler, delegationFn) {
0477 addHandler(element, event, handler, delegationFn, true);
0478 },
0479 off: function off(element, originalTypeEvent, handler, delegationFn) {
0480 if (typeof originalTypeEvent !== 'string' || !element) {
0481 return;
0482 }
0483
0484 var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn),
0485 delegation = _normalizeParams2[0],
0486 originalHandler = _normalizeParams2[1],
0487 typeEvent = _normalizeParams2[2];
0488
0489 var inNamespace = typeEvent !== originalTypeEvent;
0490 var events = getEvent(element);
0491 var isNamespace = originalTypeEvent.startsWith('.');
0492
0493 if (typeof originalHandler !== 'undefined') {
0494
0495 if (!events || !events[typeEvent]) {
0496 return;
0497 }
0498
0499 removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
0500 return;
0501 }
0502
0503 if (isNamespace) {
0504 Object.keys(events).forEach(function (elementEvent) {
0505 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
0506 });
0507 }
0508
0509 var storeElementEvent = events[typeEvent] || {};
0510 Object.keys(storeElementEvent).forEach(function (keyHandlers) {
0511 var handlerKey = keyHandlers.replace(stripUidRegex, '');
0512
0513 if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
0514 var event = storeElementEvent[keyHandlers];
0515 removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
0516 }
0517 });
0518 },
0519 trigger: function trigger(element, event, args) {
0520 if (typeof event !== 'string' || !element) {
0521 return null;
0522 }
0523
0524 var $ = getjQuery();
0525 var typeEvent = event.replace(stripNameRegex, '');
0526 var inNamespace = event !== typeEvent;
0527 var isNative = nativeEvents.has(typeEvent);
0528 var jQueryEvent;
0529 var bubbles = true;
0530 var nativeDispatch = true;
0531 var defaultPrevented = false;
0532 var evt = null;
0533
0534 if (inNamespace && $) {
0535 jQueryEvent = $.Event(event, args);
0536 $(element).trigger(jQueryEvent);
0537 bubbles = !jQueryEvent.isPropagationStopped();
0538 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
0539 defaultPrevented = jQueryEvent.isDefaultPrevented();
0540 }
0541
0542 if (isNative) {
0543 evt = document.createEvent('HTMLEvents');
0544 evt.initEvent(typeEvent, bubbles, true);
0545 } else {
0546 evt = new CustomEvent(event, {
0547 bubbles: bubbles,
0548 cancelable: true
0549 });
0550 }
0551
0552
0553 if (typeof args !== 'undefined') {
0554 Object.keys(args).forEach(function (key) {
0555 Object.defineProperty(evt, key, {
0556 get: function get() {
0557 return args[key];
0558 }
0559 });
0560 });
0561 }
0562
0563 if (defaultPrevented) {
0564 evt.preventDefault();
0565 }
0566
0567 if (nativeDispatch) {
0568 element.dispatchEvent(evt);
0569 }
0570
0571 if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
0572 jQueryEvent.preventDefault();
0573 }
0574
0575 return evt;
0576 }
0577 };
0578
0579
0580
0581
0582
0583
0584
0585 var VERSION = '5.0.0-beta1';
0586
0587 var BaseComponent = function () {
0588 function BaseComponent(element) {
0589 if (!element) {
0590 return;
0591 }
0592
0593 this._element = element;
0594 Data.setData(element, this.constructor.DATA_KEY, this);
0595 }
0596
0597 var _proto = BaseComponent.prototype;
0598
0599 _proto.dispose = function dispose() {
0600 Data.removeData(this._element, this.constructor.DATA_KEY);
0601 this._element = null;
0602 }
0603
0604 ;
0605
0606 BaseComponent.getInstance = function getInstance(element) {
0607 return Data.getData(element, this.DATA_KEY);
0608 };
0609
0610 _createClass(BaseComponent, null, [{
0611 key: "VERSION",
0612 get: function get() {
0613 return VERSION;
0614 }
0615 }]);
0616
0617 return BaseComponent;
0618 }();
0619
0620
0621
0622
0623
0624
0625
0626 var NAME = 'alert';
0627 var DATA_KEY = 'bs.alert';
0628 var EVENT_KEY = "." + DATA_KEY;
0629 var DATA_API_KEY = '.data-api';
0630 var SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
0631 var EVENT_CLOSE = "close" + EVENT_KEY;
0632 var EVENT_CLOSED = "closed" + EVENT_KEY;
0633 var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
0634 var CLASSNAME_ALERT = 'alert';
0635 var CLASSNAME_FADE = 'fade';
0636 var CLASSNAME_SHOW = 'show';
0637
0638
0639
0640
0641
0642
0643 var Alert = function (_BaseComponent) {
0644 _inheritsLoose(Alert, _BaseComponent);
0645
0646 function Alert() {
0647 return _BaseComponent.apply(this, arguments) || this;
0648 }
0649
0650 var _proto = Alert.prototype;
0651
0652
0653 _proto.close = function close(element) {
0654 var rootElement = element ? this._getRootElement(element) : this._element;
0655
0656 var customEvent = this._triggerCloseEvent(rootElement);
0657
0658 if (customEvent === null || customEvent.defaultPrevented) {
0659 return;
0660 }
0661
0662 this._removeElement(rootElement);
0663 }
0664 ;
0665
0666 _proto._getRootElement = function _getRootElement(element) {
0667 return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT);
0668 };
0669
0670 _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
0671 return EventHandler.trigger(element, EVENT_CLOSE);
0672 };
0673
0674 _proto._removeElement = function _removeElement(element) {
0675 var _this = this;
0676
0677 element.classList.remove(CLASSNAME_SHOW);
0678
0679 if (!element.classList.contains(CLASSNAME_FADE)) {
0680 this._destroyElement(element);
0681
0682 return;
0683 }
0684
0685 var transitionDuration = getTransitionDurationFromElement(element);
0686 EventHandler.one(element, TRANSITION_END, function () {
0687 return _this._destroyElement(element);
0688 });
0689 emulateTransitionEnd(element, transitionDuration);
0690 };
0691
0692 _proto._destroyElement = function _destroyElement(element) {
0693 if (element.parentNode) {
0694 element.parentNode.removeChild(element);
0695 }
0696
0697 EventHandler.trigger(element, EVENT_CLOSED);
0698 }
0699 ;
0700
0701 Alert.jQueryInterface = function jQueryInterface(config) {
0702 return this.each(function () {
0703 var data = Data.getData(this, DATA_KEY);
0704
0705 if (!data) {
0706 data = new Alert(this);
0707 }
0708
0709 if (config === 'close') {
0710 data[config](this);
0711 }
0712 });
0713 };
0714
0715 Alert.handleDismiss = function handleDismiss(alertInstance) {
0716 return function (event) {
0717 if (event) {
0718 event.preventDefault();
0719 }
0720
0721 alertInstance.close(this);
0722 };
0723 };
0724
0725 _createClass(Alert, null, [{
0726 key: "DATA_KEY",
0727
0728 get: function get() {
0729 return DATA_KEY;
0730 }
0731 }]);
0732
0733 return Alert;
0734 }(BaseComponent);
0735
0736
0737
0738
0739
0740
0741
0742 EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
0743
0744
0745
0746
0747
0748
0749
0750 onDOMContentLoaded(function () {
0751 var $ = getjQuery();
0752
0753
0754 if ($) {
0755 var JQUERY_NO_CONFLICT = $.fn[NAME];
0756 $.fn[NAME] = Alert.jQueryInterface;
0757 $.fn[NAME].Constructor = Alert;
0758
0759 $.fn[NAME].noConflict = function () {
0760 $.fn[NAME] = JQUERY_NO_CONFLICT;
0761 return Alert.jQueryInterface;
0762 };
0763 }
0764 });
0765
0766
0767
0768
0769
0770
0771
0772 var NAME$1 = 'button';
0773 var DATA_KEY$1 = 'bs.button';
0774 var EVENT_KEY$1 = "." + DATA_KEY$1;
0775 var DATA_API_KEY$1 = '.data-api';
0776 var CLASS_NAME_ACTIVE = 'active';
0777 var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
0778 var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1;
0779
0780
0781
0782
0783
0784
0785 var Button = function (_BaseComponent) {
0786 _inheritsLoose(Button, _BaseComponent);
0787
0788 function Button() {
0789 return _BaseComponent.apply(this, arguments) || this;
0790 }
0791
0792 var _proto = Button.prototype;
0793
0794
0795 _proto.toggle = function toggle() {
0796
0797 this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
0798 }
0799 ;
0800
0801 Button.jQueryInterface = function jQueryInterface(config) {
0802 return this.each(function () {
0803 var data = Data.getData(this, DATA_KEY$1);
0804
0805 if (!data) {
0806 data = new Button(this);
0807 }
0808
0809 if (config === 'toggle') {
0810 data[config]();
0811 }
0812 });
0813 };
0814
0815 _createClass(Button, null, [{
0816 key: "DATA_KEY",
0817
0818 get: function get() {
0819 return DATA_KEY$1;
0820 }
0821 }]);
0822
0823 return Button;
0824 }(BaseComponent);
0825
0826
0827
0828
0829
0830
0831
0832 EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) {
0833 event.preventDefault();
0834 var button = event.target.closest(SELECTOR_DATA_TOGGLE);
0835 var data = Data.getData(button, DATA_KEY$1);
0836
0837 if (!data) {
0838 data = new Button(button);
0839 }
0840
0841 data.toggle();
0842 });
0843
0844
0845
0846
0847
0848
0849
0850 onDOMContentLoaded(function () {
0851 var $ = getjQuery();
0852
0853
0854 if ($) {
0855 var JQUERY_NO_CONFLICT = $.fn[NAME$1];
0856 $.fn[NAME$1] = Button.jQueryInterface;
0857 $.fn[NAME$1].Constructor = Button;
0858
0859 $.fn[NAME$1].noConflict = function () {
0860 $.fn[NAME$1] = JQUERY_NO_CONFLICT;
0861 return Button.jQueryInterface;
0862 };
0863 }
0864 });
0865
0866
0867
0868
0869
0870
0871
0872 function normalizeData(val) {
0873 if (val === 'true') {
0874 return true;
0875 }
0876
0877 if (val === 'false') {
0878 return false;
0879 }
0880
0881 if (val === Number(val).toString()) {
0882 return Number(val);
0883 }
0884
0885 if (val === '' || val === 'null') {
0886 return null;
0887 }
0888
0889 return val;
0890 }
0891
0892 function normalizeDataKey(key) {
0893 return key.replace(/[A-Z]/g, function (chr) {
0894 return "-" + chr.toLowerCase();
0895 });
0896 }
0897
0898 var Manipulator = {
0899 setDataAttribute: function setDataAttribute(element, key, value) {
0900 element.setAttribute("data-bs-" + normalizeDataKey(key), value);
0901 },
0902 removeDataAttribute: function removeDataAttribute(element, key) {
0903 element.removeAttribute("data-bs-" + normalizeDataKey(key));
0904 },
0905 getDataAttributes: function getDataAttributes(element) {
0906 if (!element) {
0907 return {};
0908 }
0909
0910 var attributes = {};
0911 Object.keys(element.dataset).filter(function (key) {
0912 return key.startsWith('bs');
0913 }).forEach(function (key) {
0914 var pureKey = key.replace(/^bs/, '');
0915 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
0916 attributes[pureKey] = normalizeData(element.dataset[key]);
0917 });
0918 return attributes;
0919 },
0920 getDataAttribute: function getDataAttribute(element, key) {
0921 return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key)));
0922 },
0923 offset: function offset(element) {
0924 var rect = element.getBoundingClientRect();
0925 return {
0926 top: rect.top + document.body.scrollTop,
0927 left: rect.left + document.body.scrollLeft
0928 };
0929 },
0930 position: function position(element) {
0931 return {
0932 top: element.offsetTop,
0933 left: element.offsetLeft
0934 };
0935 }
0936 };
0937
0938
0939
0940
0941
0942
0943
0944
0945
0946
0947
0948
0949
0950 var NODE_TEXT = 3;
0951 var SelectorEngine = {
0952 matches: function matches(element, selector) {
0953 return element.matches(selector);
0954 },
0955 find: function find(selector, element) {
0956 var _ref;
0957
0958 if (element === void 0) {
0959 element = document.documentElement;
0960 }
0961
0962 return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector));
0963 },
0964 findOne: function findOne(selector, element) {
0965 if (element === void 0) {
0966 element = document.documentElement;
0967 }
0968
0969 return Element.prototype.querySelector.call(element, selector);
0970 },
0971 children: function children(element, selector) {
0972 var _ref2;
0973
0974 var children = (_ref2 = []).concat.apply(_ref2, element.children);
0975
0976 return children.filter(function (child) {
0977 return child.matches(selector);
0978 });
0979 },
0980 parents: function parents(element, selector) {
0981 var parents = [];
0982 var ancestor = element.parentNode;
0983
0984 while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
0985 if (this.matches(ancestor, selector)) {
0986 parents.push(ancestor);
0987 }
0988
0989 ancestor = ancestor.parentNode;
0990 }
0991
0992 return parents;
0993 },
0994 prev: function prev(element, selector) {
0995 var previous = element.previousElementSibling;
0996
0997 while (previous) {
0998 if (previous.matches(selector)) {
0999 return [previous];
1000 }
1001
1002 previous = previous.previousElementSibling;
1003 }
1004
1005 return [];
1006 },
1007 next: function next(element, selector) {
1008 var next = element.nextElementSibling;
1009
1010 while (next) {
1011 if (this.matches(next, selector)) {
1012 return [next];
1013 }
1014
1015 next = next.nextElementSibling;
1016 }
1017
1018 return [];
1019 }
1020 };
1021
1022
1023
1024
1025
1026
1027
1028 var NAME$2 = 'carousel';
1029 var DATA_KEY$2 = 'bs.carousel';
1030 var EVENT_KEY$2 = "." + DATA_KEY$2;
1031 var DATA_API_KEY$2 = '.data-api';
1032 var ARROW_LEFT_KEY = 'ArrowLeft';
1033 var ARROW_RIGHT_KEY = 'ArrowRight';
1034 var TOUCHEVENT_COMPAT_WAIT = 500;
1035
1036 var SWIPE_THRESHOLD = 40;
1037 var Default = {
1038 interval: 5000,
1039 keyboard: true,
1040 slide: false,
1041 pause: 'hover',
1042 wrap: true,
1043 touch: true
1044 };
1045 var DefaultType = {
1046 interval: '(number|boolean)',
1047 keyboard: 'boolean',
1048 slide: '(boolean|string)',
1049 pause: '(string|boolean)',
1050 wrap: 'boolean',
1051 touch: 'boolean'
1052 };
1053 var DIRECTION_NEXT = 'next';
1054 var DIRECTION_PREV = 'prev';
1055 var DIRECTION_LEFT = 'left';
1056 var DIRECTION_RIGHT = 'right';
1057 var EVENT_SLIDE = "slide" + EVENT_KEY$2;
1058 var EVENT_SLID = "slid" + EVENT_KEY$2;
1059 var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;
1060 var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;
1061 var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;
1062 var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;
1063 var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;
1064 var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;
1065 var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;
1066 var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;
1067 var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;
1068 var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2;
1069 var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;
1070 var CLASS_NAME_CAROUSEL = 'carousel';
1071 var CLASS_NAME_ACTIVE$1 = 'active';
1072 var CLASS_NAME_SLIDE = 'slide';
1073 var CLASS_NAME_END = 'carousel-item-end';
1074 var CLASS_NAME_START = 'carousel-item-start';
1075 var CLASS_NAME_NEXT = 'carousel-item-next';
1076 var CLASS_NAME_PREV = 'carousel-item-prev';
1077 var CLASS_NAME_POINTER_EVENT = 'pointer-event';
1078 var SELECTOR_ACTIVE = '.active';
1079 var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
1080 var SELECTOR_ITEM = '.carousel-item';
1081 var SELECTOR_ITEM_IMG = '.carousel-item img';
1082 var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
1083 var SELECTOR_INDICATORS = '.carousel-indicators';
1084 var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
1085 var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
1086 var PointerType = {
1087 TOUCH: 'touch',
1088 PEN: 'pen'
1089 };
1090
1091
1092
1093
1094
1095
1096 var Carousel = function (_BaseComponent) {
1097 _inheritsLoose(Carousel, _BaseComponent);
1098
1099 function Carousel(element, config) {
1100 var _this;
1101
1102 _this = _BaseComponent.call(this, element) || this;
1103 _this._items = null;
1104 _this._interval = null;
1105 _this._activeElement = null;
1106 _this._isPaused = false;
1107 _this._isSliding = false;
1108 _this.touchTimeout = null;
1109 _this.touchStartX = 0;
1110 _this.touchDeltaX = 0;
1111 _this._config = _this._getConfig(config);
1112 _this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this._element);
1113 _this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
1114 _this._pointerEvent = Boolean(window.PointerEvent);
1115
1116 _this._addEventListeners();
1117
1118 return _this;
1119 }
1120
1121
1122 var _proto = Carousel.prototype;
1123
1124
1125 _proto.next = function next() {
1126 if (!this._isSliding) {
1127 this._slide(DIRECTION_NEXT);
1128 }
1129 };
1130
1131 _proto.nextWhenVisible = function nextWhenVisible() {
1132
1133
1134 if (!document.hidden && isVisible(this._element)) {
1135 this.next();
1136 }
1137 };
1138
1139 _proto.prev = function prev() {
1140 if (!this._isSliding) {
1141 this._slide(DIRECTION_PREV);
1142 }
1143 };
1144
1145 _proto.pause = function pause(event) {
1146 if (!event) {
1147 this._isPaused = true;
1148 }
1149
1150 if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
1151 triggerTransitionEnd(this._element);
1152 this.cycle(true);
1153 }
1154
1155 clearInterval(this._interval);
1156 this._interval = null;
1157 };
1158
1159 _proto.cycle = function cycle(event) {
1160 if (!event) {
1161 this._isPaused = false;
1162 }
1163
1164 if (this._interval) {
1165 clearInterval(this._interval);
1166 this._interval = null;
1167 }
1168
1169 if (this._config && this._config.interval && !this._isPaused) {
1170 this._updateInterval();
1171
1172 this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
1173 }
1174 };
1175
1176 _proto.to = function to(index) {
1177 var _this2 = this;
1178
1179 this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1180
1181 var activeIndex = this._getItemIndex(this._activeElement);
1182
1183 if (index > this._items.length - 1 || index < 0) {
1184 return;
1185 }
1186
1187 if (this._isSliding) {
1188 EventHandler.one(this._element, EVENT_SLID, function () {
1189 return _this2.to(index);
1190 });
1191 return;
1192 }
1193
1194 if (activeIndex === index) {
1195 this.pause();
1196 this.cycle();
1197 return;
1198 }
1199
1200 var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
1201
1202 this._slide(direction, this._items[index]);
1203 };
1204
1205 _proto.dispose = function dispose() {
1206 _BaseComponent.prototype.dispose.call(this);
1207
1208 EventHandler.off(this._element, EVENT_KEY$2);
1209 this._items = null;
1210 this._config = null;
1211 this._interval = null;
1212 this._isPaused = null;
1213 this._isSliding = null;
1214 this._activeElement = null;
1215 this._indicatorsElement = null;
1216 }
1217 ;
1218
1219 _proto._getConfig = function _getConfig(config) {
1220 config = _extends({}, Default, config);
1221 typeCheckConfig(NAME$2, config, DefaultType);
1222 return config;
1223 };
1224
1225 _proto._handleSwipe = function _handleSwipe() {
1226 var absDeltax = Math.abs(this.touchDeltaX);
1227
1228 if (absDeltax <= SWIPE_THRESHOLD) {
1229 return;
1230 }
1231
1232 var direction = absDeltax / this.touchDeltaX;
1233 this.touchDeltaX = 0;
1234
1235 if (direction > 0) {
1236 this.prev();
1237 }
1238
1239
1240 if (direction < 0) {
1241 this.next();
1242 }
1243 };
1244
1245 _proto._addEventListeners = function _addEventListeners() {
1246 var _this3 = this;
1247
1248 if (this._config.keyboard) {
1249 EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
1250 return _this3._keydown(event);
1251 });
1252 }
1253
1254 if (this._config.pause === 'hover') {
1255 EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
1256 return _this3.pause(event);
1257 });
1258 EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
1259 return _this3.cycle(event);
1260 });
1261 }
1262
1263 if (this._config.touch && this._touchSupported) {
1264 this._addTouchEventListeners();
1265 }
1266 };
1267
1268 _proto._addTouchEventListeners = function _addTouchEventListeners() {
1269 var _this4 = this;
1270
1271 var start = function start(event) {
1272 if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
1273 _this4.touchStartX = event.clientX;
1274 } else if (!_this4._pointerEvent) {
1275 _this4.touchStartX = event.touches[0].clientX;
1276 }
1277 };
1278
1279 var move = function move(event) {
1280
1281 if (event.touches && event.touches.length > 1) {
1282 _this4.touchDeltaX = 0;
1283 } else {
1284 _this4.touchDeltaX = event.touches[0].clientX - _this4.touchStartX;
1285 }
1286 };
1287
1288 var end = function end(event) {
1289 if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
1290 _this4.touchDeltaX = event.clientX - _this4.touchStartX;
1291 }
1292
1293 _this4._handleSwipe();
1294
1295 if (_this4._config.pause === 'hover') {
1296
1297
1298
1299
1300
1301
1302
1303 _this4.pause();
1304
1305 if (_this4.touchTimeout) {
1306 clearTimeout(_this4.touchTimeout);
1307 }
1308
1309 _this4.touchTimeout = setTimeout(function (event) {
1310 return _this4.cycle(event);
1311 }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval);
1312 }
1313 };
1314
1315 SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
1316 EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
1317 return e.preventDefault();
1318 });
1319 });
1320
1321 if (this._pointerEvent) {
1322 EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
1323 return start(event);
1324 });
1325 EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
1326 return end(event);
1327 });
1328
1329 this._element.classList.add(CLASS_NAME_POINTER_EVENT);
1330 } else {
1331 EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
1332 return start(event);
1333 });
1334 EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
1335 return move(event);
1336 });
1337 EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
1338 return end(event);
1339 });
1340 }
1341 };
1342
1343 _proto._keydown = function _keydown(event) {
1344 if (/input|textarea/i.test(event.target.tagName)) {
1345 return;
1346 }
1347
1348 switch (event.key) {
1349 case ARROW_LEFT_KEY:
1350 event.preventDefault();
1351 this.prev();
1352 break;
1353
1354 case ARROW_RIGHT_KEY:
1355 event.preventDefault();
1356 this.next();
1357 break;
1358 }
1359 };
1360
1361 _proto._getItemIndex = function _getItemIndex(element) {
1362 this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
1363 return this._items.indexOf(element);
1364 };
1365
1366 _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
1367 var isNextDirection = direction === DIRECTION_NEXT;
1368 var isPrevDirection = direction === DIRECTION_PREV;
1369
1370 var activeIndex = this._getItemIndex(activeElement);
1371
1372 var lastItemIndex = this._items.length - 1;
1373 var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
1374
1375 if (isGoingToWrap && !this._config.wrap) {
1376 return activeElement;
1377 }
1378
1379 var delta = direction === DIRECTION_PREV ? -1 : 1;
1380 var itemIndex = (activeIndex + delta) % this._items.length;
1381 return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
1382 };
1383
1384 _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
1385 var targetIndex = this._getItemIndex(relatedTarget);
1386
1387 var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
1388
1389 return EventHandler.trigger(this._element, EVENT_SLIDE, {
1390 relatedTarget: relatedTarget,
1391 direction: eventDirectionName,
1392 from: fromIndex,
1393 to: targetIndex
1394 });
1395 };
1396
1397 _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
1398 if (this._indicatorsElement) {
1399 var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
1400
1401 for (var i = 0; i < indicators.length; i++) {
1402 indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
1403 }
1404
1405 var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
1406
1407 if (nextIndicator) {
1408 nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
1409 }
1410 }
1411 };
1412
1413 _proto._updateInterval = function _updateInterval() {
1414 var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1415
1416 if (!element) {
1417 return;
1418 }
1419
1420 var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
1421
1422 if (elementInterval) {
1423 this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1424 this._config.interval = elementInterval;
1425 } else {
1426 this._config.interval = this._config.defaultInterval || this._config.interval;
1427 }
1428 };
1429
1430 _proto._slide = function _slide(direction, element) {
1431 var _this5 = this;
1432
1433 var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1434
1435 var activeElementIndex = this._getItemIndex(activeElement);
1436
1437 var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
1438
1439 var nextElementIndex = this._getItemIndex(nextElement);
1440
1441 var isCycling = Boolean(this._interval);
1442 var directionalClassName;
1443 var orderClassName;
1444 var eventDirectionName;
1445
1446 if (direction === DIRECTION_NEXT) {
1447 directionalClassName = CLASS_NAME_START;
1448 orderClassName = CLASS_NAME_NEXT;
1449 eventDirectionName = DIRECTION_LEFT;
1450 } else {
1451 directionalClassName = CLASS_NAME_END;
1452 orderClassName = CLASS_NAME_PREV;
1453 eventDirectionName = DIRECTION_RIGHT;
1454 }
1455
1456 if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
1457 this._isSliding = false;
1458 return;
1459 }
1460
1461 var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
1462
1463 if (slideEvent.defaultPrevented) {
1464 return;
1465 }
1466
1467 if (!activeElement || !nextElement) {
1468
1469 return;
1470 }
1471
1472 this._isSliding = true;
1473
1474 if (isCycling) {
1475 this.pause();
1476 }
1477
1478 this._setActiveIndicatorElement(nextElement);
1479
1480 this._activeElement = nextElement;
1481
1482 if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
1483 nextElement.classList.add(orderClassName);
1484 reflow(nextElement);
1485 activeElement.classList.add(directionalClassName);
1486 nextElement.classList.add(directionalClassName);
1487 var transitionDuration = getTransitionDurationFromElement(activeElement);
1488 EventHandler.one(activeElement, TRANSITION_END, function () {
1489 nextElement.classList.remove(directionalClassName, orderClassName);
1490 nextElement.classList.add(CLASS_NAME_ACTIVE$1);
1491 activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
1492 _this5._isSliding = false;
1493 setTimeout(function () {
1494 EventHandler.trigger(_this5._element, EVENT_SLID, {
1495 relatedTarget: nextElement,
1496 direction: eventDirectionName,
1497 from: activeElementIndex,
1498 to: nextElementIndex
1499 });
1500 }, 0);
1501 });
1502 emulateTransitionEnd(activeElement, transitionDuration);
1503 } else {
1504 activeElement.classList.remove(CLASS_NAME_ACTIVE$1);
1505 nextElement.classList.add(CLASS_NAME_ACTIVE$1);
1506 this._isSliding = false;
1507 EventHandler.trigger(this._element, EVENT_SLID, {
1508 relatedTarget: nextElement,
1509 direction: eventDirectionName,
1510 from: activeElementIndex,
1511 to: nextElementIndex
1512 });
1513 }
1514
1515 if (isCycling) {
1516 this.cycle();
1517 }
1518 }
1519 ;
1520
1521 Carousel.carouselInterface = function carouselInterface(element, config) {
1522 var data = Data.getData(element, DATA_KEY$2);
1523
1524 var _config = _extends({}, Default, Manipulator.getDataAttributes(element));
1525
1526 if (typeof config === 'object') {
1527 _config = _extends({}, _config, config);
1528 }
1529
1530 var action = typeof config === 'string' ? config : _config.slide;
1531
1532 if (!data) {
1533 data = new Carousel(element, _config);
1534 }
1535
1536 if (typeof config === 'number') {
1537 data.to(config);
1538 } else if (typeof action === 'string') {
1539 if (typeof data[action] === 'undefined') {
1540 throw new TypeError("No method named \"" + action + "\"");
1541 }
1542
1543 data[action]();
1544 } else if (_config.interval && _config.ride) {
1545 data.pause();
1546 data.cycle();
1547 }
1548 };
1549
1550 Carousel.jQueryInterface = function jQueryInterface(config) {
1551 return this.each(function () {
1552 Carousel.carouselInterface(this, config);
1553 });
1554 };
1555
1556 Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
1557 var target = getElementFromSelector(this);
1558
1559 if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
1560 return;
1561 }
1562
1563 var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
1564
1565 var slideIndex = this.getAttribute('data-bs-slide-to');
1566
1567 if (slideIndex) {
1568 config.interval = false;
1569 }
1570
1571 Carousel.carouselInterface(target, config);
1572
1573 if (slideIndex) {
1574 Data.getData(target, DATA_KEY$2).to(slideIndex);
1575 }
1576
1577 event.preventDefault();
1578 };
1579
1580 _createClass(Carousel, null, [{
1581 key: "Default",
1582 get: function get() {
1583 return Default;
1584 }
1585 }, {
1586 key: "DATA_KEY",
1587 get: function get() {
1588 return DATA_KEY$2;
1589 }
1590 }]);
1591
1592 return Carousel;
1593 }(BaseComponent);
1594
1595
1596
1597
1598
1599
1600
1601 EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
1602 EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
1603 var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
1604
1605 for (var i = 0, len = carousels.length; i < len; i++) {
1606 Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));
1607 }
1608 });
1609
1610
1611
1612
1613
1614
1615
1616 onDOMContentLoaded(function () {
1617 var $ = getjQuery();
1618
1619
1620 if ($) {
1621 var JQUERY_NO_CONFLICT = $.fn[NAME$2];
1622 $.fn[NAME$2] = Carousel.jQueryInterface;
1623 $.fn[NAME$2].Constructor = Carousel;
1624
1625 $.fn[NAME$2].noConflict = function () {
1626 $.fn[NAME$2] = JQUERY_NO_CONFLICT;
1627 return Carousel.jQueryInterface;
1628 };
1629 }
1630 });
1631
1632
1633
1634
1635
1636
1637
1638 var NAME$3 = 'collapse';
1639 var DATA_KEY$3 = 'bs.collapse';
1640 var EVENT_KEY$3 = "." + DATA_KEY$3;
1641 var DATA_API_KEY$3 = '.data-api';
1642 var Default$1 = {
1643 toggle: true,
1644 parent: ''
1645 };
1646 var DefaultType$1 = {
1647 toggle: 'boolean',
1648 parent: '(string|element)'
1649 };
1650 var EVENT_SHOW = "show" + EVENT_KEY$3;
1651 var EVENT_SHOWN = "shown" + EVENT_KEY$3;
1652 var EVENT_HIDE = "hide" + EVENT_KEY$3;
1653 var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
1654 var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
1655 var CLASS_NAME_SHOW = 'show';
1656 var CLASS_NAME_COLLAPSE = 'collapse';
1657 var CLASS_NAME_COLLAPSING = 'collapsing';
1658 var CLASS_NAME_COLLAPSED = 'collapsed';
1659 var WIDTH = 'width';
1660 var HEIGHT = 'height';
1661 var SELECTOR_ACTIVES = '.show, .collapsing';
1662 var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]';
1663
1664
1665
1666
1667
1668
1669 var Collapse = function (_BaseComponent) {
1670 _inheritsLoose(Collapse, _BaseComponent);
1671
1672 function Collapse(element, config) {
1673 var _this;
1674
1675 _this = _BaseComponent.call(this, element) || this;
1676 _this._isTransitioning = false;
1677 _this._config = _this._getConfig(config);
1678 _this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]"));
1679 var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1);
1680
1681 for (var i = 0, len = toggleList.length; i < len; i++) {
1682 var elem = toggleList[i];
1683 var selector = getSelectorFromElement(elem);
1684 var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
1685 return foundElem === element;
1686 });
1687
1688 if (selector !== null && filterElement.length) {
1689 _this._selector = selector;
1690
1691 _this._triggerArray.push(elem);
1692 }
1693 }
1694
1695 _this._parent = _this._config.parent ? _this._getParent() : null;
1696
1697 if (!_this._config.parent) {
1698 _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray);
1699 }
1700
1701 if (_this._config.toggle) {
1702 _this.toggle();
1703 }
1704
1705 return _this;
1706 }
1707
1708
1709 var _proto = Collapse.prototype;
1710
1711
1712 _proto.toggle = function toggle() {
1713 if (this._element.classList.contains(CLASS_NAME_SHOW)) {
1714 this.hide();
1715 } else {
1716 this.show();
1717 }
1718 };
1719
1720 _proto.show = function show() {
1721 var _this2 = this;
1722
1723 if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
1724 return;
1725 }
1726
1727 var actives;
1728 var activesData;
1729
1730 if (this._parent) {
1731 actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
1732 if (typeof _this2._config.parent === 'string') {
1733 return elem.getAttribute('data-bs-parent') === _this2._config.parent;
1734 }
1735
1736 return elem.classList.contains(CLASS_NAME_COLLAPSE);
1737 });
1738
1739 if (actives.length === 0) {
1740 actives = null;
1741 }
1742 }
1743
1744 var container = SelectorEngine.findOne(this._selector);
1745
1746 if (actives) {
1747 var tempActiveData = actives.find(function (elem) {
1748 return container !== elem;
1749 });
1750 activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null;
1751
1752 if (activesData && activesData._isTransitioning) {
1753 return;
1754 }
1755 }
1756
1757 var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
1758
1759 if (startEvent.defaultPrevented) {
1760 return;
1761 }
1762
1763 if (actives) {
1764 actives.forEach(function (elemActive) {
1765 if (container !== elemActive) {
1766 Collapse.collapseInterface(elemActive, 'hide');
1767 }
1768
1769 if (!activesData) {
1770 Data.setData(elemActive, DATA_KEY$3, null);
1771 }
1772 });
1773 }
1774
1775 var dimension = this._getDimension();
1776
1777 this._element.classList.remove(CLASS_NAME_COLLAPSE);
1778
1779 this._element.classList.add(CLASS_NAME_COLLAPSING);
1780
1781 this._element.style[dimension] = 0;
1782
1783 if (this._triggerArray.length) {
1784 this._triggerArray.forEach(function (element) {
1785 element.classList.remove(CLASS_NAME_COLLAPSED);
1786 element.setAttribute('aria-expanded', true);
1787 });
1788 }
1789
1790 this.setTransitioning(true);
1791
1792 var complete = function complete() {
1793 _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
1794
1795 _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
1796
1797 _this2._element.style[dimension] = '';
1798
1799 _this2.setTransitioning(false);
1800
1801 EventHandler.trigger(_this2._element, EVENT_SHOWN);
1802 };
1803
1804 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1805 var scrollSize = "scroll" + capitalizedDimension;
1806 var transitionDuration = getTransitionDurationFromElement(this._element);
1807 EventHandler.one(this._element, TRANSITION_END, complete);
1808 emulateTransitionEnd(this._element, transitionDuration);
1809 this._element.style[dimension] = this._element[scrollSize] + "px";
1810 };
1811
1812 _proto.hide = function hide() {
1813 var _this3 = this;
1814
1815 if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
1816 return;
1817 }
1818
1819 var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
1820
1821 if (startEvent.defaultPrevented) {
1822 return;
1823 }
1824
1825 var dimension = this._getDimension();
1826
1827 this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1828 reflow(this._element);
1829
1830 this._element.classList.add(CLASS_NAME_COLLAPSING);
1831
1832 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
1833
1834 var triggerArrayLength = this._triggerArray.length;
1835
1836 if (triggerArrayLength > 0) {
1837 for (var i = 0; i < triggerArrayLength; i++) {
1838 var trigger = this._triggerArray[i];
1839 var elem = getElementFromSelector(trigger);
1840
1841 if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
1842 trigger.classList.add(CLASS_NAME_COLLAPSED);
1843 trigger.setAttribute('aria-expanded', false);
1844 }
1845 }
1846 }
1847
1848 this.setTransitioning(true);
1849
1850 var complete = function complete() {
1851 _this3.setTransitioning(false);
1852
1853 _this3._element.classList.remove(CLASS_NAME_COLLAPSING);
1854
1855 _this3._element.classList.add(CLASS_NAME_COLLAPSE);
1856
1857 EventHandler.trigger(_this3._element, EVENT_HIDDEN);
1858 };
1859
1860 this._element.style[dimension] = '';
1861 var transitionDuration = getTransitionDurationFromElement(this._element);
1862 EventHandler.one(this._element, TRANSITION_END, complete);
1863 emulateTransitionEnd(this._element, transitionDuration);
1864 };
1865
1866 _proto.setTransitioning = function setTransitioning(isTransitioning) {
1867 this._isTransitioning = isTransitioning;
1868 };
1869
1870 _proto.dispose = function dispose() {
1871 _BaseComponent.prototype.dispose.call(this);
1872
1873 this._config = null;
1874 this._parent = null;
1875 this._triggerArray = null;
1876 this._isTransitioning = null;
1877 }
1878 ;
1879
1880 _proto._getConfig = function _getConfig(config) {
1881 config = _extends({}, Default$1, config);
1882 config.toggle = Boolean(config.toggle);
1883
1884 typeCheckConfig(NAME$3, config, DefaultType$1);
1885 return config;
1886 };
1887
1888 _proto._getDimension = function _getDimension() {
1889 return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
1890 };
1891
1892 _proto._getParent = function _getParent() {
1893 var _this4 = this;
1894
1895 var parent = this._config.parent;
1896
1897 if (isElement(parent)) {
1898
1899 if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
1900 parent = parent[0];
1901 }
1902 } else {
1903 parent = SelectorEngine.findOne(parent);
1904 }
1905
1906 var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]";
1907 SelectorEngine.find(selector, parent).forEach(function (element) {
1908 var selected = getElementFromSelector(element);
1909
1910 _this4._addAriaAndCollapsedClass(selected, [element]);
1911 });
1912 return parent;
1913 };
1914
1915 _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1916 if (!element || !triggerArray.length) {
1917 return;
1918 }
1919
1920 var isOpen = element.classList.contains(CLASS_NAME_SHOW);
1921 triggerArray.forEach(function (elem) {
1922 if (isOpen) {
1923 elem.classList.remove(CLASS_NAME_COLLAPSED);
1924 } else {
1925 elem.classList.add(CLASS_NAME_COLLAPSED);
1926 }
1927
1928 elem.setAttribute('aria-expanded', isOpen);
1929 });
1930 }
1931 ;
1932
1933 Collapse.collapseInterface = function collapseInterface(element, config) {
1934 var data = Data.getData(element, DATA_KEY$3);
1935
1936 var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {});
1937
1938 if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
1939 _config.toggle = false;
1940 }
1941
1942 if (!data) {
1943 data = new Collapse(element, _config);
1944 }
1945
1946 if (typeof config === 'string') {
1947 if (typeof data[config] === 'undefined') {
1948 throw new TypeError("No method named \"" + config + "\"");
1949 }
1950
1951 data[config]();
1952 }
1953 };
1954
1955 Collapse.jQueryInterface = function jQueryInterface(config) {
1956 return this.each(function () {
1957 Collapse.collapseInterface(this, config);
1958 });
1959 };
1960
1961 _createClass(Collapse, null, [{
1962 key: "Default",
1963 get: function get() {
1964 return Default$1;
1965 }
1966 }, {
1967 key: "DATA_KEY",
1968 get: function get() {
1969 return DATA_KEY$3;
1970 }
1971 }]);
1972
1973 return Collapse;
1974 }(BaseComponent);
1975
1976
1977
1978
1979
1980
1981
1982 EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
1983
1984 if (event.target.tagName === 'A') {
1985 event.preventDefault();
1986 }
1987
1988 var triggerData = Manipulator.getDataAttributes(this);
1989 var selector = getSelectorFromElement(this);
1990 var selectorElements = SelectorEngine.find(selector);
1991 selectorElements.forEach(function (element) {
1992 var data = Data.getData(element, DATA_KEY$3);
1993 var config;
1994
1995 if (data) {
1996
1997 if (data._parent === null && typeof triggerData.parent === 'string') {
1998 data._config.parent = triggerData.parent;
1999 data._parent = data._getParent();
2000 }
2001
2002 config = 'toggle';
2003 } else {
2004 config = triggerData;
2005 }
2006
2007 Collapse.collapseInterface(element, config);
2008 });
2009 });
2010
2011
2012
2013
2014
2015
2016
2017 onDOMContentLoaded(function () {
2018 var $ = getjQuery();
2019
2020
2021 if ($) {
2022 var JQUERY_NO_CONFLICT = $.fn[NAME$3];
2023 $.fn[NAME$3] = Collapse.jQueryInterface;
2024 $.fn[NAME$3].Constructor = Collapse;
2025
2026 $.fn[NAME$3].noConflict = function () {
2027 $.fn[NAME$3] = JQUERY_NO_CONFLICT;
2028 return Collapse.jQueryInterface;
2029 };
2030 }
2031 });
2032
2033 var top = 'top';
2034 var bottom = 'bottom';
2035 var right = 'right';
2036 var left = 'left';
2037 var auto = 'auto';
2038 var basePlacements = [top, bottom, right, left];
2039 var start = 'start';
2040 var end = 'end';
2041 var clippingParents = 'clippingParents';
2042 var viewport = 'viewport';
2043 var popper = 'popper';
2044 var reference = 'reference';
2045 var variationPlacements = basePlacements.reduce(function (acc, placement) {
2046 return acc.concat([placement + "-" + start, placement + "-" + end]);
2047 }, []);
2048 var placements = [].concat(basePlacements, [auto]).reduce(function (acc, placement) {
2049 return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
2050 }, []);
2051
2052 var beforeRead = 'beforeRead';
2053 var read = 'read';
2054 var afterRead = 'afterRead';
2055
2056 var beforeMain = 'beforeMain';
2057 var main = 'main';
2058 var afterMain = 'afterMain';
2059
2060 var beforeWrite = 'beforeWrite';
2061 var write = 'write';
2062 var afterWrite = 'afterWrite';
2063 var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
2064
2065 function getNodeName(element) {
2066 return element ? (element.nodeName || '').toLowerCase() : null;
2067 }
2068
2069
2070
2071
2072 function getWindow(node) {
2073 if (node.toString() !== '[object Window]') {
2074 var ownerDocument = node.ownerDocument;
2075 return ownerDocument ? ownerDocument.defaultView || window : window;
2076 }
2077
2078 return node;
2079 }
2080
2081
2082
2083
2084 function isElement$1(node) {
2085 var OwnElement = getWindow(node).Element;
2086 return node instanceof OwnElement || node instanceof Element;
2087 }
2088
2089
2090
2091
2092 function isHTMLElement(node) {
2093 var OwnElement = getWindow(node).HTMLElement;
2094 return node instanceof OwnElement || node instanceof HTMLElement;
2095 }
2096
2097
2098
2099
2100 function isShadowRoot(node) {
2101 var OwnElement = getWindow(node).ShadowRoot;
2102 return node instanceof OwnElement || node instanceof ShadowRoot;
2103 }
2104
2105
2106
2107 function applyStyles(_ref) {
2108 var state = _ref.state;
2109 Object.keys(state.elements).forEach(function (name) {
2110 var style = state.styles[name] || {};
2111 var attributes = state.attributes[name] || {};
2112 var element = state.elements[name];
2113
2114 if (!isHTMLElement(element) || !getNodeName(element)) {
2115 return;
2116 }
2117
2118
2119
2120
2121 Object.assign(element.style, style);
2122 Object.keys(attributes).forEach(function (name) {
2123 var value = attributes[name];
2124
2125 if (value === false) {
2126 element.removeAttribute(name);
2127 } else {
2128 element.setAttribute(name, value === true ? '' : value);
2129 }
2130 });
2131 });
2132 }
2133
2134 function effect(_ref2) {
2135 var state = _ref2.state;
2136 var initialStyles = {
2137 popper: {
2138 position: state.options.strategy,
2139 left: '0',
2140 top: '0',
2141 margin: '0'
2142 },
2143 arrow: {
2144 position: 'absolute'
2145 },
2146 reference: {}
2147 };
2148 Object.assign(state.elements.popper.style, initialStyles.popper);
2149
2150 if (state.elements.arrow) {
2151 Object.assign(state.elements.arrow.style, initialStyles.arrow);
2152 }
2153
2154 return function () {
2155 Object.keys(state.elements).forEach(function (name) {
2156 var element = state.elements[name];
2157 var attributes = state.attributes[name] || {};
2158 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
2159
2160 var style = styleProperties.reduce(function (style, property) {
2161 style[property] = '';
2162 return style;
2163 }, {});
2164
2165 if (!isHTMLElement(element) || !getNodeName(element)) {
2166 return;
2167 }
2168
2169
2170
2171
2172 Object.assign(element.style, style);
2173 Object.keys(attributes).forEach(function (attribute) {
2174 element.removeAttribute(attribute);
2175 });
2176 });
2177 };
2178 }
2179
2180
2181 var applyStyles$1 = {
2182 name: 'applyStyles',
2183 enabled: true,
2184 phase: 'write',
2185 fn: applyStyles,
2186 effect: effect,
2187 requires: ['computeStyles']
2188 };
2189
2190 function getBasePlacement(placement) {
2191 return placement.split('-')[0];
2192 }
2193
2194
2195
2196 function getLayoutRect(element) {
2197 return {
2198 x: element.offsetLeft,
2199 y: element.offsetTop,
2200 width: element.offsetWidth,
2201 height: element.offsetHeight
2202 };
2203 }
2204
2205 function contains(parent, child) {
2206 var rootNode = child.getRootNode && child.getRootNode();
2207
2208 if (parent.contains(child)) {
2209 return true;
2210 }
2211 else if (rootNode && isShadowRoot(rootNode)) {
2212 var next = child;
2213
2214 do {
2215 if (next && parent.isSameNode(next)) {
2216 return true;
2217 }
2218
2219
2220 next = next.parentNode || next.host;
2221 } while (next);
2222 }
2223
2224
2225 return false;
2226 }
2227
2228 function getComputedStyle$1(element) {
2229 return getWindow(element).getComputedStyle(element);
2230 }
2231
2232 function isTableElement(element) {
2233 return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
2234 }
2235
2236 function getDocumentElement(element) {
2237
2238 return ((isElement$1(element) ? element.ownerDocument : element.document) || window.document).documentElement;
2239 }
2240
2241 function getParentNode(element) {
2242 if (getNodeName(element) === 'html') {
2243 return element;
2244 }
2245
2246 return (
2247 element.assignedSlot ||
2248 element.parentNode ||
2249
2250 element.host ||
2251
2252 getDocumentElement(element)
2253
2254 );
2255 }
2256
2257 function getTrueOffsetParent(element) {
2258 if (!isHTMLElement(element) ||
2259 getComputedStyle$1(element).position === 'fixed') {
2260 return null;
2261 }
2262
2263 var offsetParent = element.offsetParent;
2264
2265 if (offsetParent) {
2266 var html = getDocumentElement(offsetParent);
2267
2268 if (getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && getComputedStyle$1(html).position !== 'static') {
2269 return html;
2270 }
2271 }
2272
2273 return offsetParent;
2274 }
2275
2276
2277
2278 function getContainingBlock(element) {
2279 var currentNode = getParentNode(element);
2280
2281 while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
2282 var css = getComputedStyle$1(currentNode);
2283
2284
2285 if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
2286 return currentNode;
2287 } else {
2288 currentNode = currentNode.parentNode;
2289 }
2290 }
2291
2292 return null;
2293 }
2294
2295
2296
2297 function getOffsetParent(element) {
2298 var window = getWindow(element);
2299 var offsetParent = getTrueOffsetParent(element);
2300
2301 while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
2302 offsetParent = getTrueOffsetParent(offsetParent);
2303 }
2304
2305 if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static') {
2306 return window;
2307 }
2308
2309 return offsetParent || getContainingBlock(element) || window;
2310 }
2311
2312 function getMainAxisFromPlacement(placement) {
2313 return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
2314 }
2315
2316 function within(min, value, max) {
2317 return Math.max(min, Math.min(value, max));
2318 }
2319
2320 function getFreshSideObject() {
2321 return {
2322 top: 0,
2323 right: 0,
2324 bottom: 0,
2325 left: 0
2326 };
2327 }
2328
2329 function mergePaddingObject(paddingObject) {
2330 return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
2331 }
2332
2333 function expandToHashMap(value, keys) {
2334 return keys.reduce(function (hashMap, key) {
2335 hashMap[key] = value;
2336 return hashMap;
2337 }, {});
2338 }
2339
2340 function arrow(_ref) {
2341 var _state$modifiersData$;
2342
2343 var state = _ref.state,
2344 name = _ref.name;
2345 var arrowElement = state.elements.arrow;
2346 var popperOffsets = state.modifiersData.popperOffsets;
2347 var basePlacement = getBasePlacement(state.placement);
2348 var axis = getMainAxisFromPlacement(basePlacement);
2349 var isVertical = [left, right].indexOf(basePlacement) >= 0;
2350 var len = isVertical ? 'height' : 'width';
2351
2352 if (!arrowElement || !popperOffsets) {
2353 return;
2354 }
2355
2356 var paddingObject = state.modifiersData[name + "#persistent"].padding;
2357 var arrowRect = getLayoutRect(arrowElement);
2358 var minProp = axis === 'y' ? top : left;
2359 var maxProp = axis === 'y' ? bottom : right;
2360 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
2361 var startDiff = popperOffsets[axis] - state.rects.reference[axis];
2362 var arrowOffsetParent = getOffsetParent(arrowElement);
2363 var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
2364 var centerToReference = endDiff / 2 - startDiff / 2;
2365
2366
2367 var min = paddingObject[minProp];
2368 var max = clientSize - arrowRect[len] - paddingObject[maxProp];
2369 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
2370 var offset = within(min, center, max);
2371
2372 var axisProp = axis;
2373 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
2374 }
2375
2376 function effect$1(_ref2) {
2377 var state = _ref2.state,
2378 options = _ref2.options,
2379 name = _ref2.name;
2380 var _options$element = options.element,
2381 arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,
2382 _options$padding = options.padding,
2383 padding = _options$padding === void 0 ? 0 : _options$padding;
2384
2385 if (arrowElement == null) {
2386 return;
2387 }
2388
2389
2390 if (typeof arrowElement === 'string') {
2391 arrowElement = state.elements.popper.querySelector(arrowElement);
2392
2393 if (!arrowElement) {
2394 return;
2395 }
2396 }
2397
2398 if (!contains(state.elements.popper, arrowElement)) {
2399
2400 return;
2401 }
2402
2403 state.elements.arrow = arrowElement;
2404 state.modifiersData[name + "#persistent"] = {
2405 padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))
2406 };
2407 }
2408
2409
2410 var arrow$1 = {
2411 name: 'arrow',
2412 enabled: true,
2413 phase: 'main',
2414 fn: arrow,
2415 effect: effect$1,
2416 requires: ['popperOffsets'],
2417 requiresIfExists: ['preventOverflow']
2418 };
2419
2420 var unsetSides = {
2421 top: 'auto',
2422 right: 'auto',
2423 bottom: 'auto',
2424 left: 'auto'
2425 };
2426
2427
2428
2429 function roundOffsets(_ref) {
2430 var x = _ref.x,
2431 y = _ref.y;
2432 var win = window;
2433 var dpr = win.devicePixelRatio || 1;
2434 return {
2435 x: Math.round(x * dpr) / dpr || 0,
2436 y: Math.round(y * dpr) / dpr || 0
2437 };
2438 }
2439
2440 function mapToStyles(_ref2) {
2441 var _Object$assign2;
2442
2443 var popper = _ref2.popper,
2444 popperRect = _ref2.popperRect,
2445 placement = _ref2.placement,
2446 offsets = _ref2.offsets,
2447 position = _ref2.position,
2448 gpuAcceleration = _ref2.gpuAcceleration,
2449 adaptive = _ref2.adaptive;
2450
2451 var _roundOffsets = roundOffsets(offsets),
2452 x = _roundOffsets.x,
2453 y = _roundOffsets.y;
2454
2455 var hasX = offsets.hasOwnProperty('x');
2456 var hasY = offsets.hasOwnProperty('y');
2457 var sideX = left;
2458 var sideY = top;
2459 var win = window;
2460
2461 if (adaptive) {
2462 var offsetParent = getOffsetParent(popper);
2463
2464 if (offsetParent === getWindow(popper)) {
2465 offsetParent = getDocumentElement(popper);
2466 }
2467
2468
2469
2470
2471 if (placement === top) {
2472 sideY = bottom;
2473 y -= offsetParent.clientHeight - popperRect.height;
2474 y *= gpuAcceleration ? 1 : -1;
2475 }
2476
2477 if (placement === left) {
2478 sideX = right;
2479 x -= offsetParent.clientWidth - popperRect.width;
2480 x *= gpuAcceleration ? 1 : -1;
2481 }
2482 }
2483
2484 var commonStyles = Object.assign({
2485 position: position
2486 }, adaptive && unsetSides);
2487
2488 if (gpuAcceleration) {
2489 var _Object$assign;
2490
2491 return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
2492 }
2493
2494 return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
2495 }
2496
2497 function computeStyles(_ref3) {
2498 var state = _ref3.state,
2499 options = _ref3.options;
2500 var _options$gpuAccelerat = options.gpuAcceleration,
2501 gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
2502 _options$adaptive = options.adaptive,
2503 adaptive = _options$adaptive === void 0 ? true : _options$adaptive;
2504
2505 var commonStyles = {
2506 placement: getBasePlacement(state.placement),
2507 popper: state.elements.popper,
2508 popperRect: state.rects.popper,
2509 gpuAcceleration: gpuAcceleration
2510 };
2511
2512 if (state.modifiersData.popperOffsets != null) {
2513 state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
2514 offsets: state.modifiersData.popperOffsets,
2515 position: state.options.strategy,
2516 adaptive: adaptive
2517 })));
2518 }
2519
2520 if (state.modifiersData.arrow != null) {
2521 state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
2522 offsets: state.modifiersData.arrow,
2523 position: 'absolute',
2524 adaptive: false
2525 })));
2526 }
2527
2528 state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
2529 'data-popper-placement': state.placement
2530 });
2531 }
2532
2533
2534 var computeStyles$1 = {
2535 name: 'computeStyles',
2536 enabled: true,
2537 phase: 'beforeWrite',
2538 fn: computeStyles,
2539 data: {}
2540 };
2541
2542 var passive = {
2543 passive: true
2544 };
2545
2546 function effect$2(_ref) {
2547 var state = _ref.state,
2548 instance = _ref.instance,
2549 options = _ref.options;
2550 var _options$scroll = options.scroll,
2551 scroll = _options$scroll === void 0 ? true : _options$scroll,
2552 _options$resize = options.resize,
2553 resize = _options$resize === void 0 ? true : _options$resize;
2554 var window = getWindow(state.elements.popper);
2555 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
2556
2557 if (scroll) {
2558 scrollParents.forEach(function (scrollParent) {
2559 scrollParent.addEventListener('scroll', instance.update, passive);
2560 });
2561 }
2562
2563 if (resize) {
2564 window.addEventListener('resize', instance.update, passive);
2565 }
2566
2567 return function () {
2568 if (scroll) {
2569 scrollParents.forEach(function (scrollParent) {
2570 scrollParent.removeEventListener('scroll', instance.update, passive);
2571 });
2572 }
2573
2574 if (resize) {
2575 window.removeEventListener('resize', instance.update, passive);
2576 }
2577 };
2578 }
2579
2580
2581 var eventListeners = {
2582 name: 'eventListeners',
2583 enabled: true,
2584 phase: 'write',
2585 fn: function fn() {},
2586 effect: effect$2,
2587 data: {}
2588 };
2589
2590 var hash = {
2591 left: 'right',
2592 right: 'left',
2593 bottom: 'top',
2594 top: 'bottom'
2595 };
2596 function getOppositePlacement(placement) {
2597 return placement.replace(/left|right|bottom|top/g, function (matched) {
2598 return hash[matched];
2599 });
2600 }
2601
2602 var hash$1 = {
2603 start: 'end',
2604 end: 'start'
2605 };
2606 function getOppositeVariationPlacement(placement) {
2607 return placement.replace(/start|end/g, function (matched) {
2608 return hash$1[matched];
2609 });
2610 }
2611
2612 function getBoundingClientRect(element) {
2613 var rect = element.getBoundingClientRect();
2614 return {
2615 width: rect.width,
2616 height: rect.height,
2617 top: rect.top,
2618 right: rect.right,
2619 bottom: rect.bottom,
2620 left: rect.left,
2621 x: rect.left,
2622 y: rect.top
2623 };
2624 }
2625
2626 function getWindowScroll(node) {
2627 var win = getWindow(node);
2628 var scrollLeft = win.pageXOffset;
2629 var scrollTop = win.pageYOffset;
2630 return {
2631 scrollLeft: scrollLeft,
2632 scrollTop: scrollTop
2633 };
2634 }
2635
2636 function getWindowScrollBarX(element) {
2637
2638
2639
2640
2641
2642
2643
2644 return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
2645 }
2646
2647 function getViewportRect(element) {
2648 var win = getWindow(element);
2649 var html = getDocumentElement(element);
2650 var visualViewport = win.visualViewport;
2651 var width = html.clientWidth;
2652 var height = html.clientHeight;
2653 var x = 0;
2654 var y = 0;
2655
2656
2657
2658
2659
2660 if (visualViewport) {
2661 width = visualViewport.width;
2662 height = visualViewport.height;
2663
2664
2665
2666
2667
2668
2669
2670
2671 if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
2672 x = visualViewport.offsetLeft;
2673 y = visualViewport.offsetTop;
2674 }
2675 }
2676
2677 return {
2678 width: width,
2679 height: height,
2680 x: x + getWindowScrollBarX(element),
2681 y: y
2682 };
2683 }
2684
2685
2686
2687 function getDocumentRect(element) {
2688 var html = getDocumentElement(element);
2689 var winScroll = getWindowScroll(element);
2690 var body = element.ownerDocument.body;
2691 var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
2692 var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
2693 var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
2694 var y = -winScroll.scrollTop;
2695
2696 if (getComputedStyle$1(body || html).direction === 'rtl') {
2697 x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
2698 }
2699
2700 return {
2701 width: width,
2702 height: height,
2703 x: x,
2704 y: y
2705 };
2706 }
2707
2708 function isScrollParent(element) {
2709
2710 var _getComputedStyle = getComputedStyle$1(element),
2711 overflow = _getComputedStyle.overflow,
2712 overflowX = _getComputedStyle.overflowX,
2713 overflowY = _getComputedStyle.overflowY;
2714
2715 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
2716 }
2717
2718 function getScrollParent(node) {
2719 if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
2720
2721 return node.ownerDocument.body;
2722 }
2723
2724 if (isHTMLElement(node) && isScrollParent(node)) {
2725 return node;
2726 }
2727
2728 return getScrollParent(getParentNode(node));
2729 }
2730
2731
2732
2733
2734
2735
2736
2737
2738 function listScrollParents(element, list) {
2739 if (list === void 0) {
2740 list = [];
2741 }
2742
2743 var scrollParent = getScrollParent(element);
2744 var isBody = getNodeName(scrollParent) === 'body';
2745 var win = getWindow(scrollParent);
2746 var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
2747 var updatedList = list.concat(target);
2748 return isBody ? updatedList :
2749 updatedList.concat(listScrollParents(getParentNode(target)));
2750 }
2751
2752 function rectToClientRect(rect) {
2753 return Object.assign(Object.assign({}, rect), {}, {
2754 left: rect.x,
2755 top: rect.y,
2756 right: rect.x + rect.width,
2757 bottom: rect.y + rect.height
2758 });
2759 }
2760
2761 function getInnerBoundingClientRect(element) {
2762 var rect = getBoundingClientRect(element);
2763 rect.top = rect.top + element.clientTop;
2764 rect.left = rect.left + element.clientLeft;
2765 rect.bottom = rect.top + element.clientHeight;
2766 rect.right = rect.left + element.clientWidth;
2767 rect.width = element.clientWidth;
2768 rect.height = element.clientHeight;
2769 rect.x = rect.left;
2770 rect.y = rect.top;
2771 return rect;
2772 }
2773
2774 function getClientRectFromMixedType(element, clippingParent) {
2775 return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
2776 }
2777
2778
2779
2780
2781 function getClippingParents(element) {
2782 var clippingParents = listScrollParents(getParentNode(element));
2783 var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
2784 var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
2785
2786 if (!isElement$1(clipperElement)) {
2787 return [];
2788 }
2789
2790
2791 return clippingParents.filter(function (clippingParent) {
2792 return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
2793 });
2794 }
2795
2796
2797
2798 function getClippingRect(element, boundary, rootBoundary) {
2799 var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
2800 var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
2801 var firstClippingParent = clippingParents[0];
2802 var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
2803 var rect = getClientRectFromMixedType(element, clippingParent);
2804 accRect.top = Math.max(rect.top, accRect.top);
2805 accRect.right = Math.min(rect.right, accRect.right);
2806 accRect.bottom = Math.min(rect.bottom, accRect.bottom);
2807 accRect.left = Math.max(rect.left, accRect.left);
2808 return accRect;
2809 }, getClientRectFromMixedType(element, firstClippingParent));
2810 clippingRect.width = clippingRect.right - clippingRect.left;
2811 clippingRect.height = clippingRect.bottom - clippingRect.top;
2812 clippingRect.x = clippingRect.left;
2813 clippingRect.y = clippingRect.top;
2814 return clippingRect;
2815 }
2816
2817 function getVariation(placement) {
2818 return placement.split('-')[1];
2819 }
2820
2821 function computeOffsets(_ref) {
2822 var reference = _ref.reference,
2823 element = _ref.element,
2824 placement = _ref.placement;
2825 var basePlacement = placement ? getBasePlacement(placement) : null;
2826 var variation = placement ? getVariation(placement) : null;
2827 var commonX = reference.x + reference.width / 2 - element.width / 2;
2828 var commonY = reference.y + reference.height / 2 - element.height / 2;
2829 var offsets;
2830
2831 switch (basePlacement) {
2832 case top:
2833 offsets = {
2834 x: commonX,
2835 y: reference.y - element.height
2836 };
2837 break;
2838
2839 case bottom:
2840 offsets = {
2841 x: commonX,
2842 y: reference.y + reference.height
2843 };
2844 break;
2845
2846 case right:
2847 offsets = {
2848 x: reference.x + reference.width,
2849 y: commonY
2850 };
2851 break;
2852
2853 case left:
2854 offsets = {
2855 x: reference.x - element.width,
2856 y: commonY
2857 };
2858 break;
2859
2860 default:
2861 offsets = {
2862 x: reference.x,
2863 y: reference.y
2864 };
2865 }
2866
2867 var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
2868
2869 if (mainAxis != null) {
2870 var len = mainAxis === 'y' ? 'height' : 'width';
2871
2872 switch (variation) {
2873 case start:
2874 offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
2875 break;
2876
2877 case end:
2878 offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
2879 break;
2880 }
2881 }
2882
2883 return offsets;
2884 }
2885
2886 function detectOverflow(state, options) {
2887 if (options === void 0) {
2888 options = {};
2889 }
2890
2891 var _options = options,
2892 _options$placement = _options.placement,
2893 placement = _options$placement === void 0 ? state.placement : _options$placement,
2894 _options$boundary = _options.boundary,
2895 boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
2896 _options$rootBoundary = _options.rootBoundary,
2897 rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
2898 _options$elementConte = _options.elementContext,
2899 elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
2900 _options$altBoundary = _options.altBoundary,
2901 altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
2902 _options$padding = _options.padding,
2903 padding = _options$padding === void 0 ? 0 : _options$padding;
2904 var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
2905 var altContext = elementContext === popper ? reference : popper;
2906 var referenceElement = state.elements.reference;
2907 var popperRect = state.rects.popper;
2908 var element = state.elements[altBoundary ? altContext : elementContext];
2909 var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
2910 var referenceClientRect = getBoundingClientRect(referenceElement);
2911 var popperOffsets = computeOffsets({
2912 reference: referenceClientRect,
2913 element: popperRect,
2914 strategy: 'absolute',
2915 placement: placement
2916 });
2917 var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
2918 var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
2919
2920
2921 var overflowOffsets = {
2922 top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
2923 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
2924 left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
2925 right: elementClientRect.right - clippingClientRect.right + paddingObject.right
2926 };
2927 var offsetData = state.modifiersData.offset;
2928
2929 if (elementContext === popper && offsetData) {
2930 var offset = offsetData[placement];
2931 Object.keys(overflowOffsets).forEach(function (key) {
2932 var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
2933 var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
2934 overflowOffsets[key] += offset[axis] * multiply;
2935 });
2936 }
2937
2938 return overflowOffsets;
2939 }
2940
2941
2942
2943
2944 function computeAutoPlacement(state, options) {
2945 if (options === void 0) {
2946 options = {};
2947 }
2948
2949 var _options = options,
2950 placement = _options.placement,
2951 boundary = _options.boundary,
2952 rootBoundary = _options.rootBoundary,
2953 padding = _options.padding,
2954 flipVariations = _options.flipVariations,
2955 _options$allowedAutoP = _options.allowedAutoPlacements,
2956 allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
2957 var variation = getVariation(placement);
2958 var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
2959 return getVariation(placement) === variation;
2960 }) : basePlacements;
2961
2962 var allowedPlacements = placements$1.filter(function (placement) {
2963 return allowedAutoPlacements.indexOf(placement) >= 0;
2964 });
2965
2966 if (allowedPlacements.length === 0) {
2967 allowedPlacements = placements$1;
2968 }
2969
2970
2971 var overflows = allowedPlacements.reduce(function (acc, placement) {
2972 acc[placement] = detectOverflow(state, {
2973 placement: placement,
2974 boundary: boundary,
2975 rootBoundary: rootBoundary,
2976 padding: padding
2977 })[getBasePlacement(placement)];
2978 return acc;
2979 }, {});
2980 return Object.keys(overflows).sort(function (a, b) {
2981 return overflows[a] - overflows[b];
2982 });
2983 }
2984
2985 function getExpandedFallbackPlacements(placement) {
2986 if (getBasePlacement(placement) === auto) {
2987 return [];
2988 }
2989
2990 var oppositePlacement = getOppositePlacement(placement);
2991 return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
2992 }
2993
2994 function flip(_ref) {
2995 var state = _ref.state,
2996 options = _ref.options,
2997 name = _ref.name;
2998
2999 if (state.modifiersData[name]._skip) {
3000 return;
3001 }
3002
3003 var _options$mainAxis = options.mainAxis,
3004 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
3005 _options$altAxis = options.altAxis,
3006 checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
3007 specifiedFallbackPlacements = options.fallbackPlacements,
3008 padding = options.padding,
3009 boundary = options.boundary,
3010 rootBoundary = options.rootBoundary,
3011 altBoundary = options.altBoundary,
3012 _options$flipVariatio = options.flipVariations,
3013 flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
3014 allowedAutoPlacements = options.allowedAutoPlacements;
3015 var preferredPlacement = state.options.placement;
3016 var basePlacement = getBasePlacement(preferredPlacement);
3017 var isBasePlacement = basePlacement === preferredPlacement;
3018 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
3019 var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
3020 return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
3021 placement: placement,
3022 boundary: boundary,
3023 rootBoundary: rootBoundary,
3024 padding: padding,
3025 flipVariations: flipVariations,
3026 allowedAutoPlacements: allowedAutoPlacements
3027 }) : placement);
3028 }, []);
3029 var referenceRect = state.rects.reference;
3030 var popperRect = state.rects.popper;
3031 var checksMap = new Map();
3032 var makeFallbackChecks = true;
3033 var firstFittingPlacement = placements[0];
3034
3035 for (var i = 0; i < placements.length; i++) {
3036 var placement = placements[i];
3037
3038 var _basePlacement = getBasePlacement(placement);
3039
3040 var isStartVariation = getVariation(placement) === start;
3041 var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
3042 var len = isVertical ? 'width' : 'height';
3043 var overflow = detectOverflow(state, {
3044 placement: placement,
3045 boundary: boundary,
3046 rootBoundary: rootBoundary,
3047 altBoundary: altBoundary,
3048 padding: padding
3049 });
3050 var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
3051
3052 if (referenceRect[len] > popperRect[len]) {
3053 mainVariationSide = getOppositePlacement(mainVariationSide);
3054 }
3055
3056 var altVariationSide = getOppositePlacement(mainVariationSide);
3057 var checks = [];
3058
3059 if (checkMainAxis) {
3060 checks.push(overflow[_basePlacement] <= 0);
3061 }
3062
3063 if (checkAltAxis) {
3064 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
3065 }
3066
3067 if (checks.every(function (check) {
3068 return check;
3069 })) {
3070 firstFittingPlacement = placement;
3071 makeFallbackChecks = false;
3072 break;
3073 }
3074
3075 checksMap.set(placement, checks);
3076 }
3077
3078 if (makeFallbackChecks) {
3079
3080 var numberOfChecks = flipVariations ? 3 : 1;
3081
3082 var _loop = function _loop(_i) {
3083 var fittingPlacement = placements.find(function (placement) {
3084 var checks = checksMap.get(placement);
3085
3086 if (checks) {
3087 return checks.slice(0, _i).every(function (check) {
3088 return check;
3089 });
3090 }
3091 });
3092
3093 if (fittingPlacement) {
3094 firstFittingPlacement = fittingPlacement;
3095 return "break";
3096 }
3097 };
3098
3099 for (var _i = numberOfChecks; _i > 0; _i--) {
3100 var _ret = _loop(_i);
3101
3102 if (_ret === "break") break;
3103 }
3104 }
3105
3106 if (state.placement !== firstFittingPlacement) {
3107 state.modifiersData[name]._skip = true;
3108 state.placement = firstFittingPlacement;
3109 state.reset = true;
3110 }
3111 }
3112
3113
3114 var flip$1 = {
3115 name: 'flip',
3116 enabled: true,
3117 phase: 'main',
3118 fn: flip,
3119 requiresIfExists: ['offset'],
3120 data: {
3121 _skip: false
3122 }
3123 };
3124
3125 function getSideOffsets(overflow, rect, preventedOffsets) {
3126 if (preventedOffsets === void 0) {
3127 preventedOffsets = {
3128 x: 0,
3129 y: 0
3130 };
3131 }
3132
3133 return {
3134 top: overflow.top - rect.height - preventedOffsets.y,
3135 right: overflow.right - rect.width + preventedOffsets.x,
3136 bottom: overflow.bottom - rect.height + preventedOffsets.y,
3137 left: overflow.left - rect.width - preventedOffsets.x
3138 };
3139 }
3140
3141 function isAnySideFullyClipped(overflow) {
3142 return [top, right, bottom, left].some(function (side) {
3143 return overflow[side] >= 0;
3144 });
3145 }
3146
3147 function hide(_ref) {
3148 var state = _ref.state,
3149 name = _ref.name;
3150 var referenceRect = state.rects.reference;
3151 var popperRect = state.rects.popper;
3152 var preventedOffsets = state.modifiersData.preventOverflow;
3153 var referenceOverflow = detectOverflow(state, {
3154 elementContext: 'reference'
3155 });
3156 var popperAltOverflow = detectOverflow(state, {
3157 altBoundary: true
3158 });
3159 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
3160 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
3161 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
3162 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
3163 state.modifiersData[name] = {
3164 referenceClippingOffsets: referenceClippingOffsets,
3165 popperEscapeOffsets: popperEscapeOffsets,
3166 isReferenceHidden: isReferenceHidden,
3167 hasPopperEscaped: hasPopperEscaped
3168 };
3169 state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
3170 'data-popper-reference-hidden': isReferenceHidden,
3171 'data-popper-escaped': hasPopperEscaped
3172 });
3173 }
3174
3175
3176 var hide$1 = {
3177 name: 'hide',
3178 enabled: true,
3179 phase: 'main',
3180 requiresIfExists: ['preventOverflow'],
3181 fn: hide
3182 };
3183
3184 function distanceAndSkiddingToXY(placement, rects, offset) {
3185 var basePlacement = getBasePlacement(placement);
3186 var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
3187
3188 var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {
3189 placement: placement
3190 })) : offset,
3191 skidding = _ref[0],
3192 distance = _ref[1];
3193
3194 skidding = skidding || 0;
3195 distance = (distance || 0) * invertDistance;
3196 return [left, right].indexOf(basePlacement) >= 0 ? {
3197 x: distance,
3198 y: skidding
3199 } : {
3200 x: skidding,
3201 y: distance
3202 };
3203 }
3204
3205 function offset(_ref2) {
3206 var state = _ref2.state,
3207 options = _ref2.options,
3208 name = _ref2.name;
3209 var _options$offset = options.offset,
3210 offset = _options$offset === void 0 ? [0, 0] : _options$offset;
3211 var data = placements.reduce(function (acc, placement) {
3212 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
3213 return acc;
3214 }, {});
3215 var _data$state$placement = data[state.placement],
3216 x = _data$state$placement.x,
3217 y = _data$state$placement.y;
3218
3219 if (state.modifiersData.popperOffsets != null) {
3220 state.modifiersData.popperOffsets.x += x;
3221 state.modifiersData.popperOffsets.y += y;
3222 }
3223
3224 state.modifiersData[name] = data;
3225 }
3226
3227
3228 var offset$1 = {
3229 name: 'offset',
3230 enabled: true,
3231 phase: 'main',
3232 requires: ['popperOffsets'],
3233 fn: offset
3234 };
3235
3236 function popperOffsets(_ref) {
3237 var state = _ref.state,
3238 name = _ref.name;
3239
3240
3241
3242
3243 state.modifiersData[name] = computeOffsets({
3244 reference: state.rects.reference,
3245 element: state.rects.popper,
3246 strategy: 'absolute',
3247 placement: state.placement
3248 });
3249 }
3250
3251
3252 var popperOffsets$1 = {
3253 name: 'popperOffsets',
3254 enabled: true,
3255 phase: 'read',
3256 fn: popperOffsets,
3257 data: {}
3258 };
3259
3260 function getAltAxis(axis) {
3261 return axis === 'x' ? 'y' : 'x';
3262 }
3263
3264 function preventOverflow(_ref) {
3265 var state = _ref.state,
3266 options = _ref.options,
3267 name = _ref.name;
3268 var _options$mainAxis = options.mainAxis,
3269 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
3270 _options$altAxis = options.altAxis,
3271 checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
3272 boundary = options.boundary,
3273 rootBoundary = options.rootBoundary,
3274 altBoundary = options.altBoundary,
3275 padding = options.padding,
3276 _options$tether = options.tether,
3277 tether = _options$tether === void 0 ? true : _options$tether,
3278 _options$tetherOffset = options.tetherOffset,
3279 tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
3280 var overflow = detectOverflow(state, {
3281 boundary: boundary,
3282 rootBoundary: rootBoundary,
3283 padding: padding,
3284 altBoundary: altBoundary
3285 });
3286 var basePlacement = getBasePlacement(state.placement);
3287 var variation = getVariation(state.placement);
3288 var isBasePlacement = !variation;
3289 var mainAxis = getMainAxisFromPlacement(basePlacement);
3290 var altAxis = getAltAxis(mainAxis);
3291 var popperOffsets = state.modifiersData.popperOffsets;
3292 var referenceRect = state.rects.reference;
3293 var popperRect = state.rects.popper;
3294 var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {
3295 placement: state.placement
3296 })) : tetherOffset;
3297 var data = {
3298 x: 0,
3299 y: 0
3300 };
3301
3302 if (!popperOffsets) {
3303 return;
3304 }
3305
3306 if (checkMainAxis) {
3307 var mainSide = mainAxis === 'y' ? top : left;
3308 var altSide = mainAxis === 'y' ? bottom : right;
3309 var len = mainAxis === 'y' ? 'height' : 'width';
3310 var offset = popperOffsets[mainAxis];
3311 var min = popperOffsets[mainAxis] + overflow[mainSide];
3312 var max = popperOffsets[mainAxis] - overflow[altSide];
3313 var additive = tether ? -popperRect[len] / 2 : 0;
3314 var minLen = variation === start ? referenceRect[len] : popperRect[len];
3315 var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
3316
3317
3318 var arrowElement = state.elements.arrow;
3319 var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
3320 width: 0,
3321 height: 0
3322 };
3323 var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
3324 var arrowPaddingMin = arrowPaddingObject[mainSide];
3325 var arrowPaddingMax = arrowPaddingObject[altSide];
3326
3327
3328
3329
3330
3331 var arrowLen = within(0, referenceRect[len], arrowRect[len]);
3332 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;
3333 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;
3334 var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
3335 var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
3336 var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;
3337 var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;
3338 var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;
3339 var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);
3340 popperOffsets[mainAxis] = preventedOffset;
3341 data[mainAxis] = preventedOffset - offset;
3342 }
3343
3344 if (checkAltAxis) {
3345 var _mainSide = mainAxis === 'x' ? top : left;
3346
3347 var _altSide = mainAxis === 'x' ? bottom : right;
3348
3349 var _offset = popperOffsets[altAxis];
3350
3351 var _min = _offset + overflow[_mainSide];
3352
3353 var _max = _offset - overflow[_altSide];
3354
3355 var _preventedOffset = within(_min, _offset, _max);
3356
3357 popperOffsets[altAxis] = _preventedOffset;
3358 data[altAxis] = _preventedOffset - _offset;
3359 }
3360
3361 state.modifiersData[name] = data;
3362 }
3363
3364
3365 var preventOverflow$1 = {
3366 name: 'preventOverflow',
3367 enabled: true,
3368 phase: 'main',
3369 fn: preventOverflow,
3370 requiresIfExists: ['offset']
3371 };
3372
3373 function getHTMLElementScroll(element) {
3374 return {
3375 scrollLeft: element.scrollLeft,
3376 scrollTop: element.scrollTop
3377 };
3378 }
3379
3380 function getNodeScroll(node) {
3381 if (node === getWindow(node) || !isHTMLElement(node)) {
3382 return getWindowScroll(node);
3383 } else {
3384 return getHTMLElementScroll(node);
3385 }
3386 }
3387
3388
3389
3390 function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
3391 if (isFixed === void 0) {
3392 isFixed = false;
3393 }
3394
3395 var documentElement = getDocumentElement(offsetParent);
3396 var rect = getBoundingClientRect(elementOrVirtualElement);
3397 var isOffsetParentAnElement = isHTMLElement(offsetParent);
3398 var scroll = {
3399 scrollLeft: 0,
3400 scrollTop: 0
3401 };
3402 var offsets = {
3403 x: 0,
3404 y: 0
3405 };
3406
3407 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
3408 if (getNodeName(offsetParent) !== 'body' ||
3409 isScrollParent(documentElement)) {
3410 scroll = getNodeScroll(offsetParent);
3411 }
3412
3413 if (isHTMLElement(offsetParent)) {
3414 offsets = getBoundingClientRect(offsetParent);
3415 offsets.x += offsetParent.clientLeft;
3416 offsets.y += offsetParent.clientTop;
3417 } else if (documentElement) {
3418 offsets.x = getWindowScrollBarX(documentElement);
3419 }
3420 }
3421
3422 return {
3423 x: rect.left + scroll.scrollLeft - offsets.x,
3424 y: rect.top + scroll.scrollTop - offsets.y,
3425 width: rect.width,
3426 height: rect.height
3427 };
3428 }
3429
3430 function order(modifiers) {
3431 var map = new Map();
3432 var visited = new Set();
3433 var result = [];
3434 modifiers.forEach(function (modifier) {
3435 map.set(modifier.name, modifier);
3436 });
3437
3438 function sort(modifier) {
3439 visited.add(modifier.name);
3440 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
3441 requires.forEach(function (dep) {
3442 if (!visited.has(dep)) {
3443 var depModifier = map.get(dep);
3444
3445 if (depModifier) {
3446 sort(depModifier);
3447 }
3448 }
3449 });
3450 result.push(modifier);
3451 }
3452
3453 modifiers.forEach(function (modifier) {
3454 if (!visited.has(modifier.name)) {
3455
3456 sort(modifier);
3457 }
3458 });
3459 return result;
3460 }
3461
3462 function orderModifiers(modifiers) {
3463
3464 var orderedModifiers = order(modifiers);
3465
3466 return modifierPhases.reduce(function (acc, phase) {
3467 return acc.concat(orderedModifiers.filter(function (modifier) {
3468 return modifier.phase === phase;
3469 }));
3470 }, []);
3471 }
3472
3473 function debounce(fn) {
3474 var pending;
3475 return function () {
3476 if (!pending) {
3477 pending = new Promise(function (resolve) {
3478 Promise.resolve().then(function () {
3479 pending = undefined;
3480 resolve(fn());
3481 });
3482 });
3483 }
3484
3485 return pending;
3486 };
3487 }
3488
3489 function mergeByName(modifiers) {
3490 var merged = modifiers.reduce(function (merged, current) {
3491 var existing = merged[current.name];
3492 merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
3493 options: Object.assign(Object.assign({}, existing.options), current.options),
3494 data: Object.assign(Object.assign({}, existing.data), current.data)
3495 }) : current;
3496 return merged;
3497 }, {});
3498
3499 return Object.keys(merged).map(function (key) {
3500 return merged[key];
3501 });
3502 }
3503
3504 var DEFAULT_OPTIONS = {
3505 placement: 'bottom',
3506 modifiers: [],
3507 strategy: 'absolute'
3508 };
3509
3510 function areValidElements() {
3511 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3512 args[_key] = arguments[_key];
3513 }
3514
3515 return !args.some(function (element) {
3516 return !(element && typeof element.getBoundingClientRect === 'function');
3517 });
3518 }
3519
3520 function popperGenerator(generatorOptions) {
3521 if (generatorOptions === void 0) {
3522 generatorOptions = {};
3523 }
3524
3525 var _generatorOptions = generatorOptions,
3526 _generatorOptions$def = _generatorOptions.defaultModifiers,
3527 defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
3528 _generatorOptions$def2 = _generatorOptions.defaultOptions,
3529 defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
3530 return function createPopper(reference, popper, options) {
3531 if (options === void 0) {
3532 options = defaultOptions;
3533 }
3534
3535 var state = {
3536 placement: 'bottom',
3537 orderedModifiers: [],
3538 options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
3539 modifiersData: {},
3540 elements: {
3541 reference: reference,
3542 popper: popper
3543 },
3544 attributes: {},
3545 styles: {}
3546 };
3547 var effectCleanupFns = [];
3548 var isDestroyed = false;
3549 var instance = {
3550 state: state,
3551 setOptions: function setOptions(options) {
3552 cleanupModifierEffects();
3553 state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
3554 state.scrollParents = {
3555 reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
3556 popper: listScrollParents(popper)
3557 };
3558
3559
3560 var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers)));
3561
3562 state.orderedModifiers = orderedModifiers.filter(function (m) {
3563 return m.enabled;
3564 });
3565
3566 runModifierEffects();
3567 return instance.update();
3568 },
3569
3570
3571
3572
3573
3574 forceUpdate: function forceUpdate() {
3575 if (isDestroyed) {
3576 return;
3577 }
3578
3579 var _state$elements = state.elements,
3580 reference = _state$elements.reference,
3581 popper = _state$elements.popper;
3582
3583
3584 if (!areValidElements(reference, popper)) {
3585
3586 return;
3587 }
3588
3589
3590 state.rects = {
3591 reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
3592 popper: getLayoutRect(popper)
3593 };
3594
3595
3596
3597
3598
3599 state.reset = false;
3600 state.placement = state.options.placement;
3601
3602
3603
3604
3605 state.orderedModifiers.forEach(function (modifier) {
3606 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
3607 });
3608
3609 for (var index = 0; index < state.orderedModifiers.length; index++) {
3610
3611 if (state.reset === true) {
3612 state.reset = false;
3613 index = -1;
3614 continue;
3615 }
3616
3617 var _state$orderedModifie = state.orderedModifiers[index],
3618 fn = _state$orderedModifie.fn,
3619 _state$orderedModifie2 = _state$orderedModifie.options,
3620 _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
3621 name = _state$orderedModifie.name;
3622
3623 if (typeof fn === 'function') {
3624 state = fn({
3625 state: state,
3626 options: _options,
3627 name: name,
3628 instance: instance
3629 }) || state;
3630 }
3631 }
3632 },
3633
3634
3635 update: debounce(function () {
3636 return new Promise(function (resolve) {
3637 instance.forceUpdate();
3638 resolve(state);
3639 });
3640 }),
3641 destroy: function destroy() {
3642 cleanupModifierEffects();
3643 isDestroyed = true;
3644 }
3645 };
3646
3647 if (!areValidElements(reference, popper)) {
3648
3649 return instance;
3650 }
3651
3652 instance.setOptions(options).then(function (state) {
3653 if (!isDestroyed && options.onFirstUpdate) {
3654 options.onFirstUpdate(state);
3655 }
3656 });
3657
3658
3659
3660
3661
3662 function runModifierEffects() {
3663 state.orderedModifiers.forEach(function (_ref3) {
3664 var name = _ref3.name,
3665 _ref3$options = _ref3.options,
3666 options = _ref3$options === void 0 ? {} : _ref3$options,
3667 effect = _ref3.effect;
3668
3669 if (typeof effect === 'function') {
3670 var cleanupFn = effect({
3671 state: state,
3672 name: name,
3673 instance: instance,
3674 options: options
3675 });
3676
3677 var noopFn = function noopFn() {};
3678
3679 effectCleanupFns.push(cleanupFn || noopFn);
3680 }
3681 });
3682 }
3683
3684 function cleanupModifierEffects() {
3685 effectCleanupFns.forEach(function (fn) {
3686 return fn();
3687 });
3688 effectCleanupFns = [];
3689 }
3690
3691 return instance;
3692 };
3693 }
3694 var createPopper = popperGenerator();
3695
3696 var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
3697 var createPopper$1 = popperGenerator({
3698 defaultModifiers: defaultModifiers
3699 });
3700
3701 var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
3702 var createPopper$2 = popperGenerator({
3703 defaultModifiers: defaultModifiers$1
3704 });
3705
3706 var Popper = Object.freeze({
3707 __proto__: null,
3708 popperGenerator: popperGenerator,
3709 detectOverflow: detectOverflow,
3710 createPopperBase: createPopper,
3711 createPopper: createPopper$2,
3712 createPopperLite: createPopper$1,
3713 top: top,
3714 bottom: bottom,
3715 right: right,
3716 left: left,
3717 auto: auto,
3718 basePlacements: basePlacements,
3719 start: start,
3720 end: end,
3721 clippingParents: clippingParents,
3722 viewport: viewport,
3723 popper: popper,
3724 reference: reference,
3725 variationPlacements: variationPlacements,
3726 placements: placements,
3727 beforeRead: beforeRead,
3728 read: read,
3729 afterRead: afterRead,
3730 beforeMain: beforeMain,
3731 main: main,
3732 afterMain: afterMain,
3733 beforeWrite: beforeWrite,
3734 write: write,
3735 afterWrite: afterWrite,
3736 modifierPhases: modifierPhases,
3737 applyStyles: applyStyles$1,
3738 arrow: arrow$1,
3739 computeStyles: computeStyles$1,
3740 eventListeners: eventListeners,
3741 flip: flip$1,
3742 hide: hide$1,
3743 offset: offset$1,
3744 popperOffsets: popperOffsets$1,
3745 preventOverflow: preventOverflow$1
3746 });
3747
3748
3749
3750
3751
3752
3753
3754 var NAME$4 = 'dropdown';
3755 var DATA_KEY$4 = 'bs.dropdown';
3756 var EVENT_KEY$4 = "." + DATA_KEY$4;
3757 var DATA_API_KEY$4 = '.data-api';
3758 var ESCAPE_KEY = 'Escape';
3759 var SPACE_KEY = 'Space';
3760 var TAB_KEY = 'Tab';
3761 var ARROW_UP_KEY = 'ArrowUp';
3762 var ARROW_DOWN_KEY = 'ArrowDown';
3763 var RIGHT_MOUSE_BUTTON = 2;
3764
3765 var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
3766 var EVENT_HIDE$1 = "hide" + EVENT_KEY$4;
3767 var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4;
3768 var EVENT_SHOW$1 = "show" + EVENT_KEY$4;
3769 var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4;
3770 var EVENT_CLICK = "click" + EVENT_KEY$4;
3771 var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4;
3772 var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;
3773 var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;
3774 var CLASS_NAME_DISABLED = 'disabled';
3775 var CLASS_NAME_SHOW$1 = 'show';
3776 var CLASS_NAME_DROPUP = 'dropup';
3777 var CLASS_NAME_DROPEND = 'dropend';
3778 var CLASS_NAME_DROPSTART = 'dropstart';
3779 var CLASS_NAME_NAVBAR = 'navbar';
3780 var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="dropdown"]';
3781 var SELECTOR_FORM_CHILD = '.dropdown form';
3782 var SELECTOR_MENU = '.dropdown-menu';
3783 var SELECTOR_NAVBAR_NAV = '.navbar-nav';
3784 var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
3785 var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start';
3786 var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end';
3787 var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start';
3788 var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end';
3789 var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start';
3790 var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start';
3791 var Default$2 = {
3792 offset: 0,
3793 flip: true,
3794 boundary: 'clippingParents',
3795 reference: 'toggle',
3796 display: 'dynamic',
3797 popperConfig: null
3798 };
3799 var DefaultType$2 = {
3800 offset: '(number|string|function)',
3801 flip: 'boolean',
3802 boundary: '(string|element)',
3803 reference: '(string|element)',
3804 display: 'string',
3805 popperConfig: '(null|object)'
3806 };
3807
3808
3809
3810
3811
3812
3813 var Dropdown = function (_BaseComponent) {
3814 _inheritsLoose(Dropdown, _BaseComponent);
3815
3816 function Dropdown(element, config) {
3817 var _this;
3818
3819 _this = _BaseComponent.call(this, element) || this;
3820 _this._popper = null;
3821 _this._config = _this._getConfig(config);
3822 _this._menu = _this._getMenuElement();
3823 _this._inNavbar = _this._detectNavbar();
3824
3825 _this._addEventListeners();
3826
3827 return _this;
3828 }
3829
3830
3831 var _proto = Dropdown.prototype;
3832
3833
3834 _proto.toggle = function toggle() {
3835 if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
3836 return;
3837 }
3838
3839 var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1);
3840
3841 Dropdown.clearMenus();
3842
3843 if (isActive) {
3844 return;
3845 }
3846
3847 this.show();
3848 };
3849
3850 _proto.show = function show() {
3851 if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
3852 return;
3853 }
3854
3855 var parent = Dropdown.getParentFromElement(this._element);
3856 var relatedTarget = {
3857 relatedTarget: this._element
3858 };
3859 var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget);
3860
3861 if (showEvent.defaultPrevented) {
3862 return;
3863 }
3864
3865
3866 if (!this._inNavbar) {
3867 if (typeof Popper === 'undefined') {
3868 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
3869 }
3870
3871 var referenceElement = this._element;
3872
3873 if (this._config.reference === 'parent') {
3874 referenceElement = parent;
3875 } else if (isElement(this._config.reference)) {
3876 referenceElement = this._config.reference;
3877
3878 if (typeof this._config.reference.jquery !== 'undefined') {
3879 referenceElement = this._config.reference[0];
3880 }
3881 }
3882
3883 this._popper = createPopper$2(referenceElement, this._menu, this._getPopperConfig());
3884 }
3885
3886
3887
3888
3889
3890 if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
3891 var _ref;
3892
3893 (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
3894 return EventHandler.on(elem, 'mouseover', null, noop());
3895 });
3896 }
3897
3898 this._element.focus();
3899
3900 this._element.setAttribute('aria-expanded', true);
3901
3902 this._menu.classList.toggle(CLASS_NAME_SHOW$1);
3903
3904 this._element.classList.toggle(CLASS_NAME_SHOW$1);
3905
3906 EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget);
3907 };
3908
3909 _proto.hide = function hide() {
3910 if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
3911 return;
3912 }
3913
3914 var parent = Dropdown.getParentFromElement(this._element);
3915 var relatedTarget = {
3916 relatedTarget: this._element
3917 };
3918 var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
3919
3920 if (hideEvent.defaultPrevented) {
3921 return;
3922 }
3923
3924 if (this._popper) {
3925 this._popper.destroy();
3926 }
3927
3928 this._menu.classList.toggle(CLASS_NAME_SHOW$1);
3929
3930 this._element.classList.toggle(CLASS_NAME_SHOW$1);
3931
3932 EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
3933 };
3934
3935 _proto.dispose = function dispose() {
3936 _BaseComponent.prototype.dispose.call(this);
3937
3938 EventHandler.off(this._element, EVENT_KEY$4);
3939 this._menu = null;
3940
3941 if (this._popper) {
3942 this._popper.destroy();
3943
3944 this._popper = null;
3945 }
3946 };
3947
3948 _proto.update = function update() {
3949 this._inNavbar = this._detectNavbar();
3950
3951 if (this._popper) {
3952 this._popper.update();
3953 }
3954 }
3955 ;
3956
3957 _proto._addEventListeners = function _addEventListeners() {
3958 var _this2 = this;
3959
3960 EventHandler.on(this._element, EVENT_CLICK, function (event) {
3961 event.preventDefault();
3962 event.stopPropagation();
3963
3964 _this2.toggle();
3965 });
3966 };
3967
3968 _proto._getConfig = function _getConfig(config) {
3969 config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config);
3970 typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
3971 return config;
3972 };
3973
3974 _proto._getMenuElement = function _getMenuElement() {
3975 return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
3976 };
3977
3978 _proto._getPlacement = function _getPlacement() {
3979 var parentDropdown = this._element.parentNode;
3980
3981 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
3982 return PLACEMENT_RIGHT;
3983 }
3984
3985 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
3986 return PLACEMENT_LEFT;
3987 }
3988
3989
3990 var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
3991
3992 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
3993 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
3994 }
3995
3996 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
3997 };
3998
3999 _proto._detectNavbar = function _detectNavbar() {
4000 return this._element.closest("." + CLASS_NAME_NAVBAR) !== null;
4001 };
4002
4003 _proto._getPopperConfig = function _getPopperConfig() {
4004 var popperConfig = {
4005 placement: this._getPlacement(),
4006 modifiers: [{
4007 name: 'preventOverflow',
4008 options: {
4009 altBoundary: this._config.flip,
4010 rootBoundary: this._config.boundary
4011 }
4012 }]
4013 };
4014
4015 if (this._config.display === 'static') {
4016 popperConfig.modifiers = [{
4017 name: 'applyStyles',
4018 enabled: false
4019 }];
4020 }
4021
4022 return _extends({}, popperConfig, this._config.popperConfig);
4023 }
4024 ;
4025
4026 Dropdown.dropdownInterface = function dropdownInterface(element, config) {
4027 var data = Data.getData(element, DATA_KEY$4);
4028
4029 var _config = typeof config === 'object' ? config : null;
4030
4031 if (!data) {
4032 data = new Dropdown(element, _config);
4033 }
4034
4035 if (typeof config === 'string') {
4036 if (typeof data[config] === 'undefined') {
4037 throw new TypeError("No method named \"" + config + "\"");
4038 }
4039
4040 data[config]();
4041 }
4042 };
4043
4044 Dropdown.jQueryInterface = function jQueryInterface(config) {
4045 return this.each(function () {
4046 Dropdown.dropdownInterface(this, config);
4047 });
4048 };
4049
4050 Dropdown.clearMenus = function clearMenus(event) {
4051 if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
4052 return;
4053 }
4054
4055 var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2);
4056
4057 for (var i = 0, len = toggles.length; i < len; i++) {
4058 var parent = Dropdown.getParentFromElement(toggles[i]);
4059 var context = Data.getData(toggles[i], DATA_KEY$4);
4060 var relatedTarget = {
4061 relatedTarget: toggles[i]
4062 };
4063
4064 if (event && event.type === 'click') {
4065 relatedTarget.clickEvent = event;
4066 }
4067
4068 if (!context) {
4069 continue;
4070 }
4071
4072 var dropdownMenu = context._menu;
4073
4074 if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {
4075 continue;
4076 }
4077
4078 if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
4079 continue;
4080 }
4081
4082 var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
4083
4084 if (hideEvent.defaultPrevented) {
4085 continue;
4086 }
4087
4088
4089
4090 if ('ontouchstart' in document.documentElement) {
4091 var _ref2;
4092
4093 (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
4094 return EventHandler.off(elem, 'mouseover', null, noop());
4095 });
4096 }
4097
4098 toggles[i].setAttribute('aria-expanded', 'false');
4099
4100 if (context._popper) {
4101 context._popper.destroy();
4102 }
4103
4104 dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);
4105 toggles[i].classList.remove(CLASS_NAME_SHOW$1);
4106 EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
4107 }
4108 };
4109
4110 Dropdown.getParentFromElement = function getParentFromElement(element) {
4111 return getElementFromSelector(element) || element.parentNode;
4112 };
4113
4114 Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
4115
4116
4117
4118
4119
4120
4121
4122 if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
4123 return;
4124 }
4125
4126 event.preventDefault();
4127 event.stopPropagation();
4128
4129 if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
4130 return;
4131 }
4132
4133 var parent = Dropdown.getParentFromElement(this);
4134 var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
4135
4136 if (event.key === ESCAPE_KEY) {
4137 var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
4138 button.focus();
4139 Dropdown.clearMenus();
4140 return;
4141 }
4142
4143 if (!isActive || event.key === SPACE_KEY) {
4144 Dropdown.clearMenus();
4145 return;
4146 }
4147
4148 var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
4149
4150 if (!items.length) {
4151 return;
4152 }
4153
4154 var index = items.indexOf(event.target);
4155
4156 if (event.key === ARROW_UP_KEY && index > 0) {
4157 index--;
4158 }
4159
4160
4161 if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
4162 index++;
4163 }
4164
4165
4166 index = index === -1 ? 0 : index;
4167 items[index].focus();
4168 };
4169
4170 _createClass(Dropdown, null, [{
4171 key: "Default",
4172 get: function get() {
4173 return Default$2;
4174 }
4175 }, {
4176 key: "DefaultType",
4177 get: function get() {
4178 return DefaultType$2;
4179 }
4180 }, {
4181 key: "DATA_KEY",
4182 get: function get() {
4183 return DATA_KEY$4;
4184 }
4185 }]);
4186
4187 return Dropdown;
4188 }(BaseComponent);
4189
4190
4191
4192
4193
4194
4195
4196 EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler);
4197 EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
4198 EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus);
4199 EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
4200 EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {
4201 event.preventDefault();
4202 event.stopPropagation();
4203 Dropdown.dropdownInterface(this, 'toggle');
4204 });
4205 EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
4206 return e.stopPropagation();
4207 });
4208
4209
4210
4211
4212
4213
4214
4215 onDOMContentLoaded(function () {
4216 var $ = getjQuery();
4217
4218
4219 if ($) {
4220 var JQUERY_NO_CONFLICT = $.fn[NAME$4];
4221 $.fn[NAME$4] = Dropdown.jQueryInterface;
4222 $.fn[NAME$4].Constructor = Dropdown;
4223
4224 $.fn[NAME$4].noConflict = function () {
4225 $.fn[NAME$4] = JQUERY_NO_CONFLICT;
4226 return Dropdown.jQueryInterface;
4227 };
4228 }
4229 });
4230
4231
4232
4233
4234
4235
4236
4237 var NAME$5 = 'modal';
4238 var DATA_KEY$5 = 'bs.modal';
4239 var EVENT_KEY$5 = "." + DATA_KEY$5;
4240 var DATA_API_KEY$5 = '.data-api';
4241 var ESCAPE_KEY$1 = 'Escape';
4242 var Default$3 = {
4243 backdrop: true,
4244 keyboard: true,
4245 focus: true
4246 };
4247 var DefaultType$3 = {
4248 backdrop: '(boolean|string)',
4249 keyboard: 'boolean',
4250 focus: 'boolean'
4251 };
4252 var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
4253 var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
4254 var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
4255 var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
4256 var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
4257 var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
4258 var EVENT_RESIZE = "resize" + EVENT_KEY$5;
4259 var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;
4260 var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
4261 var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
4262 var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
4263 var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;
4264 var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
4265 var CLASS_NAME_BACKDROP = 'modal-backdrop';
4266 var CLASS_NAME_OPEN = 'modal-open';
4267 var CLASS_NAME_FADE = 'fade';
4268 var CLASS_NAME_SHOW$2 = 'show';
4269 var CLASS_NAME_STATIC = 'modal-static';
4270 var SELECTOR_DIALOG = '.modal-dialog';
4271 var SELECTOR_MODAL_BODY = '.modal-body';
4272 var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]';
4273 var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]';
4274 var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
4275 var SELECTOR_STICKY_CONTENT = '.sticky-top';
4276
4277
4278
4279
4280
4281
4282 var Modal = function (_BaseComponent) {
4283 _inheritsLoose(Modal, _BaseComponent);
4284
4285 function Modal(element, config) {
4286 var _this;
4287
4288 _this = _BaseComponent.call(this, element) || this;
4289 _this._config = _this._getConfig(config);
4290 _this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
4291 _this._backdrop = null;
4292 _this._isShown = false;
4293 _this._isBodyOverflowing = false;
4294 _this._ignoreBackdropClick = false;
4295 _this._isTransitioning = false;
4296 _this._scrollbarWidth = 0;
4297 return _this;
4298 }
4299
4300
4301 var _proto = Modal.prototype;
4302
4303
4304 _proto.toggle = function toggle(relatedTarget) {
4305 return this._isShown ? this.hide() : this.show(relatedTarget);
4306 };
4307
4308 _proto.show = function show(relatedTarget) {
4309 var _this2 = this;
4310
4311 if (this._isShown || this._isTransitioning) {
4312 return;
4313 }
4314
4315 if (this._element.classList.contains(CLASS_NAME_FADE)) {
4316 this._isTransitioning = true;
4317 }
4318
4319 var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
4320 relatedTarget: relatedTarget
4321 });
4322
4323 if (this._isShown || showEvent.defaultPrevented) {
4324 return;
4325 }
4326
4327 this._isShown = true;
4328
4329 this._checkScrollbar();
4330
4331 this._setScrollbar();
4332
4333 this._adjustDialog();
4334
4335 this._setEscapeEvent();
4336
4337 this._setResizeEvent();
4338
4339 EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
4340 return _this2.hide(event);
4341 });
4342 EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
4343 EventHandler.one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) {
4344 if (event.target === _this2._element) {
4345 _this2._ignoreBackdropClick = true;
4346 }
4347 });
4348 });
4349
4350 this._showBackdrop(function () {
4351 return _this2._showElement(relatedTarget);
4352 });
4353 };
4354
4355 _proto.hide = function hide(event) {
4356 var _this3 = this;
4357
4358 if (event) {
4359 event.preventDefault();
4360 }
4361
4362 if (!this._isShown || this._isTransitioning) {
4363 return;
4364 }
4365
4366 var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
4367
4368 if (hideEvent.defaultPrevented) {
4369 return;
4370 }
4371
4372 this._isShown = false;
4373
4374 var transition = this._element.classList.contains(CLASS_NAME_FADE);
4375
4376 if (transition) {
4377 this._isTransitioning = true;
4378 }
4379
4380 this._setEscapeEvent();
4381
4382 this._setResizeEvent();
4383
4384 EventHandler.off(document, EVENT_FOCUSIN);
4385
4386 this._element.classList.remove(CLASS_NAME_SHOW$2);
4387
4388 EventHandler.off(this._element, EVENT_CLICK_DISMISS);
4389 EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
4390
4391 if (transition) {
4392 var transitionDuration = getTransitionDurationFromElement(this._element);
4393 EventHandler.one(this._element, TRANSITION_END, function (event) {
4394 return _this3._hideModal(event);
4395 });
4396 emulateTransitionEnd(this._element, transitionDuration);
4397 } else {
4398 this._hideModal();
4399 }
4400 };
4401
4402 _proto.dispose = function dispose() {
4403 [window, this._element, this._dialog].forEach(function (htmlElement) {
4404 return EventHandler.off(htmlElement, EVENT_KEY$5);
4405 });
4406
4407 _BaseComponent.prototype.dispose.call(this);
4408
4409
4410
4411
4412
4413
4414
4415 EventHandler.off(document, EVENT_FOCUSIN);
4416 this._config = null;
4417 this._dialog = null;
4418 this._backdrop = null;
4419 this._isShown = null;
4420 this._isBodyOverflowing = null;
4421 this._ignoreBackdropClick = null;
4422 this._isTransitioning = null;
4423 this._scrollbarWidth = null;
4424 };
4425
4426 _proto.handleUpdate = function handleUpdate() {
4427 this._adjustDialog();
4428 }
4429 ;
4430
4431 _proto._getConfig = function _getConfig(config) {
4432 config = _extends({}, Default$3, config);
4433 typeCheckConfig(NAME$5, config, DefaultType$3);
4434 return config;
4435 };
4436
4437 _proto._showElement = function _showElement(relatedTarget) {
4438 var _this4 = this;
4439
4440 var transition = this._element.classList.contains(CLASS_NAME_FADE);
4441
4442 var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
4443
4444 if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
4445
4446 document.body.appendChild(this._element);
4447 }
4448
4449 this._element.style.display = 'block';
4450
4451 this._element.removeAttribute('aria-hidden');
4452
4453 this._element.setAttribute('aria-modal', true);
4454
4455 this._element.setAttribute('role', 'dialog');
4456
4457 this._element.scrollTop = 0;
4458
4459 if (modalBody) {
4460 modalBody.scrollTop = 0;
4461 }
4462
4463 if (transition) {
4464 reflow(this._element);
4465 }
4466
4467 this._element.classList.add(CLASS_NAME_SHOW$2);
4468
4469 if (this._config.focus) {
4470 this._enforceFocus();
4471 }
4472
4473 var transitionComplete = function transitionComplete() {
4474 if (_this4._config.focus) {
4475 _this4._element.focus();
4476 }
4477
4478 _this4._isTransitioning = false;
4479 EventHandler.trigger(_this4._element, EVENT_SHOWN$2, {
4480 relatedTarget: relatedTarget
4481 });
4482 };
4483
4484 if (transition) {
4485 var transitionDuration = getTransitionDurationFromElement(this._dialog);
4486 EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
4487 emulateTransitionEnd(this._dialog, transitionDuration);
4488 } else {
4489 transitionComplete();
4490 }
4491 };
4492
4493 _proto._enforceFocus = function _enforceFocus() {
4494 var _this5 = this;
4495
4496 EventHandler.off(document, EVENT_FOCUSIN);
4497
4498 EventHandler.on(document, EVENT_FOCUSIN, function (event) {
4499 if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) {
4500 _this5._element.focus();
4501 }
4502 });
4503 };
4504
4505 _proto._setEscapeEvent = function _setEscapeEvent() {
4506 var _this6 = this;
4507
4508 if (this._isShown) {
4509 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
4510 if (_this6._config.keyboard && event.key === ESCAPE_KEY$1) {
4511 event.preventDefault();
4512
4513 _this6.hide();
4514 } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY$1) {
4515 _this6._triggerBackdropTransition();
4516 }
4517 });
4518 } else {
4519 EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
4520 }
4521 };
4522
4523 _proto._setResizeEvent = function _setResizeEvent() {
4524 var _this7 = this;
4525
4526 if (this._isShown) {
4527 EventHandler.on(window, EVENT_RESIZE, function () {
4528 return _this7._adjustDialog();
4529 });
4530 } else {
4531 EventHandler.off(window, EVENT_RESIZE);
4532 }
4533 };
4534
4535 _proto._hideModal = function _hideModal() {
4536 var _this8 = this;
4537
4538 this._element.style.display = 'none';
4539
4540 this._element.setAttribute('aria-hidden', true);
4541
4542 this._element.removeAttribute('aria-modal');
4543
4544 this._element.removeAttribute('role');
4545
4546 this._isTransitioning = false;
4547
4548 this._showBackdrop(function () {
4549 document.body.classList.remove(CLASS_NAME_OPEN);
4550
4551 _this8._resetAdjustments();
4552
4553 _this8._resetScrollbar();
4554
4555 EventHandler.trigger(_this8._element, EVENT_HIDDEN$2);
4556 });
4557 };
4558
4559 _proto._removeBackdrop = function _removeBackdrop() {
4560 this._backdrop.parentNode.removeChild(this._backdrop);
4561
4562 this._backdrop = null;
4563 };
4564
4565 _proto._showBackdrop = function _showBackdrop(callback) {
4566 var _this9 = this;
4567
4568 var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
4569
4570 if (this._isShown && this._config.backdrop) {
4571 this._backdrop = document.createElement('div');
4572 this._backdrop.className = CLASS_NAME_BACKDROP;
4573
4574 if (animate) {
4575 this._backdrop.classList.add(animate);
4576 }
4577
4578 document.body.appendChild(this._backdrop);
4579 EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {
4580 if (_this9._ignoreBackdropClick) {
4581 _this9._ignoreBackdropClick = false;
4582 return;
4583 }
4584
4585 if (event.target !== event.currentTarget) {
4586 return;
4587 }
4588
4589 if (_this9._config.backdrop === 'static') {
4590 _this9._triggerBackdropTransition();
4591 } else {
4592 _this9.hide();
4593 }
4594 });
4595
4596 if (animate) {
4597 reflow(this._backdrop);
4598 }
4599
4600 this._backdrop.classList.add(CLASS_NAME_SHOW$2);
4601
4602 if (!animate) {
4603 callback();
4604 return;
4605 }
4606
4607 var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
4608 EventHandler.one(this._backdrop, TRANSITION_END, callback);
4609 emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
4610 } else if (!this._isShown && this._backdrop) {
4611 this._backdrop.classList.remove(CLASS_NAME_SHOW$2);
4612
4613 var callbackRemove = function callbackRemove() {
4614 _this9._removeBackdrop();
4615
4616 callback();
4617 };
4618
4619 if (this._element.classList.contains(CLASS_NAME_FADE)) {
4620 var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
4621
4622 EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
4623 emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
4624 } else {
4625 callbackRemove();
4626 }
4627 } else {
4628 callback();
4629 }
4630 };
4631
4632 _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
4633 var _this10 = this;
4634
4635 var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
4636
4637 if (hideEvent.defaultPrevented) {
4638 return;
4639 }
4640
4641 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
4642
4643 if (!isModalOverflowing) {
4644 this._element.style.overflowY = 'hidden';
4645 }
4646
4647 this._element.classList.add(CLASS_NAME_STATIC);
4648
4649 var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
4650 EventHandler.off(this._element, TRANSITION_END);
4651 EventHandler.one(this._element, TRANSITION_END, function () {
4652 _this10._element.classList.remove(CLASS_NAME_STATIC);
4653
4654 if (!isModalOverflowing) {
4655 EventHandler.one(_this10._element, TRANSITION_END, function () {
4656 _this10._element.style.overflowY = '';
4657 });
4658 emulateTransitionEnd(_this10._element, modalTransitionDuration);
4659 }
4660 });
4661 emulateTransitionEnd(this._element, modalTransitionDuration);
4662
4663 this._element.focus();
4664 }
4665
4666
4667 ;
4668
4669 _proto._adjustDialog = function _adjustDialog() {
4670 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
4671
4672 if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) {
4673 this._element.style.paddingLeft = this._scrollbarWidth + "px";
4674 }
4675
4676 if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) {
4677 this._element.style.paddingRight = this._scrollbarWidth + "px";
4678 }
4679 };
4680
4681 _proto._resetAdjustments = function _resetAdjustments() {
4682 this._element.style.paddingLeft = '';
4683 this._element.style.paddingRight = '';
4684 };
4685
4686 _proto._checkScrollbar = function _checkScrollbar() {
4687 var rect = document.body.getBoundingClientRect();
4688 this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
4689 this._scrollbarWidth = this._getScrollbarWidth();
4690 };
4691
4692 _proto._setScrollbar = function _setScrollbar() {
4693 var _this11 = this;
4694
4695 if (this._isBodyOverflowing) {
4696
4697
4698
4699 SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
4700 var actualPadding = element.style.paddingRight;
4701 var calculatedPadding = window.getComputedStyle(element)['padding-right'];
4702 Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
4703 element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px";
4704 });
4705
4706 SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
4707 var actualMargin = element.style.marginRight;
4708 var calculatedMargin = window.getComputedStyle(element)['margin-right'];
4709 Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
4710 element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px";
4711 });
4712
4713 var actualPadding = document.body.style.paddingRight;
4714 var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
4715 Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
4716 document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
4717 }
4718
4719 document.body.classList.add(CLASS_NAME_OPEN);
4720 };
4721
4722 _proto._resetScrollbar = function _resetScrollbar() {
4723
4724 SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
4725 var padding = Manipulator.getDataAttribute(element, 'padding-right');
4726
4727 if (typeof padding !== 'undefined') {
4728 Manipulator.removeDataAttribute(element, 'padding-right');
4729 element.style.paddingRight = padding;
4730 }
4731 });
4732
4733 SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
4734 var margin = Manipulator.getDataAttribute(element, 'margin-right');
4735
4736 if (typeof margin !== 'undefined') {
4737 Manipulator.removeDataAttribute(element, 'margin-right');
4738 element.style.marginRight = margin;
4739 }
4740 });
4741
4742 var padding = Manipulator.getDataAttribute(document.body, 'padding-right');
4743
4744 if (typeof padding === 'undefined') {
4745 document.body.style.paddingRight = '';
4746 } else {
4747 Manipulator.removeDataAttribute(document.body, 'padding-right');
4748 document.body.style.paddingRight = padding;
4749 }
4750 };
4751
4752 _proto._getScrollbarWidth = function _getScrollbarWidth() {
4753
4754 var scrollDiv = document.createElement('div');
4755 scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
4756 document.body.appendChild(scrollDiv);
4757 var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
4758 document.body.removeChild(scrollDiv);
4759 return scrollbarWidth;
4760 }
4761 ;
4762
4763 Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
4764 return this.each(function () {
4765 var data = Data.getData(this, DATA_KEY$5);
4766
4767 var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {});
4768
4769 if (!data) {
4770 data = new Modal(this, _config);
4771 }
4772
4773 if (typeof config === 'string') {
4774 if (typeof data[config] === 'undefined') {
4775 throw new TypeError("No method named \"" + config + "\"");
4776 }
4777
4778 data[config](relatedTarget);
4779 }
4780 });
4781 };
4782
4783 _createClass(Modal, null, [{
4784 key: "Default",
4785 get: function get() {
4786 return Default$3;
4787 }
4788 }, {
4789 key: "DATA_KEY",
4790 get: function get() {
4791 return DATA_KEY$5;
4792 }
4793 }]);
4794
4795 return Modal;
4796 }(BaseComponent);
4797
4798
4799
4800
4801
4802
4803
4804 EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {
4805 var _this12 = this;
4806
4807 var target = getElementFromSelector(this);
4808
4809 if (this.tagName === 'A' || this.tagName === 'AREA') {
4810 event.preventDefault();
4811 }
4812
4813 EventHandler.one(target, EVENT_SHOW$2, function (showEvent) {
4814 if (showEvent.defaultPrevented) {
4815
4816 return;
4817 }
4818
4819 EventHandler.one(target, EVENT_HIDDEN$2, function () {
4820 if (isVisible(_this12)) {
4821 _this12.focus();
4822 }
4823 });
4824 });
4825 var data = Data.getData(target, DATA_KEY$5);
4826
4827 if (!data) {
4828 var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
4829
4830 data = new Modal(target, config);
4831 }
4832
4833 data.show(this);
4834 });
4835
4836
4837
4838
4839
4840
4841
4842 onDOMContentLoaded(function () {
4843 var $ = getjQuery();
4844
4845
4846 if ($) {
4847 var JQUERY_NO_CONFLICT = $.fn[NAME$5];
4848 $.fn[NAME$5] = Modal.jQueryInterface;
4849 $.fn[NAME$5].Constructor = Modal;
4850
4851 $.fn[NAME$5].noConflict = function () {
4852 $.fn[NAME$5] = JQUERY_NO_CONFLICT;
4853 return Modal.jQueryInterface;
4854 };
4855 }
4856 });
4857
4858
4859
4860
4861
4862
4863
4864 var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
4865 var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
4866
4867
4868
4869
4870
4871
4872 var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
4873
4874
4875
4876
4877
4878
4879 var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
4880
4881 var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) {
4882 var attrName = attr.nodeName.toLowerCase();
4883
4884 if (allowedAttributeList.includes(attrName)) {
4885 if (uriAttrs.has(attrName)) {
4886 return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
4887 }
4888
4889 return true;
4890 }
4891
4892 var regExp = allowedAttributeList.filter(function (attrRegex) {
4893 return attrRegex instanceof RegExp;
4894 });
4895
4896 for (var i = 0, len = regExp.length; i < len; i++) {
4897 if (attrName.match(regExp[i])) {
4898 return true;
4899 }
4900 }
4901
4902 return false;
4903 };
4904
4905 var DefaultAllowlist = {
4906
4907 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
4908 a: ['target', 'href', 'title', 'rel'],
4909 area: [],
4910 b: [],
4911 br: [],
4912 col: [],
4913 code: [],
4914 div: [],
4915 em: [],
4916 hr: [],
4917 h1: [],
4918 h2: [],
4919 h3: [],
4920 h4: [],
4921 h5: [],
4922 h6: [],
4923 i: [],
4924 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
4925 li: [],
4926 ol: [],
4927 p: [],
4928 pre: [],
4929 s: [],
4930 small: [],
4931 span: [],
4932 sub: [],
4933 sup: [],
4934 strong: [],
4935 u: [],
4936 ul: []
4937 };
4938 function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
4939 var _ref;
4940
4941 if (!unsafeHtml.length) {
4942 return unsafeHtml;
4943 }
4944
4945 if (sanitizeFn && typeof sanitizeFn === 'function') {
4946 return sanitizeFn(unsafeHtml);
4947 }
4948
4949 var domParser = new window.DOMParser();
4950 var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
4951 var allowlistKeys = Object.keys(allowList);
4952
4953 var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*'));
4954
4955 var _loop = function _loop(i, len) {
4956 var _ref2;
4957
4958 var el = elements[i];
4959 var elName = el.nodeName.toLowerCase();
4960
4961 if (!allowlistKeys.includes(elName)) {
4962 el.parentNode.removeChild(el);
4963 return "continue";
4964 }
4965
4966 var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes);
4967
4968 var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
4969 attributeList.forEach(function (attr) {
4970 if (!allowedAttribute(attr, allowedAttributes)) {
4971 el.removeAttribute(attr.nodeName);
4972 }
4973 });
4974 };
4975
4976 for (var i = 0, len = elements.length; i < len; i++) {
4977 var _ret = _loop(i);
4978
4979 if (_ret === "continue") continue;
4980 }
4981
4982 return createdDocument.body.innerHTML;
4983 }
4984
4985
4986
4987
4988
4989
4990
4991 var NAME$6 = 'tooltip';
4992 var DATA_KEY$6 = 'bs.tooltip';
4993 var EVENT_KEY$6 = "." + DATA_KEY$6;
4994 var CLASS_PREFIX = 'bs-tooltip';
4995 var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
4996 var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
4997 var DefaultType$4 = {
4998 animation: 'boolean',
4999 template: 'string',
5000 title: '(string|element|function)',
5001 trigger: 'string',
5002 delay: '(number|object)',
5003 html: 'boolean',
5004 selector: '(string|boolean)',
5005 placement: '(string|function)',
5006 container: '(string|element|boolean)',
5007 fallbackPlacements: '(null|array)',
5008 boundary: '(string|element)',
5009 customClass: '(string|function)',
5010 sanitize: 'boolean',
5011 sanitizeFn: '(null|function)',
5012 allowList: 'object',
5013 popperConfig: '(null|object)'
5014 };
5015 var AttachmentMap = {
5016 AUTO: 'auto',
5017 TOP: 'top',
5018 RIGHT: isRTL ? 'left' : 'right',
5019 BOTTOM: 'bottom',
5020 LEFT: isRTL ? 'right' : 'left'
5021 };
5022 var Default$4 = {
5023 animation: true,
5024 template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
5025 trigger: 'hover focus',
5026 title: '',
5027 delay: 0,
5028 html: false,
5029 selector: false,
5030 placement: 'top',
5031 container: false,
5032 fallbackPlacements: null,
5033 boundary: 'clippingParents',
5034 customClass: '',
5035 sanitize: true,
5036 sanitizeFn: null,
5037 allowList: DefaultAllowlist,
5038 popperConfig: null
5039 };
5040 var Event$1 = {
5041 HIDE: "hide" + EVENT_KEY$6,
5042 HIDDEN: "hidden" + EVENT_KEY$6,
5043 SHOW: "show" + EVENT_KEY$6,
5044 SHOWN: "shown" + EVENT_KEY$6,
5045 INSERTED: "inserted" + EVENT_KEY$6,
5046 CLICK: "click" + EVENT_KEY$6,
5047 FOCUSIN: "focusin" + EVENT_KEY$6,
5048 FOCUSOUT: "focusout" + EVENT_KEY$6,
5049 MOUSEENTER: "mouseenter" + EVENT_KEY$6,
5050 MOUSELEAVE: "mouseleave" + EVENT_KEY$6
5051 };
5052 var CLASS_NAME_FADE$1 = 'fade';
5053 var CLASS_NAME_MODAL = 'modal';
5054 var CLASS_NAME_SHOW$3 = 'show';
5055 var HOVER_STATE_SHOW = 'show';
5056 var HOVER_STATE_OUT = 'out';
5057 var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
5058 var TRIGGER_HOVER = 'hover';
5059 var TRIGGER_FOCUS = 'focus';
5060 var TRIGGER_CLICK = 'click';
5061 var TRIGGER_MANUAL = 'manual';
5062
5063
5064
5065
5066
5067
5068 var Tooltip = function (_BaseComponent) {
5069 _inheritsLoose(Tooltip, _BaseComponent);
5070
5071 function Tooltip(element, config) {
5072 var _this;
5073
5074 if (typeof Popper === 'undefined') {
5075 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
5076 }
5077
5078 _this = _BaseComponent.call(this, element) || this;
5079
5080 _this._isEnabled = true;
5081 _this._timeout = 0;
5082 _this._hoverState = '';
5083 _this._activeTrigger = {};
5084 _this._popper = null;
5085
5086 _this.config = _this._getConfig(config);
5087 _this.tip = null;
5088
5089 _this._setListeners();
5090
5091 return _this;
5092 }
5093
5094
5095 var _proto = Tooltip.prototype;
5096
5097
5098 _proto.enable = function enable() {
5099 this._isEnabled = true;
5100 };
5101
5102 _proto.disable = function disable() {
5103 this._isEnabled = false;
5104 };
5105
5106 _proto.toggleEnabled = function toggleEnabled() {
5107 this._isEnabled = !this._isEnabled;
5108 };
5109
5110 _proto.toggle = function toggle(event) {
5111 if (!this._isEnabled) {
5112 return;
5113 }
5114
5115 if (event) {
5116 var dataKey = this.constructor.DATA_KEY;
5117 var context = Data.getData(event.delegateTarget, dataKey);
5118
5119 if (!context) {
5120 context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
5121 Data.setData(event.delegateTarget, dataKey, context);
5122 }
5123
5124 context._activeTrigger.click = !context._activeTrigger.click;
5125
5126 if (context._isWithActiveTrigger()) {
5127 context._enter(null, context);
5128 } else {
5129 context._leave(null, context);
5130 }
5131 } else {
5132 if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {
5133 this._leave(null, this);
5134
5135 return;
5136 }
5137
5138 this._enter(null, this);
5139 }
5140 };
5141
5142 _proto.dispose = function dispose() {
5143 clearTimeout(this._timeout);
5144 EventHandler.off(this._element, this.constructor.EVENT_KEY);
5145 EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
5146
5147 if (this.tip) {
5148 this.tip.parentNode.removeChild(this.tip);
5149 }
5150
5151 this._isEnabled = null;
5152 this._timeout = null;
5153 this._hoverState = null;
5154 this._activeTrigger = null;
5155
5156 if (this._popper) {
5157 this._popper.destroy();
5158 }
5159
5160 this._popper = null;
5161 this.config = null;
5162 this.tip = null;
5163
5164 _BaseComponent.prototype.dispose.call(this);
5165 };
5166
5167 _proto.show = function show() {
5168 var _this2 = this;
5169
5170 if (this._element.style.display === 'none') {
5171 throw new Error('Please use show on visible elements');
5172 }
5173
5174 if (this.isWithContent() && this._isEnabled) {
5175 var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
5176 var shadowRoot = findShadowRoot(this._element);
5177 var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
5178
5179 if (showEvent.defaultPrevented || !isInTheDom) {
5180 return;
5181 }
5182
5183 var tip = this.getTipElement();
5184 var tipId = getUID(this.constructor.NAME);
5185 tip.setAttribute('id', tipId);
5186
5187 this._element.setAttribute('aria-describedby', tipId);
5188
5189 this.setContent();
5190
5191 if (this.config.animation) {
5192 tip.classList.add(CLASS_NAME_FADE$1);
5193 }
5194
5195 var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement;
5196
5197 var attachment = this._getAttachment(placement);
5198
5199 this._addAttachmentClass(attachment);
5200
5201 var container = this._getContainer();
5202
5203 Data.setData(tip, this.constructor.DATA_KEY, this);
5204
5205 if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
5206 container.appendChild(tip);
5207 }
5208
5209 EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
5210 this._popper = createPopper$2(this._element, tip, this._getPopperConfig(attachment));
5211 tip.classList.add(CLASS_NAME_SHOW$3);
5212 var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass;
5213
5214 if (customClass) {
5215 var _tip$classList;
5216
5217 (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' '));
5218 }
5219
5220
5221
5222
5223
5224 if ('ontouchstart' in document.documentElement) {
5225 var _ref;
5226
5227 (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
5228 EventHandler.on(element, 'mouseover', noop());
5229 });
5230 }
5231
5232 var complete = function complete() {
5233 var prevHoverState = _this2._hoverState;
5234 _this2._hoverState = null;
5235 EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN);
5236
5237 if (prevHoverState === HOVER_STATE_OUT) {
5238 _this2._leave(null, _this2);
5239 }
5240 };
5241
5242 if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
5243 var transitionDuration = getTransitionDurationFromElement(this.tip);
5244 EventHandler.one(this.tip, TRANSITION_END, complete);
5245 emulateTransitionEnd(this.tip, transitionDuration);
5246 } else {
5247 complete();
5248 }
5249 }
5250 };
5251
5252 _proto.hide = function hide() {
5253 var _this3 = this;
5254
5255 if (!this._popper) {
5256 return;
5257 }
5258
5259 var tip = this.getTipElement();
5260
5261 var complete = function complete() {
5262 if (_this3._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
5263 tip.parentNode.removeChild(tip);
5264 }
5265
5266 _this3._cleanTipClass();
5267
5268 _this3._element.removeAttribute('aria-describedby');
5269
5270 EventHandler.trigger(_this3._element, _this3.constructor.Event.HIDDEN);
5271
5272 if (_this3._popper) {
5273 _this3._popper.destroy();
5274
5275 _this3._popper = null;
5276 }
5277 };
5278
5279 var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
5280
5281 if (hideEvent.defaultPrevented) {
5282 return;
5283 }
5284
5285 tip.classList.remove(CLASS_NAME_SHOW$3);
5286
5287
5288 if ('ontouchstart' in document.documentElement) {
5289 var _ref2;
5290
5291 (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) {
5292 return EventHandler.off(element, 'mouseover', noop);
5293 });
5294 }
5295
5296 this._activeTrigger[TRIGGER_CLICK] = false;
5297 this._activeTrigger[TRIGGER_FOCUS] = false;
5298 this._activeTrigger[TRIGGER_HOVER] = false;
5299
5300 if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
5301 var transitionDuration = getTransitionDurationFromElement(tip);
5302 EventHandler.one(tip, TRANSITION_END, complete);
5303 emulateTransitionEnd(tip, transitionDuration);
5304 } else {
5305 complete();
5306 }
5307
5308 this._hoverState = '';
5309 };
5310
5311 _proto.update = function update() {
5312 if (this._popper !== null) {
5313 this._popper.update();
5314 }
5315 }
5316 ;
5317
5318 _proto.isWithContent = function isWithContent() {
5319 return Boolean(this.getTitle());
5320 };
5321
5322 _proto.getTipElement = function getTipElement() {
5323 if (this.tip) {
5324 return this.tip;
5325 }
5326
5327 var element = document.createElement('div');
5328 element.innerHTML = this.config.template;
5329 this.tip = element.children[0];
5330 return this.tip;
5331 };
5332
5333 _proto.setContent = function setContent() {
5334 var tip = this.getTipElement();
5335 this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
5336 tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3);
5337 };
5338
5339 _proto.setElementContent = function setElementContent(element, content) {
5340 if (element === null) {
5341 return;
5342 }
5343
5344 if (typeof content === 'object' && isElement(content)) {
5345 if (content.jquery) {
5346 content = content[0];
5347 }
5348
5349
5350 if (this.config.html) {
5351 if (content.parentNode !== element) {
5352 element.innerHTML = '';
5353 element.appendChild(content);
5354 }
5355 } else {
5356 element.textContent = content.textContent;
5357 }
5358
5359 return;
5360 }
5361
5362 if (this.config.html) {
5363 if (this.config.sanitize) {
5364 content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn);
5365 }
5366
5367 element.innerHTML = content;
5368 } else {
5369 element.textContent = content;
5370 }
5371 };
5372
5373 _proto.getTitle = function getTitle() {
5374 var title = this._element.getAttribute('data-bs-original-title');
5375
5376 if (!title) {
5377 title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title;
5378 }
5379
5380 return title;
5381 };
5382
5383 _proto.updateAttachment = function updateAttachment(attachment) {
5384 if (attachment === 'right') {
5385 return 'end';
5386 }
5387
5388 if (attachment === 'left') {
5389 return 'start';
5390 }
5391
5392 return attachment;
5393 }
5394 ;
5395
5396 _proto._getPopperConfig = function _getPopperConfig(attachment) {
5397 var _this4 = this;
5398
5399 var flipModifier = {
5400 name: 'flip',
5401 options: {
5402 altBoundary: true
5403 }
5404 };
5405
5406 if (this.config.fallbackPlacements) {
5407 flipModifier.options.fallbackPlacements = this.config.fallbackPlacements;
5408 }
5409
5410 var defaultBsConfig = {
5411 placement: attachment,
5412 modifiers: [flipModifier, {
5413 name: 'preventOverflow',
5414 options: {
5415 rootBoundary: this.config.boundary
5416 }
5417 }, {
5418 name: 'arrow',
5419 options: {
5420 element: "." + this.constructor.NAME + "-arrow"
5421 }
5422 }, {
5423 name: 'onChange',
5424 enabled: true,
5425 phase: 'afterWrite',
5426 fn: function fn(data) {
5427 return _this4._handlePopperPlacementChange(data);
5428 }
5429 }],
5430 onFirstUpdate: function onFirstUpdate(data) {
5431 if (data.options.placement !== data.placement) {
5432 _this4._handlePopperPlacementChange(data);
5433 }
5434 }
5435 };
5436 return _extends({}, defaultBsConfig, this.config.popperConfig);
5437 };
5438
5439 _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
5440 this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment));
5441 };
5442
5443 _proto._getContainer = function _getContainer() {
5444 if (this.config.container === false) {
5445 return document.body;
5446 }
5447
5448 if (isElement(this.config.container)) {
5449 return this.config.container;
5450 }
5451
5452 return SelectorEngine.findOne(this.config.container);
5453 };
5454
5455 _proto._getAttachment = function _getAttachment(placement) {
5456 return AttachmentMap[placement.toUpperCase()];
5457 };
5458
5459 _proto._setListeners = function _setListeners() {
5460 var _this5 = this;
5461
5462 var triggers = this.config.trigger.split(' ');
5463 triggers.forEach(function (trigger) {
5464 if (trigger === 'click') {
5465 EventHandler.on(_this5._element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
5466 return _this5.toggle(event);
5467 });
5468 } else if (trigger !== TRIGGER_MANUAL) {
5469 var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
5470 var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
5471 EventHandler.on(_this5._element, eventIn, _this5.config.selector, function (event) {
5472 return _this5._enter(event);
5473 });
5474 EventHandler.on(_this5._element, eventOut, _this5.config.selector, function (event) {
5475 return _this5._leave(event);
5476 });
5477 }
5478 });
5479
5480 this._hideModalHandler = function () {
5481 if (_this5._element) {
5482 _this5.hide();
5483 }
5484 };
5485
5486 EventHandler.on(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
5487
5488 if (this.config.selector) {
5489 this.config = _extends({}, this.config, {
5490 trigger: 'manual',
5491 selector: ''
5492 });
5493 } else {
5494 this._fixTitle();
5495 }
5496 };
5497
5498 _proto._fixTitle = function _fixTitle() {
5499 var title = this._element.getAttribute('title');
5500
5501 var originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
5502
5503 if (title || originalTitleType !== 'string') {
5504 this._element.setAttribute('data-bs-original-title', title || '');
5505
5506 if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
5507 this._element.setAttribute('aria-label', title);
5508 }
5509
5510 this._element.setAttribute('title', '');
5511 }
5512 };
5513
5514 _proto._enter = function _enter(event, context) {
5515 var dataKey = this.constructor.DATA_KEY;
5516 context = context || Data.getData(event.delegateTarget, dataKey);
5517
5518 if (!context) {
5519 context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
5520 Data.setData(event.delegateTarget, dataKey, context);
5521 }
5522
5523 if (event) {
5524 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
5525 }
5526
5527 if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
5528 context._hoverState = HOVER_STATE_SHOW;
5529 return;
5530 }
5531
5532 clearTimeout(context._timeout);
5533 context._hoverState = HOVER_STATE_SHOW;
5534
5535 if (!context.config.delay || !context.config.delay.show) {
5536 context.show();
5537 return;
5538 }
5539
5540 context._timeout = setTimeout(function () {
5541 if (context._hoverState === HOVER_STATE_SHOW) {
5542 context.show();
5543 }
5544 }, context.config.delay.show);
5545 };
5546
5547 _proto._leave = function _leave(event, context) {
5548 var dataKey = this.constructor.DATA_KEY;
5549 context = context || Data.getData(event.delegateTarget, dataKey);
5550
5551 if (!context) {
5552 context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
5553 Data.setData(event.delegateTarget, dataKey, context);
5554 }
5555
5556 if (event) {
5557 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
5558 }
5559
5560 if (context._isWithActiveTrigger()) {
5561 return;
5562 }
5563
5564 clearTimeout(context._timeout);
5565 context._hoverState = HOVER_STATE_OUT;
5566
5567 if (!context.config.delay || !context.config.delay.hide) {
5568 context.hide();
5569 return;
5570 }
5571
5572 context._timeout = setTimeout(function () {
5573 if (context._hoverState === HOVER_STATE_OUT) {
5574 context.hide();
5575 }
5576 }, context.config.delay.hide);
5577 };
5578
5579 _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
5580 for (var trigger in this._activeTrigger) {
5581 if (this._activeTrigger[trigger]) {
5582 return true;
5583 }
5584 }
5585
5586 return false;
5587 };
5588
5589 _proto._getConfig = function _getConfig(config) {
5590 var dataAttributes = Manipulator.getDataAttributes(this._element);
5591 Object.keys(dataAttributes).forEach(function (dataAttr) {
5592 if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
5593 delete dataAttributes[dataAttr];
5594 }
5595 });
5596
5597 if (config && typeof config.container === 'object' && config.container.jquery) {
5598 config.container = config.container[0];
5599 }
5600
5601 config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
5602
5603 if (typeof config.delay === 'number') {
5604 config.delay = {
5605 show: config.delay,
5606 hide: config.delay
5607 };
5608 }
5609
5610 if (typeof config.title === 'number') {
5611 config.title = config.title.toString();
5612 }
5613
5614 if (typeof config.content === 'number') {
5615 config.content = config.content.toString();
5616 }
5617
5618 typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
5619
5620 if (config.sanitize) {
5621 config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
5622 }
5623
5624 return config;
5625 };
5626
5627 _proto._getDelegateConfig = function _getDelegateConfig() {
5628 var config = {};
5629
5630 if (this.config) {
5631 for (var key in this.config) {
5632 if (this.constructor.Default[key] !== this.config[key]) {
5633 config[key] = this.config[key];
5634 }
5635 }
5636 }
5637
5638 return config;
5639 };
5640
5641 _proto._cleanTipClass = function _cleanTipClass() {
5642 var tip = this.getTipElement();
5643 var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
5644
5645 if (tabClass !== null && tabClass.length > 0) {
5646 tabClass.map(function (token) {
5647 return token.trim();
5648 }).forEach(function (tClass) {
5649 return tip.classList.remove(tClass);
5650 });
5651 }
5652 };
5653
5654 _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
5655 var state = popperData.state;
5656
5657 if (!state) {
5658 return;
5659 }
5660
5661 this.tip = state.elements.popper;
5662
5663 this._cleanTipClass();
5664
5665 this._addAttachmentClass(this._getAttachment(state.placement));
5666 }
5667 ;
5668
5669 Tooltip.jQueryInterface = function jQueryInterface(config) {
5670 return this.each(function () {
5671 var data = Data.getData(this, DATA_KEY$6);
5672
5673 var _config = typeof config === 'object' && config;
5674
5675 if (!data && /dispose|hide/.test(config)) {
5676 return;
5677 }
5678
5679 if (!data) {
5680 data = new Tooltip(this, _config);
5681 }
5682
5683 if (typeof config === 'string') {
5684 if (typeof data[config] === 'undefined') {
5685 throw new TypeError("No method named \"" + config + "\"");
5686 }
5687
5688 data[config]();
5689 }
5690 });
5691 };
5692
5693 _createClass(Tooltip, null, [{
5694 key: "Default",
5695 get: function get() {
5696 return Default$4;
5697 }
5698 }, {
5699 key: "NAME",
5700 get: function get() {
5701 return NAME$6;
5702 }
5703 }, {
5704 key: "DATA_KEY",
5705 get: function get() {
5706 return DATA_KEY$6;
5707 }
5708 }, {
5709 key: "Event",
5710 get: function get() {
5711 return Event$1;
5712 }
5713 }, {
5714 key: "EVENT_KEY",
5715 get: function get() {
5716 return EVENT_KEY$6;
5717 }
5718 }, {
5719 key: "DefaultType",
5720 get: function get() {
5721 return DefaultType$4;
5722 }
5723 }]);
5724
5725 return Tooltip;
5726 }(BaseComponent);
5727
5728
5729
5730
5731
5732
5733
5734
5735 onDOMContentLoaded(function () {
5736 var $ = getjQuery();
5737
5738
5739 if ($) {
5740 var JQUERY_NO_CONFLICT = $.fn[NAME$6];
5741 $.fn[NAME$6] = Tooltip.jQueryInterface;
5742 $.fn[NAME$6].Constructor = Tooltip;
5743
5744 $.fn[NAME$6].noConflict = function () {
5745 $.fn[NAME$6] = JQUERY_NO_CONFLICT;
5746 return Tooltip.jQueryInterface;
5747 };
5748 }
5749 });
5750
5751
5752
5753
5754
5755
5756
5757 var NAME$7 = 'popover';
5758 var DATA_KEY$7 = 'bs.popover';
5759 var EVENT_KEY$7 = "." + DATA_KEY$7;
5760 var CLASS_PREFIX$1 = 'bs-popover';
5761 var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
5762
5763 var Default$5 = _extends({}, Tooltip.Default, {
5764 placement: 'right',
5765 trigger: 'click',
5766 content: '',
5767 template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
5768 });
5769
5770 var DefaultType$5 = _extends({}, Tooltip.DefaultType, {
5771 content: '(string|element|function)'
5772 });
5773
5774 var Event$2 = {
5775 HIDE: "hide" + EVENT_KEY$7,
5776 HIDDEN: "hidden" + EVENT_KEY$7,
5777 SHOW: "show" + EVENT_KEY$7,
5778 SHOWN: "shown" + EVENT_KEY$7,
5779 INSERTED: "inserted" + EVENT_KEY$7,
5780 CLICK: "click" + EVENT_KEY$7,
5781 FOCUSIN: "focusin" + EVENT_KEY$7,
5782 FOCUSOUT: "focusout" + EVENT_KEY$7,
5783 MOUSEENTER: "mouseenter" + EVENT_KEY$7,
5784 MOUSELEAVE: "mouseleave" + EVENT_KEY$7
5785 };
5786 var CLASS_NAME_FADE$2 = 'fade';
5787 var CLASS_NAME_SHOW$4 = 'show';
5788 var SELECTOR_TITLE = '.popover-header';
5789 var SELECTOR_CONTENT = '.popover-body';
5790
5791
5792
5793
5794
5795
5796 var Popover = function (_Tooltip) {
5797 _inheritsLoose(Popover, _Tooltip);
5798
5799 function Popover() {
5800 return _Tooltip.apply(this, arguments) || this;
5801 }
5802
5803 var _proto = Popover.prototype;
5804
5805
5806 _proto.isWithContent = function isWithContent() {
5807 return this.getTitle() || this._getContent();
5808 };
5809
5810 _proto.setContent = function setContent() {
5811 var tip = this.getTipElement();
5812
5813 this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());
5814
5815 var content = this._getContent();
5816
5817 if (typeof content === 'function') {
5818 content = content.call(this._element);
5819 }
5820
5821 this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);
5822 tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4);
5823 }
5824 ;
5825
5826 _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
5827 this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + this.updateAttachment(attachment));
5828 };
5829
5830 _proto._getContent = function _getContent() {
5831 return this._element.getAttribute('data-bs-content') || this.config.content;
5832 };
5833
5834 _proto._cleanTipClass = function _cleanTipClass() {
5835 var tip = this.getTipElement();
5836 var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1);
5837
5838 if (tabClass !== null && tabClass.length > 0) {
5839 tabClass.map(function (token) {
5840 return token.trim();
5841 }).forEach(function (tClass) {
5842 return tip.classList.remove(tClass);
5843 });
5844 }
5845 }
5846 ;
5847
5848 Popover.jQueryInterface = function jQueryInterface(config) {
5849 return this.each(function () {
5850 var data = Data.getData(this, DATA_KEY$7);
5851
5852 var _config = typeof config === 'object' ? config : null;
5853
5854 if (!data && /dispose|hide/.test(config)) {
5855 return;
5856 }
5857
5858 if (!data) {
5859 data = new Popover(this, _config);
5860 Data.setData(this, DATA_KEY$7, data);
5861 }
5862
5863 if (typeof config === 'string') {
5864 if (typeof data[config] === 'undefined') {
5865 throw new TypeError("No method named \"" + config + "\"");
5866 }
5867
5868 data[config]();
5869 }
5870 });
5871 };
5872
5873 _createClass(Popover, null, [{
5874 key: "Default",
5875
5876 get: function get() {
5877 return Default$5;
5878 }
5879 }, {
5880 key: "NAME",
5881 get: function get() {
5882 return NAME$7;
5883 }
5884 }, {
5885 key: "DATA_KEY",
5886 get: function get() {
5887 return DATA_KEY$7;
5888 }
5889 }, {
5890 key: "Event",
5891 get: function get() {
5892 return Event$2;
5893 }
5894 }, {
5895 key: "EVENT_KEY",
5896 get: function get() {
5897 return EVENT_KEY$7;
5898 }
5899 }, {
5900 key: "DefaultType",
5901 get: function get() {
5902 return DefaultType$5;
5903 }
5904 }]);
5905
5906 return Popover;
5907 }(Tooltip);
5908
5909
5910
5911
5912
5913
5914
5915
5916 onDOMContentLoaded(function () {
5917 var $ = getjQuery();
5918
5919
5920 if ($) {
5921 var JQUERY_NO_CONFLICT = $.fn[NAME$7];
5922 $.fn[NAME$7] = Popover.jQueryInterface;
5923 $.fn[NAME$7].Constructor = Popover;
5924
5925 $.fn[NAME$7].noConflict = function () {
5926 $.fn[NAME$7] = JQUERY_NO_CONFLICT;
5927 return Popover.jQueryInterface;
5928 };
5929 }
5930 });
5931
5932
5933
5934
5935
5936
5937
5938 var NAME$8 = 'scrollspy';
5939 var DATA_KEY$8 = 'bs.scrollspy';
5940 var EVENT_KEY$8 = "." + DATA_KEY$8;
5941 var DATA_API_KEY$6 = '.data-api';
5942 var Default$6 = {
5943 offset: 10,
5944 method: 'auto',
5945 target: ''
5946 };
5947 var DefaultType$6 = {
5948 offset: 'number',
5949 method: 'string',
5950 target: '(string|element)'
5951 };
5952 var EVENT_ACTIVATE = "activate" + EVENT_KEY$8;
5953 var EVENT_SCROLL = "scroll" + EVENT_KEY$8;
5954 var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6;
5955 var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
5956 var CLASS_NAME_ACTIVE$2 = 'active';
5957 var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
5958 var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
5959 var SELECTOR_NAV_LINKS = '.nav-link';
5960 var SELECTOR_NAV_ITEMS = '.nav-item';
5961 var SELECTOR_LIST_ITEMS = '.list-group-item';
5962 var SELECTOR_DROPDOWN = '.dropdown';
5963 var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
5964 var METHOD_OFFSET = 'offset';
5965 var METHOD_POSITION = 'position';
5966
5967
5968
5969
5970
5971
5972 var ScrollSpy = function (_BaseComponent) {
5973 _inheritsLoose(ScrollSpy, _BaseComponent);
5974
5975 function ScrollSpy(element, config) {
5976 var _this;
5977
5978 _this = _BaseComponent.call(this, element) || this;
5979 _this._scrollElement = element.tagName === 'BODY' ? window : element;
5980 _this._config = _this._getConfig(config);
5981 _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM;
5982 _this._offsets = [];
5983 _this._targets = [];
5984 _this._activeTarget = null;
5985 _this._scrollHeight = 0;
5986 EventHandler.on(_this._scrollElement, EVENT_SCROLL, function (event) {
5987 return _this._process(event);
5988 });
5989
5990 _this.refresh();
5991
5992 _this._process();
5993
5994 return _this;
5995 }
5996
5997
5998 var _proto = ScrollSpy.prototype;
5999
6000
6001 _proto.refresh = function refresh() {
6002 var _this2 = this;
6003
6004 var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
6005 var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
6006 var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
6007 this._offsets = [];
6008 this._targets = [];
6009 this._scrollHeight = this._getScrollHeight();
6010 var targets = SelectorEngine.find(this._selector);
6011 targets.map(function (element) {
6012 var targetSelector = getSelectorFromElement(element);
6013 var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
6014
6015 if (target) {
6016 var targetBCR = target.getBoundingClientRect();
6017
6018 if (targetBCR.width || targetBCR.height) {
6019 return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
6020 }
6021 }
6022
6023 return null;
6024 }).filter(function (item) {
6025 return item;
6026 }).sort(function (a, b) {
6027 return a[0] - b[0];
6028 }).forEach(function (item) {
6029 _this2._offsets.push(item[0]);
6030
6031 _this2._targets.push(item[1]);
6032 });
6033 };
6034
6035 _proto.dispose = function dispose() {
6036 _BaseComponent.prototype.dispose.call(this);
6037
6038 EventHandler.off(this._scrollElement, EVENT_KEY$8);
6039 this._scrollElement = null;
6040 this._config = null;
6041 this._selector = null;
6042 this._offsets = null;
6043 this._targets = null;
6044 this._activeTarget = null;
6045 this._scrollHeight = null;
6046 }
6047 ;
6048
6049 _proto._getConfig = function _getConfig(config) {
6050 config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});
6051
6052 if (typeof config.target !== 'string' && isElement(config.target)) {
6053 var id = config.target.id;
6054
6055 if (!id) {
6056 id = getUID(NAME$8);
6057 config.target.id = id;
6058 }
6059
6060 config.target = "#" + id;
6061 }
6062
6063 typeCheckConfig(NAME$8, config, DefaultType$6);
6064 return config;
6065 };
6066
6067 _proto._getScrollTop = function _getScrollTop() {
6068 return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
6069 };
6070
6071 _proto._getScrollHeight = function _getScrollHeight() {
6072 return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
6073 };
6074
6075 _proto._getOffsetHeight = function _getOffsetHeight() {
6076 return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
6077 };
6078
6079 _proto._process = function _process() {
6080 var scrollTop = this._getScrollTop() + this._config.offset;
6081
6082 var scrollHeight = this._getScrollHeight();
6083
6084 var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
6085
6086 if (this._scrollHeight !== scrollHeight) {
6087 this.refresh();
6088 }
6089
6090 if (scrollTop >= maxScroll) {
6091 var target = this._targets[this._targets.length - 1];
6092
6093 if (this._activeTarget !== target) {
6094 this._activate(target);
6095 }
6096
6097 return;
6098 }
6099
6100 if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
6101 this._activeTarget = null;
6102
6103 this._clear();
6104
6105 return;
6106 }
6107
6108 for (var i = this._offsets.length; i--;) {
6109 var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
6110
6111 if (isActiveTarget) {
6112 this._activate(this._targets[i]);
6113 }
6114 }
6115 };
6116
6117 _proto._activate = function _activate(target) {
6118 this._activeTarget = target;
6119
6120 this._clear();
6121
6122 var queries = this._selector.split(',').map(function (selector) {
6123 return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
6124 });
6125
6126 var link = SelectorEngine.findOne(queries.join(','));
6127
6128 if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
6129 SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2);
6130 link.classList.add(CLASS_NAME_ACTIVE$2);
6131 } else {
6132
6133 link.classList.add(CLASS_NAME_ACTIVE$2);
6134 SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) {
6135
6136
6137 SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) {
6138 return item.classList.add(CLASS_NAME_ACTIVE$2);
6139 });
6140
6141 SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) {
6142 SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) {
6143 return item.classList.add(CLASS_NAME_ACTIVE$2);
6144 });
6145 });
6146 });
6147 }
6148
6149 EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
6150 relatedTarget: target
6151 });
6152 };
6153
6154 _proto._clear = function _clear() {
6155 SelectorEngine.find(this._selector).filter(function (node) {
6156 return node.classList.contains(CLASS_NAME_ACTIVE$2);
6157 }).forEach(function (node) {
6158 return node.classList.remove(CLASS_NAME_ACTIVE$2);
6159 });
6160 }
6161 ;
6162
6163 ScrollSpy.jQueryInterface = function jQueryInterface(config) {
6164 return this.each(function () {
6165 var data = Data.getData(this, DATA_KEY$8);
6166
6167 var _config = typeof config === 'object' && config;
6168
6169 if (!data) {
6170 data = new ScrollSpy(this, _config);
6171 }
6172
6173 if (typeof config === 'string') {
6174 if (typeof data[config] === 'undefined') {
6175 throw new TypeError("No method named \"" + config + "\"");
6176 }
6177
6178 data[config]();
6179 }
6180 });
6181 };
6182
6183 _createClass(ScrollSpy, null, [{
6184 key: "Default",
6185 get: function get() {
6186 return Default$6;
6187 }
6188 }, {
6189 key: "DATA_KEY",
6190 get: function get() {
6191 return DATA_KEY$8;
6192 }
6193 }]);
6194
6195 return ScrollSpy;
6196 }(BaseComponent);
6197
6198
6199
6200
6201
6202
6203
6204 EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () {
6205 SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) {
6206 return new ScrollSpy(spy, Manipulator.getDataAttributes(spy));
6207 });
6208 });
6209
6210
6211
6212
6213
6214
6215
6216 onDOMContentLoaded(function () {
6217 var $ = getjQuery();
6218
6219
6220 if ($) {
6221 var JQUERY_NO_CONFLICT = $.fn[NAME$8];
6222 $.fn[NAME$8] = ScrollSpy.jQueryInterface;
6223 $.fn[NAME$8].Constructor = ScrollSpy;
6224
6225 $.fn[NAME$8].noConflict = function () {
6226 $.fn[NAME$8] = JQUERY_NO_CONFLICT;
6227 return ScrollSpy.jQueryInterface;
6228 };
6229 }
6230 });
6231
6232
6233
6234
6235
6236
6237
6238 var NAME$9 = 'tab';
6239 var DATA_KEY$9 = 'bs.tab';
6240 var EVENT_KEY$9 = "." + DATA_KEY$9;
6241 var DATA_API_KEY$7 = '.data-api';
6242 var EVENT_HIDE$3 = "hide" + EVENT_KEY$9;
6243 var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9;
6244 var EVENT_SHOW$3 = "show" + EVENT_KEY$9;
6245 var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9;
6246 var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7;
6247 var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
6248 var CLASS_NAME_ACTIVE$3 = 'active';
6249 var CLASS_NAME_DISABLED$1 = 'disabled';
6250 var CLASS_NAME_FADE$3 = 'fade';
6251 var CLASS_NAME_SHOW$5 = 'show';
6252 var SELECTOR_DROPDOWN$1 = '.dropdown';
6253 var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
6254 var SELECTOR_ACTIVE$1 = '.active';
6255 var SELECTOR_ACTIVE_UL = ':scope > li > .active';
6256 var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
6257 var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
6258 var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
6259
6260
6261
6262
6263
6264
6265 var Tab = function (_BaseComponent) {
6266 _inheritsLoose(Tab, _BaseComponent);
6267
6268 function Tab() {
6269 return _BaseComponent.apply(this, arguments) || this;
6270 }
6271
6272 var _proto = Tab.prototype;
6273
6274
6275 _proto.show = function show() {
6276 var _this = this;
6277
6278 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE$3) || this._element.classList.contains(CLASS_NAME_DISABLED$1)) {
6279 return;
6280 }
6281
6282 var previous;
6283 var target = getElementFromSelector(this._element);
6284
6285 var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP$1);
6286
6287 if (listElement) {
6288 var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$1;
6289 previous = SelectorEngine.find(itemSelector, listElement);
6290 previous = previous[previous.length - 1];
6291 }
6292
6293 var hideEvent = null;
6294
6295 if (previous) {
6296 hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, {
6297 relatedTarget: this._element
6298 });
6299 }
6300
6301 var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
6302 relatedTarget: previous
6303 });
6304
6305 if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
6306 return;
6307 }
6308
6309 this._activate(this._element, listElement);
6310
6311 var complete = function complete() {
6312 EventHandler.trigger(previous, EVENT_HIDDEN$3, {
6313 relatedTarget: _this._element
6314 });
6315 EventHandler.trigger(_this._element, EVENT_SHOWN$3, {
6316 relatedTarget: previous
6317 });
6318 };
6319
6320 if (target) {
6321 this._activate(target, target.parentNode, complete);
6322 } else {
6323 complete();
6324 }
6325 }
6326 ;
6327
6328 _proto._activate = function _activate(element, container, callback) {
6329 var _this2 = this;
6330
6331 var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1);
6332 var active = activeElements[0];
6333 var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3);
6334
6335 var complete = function complete() {
6336 return _this2._transitionComplete(element, active, callback);
6337 };
6338
6339 if (active && isTransitioning) {
6340 var transitionDuration = getTransitionDurationFromElement(active);
6341 active.classList.remove(CLASS_NAME_SHOW$5);
6342 EventHandler.one(active, TRANSITION_END, complete);
6343 emulateTransitionEnd(active, transitionDuration);
6344 } else {
6345 complete();
6346 }
6347 };
6348
6349 _proto._transitionComplete = function _transitionComplete(element, active, callback) {
6350 if (active) {
6351 active.classList.remove(CLASS_NAME_ACTIVE$3);
6352 var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
6353
6354 if (dropdownChild) {
6355 dropdownChild.classList.remove(CLASS_NAME_ACTIVE$3);
6356 }
6357
6358 if (active.getAttribute('role') === 'tab') {
6359 active.setAttribute('aria-selected', false);
6360 }
6361 }
6362
6363 element.classList.add(CLASS_NAME_ACTIVE$3);
6364
6365 if (element.getAttribute('role') === 'tab') {
6366 element.setAttribute('aria-selected', true);
6367 }
6368
6369 reflow(element);
6370
6371 if (element.classList.contains(CLASS_NAME_FADE$3)) {
6372 element.classList.add(CLASS_NAME_SHOW$5);
6373 }
6374
6375 if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
6376 var dropdownElement = element.closest(SELECTOR_DROPDOWN$1);
6377
6378 if (dropdownElement) {
6379 SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach(function (dropdown) {
6380 return dropdown.classList.add(CLASS_NAME_ACTIVE$3);
6381 });
6382 }
6383
6384 element.setAttribute('aria-expanded', true);
6385 }
6386
6387 if (callback) {
6388 callback();
6389 }
6390 }
6391 ;
6392
6393 Tab.jQueryInterface = function jQueryInterface(config) {
6394 return this.each(function () {
6395 var data = Data.getData(this, DATA_KEY$9) || new Tab(this);
6396
6397 if (typeof config === 'string') {
6398 if (typeof data[config] === 'undefined') {
6399 throw new TypeError("No method named \"" + config + "\"");
6400 }
6401
6402 data[config]();
6403 }
6404 });
6405 };
6406
6407 _createClass(Tab, null, [{
6408 key: "DATA_KEY",
6409
6410 get: function get() {
6411 return DATA_KEY$9;
6412 }
6413 }]);
6414
6415 return Tab;
6416 }(BaseComponent);
6417
6418
6419
6420
6421
6422
6423
6424 EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {
6425 event.preventDefault();
6426 var data = Data.getData(this, DATA_KEY$9) || new Tab(this);
6427 data.show();
6428 });
6429
6430
6431
6432
6433
6434
6435
6436 onDOMContentLoaded(function () {
6437 var $ = getjQuery();
6438
6439
6440 if ($) {
6441 var JQUERY_NO_CONFLICT = $.fn[NAME$9];
6442 $.fn[NAME$9] = Tab.jQueryInterface;
6443 $.fn[NAME$9].Constructor = Tab;
6444
6445 $.fn[NAME$9].noConflict = function () {
6446 $.fn[NAME$9] = JQUERY_NO_CONFLICT;
6447 return Tab.jQueryInterface;
6448 };
6449 }
6450 });
6451
6452
6453
6454
6455
6456
6457
6458 var NAME$a = 'toast';
6459 var DATA_KEY$a = 'bs.toast';
6460 var EVENT_KEY$a = "." + DATA_KEY$a;
6461 var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a;
6462 var EVENT_HIDE$4 = "hide" + EVENT_KEY$a;
6463 var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a;
6464 var EVENT_SHOW$4 = "show" + EVENT_KEY$a;
6465 var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a;
6466 var CLASS_NAME_FADE$4 = 'fade';
6467 var CLASS_NAME_HIDE = 'hide';
6468 var CLASS_NAME_SHOW$6 = 'show';
6469 var CLASS_NAME_SHOWING = 'showing';
6470 var DefaultType$7 = {
6471 animation: 'boolean',
6472 autohide: 'boolean',
6473 delay: 'number'
6474 };
6475 var Default$7 = {
6476 animation: true,
6477 autohide: true,
6478 delay: 5000
6479 };
6480 var SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="toast"]';
6481
6482
6483
6484
6485
6486
6487 var Toast = function (_BaseComponent) {
6488 _inheritsLoose(Toast, _BaseComponent);
6489
6490 function Toast(element, config) {
6491 var _this;
6492
6493 _this = _BaseComponent.call(this, element) || this;
6494 _this._config = _this._getConfig(config);
6495 _this._timeout = null;
6496
6497 _this._setListeners();
6498
6499 return _this;
6500 }
6501
6502
6503 var _proto = Toast.prototype;
6504
6505
6506 _proto.show = function show() {
6507 var _this2 = this;
6508
6509 var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4);
6510
6511 if (showEvent.defaultPrevented) {
6512 return;
6513 }
6514
6515 this._clearTimeout();
6516
6517 if (this._config.animation) {
6518 this._element.classList.add(CLASS_NAME_FADE$4);
6519 }
6520
6521 var complete = function complete() {
6522 _this2._element.classList.remove(CLASS_NAME_SHOWING);
6523
6524 _this2._element.classList.add(CLASS_NAME_SHOW$6);
6525
6526 EventHandler.trigger(_this2._element, EVENT_SHOWN$4);
6527
6528 if (_this2._config.autohide) {
6529 _this2._timeout = setTimeout(function () {
6530 _this2.hide();
6531 }, _this2._config.delay);
6532 }
6533 };
6534
6535 this._element.classList.remove(CLASS_NAME_HIDE);
6536
6537 reflow(this._element);
6538
6539 this._element.classList.add(CLASS_NAME_SHOWING);
6540
6541 if (this._config.animation) {
6542 var transitionDuration = getTransitionDurationFromElement(this._element);
6543 EventHandler.one(this._element, TRANSITION_END, complete);
6544 emulateTransitionEnd(this._element, transitionDuration);
6545 } else {
6546 complete();
6547 }
6548 };
6549
6550 _proto.hide = function hide() {
6551 var _this3 = this;
6552
6553 if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) {
6554 return;
6555 }
6556
6557 var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
6558
6559 if (hideEvent.defaultPrevented) {
6560 return;
6561 }
6562
6563 var complete = function complete() {
6564 _this3._element.classList.add(CLASS_NAME_HIDE);
6565
6566 EventHandler.trigger(_this3._element, EVENT_HIDDEN$4);
6567 };
6568
6569 this._element.classList.remove(CLASS_NAME_SHOW$6);
6570
6571 if (this._config.animation) {
6572 var transitionDuration = getTransitionDurationFromElement(this._element);
6573 EventHandler.one(this._element, TRANSITION_END, complete);
6574 emulateTransitionEnd(this._element, transitionDuration);
6575 } else {
6576 complete();
6577 }
6578 };
6579
6580 _proto.dispose = function dispose() {
6581 this._clearTimeout();
6582
6583 if (this._element.classList.contains(CLASS_NAME_SHOW$6)) {
6584 this._element.classList.remove(CLASS_NAME_SHOW$6);
6585 }
6586
6587 EventHandler.off(this._element, EVENT_CLICK_DISMISS$1);
6588
6589 _BaseComponent.prototype.dispose.call(this);
6590
6591 this._config = null;
6592 }
6593 ;
6594
6595 _proto._getConfig = function _getConfig(config) {
6596 config = _extends({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {});
6597 typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
6598 return config;
6599 };
6600
6601 _proto._setListeners = function _setListeners() {
6602 var _this4 = this;
6603
6604 EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {
6605 return _this4.hide();
6606 });
6607 };
6608
6609 _proto._clearTimeout = function _clearTimeout() {
6610 clearTimeout(this._timeout);
6611 this._timeout = null;
6612 }
6613 ;
6614
6615 Toast.jQueryInterface = function jQueryInterface(config) {
6616 return this.each(function () {
6617 var data = Data.getData(this, DATA_KEY$a);
6618
6619 var _config = typeof config === 'object' && config;
6620
6621 if (!data) {
6622 data = new Toast(this, _config);
6623 }
6624
6625 if (typeof config === 'string') {
6626 if (typeof data[config] === 'undefined') {
6627 throw new TypeError("No method named \"" + config + "\"");
6628 }
6629
6630 data[config](this);
6631 }
6632 });
6633 };
6634
6635 _createClass(Toast, null, [{
6636 key: "DefaultType",
6637 get: function get() {
6638 return DefaultType$7;
6639 }
6640 }, {
6641 key: "Default",
6642 get: function get() {
6643 return Default$7;
6644 }
6645 }, {
6646 key: "DATA_KEY",
6647 get: function get() {
6648 return DATA_KEY$a;
6649 }
6650 }]);
6651
6652 return Toast;
6653 }(BaseComponent);
6654
6655
6656
6657
6658
6659
6660
6661
6662 onDOMContentLoaded(function () {
6663 var $ = getjQuery();
6664
6665
6666 if ($) {
6667 var JQUERY_NO_CONFLICT = $.fn[NAME$a];
6668 $.fn[NAME$a] = Toast.jQueryInterface;
6669 $.fn[NAME$a].Constructor = Toast;
6670
6671 $.fn[NAME$a].noConflict = function () {
6672 $.fn[NAME$a] = JQUERY_NO_CONFLICT;
6673 return Toast.jQueryInterface;
6674 };
6675 }
6676 });
6677
6678
6679
6680
6681
6682
6683
6684 var index_umd = {
6685 Alert: Alert,
6686 Button: Button,
6687 Carousel: Carousel,
6688 Collapse: Collapse,
6689 Dropdown: Dropdown,
6690 Modal: Modal,
6691 Popover: Popover,
6692 ScrollSpy: ScrollSpy,
6693 Tab: Tab,
6694 Toast: Toast,
6695 Tooltip: Tooltip
6696 };
6697
6698 return index_umd;
6699
6700 })));
6701