prometheus
4410 строк · 132.4 Кб
1/*!
2* Bootstrap v4.5.2 (https://getbootstrap.com/)
3* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5*/
6(function (global, factory) {7typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :8typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :9(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));10}(this, (function (exports, $, Popper) { 'use strict';11
12$ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;13Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;14
15function _defineProperties(target, props) {16for (var i = 0; i < props.length; i++) {17var descriptor = props[i];18descriptor.enumerable = descriptor.enumerable || false;19descriptor.configurable = true;20if ("value" in descriptor) descriptor.writable = true;21Object.defineProperty(target, descriptor.key, descriptor);22}23}24
25function _createClass(Constructor, protoProps, staticProps) {26if (protoProps) _defineProperties(Constructor.prototype, protoProps);27if (staticProps) _defineProperties(Constructor, staticProps);28return Constructor;29}30
31function _extends() {32_extends = Object.assign || function (target) {33for (var i = 1; i < arguments.length; i++) {34var source = arguments[i];35
36for (var key in source) {37if (Object.prototype.hasOwnProperty.call(source, key)) {38target[key] = source[key];39}40}41}42
43return target;44};45
46return _extends.apply(this, arguments);47}48
49function _inheritsLoose(subClass, superClass) {50subClass.prototype = Object.create(superClass.prototype);51subClass.prototype.constructor = subClass;52subClass.__proto__ = superClass;53}54
55/**56* --------------------------------------------------------------------------
57* Bootstrap (v4.5.2): util.js
58* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
59* --------------------------------------------------------------------------
60*/
61/**62* ------------------------------------------------------------------------
63* Private TransitionEnd Helpers
64* ------------------------------------------------------------------------
65*/
66
67var TRANSITION_END = 'transitionend';68var MAX_UID = 1000000;69var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)70
71function toType(obj) {72if (obj === null || typeof obj === 'undefined') {73return "" + obj;74}75
76return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();77}78
79function getSpecialTransitionEndEvent() {80return {81bindType: TRANSITION_END,82delegateType: TRANSITION_END,83handle: function handle(event) {84if ($(event.target).is(this)) {85return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params86}87
88return undefined;89}90};91}92
93function transitionEndEmulator(duration) {94var _this = this;95
96var called = false;97$(this).one(Util.TRANSITION_END, function () {98called = true;99});100setTimeout(function () {101if (!called) {102Util.triggerTransitionEnd(_this);103}104}, duration);105return this;106}107
108function setTransitionEndSupport() {109$.fn.emulateTransitionEnd = transitionEndEmulator;110$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();111}112/**113* --------------------------------------------------------------------------
114* Public Util Api
115* --------------------------------------------------------------------------
116*/
117
118
119var Util = {120TRANSITION_END: 'bsTransitionEnd',121getUID: function getUID(prefix) {122do {123// eslint-disable-next-line no-bitwise124prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here125} while (document.getElementById(prefix));126
127return prefix;128},129getSelectorFromElement: function getSelectorFromElement(element) {130var selector = element.getAttribute('data-target');131
132if (!selector || selector === '#') {133var hrefAttr = element.getAttribute('href');134selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';135}136
137try {138return document.querySelector(selector) ? selector : null;139} catch (err) {140return null;141}142},143getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {144if (!element) {145return 0;146} // Get transition-duration of the element147
148
149var transitionDuration = $(element).css('transition-duration');150var transitionDelay = $(element).css('transition-delay');151var floatTransitionDuration = parseFloat(transitionDuration);152var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found153
154if (!floatTransitionDuration && !floatTransitionDelay) {155return 0;156} // If multiple durations are defined, take the first157
158
159transitionDuration = transitionDuration.split(',')[0];160transitionDelay = transitionDelay.split(',')[0];161return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;162},163reflow: function reflow(element) {164return element.offsetHeight;165},166triggerTransitionEnd: function triggerTransitionEnd(element) {167$(element).trigger(TRANSITION_END);168},169// TODO: Remove in v5170supportsTransitionEnd: function supportsTransitionEnd() {171return Boolean(TRANSITION_END);172},173isElement: function isElement(obj) {174return (obj[0] || obj).nodeType;175},176typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {177for (var property in configTypes) {178if (Object.prototype.hasOwnProperty.call(configTypes, property)) {179var expectedTypes = configTypes[property];180var value = config[property];181var valueType = value && Util.isElement(value) ? 'element' : toType(value);182
183if (!new RegExp(expectedTypes).test(valueType)) {184throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));185}186}187}188},189findShadowRoot: function findShadowRoot(element) {190if (!document.documentElement.attachShadow) {191return null;192} // Can find the shadow root otherwise it'll return the document193
194
195if (typeof element.getRootNode === 'function') {196var root = element.getRootNode();197return root instanceof ShadowRoot ? root : null;198}199
200if (element instanceof ShadowRoot) {201return element;202} // when we don't find a shadow root203
204
205if (!element.parentNode) {206return null;207}208
209return Util.findShadowRoot(element.parentNode);210},211jQueryDetection: function jQueryDetection() {212if (typeof $ === 'undefined') {213throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');214}215
216var version = $.fn.jquery.split(' ')[0].split('.');217var minMajor = 1;218var ltMajor = 2;219var minMinor = 9;220var minPatch = 1;221var maxMajor = 4;222
223if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {224throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');225}226}227};228Util.jQueryDetection();229setTransitionEndSupport();230
231/**232* ------------------------------------------------------------------------
233* Constants
234* ------------------------------------------------------------------------
235*/
236
237var NAME = 'alert';238var VERSION = '4.5.2';239var DATA_KEY = 'bs.alert';240var EVENT_KEY = "." + DATA_KEY;241var DATA_API_KEY = '.data-api';242var JQUERY_NO_CONFLICT = $.fn[NAME];243var SELECTOR_DISMISS = '[data-dismiss="alert"]';244var EVENT_CLOSE = "close" + EVENT_KEY;245var EVENT_CLOSED = "closed" + EVENT_KEY;246var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;247var CLASS_NAME_ALERT = 'alert';248var CLASS_NAME_FADE = 'fade';249var CLASS_NAME_SHOW = 'show';250/**251* ------------------------------------------------------------------------
252* Class Definition
253* ------------------------------------------------------------------------
254*/
255
256var Alert = /*#__PURE__*/function () {257function Alert(element) {258this._element = element;259} // Getters260
261
262var _proto = Alert.prototype;263
264// Public265_proto.close = function close(element) {266var rootElement = this._element;267
268if (element) {269rootElement = this._getRootElement(element);270}271
272var customEvent = this._triggerCloseEvent(rootElement);273
274if (customEvent.isDefaultPrevented()) {275return;276}277
278this._removeElement(rootElement);279};280
281_proto.dispose = function dispose() {282$.removeData(this._element, DATA_KEY);283this._element = null;284} // Private285;286
287_proto._getRootElement = function _getRootElement(element) {288var selector = Util.getSelectorFromElement(element);289var parent = false;290
291if (selector) {292parent = document.querySelector(selector);293}294
295if (!parent) {296parent = $(element).closest("." + CLASS_NAME_ALERT)[0];297}298
299return parent;300};301
302_proto._triggerCloseEvent = function _triggerCloseEvent(element) {303var closeEvent = $.Event(EVENT_CLOSE);304$(element).trigger(closeEvent);305return closeEvent;306};307
308_proto._removeElement = function _removeElement(element) {309var _this = this;310
311$(element).removeClass(CLASS_NAME_SHOW);312
313if (!$(element).hasClass(CLASS_NAME_FADE)) {314this._destroyElement(element);315
316return;317}318
319var transitionDuration = Util.getTransitionDurationFromElement(element);320$(element).one(Util.TRANSITION_END, function (event) {321return _this._destroyElement(element, event);322}).emulateTransitionEnd(transitionDuration);323};324
325_proto._destroyElement = function _destroyElement(element) {326$(element).detach().trigger(EVENT_CLOSED).remove();327} // Static328;329
330Alert._jQueryInterface = function _jQueryInterface(config) {331return this.each(function () {332var $element = $(this);333var data = $element.data(DATA_KEY);334
335if (!data) {336data = new Alert(this);337$element.data(DATA_KEY, data);338}339
340if (config === 'close') {341data[config](this);342}343});344};345
346Alert._handleDismiss = function _handleDismiss(alertInstance) {347return function (event) {348if (event) {349event.preventDefault();350}351
352alertInstance.close(this);353};354};355
356_createClass(Alert, null, [{357key: "VERSION",358get: function get() {359return VERSION;360}361}]);362
363return Alert;364}();365/**366* ------------------------------------------------------------------------
367* Data Api implementation
368* ------------------------------------------------------------------------
369*/
370
371
372$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));373/**374* ------------------------------------------------------------------------
375* jQuery
376* ------------------------------------------------------------------------
377*/
378
379$.fn[NAME] = Alert._jQueryInterface;380$.fn[NAME].Constructor = Alert;381
382$.fn[NAME].noConflict = function () {383$.fn[NAME] = JQUERY_NO_CONFLICT;384return Alert._jQueryInterface;385};386
387/**388* ------------------------------------------------------------------------
389* Constants
390* ------------------------------------------------------------------------
391*/
392
393var NAME$1 = 'button';394var VERSION$1 = '4.5.2';395var DATA_KEY$1 = 'bs.button';396var EVENT_KEY$1 = "." + DATA_KEY$1;397var DATA_API_KEY$1 = '.data-api';398var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];399var CLASS_NAME_ACTIVE = 'active';400var CLASS_NAME_BUTTON = 'btn';401var CLASS_NAME_FOCUS = 'focus';402var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';403var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';404var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';405var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';406var SELECTOR_INPUT = 'input:not([type="hidden"])';407var SELECTOR_ACTIVE = '.active';408var SELECTOR_BUTTON = '.btn';409var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1;410var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1);411var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$1 + DATA_API_KEY$1;412/**413* ------------------------------------------------------------------------
414* Class Definition
415* ------------------------------------------------------------------------
416*/
417
418var Button = /*#__PURE__*/function () {419function Button(element) {420this._element = element;421} // Getters422
423
424var _proto = Button.prototype;425
426// Public427_proto.toggle = function toggle() {428var triggerChangeEvent = true;429var addAriaPressed = true;430var rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0];431
432if (rootElement) {433var input = this._element.querySelector(SELECTOR_INPUT);434
435if (input) {436if (input.type === 'radio') {437if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {438triggerChangeEvent = false;439} else {440var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);441
442if (activeElement) {443$(activeElement).removeClass(CLASS_NAME_ACTIVE);444}445}446}447
448if (triggerChangeEvent) {449// if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input450if (input.type === 'checkbox' || input.type === 'radio') {451input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);452}453
454$(input).trigger('change');455}456
457input.focus();458addAriaPressed = false;459}460}461
462if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {463if (addAriaPressed) {464this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));465}466
467if (triggerChangeEvent) {468$(this._element).toggleClass(CLASS_NAME_ACTIVE);469}470}471};472
473_proto.dispose = function dispose() {474$.removeData(this._element, DATA_KEY$1);475this._element = null;476} // Static477;478
479Button._jQueryInterface = function _jQueryInterface(config) {480return this.each(function () {481var data = $(this).data(DATA_KEY$1);482
483if (!data) {484data = new Button(this);485$(this).data(DATA_KEY$1, data);486}487
488if (config === 'toggle') {489data[config]();490}491});492};493
494_createClass(Button, null, [{495key: "VERSION",496get: function get() {497return VERSION$1;498}499}]);500
501return Button;502}();503/**504* ------------------------------------------------------------------------
505* Data Api implementation
506* ------------------------------------------------------------------------
507*/
508
509
510$(document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {511var button = event.target;512var initialButton = button;513
514if (!$(button).hasClass(CLASS_NAME_BUTTON)) {515button = $(button).closest(SELECTOR_BUTTON)[0];516}517
518if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {519event.preventDefault(); // work around Firefox bug #1540995520} else {521var inputBtn = button.querySelector(SELECTOR_INPUT);522
523if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {524event.preventDefault(); // work around Firefox bug #1540995525
526return;527}528
529if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') {530Button._jQueryInterface.call($(button), 'toggle');531}532}533}).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {534var button = $(event.target).closest(SELECTOR_BUTTON)[0];535$(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));536});537$(window).on(EVENT_LOAD_DATA_API, function () {538// ensure correct active class is set to match the controls' actual values/states539// find all checkboxes/readio buttons inside data-toggle groups540var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));541
542for (var i = 0, len = buttons.length; i < len; i++) {543var button = buttons[i];544var input = button.querySelector(SELECTOR_INPUT);545
546if (input.checked || input.hasAttribute('checked')) {547button.classList.add(CLASS_NAME_ACTIVE);548} else {549button.classList.remove(CLASS_NAME_ACTIVE);550}551} // find all button toggles552
553
554buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));555
556for (var _i = 0, _len = buttons.length; _i < _len; _i++) {557var _button = buttons[_i];558
559if (_button.getAttribute('aria-pressed') === 'true') {560_button.classList.add(CLASS_NAME_ACTIVE);561} else {562_button.classList.remove(CLASS_NAME_ACTIVE);563}564}565});566/**567* ------------------------------------------------------------------------
568* jQuery
569* ------------------------------------------------------------------------
570*/
571
572$.fn[NAME$1] = Button._jQueryInterface;573$.fn[NAME$1].Constructor = Button;574
575$.fn[NAME$1].noConflict = function () {576$.fn[NAME$1] = JQUERY_NO_CONFLICT$1;577return Button._jQueryInterface;578};579
580/**581* ------------------------------------------------------------------------
582* Constants
583* ------------------------------------------------------------------------
584*/
585
586var NAME$2 = 'carousel';587var VERSION$2 = '4.5.2';588var DATA_KEY$2 = 'bs.carousel';589var EVENT_KEY$2 = "." + DATA_KEY$2;590var DATA_API_KEY$2 = '.data-api';591var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];592var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key593
594var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key595
596var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch597
598var SWIPE_THRESHOLD = 40;599var Default = {600interval: 5000,601keyboard: true,602slide: false,603pause: 'hover',604wrap: true,605touch: true606};607var DefaultType = {608interval: '(number|boolean)',609keyboard: 'boolean',610slide: '(boolean|string)',611pause: '(string|boolean)',612wrap: 'boolean',613touch: 'boolean'614};615var DIRECTION_NEXT = 'next';616var DIRECTION_PREV = 'prev';617var DIRECTION_LEFT = 'left';618var DIRECTION_RIGHT = 'right';619var EVENT_SLIDE = "slide" + EVENT_KEY$2;620var EVENT_SLID = "slid" + EVENT_KEY$2;621var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;622var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;623var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;624var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;625var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;626var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;627var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;628var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;629var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;630var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$2 + DATA_API_KEY$2;631var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;632var CLASS_NAME_CAROUSEL = 'carousel';633var CLASS_NAME_ACTIVE$1 = 'active';634var CLASS_NAME_SLIDE = 'slide';635var CLASS_NAME_RIGHT = 'carousel-item-right';636var CLASS_NAME_LEFT = 'carousel-item-left';637var CLASS_NAME_NEXT = 'carousel-item-next';638var CLASS_NAME_PREV = 'carousel-item-prev';639var CLASS_NAME_POINTER_EVENT = 'pointer-event';640var SELECTOR_ACTIVE$1 = '.active';641var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';642var SELECTOR_ITEM = '.carousel-item';643var SELECTOR_ITEM_IMG = '.carousel-item img';644var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';645var SELECTOR_INDICATORS = '.carousel-indicators';646var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';647var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';648var PointerType = {649TOUCH: 'touch',650PEN: 'pen'651};652/**653* ------------------------------------------------------------------------
654* Class Definition
655* ------------------------------------------------------------------------
656*/
657
658var Carousel = /*#__PURE__*/function () {659function Carousel(element, config) {660this._items = null;661this._interval = null;662this._activeElement = null;663this._isPaused = false;664this._isSliding = false;665this.touchTimeout = null;666this.touchStartX = 0;667this.touchDeltaX = 0;668this._config = this._getConfig(config);669this._element = element;670this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);671this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;672this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);673
674this._addEventListeners();675} // Getters676
677
678var _proto = Carousel.prototype;679
680// Public681_proto.next = function next() {682if (!this._isSliding) {683this._slide(DIRECTION_NEXT);684}685};686
687_proto.nextWhenVisible = function nextWhenVisible() {688// Don't call next when the page isn't visible689// or the carousel or its parent isn't visible690if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {691this.next();692}693};694
695_proto.prev = function prev() {696if (!this._isSliding) {697this._slide(DIRECTION_PREV);698}699};700
701_proto.pause = function pause(event) {702if (!event) {703this._isPaused = true;704}705
706if (this._element.querySelector(SELECTOR_NEXT_PREV)) {707Util.triggerTransitionEnd(this._element);708this.cycle(true);709}710
711clearInterval(this._interval);712this._interval = null;713};714
715_proto.cycle = function cycle(event) {716if (!event) {717this._isPaused = false;718}719
720if (this._interval) {721clearInterval(this._interval);722this._interval = null;723}724
725if (this._config.interval && !this._isPaused) {726this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);727}728};729
730_proto.to = function to(index) {731var _this = this;732
733this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);734
735var activeIndex = this._getItemIndex(this._activeElement);736
737if (index > this._items.length - 1 || index < 0) {738return;739}740
741if (this._isSliding) {742$(this._element).one(EVENT_SLID, function () {743return _this.to(index);744});745return;746}747
748if (activeIndex === index) {749this.pause();750this.cycle();751return;752}753
754var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;755
756this._slide(direction, this._items[index]);757};758
759_proto.dispose = function dispose() {760$(this._element).off(EVENT_KEY$2);761$.removeData(this._element, DATA_KEY$2);762this._items = null;763this._config = null;764this._element = null;765this._interval = null;766this._isPaused = null;767this._isSliding = null;768this._activeElement = null;769this._indicatorsElement = null;770} // Private771;772
773_proto._getConfig = function _getConfig(config) {774config = _extends({}, Default, config);775Util.typeCheckConfig(NAME$2, config, DefaultType);776return config;777};778
779_proto._handleSwipe = function _handleSwipe() {780var absDeltax = Math.abs(this.touchDeltaX);781
782if (absDeltax <= SWIPE_THRESHOLD) {783return;784}785
786var direction = absDeltax / this.touchDeltaX;787this.touchDeltaX = 0; // swipe left788
789if (direction > 0) {790this.prev();791} // swipe right792
793
794if (direction < 0) {795this.next();796}797};798
799_proto._addEventListeners = function _addEventListeners() {800var _this2 = this;801
802if (this._config.keyboard) {803$(this._element).on(EVENT_KEYDOWN, function (event) {804return _this2._keydown(event);805});806}807
808if (this._config.pause === 'hover') {809$(this._element).on(EVENT_MOUSEENTER, function (event) {810return _this2.pause(event);811}).on(EVENT_MOUSELEAVE, function (event) {812return _this2.cycle(event);813});814}815
816if (this._config.touch) {817this._addTouchEventListeners();818}819};820
821_proto._addTouchEventListeners = function _addTouchEventListeners() {822var _this3 = this;823
824if (!this._touchSupported) {825return;826}827
828var start = function start(event) {829if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {830_this3.touchStartX = event.originalEvent.clientX;831} else if (!_this3._pointerEvent) {832_this3.touchStartX = event.originalEvent.touches[0].clientX;833}834};835
836var move = function move(event) {837// ensure swiping with one touch and not pinching838if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {839_this3.touchDeltaX = 0;840} else {841_this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;842}843};844
845var end = function end(event) {846if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {847_this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;848}849
850_this3._handleSwipe();851
852if (_this3._config.pause === 'hover') {853// If it's a touch-enabled device, mouseenter/leave are fired as854// part of the mouse compatibility events on first tap - the carousel855// would stop cycling until user tapped out of it;856// here, we listen for touchend, explicitly pause the carousel857// (as if it's the second time we tap on it, mouseenter compat event858// is NOT fired) and after a timeout (to allow for mouse compatibility859// events to fire) we explicitly restart cycling860_this3.pause();861
862if (_this3.touchTimeout) {863clearTimeout(_this3.touchTimeout);864}865
866_this3.touchTimeout = setTimeout(function (event) {867return _this3.cycle(event);868}, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);869}870};871
872$(this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {873return e.preventDefault();874});875
876if (this._pointerEvent) {877$(this._element).on(EVENT_POINTERDOWN, function (event) {878return start(event);879});880$(this._element).on(EVENT_POINTERUP, function (event) {881return end(event);882});883
884this._element.classList.add(CLASS_NAME_POINTER_EVENT);885} else {886$(this._element).on(EVENT_TOUCHSTART, function (event) {887return start(event);888});889$(this._element).on(EVENT_TOUCHMOVE, function (event) {890return move(event);891});892$(this._element).on(EVENT_TOUCHEND, function (event) {893return end(event);894});895}896};897
898_proto._keydown = function _keydown(event) {899if (/input|textarea/i.test(event.target.tagName)) {900return;901}902
903switch (event.which) {904case ARROW_LEFT_KEYCODE:905event.preventDefault();906this.prev();907break;908
909case ARROW_RIGHT_KEYCODE:910event.preventDefault();911this.next();912break;913}914};915
916_proto._getItemIndex = function _getItemIndex(element) {917this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];918return this._items.indexOf(element);919};920
921_proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {922var isNextDirection = direction === DIRECTION_NEXT;923var isPrevDirection = direction === DIRECTION_PREV;924
925var activeIndex = this._getItemIndex(activeElement);926
927var lastItemIndex = this._items.length - 1;928var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;929
930if (isGoingToWrap && !this._config.wrap) {931return activeElement;932}933
934var delta = direction === DIRECTION_PREV ? -1 : 1;935var itemIndex = (activeIndex + delta) % this._items.length;936return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];937};938
939_proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {940var targetIndex = this._getItemIndex(relatedTarget);941
942var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));943
944var slideEvent = $.Event(EVENT_SLIDE, {945relatedTarget: relatedTarget,946direction: eventDirectionName,947from: fromIndex,948to: targetIndex949});950$(this._element).trigger(slideEvent);951return slideEvent;952};953
954_proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {955if (this._indicatorsElement) {956var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));957$(indicators).removeClass(CLASS_NAME_ACTIVE$1);958
959var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];960
961if (nextIndicator) {962$(nextIndicator).addClass(CLASS_NAME_ACTIVE$1);963}964}965};966
967_proto._slide = function _slide(direction, element) {968var _this4 = this;969
970var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);971
972var activeElementIndex = this._getItemIndex(activeElement);973
974var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);975
976var nextElementIndex = this._getItemIndex(nextElement);977
978var isCycling = Boolean(this._interval);979var directionalClassName;980var orderClassName;981var eventDirectionName;982
983if (direction === DIRECTION_NEXT) {984directionalClassName = CLASS_NAME_LEFT;985orderClassName = CLASS_NAME_NEXT;986eventDirectionName = DIRECTION_LEFT;987} else {988directionalClassName = CLASS_NAME_RIGHT;989orderClassName = CLASS_NAME_PREV;990eventDirectionName = DIRECTION_RIGHT;991}992
993if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {994this._isSliding = false;995return;996}997
998var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);999
1000if (slideEvent.isDefaultPrevented()) {1001return;1002}1003
1004if (!activeElement || !nextElement) {1005// Some weirdness is happening, so we bail1006return;1007}1008
1009this._isSliding = true;1010
1011if (isCycling) {1012this.pause();1013}1014
1015this._setActiveIndicatorElement(nextElement);1016
1017var slidEvent = $.Event(EVENT_SLID, {1018relatedTarget: nextElement,1019direction: eventDirectionName,1020from: activeElementIndex,1021to: nextElementIndex1022});1023
1024if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {1025$(nextElement).addClass(orderClassName);1026Util.reflow(nextElement);1027$(activeElement).addClass(directionalClassName);1028$(nextElement).addClass(directionalClassName);1029var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);1030
1031if (nextElementInterval) {1032this._config.defaultInterval = this._config.defaultInterval || this._config.interval;1033this._config.interval = nextElementInterval;1034} else {1035this._config.interval = this._config.defaultInterval || this._config.interval;1036}1037
1038var transitionDuration = Util.getTransitionDurationFromElement(activeElement);1039$(activeElement).one(Util.TRANSITION_END, function () {1040$(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$1);1041$(activeElement).removeClass(CLASS_NAME_ACTIVE$1 + " " + orderClassName + " " + directionalClassName);1042_this4._isSliding = false;1043setTimeout(function () {1044return $(_this4._element).trigger(slidEvent);1045}, 0);1046}).emulateTransitionEnd(transitionDuration);1047} else {1048$(activeElement).removeClass(CLASS_NAME_ACTIVE$1);1049$(nextElement).addClass(CLASS_NAME_ACTIVE$1);1050this._isSliding = false;1051$(this._element).trigger(slidEvent);1052}1053
1054if (isCycling) {1055this.cycle();1056}1057} // Static1058;1059
1060Carousel._jQueryInterface = function _jQueryInterface(config) {1061return this.each(function () {1062var data = $(this).data(DATA_KEY$2);1063
1064var _config = _extends({}, Default, $(this).data());1065
1066if (typeof config === 'object') {1067_config = _extends({}, _config, config);1068}1069
1070var action = typeof config === 'string' ? config : _config.slide;1071
1072if (!data) {1073data = new Carousel(this, _config);1074$(this).data(DATA_KEY$2, data);1075}1076
1077if (typeof config === 'number') {1078data.to(config);1079} else if (typeof action === 'string') {1080if (typeof data[action] === 'undefined') {1081throw new TypeError("No method named \"" + action + "\"");1082}1083
1084data[action]();1085} else if (_config.interval && _config.ride) {1086data.pause();1087data.cycle();1088}1089});1090};1091
1092Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {1093var selector = Util.getSelectorFromElement(this);1094
1095if (!selector) {1096return;1097}1098
1099var target = $(selector)[0];1100
1101if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {1102return;1103}1104
1105var config = _extends({}, $(target).data(), $(this).data());1106
1107var slideIndex = this.getAttribute('data-slide-to');1108
1109if (slideIndex) {1110config.interval = false;1111}1112
1113Carousel._jQueryInterface.call($(target), config);1114
1115if (slideIndex) {1116$(target).data(DATA_KEY$2).to(slideIndex);1117}1118
1119event.preventDefault();1120};1121
1122_createClass(Carousel, null, [{1123key: "VERSION",1124get: function get() {1125return VERSION$2;1126}1127}, {1128key: "Default",1129get: function get() {1130return Default;1131}1132}]);1133
1134return Carousel;1135}();1136/**1137* ------------------------------------------------------------------------
1138* Data Api implementation
1139* ------------------------------------------------------------------------
1140*/
1141
1142
1143$(document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);1144$(window).on(EVENT_LOAD_DATA_API$1, function () {1145var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));1146
1147for (var i = 0, len = carousels.length; i < len; i++) {1148var $carousel = $(carousels[i]);1149
1150Carousel._jQueryInterface.call($carousel, $carousel.data());1151}1152});1153/**1154* ------------------------------------------------------------------------
1155* jQuery
1156* ------------------------------------------------------------------------
1157*/
1158
1159$.fn[NAME$2] = Carousel._jQueryInterface;1160$.fn[NAME$2].Constructor = Carousel;1161
1162$.fn[NAME$2].noConflict = function () {1163$.fn[NAME$2] = JQUERY_NO_CONFLICT$2;1164return Carousel._jQueryInterface;1165};1166
1167/**1168* ------------------------------------------------------------------------
1169* Constants
1170* ------------------------------------------------------------------------
1171*/
1172
1173var NAME$3 = 'collapse';1174var VERSION$3 = '4.5.2';1175var DATA_KEY$3 = 'bs.collapse';1176var EVENT_KEY$3 = "." + DATA_KEY$3;1177var DATA_API_KEY$3 = '.data-api';1178var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];1179var Default$1 = {1180toggle: true,1181parent: ''1182};1183var DefaultType$1 = {1184toggle: 'boolean',1185parent: '(string|element)'1186};1187var EVENT_SHOW = "show" + EVENT_KEY$3;1188var EVENT_SHOWN = "shown" + EVENT_KEY$3;1189var EVENT_HIDE = "hide" + EVENT_KEY$3;1190var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;1191var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;1192var CLASS_NAME_SHOW$1 = 'show';1193var CLASS_NAME_COLLAPSE = 'collapse';1194var CLASS_NAME_COLLAPSING = 'collapsing';1195var CLASS_NAME_COLLAPSED = 'collapsed';1196var DIMENSION_WIDTH = 'width';1197var DIMENSION_HEIGHT = 'height';1198var SELECTOR_ACTIVES = '.show, .collapsing';1199var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]';1200/**1201* ------------------------------------------------------------------------
1202* Class Definition
1203* ------------------------------------------------------------------------
1204*/
1205
1206var Collapse = /*#__PURE__*/function () {1207function Collapse(element, config) {1208this._isTransitioning = false;1209this._element = element;1210this._config = this._getConfig(config);1211this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));1212var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));1213
1214for (var i = 0, len = toggleList.length; i < len; i++) {1215var elem = toggleList[i];1216var selector = Util.getSelectorFromElement(elem);1217var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {1218return foundElem === element;1219});1220
1221if (selector !== null && filterElement.length > 0) {1222this._selector = selector;1223
1224this._triggerArray.push(elem);1225}1226}1227
1228this._parent = this._config.parent ? this._getParent() : null;1229
1230if (!this._config.parent) {1231this._addAriaAndCollapsedClass(this._element, this._triggerArray);1232}1233
1234if (this._config.toggle) {1235this.toggle();1236}1237} // Getters1238
1239
1240var _proto = Collapse.prototype;1241
1242// Public1243_proto.toggle = function toggle() {1244if ($(this._element).hasClass(CLASS_NAME_SHOW$1)) {1245this.hide();1246} else {1247this.show();1248}1249};1250
1251_proto.show = function show() {1252var _this = this;1253
1254if (this._isTransitioning || $(this._element).hasClass(CLASS_NAME_SHOW$1)) {1255return;1256}1257
1258var actives;1259var activesData;1260
1261if (this._parent) {1262actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {1263if (typeof _this._config.parent === 'string') {1264return elem.getAttribute('data-parent') === _this._config.parent;1265}1266
1267return elem.classList.contains(CLASS_NAME_COLLAPSE);1268});1269
1270if (actives.length === 0) {1271actives = null;1272}1273}1274
1275if (actives) {1276activesData = $(actives).not(this._selector).data(DATA_KEY$3);1277
1278if (activesData && activesData._isTransitioning) {1279return;1280}1281}1282
1283var startEvent = $.Event(EVENT_SHOW);1284$(this._element).trigger(startEvent);1285
1286if (startEvent.isDefaultPrevented()) {1287return;1288}1289
1290if (actives) {1291Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');1292
1293if (!activesData) {1294$(actives).data(DATA_KEY$3, null);1295}1296}1297
1298var dimension = this._getDimension();1299
1300$(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);1301this._element.style[dimension] = 0;1302
1303if (this._triggerArray.length) {1304$(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);1305}1306
1307this.setTransitioning(true);1308
1309var complete = function complete() {1310$(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1);1311_this._element.style[dimension] = '';1312
1313_this.setTransitioning(false);1314
1315$(_this._element).trigger(EVENT_SHOWN);1316};1317
1318var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);1319var scrollSize = "scroll" + capitalizedDimension;1320var transitionDuration = Util.getTransitionDurationFromElement(this._element);1321$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);1322this._element.style[dimension] = this._element[scrollSize] + "px";1323};1324
1325_proto.hide = function hide() {1326var _this2 = this;1327
1328if (this._isTransitioning || !$(this._element).hasClass(CLASS_NAME_SHOW$1)) {1329return;1330}1331
1332var startEvent = $.Event(EVENT_HIDE);1333$(this._element).trigger(startEvent);1334
1335if (startEvent.isDefaultPrevented()) {1336return;1337}1338
1339var dimension = this._getDimension();1340
1341this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";1342Util.reflow(this._element);1343$(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1);1344var triggerArrayLength = this._triggerArray.length;1345
1346if (triggerArrayLength > 0) {1347for (var i = 0; i < triggerArrayLength; i++) {1348var trigger = this._triggerArray[i];1349var selector = Util.getSelectorFromElement(trigger);1350
1351if (selector !== null) {1352var $elem = $([].slice.call(document.querySelectorAll(selector)));1353
1354if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {1355$(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);1356}1357}1358}1359}1360
1361this.setTransitioning(true);1362
1363var complete = function complete() {1364_this2.setTransitioning(false);1365
1366$(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);1367};1368
1369this._element.style[dimension] = '';1370var transitionDuration = Util.getTransitionDurationFromElement(this._element);1371$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);1372};1373
1374_proto.setTransitioning = function setTransitioning(isTransitioning) {1375this._isTransitioning = isTransitioning;1376};1377
1378_proto.dispose = function dispose() {1379$.removeData(this._element, DATA_KEY$3);1380this._config = null;1381this._parent = null;1382this._element = null;1383this._triggerArray = null;1384this._isTransitioning = null;1385} // Private1386;1387
1388_proto._getConfig = function _getConfig(config) {1389config = _extends({}, Default$1, config);1390config.toggle = Boolean(config.toggle); // Coerce string values1391
1392Util.typeCheckConfig(NAME$3, config, DefaultType$1);1393return config;1394};1395
1396_proto._getDimension = function _getDimension() {1397var hasWidth = $(this._element).hasClass(DIMENSION_WIDTH);1398return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;1399};1400
1401_proto._getParent = function _getParent() {1402var _this3 = this;1403
1404var parent;1405
1406if (Util.isElement(this._config.parent)) {1407parent = this._config.parent; // It's a jQuery object1408
1409if (typeof this._config.parent.jquery !== 'undefined') {1410parent = this._config.parent[0];1411}1412} else {1413parent = document.querySelector(this._config.parent);1414}1415
1416var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";1417var children = [].slice.call(parent.querySelectorAll(selector));1418$(children).each(function (i, element) {1419_this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);1420});1421return parent;1422};1423
1424_proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {1425var isOpen = $(element).hasClass(CLASS_NAME_SHOW$1);1426
1427if (triggerArray.length) {1428$(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);1429}1430} // Static1431;1432
1433Collapse._getTargetFromElement = function _getTargetFromElement(element) {1434var selector = Util.getSelectorFromElement(element);1435return selector ? document.querySelector(selector) : null;1436};1437
1438Collapse._jQueryInterface = function _jQueryInterface(config) {1439return this.each(function () {1440var $this = $(this);1441var data = $this.data(DATA_KEY$3);1442
1443var _config = _extends({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});1444
1445if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {1446_config.toggle = false;1447}1448
1449if (!data) {1450data = new Collapse(this, _config);1451$this.data(DATA_KEY$3, data);1452}1453
1454if (typeof config === 'string') {1455if (typeof data[config] === 'undefined') {1456throw new TypeError("No method named \"" + config + "\"");1457}1458
1459data[config]();1460}1461});1462};1463
1464_createClass(Collapse, null, [{1465key: "VERSION",1466get: function get() {1467return VERSION$3;1468}1469}, {1470key: "Default",1471get: function get() {1472return Default$1;1473}1474}]);1475
1476return Collapse;1477}();1478/**1479* ------------------------------------------------------------------------
1480* Data Api implementation
1481* ------------------------------------------------------------------------
1482*/
1483
1484
1485$(document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {1486// preventDefault only for <a> elements (which change the URL) not inside the collapsible element1487if (event.currentTarget.tagName === 'A') {1488event.preventDefault();1489}1490
1491var $trigger = $(this);1492var selector = Util.getSelectorFromElement(this);1493var selectors = [].slice.call(document.querySelectorAll(selector));1494$(selectors).each(function () {1495var $target = $(this);1496var data = $target.data(DATA_KEY$3);1497var config = data ? 'toggle' : $trigger.data();1498
1499Collapse._jQueryInterface.call($target, config);1500});1501});1502/**1503* ------------------------------------------------------------------------
1504* jQuery
1505* ------------------------------------------------------------------------
1506*/
1507
1508$.fn[NAME$3] = Collapse._jQueryInterface;1509$.fn[NAME$3].Constructor = Collapse;1510
1511$.fn[NAME$3].noConflict = function () {1512$.fn[NAME$3] = JQUERY_NO_CONFLICT$3;1513return Collapse._jQueryInterface;1514};1515
1516/**1517* ------------------------------------------------------------------------
1518* Constants
1519* ------------------------------------------------------------------------
1520*/
1521
1522var NAME$4 = 'dropdown';1523var VERSION$4 = '4.5.2';1524var DATA_KEY$4 = 'bs.dropdown';1525var EVENT_KEY$4 = "." + DATA_KEY$4;1526var DATA_API_KEY$4 = '.data-api';1527var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];1528var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key1529
1530var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key1531
1532var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key1533
1534var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key1535
1536var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key1537
1538var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)1539
1540var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);1541var EVENT_HIDE$1 = "hide" + EVENT_KEY$4;1542var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4;1543var EVENT_SHOW$1 = "show" + EVENT_KEY$4;1544var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4;1545var EVENT_CLICK = "click" + EVENT_KEY$4;1546var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4;1547var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;1548var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;1549var CLASS_NAME_DISABLED = 'disabled';1550var CLASS_NAME_SHOW$2 = 'show';1551var CLASS_NAME_DROPUP = 'dropup';1552var CLASS_NAME_DROPRIGHT = 'dropright';1553var CLASS_NAME_DROPLEFT = 'dropleft';1554var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';1555var CLASS_NAME_POSITION_STATIC = 'position-static';1556var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]';1557var SELECTOR_FORM_CHILD = '.dropdown form';1558var SELECTOR_MENU = '.dropdown-menu';1559var SELECTOR_NAVBAR_NAV = '.navbar-nav';1560var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';1561var PLACEMENT_TOP = 'top-start';1562var PLACEMENT_TOPEND = 'top-end';1563var PLACEMENT_BOTTOM = 'bottom-start';1564var PLACEMENT_BOTTOMEND = 'bottom-end';1565var PLACEMENT_RIGHT = 'right-start';1566var PLACEMENT_LEFT = 'left-start';1567var Default$2 = {1568offset: 0,1569flip: true,1570boundary: 'scrollParent',1571reference: 'toggle',1572display: 'dynamic',1573popperConfig: null1574};1575var DefaultType$2 = {1576offset: '(number|string|function)',1577flip: 'boolean',1578boundary: '(string|element)',1579reference: '(string|element)',1580display: 'string',1581popperConfig: '(null|object)'1582};1583/**1584* ------------------------------------------------------------------------
1585* Class Definition
1586* ------------------------------------------------------------------------
1587*/
1588
1589var Dropdown = /*#__PURE__*/function () {1590function Dropdown(element, config) {1591this._element = element;1592this._popper = null;1593this._config = this._getConfig(config);1594this._menu = this._getMenuElement();1595this._inNavbar = this._detectNavbar();1596
1597this._addEventListeners();1598} // Getters1599
1600
1601var _proto = Dropdown.prototype;1602
1603// Public1604_proto.toggle = function toggle() {1605if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {1606return;1607}1608
1609var isActive = $(this._menu).hasClass(CLASS_NAME_SHOW$2);1610
1611Dropdown._clearMenus();1612
1613if (isActive) {1614return;1615}1616
1617this.show(true);1618};1619
1620_proto.show = function show(usePopper) {1621if (usePopper === void 0) {1622usePopper = false;1623}1624
1625if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW$2)) {1626return;1627}1628
1629var relatedTarget = {1630relatedTarget: this._element1631};1632var showEvent = $.Event(EVENT_SHOW$1, relatedTarget);1633
1634var parent = Dropdown._getParentFromElement(this._element);1635
1636$(parent).trigger(showEvent);1637
1638if (showEvent.isDefaultPrevented()) {1639return;1640} // Disable totally Popper.js for Dropdown in Navbar1641
1642
1643if (!this._inNavbar && usePopper) {1644/**1645* Check for Popper dependency
1646* Popper - https://popper.js.org
1647*/
1648if (typeof Popper === 'undefined') {1649throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');1650}1651
1652var referenceElement = this._element;1653
1654if (this._config.reference === 'parent') {1655referenceElement = parent;1656} else if (Util.isElement(this._config.reference)) {1657referenceElement = this._config.reference; // Check if it's jQuery element1658
1659if (typeof this._config.reference.jquery !== 'undefined') {1660referenceElement = this._config.reference[0];1661}1662} // If boundary is not `scrollParent`, then set position to `static`1663// to allow the menu to "escape" the scroll parent's boundaries1664// https://github.com/twbs/bootstrap/issues/242511665
1666
1667if (this._config.boundary !== 'scrollParent') {1668$(parent).addClass(CLASS_NAME_POSITION_STATIC);1669}1670
1671this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());1672} // If this is a touch-enabled device we add extra1673// empty mouseover listeners to the body's immediate children;1674// only needed because of broken event delegation on iOS1675// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html1676
1677
1678if ('ontouchstart' in document.documentElement && $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {1679$(document.body).children().on('mouseover', null, $.noop);1680}1681
1682this._element.focus();1683
1684this._element.setAttribute('aria-expanded', true);1685
1686$(this._menu).toggleClass(CLASS_NAME_SHOW$2);1687$(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_SHOWN$1, relatedTarget));1688};1689
1690_proto.hide = function hide() {1691if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW$2)) {1692return;1693}1694
1695var relatedTarget = {1696relatedTarget: this._element1697};1698var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);1699
1700var parent = Dropdown._getParentFromElement(this._element);1701
1702$(parent).trigger(hideEvent);1703
1704if (hideEvent.isDefaultPrevented()) {1705return;1706}1707
1708if (this._popper) {1709this._popper.destroy();1710}1711
1712$(this._menu).toggleClass(CLASS_NAME_SHOW$2);1713$(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));1714};1715
1716_proto.dispose = function dispose() {1717$.removeData(this._element, DATA_KEY$4);1718$(this._element).off(EVENT_KEY$4);1719this._element = null;1720this._menu = null;1721
1722if (this._popper !== null) {1723this._popper.destroy();1724
1725this._popper = null;1726}1727};1728
1729_proto.update = function update() {1730this._inNavbar = this._detectNavbar();1731
1732if (this._popper !== null) {1733this._popper.scheduleUpdate();1734}1735} // Private1736;1737
1738_proto._addEventListeners = function _addEventListeners() {1739var _this = this;1740
1741$(this._element).on(EVENT_CLICK, function (event) {1742event.preventDefault();1743event.stopPropagation();1744
1745_this.toggle();1746});1747};1748
1749_proto._getConfig = function _getConfig(config) {1750config = _extends({}, this.constructor.Default, $(this._element).data(), config);1751Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);1752return config;1753};1754
1755_proto._getMenuElement = function _getMenuElement() {1756if (!this._menu) {1757var parent = Dropdown._getParentFromElement(this._element);1758
1759if (parent) {1760this._menu = parent.querySelector(SELECTOR_MENU);1761}1762}1763
1764return this._menu;1765};1766
1767_proto._getPlacement = function _getPlacement() {1768var $parentDropdown = $(this._element.parentNode);1769var placement = PLACEMENT_BOTTOM; // Handle dropup1770
1771if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {1772placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;1773} else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {1774placement = PLACEMENT_RIGHT;1775} else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {1776placement = PLACEMENT_LEFT;1777} else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {1778placement = PLACEMENT_BOTTOMEND;1779}1780
1781return placement;1782};1783
1784_proto._detectNavbar = function _detectNavbar() {1785return $(this._element).closest('.navbar').length > 0;1786};1787
1788_proto._getOffset = function _getOffset() {1789var _this2 = this;1790
1791var offset = {};1792
1793if (typeof this._config.offset === 'function') {1794offset.fn = function (data) {1795data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});1796return data;1797};1798} else {1799offset.offset = this._config.offset;1800}1801
1802return offset;1803};1804
1805_proto._getPopperConfig = function _getPopperConfig() {1806var popperConfig = {1807placement: this._getPlacement(),1808modifiers: {1809offset: this._getOffset(),1810flip: {1811enabled: this._config.flip1812},1813preventOverflow: {1814boundariesElement: this._config.boundary1815}1816}1817}; // Disable Popper.js if we have a static display1818
1819if (this._config.display === 'static') {1820popperConfig.modifiers.applyStyle = {1821enabled: false1822};1823}1824
1825return _extends({}, popperConfig, this._config.popperConfig);1826} // Static1827;1828
1829Dropdown._jQueryInterface = function _jQueryInterface(config) {1830return this.each(function () {1831var data = $(this).data(DATA_KEY$4);1832
1833var _config = typeof config === 'object' ? config : null;1834
1835if (!data) {1836data = new Dropdown(this, _config);1837$(this).data(DATA_KEY$4, data);1838}1839
1840if (typeof config === 'string') {1841if (typeof data[config] === 'undefined') {1842throw new TypeError("No method named \"" + config + "\"");1843}1844
1845data[config]();1846}1847});1848};1849
1850Dropdown._clearMenus = function _clearMenus(event) {1851if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {1852return;1853}1854
1855var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));1856
1857for (var i = 0, len = toggles.length; i < len; i++) {1858var parent = Dropdown._getParentFromElement(toggles[i]);1859
1860var context = $(toggles[i]).data(DATA_KEY$4);1861var relatedTarget = {1862relatedTarget: toggles[i]1863};1864
1865if (event && event.type === 'click') {1866relatedTarget.clickEvent = event;1867}1868
1869if (!context) {1870continue;1871}1872
1873var dropdownMenu = context._menu;1874
1875if (!$(parent).hasClass(CLASS_NAME_SHOW$2)) {1876continue;1877}1878
1879if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {1880continue;1881}1882
1883var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);1884$(parent).trigger(hideEvent);1885
1886if (hideEvent.isDefaultPrevented()) {1887continue;1888} // If this is a touch-enabled device we remove the extra1889// empty mouseover listeners we added for iOS support1890
1891
1892if ('ontouchstart' in document.documentElement) {1893$(document.body).children().off('mouseover', null, $.noop);1894}1895
1896toggles[i].setAttribute('aria-expanded', 'false');1897
1898if (context._popper) {1899context._popper.destroy();1900}1901
1902$(dropdownMenu).removeClass(CLASS_NAME_SHOW$2);1903$(parent).removeClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));1904}1905};1906
1907Dropdown._getParentFromElement = function _getParentFromElement(element) {1908var parent;1909var selector = Util.getSelectorFromElement(element);1910
1911if (selector) {1912parent = document.querySelector(selector);1913}1914
1915return parent || element.parentNode;1916} // eslint-disable-next-line complexity1917;1918
1919Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {1920// If not input/textarea:1921// - And not a key in REGEXP_KEYDOWN => not a dropdown command1922// If input/textarea:1923// - If space key => not a dropdown command1924// - If key is other than escape1925// - If key is not up or down => not a dropdown command1926// - If trigger inside the menu => not a dropdown command1927if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {1928return;1929}1930
1931if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {1932return;1933}1934
1935var parent = Dropdown._getParentFromElement(this);1936
1937var isActive = $(parent).hasClass(CLASS_NAME_SHOW$2);1938
1939if (!isActive && event.which === ESCAPE_KEYCODE) {1940return;1941}1942
1943event.preventDefault();1944event.stopPropagation();1945
1946if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {1947if (event.which === ESCAPE_KEYCODE) {1948$(parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');1949}1950
1951$(this).trigger('click');1952return;1953}1954
1955var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {1956return $(item).is(':visible');1957});1958
1959if (items.length === 0) {1960return;1961}1962
1963var index = items.indexOf(event.target);1964
1965if (event.which === ARROW_UP_KEYCODE && index > 0) {1966// Up1967index--;1968}1969
1970if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {1971// Down1972index++;1973}1974
1975if (index < 0) {1976index = 0;1977}1978
1979items[index].focus();1980};1981
1982_createClass(Dropdown, null, [{1983key: "VERSION",1984get: function get() {1985return VERSION$4;1986}1987}, {1988key: "Default",1989get: function get() {1990return Default$2;1991}1992}, {1993key: "DefaultType",1994get: function get() {1995return DefaultType$2;1996}1997}]);1998
1999return Dropdown;2000}();2001/**2002* ------------------------------------------------------------------------
2003* Data Api implementation
2004* ------------------------------------------------------------------------
2005*/
2006
2007
2008$(document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {2009event.preventDefault();2010event.stopPropagation();2011
2012Dropdown._jQueryInterface.call($(this), 'toggle');2013}).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {2014e.stopPropagation();2015});2016/**2017* ------------------------------------------------------------------------
2018* jQuery
2019* ------------------------------------------------------------------------
2020*/
2021
2022$.fn[NAME$4] = Dropdown._jQueryInterface;2023$.fn[NAME$4].Constructor = Dropdown;2024
2025$.fn[NAME$4].noConflict = function () {2026$.fn[NAME$4] = JQUERY_NO_CONFLICT$4;2027return Dropdown._jQueryInterface;2028};2029
2030/**2031* ------------------------------------------------------------------------
2032* Constants
2033* ------------------------------------------------------------------------
2034*/
2035
2036var NAME$5 = 'modal';2037var VERSION$5 = '4.5.2';2038var DATA_KEY$5 = 'bs.modal';2039var EVENT_KEY$5 = "." + DATA_KEY$5;2040var DATA_API_KEY$5 = '.data-api';2041var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];2042var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key2043
2044var Default$3 = {2045backdrop: true,2046keyboard: true,2047focus: true,2048show: true2049};2050var DefaultType$3 = {2051backdrop: '(boolean|string)',2052keyboard: 'boolean',2053focus: 'boolean',2054show: 'boolean'2055};2056var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;2057var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;2058var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;2059var EVENT_SHOW$2 = "show" + EVENT_KEY$5;2060var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;2061var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;2062var EVENT_RESIZE = "resize" + EVENT_KEY$5;2063var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;2064var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;2065var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;2066var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;2067var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;2068var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';2069var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';2070var CLASS_NAME_BACKDROP = 'modal-backdrop';2071var CLASS_NAME_OPEN = 'modal-open';2072var CLASS_NAME_FADE$1 = 'fade';2073var CLASS_NAME_SHOW$3 = 'show';2074var CLASS_NAME_STATIC = 'modal-static';2075var SELECTOR_DIALOG = '.modal-dialog';2076var SELECTOR_MODAL_BODY = '.modal-body';2077var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]';2078var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';2079var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';2080var SELECTOR_STICKY_CONTENT = '.sticky-top';2081/**2082* ------------------------------------------------------------------------
2083* Class Definition
2084* ------------------------------------------------------------------------
2085*/
2086
2087var Modal = /*#__PURE__*/function () {2088function Modal(element, config) {2089this._config = this._getConfig(config);2090this._element = element;2091this._dialog = element.querySelector(SELECTOR_DIALOG);2092this._backdrop = null;2093this._isShown = false;2094this._isBodyOverflowing = false;2095this._ignoreBackdropClick = false;2096this._isTransitioning = false;2097this._scrollbarWidth = 0;2098} // Getters2099
2100
2101var _proto = Modal.prototype;2102
2103// Public2104_proto.toggle = function toggle(relatedTarget) {2105return this._isShown ? this.hide() : this.show(relatedTarget);2106};2107
2108_proto.show = function show(relatedTarget) {2109var _this = this;2110
2111if (this._isShown || this._isTransitioning) {2112return;2113}2114
2115if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {2116this._isTransitioning = true;2117}2118
2119var showEvent = $.Event(EVENT_SHOW$2, {2120relatedTarget: relatedTarget2121});2122$(this._element).trigger(showEvent);2123
2124if (this._isShown || showEvent.isDefaultPrevented()) {2125return;2126}2127
2128this._isShown = true;2129
2130this._checkScrollbar();2131
2132this._setScrollbar();2133
2134this._adjustDialog();2135
2136this._setEscapeEvent();2137
2138this._setResizeEvent();2139
2140$(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {2141return _this.hide(event);2142});2143$(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {2144$(_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {2145if ($(event.target).is(_this._element)) {2146_this._ignoreBackdropClick = true;2147}2148});2149});2150
2151this._showBackdrop(function () {2152return _this._showElement(relatedTarget);2153});2154};2155
2156_proto.hide = function hide(event) {2157var _this2 = this;2158
2159if (event) {2160event.preventDefault();2161}2162
2163if (!this._isShown || this._isTransitioning) {2164return;2165}2166
2167var hideEvent = $.Event(EVENT_HIDE$2);2168$(this._element).trigger(hideEvent);2169
2170if (!this._isShown || hideEvent.isDefaultPrevented()) {2171return;2172}2173
2174this._isShown = false;2175var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);2176
2177if (transition) {2178this._isTransitioning = true;2179}2180
2181this._setEscapeEvent();2182
2183this._setResizeEvent();2184
2185$(document).off(EVENT_FOCUSIN);2186$(this._element).removeClass(CLASS_NAME_SHOW$3);2187$(this._element).off(EVENT_CLICK_DISMISS);2188$(this._dialog).off(EVENT_MOUSEDOWN_DISMISS);2189
2190if (transition) {2191var transitionDuration = Util.getTransitionDurationFromElement(this._element);2192$(this._element).one(Util.TRANSITION_END, function (event) {2193return _this2._hideModal(event);2194}).emulateTransitionEnd(transitionDuration);2195} else {2196this._hideModal();2197}2198};2199
2200_proto.dispose = function dispose() {2201[window, this._element, this._dialog].forEach(function (htmlElement) {2202return $(htmlElement).off(EVENT_KEY$5);2203});2204/**2205* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
2206* Do not move `document` in `htmlElements` array
2207* It will remove `EVENT_CLICK_DATA_API` event that should remain
2208*/
2209
2210$(document).off(EVENT_FOCUSIN);2211$.removeData(this._element, DATA_KEY$5);2212this._config = null;2213this._element = null;2214this._dialog = null;2215this._backdrop = null;2216this._isShown = null;2217this._isBodyOverflowing = null;2218this._ignoreBackdropClick = null;2219this._isTransitioning = null;2220this._scrollbarWidth = null;2221};2222
2223_proto.handleUpdate = function handleUpdate() {2224this._adjustDialog();2225} // Private2226;2227
2228_proto._getConfig = function _getConfig(config) {2229config = _extends({}, Default$3, config);2230Util.typeCheckConfig(NAME$5, config, DefaultType$3);2231return config;2232};2233
2234_proto._triggerBackdropTransition = function _triggerBackdropTransition() {2235var _this3 = this;2236
2237if (this._config.backdrop === 'static') {2238var hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED);2239$(this._element).trigger(hideEventPrevented);2240
2241if (hideEventPrevented.defaultPrevented) {2242return;2243}2244
2245var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;2246
2247if (!isModalOverflowing) {2248this._element.style.overflowY = 'hidden';2249}2250
2251this._element.classList.add(CLASS_NAME_STATIC);2252
2253var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);2254$(this._element).off(Util.TRANSITION_END);2255$(this._element).one(Util.TRANSITION_END, function () {2256_this3._element.classList.remove(CLASS_NAME_STATIC);2257
2258if (!isModalOverflowing) {2259$(_this3._element).one(Util.TRANSITION_END, function () {2260_this3._element.style.overflowY = '';2261}).emulateTransitionEnd(_this3._element, modalTransitionDuration);2262}2263}).emulateTransitionEnd(modalTransitionDuration);2264
2265this._element.focus();2266} else {2267this.hide();2268}2269};2270
2271_proto._showElement = function _showElement(relatedTarget) {2272var _this4 = this;2273
2274var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);2275var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;2276
2277if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {2278// Don't move modal's DOM position2279document.body.appendChild(this._element);2280}2281
2282this._element.style.display = 'block';2283
2284this._element.removeAttribute('aria-hidden');2285
2286this._element.setAttribute('aria-modal', true);2287
2288this._element.setAttribute('role', 'dialog');2289
2290if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {2291modalBody.scrollTop = 0;2292} else {2293this._element.scrollTop = 0;2294}2295
2296if (transition) {2297Util.reflow(this._element);2298}2299
2300$(this._element).addClass(CLASS_NAME_SHOW$3);2301
2302if (this._config.focus) {2303this._enforceFocus();2304}2305
2306var shownEvent = $.Event(EVENT_SHOWN$2, {2307relatedTarget: relatedTarget2308});2309
2310var transitionComplete = function transitionComplete() {2311if (_this4._config.focus) {2312_this4._element.focus();2313}2314
2315_this4._isTransitioning = false;2316$(_this4._element).trigger(shownEvent);2317};2318
2319if (transition) {2320var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);2321$(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);2322} else {2323transitionComplete();2324}2325};2326
2327_proto._enforceFocus = function _enforceFocus() {2328var _this5 = this;2329
2330$(document).off(EVENT_FOCUSIN) // Guard against infinite focus loop2331.on(EVENT_FOCUSIN, function (event) {2332if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {2333_this5._element.focus();2334}2335});2336};2337
2338_proto._setEscapeEvent = function _setEscapeEvent() {2339var _this6 = this;2340
2341if (this._isShown) {2342$(this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {2343if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {2344event.preventDefault();2345
2346_this6.hide();2347} else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {2348_this6._triggerBackdropTransition();2349}2350});2351} else if (!this._isShown) {2352$(this._element).off(EVENT_KEYDOWN_DISMISS);2353}2354};2355
2356_proto._setResizeEvent = function _setResizeEvent() {2357var _this7 = this;2358
2359if (this._isShown) {2360$(window).on(EVENT_RESIZE, function (event) {2361return _this7.handleUpdate(event);2362});2363} else {2364$(window).off(EVENT_RESIZE);2365}2366};2367
2368_proto._hideModal = function _hideModal() {2369var _this8 = this;2370
2371this._element.style.display = 'none';2372
2373this._element.setAttribute('aria-hidden', true);2374
2375this._element.removeAttribute('aria-modal');2376
2377this._element.removeAttribute('role');2378
2379this._isTransitioning = false;2380
2381this._showBackdrop(function () {2382$(document.body).removeClass(CLASS_NAME_OPEN);2383
2384_this8._resetAdjustments();2385
2386_this8._resetScrollbar();2387
2388$(_this8._element).trigger(EVENT_HIDDEN$2);2389});2390};2391
2392_proto._removeBackdrop = function _removeBackdrop() {2393if (this._backdrop) {2394$(this._backdrop).remove();2395this._backdrop = null;2396}2397};2398
2399_proto._showBackdrop = function _showBackdrop(callback) {2400var _this9 = this;2401
2402var animate = $(this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';2403
2404if (this._isShown && this._config.backdrop) {2405this._backdrop = document.createElement('div');2406this._backdrop.className = CLASS_NAME_BACKDROP;2407
2408if (animate) {2409this._backdrop.classList.add(animate);2410}2411
2412$(this._backdrop).appendTo(document.body);2413$(this._element).on(EVENT_CLICK_DISMISS, function (event) {2414if (_this9._ignoreBackdropClick) {2415_this9._ignoreBackdropClick = false;2416return;2417}2418
2419if (event.target !== event.currentTarget) {2420return;2421}2422
2423_this9._triggerBackdropTransition();2424});2425
2426if (animate) {2427Util.reflow(this._backdrop);2428}2429
2430$(this._backdrop).addClass(CLASS_NAME_SHOW$3);2431
2432if (!callback) {2433return;2434}2435
2436if (!animate) {2437callback();2438return;2439}2440
2441var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);2442$(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);2443} else if (!this._isShown && this._backdrop) {2444$(this._backdrop).removeClass(CLASS_NAME_SHOW$3);2445
2446var callbackRemove = function callbackRemove() {2447_this9._removeBackdrop();2448
2449if (callback) {2450callback();2451}2452};2453
2454if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {2455var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);2456
2457$(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);2458} else {2459callbackRemove();2460}2461} else if (callback) {2462callback();2463}2464} // ----------------------------------------------------------------------2465// the following methods are used to handle overflowing modals2466// todo (fat): these should probably be refactored out of modal.js2467// ----------------------------------------------------------------------2468;2469
2470_proto._adjustDialog = function _adjustDialog() {2471var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;2472
2473if (!this._isBodyOverflowing && isModalOverflowing) {2474this._element.style.paddingLeft = this._scrollbarWidth + "px";2475}2476
2477if (this._isBodyOverflowing && !isModalOverflowing) {2478this._element.style.paddingRight = this._scrollbarWidth + "px";2479}2480};2481
2482_proto._resetAdjustments = function _resetAdjustments() {2483this._element.style.paddingLeft = '';2484this._element.style.paddingRight = '';2485};2486
2487_proto._checkScrollbar = function _checkScrollbar() {2488var rect = document.body.getBoundingClientRect();2489this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;2490this._scrollbarWidth = this._getScrollbarWidth();2491};2492
2493_proto._setScrollbar = function _setScrollbar() {2494var _this10 = this;2495
2496if (this._isBodyOverflowing) {2497// Note: DOMNode.style.paddingRight returns the actual value or '' if not set2498// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set2499var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));2500var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding2501
2502$(fixedContent).each(function (index, element) {2503var actualPadding = element.style.paddingRight;2504var calculatedPadding = $(element).css('padding-right');2505$(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");2506}); // Adjust sticky content margin2507
2508$(stickyContent).each(function (index, element) {2509var actualMargin = element.style.marginRight;2510var calculatedMargin = $(element).css('margin-right');2511$(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");2512}); // Adjust body padding2513
2514var actualPadding = document.body.style.paddingRight;2515var calculatedPadding = $(document.body).css('padding-right');2516$(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");2517}2518
2519$(document.body).addClass(CLASS_NAME_OPEN);2520};2521
2522_proto._resetScrollbar = function _resetScrollbar() {2523// Restore fixed content padding2524var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));2525$(fixedContent).each(function (index, element) {2526var padding = $(element).data('padding-right');2527$(element).removeData('padding-right');2528element.style.paddingRight = padding ? padding : '';2529}); // Restore sticky content2530
2531var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));2532$(elements).each(function (index, element) {2533var margin = $(element).data('margin-right');2534
2535if (typeof margin !== 'undefined') {2536$(element).css('margin-right', margin).removeData('margin-right');2537}2538}); // Restore body padding2539
2540var padding = $(document.body).data('padding-right');2541$(document.body).removeData('padding-right');2542document.body.style.paddingRight = padding ? padding : '';2543};2544
2545_proto._getScrollbarWidth = function _getScrollbarWidth() {2546// thx d.walsh2547var scrollDiv = document.createElement('div');2548scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;2549document.body.appendChild(scrollDiv);2550var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;2551document.body.removeChild(scrollDiv);2552return scrollbarWidth;2553} // Static2554;2555
2556Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {2557return this.each(function () {2558var data = $(this).data(DATA_KEY$5);2559
2560var _config = _extends({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});2561
2562if (!data) {2563data = new Modal(this, _config);2564$(this).data(DATA_KEY$5, data);2565}2566
2567if (typeof config === 'string') {2568if (typeof data[config] === 'undefined') {2569throw new TypeError("No method named \"" + config + "\"");2570}2571
2572data[config](relatedTarget);2573} else if (_config.show) {2574data.show(relatedTarget);2575}2576});2577};2578
2579_createClass(Modal, null, [{2580key: "VERSION",2581get: function get() {2582return VERSION$5;2583}2584}, {2585key: "Default",2586get: function get() {2587return Default$3;2588}2589}]);2590
2591return Modal;2592}();2593/**2594* ------------------------------------------------------------------------
2595* Data Api implementation
2596* ------------------------------------------------------------------------
2597*/
2598
2599
2600$(document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {2601var _this11 = this;2602
2603var target;2604var selector = Util.getSelectorFromElement(this);2605
2606if (selector) {2607target = document.querySelector(selector);2608}2609
2610var config = $(target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $(target).data(), $(this).data());2611
2612if (this.tagName === 'A' || this.tagName === 'AREA') {2613event.preventDefault();2614}2615
2616var $target = $(target).one(EVENT_SHOW$2, function (showEvent) {2617if (showEvent.isDefaultPrevented()) {2618// Only register focus restorer if modal will actually get shown2619return;2620}2621
2622$target.one(EVENT_HIDDEN$2, function () {2623if ($(_this11).is(':visible')) {2624_this11.focus();2625}2626});2627});2628
2629Modal._jQueryInterface.call($(target), config, this);2630});2631/**2632* ------------------------------------------------------------------------
2633* jQuery
2634* ------------------------------------------------------------------------
2635*/
2636
2637$.fn[NAME$5] = Modal._jQueryInterface;2638$.fn[NAME$5].Constructor = Modal;2639
2640$.fn[NAME$5].noConflict = function () {2641$.fn[NAME$5] = JQUERY_NO_CONFLICT$5;2642return Modal._jQueryInterface;2643};2644
2645/**2646* --------------------------------------------------------------------------
2647* Bootstrap (v4.5.2): tools/sanitizer.js
2648* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2649* --------------------------------------------------------------------------
2650*/
2651var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];2652var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;2653var DefaultWhitelist = {2654// Global attributes allowed on any supplied element below.2655'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],2656a: ['target', 'href', 'title', 'rel'],2657area: [],2658b: [],2659br: [],2660col: [],2661code: [],2662div: [],2663em: [],2664hr: [],2665h1: [],2666h2: [],2667h3: [],2668h4: [],2669h5: [],2670h6: [],2671i: [],2672img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],2673li: [],2674ol: [],2675p: [],2676pre: [],2677s: [],2678small: [],2679span: [],2680sub: [],2681sup: [],2682strong: [],2683u: [],2684ul: []2685};2686/**2687* A pattern that recognizes a commonly useful subset of URLs that are safe.
2688*
2689* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2690*/
2691
2692var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;2693/**2694* A pattern that matches safe data URLs. Only matches image, video and audio types.
2695*
2696* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2697*/
2698
2699var 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;2700
2701function allowedAttribute(attr, allowedAttributeList) {2702var attrName = attr.nodeName.toLowerCase();2703
2704if (allowedAttributeList.indexOf(attrName) !== -1) {2705if (uriAttrs.indexOf(attrName) !== -1) {2706return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));2707}2708
2709return true;2710}2711
2712var regExp = allowedAttributeList.filter(function (attrRegex) {2713return attrRegex instanceof RegExp;2714}); // Check if a regular expression validates the attribute.2715
2716for (var i = 0, len = regExp.length; i < len; i++) {2717if (attrName.match(regExp[i])) {2718return true;2719}2720}2721
2722return false;2723}2724
2725function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {2726if (unsafeHtml.length === 0) {2727return unsafeHtml;2728}2729
2730if (sanitizeFn && typeof sanitizeFn === 'function') {2731return sanitizeFn(unsafeHtml);2732}2733
2734var domParser = new window.DOMParser();2735var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');2736var whitelistKeys = Object.keys(whiteList);2737var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));2738
2739var _loop = function _loop(i, len) {2740var el = elements[i];2741var elName = el.nodeName.toLowerCase();2742
2743if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {2744el.parentNode.removeChild(el);2745return "continue";2746}2747
2748var attributeList = [].slice.call(el.attributes);2749var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);2750attributeList.forEach(function (attr) {2751if (!allowedAttribute(attr, whitelistedAttributes)) {2752el.removeAttribute(attr.nodeName);2753}2754});2755};2756
2757for (var i = 0, len = elements.length; i < len; i++) {2758var _ret = _loop(i);2759
2760if (_ret === "continue") continue;2761}2762
2763return createdDocument.body.innerHTML;2764}2765
2766/**2767* ------------------------------------------------------------------------
2768* Constants
2769* ------------------------------------------------------------------------
2770*/
2771
2772var NAME$6 = 'tooltip';2773var VERSION$6 = '4.5.2';2774var DATA_KEY$6 = 'bs.tooltip';2775var EVENT_KEY$6 = "." + DATA_KEY$6;2776var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];2777var CLASS_PREFIX = 'bs-tooltip';2778var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');2779var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];2780var DefaultType$4 = {2781animation: 'boolean',2782template: 'string',2783title: '(string|element|function)',2784trigger: 'string',2785delay: '(number|object)',2786html: 'boolean',2787selector: '(string|boolean)',2788placement: '(string|function)',2789offset: '(number|string|function)',2790container: '(string|element|boolean)',2791fallbackPlacement: '(string|array)',2792boundary: '(string|element)',2793sanitize: 'boolean',2794sanitizeFn: '(null|function)',2795whiteList: 'object',2796popperConfig: '(null|object)'2797};2798var AttachmentMap = {2799AUTO: 'auto',2800TOP: 'top',2801RIGHT: 'right',2802BOTTOM: 'bottom',2803LEFT: 'left'2804};2805var Default$4 = {2806animation: true,2807template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',2808trigger: 'hover focus',2809title: '',2810delay: 0,2811html: false,2812selector: false,2813placement: 'top',2814offset: 0,2815container: false,2816fallbackPlacement: 'flip',2817boundary: 'scrollParent',2818sanitize: true,2819sanitizeFn: null,2820whiteList: DefaultWhitelist,2821popperConfig: null2822};2823var HOVER_STATE_SHOW = 'show';2824var HOVER_STATE_OUT = 'out';2825var Event = {2826HIDE: "hide" + EVENT_KEY$6,2827HIDDEN: "hidden" + EVENT_KEY$6,2828SHOW: "show" + EVENT_KEY$6,2829SHOWN: "shown" + EVENT_KEY$6,2830INSERTED: "inserted" + EVENT_KEY$6,2831CLICK: "click" + EVENT_KEY$6,2832FOCUSIN: "focusin" + EVENT_KEY$6,2833FOCUSOUT: "focusout" + EVENT_KEY$6,2834MOUSEENTER: "mouseenter" + EVENT_KEY$6,2835MOUSELEAVE: "mouseleave" + EVENT_KEY$62836};2837var CLASS_NAME_FADE$2 = 'fade';2838var CLASS_NAME_SHOW$4 = 'show';2839var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';2840var SELECTOR_ARROW = '.arrow';2841var TRIGGER_HOVER = 'hover';2842var TRIGGER_FOCUS = 'focus';2843var TRIGGER_CLICK = 'click';2844var TRIGGER_MANUAL = 'manual';2845/**2846* ------------------------------------------------------------------------
2847* Class Definition
2848* ------------------------------------------------------------------------
2849*/
2850
2851var Tooltip = /*#__PURE__*/function () {2852function Tooltip(element, config) {2853if (typeof Popper === 'undefined') {2854throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');2855} // private2856
2857
2858this._isEnabled = true;2859this._timeout = 0;2860this._hoverState = '';2861this._activeTrigger = {};2862this._popper = null; // Protected2863
2864this.element = element;2865this.config = this._getConfig(config);2866this.tip = null;2867
2868this._setListeners();2869} // Getters2870
2871
2872var _proto = Tooltip.prototype;2873
2874// Public2875_proto.enable = function enable() {2876this._isEnabled = true;2877};2878
2879_proto.disable = function disable() {2880this._isEnabled = false;2881};2882
2883_proto.toggleEnabled = function toggleEnabled() {2884this._isEnabled = !this._isEnabled;2885};2886
2887_proto.toggle = function toggle(event) {2888if (!this._isEnabled) {2889return;2890}2891
2892if (event) {2893var dataKey = this.constructor.DATA_KEY;2894var context = $(event.currentTarget).data(dataKey);2895
2896if (!context) {2897context = new this.constructor(event.currentTarget, this._getDelegateConfig());2898$(event.currentTarget).data(dataKey, context);2899}2900
2901context._activeTrigger.click = !context._activeTrigger.click;2902
2903if (context._isWithActiveTrigger()) {2904context._enter(null, context);2905} else {2906context._leave(null, context);2907}2908} else {2909if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {2910this._leave(null, this);2911
2912return;2913}2914
2915this._enter(null, this);2916}2917};2918
2919_proto.dispose = function dispose() {2920clearTimeout(this._timeout);2921$.removeData(this.element, this.constructor.DATA_KEY);2922$(this.element).off(this.constructor.EVENT_KEY);2923$(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);2924
2925if (this.tip) {2926$(this.tip).remove();2927}2928
2929this._isEnabled = null;2930this._timeout = null;2931this._hoverState = null;2932this._activeTrigger = null;2933
2934if (this._popper) {2935this._popper.destroy();2936}2937
2938this._popper = null;2939this.element = null;2940this.config = null;2941this.tip = null;2942};2943
2944_proto.show = function show() {2945var _this = this;2946
2947if ($(this.element).css('display') === 'none') {2948throw new Error('Please use show on visible elements');2949}2950
2951var showEvent = $.Event(this.constructor.Event.SHOW);2952
2953if (this.isWithContent() && this._isEnabled) {2954$(this.element).trigger(showEvent);2955var shadowRoot = Util.findShadowRoot(this.element);2956var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);2957
2958if (showEvent.isDefaultPrevented() || !isInTheDom) {2959return;2960}2961
2962var tip = this.getTipElement();2963var tipId = Util.getUID(this.constructor.NAME);2964tip.setAttribute('id', tipId);2965this.element.setAttribute('aria-describedby', tipId);2966this.setContent();2967
2968if (this.config.animation) {2969$(tip).addClass(CLASS_NAME_FADE$2);2970}2971
2972var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;2973
2974var attachment = this._getAttachment(placement);2975
2976this.addAttachmentClass(attachment);2977
2978var container = this._getContainer();2979
2980$(tip).data(this.constructor.DATA_KEY, this);2981
2982if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {2983$(tip).appendTo(container);2984}2985
2986$(this.element).trigger(this.constructor.Event.INSERTED);2987this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));2988$(tip).addClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we add extra2989// empty mouseover listeners to the body's immediate children;2990// only needed because of broken event delegation on iOS2991// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html2992
2993if ('ontouchstart' in document.documentElement) {2994$(document.body).children().on('mouseover', null, $.noop);2995}2996
2997var complete = function complete() {2998if (_this.config.animation) {2999_this._fixTransition();3000}3001
3002var prevHoverState = _this._hoverState;3003_this._hoverState = null;3004$(_this.element).trigger(_this.constructor.Event.SHOWN);3005
3006if (prevHoverState === HOVER_STATE_OUT) {3007_this._leave(null, _this);3008}3009};3010
3011if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {3012var transitionDuration = Util.getTransitionDurationFromElement(this.tip);3013$(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);3014} else {3015complete();3016}3017}3018};3019
3020_proto.hide = function hide(callback) {3021var _this2 = this;3022
3023var tip = this.getTipElement();3024var hideEvent = $.Event(this.constructor.Event.HIDE);3025
3026var complete = function complete() {3027if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {3028tip.parentNode.removeChild(tip);3029}3030
3031_this2._cleanTipClass();3032
3033_this2.element.removeAttribute('aria-describedby');3034
3035$(_this2.element).trigger(_this2.constructor.Event.HIDDEN);3036
3037if (_this2._popper !== null) {3038_this2._popper.destroy();3039}3040
3041if (callback) {3042callback();3043}3044};3045
3046$(this.element).trigger(hideEvent);3047
3048if (hideEvent.isDefaultPrevented()) {3049return;3050}3051
3052$(tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra3053// empty mouseover listeners we added for iOS support3054
3055if ('ontouchstart' in document.documentElement) {3056$(document.body).children().off('mouseover', null, $.noop);3057}3058
3059this._activeTrigger[TRIGGER_CLICK] = false;3060this._activeTrigger[TRIGGER_FOCUS] = false;3061this._activeTrigger[TRIGGER_HOVER] = false;3062
3063if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {3064var transitionDuration = Util.getTransitionDurationFromElement(tip);3065$(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);3066} else {3067complete();3068}3069
3070this._hoverState = '';3071};3072
3073_proto.update = function update() {3074if (this._popper !== null) {3075this._popper.scheduleUpdate();3076}3077} // Protected3078;3079
3080_proto.isWithContent = function isWithContent() {3081return Boolean(this.getTitle());3082};3083
3084_proto.addAttachmentClass = function addAttachmentClass(attachment) {3085$(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);3086};3087
3088_proto.getTipElement = function getTipElement() {3089this.tip = this.tip || $(this.config.template)[0];3090return this.tip;3091};3092
3093_proto.setContent = function setContent() {3094var tip = this.getTipElement();3095this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());3096$(tip).removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$4);3097};3098
3099_proto.setElementContent = function setElementContent($element, content) {3100if (typeof content === 'object' && (content.nodeType || content.jquery)) {3101// Content is a DOM node or a jQuery3102if (this.config.html) {3103if (!$(content).parent().is($element)) {3104$element.empty().append(content);3105}3106} else {3107$element.text($(content).text());3108}3109
3110return;3111}3112
3113if (this.config.html) {3114if (this.config.sanitize) {3115content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);3116}3117
3118$element.html(content);3119} else {3120$element.text(content);3121}3122};3123
3124_proto.getTitle = function getTitle() {3125var title = this.element.getAttribute('data-original-title');3126
3127if (!title) {3128title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;3129}3130
3131return title;3132} // Private3133;3134
3135_proto._getPopperConfig = function _getPopperConfig(attachment) {3136var _this3 = this;3137
3138var defaultBsConfig = {3139placement: attachment,3140modifiers: {3141offset: this._getOffset(),3142flip: {3143behavior: this.config.fallbackPlacement3144},3145arrow: {3146element: SELECTOR_ARROW3147},3148preventOverflow: {3149boundariesElement: this.config.boundary3150}3151},3152onCreate: function onCreate(data) {3153if (data.originalPlacement !== data.placement) {3154_this3._handlePopperPlacementChange(data);3155}3156},3157onUpdate: function onUpdate(data) {3158return _this3._handlePopperPlacementChange(data);3159}3160};3161return _extends({}, defaultBsConfig, this.config.popperConfig);3162};3163
3164_proto._getOffset = function _getOffset() {3165var _this4 = this;3166
3167var offset = {};3168
3169if (typeof this.config.offset === 'function') {3170offset.fn = function (data) {3171data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});3172return data;3173};3174} else {3175offset.offset = this.config.offset;3176}3177
3178return offset;3179};3180
3181_proto._getContainer = function _getContainer() {3182if (this.config.container === false) {3183return document.body;3184}3185
3186if (Util.isElement(this.config.container)) {3187return $(this.config.container);3188}3189
3190return $(document).find(this.config.container);3191};3192
3193_proto._getAttachment = function _getAttachment(placement) {3194return AttachmentMap[placement.toUpperCase()];3195};3196
3197_proto._setListeners = function _setListeners() {3198var _this5 = this;3199
3200var triggers = this.config.trigger.split(' ');3201triggers.forEach(function (trigger) {3202if (trigger === 'click') {3203$(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {3204return _this5.toggle(event);3205});3206} else if (trigger !== TRIGGER_MANUAL) {3207var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;3208var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;3209$(_this5.element).on(eventIn, _this5.config.selector, function (event) {3210return _this5._enter(event);3211}).on(eventOut, _this5.config.selector, function (event) {3212return _this5._leave(event);3213});3214}3215});3216
3217this._hideModalHandler = function () {3218if (_this5.element) {3219_this5.hide();3220}3221};3222
3223$(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);3224
3225if (this.config.selector) {3226this.config = _extends({}, this.config, {3227trigger: 'manual',3228selector: ''3229});3230} else {3231this._fixTitle();3232}3233};3234
3235_proto._fixTitle = function _fixTitle() {3236var titleType = typeof this.element.getAttribute('data-original-title');3237
3238if (this.element.getAttribute('title') || titleType !== 'string') {3239this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');3240this.element.setAttribute('title', '');3241}3242};3243
3244_proto._enter = function _enter(event, context) {3245var dataKey = this.constructor.DATA_KEY;3246context = context || $(event.currentTarget).data(dataKey);3247
3248if (!context) {3249context = new this.constructor(event.currentTarget, this._getDelegateConfig());3250$(event.currentTarget).data(dataKey, context);3251}3252
3253if (event) {3254context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;3255}3256
3257if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {3258context._hoverState = HOVER_STATE_SHOW;3259return;3260}3261
3262clearTimeout(context._timeout);3263context._hoverState = HOVER_STATE_SHOW;3264
3265if (!context.config.delay || !context.config.delay.show) {3266context.show();3267return;3268}3269
3270context._timeout = setTimeout(function () {3271if (context._hoverState === HOVER_STATE_SHOW) {3272context.show();3273}3274}, context.config.delay.show);3275};3276
3277_proto._leave = function _leave(event, context) {3278var dataKey = this.constructor.DATA_KEY;3279context = context || $(event.currentTarget).data(dataKey);3280
3281if (!context) {3282context = new this.constructor(event.currentTarget, this._getDelegateConfig());3283$(event.currentTarget).data(dataKey, context);3284}3285
3286if (event) {3287context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;3288}3289
3290if (context._isWithActiveTrigger()) {3291return;3292}3293
3294clearTimeout(context._timeout);3295context._hoverState = HOVER_STATE_OUT;3296
3297if (!context.config.delay || !context.config.delay.hide) {3298context.hide();3299return;3300}3301
3302context._timeout = setTimeout(function () {3303if (context._hoverState === HOVER_STATE_OUT) {3304context.hide();3305}3306}, context.config.delay.hide);3307};3308
3309_proto._isWithActiveTrigger = function _isWithActiveTrigger() {3310for (var trigger in this._activeTrigger) {3311if (this._activeTrigger[trigger]) {3312return true;3313}3314}3315
3316return false;3317};3318
3319_proto._getConfig = function _getConfig(config) {3320var dataAttributes = $(this.element).data();3321Object.keys(dataAttributes).forEach(function (dataAttr) {3322if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {3323delete dataAttributes[dataAttr];3324}3325});3326config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});3327
3328if (typeof config.delay === 'number') {3329config.delay = {3330show: config.delay,3331hide: config.delay3332};3333}3334
3335if (typeof config.title === 'number') {3336config.title = config.title.toString();3337}3338
3339if (typeof config.content === 'number') {3340config.content = config.content.toString();3341}3342
3343Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);3344
3345if (config.sanitize) {3346config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);3347}3348
3349return config;3350};3351
3352_proto._getDelegateConfig = function _getDelegateConfig() {3353var config = {};3354
3355if (this.config) {3356for (var key in this.config) {3357if (this.constructor.Default[key] !== this.config[key]) {3358config[key] = this.config[key];3359}3360}3361}3362
3363return config;3364};3365
3366_proto._cleanTipClass = function _cleanTipClass() {3367var $tip = $(this.getTipElement());3368var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);3369
3370if (tabClass !== null && tabClass.length) {3371$tip.removeClass(tabClass.join(''));3372}3373};3374
3375_proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {3376this.tip = popperData.instance.popper;3377
3378this._cleanTipClass();3379
3380this.addAttachmentClass(this._getAttachment(popperData.placement));3381};3382
3383_proto._fixTransition = function _fixTransition() {3384var tip = this.getTipElement();3385var initConfigAnimation = this.config.animation;3386
3387if (tip.getAttribute('x-placement') !== null) {3388return;3389}3390
3391$(tip).removeClass(CLASS_NAME_FADE$2);3392this.config.animation = false;3393this.hide();3394this.show();3395this.config.animation = initConfigAnimation;3396} // Static3397;3398
3399Tooltip._jQueryInterface = function _jQueryInterface(config) {3400return this.each(function () {3401var data = $(this).data(DATA_KEY$6);3402
3403var _config = typeof config === 'object' && config;3404
3405if (!data && /dispose|hide/.test(config)) {3406return;3407}3408
3409if (!data) {3410data = new Tooltip(this, _config);3411$(this).data(DATA_KEY$6, data);3412}3413
3414if (typeof config === 'string') {3415if (typeof data[config] === 'undefined') {3416throw new TypeError("No method named \"" + config + "\"");3417}3418
3419data[config]();3420}3421});3422};3423
3424_createClass(Tooltip, null, [{3425key: "VERSION",3426get: function get() {3427return VERSION$6;3428}3429}, {3430key: "Default",3431get: function get() {3432return Default$4;3433}3434}, {3435key: "NAME",3436get: function get() {3437return NAME$6;3438}3439}, {3440key: "DATA_KEY",3441get: function get() {3442return DATA_KEY$6;3443}3444}, {3445key: "Event",3446get: function get() {3447return Event;3448}3449}, {3450key: "EVENT_KEY",3451get: function get() {3452return EVENT_KEY$6;3453}3454}, {3455key: "DefaultType",3456get: function get() {3457return DefaultType$4;3458}3459}]);3460
3461return Tooltip;3462}();3463/**3464* ------------------------------------------------------------------------
3465* jQuery
3466* ------------------------------------------------------------------------
3467*/
3468
3469
3470$.fn[NAME$6] = Tooltip._jQueryInterface;3471$.fn[NAME$6].Constructor = Tooltip;3472
3473$.fn[NAME$6].noConflict = function () {3474$.fn[NAME$6] = JQUERY_NO_CONFLICT$6;3475return Tooltip._jQueryInterface;3476};3477
3478/**3479* ------------------------------------------------------------------------
3480* Constants
3481* ------------------------------------------------------------------------
3482*/
3483
3484var NAME$7 = 'popover';3485var VERSION$7 = '4.5.2';3486var DATA_KEY$7 = 'bs.popover';3487var EVENT_KEY$7 = "." + DATA_KEY$7;3488var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];3489var CLASS_PREFIX$1 = 'bs-popover';3490var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');3491
3492var Default$5 = _extends({}, Tooltip.Default, {3493placement: 'right',3494trigger: 'click',3495content: '',3496template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'3497});3498
3499var DefaultType$5 = _extends({}, Tooltip.DefaultType, {3500content: '(string|element|function)'3501});3502
3503var CLASS_NAME_FADE$3 = 'fade';3504var CLASS_NAME_SHOW$5 = 'show';3505var SELECTOR_TITLE = '.popover-header';3506var SELECTOR_CONTENT = '.popover-body';3507var Event$1 = {3508HIDE: "hide" + EVENT_KEY$7,3509HIDDEN: "hidden" + EVENT_KEY$7,3510SHOW: "show" + EVENT_KEY$7,3511SHOWN: "shown" + EVENT_KEY$7,3512INSERTED: "inserted" + EVENT_KEY$7,3513CLICK: "click" + EVENT_KEY$7,3514FOCUSIN: "focusin" + EVENT_KEY$7,3515FOCUSOUT: "focusout" + EVENT_KEY$7,3516MOUSEENTER: "mouseenter" + EVENT_KEY$7,3517MOUSELEAVE: "mouseleave" + EVENT_KEY$73518};3519/**3520* ------------------------------------------------------------------------
3521* Class Definition
3522* ------------------------------------------------------------------------
3523*/
3524
3525var Popover = /*#__PURE__*/function (_Tooltip) {3526_inheritsLoose(Popover, _Tooltip);3527
3528function Popover() {3529return _Tooltip.apply(this, arguments) || this;3530}3531
3532var _proto = Popover.prototype;3533
3534// Overrides3535_proto.isWithContent = function isWithContent() {3536return this.getTitle() || this._getContent();3537};3538
3539_proto.addAttachmentClass = function addAttachmentClass(attachment) {3540$(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);3541};3542
3543_proto.getTipElement = function getTipElement() {3544this.tip = this.tip || $(this.config.template)[0];3545return this.tip;3546};3547
3548_proto.setContent = function setContent() {3549var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events3550
3551this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());3552
3553var content = this._getContent();3554
3555if (typeof content === 'function') {3556content = content.call(this.element);3557}3558
3559this.setElementContent($tip.find(SELECTOR_CONTENT), content);3560$tip.removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$5);3561} // Private3562;3563
3564_proto._getContent = function _getContent() {3565return this.element.getAttribute('data-content') || this.config.content;3566};3567
3568_proto._cleanTipClass = function _cleanTipClass() {3569var $tip = $(this.getTipElement());3570var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);3571
3572if (tabClass !== null && tabClass.length > 0) {3573$tip.removeClass(tabClass.join(''));3574}3575} // Static3576;3577
3578Popover._jQueryInterface = function _jQueryInterface(config) {3579return this.each(function () {3580var data = $(this).data(DATA_KEY$7);3581
3582var _config = typeof config === 'object' ? config : null;3583
3584if (!data && /dispose|hide/.test(config)) {3585return;3586}3587
3588if (!data) {3589data = new Popover(this, _config);3590$(this).data(DATA_KEY$7, data);3591}3592
3593if (typeof config === 'string') {3594if (typeof data[config] === 'undefined') {3595throw new TypeError("No method named \"" + config + "\"");3596}3597
3598data[config]();3599}3600});3601};3602
3603_createClass(Popover, null, [{3604key: "VERSION",3605// Getters3606get: function get() {3607return VERSION$7;3608}3609}, {3610key: "Default",3611get: function get() {3612return Default$5;3613}3614}, {3615key: "NAME",3616get: function get() {3617return NAME$7;3618}3619}, {3620key: "DATA_KEY",3621get: function get() {3622return DATA_KEY$7;3623}3624}, {3625key: "Event",3626get: function get() {3627return Event$1;3628}3629}, {3630key: "EVENT_KEY",3631get: function get() {3632return EVENT_KEY$7;3633}3634}, {3635key: "DefaultType",3636get: function get() {3637return DefaultType$5;3638}3639}]);3640
3641return Popover;3642}(Tooltip);3643/**3644* ------------------------------------------------------------------------
3645* jQuery
3646* ------------------------------------------------------------------------
3647*/
3648
3649
3650$.fn[NAME$7] = Popover._jQueryInterface;3651$.fn[NAME$7].Constructor = Popover;3652
3653$.fn[NAME$7].noConflict = function () {3654$.fn[NAME$7] = JQUERY_NO_CONFLICT$7;3655return Popover._jQueryInterface;3656};3657
3658/**3659* ------------------------------------------------------------------------
3660* Constants
3661* ------------------------------------------------------------------------
3662*/
3663
3664var NAME$8 = 'scrollspy';3665var VERSION$8 = '4.5.2';3666var DATA_KEY$8 = 'bs.scrollspy';3667var EVENT_KEY$8 = "." + DATA_KEY$8;3668var DATA_API_KEY$6 = '.data-api';3669var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];3670var Default$6 = {3671offset: 10,3672method: 'auto',3673target: ''3674};3675var DefaultType$6 = {3676offset: 'number',3677method: 'string',3678target: '(string|element)'3679};3680var EVENT_ACTIVATE = "activate" + EVENT_KEY$8;3681var EVENT_SCROLL = "scroll" + EVENT_KEY$8;3682var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$8 + DATA_API_KEY$6;3683var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';3684var CLASS_NAME_ACTIVE$2 = 'active';3685var SELECTOR_DATA_SPY = '[data-spy="scroll"]';3686var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';3687var SELECTOR_NAV_LINKS = '.nav-link';3688var SELECTOR_NAV_ITEMS = '.nav-item';3689var SELECTOR_LIST_ITEMS = '.list-group-item';3690var SELECTOR_DROPDOWN = '.dropdown';3691var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';3692var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';3693var METHOD_OFFSET = 'offset';3694var METHOD_POSITION = 'position';3695/**3696* ------------------------------------------------------------------------
3697* Class Definition
3698* ------------------------------------------------------------------------
3699*/
3700
3701var ScrollSpy = /*#__PURE__*/function () {3702function ScrollSpy(element, config) {3703var _this = this;3704
3705this._element = element;3706this._scrollElement = element.tagName === 'BODY' ? window : element;3707this._config = this._getConfig(config);3708this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);3709this._offsets = [];3710this._targets = [];3711this._activeTarget = null;3712this._scrollHeight = 0;3713$(this._scrollElement).on(EVENT_SCROLL, function (event) {3714return _this._process(event);3715});3716this.refresh();3717
3718this._process();3719} // Getters3720
3721
3722var _proto = ScrollSpy.prototype;3723
3724// Public3725_proto.refresh = function refresh() {3726var _this2 = this;3727
3728var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;3729var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;3730var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;3731this._offsets = [];3732this._targets = [];3733this._scrollHeight = this._getScrollHeight();3734var targets = [].slice.call(document.querySelectorAll(this._selector));3735targets.map(function (element) {3736var target;3737var targetSelector = Util.getSelectorFromElement(element);3738
3739if (targetSelector) {3740target = document.querySelector(targetSelector);3741}3742
3743if (target) {3744var targetBCR = target.getBoundingClientRect();3745
3746if (targetBCR.width || targetBCR.height) {3747// TODO (fat): remove sketch reliance on jQuery position/offset3748return [$(target)[offsetMethod]().top + offsetBase, targetSelector];3749}3750}3751
3752return null;3753}).filter(function (item) {3754return item;3755}).sort(function (a, b) {3756return a[0] - b[0];3757}).forEach(function (item) {3758_this2._offsets.push(item[0]);3759
3760_this2._targets.push(item[1]);3761});3762};3763
3764_proto.dispose = function dispose() {3765$.removeData(this._element, DATA_KEY$8);3766$(this._scrollElement).off(EVENT_KEY$8);3767this._element = null;3768this._scrollElement = null;3769this._config = null;3770this._selector = null;3771this._offsets = null;3772this._targets = null;3773this._activeTarget = null;3774this._scrollHeight = null;3775} // Private3776;3777
3778_proto._getConfig = function _getConfig(config) {3779config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});3780
3781if (typeof config.target !== 'string' && Util.isElement(config.target)) {3782var id = $(config.target).attr('id');3783
3784if (!id) {3785id = Util.getUID(NAME$8);3786$(config.target).attr('id', id);3787}3788
3789config.target = "#" + id;3790}3791
3792Util.typeCheckConfig(NAME$8, config, DefaultType$6);3793return config;3794};3795
3796_proto._getScrollTop = function _getScrollTop() {3797return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;3798};3799
3800_proto._getScrollHeight = function _getScrollHeight() {3801return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);3802};3803
3804_proto._getOffsetHeight = function _getOffsetHeight() {3805return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;3806};3807
3808_proto._process = function _process() {3809var scrollTop = this._getScrollTop() + this._config.offset;3810
3811var scrollHeight = this._getScrollHeight();3812
3813var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();3814
3815if (this._scrollHeight !== scrollHeight) {3816this.refresh();3817}3818
3819if (scrollTop >= maxScroll) {3820var target = this._targets[this._targets.length - 1];3821
3822if (this._activeTarget !== target) {3823this._activate(target);3824}3825
3826return;3827}3828
3829if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {3830this._activeTarget = null;3831
3832this._clear();3833
3834return;3835}3836
3837for (var i = this._offsets.length; i--;) {3838var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);3839
3840if (isActiveTarget) {3841this._activate(this._targets[i]);3842}3843}3844};3845
3846_proto._activate = function _activate(target) {3847this._activeTarget = target;3848
3849this._clear();3850
3851var queries = this._selector.split(',').map(function (selector) {3852return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";3853});3854
3855var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));3856
3857if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {3858$link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);3859$link.addClass(CLASS_NAME_ACTIVE$2);3860} else {3861// Set triggered link as active3862$link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active3863// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor3864
3865$link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item3866
3867$link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);3868}3869
3870$(this._scrollElement).trigger(EVENT_ACTIVATE, {3871relatedTarget: target3872});3873};3874
3875_proto._clear = function _clear() {3876[].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {3877return node.classList.contains(CLASS_NAME_ACTIVE$2);3878}).forEach(function (node) {3879return node.classList.remove(CLASS_NAME_ACTIVE$2);3880});3881} // Static3882;3883
3884ScrollSpy._jQueryInterface = function _jQueryInterface(config) {3885return this.each(function () {3886var data = $(this).data(DATA_KEY$8);3887
3888var _config = typeof config === 'object' && config;3889
3890if (!data) {3891data = new ScrollSpy(this, _config);3892$(this).data(DATA_KEY$8, data);3893}3894
3895if (typeof config === 'string') {3896if (typeof data[config] === 'undefined') {3897throw new TypeError("No method named \"" + config + "\"");3898}3899
3900data[config]();3901}3902});3903};3904
3905_createClass(ScrollSpy, null, [{3906key: "VERSION",3907get: function get() {3908return VERSION$8;3909}3910}, {3911key: "Default",3912get: function get() {3913return Default$6;3914}3915}]);3916
3917return ScrollSpy;3918}();3919/**3920* ------------------------------------------------------------------------
3921* Data Api implementation
3922* ------------------------------------------------------------------------
3923*/
3924
3925
3926$(window).on(EVENT_LOAD_DATA_API$2, function () {3927var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));3928var scrollSpysLength = scrollSpys.length;3929
3930for (var i = scrollSpysLength; i--;) {3931var $spy = $(scrollSpys[i]);3932
3933ScrollSpy._jQueryInterface.call($spy, $spy.data());3934}3935});3936/**3937* ------------------------------------------------------------------------
3938* jQuery
3939* ------------------------------------------------------------------------
3940*/
3941
3942$.fn[NAME$8] = ScrollSpy._jQueryInterface;3943$.fn[NAME$8].Constructor = ScrollSpy;3944
3945$.fn[NAME$8].noConflict = function () {3946$.fn[NAME$8] = JQUERY_NO_CONFLICT$8;3947return ScrollSpy._jQueryInterface;3948};3949
3950/**3951* ------------------------------------------------------------------------
3952* Constants
3953* ------------------------------------------------------------------------
3954*/
3955
3956var NAME$9 = 'tab';3957var VERSION$9 = '4.5.2';3958var DATA_KEY$9 = 'bs.tab';3959var EVENT_KEY$9 = "." + DATA_KEY$9;3960var DATA_API_KEY$7 = '.data-api';3961var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];3962var EVENT_HIDE$3 = "hide" + EVENT_KEY$9;3963var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9;3964var EVENT_SHOW$3 = "show" + EVENT_KEY$9;3965var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9;3966var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7;3967var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';3968var CLASS_NAME_ACTIVE$3 = 'active';3969var CLASS_NAME_DISABLED$1 = 'disabled';3970var CLASS_NAME_FADE$4 = 'fade';3971var CLASS_NAME_SHOW$6 = 'show';3972var SELECTOR_DROPDOWN$1 = '.dropdown';3973var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';3974var SELECTOR_ACTIVE$2 = '.active';3975var SELECTOR_ACTIVE_UL = '> li > .active';3976var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';3977var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';3978var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';3979/**3980* ------------------------------------------------------------------------
3981* Class Definition
3982* ------------------------------------------------------------------------
3983*/
3984
3985var Tab = /*#__PURE__*/function () {3986function Tab(element) {3987this._element = element;3988} // Getters3989
3990
3991var _proto = Tab.prototype;3992
3993// Public3994_proto.show = function show() {3995var _this = this;3996
3997if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(CLASS_NAME_ACTIVE$3) || $(this._element).hasClass(CLASS_NAME_DISABLED$1)) {3998return;3999}4000
4001var target;4002var previous;4003var listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];4004var selector = Util.getSelectorFromElement(this._element);4005
4006if (listElement) {4007var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;4008previous = $.makeArray($(listElement).find(itemSelector));4009previous = previous[previous.length - 1];4010}4011
4012var hideEvent = $.Event(EVENT_HIDE$3, {4013relatedTarget: this._element4014});4015var showEvent = $.Event(EVENT_SHOW$3, {4016relatedTarget: previous4017});4018
4019if (previous) {4020$(previous).trigger(hideEvent);4021}4022
4023$(this._element).trigger(showEvent);4024
4025if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {4026return;4027}4028
4029if (selector) {4030target = document.querySelector(selector);4031}4032
4033this._activate(this._element, listElement);4034
4035var complete = function complete() {4036var hiddenEvent = $.Event(EVENT_HIDDEN$3, {4037relatedTarget: _this._element4038});4039var shownEvent = $.Event(EVENT_SHOWN$3, {4040relatedTarget: previous4041});4042$(previous).trigger(hiddenEvent);4043$(_this._element).trigger(shownEvent);4044};4045
4046if (target) {4047this._activate(target, target.parentNode, complete);4048} else {4049complete();4050}4051};4052
4053_proto.dispose = function dispose() {4054$.removeData(this._element, DATA_KEY$9);4055this._element = null;4056} // Private4057;4058
4059_proto._activate = function _activate(element, container, callback) {4060var _this2 = this;4061
4062var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(SELECTOR_ACTIVE_UL) : $(container).children(SELECTOR_ACTIVE$2);4063var active = activeElements[0];4064var isTransitioning = callback && active && $(active).hasClass(CLASS_NAME_FADE$4);4065
4066var complete = function complete() {4067return _this2._transitionComplete(element, active, callback);4068};4069
4070if (active && isTransitioning) {4071var transitionDuration = Util.getTransitionDurationFromElement(active);4072$(active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);4073} else {4074complete();4075}4076};4077
4078_proto._transitionComplete = function _transitionComplete(element, active, callback) {4079if (active) {4080$(active).removeClass(CLASS_NAME_ACTIVE$3);4081var dropdownChild = $(active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];4082
4083if (dropdownChild) {4084$(dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);4085}4086
4087if (active.getAttribute('role') === 'tab') {4088active.setAttribute('aria-selected', false);4089}4090}4091
4092$(element).addClass(CLASS_NAME_ACTIVE$3);4093
4094if (element.getAttribute('role') === 'tab') {4095element.setAttribute('aria-selected', true);4096}4097
4098Util.reflow(element);4099
4100if (element.classList.contains(CLASS_NAME_FADE$4)) {4101element.classList.add(CLASS_NAME_SHOW$6);4102}4103
4104if (element.parentNode && $(element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {4105var dropdownElement = $(element).closest(SELECTOR_DROPDOWN$1)[0];4106
4107if (dropdownElement) {4108var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));4109$(dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);4110}4111
4112element.setAttribute('aria-expanded', true);4113}4114
4115if (callback) {4116callback();4117}4118} // Static4119;4120
4121Tab._jQueryInterface = function _jQueryInterface(config) {4122return this.each(function () {4123var $this = $(this);4124var data = $this.data(DATA_KEY$9);4125
4126if (!data) {4127data = new Tab(this);4128$this.data(DATA_KEY$9, data);4129}4130
4131if (typeof config === 'string') {4132if (typeof data[config] === 'undefined') {4133throw new TypeError("No method named \"" + config + "\"");4134}4135
4136data[config]();4137}4138});4139};4140
4141_createClass(Tab, null, [{4142key: "VERSION",4143get: function get() {4144return VERSION$9;4145}4146}]);4147
4148return Tab;4149}();4150/**4151* ------------------------------------------------------------------------
4152* Data Api implementation
4153* ------------------------------------------------------------------------
4154*/
4155
4156
4157$(document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {4158event.preventDefault();4159
4160Tab._jQueryInterface.call($(this), 'show');4161});4162/**4163* ------------------------------------------------------------------------
4164* jQuery
4165* ------------------------------------------------------------------------
4166*/
4167
4168$.fn[NAME$9] = Tab._jQueryInterface;4169$.fn[NAME$9].Constructor = Tab;4170
4171$.fn[NAME$9].noConflict = function () {4172$.fn[NAME$9] = JQUERY_NO_CONFLICT$9;4173return Tab._jQueryInterface;4174};4175
4176/**4177* ------------------------------------------------------------------------
4178* Constants
4179* ------------------------------------------------------------------------
4180*/
4181
4182var NAME$a = 'toast';4183var VERSION$a = '4.5.2';4184var DATA_KEY$a = 'bs.toast';4185var EVENT_KEY$a = "." + DATA_KEY$a;4186var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];4187var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a;4188var EVENT_HIDE$4 = "hide" + EVENT_KEY$a;4189var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a;4190var EVENT_SHOW$4 = "show" + EVENT_KEY$a;4191var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a;4192var CLASS_NAME_FADE$5 = 'fade';4193var CLASS_NAME_HIDE = 'hide';4194var CLASS_NAME_SHOW$7 = 'show';4195var CLASS_NAME_SHOWING = 'showing';4196var DefaultType$7 = {4197animation: 'boolean',4198autohide: 'boolean',4199delay: 'number'4200};4201var Default$7 = {4202animation: true,4203autohide: true,4204delay: 5004205};4206var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="toast"]';4207/**4208* ------------------------------------------------------------------------
4209* Class Definition
4210* ------------------------------------------------------------------------
4211*/
4212
4213var Toast = /*#__PURE__*/function () {4214function Toast(element, config) {4215this._element = element;4216this._config = this._getConfig(config);4217this._timeout = null;4218
4219this._setListeners();4220} // Getters4221
4222
4223var _proto = Toast.prototype;4224
4225// Public4226_proto.show = function show() {4227var _this = this;4228
4229var showEvent = $.Event(EVENT_SHOW$4);4230$(this._element).trigger(showEvent);4231
4232if (showEvent.isDefaultPrevented()) {4233return;4234}4235
4236this._clearTimeout();4237
4238if (this._config.animation) {4239this._element.classList.add(CLASS_NAME_FADE$5);4240}4241
4242var complete = function complete() {4243_this._element.classList.remove(CLASS_NAME_SHOWING);4244
4245_this._element.classList.add(CLASS_NAME_SHOW$7);4246
4247$(_this._element).trigger(EVENT_SHOWN$4);4248
4249if (_this._config.autohide) {4250_this._timeout = setTimeout(function () {4251_this.hide();4252}, _this._config.delay);4253}4254};4255
4256this._element.classList.remove(CLASS_NAME_HIDE);4257
4258Util.reflow(this._element);4259
4260this._element.classList.add(CLASS_NAME_SHOWING);4261
4262if (this._config.animation) {4263var transitionDuration = Util.getTransitionDurationFromElement(this._element);4264$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);4265} else {4266complete();4267}4268};4269
4270_proto.hide = function hide() {4271if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {4272return;4273}4274
4275var hideEvent = $.Event(EVENT_HIDE$4);4276$(this._element).trigger(hideEvent);4277
4278if (hideEvent.isDefaultPrevented()) {4279return;4280}4281
4282this._close();4283};4284
4285_proto.dispose = function dispose() {4286this._clearTimeout();4287
4288if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {4289this._element.classList.remove(CLASS_NAME_SHOW$7);4290}4291
4292$(this._element).off(EVENT_CLICK_DISMISS$1);4293$.removeData(this._element, DATA_KEY$a);4294this._element = null;4295this._config = null;4296} // Private4297;4298
4299_proto._getConfig = function _getConfig(config) {4300config = _extends({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});4301Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);4302return config;4303};4304
4305_proto._setListeners = function _setListeners() {4306var _this2 = this;4307
4308$(this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {4309return _this2.hide();4310});4311};4312
4313_proto._close = function _close() {4314var _this3 = this;4315
4316var complete = function complete() {4317_this3._element.classList.add(CLASS_NAME_HIDE);4318
4319$(_this3._element).trigger(EVENT_HIDDEN$4);4320};4321
4322this._element.classList.remove(CLASS_NAME_SHOW$7);4323
4324if (this._config.animation) {4325var transitionDuration = Util.getTransitionDurationFromElement(this._element);4326$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);4327} else {4328complete();4329}4330};4331
4332_proto._clearTimeout = function _clearTimeout() {4333clearTimeout(this._timeout);4334this._timeout = null;4335} // Static4336;4337
4338Toast._jQueryInterface = function _jQueryInterface(config) {4339return this.each(function () {4340var $element = $(this);4341var data = $element.data(DATA_KEY$a);4342
4343var _config = typeof config === 'object' && config;4344
4345if (!data) {4346data = new Toast(this, _config);4347$element.data(DATA_KEY$a, data);4348}4349
4350if (typeof config === 'string') {4351if (typeof data[config] === 'undefined') {4352throw new TypeError("No method named \"" + config + "\"");4353}4354
4355data[config](this);4356}4357});4358};4359
4360_createClass(Toast, null, [{4361key: "VERSION",4362get: function get() {4363return VERSION$a;4364}4365}, {4366key: "DefaultType",4367get: function get() {4368return DefaultType$7;4369}4370}, {4371key: "Default",4372get: function get() {4373return Default$7;4374}4375}]);4376
4377return Toast;4378}();4379/**4380* ------------------------------------------------------------------------
4381* jQuery
4382* ------------------------------------------------------------------------
4383*/
4384
4385
4386$.fn[NAME$a] = Toast._jQueryInterface;4387$.fn[NAME$a].Constructor = Toast;4388
4389$.fn[NAME$a].noConflict = function () {4390$.fn[NAME$a] = JQUERY_NO_CONFLICT$a;4391return Toast._jQueryInterface;4392};4393
4394exports.Alert = Alert;4395exports.Button = Button;4396exports.Carousel = Carousel;4397exports.Collapse = Collapse;4398exports.Dropdown = Dropdown;4399exports.Modal = Modal;4400exports.Popover = Popover;4401exports.Scrollspy = ScrollSpy;4402exports.Tab = Tab;4403exports.Toast = Toast;4404exports.Tooltip = Tooltip;4405exports.Util = Util;4406
4407Object.defineProperty(exports, '__esModule', { value: true });4408
4409})));4410//# sourceMappingURL=bootstrap.js.map
4411