/*! * bootstrap v4.3.1 (https://getbootstrap.com/) * copyright 2011-2019 the bootstrap authors (https://github.com/twbs/bootstrap/graphs/contributors) * licensed under mit (https://github.com/twbs/bootstrap/blob/master/license) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = global || self, factory(global.bootstrap = {}, global.jquery, global.popper)); }(this, function (exports, $, popper) { 'use strict'; $ = $ && $.hasownproperty('default') ? $['default'] : $; popper = popper && popper.hasownproperty('default') ? popper['default'] : popper; function _defineproperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; object.defineproperty(target, descriptor.key, descriptor); } } function _createclass(constructor, protoprops, staticprops) { if (protoprops) _defineproperties(constructor.prototype, protoprops); if (staticprops) _defineproperties(constructor, staticprops); return constructor; } function _defineproperty(obj, key, value) { if (key in obj) { object.defineproperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectspread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownkeys = object.keys(source); if (typeof object.getownpropertysymbols === 'function') { ownkeys = ownkeys.concat(object.getownpropertysymbols(source).filter(function (sym) { return object.getownpropertydescriptor(source, sym).enumerable; })); } ownkeys.foreach(function (key) { _defineproperty(target, key, source[key]); }); } return target; } function _inheritsloose(subclass, superclass) { subclass.prototype = object.create(superclass.prototype); subclass.prototype.constructor = subclass; subclass.__proto__ = superclass; } /** * -------------------------------------------------------------------------- * bootstrap (v4.3.1): util.js * licensed under mit (https://github.com/twbs/bootstrap/blob/master/license) * -------------------------------------------------------------------------- */ /** * ------------------------------------------------------------------------ * private transitionend helpers * ------------------------------------------------------------------------ */ var transition_end = 'transitionend'; var max_uid = 1000000; var milliseconds_multiplier = 1000; // shoutout anguscroll (https://goo.gl/pxwqgp) function totype(obj) { return {}.tostring.call(obj).match(/\s([a-z]+)/i)[1].tolowercase(); } function getspecialtransitionendevent() { return { bindtype: transition_end, delegatetype: transition_end, handle: function handle(event) { if ($(event.target).is(this)) { return event.handleobj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params } return undefined; // eslint-disable-line no-undefined } }; } function transitionendemulator(duration) { var _this = this; var called = false; $(this).one(util.transition_end, function () { called = true; }); settimeout(function () { if (!called) { util.triggertransitionend(_this); } }, duration); return this; } function settransitionendsupport() { $.fn.emulatetransitionend = transitionendemulator; $.event.special[util.transition_end] = getspecialtransitionendevent(); } /** * -------------------------------------------------------------------------- * public util api * -------------------------------------------------------------------------- */ var util = { transition_end: 'bstransitionend', getuid: function getuid(prefix) { do { // eslint-disable-next-line no-bitwise prefix += ~~(math.random() * max_uid); // "~~" acts like a faster math.floor() here } while (document.getelementbyid(prefix)); return prefix; }, getselectorfromelement: function getselectorfromelement(element) { var selector = element.getattribute('data-target'); if (!selector || selector === '#') { var hrefattr = element.getattribute('href'); selector = hrefattr && hrefattr !== '#' ? hrefattr.trim() : ''; } try { return document.queryselector(selector) ? selector : null; } catch (err) { return null; } }, gettransitiondurationfromelement: function gettransitiondurationfromelement(element) { if (!element) { return 0; } // get transition-duration of the element var transitionduration = $(element).css('transition-duration'); var transitiondelay = $(element).css('transition-delay'); var floattransitionduration = parsefloat(transitionduration); var floattransitiondelay = parsefloat(transitiondelay); // return 0 if element or transition duration is not found if (!floattransitionduration && !floattransitiondelay) { return 0; } // if multiple durations are defined, take the first transitionduration = transitionduration.split(',')[0]; transitiondelay = transitiondelay.split(',')[0]; return (parsefloat(transitionduration) + parsefloat(transitiondelay)) * milliseconds_multiplier; }, reflow: function reflow(element) { return element.offsetheight; }, triggertransitionend: function triggertransitionend(element) { $(element).trigger(transition_end); }, // todo: remove in v5 supportstransitionend: function supportstransitionend() { return boolean(transition_end); }, iselement: function iselement(obj) { return (obj[0] || obj).nodetype; }, typecheckconfig: function typecheckconfig(componentname, config, configtypes) { for (var property in configtypes) { if (object.prototype.hasownproperty.call(configtypes, property)) { var expectedtypes = configtypes[property]; var value = config[property]; var valuetype = value && util.iselement(value) ? 'element' : totype(value); if (!new regexp(expectedtypes).test(valuetype)) { throw new error(componentname.touppercase() + ": " + ("option \"" + property + "\" provided type \"" + valuetype + "\" ") + ("but expected type \"" + expectedtypes + "\".")); } } } }, findshadowroot: function findshadowroot(element) { if (!document.documentelement.attachshadow) { return null; } // can find the shadow root otherwise it'll return the document if (typeof element.getrootnode === 'function') { var root = element.getrootnode(); return root instanceof shadowroot ? root : null; } if (element instanceof shadowroot) { return element; } // when we don't find a shadow root if (!element.parentnode) { return null; } return util.findshadowroot(element.parentnode); } }; settransitionendsupport(); /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name = 'alert'; var version = '4.3.1'; var data_key = 'bs.alert'; var event_key = "." + data_key; var data_api_key = '.data-api'; var jquery_no_conflict = $.fn[name]; var selector = { dismiss: '[data-dismiss="alert"]' }; var event = { close: "close" + event_key, closed: "closed" + event_key, click_data_api: "click" + event_key + data_api_key }; var classname = { alert: 'alert', fade: 'fade', show: 'show' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var alert = /*#__pure__*/ function () { function alert(element) { this._element = element; } // getters var _proto = alert.prototype; // public _proto.close = function close(element) { var rootelement = this._element; if (element) { rootelement = this._getrootelement(element); } var customevent = this._triggercloseevent(rootelement); if (customevent.isdefaultprevented()) { return; } this._removeelement(rootelement); }; _proto.dispose = function dispose() { $.removedata(this._element, data_key); this._element = null; } // private ; _proto._getrootelement = function _getrootelement(element) { var selector = util.getselectorfromelement(element); var parent = false; if (selector) { parent = document.queryselector(selector); } if (!parent) { parent = $(element).closest("." + classname.alert)[0]; } return parent; }; _proto._triggercloseevent = function _triggercloseevent(element) { var closeevent = $.event(event.close); $(element).trigger(closeevent); return closeevent; }; _proto._removeelement = function _removeelement(element) { var _this = this; $(element).removeclass(classname.show); if (!$(element).hasclass(classname.fade)) { this._destroyelement(element); return; } var transitionduration = util.gettransitiondurationfromelement(element); $(element).one(util.transition_end, function (event) { return _this._destroyelement(element, event); }).emulatetransitionend(transitionduration); }; _proto._destroyelement = function _destroyelement(element) { $(element).detach().trigger(event.closed).remove(); } // static ; alert._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var $element = $(this); var data = $element.data(data_key); if (!data) { data = new alert(this); $element.data(data_key, data); } if (config === 'close') { data[config](this); } }); }; alert._handledismiss = function _handledismiss(alertinstance) { return function (event) { if (event) { event.preventdefault(); } alertinstance.close(this); }; }; _createclass(alert, null, [{ key: "version", get: function get() { return version; } }]); return alert; }(); /** * ------------------------------------------------------------------------ * data api implementation * ------------------------------------------------------------------------ */ $(document).on(event.click_data_api, selector.dismiss, alert._handledismiss(new alert())); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name] = alert._jqueryinterface; $.fn[name].constructor = alert; $.fn[name].noconflict = function () { $.fn[name] = jquery_no_conflict; return alert._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$1 = 'button'; var version$1 = '4.3.1'; var data_key$1 = 'bs.button'; var event_key$1 = "." + data_key$1; var data_api_key$1 = '.data-api'; var jquery_no_conflict$1 = $.fn[name$1]; var classname$1 = { active: 'active', button: 'btn', focus: 'focus' }; var selector$1 = { data_toggle_carrot: '[data-toggle^="button"]', data_toggle: '[data-toggle="buttons"]', input: 'input:not([type="hidden"])', active: '.active', button: '.btn' }; var event$1 = { click_data_api: "click" + event_key$1 + data_api_key$1, focus_blur_data_api: "focus" + event_key$1 + data_api_key$1 + " " + ("blur" + event_key$1 + data_api_key$1) /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var button = /*#__pure__*/ function () { function button(element) { this._element = element; } // getters var _proto = button.prototype; // public _proto.toggle = function toggle() { var triggerchangeevent = true; var addariapressed = true; var rootelement = $(this._element).closest(selector$1.data_toggle)[0]; if (rootelement) { var input = this._element.queryselector(selector$1.input); if (input) { if (input.type === 'radio') { if (input.checked && this._element.classlist.contains(classname$1.active)) { triggerchangeevent = false; } else { var activeelement = rootelement.queryselector(selector$1.active); if (activeelement) { $(activeelement).removeclass(classname$1.active); } } } if (triggerchangeevent) { if (input.hasattribute('disabled') || rootelement.hasattribute('disabled') || input.classlist.contains('disabled') || rootelement.classlist.contains('disabled')) { return; } input.checked = !this._element.classlist.contains(classname$1.active); $(input).trigger('change'); } input.focus(); addariapressed = false; } } if (addariapressed) { this._element.setattribute('aria-pressed', !this._element.classlist.contains(classname$1.active)); } if (triggerchangeevent) { $(this._element).toggleclass(classname$1.active); } }; _proto.dispose = function dispose() { $.removedata(this._element, data_key$1); this._element = null; } // static ; button._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var data = $(this).data(data_key$1); if (!data) { data = new button(this); $(this).data(data_key$1, data); } if (config === 'toggle') { data[config](); } }); }; _createclass(button, null, [{ key: "version", get: function get() { return version$1; } }]); return button; }(); /** * ------------------------------------------------------------------------ * data api implementation * ------------------------------------------------------------------------ */ $(document).on(event$1.click_data_api, selector$1.data_toggle_carrot, function (event) { event.preventdefault(); var button = event.target; if (!$(button).hasclass(classname$1.button)) { button = $(button).closest(selector$1.button); } button._jqueryinterface.call($(button), 'toggle'); }).on(event$1.focus_blur_data_api, selector$1.data_toggle_carrot, function (event) { var button = $(event.target).closest(selector$1.button)[0]; $(button).toggleclass(classname$1.focus, /^focus(in)?$/.test(event.type)); }); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$1] = button._jqueryinterface; $.fn[name$1].constructor = button; $.fn[name$1].noconflict = function () { $.fn[name$1] = jquery_no_conflict$1; return button._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$2 = 'carousel'; var version$2 = '4.3.1'; var data_key$2 = 'bs.carousel'; var event_key$2 = "." + data_key$2; var data_api_key$2 = '.data-api'; var jquery_no_conflict$2 = $.fn[name$2]; var arrow_left_keycode = 37; // keyboardevent.which value for left arrow key var arrow_right_keycode = 39; // keyboardevent.which value for right arrow key var touchevent_compat_wait = 500; // time for mouse compat events to fire after touch var swipe_threshold = 40; var default = { interval: 5000, keyboard: true, slide: false, pause: 'hover', wrap: true, touch: true }; var defaulttype = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', pause: '(string|boolean)', wrap: 'boolean', touch: 'boolean' }; var direction = { next: 'next', prev: 'prev', left: 'left', right: 'right' }; var event$2 = { slide: "slide" + event_key$2, slid: "slid" + event_key$2, keydown: "keydown" + event_key$2, mouseenter: "mouseenter" + event_key$2, mouseleave: "mouseleave" + event_key$2, touchstart: "touchstart" + event_key$2, touchmove: "touchmove" + event_key$2, touchend: "touchend" + event_key$2, pointerdown: "pointerdown" + event_key$2, pointerup: "pointerup" + event_key$2, drag_start: "dragstart" + event_key$2, load_data_api: "load" + event_key$2 + data_api_key$2, click_data_api: "click" + event_key$2 + data_api_key$2 }; var classname$2 = { carousel: 'carousel', active: 'active', slide: 'slide', right: 'carousel-item-right', left: 'carousel-item-left', next: 'carousel-item-next', prev: 'carousel-item-prev', item: 'carousel-item', pointer_event: 'pointer-event' }; var selector$2 = { active: '.active', active_item: '.active.carousel-item', item: '.carousel-item', item_img: '.carousel-item img', next_prev: '.carousel-item-next, .carousel-item-prev', indicators: '.carousel-indicators', data_slide: '[data-slide], [data-slide-to]', data_ride: '[data-ride="carousel"]' }; var pointertype = { touch: 'touch', pen: 'pen' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var carousel = /*#__pure__*/ function () { function carousel(element, config) { this._items = null; this._interval = null; this._activeelement = null; this._ispaused = false; this._issliding = false; this.touchtimeout = null; this.touchstartx = 0; this.touchdeltax = 0; this._config = this._getconfig(config); this._element = element; this._indicatorselement = this._element.queryselector(selector$2.indicators); this._touchsupported = 'ontouchstart' in document.documentelement || navigator.maxtouchpoints > 0; this._pointerevent = boolean(window.pointerevent || window.mspointerevent); this._addeventlisteners(); } // getters var _proto = carousel.prototype; // public _proto.next = function next() { if (!this._issliding) { this._slide(direction.next); } }; _proto.nextwhenvisible = function nextwhenvisible() { // don't call next when the page isn't visible // or the carousel or its parent isn't visible if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') { this.next(); } }; _proto.prev = function prev() { if (!this._issliding) { this._slide(direction.prev); } }; _proto.pause = function pause(event) { if (!event) { this._ispaused = true; } if (this._element.queryselector(selector$2.next_prev)) { util.triggertransitionend(this._element); this.cycle(true); } clearinterval(this._interval); this._interval = null; }; _proto.cycle = function cycle(event) { if (!event) { this._ispaused = false; } if (this._interval) { clearinterval(this._interval); this._interval = null; } if (this._config.interval && !this._ispaused) { this._interval = setinterval((document.visibilitystate ? this.nextwhenvisible : this.next).bind(this), this._config.interval); } }; _proto.to = function to(index) { var _this = this; this._activeelement = this._element.queryselector(selector$2.active_item); var activeindex = this._getitemindex(this._activeelement); if (index > this._items.length - 1 || index < 0) { return; } if (this._issliding) { $(this._element).one(event$2.slid, function () { return _this.to(index); }); return; } if (activeindex === index) { this.pause(); this.cycle(); return; } var direction = index > activeindex ? direction.next : direction.prev; this._slide(direction, this._items[index]); }; _proto.dispose = function dispose() { $(this._element).off(event_key$2); $.removedata(this._element, data_key$2); this._items = null; this._config = null; this._element = null; this._interval = null; this._ispaused = null; this._issliding = null; this._activeelement = null; this._indicatorselement = null; } // private ; _proto._getconfig = function _getconfig(config) { config = _objectspread({}, default, config); util.typecheckconfig(name$2, config, defaulttype); return config; }; _proto._handleswipe = function _handleswipe() { var absdeltax = math.abs(this.touchdeltax); if (absdeltax <= swipe_threshold) { return; } var direction = absdeltax / this.touchdeltax; // swipe left if (direction > 0) { this.prev(); } // swipe right if (direction < 0) { this.next(); } }; _proto._addeventlisteners = function _addeventlisteners() { var _this2 = this; if (this._config.keyboard) { $(this._element).on(event$2.keydown, function (event) { return _this2._keydown(event); }); } if (this._config.pause === 'hover') { $(this._element).on(event$2.mouseenter, function (event) { return _this2.pause(event); }).on(event$2.mouseleave, function (event) { return _this2.cycle(event); }); } if (this._config.touch) { this._addtoucheventlisteners(); } }; _proto._addtoucheventlisteners = function _addtoucheventlisteners() { var _this3 = this; if (!this._touchsupported) { return; } var start = function start(event) { if (_this3._pointerevent && pointertype[event.originalevent.pointertype.touppercase()]) { _this3.touchstartx = event.originalevent.clientx; } else if (!_this3._pointerevent) { _this3.touchstartx = event.originalevent.touches[0].clientx; } }; var move = function move(event) { // ensure swiping with one touch and not pinching if (event.originalevent.touches && event.originalevent.touches.length > 1) { _this3.touchdeltax = 0; } else { _this3.touchdeltax = event.originalevent.touches[0].clientx - _this3.touchstartx; } }; var end = function end(event) { if (_this3._pointerevent && pointertype[event.originalevent.pointertype.touppercase()]) { _this3.touchdeltax = event.originalevent.clientx - _this3.touchstartx; } _this3._handleswipe(); if (_this3._config.pause === 'hover') { // if it's a touch-enabled device, mouseenter/leave are fired as // part of the mouse compatibility events on first tap - the carousel // would stop cycling until user tapped out of it; // here, we listen for touchend, explicitly pause the carousel // (as if it's the second time we tap on it, mouseenter compat event // is not fired) and after a timeout (to allow for mouse compatibility // events to fire) we explicitly restart cycling _this3.pause(); if (_this3.touchtimeout) { cleartimeout(_this3.touchtimeout); } _this3.touchtimeout = settimeout(function (event) { return _this3.cycle(event); }, touchevent_compat_wait + _this3._config.interval); } }; $(this._element.queryselectorall(selector$2.item_img)).on(event$2.drag_start, function (e) { return e.preventdefault(); }); if (this._pointerevent) { $(this._element).on(event$2.pointerdown, function (event) { return start(event); }); $(this._element).on(event$2.pointerup, function (event) { return end(event); }); this._element.classlist.add(classname$2.pointer_event); } else { $(this._element).on(event$2.touchstart, function (event) { return start(event); }); $(this._element).on(event$2.touchmove, function (event) { return move(event); }); $(this._element).on(event$2.touchend, function (event) { return end(event); }); } }; _proto._keydown = function _keydown(event) { if (/input|textarea/i.test(event.target.tagname)) { return; } switch (event.which) { case arrow_left_keycode: event.preventdefault(); this.prev(); break; case arrow_right_keycode: event.preventdefault(); this.next(); break; default: } }; _proto._getitemindex = function _getitemindex(element) { this._items = element && element.parentnode ? [].slice.call(element.parentnode.queryselectorall(selector$2.item)) : []; return this._items.indexof(element); }; _proto._getitembydirection = function _getitembydirection(direction, activeelement) { var isnextdirection = direction === direction.next; var isprevdirection = direction === direction.prev; var activeindex = this._getitemindex(activeelement); var lastitemindex = this._items.length - 1; var isgoingtowrap = isprevdirection && activeindex === 0 || isnextdirection && activeindex === lastitemindex; if (isgoingtowrap && !this._config.wrap) { return activeelement; } var delta = direction === direction.prev ? -1 : 1; var itemindex = (activeindex + delta) % this._items.length; return itemindex === -1 ? this._items[this._items.length - 1] : this._items[itemindex]; }; _proto._triggerslideevent = function _triggerslideevent(relatedtarget, eventdirectionname) { var targetindex = this._getitemindex(relatedtarget); var fromindex = this._getitemindex(this._element.queryselector(selector$2.active_item)); var slideevent = $.event(event$2.slide, { relatedtarget: relatedtarget, direction: eventdirectionname, from: fromindex, to: targetindex }); $(this._element).trigger(slideevent); return slideevent; }; _proto._setactiveindicatorelement = function _setactiveindicatorelement(element) { if (this._indicatorselement) { var indicators = [].slice.call(this._indicatorselement.queryselectorall(selector$2.active)); $(indicators).removeclass(classname$2.active); var nextindicator = this._indicatorselement.children[this._getitemindex(element)]; if (nextindicator) { $(nextindicator).addclass(classname$2.active); } } }; _proto._slide = function _slide(direction, element) { var _this4 = this; var activeelement = this._element.queryselector(selector$2.active_item); var activeelementindex = this._getitemindex(activeelement); var nextelement = element || activeelement && this._getitembydirection(direction, activeelement); var nextelementindex = this._getitemindex(nextelement); var iscycling = boolean(this._interval); var directionalclassname; var orderclassname; var eventdirectionname; if (direction === direction.next) { directionalclassname = classname$2.left; orderclassname = classname$2.next; eventdirectionname = direction.left; } else { directionalclassname = classname$2.right; orderclassname = classname$2.prev; eventdirectionname = direction.right; } if (nextelement && $(nextelement).hasclass(classname$2.active)) { this._issliding = false; return; } var slideevent = this._triggerslideevent(nextelement, eventdirectionname); if (slideevent.isdefaultprevented()) { return; } if (!activeelement || !nextelement) { // some weirdness is happening, so we bail return; } this._issliding = true; if (iscycling) { this.pause(); } this._setactiveindicatorelement(nextelement); var slidevent = $.event(event$2.slid, { relatedtarget: nextelement, direction: eventdirectionname, from: activeelementindex, to: nextelementindex }); if ($(this._element).hasclass(classname$2.slide)) { $(nextelement).addclass(orderclassname); util.reflow(nextelement); $(activeelement).addclass(directionalclassname); $(nextelement).addclass(directionalclassname); var nextelementinterval = parseint(nextelement.getattribute('data-interval'), 10); if (nextelementinterval) { this._config.defaultinterval = this._config.defaultinterval || this._config.interval; this._config.interval = nextelementinterval; } else { this._config.interval = this._config.defaultinterval || this._config.interval; } var transitionduration = util.gettransitiondurationfromelement(activeelement); $(activeelement).one(util.transition_end, function () { $(nextelement).removeclass(directionalclassname + " " + orderclassname).addclass(classname$2.active); $(activeelement).removeclass(classname$2.active + " " + orderclassname + " " + directionalclassname); _this4._issliding = false; settimeout(function () { return $(_this4._element).trigger(slidevent); }, 0); }).emulatetransitionend(transitionduration); } else { $(activeelement).removeclass(classname$2.active); $(nextelement).addclass(classname$2.active); this._issliding = false; $(this._element).trigger(slidevent); } if (iscycling) { this.cycle(); } } // static ; carousel._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var data = $(this).data(data_key$2); var _config = _objectspread({}, default, $(this).data()); if (typeof config === 'object') { _config = _objectspread({}, _config, config); } var action = typeof config === 'string' ? config : _config.slide; if (!data) { data = new carousel(this, _config); $(this).data(data_key$2, data); } if (typeof config === 'number') { data.to(config); } else if (typeof action === 'string') { if (typeof data[action] === 'undefined') { throw new typeerror("no method named \"" + action + "\""); } data[action](); } else if (_config.interval && _config.ride) { data.pause(); data.cycle(); } }); }; carousel._dataapiclickhandler = function _dataapiclickhandler(event) { var selector = util.getselectorfromelement(this); if (!selector) { return; } var target = $(selector)[0]; if (!target || !$(target).hasclass(classname$2.carousel)) { return; } var config = _objectspread({}, $(target).data(), $(this).data()); var slideindex = this.getattribute('data-slide-to'); if (slideindex) { config.interval = false; } carousel._jqueryinterface.call($(target), config); if (slideindex) { $(target).data(data_key$2).to(slideindex); } event.preventdefault(); }; _createclass(carousel, null, [{ key: "version", get: function get() { return version$2; } }, { key: "default", get: function get() { return default; } }]); return carousel; }(); /** * ------------------------------------------------------------------------ * data api implementation * ------------------------------------------------------------------------ */ $(document).on(event$2.click_data_api, selector$2.data_slide, carousel._dataapiclickhandler); $(window).on(event$2.load_data_api, function () { var carousels = [].slice.call(document.queryselectorall(selector$2.data_ride)); for (var i = 0, len = carousels.length; i < len; i++) { var $carousel = $(carousels[i]); carousel._jqueryinterface.call($carousel, $carousel.data()); } }); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$2] = carousel._jqueryinterface; $.fn[name$2].constructor = carousel; $.fn[name$2].noconflict = function () { $.fn[name$2] = jquery_no_conflict$2; return carousel._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$3 = 'collapse'; var version$3 = '4.3.1'; var data_key$3 = 'bs.collapse'; var event_key$3 = "." + data_key$3; var data_api_key$3 = '.data-api'; var jquery_no_conflict$3 = $.fn[name$3]; var default$1 = { toggle: true, parent: '' }; var defaulttype$1 = { toggle: 'boolean', parent: '(string|element)' }; var event$3 = { show: "show" + event_key$3, shown: "shown" + event_key$3, hide: "hide" + event_key$3, hidden: "hidden" + event_key$3, click_data_api: "click" + event_key$3 + data_api_key$3 }; var classname$3 = { show: 'show', collapse: 'collapse', collapsing: 'collapsing', collapsed: 'collapsed' }; var dimension = { width: 'width', height: 'height' }; var selector$3 = { actives: '.show, .collapsing', data_toggle: '[data-toggle="collapse"]' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var collapse = /*#__pure__*/ function () { function collapse(element, config) { this._istransitioning = false; this._element = element; this._config = this._getconfig(config); this._triggerarray = [].slice.call(document.queryselectorall("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); var togglelist = [].slice.call(document.queryselectorall(selector$3.data_toggle)); for (var i = 0, len = togglelist.length; i < len; i++) { var elem = togglelist[i]; var selector = util.getselectorfromelement(elem); var filterelement = [].slice.call(document.queryselectorall(selector)).filter(function (foundelem) { return foundelem === element; }); if (selector !== null && filterelement.length > 0) { this._selector = selector; this._triggerarray.push(elem); } } this._parent = this._config.parent ? this._getparent() : null; if (!this._config.parent) { this._addariaandcollapsedclass(this._element, this._triggerarray); } if (this._config.toggle) { this.toggle(); } } // getters var _proto = collapse.prototype; // public _proto.toggle = function toggle() { if ($(this._element).hasclass(classname$3.show)) { this.hide(); } else { this.show(); } }; _proto.show = function show() { var _this = this; if (this._istransitioning || $(this._element).hasclass(classname$3.show)) { return; } var actives; var activesdata; if (this._parent) { actives = [].slice.call(this._parent.queryselectorall(selector$3.actives)).filter(function (elem) { if (typeof _this._config.parent === 'string') { return elem.getattribute('data-parent') === _this._config.parent; } return elem.classlist.contains(classname$3.collapse); }); if (actives.length === 0) { actives = null; } } if (actives) { activesdata = $(actives).not(this._selector).data(data_key$3); if (activesdata && activesdata._istransitioning) { return; } } var startevent = $.event(event$3.show); $(this._element).trigger(startevent); if (startevent.isdefaultprevented()) { return; } if (actives) { collapse._jqueryinterface.call($(actives).not(this._selector), 'hide'); if (!activesdata) { $(actives).data(data_key$3, null); } } var dimension = this._getdimension(); $(this._element).removeclass(classname$3.collapse).addclass(classname$3.collapsing); this._element.style[dimension] = 0; if (this._triggerarray.length) { $(this._triggerarray).removeclass(classname$3.collapsed).attr('aria-expanded', true); } this.settransitioning(true); var complete = function complete() { $(_this._element).removeclass(classname$3.collapsing).addclass(classname$3.collapse).addclass(classname$3.show); _this._element.style[dimension] = ''; _this.settransitioning(false); $(_this._element).trigger(event$3.shown); }; var capitalizeddimension = dimension[0].touppercase() + dimension.slice(1); var scrollsize = "scroll" + capitalizeddimension; var transitionduration = util.gettransitiondurationfromelement(this._element); $(this._element).one(util.transition_end, complete).emulatetransitionend(transitionduration); this._element.style[dimension] = this._element[scrollsize] + "px"; }; _proto.hide = function hide() { var _this2 = this; if (this._istransitioning || !$(this._element).hasclass(classname$3.show)) { return; } var startevent = $.event(event$3.hide); $(this._element).trigger(startevent); if (startevent.isdefaultprevented()) { return; } var dimension = this._getdimension(); this._element.style[dimension] = this._element.getboundingclientrect()[dimension] + "px"; util.reflow(this._element); $(this._element).addclass(classname$3.collapsing).removeclass(classname$3.collapse).removeclass(classname$3.show); var triggerarraylength = this._triggerarray.length; if (triggerarraylength > 0) { for (var i = 0; i < triggerarraylength; i++) { var trigger = this._triggerarray[i]; var selector = util.getselectorfromelement(trigger); if (selector !== null) { var $elem = $([].slice.call(document.queryselectorall(selector))); if (!$elem.hasclass(classname$3.show)) { $(trigger).addclass(classname$3.collapsed).attr('aria-expanded', false); } } } } this.settransitioning(true); var complete = function complete() { _this2.settransitioning(false); $(_this2._element).removeclass(classname$3.collapsing).addclass(classname$3.collapse).trigger(event$3.hidden); }; this._element.style[dimension] = ''; var transitionduration = util.gettransitiondurationfromelement(this._element); $(this._element).one(util.transition_end, complete).emulatetransitionend(transitionduration); }; _proto.settransitioning = function settransitioning(istransitioning) { this._istransitioning = istransitioning; }; _proto.dispose = function dispose() { $.removedata(this._element, data_key$3); this._config = null; this._parent = null; this._element = null; this._triggerarray = null; this._istransitioning = null; } // private ; _proto._getconfig = function _getconfig(config) { config = _objectspread({}, default$1, config); config.toggle = boolean(config.toggle); // coerce string values util.typecheckconfig(name$3, config, defaulttype$1); return config; }; _proto._getdimension = function _getdimension() { var haswidth = $(this._element).hasclass(dimension.width); return haswidth ? dimension.width : dimension.height; }; _proto._getparent = function _getparent() { var _this3 = this; var parent; if (util.iselement(this._config.parent)) { parent = this._config.parent; // it's a jquery object if (typeof this._config.parent.jquery !== 'undefined') { parent = this._config.parent[0]; } } else { parent = document.queryselector(this._config.parent); } var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; var children = [].slice.call(parent.queryselectorall(selector)); $(children).each(function (i, element) { _this3._addariaandcollapsedclass(collapse._gettargetfromelement(element), [element]); }); return parent; }; _proto._addariaandcollapsedclass = function _addariaandcollapsedclass(element, triggerarray) { var isopen = $(element).hasclass(classname$3.show); if (triggerarray.length) { $(triggerarray).toggleclass(classname$3.collapsed, !isopen).attr('aria-expanded', isopen); } } // static ; collapse._gettargetfromelement = function _gettargetfromelement(element) { var selector = util.getselectorfromelement(element); return selector ? document.queryselector(selector) : null; }; collapse._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var $this = $(this); var data = $this.data(data_key$3); var _config = _objectspread({}, default$1, $this.data(), typeof config === 'object' && config ? config : {}); if (!data && _config.toggle && /show|hide/.test(config)) { _config.toggle = false; } if (!data) { data = new collapse(this, _config); $this.data(data_key$3, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new typeerror("no method named \"" + config + "\""); } data[config](); } }); }; _createclass(collapse, null, [{ key: "version", get: function get() { return version$3; } }, { key: "default", get: function get() { return default$1; } }]); return collapse; }(); /** * ------------------------------------------------------------------------ * data api implementation * ------------------------------------------------------------------------ */ $(document).on(event$3.click_data_api, selector$3.data_toggle, function (event) { // preventdefault only for elements (which change the url) not inside the collapsible element if (event.currenttarget.tagname === 'a') { event.preventdefault(); } var $trigger = $(this); var selector = util.getselectorfromelement(this); var selectors = [].slice.call(document.queryselectorall(selector)); $(selectors).each(function () { var $target = $(this); var data = $target.data(data_key$3); var config = data ? 'toggle' : $trigger.data(); collapse._jqueryinterface.call($target, config); }); }); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$3] = collapse._jqueryinterface; $.fn[name$3].constructor = collapse; $.fn[name$3].noconflict = function () { $.fn[name$3] = jquery_no_conflict$3; return collapse._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$4 = 'dropdown'; var version$4 = '4.3.1'; var data_key$4 = 'bs.dropdown'; var event_key$4 = "." + data_key$4; var data_api_key$4 = '.data-api'; var jquery_no_conflict$4 = $.fn[name$4]; var escape_keycode = 27; // keyboardevent.which value for escape (esc) key var space_keycode = 32; // keyboardevent.which value for space key var tab_keycode = 9; // keyboardevent.which value for tab key var arrow_up_keycode = 38; // keyboardevent.which value for up arrow key var arrow_down_keycode = 40; // keyboardevent.which value for down arrow key var right_mouse_button_which = 3; // mouseevent.which value for the right button (assuming a right-handed mouse) var regexp_keydown = new regexp(arrow_up_keycode + "|" + arrow_down_keycode + "|" + escape_keycode); var event$4 = { hide: "hide" + event_key$4, hidden: "hidden" + event_key$4, show: "show" + event_key$4, shown: "shown" + event_key$4, click: "click" + event_key$4, click_data_api: "click" + event_key$4 + data_api_key$4, keydown_data_api: "keydown" + event_key$4 + data_api_key$4, keyup_data_api: "keyup" + event_key$4 + data_api_key$4 }; var classname$4 = { disabled: 'disabled', show: 'show', dropup: 'dropup', dropright: 'dropright', dropleft: 'dropleft', menuright: 'dropdown-menu-right', menuleft: 'dropdown-menu-left', position_static: 'position-static' }; var selector$4 = { data_toggle: '[data-toggle="dropdown"]', form_child: '.dropdown form', menu: '.dropdown-menu', navbar_nav: '.navbar-nav', visible_items: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' }; var attachmentmap = { top: 'top-start', topend: 'top-end', bottom: 'bottom-start', bottomend: 'bottom-end', right: 'right-start', rightend: 'right-end', left: 'left-start', leftend: 'left-end' }; var default$2 = { offset: 0, flip: true, boundary: 'scrollparent', reference: 'toggle', display: 'dynamic' }; var defaulttype$2 = { offset: '(number|string|function)', flip: 'boolean', boundary: '(string|element)', reference: '(string|element)', display: 'string' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var dropdown = /*#__pure__*/ function () { function dropdown(element, config) { this._element = element; this._popper = null; this._config = this._getconfig(config); this._menu = this._getmenuelement(); this._innavbar = this._detectnavbar(); this._addeventlisteners(); } // getters var _proto = dropdown.prototype; // public _proto.toggle = function toggle() { if (this._element.disabled || $(this._element).hasclass(classname$4.disabled)) { return; } var parent = dropdown._getparentfromelement(this._element); var isactive = $(this._menu).hasclass(classname$4.show); dropdown._clearmenus(); if (isactive) { return; } var relatedtarget = { relatedtarget: this._element }; var showevent = $.event(event$4.show, relatedtarget); $(parent).trigger(showevent); if (showevent.isdefaultprevented()) { return; } // disable totally popper.js for dropdown in navbar if (!this._innavbar) { /** * check for popper dependency * popper - https://popper.js.org */ if (typeof popper === 'undefined') { throw new typeerror('bootstrap\'s dropdowns require popper.js (https://popper.js.org/)'); } var referenceelement = this._element; if (this._config.reference === 'parent') { referenceelement = parent; } else if (util.iselement(this._config.reference)) { referenceelement = this._config.reference; // check if it's jquery element if (typeof this._config.reference.jquery !== 'undefined') { referenceelement = this._config.reference[0]; } } // if boundary is not `scrollparent`, then set position to `static` // to allow the menu to "escape" the scroll parent's boundaries // https://github.com/twbs/bootstrap/issues/24251 if (this._config.boundary !== 'scrollparent') { $(parent).addclass(classname$4.position_static); } this._popper = new popper(referenceelement, this._menu, this._getpopperconfig()); } // if this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on ios // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html if ('ontouchstart' in document.documentelement && $(parent).closest(selector$4.navbar_nav).length === 0) { $(document.body).children().on('mouseover', null, $.noop); } this._element.focus(); this._element.setattribute('aria-expanded', true); $(this._menu).toggleclass(classname$4.show); $(parent).toggleclass(classname$4.show).trigger($.event(event$4.shown, relatedtarget)); }; _proto.show = function show() { if (this._element.disabled || $(this._element).hasclass(classname$4.disabled) || $(this._menu).hasclass(classname$4.show)) { return; } var relatedtarget = { relatedtarget: this._element }; var showevent = $.event(event$4.show, relatedtarget); var parent = dropdown._getparentfromelement(this._element); $(parent).trigger(showevent); if (showevent.isdefaultprevented()) { return; } $(this._menu).toggleclass(classname$4.show); $(parent).toggleclass(classname$4.show).trigger($.event(event$4.shown, relatedtarget)); }; _proto.hide = function hide() { if (this._element.disabled || $(this._element).hasclass(classname$4.disabled) || !$(this._menu).hasclass(classname$4.show)) { return; } var relatedtarget = { relatedtarget: this._element }; var hideevent = $.event(event$4.hide, relatedtarget); var parent = dropdown._getparentfromelement(this._element); $(parent).trigger(hideevent); if (hideevent.isdefaultprevented()) { return; } $(this._menu).toggleclass(classname$4.show); $(parent).toggleclass(classname$4.show).trigger($.event(event$4.hidden, relatedtarget)); }; _proto.dispose = function dispose() { $.removedata(this._element, data_key$4); $(this._element).off(event_key$4); this._element = null; this._menu = null; if (this._popper !== null) { this._popper.destroy(); this._popper = null; } }; _proto.update = function update() { this._innavbar = this._detectnavbar(); if (this._popper !== null) { this._popper.scheduleupdate(); } } // private ; _proto._addeventlisteners = function _addeventlisteners() { var _this = this; $(this._element).on(event$4.click, function (event) { event.preventdefault(); event.stoppropagation(); _this.toggle(); }); }; _proto._getconfig = function _getconfig(config) { config = _objectspread({}, this.constructor.default, $(this._element).data(), config); util.typecheckconfig(name$4, config, this.constructor.defaulttype); return config; }; _proto._getmenuelement = function _getmenuelement() { if (!this._menu) { var parent = dropdown._getparentfromelement(this._element); if (parent) { this._menu = parent.queryselector(selector$4.menu); } } return this._menu; }; _proto._getplacement = function _getplacement() { var $parentdropdown = $(this._element.parentnode); var placement = attachmentmap.bottom; // handle dropup if ($parentdropdown.hasclass(classname$4.dropup)) { placement = attachmentmap.top; if ($(this._menu).hasclass(classname$4.menuright)) { placement = attachmentmap.topend; } } else if ($parentdropdown.hasclass(classname$4.dropright)) { placement = attachmentmap.right; } else if ($parentdropdown.hasclass(classname$4.dropleft)) { placement = attachmentmap.left; } else if ($(this._menu).hasclass(classname$4.menuright)) { placement = attachmentmap.bottomend; } return placement; }; _proto._detectnavbar = function _detectnavbar() { return $(this._element).closest('.navbar').length > 0; }; _proto._getoffset = function _getoffset() { var _this2 = this; var offset = {}; if (typeof this._config.offset === 'function') { offset.fn = function (data) { data.offsets = _objectspread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); return data; }; } else { offset.offset = this._config.offset; } return offset; }; _proto._getpopperconfig = function _getpopperconfig() { var popperconfig = { placement: this._getplacement(), modifiers: { offset: this._getoffset(), flip: { enabled: this._config.flip }, preventoverflow: { boundarieselement: this._config.boundary } } // disable popper.js if we have a static display }; if (this._config.display === 'static') { popperconfig.modifiers.applystyle = { enabled: false }; } return popperconfig; } // static ; dropdown._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var data = $(this).data(data_key$4); var _config = typeof config === 'object' ? config : null; if (!data) { data = new dropdown(this, _config); $(this).data(data_key$4, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new typeerror("no method named \"" + config + "\""); } data[config](); } }); }; dropdown._clearmenus = function _clearmenus(event) { if (event && (event.which === right_mouse_button_which || event.type === 'keyup' && event.which !== tab_keycode)) { return; } var toggles = [].slice.call(document.queryselectorall(selector$4.data_toggle)); for (var i = 0, len = toggles.length; i < len; i++) { var parent = dropdown._getparentfromelement(toggles[i]); var context = $(toggles[i]).data(data_key$4); var relatedtarget = { relatedtarget: toggles[i] }; if (event && event.type === 'click') { relatedtarget.clickevent = event; } if (!context) { continue; } var dropdownmenu = context._menu; if (!$(parent).hasclass(classname$4.show)) { continue; } if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagname) || event.type === 'keyup' && event.which === tab_keycode) && $.contains(parent, event.target)) { continue; } var hideevent = $.event(event$4.hide, relatedtarget); $(parent).trigger(hideevent); if (hideevent.isdefaultprevented()) { continue; } // if this is a touch-enabled device we remove the extra // empty mouseover listeners we added for ios support if ('ontouchstart' in document.documentelement) { $(document.body).children().off('mouseover', null, $.noop); } toggles[i].setattribute('aria-expanded', 'false'); $(dropdownmenu).removeclass(classname$4.show); $(parent).removeclass(classname$4.show).trigger($.event(event$4.hidden, relatedtarget)); } }; dropdown._getparentfromelement = function _getparentfromelement(element) { var parent; var selector = util.getselectorfromelement(element); if (selector) { parent = document.queryselector(selector); } return parent || element.parentnode; } // eslint-disable-next-line complexity ; dropdown._dataapikeydownhandler = function _dataapikeydownhandler(event) { // if not input/textarea: // - and not a key in regexp_keydown => not a dropdown command // if input/textarea: // - if space key => not a dropdown command // - if key is other than escape // - if key is not up or down => not a dropdown command // - if trigger inside the menu => not a dropdown command if (/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$4.menu).length) : !regexp_keydown.test(event.which)) { return; } event.preventdefault(); event.stoppropagation(); if (this.disabled || $(this).hasclass(classname$4.disabled)) { return; } var parent = dropdown._getparentfromelement(this); var isactive = $(parent).hasclass(classname$4.show); if (!isactive || isactive && (event.which === escape_keycode || event.which === space_keycode)) { if (event.which === escape_keycode) { var toggle = parent.queryselector(selector$4.data_toggle); $(toggle).trigger('focus'); } $(this).trigger('click'); return; } var items = [].slice.call(parent.queryselectorall(selector$4.visible_items)); if (items.length === 0) { return; } var index = items.indexof(event.target); if (event.which === arrow_up_keycode && index > 0) { // up index--; } if (event.which === arrow_down_keycode && index < items.length - 1) { // down index++; } if (index < 0) { index = 0; } items[index].focus(); }; _createclass(dropdown, null, [{ key: "version", get: function get() { return version$4; } }, { key: "default", get: function get() { return default$2; } }, { key: "defaulttype", get: function get() { return defaulttype$2; } }]); return dropdown; }(); /** * ------------------------------------------------------------------------ * data api implementation * ------------------------------------------------------------------------ */ $(document).on(event$4.keydown_data_api, selector$4.data_toggle, dropdown._dataapikeydownhandler).on(event$4.keydown_data_api, selector$4.menu, dropdown._dataapikeydownhandler).on(event$4.click_data_api + " " + event$4.keyup_data_api, dropdown._clearmenus).on(event$4.click_data_api, selector$4.data_toggle, function (event) { event.preventdefault(); event.stoppropagation(); dropdown._jqueryinterface.call($(this), 'toggle'); }).on(event$4.click_data_api, selector$4.form_child, function (e) { e.stoppropagation(); }); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$4] = dropdown._jqueryinterface; $.fn[name$4].constructor = dropdown; $.fn[name$4].noconflict = function () { $.fn[name$4] = jquery_no_conflict$4; return dropdown._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$5 = 'modal'; var version$5 = '4.3.1'; var data_key$5 = 'bs.modal'; var event_key$5 = "." + data_key$5; var data_api_key$5 = '.data-api'; var jquery_no_conflict$5 = $.fn[name$5]; var escape_keycode$1 = 27; // keyboardevent.which value for escape (esc) key var default$3 = { backdrop: true, keyboard: true, focus: true, show: true }; var defaulttype$3 = { backdrop: '(boolean|string)', keyboard: 'boolean', focus: 'boolean', show: 'boolean' }; var event$5 = { hide: "hide" + event_key$5, hidden: "hidden" + event_key$5, show: "show" + event_key$5, shown: "shown" + event_key$5, focusin: "focusin" + event_key$5, resize: "resize" + event_key$5, click_dismiss: "click.dismiss" + event_key$5, keydown_dismiss: "keydown.dismiss" + event_key$5, mouseup_dismiss: "mouseup.dismiss" + event_key$5, mousedown_dismiss: "mousedown.dismiss" + event_key$5, click_data_api: "click" + event_key$5 + data_api_key$5 }; var classname$5 = { scrollable: 'modal-dialog-scrollable', scrollbar_measurer: 'modal-scrollbar-measure', backdrop: 'modal-backdrop', open: 'modal-open', fade: 'fade', show: 'show' }; var selector$5 = { dialog: '.modal-dialog', modal_body: '.modal-body', data_toggle: '[data-toggle="modal"]', data_dismiss: '[data-dismiss="modal"]', fixed_content: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', sticky_content: '.sticky-top' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var modal = /*#__pure__*/ function () { function modal(element, config) { this._config = this._getconfig(config); this._element = element; this._dialog = element.queryselector(selector$5.dialog); this._backdrop = null; this._isshown = false; this._isbodyoverflowing = false; this._ignorebackdropclick = false; this._istransitioning = false; this._scrollbarwidth = 0; } // getters var _proto = modal.prototype; // public _proto.toggle = function toggle(relatedtarget) { return this._isshown ? this.hide() : this.show(relatedtarget); }; _proto.show = function show(relatedtarget) { var _this = this; if (this._isshown || this._istransitioning) { return; } if ($(this._element).hasclass(classname$5.fade)) { this._istransitioning = true; } var showevent = $.event(event$5.show, { relatedtarget: relatedtarget }); $(this._element).trigger(showevent); if (this._isshown || showevent.isdefaultprevented()) { return; } this._isshown = true; this._checkscrollbar(); this._setscrollbar(); this._adjustdialog(); this._setescapeevent(); this._setresizeevent(); $(this._element).on(event$5.click_dismiss, selector$5.data_dismiss, function (event) { return _this.hide(event); }); $(this._dialog).on(event$5.mousedown_dismiss, function () { $(_this._element).one(event$5.mouseup_dismiss, function (event) { if ($(event.target).is(_this._element)) { _this._ignorebackdropclick = true; } }); }); this._showbackdrop(function () { return _this._showelement(relatedtarget); }); }; _proto.hide = function hide(event) { var _this2 = this; if (event) { event.preventdefault(); } if (!this._isshown || this._istransitioning) { return; } var hideevent = $.event(event$5.hide); $(this._element).trigger(hideevent); if (!this._isshown || hideevent.isdefaultprevented()) { return; } this._isshown = false; var transition = $(this._element).hasclass(classname$5.fade); if (transition) { this._istransitioning = true; } this._setescapeevent(); this._setresizeevent(); $(document).off(event$5.focusin); $(this._element).removeclass(classname$5.show); $(this._element).off(event$5.click_dismiss); $(this._dialog).off(event$5.mousedown_dismiss); if (transition) { var transitionduration = util.gettransitiondurationfromelement(this._element); $(this._element).one(util.transition_end, function (event) { return _this2._hidemodal(event); }).emulatetransitionend(transitionduration); } else { this._hidemodal(); } }; _proto.dispose = function dispose() { [window, this._element, this._dialog].foreach(function (htmlelement) { return $(htmlelement).off(event_key$5); }); /** * `document` has 2 events `event.focusin` and `event.click_data_api` * do not move `document` in `htmlelements` array * it will remove `event.click_data_api` event that should remain */ $(document).off(event$5.focusin); $.removedata(this._element, data_key$5); this._config = null; this._element = null; this._dialog = null; this._backdrop = null; this._isshown = null; this._isbodyoverflowing = null; this._ignorebackdropclick = null; this._istransitioning = null; this._scrollbarwidth = null; }; _proto.handleupdate = function handleupdate() { this._adjustdialog(); } // private ; _proto._getconfig = function _getconfig(config) { config = _objectspread({}, default$3, config); util.typecheckconfig(name$5, config, defaulttype$3); return config; }; _proto._showelement = function _showelement(relatedtarget) { var _this3 = this; var transition = $(this._element).hasclass(classname$5.fade); if (!this._element.parentnode || this._element.parentnode.nodetype !== node.element_node) { // don't move modal's dom position document.body.appendchild(this._element); } this._element.style.display = 'block'; this._element.removeattribute('aria-hidden'); this._element.setattribute('aria-modal', true); if ($(this._dialog).hasclass(classname$5.scrollable)) { this._dialog.queryselector(selector$5.modal_body).scrolltop = 0; } else { this._element.scrolltop = 0; } if (transition) { util.reflow(this._element); } $(this._element).addclass(classname$5.show); if (this._config.focus) { this._enforcefocus(); } var shownevent = $.event(event$5.shown, { relatedtarget: relatedtarget }); var transitioncomplete = function transitioncomplete() { if (_this3._config.focus) { _this3._element.focus(); } _this3._istransitioning = false; $(_this3._element).trigger(shownevent); }; if (transition) { var transitionduration = util.gettransitiondurationfromelement(this._dialog); $(this._dialog).one(util.transition_end, transitioncomplete).emulatetransitionend(transitionduration); } else { transitioncomplete(); } }; _proto._enforcefocus = function _enforcefocus() { var _this4 = this; $(document).off(event$5.focusin) // guard against infinite focus loop .on(event$5.focusin, function (event) { if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) { _this4._element.focus(); } }); }; _proto._setescapeevent = function _setescapeevent() { var _this5 = this; if (this._isshown && this._config.keyboard) { $(this._element).on(event$5.keydown_dismiss, function (event) { if (event.which === escape_keycode$1) { event.preventdefault(); _this5.hide(); } }); } else if (!this._isshown) { $(this._element).off(event$5.keydown_dismiss); } }; _proto._setresizeevent = function _setresizeevent() { var _this6 = this; if (this._isshown) { $(window).on(event$5.resize, function (event) { return _this6.handleupdate(event); }); } else { $(window).off(event$5.resize); } }; _proto._hidemodal = function _hidemodal() { var _this7 = this; this._element.style.display = 'none'; this._element.setattribute('aria-hidden', true); this._element.removeattribute('aria-modal'); this._istransitioning = false; this._showbackdrop(function () { $(document.body).removeclass(classname$5.open); _this7._resetadjustments(); _this7._resetscrollbar(); $(_this7._element).trigger(event$5.hidden); }); }; _proto._removebackdrop = function _removebackdrop() { if (this._backdrop) { $(this._backdrop).remove(); this._backdrop = null; } }; _proto._showbackdrop = function _showbackdrop(callback) { var _this8 = this; var animate = $(this._element).hasclass(classname$5.fade) ? classname$5.fade : ''; if (this._isshown && this._config.backdrop) { this._backdrop = document.createelement('div'); this._backdrop.classname = classname$5.backdrop; if (animate) { this._backdrop.classlist.add(animate); } $(this._backdrop).appendto(document.body); $(this._element).on(event$5.click_dismiss, function (event) { if (_this8._ignorebackdropclick) { _this8._ignorebackdropclick = false; return; } if (event.target !== event.currenttarget) { return; } if (_this8._config.backdrop === 'static') { _this8._element.focus(); } else { _this8.hide(); } }); if (animate) { util.reflow(this._backdrop); } $(this._backdrop).addclass(classname$5.show); if (!callback) { return; } if (!animate) { callback(); return; } var backdroptransitionduration = util.gettransitiondurationfromelement(this._backdrop); $(this._backdrop).one(util.transition_end, callback).emulatetransitionend(backdroptransitionduration); } else if (!this._isshown && this._backdrop) { $(this._backdrop).removeclass(classname$5.show); var callbackremove = function callbackremove() { _this8._removebackdrop(); if (callback) { callback(); } }; if ($(this._element).hasclass(classname$5.fade)) { var _backdroptransitionduration = util.gettransitiondurationfromelement(this._backdrop); $(this._backdrop).one(util.transition_end, callbackremove).emulatetransitionend(_backdroptransitionduration); } else { callbackremove(); } } else if (callback) { callback(); } } // ---------------------------------------------------------------------- // the following methods are used to handle overflowing modals // todo (fat): these should probably be refactored out of modal.js // ---------------------------------------------------------------------- ; _proto._adjustdialog = function _adjustdialog() { var ismodaloverflowing = this._element.scrollheight > document.documentelement.clientheight; if (!this._isbodyoverflowing && ismodaloverflowing) { this._element.style.paddingleft = this._scrollbarwidth + "px"; } if (this._isbodyoverflowing && !ismodaloverflowing) { this._element.style.paddingright = this._scrollbarwidth + "px"; } }; _proto._resetadjustments = function _resetadjustments() { this._element.style.paddingleft = ''; this._element.style.paddingright = ''; }; _proto._checkscrollbar = function _checkscrollbar() { var rect = document.body.getboundingclientrect(); this._isbodyoverflowing = rect.left + rect.right < window.innerwidth; this._scrollbarwidth = this._getscrollbarwidth(); }; _proto._setscrollbar = function _setscrollbar() { var _this9 = this; if (this._isbodyoverflowing) { // note: domnode.style.paddingright returns the actual value or '' if not set // while $(domnode).css('padding-right') returns the calculated value or 0 if not set var fixedcontent = [].slice.call(document.queryselectorall(selector$5.fixed_content)); var stickycontent = [].slice.call(document.queryselectorall(selector$5.sticky_content)); // adjust fixed content padding $(fixedcontent).each(function (index, element) { var actualpadding = element.style.paddingright; var calculatedpadding = $(element).css('padding-right'); $(element).data('padding-right', actualpadding).css('padding-right', parsefloat(calculatedpadding) + _this9._scrollbarwidth + "px"); }); // adjust sticky content margin $(stickycontent).each(function (index, element) { var actualmargin = element.style.marginright; var calculatedmargin = $(element).css('margin-right'); $(element).data('margin-right', actualmargin).css('margin-right', parsefloat(calculatedmargin) - _this9._scrollbarwidth + "px"); }); // adjust body padding var actualpadding = document.body.style.paddingright; var calculatedpadding = $(document.body).css('padding-right'); $(document.body).data('padding-right', actualpadding).css('padding-right', parsefloat(calculatedpadding) + this._scrollbarwidth + "px"); } $(document.body).addclass(classname$5.open); }; _proto._resetscrollbar = function _resetscrollbar() { // restore fixed content padding var fixedcontent = [].slice.call(document.queryselectorall(selector$5.fixed_content)); $(fixedcontent).each(function (index, element) { var padding = $(element).data('padding-right'); $(element).removedata('padding-right'); element.style.paddingright = padding ? padding : ''; }); // restore sticky content var elements = [].slice.call(document.queryselectorall("" + selector$5.sticky_content)); $(elements).each(function (index, element) { var margin = $(element).data('margin-right'); if (typeof margin !== 'undefined') { $(element).css('margin-right', margin).removedata('margin-right'); } }); // restore body padding var padding = $(document.body).data('padding-right'); $(document.body).removedata('padding-right'); document.body.style.paddingright = padding ? padding : ''; }; _proto._getscrollbarwidth = function _getscrollbarwidth() { // thx d.walsh var scrolldiv = document.createelement('div'); scrolldiv.classname = classname$5.scrollbar_measurer; document.body.appendchild(scrolldiv); var scrollbarwidth = scrolldiv.getboundingclientrect().width - scrolldiv.clientwidth; document.body.removechild(scrolldiv); return scrollbarwidth; } // static ; modal._jqueryinterface = function _jqueryinterface(config, relatedtarget) { return this.each(function () { var data = $(this).data(data_key$5); var _config = _objectspread({}, default$3, $(this).data(), typeof config === 'object' && config ? config : {}); if (!data) { data = new modal(this, _config); $(this).data(data_key$5, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new typeerror("no method named \"" + config + "\""); } data[config](relatedtarget); } else if (_config.show) { data.show(relatedtarget); } }); }; _createclass(modal, null, [{ key: "version", get: function get() { return version$5; } }, { key: "default", get: function get() { return default$3; } }]); return modal; }(); /** * ------------------------------------------------------------------------ * data api implementation * ------------------------------------------------------------------------ */ $(document).on(event$5.click_data_api, selector$5.data_toggle, function (event) { var _this10 = this; var target; var selector = util.getselectorfromelement(this); if (selector) { target = document.queryselector(selector); } var config = $(target).data(data_key$5) ? 'toggle' : _objectspread({}, $(target).data(), $(this).data()); if (this.tagname === 'a' || this.tagname === 'area') { event.preventdefault(); } var $target = $(target).one(event$5.show, function (showevent) { if (showevent.isdefaultprevented()) { // only register focus restorer if modal will actually get shown return; } $target.one(event$5.hidden, function () { if ($(_this10).is(':visible')) { _this10.focus(); } }); }); modal._jqueryinterface.call($(target), config, this); }); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$5] = modal._jqueryinterface; $.fn[name$5].constructor = modal; $.fn[name$5].noconflict = function () { $.fn[name$5] = jquery_no_conflict$5; return modal._jqueryinterface; }; /** * -------------------------------------------------------------------------- * bootstrap (v4.3.1): tools/sanitizer.js * licensed under mit (https://github.com/twbs/bootstrap/blob/master/license) * -------------------------------------------------------------------------- */ var uriattrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; var aria_attribute_pattern = /^aria-[\w-]*$/i; var defaultwhitelist = { // global attributes allowed on any supplied element below. '*': ['class', 'dir', 'id', 'lang', 'role', aria_attribute_pattern], a: ['target', 'href', 'title', 'rel'], area: [], b: [], br: [], col: [], code: [], div: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ['src', 'alt', 'title', 'width', 'height'], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [] /** * a pattern that recognizes a commonly useful subset of urls that are safe. * * shoutout to angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts */ }; var safe_url_pattern = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; /** * a pattern that matches safe data urls. only matches image, video and audio types. * * shoutout to angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts */ var data_url_pattern = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; function allowedattribute(attr, allowedattributelist) { var attrname = attr.nodename.tolowercase(); if (allowedattributelist.indexof(attrname) !== -1) { if (uriattrs.indexof(attrname) !== -1) { return boolean(attr.nodevalue.match(safe_url_pattern) || attr.nodevalue.match(data_url_pattern)); } return true; } var regexp = allowedattributelist.filter(function (attrregex) { return attrregex instanceof regexp; }); // check if a regular expression validates the attribute. for (var i = 0, l = regexp.length; i < l; i++) { if (attrname.match(regexp[i])) { return true; } } return false; } function sanitizehtml(unsafehtml, whitelist, sanitizefn) { if (unsafehtml.length === 0) { return unsafehtml; } if (sanitizefn && typeof sanitizefn === 'function') { return sanitizefn(unsafehtml); } var domparser = new window.domparser(); var createddocument = domparser.parsefromstring(unsafehtml, 'text/html'); var whitelistkeys = object.keys(whitelist); var elements = [].slice.call(createddocument.body.queryselectorall('*')); var _loop = function _loop(i, len) { var el = elements[i]; var elname = el.nodename.tolowercase(); if (whitelistkeys.indexof(el.nodename.tolowercase()) === -1) { el.parentnode.removechild(el); return "continue"; } var attributelist = [].slice.call(el.attributes); var whitelistedattributes = [].concat(whitelist['*'] || [], whitelist[elname] || []); attributelist.foreach(function (attr) { if (!allowedattribute(attr, whitelistedattributes)) { el.removeattribute(attr.nodename); } }); }; for (var i = 0, len = elements.length; i < len; i++) { var _ret = _loop(i, len); if (_ret === "continue") continue; } return createddocument.body.innerhtml; } /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$6 = 'tooltip'; var version$6 = '4.3.1'; var data_key$6 = 'bs.tooltip'; var event_key$6 = "." + data_key$6; var jquery_no_conflict$6 = $.fn[name$6]; var class_prefix = 'bs-tooltip'; var bscls_prefix_regex = new regexp("(^|\\s)" + class_prefix + "\\s+", 'g'); var disallowed_attributes = ['sanitize', 'whitelist', 'sanitizefn']; var defaulttype$4 = { animation: 'boolean', template: 'string', title: '(string|element|function)', trigger: 'string', delay: '(number|object)', html: 'boolean', selector: '(string|boolean)', placement: '(string|function)', offset: '(number|string|function)', container: '(string|element|boolean)', fallbackplacement: '(string|array)', boundary: '(string|element)', sanitize: 'boolean', sanitizefn: '(null|function)', whitelist: 'object' }; var attachmentmap$1 = { auto: 'auto', top: 'top', right: 'right', bottom: 'bottom', left: 'left' }; var default$4 = { animation: true, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, selector: false, placement: 'top', offset: 0, container: false, fallbackplacement: 'flip', boundary: 'scrollparent', sanitize: true, sanitizefn: null, whitelist: defaultwhitelist }; var hoverstate = { show: 'show', out: 'out' }; var event$6 = { hide: "hide" + event_key$6, hidden: "hidden" + event_key$6, show: "show" + event_key$6, shown: "shown" + event_key$6, inserted: "inserted" + event_key$6, click: "click" + event_key$6, focusin: "focusin" + event_key$6, focusout: "focusout" + event_key$6, mouseenter: "mouseenter" + event_key$6, mouseleave: "mouseleave" + event_key$6 }; var classname$6 = { fade: 'fade', show: 'show' }; var selector$6 = { tooltip: '.tooltip', tooltip_inner: '.tooltip-inner', arrow: '.arrow' }; var trigger = { hover: 'hover', focus: 'focus', click: 'click', manual: 'manual' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var tooltip = /*#__pure__*/ function () { function tooltip(element, config) { /** * check for popper dependency * popper - https://popper.js.org */ if (typeof popper === 'undefined') { throw new typeerror('bootstrap\'s tooltips require popper.js (https://popper.js.org/)'); } // private this._isenabled = true; this._timeout = 0; this._hoverstate = ''; this._activetrigger = {}; this._popper = null; // protected this.element = element; this.config = this._getconfig(config); this.tip = null; this._setlisteners(); } // getters var _proto = tooltip.prototype; // public _proto.enable = function enable() { this._isenabled = true; }; _proto.disable = function disable() { this._isenabled = false; }; _proto.toggleenabled = function toggleenabled() { this._isenabled = !this._isenabled; }; _proto.toggle = function toggle(event) { if (!this._isenabled) { return; } if (event) { var datakey = this.constructor.data_key; var context = $(event.currenttarget).data(datakey); if (!context) { context = new this.constructor(event.currenttarget, this._getdelegateconfig()); $(event.currenttarget).data(datakey, context); } context._activetrigger.click = !context._activetrigger.click; if (context._iswithactivetrigger()) { context._enter(null, context); } else { context._leave(null, context); } } else { if ($(this.gettipelement()).hasclass(classname$6.show)) { this._leave(null, this); return; } this._enter(null, this); } }; _proto.dispose = function dispose() { cleartimeout(this._timeout); $.removedata(this.element, this.constructor.data_key); $(this.element).off(this.constructor.event_key); $(this.element).closest('.modal').off('hide.bs.modal'); if (this.tip) { $(this.tip).remove(); } this._isenabled = null; this._timeout = null; this._hoverstate = null; this._activetrigger = null; if (this._popper !== null) { this._popper.destroy(); } this._popper = null; this.element = null; this.config = null; this.tip = null; }; _proto.show = function show() { var _this = this; if ($(this.element).css('display') === 'none') { throw new error('please use show on visible elements'); } var showevent = $.event(this.constructor.event.show); if (this.iswithcontent() && this._isenabled) { $(this.element).trigger(showevent); var shadowroot = util.findshadowroot(this.element); var isinthedom = $.contains(shadowroot !== null ? shadowroot : this.element.ownerdocument.documentelement, this.element); if (showevent.isdefaultprevented() || !isinthedom) { return; } var tip = this.gettipelement(); var tipid = util.getuid(this.constructor.name); tip.setattribute('id', tipid); this.element.setattribute('aria-describedby', tipid); this.setcontent(); if (this.config.animation) { $(tip).addclass(classname$6.fade); } var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; var attachment = this._getattachment(placement); this.addattachmentclass(attachment); var container = this._getcontainer(); $(tip).data(this.constructor.data_key, this); if (!$.contains(this.element.ownerdocument.documentelement, this.tip)) { $(tip).appendto(container); } $(this.element).trigger(this.constructor.event.inserted); this._popper = new popper(this.element, tip, { placement: attachment, modifiers: { offset: this._getoffset(), flip: { behavior: this.config.fallbackplacement }, arrow: { element: selector$6.arrow }, preventoverflow: { boundarieselement: this.config.boundary } }, oncreate: function oncreate(data) { if (data.originalplacement !== data.placement) { _this._handlepopperplacementchange(data); } }, onupdate: function onupdate(data) { return _this._handlepopperplacementchange(data); } }); $(tip).addclass(classname$6.show); // if this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on ios // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html if ('ontouchstart' in document.documentelement) { $(document.body).children().on('mouseover', null, $.noop); } var complete = function complete() { if (_this.config.animation) { _this._fixtransition(); } var prevhoverstate = _this._hoverstate; _this._hoverstate = null; $(_this.element).trigger(_this.constructor.event.shown); if (prevhoverstate === hoverstate.out) { _this._leave(null, _this); } }; if ($(this.tip).hasclass(classname$6.fade)) { var transitionduration = util.gettransitiondurationfromelement(this.tip); $(this.tip).one(util.transition_end, complete).emulatetransitionend(transitionduration); } else { complete(); } } }; _proto.hide = function hide(callback) { var _this2 = this; var tip = this.gettipelement(); var hideevent = $.event(this.constructor.event.hide); var complete = function complete() { if (_this2._hoverstate !== hoverstate.show && tip.parentnode) { tip.parentnode.removechild(tip); } _this2._cleantipclass(); _this2.element.removeattribute('aria-describedby'); $(_this2.element).trigger(_this2.constructor.event.hidden); if (_this2._popper !== null) { _this2._popper.destroy(); } if (callback) { callback(); } }; $(this.element).trigger(hideevent); if (hideevent.isdefaultprevented()) { return; } $(tip).removeclass(classname$6.show); // if this is a touch-enabled device we remove the extra // empty mouseover listeners we added for ios support if ('ontouchstart' in document.documentelement) { $(document.body).children().off('mouseover', null, $.noop); } this._activetrigger[trigger.click] = false; this._activetrigger[trigger.focus] = false; this._activetrigger[trigger.hover] = false; if ($(this.tip).hasclass(classname$6.fade)) { var transitionduration = util.gettransitiondurationfromelement(tip); $(tip).one(util.transition_end, complete).emulatetransitionend(transitionduration); } else { complete(); } this._hoverstate = ''; }; _proto.update = function update() { if (this._popper !== null) { this._popper.scheduleupdate(); } } // protected ; _proto.iswithcontent = function iswithcontent() { return boolean(this.gettitle()); }; _proto.addattachmentclass = function addattachmentclass(attachment) { $(this.gettipelement()).addclass(class_prefix + "-" + attachment); }; _proto.gettipelement = function gettipelement() { this.tip = this.tip || $(this.config.template)[0]; return this.tip; }; _proto.setcontent = function setcontent() { var tip = this.gettipelement(); this.setelementcontent($(tip.queryselectorall(selector$6.tooltip_inner)), this.gettitle()); $(tip).removeclass(classname$6.fade + " " + classname$6.show); }; _proto.setelementcontent = function setelementcontent($element, content) { if (typeof content === 'object' && (content.nodetype || content.jquery)) { // content is a dom node or a jquery if (this.config.html) { if (!$(content).parent().is($element)) { $element.empty().append(content); } } else { $element.text($(content).text()); } return; } if (this.config.html) { if (this.config.sanitize) { content = sanitizehtml(content, this.config.whitelist, this.config.sanitizefn); } $element.html(content); } else { $element.text(content); } }; _proto.gettitle = function gettitle() { var title = this.element.getattribute('data-original-title'); if (!title) { title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; } return title; } // private ; _proto._getoffset = function _getoffset() { var _this3 = this; var offset = {}; if (typeof this.config.offset === 'function') { offset.fn = function (data) { data.offsets = _objectspread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {}); return data; }; } else { offset.offset = this.config.offset; } return offset; }; _proto._getcontainer = function _getcontainer() { if (this.config.container === false) { return document.body; } if (util.iselement(this.config.container)) { return $(this.config.container); } return $(document).find(this.config.container); }; _proto._getattachment = function _getattachment(placement) { return attachmentmap$1[placement.touppercase()]; }; _proto._setlisteners = function _setlisteners() { var _this4 = this; var triggers = this.config.trigger.split(' '); triggers.foreach(function (trigger) { if (trigger === 'click') { $(_this4.element).on(_this4.constructor.event.click, _this4.config.selector, function (event) { return _this4.toggle(event); }); } else if (trigger !== trigger.manual) { var eventin = trigger === trigger.hover ? _this4.constructor.event.mouseenter : _this4.constructor.event.focusin; var eventout = trigger === trigger.hover ? _this4.constructor.event.mouseleave : _this4.constructor.event.focusout; $(_this4.element).on(eventin, _this4.config.selector, function (event) { return _this4._enter(event); }).on(eventout, _this4.config.selector, function (event) { return _this4._leave(event); }); } }); $(this.element).closest('.modal').on('hide.bs.modal', function () { if (_this4.element) { _this4.hide(); } }); if (this.config.selector) { this.config = _objectspread({}, this.config, { trigger: 'manual', selector: '' }); } else { this._fixtitle(); } }; _proto._fixtitle = function _fixtitle() { var titletype = typeof this.element.getattribute('data-original-title'); if (this.element.getattribute('title') || titletype !== 'string') { this.element.setattribute('data-original-title', this.element.getattribute('title') || ''); this.element.setattribute('title', ''); } }; _proto._enter = function _enter(event, context) { var datakey = this.constructor.data_key; context = context || $(event.currenttarget).data(datakey); if (!context) { context = new this.constructor(event.currenttarget, this._getdelegateconfig()); $(event.currenttarget).data(datakey, context); } if (event) { context._activetrigger[event.type === 'focusin' ? trigger.focus : trigger.hover] = true; } if ($(context.gettipelement()).hasclass(classname$6.show) || context._hoverstate === hoverstate.show) { context._hoverstate = hoverstate.show; return; } cleartimeout(context._timeout); context._hoverstate = hoverstate.show; if (!context.config.delay || !context.config.delay.show) { context.show(); return; } context._timeout = settimeout(function () { if (context._hoverstate === hoverstate.show) { context.show(); } }, context.config.delay.show); }; _proto._leave = function _leave(event, context) { var datakey = this.constructor.data_key; context = context || $(event.currenttarget).data(datakey); if (!context) { context = new this.constructor(event.currenttarget, this._getdelegateconfig()); $(event.currenttarget).data(datakey, context); } if (event) { context._activetrigger[event.type === 'focusout' ? trigger.focus : trigger.hover] = false; } if (context._iswithactivetrigger()) { return; } cleartimeout(context._timeout); context._hoverstate = hoverstate.out; if (!context.config.delay || !context.config.delay.hide) { context.hide(); return; } context._timeout = settimeout(function () { if (context._hoverstate === hoverstate.out) { context.hide(); } }, context.config.delay.hide); }; _proto._iswithactivetrigger = function _iswithactivetrigger() { for (var trigger in this._activetrigger) { if (this._activetrigger[trigger]) { return true; } } return false; }; _proto._getconfig = function _getconfig(config) { var dataattributes = $(this.element).data(); object.keys(dataattributes).foreach(function (dataattr) { if (disallowed_attributes.indexof(dataattr) !== -1) { delete dataattributes[dataattr]; } }); config = _objectspread({}, this.constructor.default, dataattributes, typeof config === 'object' && config ? config : {}); if (typeof config.delay === 'number') { config.delay = { show: config.delay, hide: config.delay }; } if (typeof config.title === 'number') { config.title = config.title.tostring(); } if (typeof config.content === 'number') { config.content = config.content.tostring(); } util.typecheckconfig(name$6, config, this.constructor.defaulttype); if (config.sanitize) { config.template = sanitizehtml(config.template, config.whitelist, config.sanitizefn); } return config; }; _proto._getdelegateconfig = function _getdelegateconfig() { var config = {}; if (this.config) { for (var key in this.config) { if (this.constructor.default[key] !== this.config[key]) { config[key] = this.config[key]; } } } return config; }; _proto._cleantipclass = function _cleantipclass() { var $tip = $(this.gettipelement()); var tabclass = $tip.attr('class').match(bscls_prefix_regex); if (tabclass !== null && tabclass.length) { $tip.removeclass(tabclass.join('')); } }; _proto._handlepopperplacementchange = function _handlepopperplacementchange(popperdata) { var popperinstance = popperdata.instance; this.tip = popperinstance.popper; this._cleantipclass(); this.addattachmentclass(this._getattachment(popperdata.placement)); }; _proto._fixtransition = function _fixtransition() { var tip = this.gettipelement(); var initconfiganimation = this.config.animation; if (tip.getattribute('x-placement') !== null) { return; } $(tip).removeclass(classname$6.fade); this.config.animation = false; this.hide(); this.show(); this.config.animation = initconfiganimation; } // static ; tooltip._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var data = $(this).data(data_key$6); var _config = typeof config === 'object' && config; if (!data && /dispose|hide/.test(config)) { return; } if (!data) { data = new tooltip(this, _config); $(this).data(data_key$6, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new typeerror("no method named \"" + config + "\""); } data[config](); } }); }; _createclass(tooltip, null, [{ key: "version", get: function get() { return version$6; } }, { key: "default", get: function get() { return default$4; } }, { key: "name", get: function get() { return name$6; } }, { key: "data_key", get: function get() { return data_key$6; } }, { key: "event", get: function get() { return event$6; } }, { key: "event_key", get: function get() { return event_key$6; } }, { key: "defaulttype", get: function get() { return defaulttype$4; } }]); return tooltip; }(); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$6] = tooltip._jqueryinterface; $.fn[name$6].constructor = tooltip; $.fn[name$6].noconflict = function () { $.fn[name$6] = jquery_no_conflict$6; return tooltip._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$7 = 'popover'; var version$7 = '4.3.1'; var data_key$7 = 'bs.popover'; var event_key$7 = "." + data_key$7; var jquery_no_conflict$7 = $.fn[name$7]; var class_prefix$1 = 'bs-popover'; var bscls_prefix_regex$1 = new regexp("(^|\\s)" + class_prefix$1 + "\\s+", 'g'); var default$5 = _objectspread({}, tooltip.default, { placement: 'right', trigger: 'click', content: '', template: '' }); var defaulttype$5 = _objectspread({}, tooltip.defaulttype, { content: '(string|element|function)' }); var classname$7 = { fade: 'fade', show: 'show' }; var selector$7 = { title: '.popover-header', content: '.popover-body' }; var event$7 = { hide: "hide" + event_key$7, hidden: "hidden" + event_key$7, show: "show" + event_key$7, shown: "shown" + event_key$7, inserted: "inserted" + event_key$7, click: "click" + event_key$7, focusin: "focusin" + event_key$7, focusout: "focusout" + event_key$7, mouseenter: "mouseenter" + event_key$7, mouseleave: "mouseleave" + event_key$7 /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var popover = /*#__pure__*/ function (_tooltip) { _inheritsloose(popover, _tooltip); function popover() { return _tooltip.apply(this, arguments) || this; } var _proto = popover.prototype; // overrides _proto.iswithcontent = function iswithcontent() { return this.gettitle() || this._getcontent(); }; _proto.addattachmentclass = function addattachmentclass(attachment) { $(this.gettipelement()).addclass(class_prefix$1 + "-" + attachment); }; _proto.gettipelement = function gettipelement() { this.tip = this.tip || $(this.config.template)[0]; return this.tip; }; _proto.setcontent = function setcontent() { var $tip = $(this.gettipelement()); // we use append for html objects to maintain js events this.setelementcontent($tip.find(selector$7.title), this.gettitle()); var content = this._getcontent(); if (typeof content === 'function') { content = content.call(this.element); } this.setelementcontent($tip.find(selector$7.content), content); $tip.removeclass(classname$7.fade + " " + classname$7.show); } // private ; _proto._getcontent = function _getcontent() { return this.element.getattribute('data-content') || this.config.content; }; _proto._cleantipclass = function _cleantipclass() { var $tip = $(this.gettipelement()); var tabclass = $tip.attr('class').match(bscls_prefix_regex$1); if (tabclass !== null && tabclass.length > 0) { $tip.removeclass(tabclass.join('')); } } // static ; popover._jqueryinterface = function _jqueryinterface(config) { return this.each(function () { var data = $(this).data(data_key$7); var _config = typeof config === 'object' ? config : null; if (!data && /dispose|hide/.test(config)) { return; } if (!data) { data = new popover(this, _config); $(this).data(data_key$7, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new typeerror("no method named \"" + config + "\""); } data[config](); } }); }; _createclass(popover, null, [{ key: "version", // getters get: function get() { return version$7; } }, { key: "default", get: function get() { return default$5; } }, { key: "name", get: function get() { return name$7; } }, { key: "data_key", get: function get() { return data_key$7; } }, { key: "event", get: function get() { return event$7; } }, { key: "event_key", get: function get() { return event_key$7; } }, { key: "defaulttype", get: function get() { return defaulttype$5; } }]); return popover; }(tooltip); /** * ------------------------------------------------------------------------ * jquery * ------------------------------------------------------------------------ */ $.fn[name$7] = popover._jqueryinterface; $.fn[name$7].constructor = popover; $.fn[name$7].noconflict = function () { $.fn[name$7] = jquery_no_conflict$7; return popover._jqueryinterface; }; /** * ------------------------------------------------------------------------ * constants * ------------------------------------------------------------------------ */ var name$8 = 'scrollspy'; var version$8 = '4.3.1'; var data_key$8 = 'bs.scrollspy'; var event_key$8 = "." + data_key$8; var data_api_key$6 = '.data-api'; var jquery_no_conflict$8 = $.fn[name$8]; var default$6 = { offset: 10, method: 'auto', target: '' }; var defaulttype$6 = { offset: 'number', method: 'string', target: '(string|element)' }; var event$8 = { activate: "activate" + event_key$8, scroll: "scroll" + event_key$8, load_data_api: "load" + event_key$8 + data_api_key$6 }; var classname$8 = { dropdown_item: 'dropdown-item', dropdown_menu: 'dropdown-menu', active: 'active' }; var selector$8 = { data_spy: '[data-spy="scroll"]', active: '.active', nav_list_group: '.nav, .list-group', nav_links: '.nav-link', nav_items: '.nav-item', list_items: '.list-group-item', dropdown: '.dropdown', dropdown_items: '.dropdown-item', dropdown_toggle: '.dropdown-toggle' }; var offsetmethod = { offset: 'offset', position: 'position' /** * ------------------------------------------------------------------------ * class definition * ------------------------------------------------------------------------ */ }; var scrollspy = /*#__pure__*/ function () { function scrollspy(element, config) { var _this = this; this._element = element; this._scrollelement = element.tagname === 'body' ? window : element; this._config = this._getconfig(config); this._selector = this._config.target + " " + selector$8.nav_links + "," + (this._config.target + " " + selector$8.list_items + ",") + (this._config.target + " " + selector$8.dropdown_items); this._offsets = []; this._targets = []; this._activetarget = null; this._scrollheight = 0; $(this._scrollelement).on(event$8.scroll, function (event) { return _this._process(event); }); this.refresh(); this._process(); } // getters var _proto = scrollspy.prototype; // public _proto.refresh = function refresh() { var _this2 = this; var automethod = this._scrollelement === this._scrollelement.window ? offsetmethod.offset : offsetmethod.position; var offsetmethod = this._config.method === 'auto' ? automethod : this._config.method; var offsetbase = offsetmethod === offsetmethod.position ? this._getscrolltop() : 0; this._offsets = []; this._targets = []; this._scrollheight = this._getscrollheight(); var targets = [].slice.call(document.queryselectorall(this._selector)); targets.map(function (element) { var target; var targetselector = util.getselectorfromelement(element); if (targetselector) { target = document.queryselector(targetselector); } if (target) { var targetbcr = target.getboundingclientrect(); if (targetbcr.width || targetbcr.height) { // todo (fat): remove sketch reliance on jquery position/offset return [$(target)[offsetmethod]().top + offsetbase, targetselector]; } } return null; }).filter(function (item) { return item; }).sort(function (a, b) { return a[0] - b[0]; }).foreach(function (item) { _this2._offsets.push(item[0]); _this2._targets.push(item[1]); }); }; _proto.dispose = function dispose() { $.removedata(this._element, data_key$8); $(this._scrollelement).off(event_key$8); this._element = null; this._scrollelement = null; this._config = null; this._selector = null; this._offsets = null; this._targets = null; this._activetarget = null; this._scrollheight = null; } // private ; _proto._getconfig = function _getconfig(config) { config = _objectspread({}, default$6, typeof config === 'object' && config ? config : {}); if (typeof config.target !== 'string') { var id = $(config.target).attr('id'); if (!id) { id = util.getuid(name$8); $(config.target).attr('id', id); } config.target = "#" + id; } util.typecheckconfig(name$8, config, defaulttype$6); return config; }; _proto._getscrolltop = function _getscrolltop() { return this._scrollelement === window ? this._scrollelement.pageyoffset : this._scrollelement.scrolltop; }; _proto._getscrollheight = function _getscrollheight() { return this._scrollelement.scrollheight || math.max(document.body.scrollheight, document.documentelement.scrollheight); }; _proto._getoffsetheight = function _getoffsetheight() { return this._scrollelement === window ? window.innerheight : this._scrollelement.getboundingclientrect().height; }; _proto._process = function _process() { var scrolltop = this._getscrolltop() + this._config.offset; var scrollheight = this._getscrollheight(); var maxscroll = this._config.offset + scrollheight - this._getoffsetheight(); if (this._scrollheight !== scrollheight) { this.refresh(); } if (scrolltop >= maxscroll) { var target = this._targets[this._targets.length - 1]; if (this._activetarget !== target) { this._activate(target); } return; } if (this._activetarget && scrolltop < this._offsets[0] && this._offsets[0] > 0) { this._activetarget = null; this._clear(); return; } var offsetlength = this._offsets.length; for (var i = offsetlength; i--;) { var isactivetarget = this._activetarget !== this._targets[i] && scrolltop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrolltop < this._offsets[i + 1]); if (isactivetarget) { this._activate(this._targets[i]); } } }; _proto._activate = function _activate(target) { this._activetarget = target; this._clear(); var queries = this._selector.split(',').map(function (selector) { return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; }); var $link = $([].slice.call(document.queryselectorall(queries.join(',')))); if ($link.hasclass(classname$8.dropdown_item)) { $link.closest(selector$8.dropdown).find(selector$8.dropdown_toggle).addclass(classname$8.active); $link.addclass(classname$8.active); } else { // set triggered link as active $link.addclass(classname$8.active); // set triggered links parents as active // with both