Comparing version 5.0.1 to 5.0.2
/*! | ||
* Bootstrap v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
*/ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if("default"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},n=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},o=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s="#"+s.split("#")[1]),e=s&&"#"!==s?s.trim():null}return e},r=t=>{const e=o(t);return e&&document.querySelector(e)?e:null},a=t=>{const e=o(t);return e?document.querySelector(e):null},l=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0},c=t=>{t.dispatchEvent(new Event("transitionend"))},h=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),d=t=>h(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?i.findOne(t):null,u=(t,e)=>{let s=!1;const i=e+5;t.addEventListener("transitionend",(function e(){s=!0,t.removeEventListener("transitionend",e)})),setTimeout(()=>{s||c(t)},i)},g=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&h(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)})},f=t=>{if(!t)return!1;if(t.style&&t.parentNode&&t.parentNode.style){const e=getComputedStyle(t),s=getComputedStyle(t.parentNode);return"none"!==e.display&&"none"!==s.display&&"hidden"!==e.visibility}return!1},p=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),m=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?m(t.parentNode):null},_=()=>{},b=t=>t.offsetHeight,v=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},y=()=>"rtl"===document.documentElement.dir,w=t=>{var e;e=()=>{const e=v();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()},E=t=>{"function"==typeof t&&t()},T=new Map;var A={set(t,e,s){T.has(t)||T.set(t,new Map);const i=T.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>T.has(t)&&T.get(t).get(e)||null,remove(t,e){if(!T.has(t))return;const s=T.get(t);s.delete(e),0===s.size&&T.delete(t)}};const k=/[^.]*(?=\..*)\.|.*/,L=/\..*/,C=/::\d+$/,D={};let N=1;const S={mouseenter:"mouseover",mouseleave:"mouseout"},O=/^(mouseenter|mouseleave)/i,I=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(t,e){return e&&`${e}::${N++}`||t.uidEvent||N++}function j(t){const e=x(t);return t.uidEvent=e,D[e]=D[e]||{},D[e]}function P(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;n<o;n++){const o=t[i[n]];if(o.originalHandler===e&&o.delegationSelector===s)return o}return null}function M(t,e,s){const i="string"==typeof e,n=i?s:e;let o=B(t);return I.has(o)||(o=t),[i,n,o]}function H(t,e,s,i,n){if("string"!=typeof e||!t)return;if(s||(s=i,i=null),O.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};i?i=t(i):s=t(s)}const[o,r,a]=M(e,s,i),l=j(t),c=l[a]||(l[a]={}),h=P(c,r,o?s:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=x(r,e.replace(k,"")),u=o?function(t,e,s){return function i(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return n.delegateTarget=r,i.oneOff&&$.off(t,n.type,e,s),s.apply(r,[n]);return null}}(t,s,i):function(t,e){return function s(i){return i.delegateTarget=t,s.oneOff&&$.off(t,i.type,e),e.apply(t,[i])}}(t,s);u.delegationSelector=o?s:null,u.originalHandler=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function R(t,e,s,i,n){const o=P(e[s],i,n);o&&(t.removeEventListener(s,o,Boolean(n)),delete e[s][o.uidEvent])}function B(t){return t=t.replace(L,""),S[t]||t}const $={on(t,e,s,i){H(t,e,s,i,!1)},one(t,e,s,i){H(t,e,s,i,!0)},off(t,e,s,i){if("string"!=typeof e||!t)return;const[n,o,r]=M(e,s,i),a=r!==e,l=j(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void R(t,l,r,o,n?s:null)}c&&Object.keys(l).forEach(s=>{!function(t,e,s,i){const n=e[s]||{};Object.keys(n).forEach(o=>{if(o.includes(i)){const i=n[o];R(t,e,s,i.originalHandler,i.delegationSelector)}})}(t,l,s,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(s=>{const i=s.replace(C,"");if(!a||e.includes(i)){const e=h[s];R(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=v(),n=B(e),o=e!==n,r=I.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&i&&(a=i.Event(e,s),i(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==s&&Object.keys(s).forEach(t=>{Object.defineProperty(d,t,{get:()=>s[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}};class z{constructor(t){(t=d(t))&&(this._element=t,A.set(this._element,this.constructor.DATA_KEY,this))}dispose(){A.remove(this._element,this.constructor.DATA_KEY),$.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,s=!0){if(!s)return void E(t);const i=l(e);$.one(e,"transitionend",()=>E(t)),u(e,i)}static getInstance(t){return A.get(t,this.DATA_KEY)}static get VERSION(){return"5.0.1"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}class U extends z{static get NAME(){return"alert"}close(t){const e=t?this._getRootElement(t):this._element,s=this._triggerCloseEvent(e);null===s||s.defaultPrevented||this._removeElement(e)}_getRootElement(t){return a(t)||t.closest(".alert")}_triggerCloseEvent(t){return $.trigger(t,"close.bs.alert")}_removeElement(t){t.classList.remove("show");const e=t.classList.contains("fade");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.parentNode&&t.parentNode.removeChild(t),$.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){let e=A.get(this,"bs.alert");e||(e=new U(this)),"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}$.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',U.handleDismiss(new U)),w(U);class q extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){let e=A.get(this,"bs.button");e||(e=new q(this)),"toggle"===t&&e[t]()}))}}function F(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function W(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}$.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');let s=A.get(e,"bs.button");s||(s=new q(e)),s.toggle()}),w(q);const K={setDataAttribute(t,e,s){t.setAttribute("data-bs-"+W(e),s)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+W(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(s=>{let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=F(t.dataset[s])}),e},getDataAttribute:(t,e)=>F(t.getAttribute("data-bs-"+W(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Q={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},X="next",Y="prev",G="left",Z="right";class J extends z{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=i.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return V}static get NAME(){return"carousel"}next(){this._isSliding||this._slide(X)}nextWhenVisible(){!document.hidden&&f(this._element)&&this.next()}prev(){this._isSliding||this._slide(Y)}pause(t){t||(this._isPaused=!0),i.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(c(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=i.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void $.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const s=t>e?X:Y;this._slide(s,this._items[t])}_getConfig(t){return t={...V,...t},g("carousel",t,Q),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Z:G)}_addEventListeners(){this._config.keyboard&&$.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&($.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),$.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},s=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};i.find(".carousel-item img",this._element).forEach(t=>{$.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?($.on(this._element,"pointerdown.bs.carousel",e=>t(e)),$.on(this._element,"pointerup.bs.carousel",t=>s(t)),this._element.classList.add("pointer-event")):($.on(this._element,"touchstart.bs.carousel",e=>t(e)),$.on(this._element,"touchmove.bs.carousel",t=>e(t)),$.on(this._element,"touchend.bs.carousel",t=>s(t)))}_keydown(t){/input|textarea/i.test(t.target.tagName)||("ArrowLeft"===t.key?(t.preventDefault(),this._slide(Z)):"ArrowRight"===t.key&&(t.preventDefault(),this._slide(G)))}_getItemIndex(t){return this._items=t&&t.parentNode?i.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const s=t===X,i=t===Y,n=this._getItemIndex(e),o=this._items.length-1;if((i&&0===n||s&&n===o)&&!this._config.wrap)return e;const r=(n+(i?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]}_triggerSlideEvent(t,e){const s=this._getItemIndex(t),n=this._getItemIndex(i.findOne(".active.carousel-item",this._element));return $.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:s})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=i.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const s=i.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e<s.length;e++)if(Number.parseInt(s[e].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(t)){s[e].classList.add("active"),s[e].setAttribute("aria-current","true");break}}}_updateInterval(){const t=this._activeElement||i.findOne(".active.carousel-item",this._element);if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const s=this._directionToOrder(t),n=i.findOne(".active.carousel-item",this._element),o=this._getItemIndex(n),r=e||this._getItemByOrder(s,n),a=this._getItemIndex(r),l=Boolean(this._interval),c=s===X,h=c?"carousel-item-start":"carousel-item-end",d=c?"carousel-item-next":"carousel-item-prev",u=this._orderToDirection(s);if(r&&r.classList.contains("active"))return void(this._isSliding=!1);if(this._triggerSlideEvent(r,u).defaultPrevented)return;if(!n||!r)return;this._isSliding=!0,l&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;const g=()=>{$.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains("slide")){r.classList.add(d),b(r),n.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add("active"),n.classList.remove("active",d,h),this._isSliding=!1,setTimeout(g,0)};this._queueCallback(t,n,!0)}else n.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,g();l&&this.cycle()}_directionToOrder(t){return[Z,G].includes(t)?y()?t===G?Y:X:t===G?X:Y:t}_orderToDirection(t){return[X,Y].includes(t)?y()?t===Y?G:Z:t===Y?Z:G:t}static carouselInterface(t,e){let s=A.get(t,"bs.carousel"),i={...V,...K.getDataAttributes(t)};"object"==typeof e&&(i={...i,...e});const n="string"==typeof e?e:i.slide;if(s||(s=new J(t,i)),"number"==typeof e)s.to(e);else if("string"==typeof n){if(void 0===s[n])throw new TypeError(`No method named "${n}"`);s[n]()}else i.interval&&i.ride&&(s.pause(),s.cycle())}static jQueryInterface(t){return this.each((function(){J.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=a(this);if(!e||!e.classList.contains("carousel"))return;const s={...K.getDataAttributes(e),...K.getDataAttributes(this)},i=this.getAttribute("data-bs-slide-to");i&&(s.interval=!1),J.carouselInterface(e,s),i&&A.get(e,"bs.carousel").to(i),t.preventDefault()}}$.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",J.dataApiClickHandler),$.on(window,"load.bs.carousel.data-api",()=>{const t=i.find('[data-bs-ride="carousel"]');for(let e=0,s=t.length;e<s;e++)J.carouselInterface(t[e],A.get(t[e],"bs.carousel"))}),w(J);const tt={toggle:!0,parent:""},et={toggle:"boolean",parent:"(string|element)"};class st extends z{constructor(t,e){super(t),this._isTransitioning=!1,this._config=this._getConfig(e),this._triggerArray=i.find(`[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`);const s=i.find('[data-bs-toggle="collapse"]');for(let t=0,e=s.length;t<e;t++){const e=s[t],n=r(e),o=i.find(n).filter(t=>t===this._element);null!==n&&o.length&&(this._selector=n,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return tt}static get NAME(){return"collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=i.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const s=i.findOne(this._selector);if(t){const i=t.find(t=>s!==t);if(e=i?A.get(i,"bs.collapse"):null,e&&e._isTransitioning)return}if($.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{s!==t&&st.collapseInterface(t,"hide"),e||A.set(t,"bs.collapse",null)});const n=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[n]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[n]="",this.setTransitioning(!1),$.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[n]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if($.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",b(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t<e;t++){const e=this._triggerArray[t],s=a(e);s&&!s.classList.contains("show")&&(e.classList.add("collapsed"),e.setAttribute("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[t]="",this._queueCallback(()=>{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),$.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...tt,...t}).toggle=Boolean(t.toggle),g("collapse",t,et),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;t=d(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return i.find(e,t).forEach(t=>{const e=a(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const s=t.classList.contains("show");e.forEach(t=>{s?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",s)})}static collapseInterface(t,e){let s=A.get(t,"bs.collapse");const i={...tt,...K.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!s&&i.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(i.toggle=!1),s||(s=new st(t,i)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){st.collapseInterface(this,t)}))}}$.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=K.getDataAttributes(this),s=r(this);i.find(s).forEach(t=>{const s=A.get(t,"bs.collapse");let i;s?(null===s._parent&&"string"==typeof e.parent&&(s._config.parent=e.parent,s._parent=s._getParent()),i="toggle"):i=e,st.collapseInterface(t,i)})})),w(st);const it=new RegExp("ArrowUp|ArrowDown|Escape"),nt=y()?"top-end":"top-start",ot=y()?"top-start":"top-end",rt=y()?"bottom-end":"bottom-start",at=y()?"bottom-start":"bottom-end",lt=y()?"left-start":"right-start",ct=y()?"right-start":"left-start",ht={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},dt={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class ut extends z{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return ht}static get DefaultType(){return dt}static get NAME(){return"dropdown"}toggle(){p(this._element)||(this._element.classList.contains("show")?this.hide():this.show())}show(){if(p(this._element)||this._menu.classList.contains("show"))return;const t=ut.getParentFromElement(this._element),e={relatedTarget:this._element};if(!$.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)K.setDataAttribute(this._menu,"popper","none");else{if(void 0===s)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:h(this._config.reference)?e=d(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=s.createPopper(e,this._menu,i),n&&K.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>$.on(t,"mouseover",_)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),$.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(p(this._element)||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){$.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){$.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>$.off(t,"mouseover",_)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),K.removeDataAttribute(this._menu,"popper"),$.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...K.getDataAttributes(this._element),...t},g("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!h(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return i.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return lt;if(t.classList.contains("dropstart"))return ct;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ot:nt:e?at:rt}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem(t){const e=i.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(f);if(!e.length)return;let s=e.indexOf(t.target);"ArrowUp"===t.key&&s>0&&s--,"ArrowDown"===t.key&&s<e.length-1&&s++,s=-1===s?0:s,e[s].focus()}static dropdownInterface(t,e){let s=A.get(t,"bs.dropdown");if(s||(s=new ut(t,"object"==typeof e?e:null)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){ut.dropdownInterface(this,t)}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=i.find('[data-bs-toggle="dropdown"]');for(let s=0,i=e.length;s<i;s++){const i=A.get(e[s],"bs.dropdown");if(!i||!1===i._config.autoClose)continue;if(!i._element.classList.contains("show"))continue;const n={relatedTarget:i._element};if(t){const e=t.composedPath(),s=e.includes(i._menu);if(e.includes(i._element)||"inside"===i._config.autoClose&&!s||"outside"===i._config.autoClose&&s)continue;if(i._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;"click"===t.type&&(n.clickEvent=t)}i._completeHide(n)}}static getParentFromElement(t){return a(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!it.test(t.key))return;const e=this.classList.contains("show");if(!e&&"Escape"===t.key)return;if(t.preventDefault(),t.stopPropagation(),p(this))return;const s=()=>this.matches('[data-bs-toggle="dropdown"]')?this:i.prev(this,'[data-bs-toggle="dropdown"]')[0];if("Escape"===t.key)return s().focus(),void ut.clearMenus();e||"ArrowUp"!==t.key&&"ArrowDown"!==t.key?e&&"Space"!==t.key?ut.getInstance(s())._selectMenuItem(t):ut.clearMenus():s().click()}}$.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',ut.dataApiKeydownHandler),$.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",ut.dataApiKeydownHandler),$.on(document,"click.bs.dropdown.data-api",ut.clearMenus),$.on(document,"keyup.bs.dropdown.data-api",ut.clearMenus),$.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),ut.dropdownInterface(this)})),w(ut);const gt=()=>{const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)},ft=(t=gt())=>{pt(),mt("body","paddingRight",e=>e+t),mt(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),mt(".sticky-top","marginRight",e=>e-t)},pt=()=>{const t=document.body.style.overflow;t&&K.setDataAttribute(document.body,"overflow",t),document.body.style.overflow="hidden"},mt=(t,e,s)=>{const n=gt();i.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+n)return;const i=t.style[e],o=window.getComputedStyle(t)[e];K.setDataAttribute(t,e,i),t.style[e]=s(Number.parseFloat(o))+"px"})},_t=()=>{bt("body","overflow"),bt("body","paddingRight"),bt(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),bt(".sticky-top","marginRight")},bt=(t,e)=>{i.find(t).forEach(t=>{const s=K.getDataAttribute(t,e);void 0===s?t.style.removeProperty(e):(K.removeDataAttribute(t,e),t.style[e]=s)})},vt={isVisible:!0,isAnimated:!1,rootElement:document.body,clickCallback:null},yt={isVisible:"boolean",isAnimated:"boolean",rootElement:"element",clickCallback:"(function|null)"};class wt{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&b(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{E(t)})):E(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),E(t)})):E(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className="modal-backdrop",this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...vt,..."object"==typeof t?t:{}}).rootElement=t.rootElement||document.body,g("backdrop",t,yt),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),$.on(this._getElement(),"mousedown.bs.backdrop",()=>{E(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&($.off(this._element,"mousedown.bs.backdrop"),this._getElement().parentNode.removeChild(this._element),this._isAppended=!1)}_emulateAnimation(t){if(!this._config.isAnimated)return void E(t);const e=l(this._getElement());$.one(this._getElement(),"transitionend",()=>E(t)),u(this._getElement(),e)}}const Et={backdrop:!0,keyboard:!0,focus:!0},Tt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class At extends z{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=i.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1}static get Default(){return Et}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||this._isTransitioning)return;this._isAnimated()&&(this._isTransitioning=!0);const e=$.trigger(this._element,"show.bs.modal",{relatedTarget:t});this._isShown||e.defaultPrevented||(this._isShown=!0,ft(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),$.on(this._element,"click.dismiss.bs.modal",'[data-bs-dismiss="modal"]',t=>this.hide(t)),$.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{$.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if($.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),$.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),$.off(this._element,"click.dismiss.bs.modal"),$.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>$.off(t,".bs.modal")),this._backdrop.dispose(),super.dispose(),$.off(document,"focusin.bs.modal")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new wt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...Et,...K.getDataAttributes(this._element),...t},g("modal",t,Tt),t}_showElement(t){const e=this._isAnimated(),s=i.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,s&&(s.scrollTop=0),e&&b(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,$.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_enforceFocus(){$.off(document,"focusin.bs.modal"),$.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?$.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):$.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?$.on(window,"resize.bs.modal",()=>this._adjustDialog()):$.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),_t(),$.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){$.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if($.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");const e=l(this._dialog);$.off(this._element,"transitionend"),$.one(this._element,"transitionend",()=>{this._element.classList.remove("modal-static"),t||($.one(this._element,"transitionend",()=>{this._element.style.overflowY=""}),u(this._element,e))}),u(this._element,e),this._element.focus()}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=gt(),s=e>0;(!s&&t&&!y()||s&&!t&&y())&&(this._element.style.paddingLeft=e+"px"),(s&&!t&&!y()||!s&&t&&y())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const s=At.getInstance(this)||new At(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}$.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=a(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),$.one(e,"show.bs.modal",t=>{t.defaultPrevented||$.one(e,"hidden.bs.modal",()=>{f(this)&&this.focus()})}),(At.getInstance(e)||new At(e)).toggle(this)})),w(At);const kt={backdrop:!0,keyboard:!0,scroll:!1},Lt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Ct extends z{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return kt}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||$.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(ft(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{$.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&($.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||($.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||_t(),$.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),$.off(document,"focusin.bs.offcanvas")}_getConfig(t){return t={...kt,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},g("offcanvas",t,Lt),t}_initializeBackDrop(){return new wt({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){$.off(document,"focusin.bs.offcanvas"),$.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){$.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),$.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=A.get(this,"bs.offcanvas")||new Ct(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}$.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=a(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),p(this))return;$.one(e,"hidden.bs.offcanvas",()=>{f(this)&&this.focus()});const s=i.findOne(".offcanvas.show");s&&s!==e&&Ct.getInstance(s).hide(),(A.get(e,"bs.offcanvas")||new Ct(e)).toggle(this)})),$.on(window,"load.bs.offcanvas.data-api",()=>{i.find(".offcanvas.show").forEach(t=>(A.get(t,"bs.offcanvas")||new Ct(t)).show())}),w(Ct);const Dt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Nt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,St=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ot=(t,e)=>{const s=t.nodeName.toLowerCase();if(e.includes(s))return!Dt.has(s)||Boolean(Nt.test(t.nodeValue)||St.test(t.nodeValue));const i=e.filter(t=>t instanceof RegExp);for(let t=0,e=i.length;t<e;t++)if(i[t].test(s))return!0;return!1};function It(t,e,s){if(!t.length)return t;if(s&&"function"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),n=Object.keys(e),o=[].concat(...i.body.querySelectorAll("*"));for(let t=0,s=o.length;t<s;t++){const s=o[t],i=s.nodeName.toLowerCase();if(!n.includes(i)){s.parentNode.removeChild(s);continue}const r=[].concat(...s.attributes),a=[].concat(e["*"]||[],e[i]||[]);r.forEach(t=>{Ot(t,a)||s.removeAttribute(t.nodeName)})}return i.body.innerHTML}const xt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),jt=new Set(["sanitize","allowList","sanitizeFn"]),Pt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Mt={AUTO:"auto",TOP:"top",RIGHT:y()?"left":"right",BOTTOM:"bottom",LEFT:y()?"right":"left"},Ht={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Rt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Bt extends z{constructor(t,e){if(void 0===s)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Ht}static get NAME(){return"tooltip"}static get Event(){return Rt}static get DefaultType(){return Pt}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),$.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=$.trigger(this._element,this.constructor.Event.SHOW),e=m(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;const o=this.getTipElement(),r=n(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this._config.animation&&o.classList.add("fade");const a="function"==typeof this._config.placement?this._config.placement.call(this,o,this._element):this._config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);const{container:c}=this._config;A.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(c.appendChild(o),$.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=s.createPopper(this._element,o,this._getPopperConfig(l)),o.classList.add("show");const h="function"==typeof this._config.customClass?this._config.customClass():this._config.customClass;h&&o.classList.add(...h.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{$.on(t,"mouseover",_)});const d=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,$.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement();if($.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>$.off(t,"mouseover",_)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.parentNode&&t.parentNode.removeChild(t),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),$.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return h(e)?(e=d(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=It(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const s=this.constructor.DATA_KEY;return(e=e||A.get(t.delegateTarget,s))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A.set(t.delegateTarget,s,e)),e}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getAttachment(t){return Mt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)$.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;$.on(this._element,e,this._config.selector,t=>this._enter(t)),$.on(this._element,s,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},$.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=K.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{jt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:d(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),g("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=It(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(xt);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){let e=A.get(this,"bs.tooltip");const s="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new Bt(this,s)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}w(Bt);const $t=new RegExp("(^|\\s)bs-popover\\S+","g"),zt={...Bt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Ut={...Bt.DefaultType,content:"(string|element|function)"},qt={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Ft extends Bt{static get Default(){return zt}static get NAME(){return"popover"}static get Event(){return qt}static get DefaultType(){return Ut}isWithContent(){return this.getTitle()||this._getContent()}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(i.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match($t);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){let e=A.get(this,"bs.popover");const s="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new Ft(this,s),A.set(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}w(Ft);const Wt={offset:10,method:"auto",target:""},Kt={offset:"number",method:"string",target:"(string|element)"};class Vt extends z{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,$.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Wt}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),i.find(this._selector).map(t=>{const n=r(t),o=n?i.findOne(n):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[K[e](o).top+s,n]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){$.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){if("string"!=typeof(t={...Wt,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target&&h(t.target)){let{id:e}=t.target;e||(e=n("scrollspy"),t.target.id=e),t.target="#"+e}return g("scrollspy",t,Kt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),s=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=s){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=this._selector.split(",").map(e=>`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),s=i.findOne(e.join(","));s.classList.contains("dropdown-item")?(i.findOne(".dropdown-toggle",s.closest(".dropdown")).classList.add("active"),s.classList.add("active")):(s.classList.add("active"),i.parents(s,".nav, .list-group").forEach(t=>{i.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),i.prev(t,".nav-item").forEach(t=>{i.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),$.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){i.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Vt.getInstance(this)||new Vt(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}$.on(window,"load.bs.scrollspy.data-api",()=>{i.find('[data-bs-spy="scroll"]').forEach(t=>new Vt(t))}),w(Vt);class Qt extends z{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=a(this._element),s=this._element.closest(".nav, .list-group");if(s){const e="UL"===s.nodeName||"OL"===s.nodeName?":scope > li > .active":".active";t=i.find(e,s),t=t[t.length-1]}const n=t?$.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if($.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,s);const o=()=>{$.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),$.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,s){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.children(e,".active"):i.find(":scope > li > .active",e))[0],o=s&&n&&n.classList.contains("fade"),r=()=>this._transitionComplete(t,n,s);n&&o?(n.classList.remove("show"),this._queueCallback(r,t,!0)):r()}_transitionComplete(t,e,s){if(e){e.classList.remove("active");const t=i.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),b(t),t.classList.contains("fade")&&t.classList.add("show");let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&i.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}s&&s()}static jQueryInterface(t){return this.each((function(){const e=A.get(this,"bs.tab")||new Qt(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}$.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),p(this)||(A.get(this,"bs.tab")||new Qt(this)).show()})),w(Qt);const Xt={animation:"boolean",autohide:"boolean",delay:"number"},Yt={animation:!0,autohide:!0,delay:5e3};class Gt extends z{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Xt}static get Default(){return Yt}static get NAME(){return"toast"}show(){$.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),b(this._element),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),$.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&($.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.remove("show"),this._queueCallback(()=>{this._element.classList.add("hide"),$.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...Yt,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},g("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){$.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide()),$.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),$.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),$.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),$.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){let e=A.get(this,"bs.toast");if(e||(e=new Gt(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return w(Gt),{Alert:U,Button:q,Carousel:J,Collapse:st,Dropdown:ut,Modal:At,Offcanvas:Ct,Popover:Ft,ScrollSpy:Vt,Tab:Qt,Toast:Gt,Tooltip:Bt}})); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if("default"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},n=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},o=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s="#"+s.split("#")[1]),e=s&&"#"!==s?s.trim():null}return e},r=t=>{const e=o(t);return e&&document.querySelector(e)?e:null},a=t=>{const e=o(t);return e?document.querySelector(e):null},l=t=>{t.dispatchEvent(new Event("transitionend"))},c=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),h=t=>c(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?i.findOne(t):null,d=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&c(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)})},u=t=>!(!c(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),g=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),p=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?p(t.parentNode):null},f=()=>{},m=t=>t.offsetHeight,_=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},b=[],v=()=>"rtl"===document.documentElement.dir,y=t=>{var e;e=()=>{const e=_();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},"loading"===document.readyState?(b.length||document.addEventListener("DOMContentLoaded",()=>{b.forEach(t=>t())}),b.push(e)):e()},w=t=>{"function"==typeof t&&t()},E=(t,e,s=!0)=>{if(!s)return void w(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const o=({target:s})=>{s===e&&(n=!0,e.removeEventListener("transitionend",o),w(t))};e.addEventListener("transitionend",o),setTimeout(()=>{n||l(e)},i)},A=(t,e,s,i)=>{let n=t.indexOf(e);if(-1===n)return t[!s&&i?t.length-1:0];const o=t.length;return n+=s?1:-1,i&&(n=(n+o)%o),t[Math.max(0,Math.min(n,o-1))]},T=/[^.]*(?=\..*)\.|.*/,C=/\..*/,k=/::\d+$/,L={};let O=1;const D={mouseenter:"mouseover",mouseleave:"mouseout"},I=/^(mouseenter|mouseleave)/i,N=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function S(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function x(t){const e=S(t);return t.uidEvent=e,L[e]=L[e]||{},L[e]}function M(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;n<o;n++){const o=t[i[n]];if(o.originalHandler===e&&o.delegationSelector===s)return o}return null}function P(t,e,s){const i="string"==typeof e,n=i?s:e;let o=R(t);return N.has(o)||(o=t),[i,n,o]}function j(t,e,s,i,n){if("string"!=typeof e||!t)return;if(s||(s=i,i=null),I.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};i?i=t(i):s=t(s)}const[o,r,a]=P(e,s,i),l=x(t),c=l[a]||(l[a]={}),h=M(c,r,o?s:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=S(r,e.replace(T,"")),u=o?function(t,e,s){return function i(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return n.delegateTarget=r,i.oneOff&&B.off(t,n.type,e,s),s.apply(r,[n]);return null}}(t,s,i):function(t,e){return function s(i){return i.delegateTarget=t,s.oneOff&&B.off(t,i.type,e),e.apply(t,[i])}}(t,s);u.delegationSelector=o?s:null,u.originalHandler=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function H(t,e,s,i,n){const o=M(e[s],i,n);o&&(t.removeEventListener(s,o,Boolean(n)),delete e[s][o.uidEvent])}function R(t){return t=t.replace(C,""),D[t]||t}const B={on(t,e,s,i){j(t,e,s,i,!1)},one(t,e,s,i){j(t,e,s,i,!0)},off(t,e,s,i){if("string"!=typeof e||!t)return;const[n,o,r]=P(e,s,i),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void H(t,l,r,o,n?s:null)}c&&Object.keys(l).forEach(s=>{!function(t,e,s,i){const n=e[s]||{};Object.keys(n).forEach(o=>{if(o.includes(i)){const i=n[o];H(t,e,s,i.originalHandler,i.delegationSelector)}})}(t,l,s,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(s=>{const i=s.replace(k,"");if(!a||e.includes(i)){const e=h[s];H(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=_(),n=R(e),o=e!==n,r=N.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&i&&(a=i.Event(e,s),i(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==s&&Object.keys(s).forEach(t=>{Object.defineProperty(d,t,{get:()=>s[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},$=new Map;var W={set(t,e,s){$.has(t)||$.set(t,new Map);const i=$.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>$.has(t)&&$.get(t).get(e)||null,remove(t,e){if(!$.has(t))return;const s=$.get(t);s.delete(e),0===s.size&&$.delete(t)}};class q{constructor(t){(t=h(t))&&(this._element=t,W.set(this._element,this.constructor.DATA_KEY,this))}dispose(){W.remove(this._element,this.constructor.DATA_KEY),B.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,s=!0){E(t,e,s)}static getInstance(t){return W.get(t,this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.0.2"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}class z extends q{static get NAME(){return"alert"}close(t){const e=t?this._getRootElement(t):this._element,s=this._triggerCloseEvent(e);null===s||s.defaultPrevented||this._removeElement(e)}_getRootElement(t){return a(t)||t.closest(".alert")}_triggerCloseEvent(t){return B.trigger(t,"close.bs.alert")}_removeElement(t){t.classList.remove("show");const e=t.classList.contains("fade");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.remove(),B.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}B.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',z.handleDismiss(new z)),y(z);class F extends q{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=F.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function U(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function K(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}B.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');F.getOrCreateInstance(e).toggle()}),y(F);const V={setDataAttribute(t,e,s){t.setAttribute("data-bs-"+K(e),s)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+K(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(s=>{let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=U(t.dataset[s])}),e},getDataAttribute:(t,e)=>U(t.getAttribute("data-bs-"+K(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},Q={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},X={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Y="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z};class et extends q{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=i.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return Q}static get NAME(){return"carousel"}next(){this._slide(Y)}nextWhenVisible(){!document.hidden&&u(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),i.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(l(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=i.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void B.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const s=t>e?Y:G;this._slide(s,this._items[t])}_getConfig(t){return t={...Q,...V.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("carousel",t,X),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&B.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(B.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),B.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},s=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};i.find(".carousel-item img",this._element).forEach(t=>{B.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(B.on(this._element,"pointerdown.bs.carousel",e=>t(e)),B.on(this._element,"pointerup.bs.carousel",t=>s(t)),this._element.classList.add("pointer-event")):(B.on(this._element,"touchstart.bs.carousel",e=>t(e)),B.on(this._element,"touchmove.bs.carousel",t=>e(t)),B.on(this._element,"touchend.bs.carousel",t=>s(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?i.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const s=t===Y;return A(this._items,e,s,this._config.wrap)}_triggerSlideEvent(t,e){const s=this._getItemIndex(t),n=this._getItemIndex(i.findOne(".active.carousel-item",this._element));return B.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:s})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=i.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const s=i.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e<s.length;e++)if(Number.parseInt(s[e].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(t)){s[e].classList.add("active"),s[e].setAttribute("aria-current","true");break}}}_updateInterval(){const t=this._activeElement||i.findOne(".active.carousel-item",this._element);if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const s=this._directionToOrder(t),n=i.findOne(".active.carousel-item",this._element),o=this._getItemIndex(n),r=e||this._getItemByOrder(s,n),a=this._getItemIndex(r),l=Boolean(this._interval),c=s===Y,h=c?"carousel-item-start":"carousel-item-end",d=c?"carousel-item-next":"carousel-item-prev",u=this._orderToDirection(s);if(r&&r.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(r,u).defaultPrevented)return;if(!n||!r)return;this._isSliding=!0,l&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;const g=()=>{B.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains("slide")){r.classList.add(d),m(r),n.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add("active"),n.classList.remove("active",d,h),this._isSliding=!1,setTimeout(g,0)};this._queueCallback(t,n,!0)}else n.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,g();l&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?v()?t===Z?G:Y:t===Z?Y:G:t}_orderToDirection(t){return[Y,G].includes(t)?v()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const s=et.getOrCreateInstance(t,e);let{_config:i}=s;"object"==typeof e&&(i={...i,...e});const n="string"==typeof e?e:i.slide;if("number"==typeof e)s.to(e);else if("string"==typeof n){if(void 0===s[n])throw new TypeError(`No method named "${n}"`);s[n]()}else i.interval&&i.ride&&(s.pause(),s.cycle())}static jQueryInterface(t){return this.each((function(){et.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=a(this);if(!e||!e.classList.contains("carousel"))return;const s={...V.getDataAttributes(e),...V.getDataAttributes(this)},i=this.getAttribute("data-bs-slide-to");i&&(s.interval=!1),et.carouselInterface(e,s),i&&et.getInstance(e).to(i),t.preventDefault()}}B.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",et.dataApiClickHandler),B.on(window,"load.bs.carousel.data-api",()=>{const t=i.find('[data-bs-ride="carousel"]');for(let e=0,s=t.length;e<s;e++)et.carouselInterface(t[e],et.getInstance(t[e]))}),y(et);const st={toggle:!0,parent:""},it={toggle:"boolean",parent:"(string|element)"};class nt extends q{constructor(t,e){super(t),this._isTransitioning=!1,this._config=this._getConfig(e),this._triggerArray=i.find(`[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`);const s=i.find('[data-bs-toggle="collapse"]');for(let t=0,e=s.length;t<e;t++){const e=s[t],n=r(e),o=i.find(n).filter(t=>t===this._element);null!==n&&o.length&&(this._selector=n,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return st}static get NAME(){return"collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=i.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const s=i.findOne(this._selector);if(t){const i=t.find(t=>s!==t);if(e=i?nt.getInstance(i):null,e&&e._isTransitioning)return}if(B.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{s!==t&&nt.collapseInterface(t,"hide"),e||W.set(t,"bs.collapse",null)});const n=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[n]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[n]="",this.setTransitioning(!1),B.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[n]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(B.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",m(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t<e;t++){const e=this._triggerArray[t],s=a(e);s&&!s.classList.contains("show")&&(e.classList.add("collapsed"),e.setAttribute("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[t]="",this._queueCallback(()=>{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),B.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...st,...t}).toggle=Boolean(t.toggle),d("collapse",t,it),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;t=h(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return i.find(e,t).forEach(t=>{const e=a(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const s=t.classList.contains("show");e.forEach(t=>{s?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",s)})}static collapseInterface(t,e){let s=nt.getInstance(t);const i={...st,...V.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!s&&i.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(i.toggle=!1),s||(s=new nt(t,i)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){nt.collapseInterface(this,t)}))}}B.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=V.getDataAttributes(this),s=r(this);i.find(s).forEach(t=>{const s=nt.getInstance(t);let i;s?(null===s._parent&&"string"==typeof e.parent&&(s._config.parent=e.parent,s._parent=s._getParent()),i="toggle"):i=e,nt.collapseInterface(t,i)})})),y(nt);const ot=new RegExp("ArrowUp|ArrowDown|Escape"),rt=v()?"top-end":"top-start",at=v()?"top-start":"top-end",lt=v()?"bottom-end":"bottom-start",ct=v()?"bottom-start":"bottom-end",ht=v()?"left-start":"right-start",dt=v()?"right-start":"left-start",ut={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},gt={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class pt extends q{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return ut}static get DefaultType(){return gt}static get NAME(){return"dropdown"}toggle(){g(this._element)||(this._element.classList.contains("show")?this.hide():this.show())}show(){if(g(this._element)||this._menu.classList.contains("show"))return;const t=pt.getParentFromElement(this._element),e={relatedTarget:this._element};if(!B.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)V.setDataAttribute(this._menu,"popper","none");else{if(void 0===s)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:c(this._config.reference)?e=h(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=s.createPopper(e,this._menu,i),n&&V.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>B.on(t,"mouseover",f)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),B.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(g(this._element)||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){B.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){B.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>B.off(t,"mouseover",f)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),V.removeDataAttribute(this._menu,"popper"),B.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...V.getDataAttributes(this._element),...t},d("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!c(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return i.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ht;if(t.classList.contains("dropstart"))return dt;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?at:rt:e?ct:lt}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const s=i.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(u);s.length&&A(s,e,"ArrowDown"===t,!s.includes(e)).focus()}static dropdownInterface(t,e){const s=pt.getOrCreateInstance(t,e);if("string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){pt.dropdownInterface(this,t)}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=i.find('[data-bs-toggle="dropdown"]');for(let s=0,i=e.length;s<i;s++){const i=pt.getInstance(e[s]);if(!i||!1===i._config.autoClose)continue;if(!i._element.classList.contains("show"))continue;const n={relatedTarget:i._element};if(t){const e=t.composedPath(),s=e.includes(i._menu);if(e.includes(i._element)||"inside"===i._config.autoClose&&!s||"outside"===i._config.autoClose&&s)continue;if(i._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;"click"===t.type&&(n.clickEvent=t)}i._completeHide(n)}}static getParentFromElement(t){return a(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!ot.test(t.key))return;const e=this.classList.contains("show");if(!e&&"Escape"===t.key)return;if(t.preventDefault(),t.stopPropagation(),g(this))return;const s=()=>this.matches('[data-bs-toggle="dropdown"]')?this:i.prev(this,'[data-bs-toggle="dropdown"]')[0];return"Escape"===t.key?(s().focus(),void pt.clearMenus()):"ArrowUp"===t.key||"ArrowDown"===t.key?(e||s().click(),void pt.getInstance(s())._selectMenuItem(t)):void(e&&"Space"!==t.key||pt.clearMenus())}}B.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',pt.dataApiKeydownHandler),B.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",pt.dataApiKeydownHandler),B.on(document,"click.bs.dropdown.data-api",pt.clearMenus),B.on(document,"keyup.bs.dropdown.data-api",pt.clearMenus),B.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),pt.dropdownInterface(this)})),y(pt);class ft{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t)[e];t.style[e]=s(Number.parseFloat(n))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const s=t.style[e];s&&V.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const s=V.getDataAttribute(t,e);void 0===s?t.style.removeProperty(e):(V.removeDataAttribute(t,e),t.style[e]=s)})}_applyManipulationCallback(t,e){c(t)?e(t):i.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const mt={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},_t={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class bt{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&m(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{w(t)})):w(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),w(t)})):w(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className="modal-backdrop",this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...mt,..."object"==typeof t?t:{}}).rootElement=h(t.rootElement),d("backdrop",t,_t),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),B.on(this._getElement(),"mousedown.bs.backdrop",()=>{w(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(B.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){E(t,this._getElement(),this._config.isAnimated)}}const vt={backdrop:!0,keyboard:!0,focus:!0},yt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class wt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=i.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new ft}static get Default(){return vt}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||B.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),B.on(this._element,"click.dismiss.bs.modal",'[data-bs-dismiss="modal"]',t=>this.hide(t)),B.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{B.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&["A","AREA"].includes(t.target.tagName)&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(B.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),B.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),B.off(this._element,"click.dismiss.bs.modal"),B.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>B.off(t,".bs.modal")),this._backdrop.dispose(),super.dispose(),B.off(document,"focusin.bs.modal")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...vt,...V.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("modal",t,yt),t}_showElement(t){const e=this._isAnimated(),s=i.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,s&&(s.scrollTop=0),e&&m(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,B.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_enforceFocus(){B.off(document,"focusin.bs.modal"),B.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?B.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):B.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?B.on(window,"resize.bs.modal",()=>this._adjustDialog()):B.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),B.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){B.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(B.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:s}=this._element,i=e>document.documentElement.clientHeight;!i&&"hidden"===s.overflowY||t.contains("modal-static")||(i||(s.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),i||this._queueCallback(()=>{s.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),s=e>0;(!s&&t&&!v()||s&&!t&&v())&&(this._element.style.paddingLeft=e+"px"),(s&&!t&&!v()||!s&&t&&v())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const s=wt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}B.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=a(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),B.one(e,"show.bs.modal",t=>{t.defaultPrevented||B.one(e,"hidden.bs.modal",()=>{u(this)&&this.focus()})}),wt.getOrCreateInstance(e).toggle(this)})),y(wt);const Et={backdrop:!0,keyboard:!0,scroll:!1},At={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Tt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Et}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||B.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||((new ft).hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{B.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(B.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(B.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new ft).reset(),B.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),B.off(document,"focusin.bs.offcanvas")}_getConfig(t){return t={...Et,...V.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("offcanvas",t,At),t}_initializeBackDrop(){return new bt({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){B.off(document,"focusin.bs.offcanvas"),B.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){B.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),B.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Tt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}B.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=a(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),g(this))return;B.one(e,"hidden.bs.offcanvas",()=>{u(this)&&this.focus()});const s=i.findOne(".offcanvas.show");s&&s!==e&&Tt.getInstance(s).hide(),Tt.getOrCreateInstance(e).toggle(this)})),B.on(window,"load.bs.offcanvas.data-api",()=>i.find(".offcanvas.show").forEach(t=>Tt.getOrCreateInstance(t).show())),y(Tt);const Ct=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),kt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Lt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ot=(t,e)=>{const s=t.nodeName.toLowerCase();if(e.includes(s))return!Ct.has(s)||Boolean(kt.test(t.nodeValue)||Lt.test(t.nodeValue));const i=e.filter(t=>t instanceof RegExp);for(let t=0,e=i.length;t<e;t++)if(i[t].test(s))return!0;return!1};function Dt(t,e,s){if(!t.length)return t;if(s&&"function"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),n=Object.keys(e),o=[].concat(...i.body.querySelectorAll("*"));for(let t=0,s=o.length;t<s;t++){const s=o[t],i=s.nodeName.toLowerCase();if(!n.includes(i)){s.remove();continue}const r=[].concat(...s.attributes),a=[].concat(e["*"]||[],e[i]||[]);r.forEach(t=>{Ot(t,a)||s.removeAttribute(t.nodeName)})}return i.body.innerHTML}const It=new RegExp("(^|\\s)bs-tooltip\\S+","g"),Nt=new Set(["sanitize","allowList","sanitizeFn"]),St={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},xt={AUTO:"auto",TOP:"top",RIGHT:v()?"left":"right",BOTTOM:"bottom",LEFT:v()?"right":"left"},Mt={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Pt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class jt extends q{constructor(t,e){if(void 0===s)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Mt}static get NAME(){return"tooltip"}static get Event(){return Pt}static get DefaultType(){return St}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),B.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=B.trigger(this._element,this.constructor.Event.SHOW),e=p(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;const o=this.getTipElement(),r=n(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this._config.animation&&o.classList.add("fade");const a="function"==typeof this._config.placement?this._config.placement.call(this,o,this._element):this._config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);const{container:c}=this._config;W.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(c.appendChild(o),B.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=s.createPopper(this._element,o,this._getPopperConfig(l)),o.classList.add("show");const h="function"==typeof this._config.customClass?this._config.customClass():this._config.customClass;h&&o.classList.add(...h.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{B.on(t,"mouseover",f)});const d=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,B.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement();if(B.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>B.off(t,"mouseover",f)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),B.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return c(e)?(e=h(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Dt(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const s=this.constructor.DATA_KEY;return(e=e||W.get(t.delegateTarget,s))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),W.set(t.delegateTarget,s,e)),e}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getAttachment(t){return xt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)B.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;B.on(this._element,e,this._config.selector,t=>this._enter(t)),B.on(this._element,s,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},B.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=V.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{Nt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:h(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Dt(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(It);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=jt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}y(jt);const Ht=new RegExp("(^|\\s)bs-popover\\S+","g"),Rt={...jt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Bt={...jt.DefaultType,content:"(string|element|function)"},$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Wt extends jt{static get Default(){return Rt}static get NAME(){return"popover"}static get Event(){return $t}static get DefaultType(){return Bt}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip||(this.tip=super.getTipElement(),this.getTitle()||i.findOne(".popover-header",this.tip).remove(),this._getContent()||i.findOne(".popover-body",this.tip).remove()),this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(i.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ht);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){const e=Wt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}y(Wt);const qt={offset:10,method:"auto",target:""},zt={offset:"number",method:"string",target:"(string|element)"};class Ft extends q{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,B.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return qt}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),i.find(this._selector).map(t=>{const n=r(t),o=n?i.findOne(n):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[V[e](o).top+s,n]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){B.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){if("string"!=typeof(t={...qt,...V.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target&&c(t.target)){let{id:e}=t.target;e||(e=n("scrollspy"),t.target.id=e),t.target="#"+e}return d("scrollspy",t,zt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),s=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=s){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=this._selector.split(",").map(e=>`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),s=i.findOne(e.join(","));s.classList.contains("dropdown-item")?(i.findOne(".dropdown-toggle",s.closest(".dropdown")).classList.add("active"),s.classList.add("active")):(s.classList.add("active"),i.parents(s,".nav, .list-group").forEach(t=>{i.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),i.prev(t,".nav-item").forEach(t=>{i.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),B.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){i.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Ft.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}B.on(window,"load.bs.scrollspy.data-api",()=>{i.find('[data-bs-spy="scroll"]').forEach(t=>new Ft(t))}),y(Ft);class Ut extends q{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=a(this._element),s=this._element.closest(".nav, .list-group");if(s){const e="UL"===s.nodeName||"OL"===s.nodeName?":scope > li > .active":".active";t=i.find(e,s),t=t[t.length-1]}const n=t?B.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(B.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,s);const o=()=>{B.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),B.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,s){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.children(e,".active"):i.find(":scope > li > .active",e))[0],o=s&&n&&n.classList.contains("fade"),r=()=>this._transitionComplete(t,n,s);n&&o?(n.classList.remove("show"),this._queueCallback(r,t,!0)):r()}_transitionComplete(t,e,s){if(e){e.classList.remove("active");const t=i.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m(t),t.classList.contains("fade")&&t.classList.add("show");let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&i.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}s&&s()}static jQueryInterface(t){return this.each((function(){const e=Ut.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}B.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),g(this)||Ut.getOrCreateInstance(this).show()})),y(Ut);const Kt={animation:"boolean",autohide:"boolean",delay:"number"},Vt={animation:!0,autohide:!0,delay:5e3};class Qt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Kt}static get Default(){return Vt}static get NAME(){return"toast"}show(){B.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),m(this._element),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),B.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(B.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.remove("show"),this._queueCallback(()=>{this._element.classList.add("hide"),B.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...Vt,...V.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},d("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){B.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide()),B.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),B.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),B.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),B.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Qt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return y(Qt),{Alert:z,Button:F,Carousel:et,Collapse:nt,Dropdown:pt,Modal:wt,Offcanvas:Tt,Popover:Wt,ScrollSpy:Ft,Tab:Ut,Toast:Qt,Tooltip:jt}})); | ||
//# sourceMappingURL=bootstrap.min.js.map |
/*! | ||
* Bootstrap alert.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap alert.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,10 +7,9 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, Data, EventHandler, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.SelectorEngine, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict'; | ||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -60,5 +59,14 @@ var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -90,3 +98,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): alert.js | ||
* Bootstrap (v5.0.2): alert.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -154,6 +162,3 @@ * -------------------------------------------------------------------------- | ||
_destroyElement(element) { | ||
if (element.parentNode) { | ||
element.parentNode.removeChild(element); | ||
} | ||
element.remove(); | ||
EventHandler__default['default'].trigger(element, EVENT_CLOSED); | ||
@@ -165,8 +170,4 @@ } // Static | ||
return this.each(function () { | ||
let data = Data__default['default'].get(this, DATA_KEY); | ||
const data = Alert.getOrCreateInstance(this); | ||
if (!data) { | ||
data = new Alert(this); | ||
} | ||
if (config === 'close') { | ||
@@ -173,0 +174,0 @@ data[config](this); |
/*! | ||
* Bootstrap base-component.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap base-component.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -73,16 +73,34 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
const emulateTransitionEnd = (element, duration) => { | ||
const execute = callback => { | ||
if (typeof callback === 'function') { | ||
callback(); | ||
} | ||
}; | ||
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { | ||
if (!waitForTransition) { | ||
execute(callback); | ||
return; | ||
} | ||
const durationPadding = 5; | ||
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; | ||
let called = false; | ||
const durationPadding = 5; | ||
const emulatedDuration = duration + durationPadding; | ||
function listener() { | ||
const handler = ({ | ||
target | ||
}) => { | ||
if (target !== transitionElement) { | ||
return; | ||
} | ||
called = true; | ||
element.removeEventListener(TRANSITION_END, listener); | ||
} | ||
transitionElement.removeEventListener(TRANSITION_END, handler); | ||
execute(callback); | ||
}; | ||
element.addEventListener(TRANSITION_END, listener); | ||
transitionElement.addEventListener(TRANSITION_END, handler); | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(element); | ||
triggerTransitionEnd(transitionElement); | ||
} | ||
@@ -92,11 +110,5 @@ }, emulatedDuration); | ||
const execute = callback => { | ||
if (typeof callback === 'function') { | ||
callback(); | ||
} | ||
}; | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): base-component.js | ||
* Bootstrap (v5.0.2): base-component.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -111,3 +123,3 @@ * -------------------------------------------------------------------------- | ||
const VERSION = '5.0.1'; | ||
const VERSION = '5.0.2'; | ||
@@ -135,10 +147,3 @@ class BaseComponent { | ||
_queueCallback(callback, element, isAnimated = true) { | ||
if (!isAnimated) { | ||
execute(callback); | ||
return; | ||
} | ||
const transitionDuration = getTransitionDurationFromElement(element); | ||
EventHandler__default['default'].one(element, 'transitionend', () => execute(callback)); | ||
emulateTransitionEnd(element, transitionDuration); | ||
executeAfterTransition(callback, element, isAnimated); | ||
} | ||
@@ -152,2 +157,6 @@ /** Static */ | ||
static getOrCreateInstance(element, config = {}) { | ||
return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); | ||
} | ||
static get VERSION() { | ||
@@ -154,0 +163,0 @@ return VERSION; |
/*! | ||
* Bootstrap button.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap button.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,10 +7,9 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, Data, EventHandler, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.SelectorEngine, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict'; | ||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -31,5 +30,14 @@ var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -61,3 +69,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): button.js | ||
* Bootstrap (v5.0.2): button.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -100,8 +108,4 @@ * -------------------------------------------------------------------------- | ||
return this.each(function () { | ||
let data = Data__default['default'].get(this, DATA_KEY); | ||
const data = Button.getOrCreateInstance(this); | ||
if (!data) { | ||
data = new Button(this); | ||
} | ||
if (config === 'toggle') { | ||
@@ -124,8 +128,3 @@ data[config](); | ||
const button = event.target.closest(SELECTOR_DATA_TOGGLE); | ||
let data = Data__default['default'].get(button, DATA_KEY); | ||
if (!data) { | ||
data = new Button(button); | ||
} | ||
const data = Button.getOrCreateInstance(button); | ||
data.toggle(); | ||
@@ -132,0 +131,0 @@ }); |
/*! | ||
* Bootstrap carousel.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap carousel.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,6 +7,6 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base)); | ||
}(this, (function (SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base)); | ||
}(this, (function (SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict'; | ||
@@ -16,3 +16,2 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -90,13 +89,7 @@ var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); | ||
const isVisible = element => { | ||
if (!element) { | ||
if (!isElement(element) || element.getClientRects().length === 0) { | ||
return false; | ||
} | ||
if (element.style && element.parentNode && element.parentNode.style) { | ||
const elementStyle = getComputedStyle(element); | ||
const parentNodeStyle = getComputedStyle(element.parentNode); | ||
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; | ||
} | ||
return false; | ||
return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; | ||
}; | ||
@@ -118,5 +111,14 @@ | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -147,6 +149,33 @@ callback(); | ||
}; | ||
/** | ||
* Return the previous/next element of a list. | ||
* | ||
* @param {array} list The list of elements | ||
* @param activeElement The active element | ||
* @param shouldGetNext Choose to get next or previous element | ||
* @param isCycleAllowed | ||
* @return {Element|elem} The proper element | ||
*/ | ||
const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { | ||
let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed | ||
if (index === -1) { | ||
return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]; | ||
} | ||
const listLength = list.length; | ||
index += shouldGetNext ? 1 : -1; | ||
if (isCycleAllowed) { | ||
index = (index + listLength) % listLength; | ||
} | ||
return list[Math.max(0, Math.min(index, listLength - 1))]; | ||
}; | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): carousel.js | ||
* Bootstrap (v5.0.2): carousel.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -190,2 +219,6 @@ * -------------------------------------------------------------------------- | ||
const DIRECTION_RIGHT = 'right'; | ||
const KEY_TO_DIRECTION = { | ||
[ARROW_LEFT_KEY]: DIRECTION_RIGHT, | ||
[ARROW_RIGHT_KEY]: DIRECTION_LEFT | ||
}; | ||
const EVENT_SLIDE = `slide${EVENT_KEY}`; | ||
@@ -259,5 +292,3 @@ const EVENT_SLID = `slid${EVENT_KEY}`; | ||
next() { | ||
if (!this._isSliding) { | ||
this._slide(ORDER_NEXT); | ||
} | ||
this._slide(ORDER_NEXT); | ||
} | ||
@@ -274,5 +305,3 @@ | ||
prev() { | ||
if (!this._isSliding) { | ||
this._slide(ORDER_PREV); | ||
} | ||
this._slide(ORDER_PREV); | ||
} | ||
@@ -339,3 +368,4 @@ | ||
config = { ...Default, | ||
...config | ||
...Manipulator__default['default'].getDataAttributes(this._element), | ||
...(typeof config === 'object' ? config : {}) | ||
}; | ||
@@ -438,10 +468,8 @@ typeCheckConfig(NAME, config, DefaultType); | ||
if (event.key === ARROW_LEFT_KEY) { | ||
event.preventDefault(); | ||
const direction = KEY_TO_DIRECTION[event.key]; | ||
this._slide(DIRECTION_RIGHT); | ||
} else if (event.key === ARROW_RIGHT_KEY) { | ||
if (direction) { | ||
event.preventDefault(); | ||
this._slide(DIRECTION_LEFT); | ||
this._slide(direction); | ||
} | ||
@@ -457,16 +485,3 @@ } | ||
const isNext = order === ORDER_NEXT; | ||
const isPrev = order === ORDER_PREV; | ||
const activeIndex = this._getItemIndex(activeElement); | ||
const lastItemIndex = this._items.length - 1; | ||
const isGoingToWrap = isPrev && activeIndex === 0 || isNext && activeIndex === lastItemIndex; | ||
if (isGoingToWrap && !this._config.wrap) { | ||
return activeElement; | ||
} | ||
const delta = isPrev ? -1 : 1; | ||
const itemIndex = (activeIndex + delta) % this._items.length; | ||
return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; | ||
return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap); | ||
} | ||
@@ -544,2 +559,6 @@ | ||
if (this._isSliding) { | ||
return; | ||
} | ||
const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); | ||
@@ -628,6 +647,6 @@ | ||
static carouselInterface(element, config) { | ||
let data = Data__default['default'].get(element, DATA_KEY); | ||
let _config = { ...Default, | ||
...Manipulator__default['default'].getDataAttributes(element) | ||
}; | ||
const data = Carousel.getOrCreateInstance(element, config); | ||
let { | ||
_config | ||
} = data; | ||
@@ -642,6 +661,2 @@ if (typeof config === 'object') { | ||
if (!data) { | ||
data = new Carousel(element, _config); | ||
} | ||
if (typeof config === 'number') { | ||
@@ -686,3 +701,3 @@ data.to(config); | ||
if (slideIndex) { | ||
Data__default['default'].get(target, DATA_KEY).to(slideIndex); | ||
Carousel.getInstance(target).to(slideIndex); | ||
} | ||
@@ -706,3 +721,3 @@ | ||
for (let i = 0, len = carousels.length; i < len; i++) { | ||
Carousel.carouselInterface(carousels[i], Data__default['default'].get(carousels[i], DATA_KEY)); | ||
Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i])); | ||
} | ||
@@ -709,0 +724,0 @@ }); |
/*! | ||
* Bootstrap collapse.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap collapse.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -118,5 +118,14 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -148,3 +157,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): collapse.js | ||
* Bootstrap (v5.0.2): collapse.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -265,3 +274,3 @@ * -------------------------------------------------------------------------- | ||
const tempActiveData = actives.find(elem => container !== elem); | ||
activesData = tempActiveData ? Data__default['default'].get(tempActiveData, DATA_KEY) : null; | ||
activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null; | ||
@@ -429,3 +438,3 @@ if (activesData && activesData._isTransitioning) { | ||
static collapseInterface(element, config) { | ||
let data = Data__default['default'].get(element, DATA_KEY); | ||
let data = Collapse.getInstance(element); | ||
const _config = { ...Default, | ||
@@ -477,3 +486,3 @@ ...Manipulator__default['default'].getDataAttributes(element), | ||
selectorElements.forEach(element => { | ||
const data = Data__default['default'].get(element, DATA_KEY); | ||
const data = Collapse.getInstance(element); | ||
let config; | ||
@@ -480,0 +489,0 @@ |
/*! | ||
* Bootstrap data.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap data.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -14,3 +14,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/data.js | ||
* Bootstrap (v5.0.2): dom/data.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -17,0 +17,0 @@ * -------------------------------------------------------------------------- |
/*! | ||
* Bootstrap event-handler.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap event-handler.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -26,3 +26,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/event-handler.js | ||
* Bootstrap (v5.0.2): dom/event-handler.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -29,0 +29,0 @@ * -------------------------------------------------------------------------- |
/*! | ||
* Bootstrap manipulator.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap manipulator.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -14,3 +14,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/manipulator.js | ||
* Bootstrap (v5.0.2): dom/manipulator.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -17,0 +17,0 @@ * -------------------------------------------------------------------------- |
/*! | ||
* Bootstrap selector-engine.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap selector-engine.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -14,3 +14,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/selector-engine.js | ||
* Bootstrap (v5.0.2): dom/selector-engine.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -17,0 +17,0 @@ * -------------------------------------------------------------------------- |
/*! | ||
* Bootstrap dropdown.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap dropdown.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,6 +7,6 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base)); | ||
}(this, (function (Popper, SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base)); | ||
}(this, (function (Popper, SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict'; | ||
@@ -37,3 +37,2 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -118,13 +117,7 @@ var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); | ||
const isVisible = element => { | ||
if (!element) { | ||
if (!isElement(element) || element.getClientRects().length === 0) { | ||
return false; | ||
} | ||
if (element.style && element.parentNode && element.parentNode.style) { | ||
const elementStyle = getComputedStyle(element); | ||
const parentNodeStyle = getComputedStyle(element.parentNode); | ||
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; | ||
} | ||
return false; | ||
return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; | ||
}; | ||
@@ -162,5 +155,14 @@ | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -191,6 +193,33 @@ callback(); | ||
}; | ||
/** | ||
* Return the previous/next element of a list. | ||
* | ||
* @param {array} list The list of elements | ||
* @param activeElement The active element | ||
* @param shouldGetNext Choose to get next or previous element | ||
* @param isCycleAllowed | ||
* @return {Element|elem} The proper element | ||
*/ | ||
const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { | ||
let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed | ||
if (index === -1) { | ||
return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]; | ||
} | ||
const listLength = list.length; | ||
index += shouldGetNext ? 1 : -1; | ||
if (isCycleAllowed) { | ||
index = (index + listLength) % listLength; | ||
} | ||
return list[Math.max(0, Math.min(index, listLength - 1))]; | ||
}; | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dropdown.js | ||
* Bootstrap (v5.0.2): dropdown.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -515,3 +544,6 @@ * -------------------------------------------------------------------------- | ||
_selectMenuItem(event) { | ||
_selectMenuItem({ | ||
key, | ||
target | ||
}) { | ||
const items = SelectorEngine__default['default'].find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible); | ||
@@ -521,18 +553,7 @@ | ||
return; | ||
} | ||
} // if target isn't included in items (e.g. when expanding the dropdown) | ||
// allow cycling to get the last item in case key equals ARROW_UP_KEY | ||
let index = items.indexOf(event.target); // Up | ||
if (event.key === ARROW_UP_KEY && index > 0) { | ||
index--; | ||
} // Down | ||
if (event.key === ARROW_DOWN_KEY && index < items.length - 1) { | ||
index++; | ||
} // index is -1 if the first keydown is an ArrowUp | ||
index = index === -1 ? 0 : index; | ||
items[index].focus(); | ||
getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus(); | ||
} // Static | ||
@@ -542,10 +563,4 @@ | ||
static dropdownInterface(element, config) { | ||
let data = Data__default['default'].get(element, DATA_KEY); | ||
const data = Dropdown.getOrCreateInstance(element, config); | ||
const _config = typeof config === 'object' ? config : null; | ||
if (!data) { | ||
data = new Dropdown(element, _config); | ||
} | ||
if (typeof config === 'string') { | ||
@@ -574,3 +589,3 @@ if (typeof data[config] === 'undefined') { | ||
for (let i = 0, len = toggles.length; i < len; i++) { | ||
const context = Data__default['default'].get(toggles[i], DATA_KEY); | ||
const context = Dropdown.getInstance(toggles[i]); | ||
@@ -648,4 +663,9 @@ if (!context || context._config.autoClose === false) { | ||
if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) { | ||
getToggleButton().click(); | ||
if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { | ||
if (!isActive) { | ||
getToggleButton().click(); | ||
} | ||
Dropdown.getInstance(getToggleButton())._selectMenuItem(event); | ||
return; | ||
@@ -656,6 +676,3 @@ } | ||
Dropdown.clearMenus(); | ||
return; | ||
} | ||
Dropdown.getInstance(getToggleButton())._selectMenuItem(event); | ||
} | ||
@@ -662,0 +679,0 @@ |
/*! | ||
* Bootstrap modal.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap modal.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -98,18 +98,13 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
const emulateTransitionEnd = (element, duration) => { | ||
let called = false; | ||
const durationPadding = 5; | ||
const emulatedDuration = duration + durationPadding; | ||
const getElement = obj => { | ||
if (isElement(obj)) { | ||
// it's a jQuery object or a node element | ||
return obj.jquery ? obj[0] : obj; | ||
} | ||
function listener() { | ||
called = true; | ||
element.removeEventListener(TRANSITION_END, listener); | ||
if (typeof obj === 'string' && obj.length > 0) { | ||
return SelectorEngine__default['default'].findOne(obj); | ||
} | ||
element.addEventListener(TRANSITION_END, listener); | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(element); | ||
} | ||
}, emulatedDuration); | ||
return null; | ||
}; | ||
@@ -130,13 +125,7 @@ | ||
const isVisible = element => { | ||
if (!element) { | ||
if (!isElement(element) || element.getClientRects().length === 0) { | ||
return false; | ||
} | ||
if (element.style && element.parentNode && element.parentNode.style) { | ||
const elementStyle = getComputedStyle(element); | ||
const parentNodeStyle = getComputedStyle(element.parentNode); | ||
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; | ||
} | ||
return false; | ||
return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; | ||
}; | ||
@@ -158,5 +147,14 @@ | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -194,5 +192,35 @@ callback(); | ||
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { | ||
if (!waitForTransition) { | ||
execute(callback); | ||
return; | ||
} | ||
const durationPadding = 5; | ||
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; | ||
let called = false; | ||
const handler = ({ | ||
target | ||
}) => { | ||
if (target !== transitionElement) { | ||
return; | ||
} | ||
called = true; | ||
transitionElement.removeEventListener(TRANSITION_END, handler); | ||
execute(callback); | ||
}; | ||
transitionElement.addEventListener(TRANSITION_END, handler); | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(transitionElement); | ||
} | ||
}, emulatedDuration); | ||
}; | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/scrollBar.js | ||
* Bootstrap (v5.0.2): util/scrollBar.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -204,70 +232,100 @@ * -------------------------------------------------------------------------- | ||
const getWidth = () => { | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = document.documentElement.clientWidth; | ||
return Math.abs(window.innerWidth - documentWidth); | ||
}; | ||
class ScrollBarHelper { | ||
constructor() { | ||
this._element = document.body; | ||
} | ||
const hide = (width = getWidth()) => { | ||
_disableOverFlow(); // give padding to element to balances the hidden scrollbar width | ||
getWidth() { | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = document.documentElement.clientWidth; | ||
return Math.abs(window.innerWidth - documentWidth); | ||
} | ||
hide() { | ||
const width = this.getWidth(); | ||
_setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth | ||
this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width | ||
_setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); | ||
this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth | ||
_setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); | ||
}; | ||
const _disableOverFlow = () => { | ||
const actualValue = document.body.style.overflow; | ||
this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); | ||
if (actualValue) { | ||
Manipulator__default['default'].setDataAttribute(document.body, 'overflow', actualValue); | ||
this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); | ||
} | ||
document.body.style.overflow = 'hidden'; | ||
}; | ||
_disableOverFlow() { | ||
this._saveInitialAttribute(this._element, 'overflow'); | ||
const _setElementAttributes = (selector, styleProp, callback) => { | ||
const scrollbarWidth = getWidth(); | ||
SelectorEngine__default['default'].find(selector).forEach(element => { | ||
if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) { | ||
return; | ||
} | ||
this._element.style.overflow = 'hidden'; | ||
} | ||
_setElementAttributes(selector, styleProp, callback) { | ||
const scrollbarWidth = this.getWidth(); | ||
const manipulationCallBack = element => { | ||
if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { | ||
return; | ||
} | ||
this._saveInitialAttribute(element, styleProp); | ||
const calculatedValue = window.getComputedStyle(element)[styleProp]; | ||
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`; | ||
}; | ||
this._applyManipulationCallback(selector, manipulationCallBack); | ||
} | ||
reset() { | ||
this._resetElementAttributes(this._element, 'overflow'); | ||
this._resetElementAttributes(this._element, 'paddingRight'); | ||
this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); | ||
this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); | ||
} | ||
_saveInitialAttribute(element, styleProp) { | ||
const actualValue = element.style[styleProp]; | ||
const calculatedValue = window.getComputedStyle(element)[styleProp]; | ||
Manipulator__default['default'].setDataAttribute(element, styleProp, actualValue); | ||
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`; | ||
}); | ||
}; | ||
const reset = () => { | ||
_resetElementAttributes('body', 'overflow'); | ||
if (actualValue) { | ||
Manipulator__default['default'].setDataAttribute(element, styleProp, actualValue); | ||
} | ||
} | ||
_resetElementAttributes('body', 'paddingRight'); | ||
_resetElementAttributes(selector, styleProp) { | ||
const manipulationCallBack = element => { | ||
const value = Manipulator__default['default'].getDataAttribute(element, styleProp); | ||
_resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); | ||
if (typeof value === 'undefined') { | ||
element.style.removeProperty(styleProp); | ||
} else { | ||
Manipulator__default['default'].removeDataAttribute(element, styleProp); | ||
element.style[styleProp] = value; | ||
} | ||
}; | ||
_resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); | ||
}; | ||
this._applyManipulationCallback(selector, manipulationCallBack); | ||
} | ||
const _resetElementAttributes = (selector, styleProp) => { | ||
SelectorEngine__default['default'].find(selector).forEach(element => { | ||
const value = Manipulator__default['default'].getDataAttribute(element, styleProp); | ||
if (typeof value === 'undefined') { | ||
element.style.removeProperty(styleProp); | ||
_applyManipulationCallback(selector, callBack) { | ||
if (isElement(selector)) { | ||
callBack(selector); | ||
} else { | ||
Manipulator__default['default'].removeDataAttribute(element, styleProp); | ||
element.style[styleProp] = value; | ||
SelectorEngine__default['default'].find(selector, this._element).forEach(callBack); | ||
} | ||
}); | ||
}; | ||
} | ||
isOverflowing() { | ||
return this.getWidth() > 0; | ||
} | ||
} | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/backdrop.js | ||
* Bootstrap (v5.0.2): util/backdrop.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
@@ -280,3 +338,3 @@ * -------------------------------------------------------------------------- | ||
isAnimated: false, | ||
rootElement: document.body, | ||
rootElement: 'body', | ||
// give the choice to place backdrop under different elements | ||
@@ -288,3 +346,3 @@ clickCallback: null | ||
isAnimated: 'boolean', | ||
rootElement: 'element', | ||
rootElement: '(element|string)', | ||
clickCallback: '(function|null)' | ||
@@ -357,4 +415,5 @@ }; | ||
...(typeof config === 'object' ? config : {}) | ||
}; | ||
config.rootElement = config.rootElement || document.body; | ||
}; // use getElement() with the default "body" to get a fresh Element on each instantiation | ||
config.rootElement = getElement(config.rootElement); | ||
typeCheckConfig(NAME$1, config, DefaultType$1); | ||
@@ -384,3 +443,3 @@ return config; | ||
this._getElement().parentNode.removeChild(this._element); | ||
this._element.remove(); | ||
@@ -391,10 +450,3 @@ this._isAppended = false; | ||
_emulateAnimation(callback) { | ||
if (!this._config.isAnimated) { | ||
execute(callback); | ||
return; | ||
} | ||
const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement()); | ||
EventHandler__default['default'].one(this._getElement(), 'transitionend', () => execute(callback)); | ||
emulateTransitionEnd(this._getElement(), backdropTransitionDuration); | ||
executeAfterTransition(callback, this._getElement(), this._config.isAnimated); | ||
} | ||
@@ -406,3 +458,3 @@ | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): modal.js | ||
* Bootstrap (v5.0.2): modal.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -467,2 +519,3 @@ * -------------------------------------------------------------------------- | ||
this._isTransitioning = false; | ||
this._scrollBar = new ScrollBarHelper(); | ||
} // Getters | ||
@@ -489,6 +542,2 @@ | ||
if (this._isAnimated()) { | ||
this._isTransitioning = true; | ||
} | ||
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, { | ||
@@ -498,3 +547,3 @@ relatedTarget | ||
if (this._isShown || showEvent.defaultPrevented) { | ||
if (showEvent.defaultPrevented) { | ||
return; | ||
@@ -504,3 +553,9 @@ } | ||
this._isShown = true; | ||
hide(); | ||
if (this._isAnimated()) { | ||
this._isTransitioning = true; | ||
} | ||
this._scrollBar.hide(); | ||
document.body.classList.add(CLASS_NAME_OPEN); | ||
@@ -527,3 +582,3 @@ | ||
hide(event) { | ||
if (event) { | ||
if (event && ['A', 'AREA'].includes(event.target.tagName)) { | ||
event.preventDefault(); | ||
@@ -595,3 +650,3 @@ } | ||
...Manipulator__default['default'].getDataAttributes(this._element), | ||
...config | ||
...(typeof config === 'object' ? config : {}) | ||
}; | ||
@@ -699,3 +754,4 @@ typeCheckConfig(NAME, config, DefaultType); | ||
reset(); | ||
this._scrollBar.reset(); | ||
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN); | ||
@@ -737,23 +793,28 @@ }); | ||
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; | ||
const { | ||
classList, | ||
scrollHeight, | ||
style | ||
} = this._element; | ||
const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed | ||
if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) { | ||
return; | ||
} | ||
if (!isModalOverflowing) { | ||
this._element.style.overflowY = 'hidden'; | ||
style.overflowY = 'hidden'; | ||
} | ||
this._element.classList.add(CLASS_NAME_STATIC); | ||
classList.add(CLASS_NAME_STATIC); | ||
const modalTransitionDuration = getTransitionDurationFromElement(this._dialog); | ||
EventHandler__default['default'].off(this._element, 'transitionend'); | ||
EventHandler__default['default'].one(this._element, 'transitionend', () => { | ||
this._element.classList.remove(CLASS_NAME_STATIC); | ||
this._queueCallback(() => { | ||
classList.remove(CLASS_NAME_STATIC); | ||
if (!isModalOverflowing) { | ||
EventHandler__default['default'].one(this._element, 'transitionend', () => { | ||
this._element.style.overflowY = ''; | ||
}); | ||
emulateTransitionEnd(this._element, modalTransitionDuration); | ||
this._queueCallback(() => { | ||
style.overflowY = ''; | ||
}, this._dialog); | ||
} | ||
}); | ||
emulateTransitionEnd(this._element, modalTransitionDuration); | ||
}, this._dialog); | ||
@@ -768,3 +829,5 @@ this._element.focus(); | ||
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; | ||
const scrollbarWidth = getWidth(); | ||
const scrollbarWidth = this._scrollBar.getWidth(); | ||
const isBodyOverflowing = scrollbarWidth > 0; | ||
@@ -789,3 +852,3 @@ | ||
return this.each(function () { | ||
const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {}); | ||
const data = Modal.getOrCreateInstance(this, config); | ||
@@ -831,3 +894,3 @@ if (typeof config !== 'string') { | ||
}); | ||
const data = Modal.getInstance(target) || new Modal(target); | ||
const data = Modal.getOrCreateInstance(target); | ||
data.toggle(this); | ||
@@ -834,0 +897,0 @@ }); |
/*! | ||
* Bootstrap offcanvas.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap offcanvas.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,6 +7,6 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/manipulator.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/manipulator', './dom/data', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Offcanvas = factory(global.SelectorEngine, global.Manipulator, global.Data, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, Manipulator, Data, EventHandler, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/manipulator.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/manipulator', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Offcanvas = factory(global.SelectorEngine, global.Manipulator, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, Manipulator, EventHandler, BaseComponent) { 'use strict'; | ||
@@ -17,3 +17,2 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -101,18 +100,13 @@ var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); | ||
const emulateTransitionEnd = (element, duration) => { | ||
let called = false; | ||
const durationPadding = 5; | ||
const emulatedDuration = duration + durationPadding; | ||
const getElement = obj => { | ||
if (isElement(obj)) { | ||
// it's a jQuery object or a node element | ||
return obj.jquery ? obj[0] : obj; | ||
} | ||
function listener() { | ||
called = true; | ||
element.removeEventListener(TRANSITION_END, listener); | ||
if (typeof obj === 'string' && obj.length > 0) { | ||
return SelectorEngine__default['default'].findOne(obj); | ||
} | ||
element.addEventListener(TRANSITION_END, listener); | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(element); | ||
} | ||
}, emulatedDuration); | ||
return null; | ||
}; | ||
@@ -133,13 +127,7 @@ | ||
const isVisible = element => { | ||
if (!element) { | ||
if (!isElement(element) || element.getClientRects().length === 0) { | ||
return false; | ||
} | ||
if (element.style && element.parentNode && element.parentNode.style) { | ||
const elementStyle = getComputedStyle(element); | ||
const parentNodeStyle = getComputedStyle(element.parentNode); | ||
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; | ||
} | ||
return false; | ||
return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; | ||
}; | ||
@@ -177,5 +165,14 @@ | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -211,5 +208,35 @@ callback(); | ||
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { | ||
if (!waitForTransition) { | ||
execute(callback); | ||
return; | ||
} | ||
const durationPadding = 5; | ||
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; | ||
let called = false; | ||
const handler = ({ | ||
target | ||
}) => { | ||
if (target !== transitionElement) { | ||
return; | ||
} | ||
called = true; | ||
transitionElement.removeEventListener(TRANSITION_END, handler); | ||
execute(callback); | ||
}; | ||
transitionElement.addEventListener(TRANSITION_END, handler); | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(transitionElement); | ||
} | ||
}, emulatedDuration); | ||
}; | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/scrollBar.js | ||
* Bootstrap (v5.0.2): util/scrollBar.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -221,70 +248,100 @@ * -------------------------------------------------------------------------- | ||
const getWidth = () => { | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = document.documentElement.clientWidth; | ||
return Math.abs(window.innerWidth - documentWidth); | ||
}; | ||
class ScrollBarHelper { | ||
constructor() { | ||
this._element = document.body; | ||
} | ||
const hide = (width = getWidth()) => { | ||
_disableOverFlow(); // give padding to element to balances the hidden scrollbar width | ||
getWidth() { | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = document.documentElement.clientWidth; | ||
return Math.abs(window.innerWidth - documentWidth); | ||
} | ||
hide() { | ||
const width = this.getWidth(); | ||
_setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth | ||
this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width | ||
_setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); | ||
this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth | ||
_setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); | ||
}; | ||
const _disableOverFlow = () => { | ||
const actualValue = document.body.style.overflow; | ||
this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); | ||
if (actualValue) { | ||
Manipulator__default['default'].setDataAttribute(document.body, 'overflow', actualValue); | ||
this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); | ||
} | ||
document.body.style.overflow = 'hidden'; | ||
}; | ||
_disableOverFlow() { | ||
this._saveInitialAttribute(this._element, 'overflow'); | ||
const _setElementAttributes = (selector, styleProp, callback) => { | ||
const scrollbarWidth = getWidth(); | ||
SelectorEngine__default['default'].find(selector).forEach(element => { | ||
if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) { | ||
return; | ||
} | ||
this._element.style.overflow = 'hidden'; | ||
} | ||
_setElementAttributes(selector, styleProp, callback) { | ||
const scrollbarWidth = this.getWidth(); | ||
const manipulationCallBack = element => { | ||
if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { | ||
return; | ||
} | ||
this._saveInitialAttribute(element, styleProp); | ||
const calculatedValue = window.getComputedStyle(element)[styleProp]; | ||
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`; | ||
}; | ||
this._applyManipulationCallback(selector, manipulationCallBack); | ||
} | ||
reset() { | ||
this._resetElementAttributes(this._element, 'overflow'); | ||
this._resetElementAttributes(this._element, 'paddingRight'); | ||
this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); | ||
this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); | ||
} | ||
_saveInitialAttribute(element, styleProp) { | ||
const actualValue = element.style[styleProp]; | ||
const calculatedValue = window.getComputedStyle(element)[styleProp]; | ||
Manipulator__default['default'].setDataAttribute(element, styleProp, actualValue); | ||
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`; | ||
}); | ||
}; | ||
const reset = () => { | ||
_resetElementAttributes('body', 'overflow'); | ||
if (actualValue) { | ||
Manipulator__default['default'].setDataAttribute(element, styleProp, actualValue); | ||
} | ||
} | ||
_resetElementAttributes('body', 'paddingRight'); | ||
_resetElementAttributes(selector, styleProp) { | ||
const manipulationCallBack = element => { | ||
const value = Manipulator__default['default'].getDataAttribute(element, styleProp); | ||
_resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); | ||
if (typeof value === 'undefined') { | ||
element.style.removeProperty(styleProp); | ||
} else { | ||
Manipulator__default['default'].removeDataAttribute(element, styleProp); | ||
element.style[styleProp] = value; | ||
} | ||
}; | ||
_resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); | ||
}; | ||
this._applyManipulationCallback(selector, manipulationCallBack); | ||
} | ||
const _resetElementAttributes = (selector, styleProp) => { | ||
SelectorEngine__default['default'].find(selector).forEach(element => { | ||
const value = Manipulator__default['default'].getDataAttribute(element, styleProp); | ||
if (typeof value === 'undefined') { | ||
element.style.removeProperty(styleProp); | ||
_applyManipulationCallback(selector, callBack) { | ||
if (isElement(selector)) { | ||
callBack(selector); | ||
} else { | ||
Manipulator__default['default'].removeDataAttribute(element, styleProp); | ||
element.style[styleProp] = value; | ||
SelectorEngine__default['default'].find(selector, this._element).forEach(callBack); | ||
} | ||
}); | ||
}; | ||
} | ||
isOverflowing() { | ||
return this.getWidth() > 0; | ||
} | ||
} | ||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/backdrop.js | ||
* Bootstrap (v5.0.2): util/backdrop.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
@@ -297,3 +354,3 @@ * -------------------------------------------------------------------------- | ||
isAnimated: false, | ||
rootElement: document.body, | ||
rootElement: 'body', | ||
// give the choice to place backdrop under different elements | ||
@@ -305,3 +362,3 @@ clickCallback: null | ||
isAnimated: 'boolean', | ||
rootElement: 'element', | ||
rootElement: '(element|string)', | ||
clickCallback: '(function|null)' | ||
@@ -374,4 +431,5 @@ }; | ||
...(typeof config === 'object' ? config : {}) | ||
}; | ||
config.rootElement = config.rootElement || document.body; | ||
}; // use getElement() with the default "body" to get a fresh Element on each instantiation | ||
config.rootElement = getElement(config.rootElement); | ||
typeCheckConfig(NAME$1, config, DefaultType$1); | ||
@@ -401,3 +459,3 @@ return config; | ||
this._getElement().parentNode.removeChild(this._element); | ||
this._element.remove(); | ||
@@ -408,10 +466,3 @@ this._isAppended = false; | ||
_emulateAnimation(callback) { | ||
if (!this._config.isAnimated) { | ||
execute(callback); | ||
return; | ||
} | ||
const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement()); | ||
EventHandler__default['default'].one(this._getElement(), 'transitionend', () => execute(callback)); | ||
emulateTransitionEnd(this._getElement(), backdropTransitionDuration); | ||
executeAfterTransition(callback, this._getElement(), this._config.isAnimated); | ||
} | ||
@@ -423,3 +474,3 @@ | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): offcanvas.js | ||
* Bootstrap (v5.0.2): offcanvas.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
@@ -511,3 +562,3 @@ * -------------------------------------------------------------------------- | ||
if (!this._config.scroll) { | ||
hide(); | ||
new ScrollBarHelper().hide(); | ||
@@ -565,3 +616,3 @@ this._enforceFocusOnElement(this._element); | ||
if (!this._config.scroll) { | ||
reset(); | ||
new ScrollBarHelper().reset(); | ||
} | ||
@@ -624,3 +675,3 @@ | ||
return this.each(function () { | ||
const data = Data__default['default'].get(this, DATA_KEY) || new Offcanvas(this, typeof config === 'object' ? config : {}); | ||
const data = Offcanvas.getOrCreateInstance(this, config); | ||
@@ -671,8 +722,6 @@ if (typeof config !== 'string') { | ||
const data = Data__default['default'].get(target, DATA_KEY) || new Offcanvas(target); | ||
const data = Offcanvas.getOrCreateInstance(target); | ||
data.toggle(this); | ||
}); | ||
EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => { | ||
SelectorEngine__default['default'].find(OPEN_SELECTOR).forEach(el => (Data__default['default'].get(el, DATA_KEY) || new Offcanvas(el)).show()); | ||
}); | ||
EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => SelectorEngine__default['default'].find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())); | ||
/** | ||
@@ -679,0 +728,0 @@ * ------------------------------------------------------------------------ |
/*! | ||
* Bootstrap popover.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap popover.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,6 +7,6 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./tooltip.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './tooltip'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.SelectorEngine, global.Data, global.Tooltip)); | ||
}(this, (function (SelectorEngine, Data, Tooltip) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./tooltip.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './tooltip'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.SelectorEngine, global.Tooltip)); | ||
}(this, (function (SelectorEngine, Tooltip) { 'use strict'; | ||
@@ -16,3 +16,2 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip); | ||
@@ -32,5 +31,14 @@ | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -62,3 +70,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): popover.js | ||
* Bootstrap (v5.0.2): popover.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -133,2 +141,20 @@ * -------------------------------------------------------------------------- | ||
getTipElement() { | ||
if (this.tip) { | ||
return this.tip; | ||
} | ||
this.tip = super.getTipElement(); | ||
if (!this.getTitle()) { | ||
SelectorEngine__default['default'].findOne(SELECTOR_TITLE, this.tip).remove(); | ||
} | ||
if (!this._getContent()) { | ||
SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, this.tip).remove(); | ||
} | ||
return this.tip; | ||
} | ||
setContent() { | ||
@@ -170,15 +196,4 @@ const tip = this.getTipElement(); // we use append for html objects to maintain js events | ||
return this.each(function () { | ||
let data = Data__default['default'].get(this, DATA_KEY); | ||
const data = Popover.getOrCreateInstance(this, config); | ||
const _config = typeof config === 'object' ? config : null; | ||
if (!data && /dispose|hide/.test(config)) { | ||
return; | ||
} | ||
if (!data) { | ||
data = new Popover(this, _config); | ||
Data__default['default'].set(this, DATA_KEY, data); | ||
} | ||
if (typeof config === 'string') { | ||
@@ -185,0 +200,0 @@ if (typeof data[config] === 'undefined') { |
/*! | ||
* Bootstrap scrollspy.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap scrollspy.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -21,3 +21,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/index.js | ||
* Bootstrap (v5.0.2): util/index.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -121,5 +121,14 @@ * -------------------------------------------------------------------------- | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -151,3 +160,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): scrollspy.js | ||
* Bootstrap (v5.0.2): scrollspy.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -367,3 +376,3 @@ * -------------------------------------------------------------------------- | ||
return this.each(function () { | ||
const data = ScrollSpy.getInstance(this) || new ScrollSpy(this, typeof config === 'object' ? config : {}); | ||
const data = ScrollSpy.getOrCreateInstance(this, config); | ||
@@ -370,0 +379,0 @@ if (typeof config !== 'string') { |
/*! | ||
* Bootstrap tab.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap tab.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,6 +7,6 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, Data, EventHandler, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.SelectorEngine, global.EventHandler, global.Base)); | ||
}(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict'; | ||
@@ -16,3 +16,2 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -80,5 +79,14 @@ var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -110,3 +118,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): tab.js | ||
* Bootstrap (v5.0.2): tab.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -266,3 +274,3 @@ * -------------------------------------------------------------------------- | ||
return this.each(function () { | ||
const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this); | ||
const data = Tab.getOrCreateInstance(this); | ||
@@ -296,3 +304,3 @@ if (typeof config === 'string') { | ||
const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this); | ||
const data = Tab.getOrCreateInstance(this); | ||
data.show(); | ||
@@ -299,0 +307,0 @@ }); |
/*! | ||
* Bootstrap toast.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap toast.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -7,10 +7,9 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Data, global.EventHandler, global.Manipulator, global.Base)); | ||
}(this, (function (Data, EventHandler, Manipulator, BaseComponent) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : | ||
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './base-component'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.EventHandler, global.Manipulator, global.Base)); | ||
}(this, (function (EventHandler, Manipulator, BaseComponent) { 'use strict'; | ||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); | ||
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); | ||
@@ -66,5 +65,14 @@ var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -96,3 +104,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): toast.js | ||
* Bootstrap (v5.0.2): toast.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -297,10 +305,4 @@ * -------------------------------------------------------------------------- | ||
return this.each(function () { | ||
let data = Data__default['default'].get(this, DATA_KEY); | ||
const data = Toast.getOrCreateInstance(this, config); | ||
const _config = typeof config === 'object' && config; | ||
if (!data) { | ||
data = new Toast(this, _config); | ||
} | ||
if (typeof config === 'string') { | ||
@@ -307,0 +309,0 @@ if (typeof data[config] === 'undefined') { |
/*! | ||
* Bootstrap tooltip.js v5.0.1 (https://getbootstrap.com/) | ||
* Bootstrap tooltip.js v5.0.2 (https://getbootstrap.com/) | ||
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||
@@ -43,3 +43,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/index.js | ||
* Bootstrap (v5.0.2): util/index.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -147,5 +147,14 @@ * -------------------------------------------------------------------------- | ||
const DOMContentLoadedCallbacks = []; | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()); | ||
}); | ||
} | ||
DOMContentLoadedCallbacks.push(callback); | ||
} else { | ||
@@ -179,3 +188,3 @@ callback(); | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/sanitizer.js | ||
* Bootstrap (v5.0.2): util/sanitizer.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -275,3 +284,3 @@ * -------------------------------------------------------------------------- | ||
if (!allowlistKeys.includes(elName)) { | ||
el.parentNode.removeChild(el); | ||
el.remove(); | ||
continue; | ||
@@ -294,3 +303,3 @@ } | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): tooltip.js | ||
* Bootstrap (v5.0.2): tooltip.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -464,4 +473,4 @@ * -------------------------------------------------------------------------- | ||
if (this.tip && this.tip.parentNode) { | ||
this.tip.parentNode.removeChild(this.tip); | ||
if (this.tip) { | ||
this.tip.remove(); | ||
} | ||
@@ -571,4 +580,4 @@ | ||
if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { | ||
tip.parentNode.removeChild(tip); | ||
if (this._hoverState !== HOVER_STATE_SHOW) { | ||
tip.remove(); | ||
} | ||
@@ -960,14 +969,4 @@ | ||
return this.each(function () { | ||
let data = Data__default['default'].get(this, DATA_KEY); | ||
const data = Tooltip.getOrCreateInstance(this, config); | ||
const _config = typeof config === 'object' && config; | ||
if (!data && /dispose|hide/.test(config)) { | ||
return; | ||
} | ||
if (!data) { | ||
data = new Tooltip(this, _config); | ||
} | ||
if (typeof config === 'string') { | ||
@@ -974,0 +973,0 @@ if (typeof data[config] === 'undefined') { |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): alert.js | ||
* Bootstrap (v5.0.2): alert.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -12,3 +12,2 @@ * -------------------------------------------------------------------------- | ||
} from './util/index' | ||
import Data from './dom/data' | ||
import EventHandler from './dom/event-handler' | ||
@@ -82,5 +81,3 @@ import BaseComponent from './base-component' | ||
_destroyElement(element) { | ||
if (element.parentNode) { | ||
element.parentNode.removeChild(element) | ||
} | ||
element.remove() | ||
@@ -94,8 +91,4 @@ EventHandler.trigger(element, EVENT_CLOSED) | ||
return this.each(function () { | ||
let data = Data.get(this, DATA_KEY) | ||
const data = Alert.getOrCreateInstance(this) | ||
if (!data) { | ||
data = new Alert(this) | ||
} | ||
if (config === 'close') { | ||
@@ -102,0 +95,0 @@ data[config](this) |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): base-component.js | ||
* Bootstrap (v5.0.2): base-component.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -10,6 +10,4 @@ * -------------------------------------------------------------------------- | ||
import { | ||
emulateTransitionEnd, | ||
execute, | ||
getElement, | ||
getTransitionDurationFromElement | ||
executeAfterTransition, | ||
getElement | ||
} from './util/index' | ||
@@ -24,3 +22,3 @@ import EventHandler from './dom/event-handler' | ||
const VERSION = '5.0.1' | ||
const VERSION = '5.0.2' | ||
@@ -49,11 +47,3 @@ class BaseComponent { | ||
_queueCallback(callback, element, isAnimated = true) { | ||
if (!isAnimated) { | ||
execute(callback) | ||
return | ||
} | ||
const transitionDuration = getTransitionDurationFromElement(element) | ||
EventHandler.one(element, 'transitionend', () => execute(callback)) | ||
emulateTransitionEnd(element, transitionDuration) | ||
executeAfterTransition(callback, element, isAnimated) | ||
} | ||
@@ -67,2 +57,6 @@ | ||
static getOrCreateInstance(element, config = {}) { | ||
return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null) | ||
} | ||
static get VERSION() { | ||
@@ -69,0 +63,0 @@ return VERSION |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): button.js | ||
* Bootstrap (v5.0.2): button.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -9,3 +9,2 @@ * -------------------------------------------------------------------------- | ||
import { defineJQueryPlugin } from './util/index' | ||
import Data from './dom/data' | ||
import EventHandler from './dom/event-handler' | ||
@@ -55,8 +54,4 @@ import BaseComponent from './base-component' | ||
return this.each(function () { | ||
let data = Data.get(this, DATA_KEY) | ||
const data = Button.getOrCreateInstance(this) | ||
if (!data) { | ||
data = new Button(this) | ||
} | ||
if (config === 'toggle') { | ||
@@ -79,8 +74,4 @@ data[config]() | ||
const button = event.target.closest(SELECTOR_DATA_TOGGLE) | ||
const data = Button.getOrCreateInstance(button) | ||
let data = Data.get(button, DATA_KEY) | ||
if (!data) { | ||
data = new Button(button) | ||
} | ||
data.toggle() | ||
@@ -87,0 +78,0 @@ }) |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): carousel.js | ||
* Bootstrap (v5.0.2): carousel.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -13,2 +13,3 @@ * -------------------------------------------------------------------------- | ||
isVisible, | ||
getNextActiveElement, | ||
reflow, | ||
@@ -18,3 +19,2 @@ triggerTransitionEnd, | ||
} from './util/index' | ||
import Data from './dom/data' | ||
import EventHandler from './dom/event-handler' | ||
@@ -64,2 +64,7 @@ import Manipulator from './dom/manipulator' | ||
const KEY_TO_DIRECTION = { | ||
[ARROW_LEFT_KEY]: DIRECTION_RIGHT, | ||
[ARROW_RIGHT_KEY]: DIRECTION_LEFT | ||
} | ||
const EVENT_SLIDE = `slide${EVENT_KEY}` | ||
@@ -140,5 +145,3 @@ const EVENT_SLID = `slid${EVENT_KEY}` | ||
next() { | ||
if (!this._isSliding) { | ||
this._slide(ORDER_NEXT) | ||
} | ||
this._slide(ORDER_NEXT) | ||
} | ||
@@ -155,5 +158,3 @@ | ||
prev() { | ||
if (!this._isSliding) { | ||
this._slide(ORDER_PREV) | ||
} | ||
this._slide(ORDER_PREV) | ||
} | ||
@@ -226,3 +227,4 @@ | ||
...Default, | ||
...config | ||
...Manipulator.getDataAttributes(this._element), | ||
...(typeof config === 'object' ? config : {}) | ||
} | ||
@@ -327,8 +329,6 @@ typeCheckConfig(NAME, config, DefaultType) | ||
if (event.key === ARROW_LEFT_KEY) { | ||
const direction = KEY_TO_DIRECTION[event.key] | ||
if (direction) { | ||
event.preventDefault() | ||
this._slide(DIRECTION_RIGHT) | ||
} else if (event.key === ARROW_RIGHT_KEY) { | ||
event.preventDefault() | ||
this._slide(DIRECTION_LEFT) | ||
this._slide(direction) | ||
} | ||
@@ -347,17 +347,3 @@ } | ||
const isNext = order === ORDER_NEXT | ||
const isPrev = order === ORDER_PREV | ||
const activeIndex = this._getItemIndex(activeElement) | ||
const lastItemIndex = this._items.length - 1 | ||
const isGoingToWrap = (isPrev && activeIndex === 0) || (isNext && activeIndex === lastItemIndex) | ||
if (isGoingToWrap && !this._config.wrap) { | ||
return activeElement | ||
} | ||
const delta = isPrev ? -1 : 1 | ||
const itemIndex = (activeIndex + delta) % this._items.length | ||
return itemIndex === -1 ? | ||
this._items[this._items.length - 1] : | ||
this._items[itemIndex] | ||
return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap) | ||
} | ||
@@ -432,2 +418,6 @@ | ||
if (this._isSliding) { | ||
return | ||
} | ||
const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName) | ||
@@ -521,8 +511,5 @@ if (slideEvent.defaultPrevented) { | ||
static carouselInterface(element, config) { | ||
let data = Data.get(element, DATA_KEY) | ||
let _config = { | ||
...Default, | ||
...Manipulator.getDataAttributes(element) | ||
} | ||
const data = Carousel.getOrCreateInstance(element, config) | ||
let { _config } = data | ||
if (typeof config === 'object') { | ||
@@ -537,6 +524,2 @@ _config = { | ||
if (!data) { | ||
data = new Carousel(element, _config) | ||
} | ||
if (typeof config === 'number') { | ||
@@ -582,3 +565,3 @@ data.to(config) | ||
if (slideIndex) { | ||
Data.get(target, DATA_KEY).to(slideIndex) | ||
Carousel.getInstance(target).to(slideIndex) | ||
} | ||
@@ -602,3 +585,3 @@ | ||
for (let i = 0, len = carousels.length; i < len; i++) { | ||
Carousel.carouselInterface(carousels[i], Data.get(carousels[i], DATA_KEY)) | ||
Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i])) | ||
} | ||
@@ -605,0 +588,0 @@ }) |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): collapse.js | ||
* Bootstrap (v5.0.2): collapse.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -148,3 +148,3 @@ * -------------------------------------------------------------------------- | ||
const tempActiveData = actives.find(elem => container !== elem) | ||
activesData = tempActiveData ? Data.get(tempActiveData, DATA_KEY) : null | ||
activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null | ||
@@ -314,3 +314,3 @@ if (activesData && activesData._isTransitioning) { | ||
static collapseInterface(element, config) { | ||
let data = Data.get(element, DATA_KEY) | ||
let data = Collapse.getInstance(element) | ||
const _config = { | ||
@@ -363,3 +363,3 @@ ...Default, | ||
selectorElements.forEach(element => { | ||
const data = Data.get(element, DATA_KEY) | ||
const data = Collapse.getInstance(element) | ||
let config | ||
@@ -366,0 +366,0 @@ if (data) { |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/data.js | ||
* Bootstrap (v5.0.2): dom/data.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -5,0 +5,0 @@ * -------------------------------------------------------------------------- |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/event-handler.js | ||
* Bootstrap (v5.0.2): dom/event-handler.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -5,0 +5,0 @@ * -------------------------------------------------------------------------- |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/manipulator.js | ||
* Bootstrap (v5.0.2): dom/manipulator.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -5,0 +5,0 @@ * -------------------------------------------------------------------------- |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dom/selector-engine.js | ||
* Bootstrap (v5.0.2): dom/selector-engine.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -5,0 +5,0 @@ * -------------------------------------------------------------------------- |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): dropdown.js | ||
* Bootstrap (v5.0.2): dropdown.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -19,5 +19,5 @@ * -------------------------------------------------------------------------- | ||
noop, | ||
getNextActiveElement, | ||
typeCheckConfig | ||
} from './util/index' | ||
import Data from './dom/data' | ||
import EventHandler from './dom/event-handler' | ||
@@ -357,3 +357,3 @@ import Manipulator from './dom/manipulator' | ||
_selectMenuItem(event) { | ||
_selectMenuItem({ key, target }) { | ||
const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible) | ||
@@ -365,18 +365,5 @@ | ||
let index = items.indexOf(event.target) | ||
// Up | ||
if (event.key === ARROW_UP_KEY && index > 0) { | ||
index-- | ||
} | ||
// Down | ||
if (event.key === ARROW_DOWN_KEY && index < items.length - 1) { | ||
index++ | ||
} | ||
// index is -1 if the first keydown is an ArrowUp | ||
index = index === -1 ? 0 : index | ||
items[index].focus() | ||
// if target isn't included in items (e.g. when expanding the dropdown) | ||
// allow cycling to get the last item in case key equals ARROW_UP_KEY | ||
getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus() | ||
} | ||
@@ -387,9 +374,4 @@ | ||
static dropdownInterface(element, config) { | ||
let data = Data.get(element, DATA_KEY) | ||
const _config = typeof config === 'object' ? config : null | ||
const data = Dropdown.getOrCreateInstance(element, config) | ||
if (!data) { | ||
data = new Dropdown(element, _config) | ||
} | ||
if (typeof config === 'string') { | ||
@@ -418,3 +400,3 @@ if (typeof data[config] === 'undefined') { | ||
for (let i = 0, len = toggles.length; i < len; i++) { | ||
const context = Data.get(toggles[i], DATA_KEY) | ||
const context = Dropdown.getInstance(toggles[i]) | ||
if (!context || context._config.autoClose === false) { | ||
@@ -498,4 +480,8 @@ continue | ||
if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) { | ||
getToggleButton().click() | ||
if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { | ||
if (!isActive) { | ||
getToggleButton().click() | ||
} | ||
Dropdown.getInstance(getToggleButton())._selectMenuItem(event) | ||
return | ||
@@ -506,6 +492,3 @@ } | ||
Dropdown.clearMenus() | ||
return | ||
} | ||
Dropdown.getInstance(getToggleButton())._selectMenuItem(event) | ||
} | ||
@@ -512,0 +495,0 @@ } |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): modal.js | ||
* Bootstrap (v5.0.2): modal.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -10,5 +10,3 @@ * -------------------------------------------------------------------------- | ||
defineJQueryPlugin, | ||
emulateTransitionEnd, | ||
getElementFromSelector, | ||
getTransitionDurationFromElement, | ||
isRTL, | ||
@@ -22,3 +20,3 @@ isVisible, | ||
import SelectorEngine from './dom/selector-engine' | ||
import { getWidth as getScrollBarWidth, hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar' | ||
import ScrollBarHelper from './util/scrollbar' | ||
import BaseComponent from './base-component' | ||
@@ -90,2 +88,3 @@ import Backdrop from './util/backdrop' | ||
this._isTransitioning = false | ||
this._scrollBar = new ScrollBarHelper() | ||
} | ||
@@ -114,6 +113,2 @@ | ||
if (this._isAnimated()) { | ||
this._isTransitioning = true | ||
} | ||
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { | ||
@@ -123,3 +118,3 @@ relatedTarget | ||
if (this._isShown || showEvent.defaultPrevented) { | ||
if (showEvent.defaultPrevented) { | ||
return | ||
@@ -130,4 +125,8 @@ } | ||
scrollBarHide() | ||
if (this._isAnimated()) { | ||
this._isTransitioning = true | ||
} | ||
this._scrollBar.hide() | ||
document.body.classList.add(CLASS_NAME_OPEN) | ||
@@ -154,3 +153,3 @@ | ||
hide(event) { | ||
if (event) { | ||
if (event && ['A', 'AREA'].includes(event.target.tagName)) { | ||
event.preventDefault() | ||
@@ -221,3 +220,3 @@ } | ||
...Manipulator.getDataAttributes(this._element), | ||
...config | ||
...(typeof config === 'object' ? config : {}) | ||
} | ||
@@ -314,3 +313,3 @@ typeCheckConfig(NAME, config, DefaultType) | ||
this._resetAdjustments() | ||
scrollBarReset() | ||
this._scrollBar.reset() | ||
EventHandler.trigger(this._element, EVENT_HIDDEN) | ||
@@ -351,21 +350,24 @@ }) | ||
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight | ||
const { classList, scrollHeight, style } = this._element | ||
const isModalOverflowing = scrollHeight > document.documentElement.clientHeight | ||
// return if the following background transition hasn't yet completed | ||
if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) { | ||
return | ||
} | ||
if (!isModalOverflowing) { | ||
this._element.style.overflowY = 'hidden' | ||
style.overflowY = 'hidden' | ||
} | ||
this._element.classList.add(CLASS_NAME_STATIC) | ||
const modalTransitionDuration = getTransitionDurationFromElement(this._dialog) | ||
EventHandler.off(this._element, 'transitionend') | ||
EventHandler.one(this._element, 'transitionend', () => { | ||
this._element.classList.remove(CLASS_NAME_STATIC) | ||
classList.add(CLASS_NAME_STATIC) | ||
this._queueCallback(() => { | ||
classList.remove(CLASS_NAME_STATIC) | ||
if (!isModalOverflowing) { | ||
EventHandler.one(this._element, 'transitionend', () => { | ||
this._element.style.overflowY = '' | ||
}) | ||
emulateTransitionEnd(this._element, modalTransitionDuration) | ||
this._queueCallback(() => { | ||
style.overflowY = '' | ||
}, this._dialog) | ||
} | ||
}) | ||
emulateTransitionEnd(this._element, modalTransitionDuration) | ||
}, this._dialog) | ||
this._element.focus() | ||
@@ -380,3 +382,3 @@ } | ||
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight | ||
const scrollbarWidth = getScrollBarWidth() | ||
const scrollbarWidth = this._scrollBar.getWidth() | ||
const isBodyOverflowing = scrollbarWidth > 0 | ||
@@ -402,3 +404,3 @@ | ||
return this.each(function () { | ||
const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {}) | ||
const data = Modal.getOrCreateInstance(this, config) | ||
@@ -444,3 +446,3 @@ if (typeof config !== 'string') { | ||
const data = Modal.getInstance(target) || new Modal(target) | ||
const data = Modal.getOrCreateInstance(target) | ||
@@ -447,0 +449,0 @@ data.toggle(this) |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): offcanvas.js | ||
* Bootstrap (v5.0.2): offcanvas.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
@@ -15,4 +15,3 @@ * -------------------------------------------------------------------------- | ||
} from './util/index' | ||
import { hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar' | ||
import Data from './dom/data' | ||
import ScrollBarHelper from './util/scrollbar' | ||
import EventHandler from './dom/event-handler' | ||
@@ -113,3 +112,3 @@ import BaseComponent from './base-component' | ||
if (!this._config.scroll) { | ||
scrollBarHide() | ||
new ScrollBarHelper().hide() | ||
this._enforceFocusOnElement(this._element) | ||
@@ -154,3 +153,3 @@ } | ||
if (!this._config.scroll) { | ||
scrollBarReset() | ||
new ScrollBarHelper().reset() | ||
} | ||
@@ -217,3 +216,3 @@ | ||
return this.each(function () { | ||
const data = Data.get(this, DATA_KEY) || new Offcanvas(this, typeof config === 'object' ? config : {}) | ||
const data = Offcanvas.getOrCreateInstance(this, config) | ||
@@ -263,10 +262,9 @@ if (typeof config !== 'string') { | ||
const data = Data.get(target, DATA_KEY) || new Offcanvas(target) | ||
const data = Offcanvas.getOrCreateInstance(target) | ||
data.toggle(this) | ||
}) | ||
EventHandler.on(window, EVENT_LOAD_DATA_API, () => { | ||
SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY) || new Offcanvas(el)).show()) | ||
}) | ||
EventHandler.on(window, EVENT_LOAD_DATA_API, () => | ||
SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()) | ||
) | ||
@@ -273,0 +271,0 @@ /** |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): popover.js | ||
* Bootstrap (v5.0.2): popover.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -9,3 +9,2 @@ * -------------------------------------------------------------------------- | ||
import { defineJQueryPlugin } from './util/index' | ||
import Data from './dom/data' | ||
import SelectorEngine from './dom/selector-engine' | ||
@@ -34,3 +33,3 @@ import Tooltip from './tooltip' | ||
'<div class="popover-arrow"></div>' + | ||
'<h3 class="popover-header"></h3>' + | ||
'<h3 class="popover-header"></h3>' + | ||
'<div class="popover-body"></div>' + | ||
@@ -95,2 +94,20 @@ '</div>' | ||
getTipElement() { | ||
if (this.tip) { | ||
return this.tip | ||
} | ||
this.tip = super.getTipElement() | ||
if (!this.getTitle()) { | ||
SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove() | ||
} | ||
if (!this._getContent()) { | ||
SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove() | ||
} | ||
return this.tip | ||
} | ||
setContent() { | ||
@@ -134,14 +151,4 @@ const tip = this.getTipElement() | ||
return this.each(function () { | ||
let data = Data.get(this, DATA_KEY) | ||
const _config = typeof config === 'object' ? config : null | ||
const data = Popover.getOrCreateInstance(this, config) | ||
if (!data && /dispose|hide/.test(config)) { | ||
return | ||
} | ||
if (!data) { | ||
data = new Popover(this, _config) | ||
Data.set(this, DATA_KEY, data) | ||
} | ||
if (typeof config === 'string') { | ||
@@ -148,0 +155,0 @@ if (typeof data[config] === 'undefined') { |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): scrollspy.js | ||
* Bootstrap (v5.0.2): scrollspy.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -273,3 +273,3 @@ * -------------------------------------------------------------------------- | ||
return this.each(function () { | ||
const data = ScrollSpy.getInstance(this) || new ScrollSpy(this, typeof config === 'object' ? config : {}) | ||
const data = ScrollSpy.getOrCreateInstance(this, config) | ||
@@ -276,0 +276,0 @@ if (typeof config !== 'string') { |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): tab.js | ||
* Bootstrap (v5.0.2): tab.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -14,3 +14,2 @@ * -------------------------------------------------------------------------- | ||
} from './util/index' | ||
import Data from './dom/data' | ||
import EventHandler from './dom/event-handler' | ||
@@ -185,3 +184,3 @@ import SelectorEngine from './dom/selector-engine' | ||
return this.each(function () { | ||
const data = Data.get(this, DATA_KEY) || new Tab(this) | ||
const data = Tab.getOrCreateInstance(this) | ||
@@ -214,3 +213,3 @@ if (typeof config === 'string') { | ||
const data = Data.get(this, DATA_KEY) || new Tab(this) | ||
const data = Tab.getOrCreateInstance(this) | ||
data.show() | ||
@@ -217,0 +216,0 @@ }) |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): toast.js | ||
* Bootstrap (v5.0.2): toast.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -13,3 +13,2 @@ * -------------------------------------------------------------------------- | ||
} from './util/index' | ||
import Data from './dom/data' | ||
import EventHandler from './dom/event-handler' | ||
@@ -222,9 +221,4 @@ import Manipulator from './dom/manipulator' | ||
return this.each(function () { | ||
let data = Data.get(this, DATA_KEY) | ||
const _config = typeof config === 'object' && config | ||
const data = Toast.getOrCreateInstance(this, config) | ||
if (!data) { | ||
data = new Toast(this, _config) | ||
} | ||
if (typeof config === 'string') { | ||
@@ -231,0 +225,0 @@ if (typeof data[config] === 'undefined') { |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): tooltip.js | ||
* Bootstrap (v5.0.2): tooltip.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -211,4 +211,4 @@ * -------------------------------------------------------------------------- | ||
if (this.tip && this.tip.parentNode) { | ||
this.tip.parentNode.removeChild(this.tip) | ||
if (this.tip) { | ||
this.tip.remove() | ||
} | ||
@@ -318,4 +318,4 @@ | ||
if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { | ||
tip.parentNode.removeChild(tip) | ||
if (this._hoverState !== HOVER_STATE_SHOW) { | ||
tip.remove() | ||
} | ||
@@ -727,13 +727,4 @@ | ||
return this.each(function () { | ||
let data = Data.get(this, DATA_KEY) | ||
const _config = typeof config === 'object' && config | ||
const data = Tooltip.getOrCreateInstance(this, config) | ||
if (!data && /dispose|hide/.test(config)) { | ||
return | ||
} | ||
if (!data) { | ||
data = new Tooltip(this, _config) | ||
} | ||
if (typeof config === 'string') { | ||
@@ -740,0 +731,0 @@ if (typeof data[config] === 'undefined') { |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/backdrop.js | ||
* Bootstrap (v5.0.2): util/backdrop.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
@@ -9,3 +9,3 @@ * -------------------------------------------------------------------------- | ||
import EventHandler from '../dom/event-handler' | ||
import { emulateTransitionEnd, execute, getTransitionDurationFromElement, reflow, typeCheckConfig } from './index' | ||
import { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index' | ||
@@ -15,3 +15,3 @@ const Default = { | ||
isAnimated: false, | ||
rootElement: document.body, // give the choice to place backdrop under different elements | ||
rootElement: 'body', // give the choice to place backdrop under different elements | ||
clickCallback: null | ||
@@ -23,3 +23,3 @@ } | ||
isAnimated: 'boolean', | ||
rootElement: 'element', | ||
rootElement: '(element|string)', | ||
clickCallback: '(function|null)' | ||
@@ -96,3 +96,4 @@ } | ||
config.rootElement = config.rootElement || document.body | ||
// use getElement() with the default "body" to get a fresh Element on each instantiation | ||
config.rootElement = getElement(config.rootElement) | ||
typeCheckConfig(NAME, config, DefaultType) | ||
@@ -123,3 +124,3 @@ return config | ||
this._getElement().parentNode.removeChild(this._element) | ||
this._element.remove() | ||
this._isAppended = false | ||
@@ -129,10 +130,3 @@ } | ||
_emulateAnimation(callback) { | ||
if (!this._config.isAnimated) { | ||
execute(callback) | ||
return | ||
} | ||
const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement()) | ||
EventHandler.one(this._getElement(), 'transitionend', () => execute(callback)) | ||
emulateTransitionEnd(this._getElement(), backdropTransitionDuration) | ||
executeAfterTransition(callback, this._getElement(), this._config.isAnimated) | ||
} | ||
@@ -139,0 +133,0 @@ } |
@@ -5,3 +5,3 @@ import SelectorEngine from '../dom/selector-engine' | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/index.js | ||
* Bootstrap (v5.0.2): util/index.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -130,20 +130,2 @@ * -------------------------------------------------------------------------- | ||
const emulateTransitionEnd = (element, duration) => { | ||
let called = false | ||
const durationPadding = 5 | ||
const emulatedDuration = duration + durationPadding | ||
function listener() { | ||
called = true | ||
element.removeEventListener(TRANSITION_END, listener) | ||
} | ||
element.addEventListener(TRANSITION_END, listener) | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(element) | ||
} | ||
}, emulatedDuration) | ||
} | ||
const typeCheckConfig = (componentName, config, configTypes) => { | ||
@@ -164,16 +146,7 @@ Object.keys(configTypes).forEach(property => { | ||
const isVisible = element => { | ||
if (!element) { | ||
if (!isElement(element) || element.getClientRects().length === 0) { | ||
return false | ||
} | ||
if (element.style && element.parentNode && element.parentNode.style) { | ||
const elementStyle = getComputedStyle(element) | ||
const parentNodeStyle = getComputedStyle(element.parentNode) | ||
return elementStyle.display !== 'none' && | ||
parentNodeStyle.display !== 'none' && | ||
elementStyle.visibility !== 'hidden' | ||
} | ||
return false | ||
return getComputedStyle(element).getPropertyValue('visibility') === 'visible' | ||
} | ||
@@ -234,5 +207,14 @@ | ||
const DOMContentLoadedCallbacks = [] | ||
const onDOMContentLoaded = callback => { | ||
if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', callback) | ||
// add listener on the first call when the document is in loading state | ||
if (!DOMContentLoadedCallbacks.length) { | ||
document.addEventListener('DOMContentLoaded', () => { | ||
DOMContentLoadedCallbacks.forEach(callback => callback()) | ||
}) | ||
} | ||
DOMContentLoadedCallbacks.push(callback) | ||
} else { | ||
@@ -268,2 +250,59 @@ callback() | ||
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { | ||
if (!waitForTransition) { | ||
execute(callback) | ||
return | ||
} | ||
const durationPadding = 5 | ||
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding | ||
let called = false | ||
const handler = ({ target }) => { | ||
if (target !== transitionElement) { | ||
return | ||
} | ||
called = true | ||
transitionElement.removeEventListener(TRANSITION_END, handler) | ||
execute(callback) | ||
} | ||
transitionElement.addEventListener(TRANSITION_END, handler) | ||
setTimeout(() => { | ||
if (!called) { | ||
triggerTransitionEnd(transitionElement) | ||
} | ||
}, emulatedDuration) | ||
} | ||
/** | ||
* Return the previous/next element of a list. | ||
* | ||
* @param {array} list The list of elements | ||
* @param activeElement The active element | ||
* @param shouldGetNext Choose to get next or previous element | ||
* @param isCycleAllowed | ||
* @return {Element|elem} The proper element | ||
*/ | ||
const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { | ||
let index = list.indexOf(activeElement) | ||
// if the element does not exist in the list return an element depending on the direction and if cycle is allowed | ||
if (index === -1) { | ||
return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0] | ||
} | ||
const listLength = list.length | ||
index += shouldGetNext ? 1 : -1 | ||
if (isCycleAllowed) { | ||
index = (index + listLength) % listLength | ||
} | ||
return list[Math.max(0, Math.min(index, listLength - 1))] | ||
} | ||
export { | ||
@@ -277,3 +316,2 @@ getElement, | ||
isElement, | ||
emulateTransitionEnd, | ||
typeCheckConfig, | ||
@@ -284,2 +322,3 @@ isVisible, | ||
noop, | ||
getNextActiveElement, | ||
reflow, | ||
@@ -290,3 +329,4 @@ getjQuery, | ||
defineJQueryPlugin, | ||
execute | ||
execute, | ||
executeAfterTransition | ||
} |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/sanitizer.js | ||
* Bootstrap (v5.0.2): util/sanitizer.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -111,3 +111,3 @@ * -------------------------------------------------------------------------- | ||
if (!allowlistKeys.includes(elName)) { | ||
el.parentNode.removeChild(el) | ||
el.remove() | ||
@@ -114,0 +114,0 @@ continue |
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v5.0.1): util/scrollBar.js | ||
* Bootstrap (v5.0.2): util/scrollBar.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||
@@ -10,2 +10,3 @@ * -------------------------------------------------------------------------- | ||
import Manipulator from '../dom/manipulator' | ||
import { isElement } from './index' | ||
@@ -15,69 +16,84 @@ const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' | ||
const getWidth = () => { | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = document.documentElement.clientWidth | ||
return Math.abs(window.innerWidth - documentWidth) | ||
} | ||
class ScrollBarHelper { | ||
constructor() { | ||
this._element = document.body | ||
} | ||
const hide = (width = getWidth()) => { | ||
_disableOverFlow() | ||
// give padding to element to balances the hidden scrollbar width | ||
_setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width) | ||
// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth | ||
_setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width) | ||
_setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width) | ||
} | ||
getWidth() { | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = document.documentElement.clientWidth | ||
return Math.abs(window.innerWidth - documentWidth) | ||
} | ||
const _disableOverFlow = () => { | ||
const actualValue = document.body.style.overflow | ||
if (actualValue) { | ||
Manipulator.setDataAttribute(document.body, 'overflow', actualValue) | ||
hide() { | ||
const width = this.getWidth() | ||
this._disableOverFlow() | ||
// give padding to element to balance the hidden scrollbar width | ||
this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width) | ||
// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth | ||
this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width) | ||
this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width) | ||
} | ||
document.body.style.overflow = 'hidden' | ||
} | ||
_disableOverFlow() { | ||
this._saveInitialAttribute(this._element, 'overflow') | ||
this._element.style.overflow = 'hidden' | ||
} | ||
const _setElementAttributes = (selector, styleProp, callback) => { | ||
const scrollbarWidth = getWidth() | ||
SelectorEngine.find(selector) | ||
.forEach(element => { | ||
if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) { | ||
_setElementAttributes(selector, styleProp, callback) { | ||
const scrollbarWidth = this.getWidth() | ||
const manipulationCallBack = element => { | ||
if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { | ||
return | ||
} | ||
const actualValue = element.style[styleProp] | ||
this._saveInitialAttribute(element, styleProp) | ||
const calculatedValue = window.getComputedStyle(element)[styleProp] | ||
Manipulator.setDataAttribute(element, styleProp, actualValue) | ||
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px` | ||
}) | ||
} | ||
} | ||
const reset = () => { | ||
_resetElementAttributes('body', 'overflow') | ||
_resetElementAttributes('body', 'paddingRight') | ||
_resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight') | ||
_resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight') | ||
} | ||
this._applyManipulationCallback(selector, manipulationCallBack) | ||
} | ||
const _resetElementAttributes = (selector, styleProp) => { | ||
SelectorEngine.find(selector).forEach(element => { | ||
const value = Manipulator.getDataAttribute(element, styleProp) | ||
if (typeof value === 'undefined') { | ||
element.style.removeProperty(styleProp) | ||
reset() { | ||
this._resetElementAttributes(this._element, 'overflow') | ||
this._resetElementAttributes(this._element, 'paddingRight') | ||
this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight') | ||
this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight') | ||
} | ||
_saveInitialAttribute(element, styleProp) { | ||
const actualValue = element.style[styleProp] | ||
if (actualValue) { | ||
Manipulator.setDataAttribute(element, styleProp, actualValue) | ||
} | ||
} | ||
_resetElementAttributes(selector, styleProp) { | ||
const manipulationCallBack = element => { | ||
const value = Manipulator.getDataAttribute(element, styleProp) | ||
if (typeof value === 'undefined') { | ||
element.style.removeProperty(styleProp) | ||
} else { | ||
Manipulator.removeDataAttribute(element, styleProp) | ||
element.style[styleProp] = value | ||
} | ||
} | ||
this._applyManipulationCallback(selector, manipulationCallBack) | ||
} | ||
_applyManipulationCallback(selector, callBack) { | ||
if (isElement(selector)) { | ||
callBack(selector) | ||
} else { | ||
Manipulator.removeDataAttribute(element, styleProp) | ||
element.style[styleProp] = value | ||
SelectorEngine.find(selector, this._element).forEach(callBack) | ||
} | ||
}) | ||
} | ||
} | ||
const isBodyOverflowing = () => { | ||
return getWidth() > 0 | ||
isOverflowing() { | ||
return this.getWidth() > 0 | ||
} | ||
} | ||
export { | ||
getWidth, | ||
hide, | ||
isBodyOverflowing, | ||
reset | ||
} | ||
export default ScrollBarHelper |
{ | ||
"name": "bootstrap", | ||
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", | ||
"version": "5.0.1", | ||
"version": "5.0.2", | ||
"config": { | ||
@@ -103,5 +103,5 @@ "version_short": "5.0" | ||
"devDependencies": { | ||
"@babel/cli": "^7.13.16", | ||
"@babel/core": "^7.14.2", | ||
"@babel/preset-env": "^7.14.2", | ||
"@babel/cli": "^7.14.5", | ||
"@babel/core": "^7.14.6", | ||
"@babel/preset-env": "^7.14.7", | ||
"@popperjs/core": "^2.9.2", | ||
@@ -112,18 +112,18 @@ "@rollup/plugin-babel": "^5.3.0", | ||
"@rollup/plugin-replace": "^2.4.2", | ||
"autoprefixer": "^10.2.5", | ||
"autoprefixer": "^10.2.6", | ||
"bundlewatch": "^0.3.2", | ||
"clean-css-cli": "^5.3.0", | ||
"cross-env": "^7.0.3", | ||
"eslint": "^7.26.0", | ||
"eslint": "^7.29.0", | ||
"eslint-config-xo": "^0.36.0", | ||
"eslint-plugin-import": "^2.22.1", | ||
"eslint-plugin-import": "^2.23.4", | ||
"eslint-plugin-unicorn": "^31.0.0", | ||
"find-unused-sass-variables": "^3.1.0", | ||
"glob": "^7.1.7", | ||
"globby": "^11.0.3", | ||
"globby": "^11.0.4", | ||
"hammer-simulator": "0.0.1", | ||
"hugo-bin": "^0.71.1", | ||
"hugo-bin": "^0.72.1", | ||
"ip": "^1.1.5", | ||
"jquery": "^3.6.0", | ||
"karma": "^6.3.2", | ||
"karma": "^6.3.4", | ||
"karma-browserstack-launcher": "1.4.0", | ||
@@ -133,3 +133,3 @@ "karma-chrome-launcher": "^3.1.0", | ||
"karma-detect-browsers": "^2.3.3", | ||
"karma-firefox-launcher": "^2.1.0", | ||
"karma-firefox-launcher": "^2.1.1", | ||
"karma-jasmine": "^4.0.1", | ||
@@ -142,13 +142,13 @@ "karma-jasmine-html-reporter": "^1.6.0", | ||
"npm-run-all": "^4.1.5", | ||
"postcss": "^8.2.15", | ||
"postcss": "^8.3.5", | ||
"postcss-cli": "^8.3.1", | ||
"rollup": "^2.47.0", | ||
"rollup": "^2.52.2", | ||
"rollup-plugin-istanbul": "^3.0.0", | ||
"rtlcss": "^3.1.2", | ||
"sass": "^1.32.13", | ||
"rtlcss": "^3.2.0", | ||
"sass": "^1.35.1", | ||
"shelljs": "^0.8.4", | ||
"stylelint": "^13.13.1", | ||
"stylelint-config-twbs-bootstrap": "^2.2.0", | ||
"stylelint-config-twbs-bootstrap": "^2.2.1", | ||
"terser": "5.1.0", | ||
"vnu-jar": "21.4.9" | ||
"vnu-jar": "21.6.11" | ||
}, | ||
@@ -155,0 +155,0 @@ "files": [ |
@@ -49,7 +49,7 @@ <p align="center"> | ||
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.0.1.zip) | ||
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.0.2.zip) | ||
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git` | ||
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap` | ||
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap` | ||
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.0.1` | ||
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.0.2` | ||
- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass` | ||
@@ -181,3 +181,3 @@ | ||
- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/). | ||
- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. | ||
- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel. | ||
- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). | ||
@@ -184,0 +184,0 @@ - Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8338915
59899