@zuii/booking 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/index.cjs +94 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +66 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/react/index.cjs +94 -0
- package/dist/react/index.cjs.map +1 -0
- package/dist/react/index.d.cts +15 -0
- package/dist/react/index.d.ts +15 -0
- package/dist/react/index.js +94 -0
- package/dist/react/index.js.map +1 -0
- package/dist/style/booking.css +124 -0
- package/dist/style/booking.css.map +1 -0
- package/dist/style/booking.min.css +1 -0
- package/dist/style/booking.min.css.map +1 -0
- package/package.json +52 -0
- package/src/symfony/README.md +40 -0
- package/src/symfony/booking_controller.ts +72 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { CalendarOptions } from '@zuii/calendar';
|
|
2
|
+
|
|
3
|
+
interface BookingField {
|
|
4
|
+
name: string;
|
|
5
|
+
label: string;
|
|
6
|
+
type: 'text' | 'email' | 'tel' | 'textarea' | 'number' | 'date';
|
|
7
|
+
required?: boolean;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
}
|
|
10
|
+
interface BookingOptions extends Omit<CalendarOptions, 'onDateSelect'> {
|
|
11
|
+
lang?: 'fr' | 'en';
|
|
12
|
+
availability: Record<string, string[]>;
|
|
13
|
+
selectedDate?: Date | null;
|
|
14
|
+
inputName?: string;
|
|
15
|
+
fields?: BookingField[];
|
|
16
|
+
onSlotSelect?: (date: Date, slot: string, formData: Record<string, any>) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Composant Réservation (Booking) Vanilla JS.
|
|
20
|
+
* Englobe le calendrier et la sélection de créneaux.
|
|
21
|
+
*/
|
|
22
|
+
declare class Booking {
|
|
23
|
+
private container;
|
|
24
|
+
private calendarContainer;
|
|
25
|
+
private slotsContainer;
|
|
26
|
+
private calendarInstance;
|
|
27
|
+
private selectedDate;
|
|
28
|
+
private selectedSlot;
|
|
29
|
+
private options;
|
|
30
|
+
private currentTrads;
|
|
31
|
+
/**
|
|
32
|
+
* @param {HTMLElement} container - Élément DOM où injecter le booking.
|
|
33
|
+
* @param {BookingOptions} options - Options de configuration.
|
|
34
|
+
*/
|
|
35
|
+
constructor(container: HTMLElement, options: BookingOptions);
|
|
36
|
+
/**
|
|
37
|
+
* Initialise la structure de base (deux colonnes).
|
|
38
|
+
*/
|
|
39
|
+
private initLayout;
|
|
40
|
+
/**
|
|
41
|
+
* Met à jour la date sélectionnée.
|
|
42
|
+
* @param {Date} date - La nouvelle date sélectionnée.
|
|
43
|
+
*/
|
|
44
|
+
updateDate(date: Date): void;
|
|
45
|
+
/**
|
|
46
|
+
* Change la langue du composant.
|
|
47
|
+
* @param {string} lang - 'fr' ou 'en'.
|
|
48
|
+
*/
|
|
49
|
+
setLanguage(lang: 'fr' | 'en'): void;
|
|
50
|
+
/**
|
|
51
|
+
* Rendu HTML de la partie créneaux (booking).
|
|
52
|
+
*/
|
|
53
|
+
private render;
|
|
54
|
+
/**
|
|
55
|
+
* Attache les événements DOM.
|
|
56
|
+
*/
|
|
57
|
+
private bindEvents;
|
|
58
|
+
/**
|
|
59
|
+
* Ouvre la modale de confirmation pour un créneau donné.
|
|
60
|
+
* @param {Date} date - La date sélectionnée.
|
|
61
|
+
* @param {string} slot - Le créneau horaire.
|
|
62
|
+
*/
|
|
63
|
+
private openConfirmationModal;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { Booking, type BookingField, type BookingOptions };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { CalendarOptions } from '@zuii/calendar';
|
|
2
|
+
|
|
3
|
+
interface BookingField {
|
|
4
|
+
name: string;
|
|
5
|
+
label: string;
|
|
6
|
+
type: 'text' | 'email' | 'tel' | 'textarea' | 'number' | 'date';
|
|
7
|
+
required?: boolean;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
}
|
|
10
|
+
interface BookingOptions extends Omit<CalendarOptions, 'onDateSelect'> {
|
|
11
|
+
lang?: 'fr' | 'en';
|
|
12
|
+
availability: Record<string, string[]>;
|
|
13
|
+
selectedDate?: Date | null;
|
|
14
|
+
inputName?: string;
|
|
15
|
+
fields?: BookingField[];
|
|
16
|
+
onSlotSelect?: (date: Date, slot: string, formData: Record<string, any>) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Composant Réservation (Booking) Vanilla JS.
|
|
20
|
+
* Englobe le calendrier et la sélection de créneaux.
|
|
21
|
+
*/
|
|
22
|
+
declare class Booking {
|
|
23
|
+
private container;
|
|
24
|
+
private calendarContainer;
|
|
25
|
+
private slotsContainer;
|
|
26
|
+
private calendarInstance;
|
|
27
|
+
private selectedDate;
|
|
28
|
+
private selectedSlot;
|
|
29
|
+
private options;
|
|
30
|
+
private currentTrads;
|
|
31
|
+
/**
|
|
32
|
+
* @param {HTMLElement} container - Élément DOM où injecter le booking.
|
|
33
|
+
* @param {BookingOptions} options - Options de configuration.
|
|
34
|
+
*/
|
|
35
|
+
constructor(container: HTMLElement, options: BookingOptions);
|
|
36
|
+
/**
|
|
37
|
+
* Initialise la structure de base (deux colonnes).
|
|
38
|
+
*/
|
|
39
|
+
private initLayout;
|
|
40
|
+
/**
|
|
41
|
+
* Met à jour la date sélectionnée.
|
|
42
|
+
* @param {Date} date - La nouvelle date sélectionnée.
|
|
43
|
+
*/
|
|
44
|
+
updateDate(date: Date): void;
|
|
45
|
+
/**
|
|
46
|
+
* Change la langue du composant.
|
|
47
|
+
* @param {string} lang - 'fr' ou 'en'.
|
|
48
|
+
*/
|
|
49
|
+
setLanguage(lang: 'fr' | 'en'): void;
|
|
50
|
+
/**
|
|
51
|
+
* Rendu HTML de la partie créneaux (booking).
|
|
52
|
+
*/
|
|
53
|
+
private render;
|
|
54
|
+
/**
|
|
55
|
+
* Attache les événements DOM.
|
|
56
|
+
*/
|
|
57
|
+
private bindEvents;
|
|
58
|
+
/**
|
|
59
|
+
* Ouvre la modale de confirmation pour un créneau donné.
|
|
60
|
+
* @param {Date} date - La date sélectionnée.
|
|
61
|
+
* @param {string} slot - Le créneau horaire.
|
|
62
|
+
*/
|
|
63
|
+
private openConfirmationModal;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { Booking, type BookingField, type BookingOptions };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import {format}from'date-fns';import {fr as fr$1,enUS}from'date-fns/locale';import {Calendar}from'@zuii/calendar';var xr=Object.defineProperty;var Ir=(i,t)=>{for(var e in t)xr(i,e,{get:t[e],enumerable:true});};var Pe={};Ir(Pe,{afterMain:()=>an,afterRead:()=>rn,afterWrite:()=>un,applyStyles:()=>Wt,arrow:()=>Ce,auto:()=>ne,basePlacements:()=>it,beforeMain:()=>on,beforeRead:()=>en,beforeWrite:()=>ln,bottom:()=>L,clippingParents:()=>oi,computeStyles:()=>jt,createPopper:()=>fe,createPopperBase:()=>vn,createPopperLite:()=>bn,detectOverflow:()=>B,end:()=>ct,eventListeners:()=>Ft,flip:()=>Le,hide:()=>$e,left:()=>C,main:()=>sn,modifierPhases:()=>ai,offset:()=>xe,placements:()=>oe,popper:()=>wt,popperGenerator:()=>xt,popperOffsets:()=>Ut,preventOverflow:()=>Ie,read:()=>nn,reference:()=>si,right:()=>D,start:()=>et,top:()=>w,variationPlacements:()=>Oe,viewport:()=>re,write:()=>cn});var w="top",L="bottom",D="right",C="left",ne="auto",it=[w,L,D,C],et="start",ct="end",oi="clippingParents",re="viewport",wt="popper",si="reference",Oe=it.reduce(function(i,t){return i.concat([t+"-"+et,t+"-"+ct])},[]),oe=[].concat(it,[ne]).reduce(function(i,t){return i.concat([t,t+"-"+et,t+"-"+ct])},[]),en="beforeRead",nn="read",rn="afterRead",on="beforeMain",sn="main",an="afterMain",ln="beforeWrite",cn="write",un="afterWrite",ai=[en,nn,rn,on,sn,an,ln,cn,un];function P(i){return i?(i.nodeName||"").toLowerCase():null}function T(i){if(i==null)return window;if(i.toString()!=="[object Window]"){var t=i.ownerDocument;return t&&t.defaultView||window}return i}function Y(i){var t=T(i).Element;return i instanceof t||i instanceof Element}function x(i){var t=T(i).HTMLElement;return i instanceof t||i instanceof HTMLElement}function Ht(i){if(typeof ShadowRoot>"u")return false;var t=T(i).ShadowRoot;return i instanceof t||i instanceof ShadowRoot}function Pr(i){var t=i.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];!x(o)||!P(o)||(Object.assign(o.style,n),Object.keys(r).forEach(function(s){var a=r[s];a===false?o.removeAttribute(s):o.setAttribute(s,a===true?"":a);}));});}function Mr(i){var t=i.state,e={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,e.popper),t.styles=e,t.elements.arrow&&Object.assign(t.elements.arrow.style,e.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],o=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:e[n]),a=s.reduce(function(c,d){return c[d]="",c},{});!x(r)||!P(r)||(Object.assign(r.style,a),Object.keys(o).forEach(function(c){r.removeAttribute(c);}));});}}var Wt={name:"applyStyles",enabled:true,phase:"write",fn:Pr,effect:Mr,requires:["computeStyles"]};function M(i){return i.split("-")[0]}var J=Math.max,Ot=Math.min,nt=Math.round;function Bt(){var i=navigator.userAgentData;return i!=null&&i.brands&&Array.isArray(i.brands)?i.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function se(){return !/^((?!chrome|android).)*safari/i.test(Bt())}function U(i,t,e){t===void 0&&(t=false),e===void 0&&(e=false);var n=i.getBoundingClientRect(),r=1,o=1;t&&x(i)&&(r=i.offsetWidth>0&&nt(n.width)/i.offsetWidth||1,o=i.offsetHeight>0&&nt(n.height)/i.offsetHeight||1);var s=Y(i)?T(i):window,a=s.visualViewport,c=!se()&&e,d=(n.left+(c&&a?a.offsetLeft:0))/r,u=(n.top+(c&&a?a.offsetTop:0))/o,h=n.width/r,m=n.height/o;return {width:h,height:m,top:u,right:d+h,bottom:u+m,left:d,x:d,y:u}}function Ct(i){var t=U(i),e=i.offsetWidth,n=i.offsetHeight;return Math.abs(t.width-e)<=1&&(e=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:i.offsetLeft,y:i.offsetTop,width:e,height:n}}function ae(i,t){var e=t.getRootNode&&t.getRootNode();if(i.contains(t))return true;if(e&&Ht(e)){var n=t;do{if(n&&i.isSameNode(n))return true;n=n.parentNode||n.host;}while(n)}return false}function W(i){return T(i).getComputedStyle(i)}function li(i){return ["table","td","th"].indexOf(P(i))>=0}function k(i){return ((Y(i)?i.ownerDocument:i.document)||window.document).documentElement}function rt(i){return P(i)==="html"?i:i.assignedSlot||i.parentNode||(Ht(i)?i.host:null)||k(i)}function dn(i){return !x(i)||W(i).position==="fixed"?null:i.offsetParent}function Rr(i){var t=/firefox/i.test(Bt()),e=/Trident/i.test(Bt());if(e&&x(i)){var n=W(i);if(n.position==="fixed")return null}var r=rt(i);for(Ht(r)&&(r=r.host);x(r)&&["html","body"].indexOf(P(r))<0;){var o=W(r);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return r;r=r.parentNode;}return null}function tt(i){for(var t=T(i),e=dn(i);e&&li(e)&&W(e).position==="static";)e=dn(e);return e&&(P(e)==="html"||P(e)==="body"&&W(e).position==="static")?t:e||Rr(i)||t}function St(i){return ["top","bottom"].indexOf(i)>=0?"x":"y"}function Nt(i,t,e){return J(i,Ot(t,e))}function fn(i,t,e){var n=Nt(i,t,e);return n>e?e:n}function le(){return {top:0,right:0,bottom:0,left:0}}function ce(i){return Object.assign({},le(),i)}function ue(i,t){return t.reduce(function(e,n){return e[n]=i,e},{})}var kr=function(t,e){return t=typeof t=="function"?t(Object.assign({},e.rects,{placement:e.placement})):t,ce(typeof t!="number"?t:ue(t,it))};function Vr(i){var t,e=i.state,n=i.name,r=i.options,o=e.elements.arrow,s=e.modifiersData.popperOffsets,a=M(e.placement),c=St(a),d=[C,D].indexOf(a)>=0,u=d?"height":"width";if(!(!o||!s)){var h=kr(r.padding,e),m=Ct(o),p=c==="y"?w:C,v=c==="y"?L:D,_=e.rects.reference[u]+e.rects.reference[c]-s[c]-e.rects.popper[u],E=s[c]-e.rects.reference[c],A=tt(o),S=A?c==="y"?A.clientHeight||0:A.clientWidth||0:0,N=_/2-E/2,g=h[p],b=S-m[u]-h[v],y=S/2-m[u]/2+N,O=Nt(g,y,b),R=c;e.modifiersData[n]=(t={},t[R]=O,t.centerOffset=O-y,t);}}function Hr(i){var t=i.state,e=i.options,n=e.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||ae(t.elements.popper,r)&&(t.elements.arrow=r));}var Ce={name:"arrow",enabled:true,phase:"main",fn:Vr,effect:Hr,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function z(i){return i.split("-")[1]}var Wr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Br(i,t){var e=i.x,n=i.y,r=t.devicePixelRatio||1;return {x:nt(e*r)/r||0,y:nt(n*r)/r||0}}function pn(i){var t,e=i.popper,n=i.popperRect,r=i.placement,o=i.variation,s=i.offsets,a=i.position,c=i.gpuAcceleration,d=i.adaptive,u=i.roundOffsets,h=i.isFixed,m=s.x,p=m===void 0?0:m,v=s.y,_=v===void 0?0:v,E=typeof u=="function"?u({x:p,y:_}):{x:p,y:_};p=E.x,_=E.y;var A=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),N=C,g=w,b=window;if(d){var y=tt(e),O="clientHeight",R="clientWidth";if(y===T(e)&&(y=k(e),W(y).position!=="static"&&a==="absolute"&&(O="scrollHeight",R="scrollWidth")),y=y,r===w||(r===C||r===D)&&o===ct){g=L;var I=h&&y===b&&b.visualViewport?b.visualViewport.height:y[O];_-=I-n.height,_*=c?1:-1;}if(r===C||(r===w||r===L)&&o===ct){N=D;var $=h&&y===b&&b.visualViewport?b.visualViewport.width:y[R];p-=$-n.width,p*=c?1:-1;}}var V=Object.assign({position:a},d&&Wr),Q=u===true?Br({x:p,y:_},T(e)):{x:p,y:_};if(p=Q.x,_=Q.y,c){var H;return Object.assign({},V,(H={},H[g]=S?"0":"",H[N]=A?"0":"",H.transform=(b.devicePixelRatio||1)<=1?"translate("+p+"px, "+_+"px)":"translate3d("+p+"px, "+_+"px, 0)",H))}return Object.assign({},V,(t={},t[g]=S?_+"px":"",t[N]=A?p+"px":"",t.transform="",t))}function jr(i){var t=i.state,e=i.options,n=e.gpuAcceleration,r=n===void 0?true:n,o=e.adaptive,s=o===void 0?true:o,a=e.roundOffsets,c=a===void 0?true:a,d={placement:M(t.placement),variation:z(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,pn(Object.assign({},d,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:c})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,pn(Object.assign({},d,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:false,roundOffsets:c})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement});}var jt={name:"computeStyles",enabled:true,phase:"beforeWrite",fn:jr,data:{}};var Se={passive:true};function Fr(i){var t=i.state,e=i.instance,n=i.options,r=n.scroll,o=r===void 0?true:r,s=n.resize,a=s===void 0?true:s,c=T(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&d.forEach(function(u){u.addEventListener("scroll",e.update,Se);}),a&&c.addEventListener("resize",e.update,Se),function(){o&&d.forEach(function(u){u.removeEventListener("scroll",e.update,Se);}),a&&c.removeEventListener("resize",e.update,Se);}}var Ft={name:"eventListeners",enabled:true,phase:"write",fn:function(){},effect:Fr,data:{}};var Kr={left:"right",right:"left",bottom:"top",top:"bottom"};function Kt(i){return i.replace(/left|right|bottom|top/g,function(t){return Kr[t]})}var Yr={start:"end",end:"start"};function Ne(i){return i.replace(/start|end/g,function(t){return Yr[t]})}function Dt(i){var t=T(i),e=t.pageXOffset,n=t.pageYOffset;return {scrollLeft:e,scrollTop:n}}function Lt(i){return U(k(i)).left+Dt(i).scrollLeft}function ci(i,t){var e=T(i),n=k(i),r=e.visualViewport,o=n.clientWidth,s=n.clientHeight,a=0,c=0;if(r){o=r.width,s=r.height;var d=se();(d||!d&&t==="fixed")&&(a=r.offsetLeft,c=r.offsetTop);}return {width:o,height:s,x:a+Lt(i),y:c}}function ui(i){var t,e=k(i),n=Dt(i),r=(t=i.ownerDocument)==null?void 0:t.body,o=J(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=J(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-n.scrollLeft+Lt(i),c=-n.scrollTop;return W(r||e).direction==="rtl"&&(a+=J(e.clientWidth,r?r.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function $t(i){var t=W(i),e=t.overflow,n=t.overflowX,r=t.overflowY;return /auto|scroll|overlay|hidden/.test(e+r+n)}function De(i){return ["html","body","#document"].indexOf(P(i))>=0?i.ownerDocument.body:x(i)&&$t(i)?i:De(rt(i))}function ut(i,t){var e;t===void 0&&(t=[]);var n=De(i),r=n===((e=i.ownerDocument)==null?void 0:e.body),o=T(n),s=r?[o].concat(o.visualViewport||[],$t(n)?n:[]):n,a=t.concat(s);return r?a:a.concat(ut(rt(s)))}function Yt(i){return Object.assign({},i,{left:i.x,top:i.y,right:i.x+i.width,bottom:i.y+i.height})}function Ur(i,t){var e=U(i,false,t==="fixed");return e.top=e.top+i.clientTop,e.left=e.left+i.clientLeft,e.bottom=e.top+i.clientHeight,e.right=e.left+i.clientWidth,e.width=i.clientWidth,e.height=i.clientHeight,e.x=e.left,e.y=e.top,e}function hn(i,t,e){return t===re?Yt(ci(i,e)):Y(t)?Ur(t,e):Yt(ui(k(i)))}function zr(i){var t=ut(rt(i)),e=["absolute","fixed"].indexOf(W(i).position)>=0,n=e&&x(i)?tt(i):i;return Y(n)?t.filter(function(r){return Y(r)&&ae(r,n)&&P(r)!=="body"}):[]}function di(i,t,e,n){var r=t==="clippingParents"?zr(i):[].concat(t),o=[].concat(r,[e]),s=o[0],a=o.reduce(function(c,d){var u=hn(i,d,n);return c.top=J(u.top,c.top),c.right=Ot(u.right,c.right),c.bottom=Ot(u.bottom,c.bottom),c.left=J(u.left,c.left),c},hn(i,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(i){var t=i.reference,e=i.element,n=i.placement,r=n?M(n):null,o=n?z(n):null,s=t.x+t.width/2-e.width/2,a=t.y+t.height/2-e.height/2,c;switch(r){case w:c={x:s,y:t.y-e.height};break;case L:c={x:s,y:t.y+t.height};break;case D:c={x:t.x+t.width,y:a};break;case C:c={x:t.x-e.width,y:a};break;default:c={x:t.x,y:t.y};}var d=r?St(r):null;if(d!=null){var u=d==="y"?"height":"width";switch(o){case et:c[d]=c[d]-(t[u]/2-e[u]/2);break;case ct:c[d]=c[d]+(t[u]/2-e[u]/2);break;}}return c}function B(i,t){t===void 0&&(t={});var e=t,n=e.placement,r=n===void 0?i.placement:n,o=e.strategy,s=o===void 0?i.strategy:o,a=e.boundary,c=a===void 0?oi:a,d=e.rootBoundary,u=d===void 0?re:d,h=e.elementContext,m=h===void 0?wt:h,p=e.altBoundary,v=p===void 0?false:p,_=e.padding,E=_===void 0?0:_,A=ce(typeof E!="number"?E:ue(E,it)),S=m===wt?si:wt,N=i.rects.popper,g=i.elements[v?S:m],b=di(Y(g)?g:g.contextElement||k(i.elements.popper),c,u,s),y=U(i.elements.reference),O=de({reference:y,element:N,placement:r}),R=Yt(Object.assign({},N,O)),I=m===wt?R:y,$={top:b.top-I.top+A.top,bottom:I.bottom-b.bottom+A.bottom,left:b.left-I.left+A.left,right:I.right-b.right+A.right},V=i.modifiersData.offset;if(m===wt&&V){var Q=V[r];Object.keys($).forEach(function(H){var vt=[D,L].indexOf(H)>=0?1:-1,bt=[w,L].indexOf(H)>=0?"y":"x";$[H]+=Q[bt]*vt;});}return $}function fi(i,t){t===void 0&&(t={});var e=t,n=e.placement,r=e.boundary,o=e.rootBoundary,s=e.padding,a=e.flipVariations,c=e.allowedAutoPlacements,d=c===void 0?oe:c,u=z(n),h=u?a?Oe:Oe.filter(function(v){return z(v)===u}):it,m=h.filter(function(v){return d.indexOf(v)>=0});m.length===0&&(m=h);var p=m.reduce(function(v,_){return v[_]=B(i,{placement:_,boundary:r,rootBoundary:o,padding:s})[M(_)],v},{});return Object.keys(p).sort(function(v,_){return p[v]-p[_]})}function qr(i){if(M(i)===ne)return [];var t=Kt(i);return [Ne(i),t,Ne(t)]}function Gr(i){var t=i.state,e=i.options,n=i.name;if(!t.modifiersData[n]._skip){for(var r=e.mainAxis,o=r===void 0?true:r,s=e.altAxis,a=s===void 0?true:s,c=e.fallbackPlacements,d=e.padding,u=e.boundary,h=e.rootBoundary,m=e.altBoundary,p=e.flipVariations,v=p===void 0?true:p,_=e.allowedAutoPlacements,E=t.options.placement,A=M(E),S=A===E,N=c||(S||!v?[Kt(E)]:qr(E)),g=[E].concat(N).reduce(function(Vt,lt){return Vt.concat(M(lt)===ne?fi(t,{placement:lt,boundary:u,rootBoundary:h,padding:d,flipVariations:v,allowedAutoPlacements:_}):lt)},[]),b=t.rects.reference,y=t.rects.popper,O=new Map,R=true,I=g[0],$=0;$<g.length;$++){var V=g[$],Q=M(V),H=z(V)===et,vt=[w,L].indexOf(Q)>=0,bt=vt?"width":"height",F=B(t,{placement:V,boundary:u,rootBoundary:h,altBoundary:m,padding:d}),Z=vt?H?D:C:H?L:w;b[bt]>y[bt]&&(Z=Kt(Z));var be=Kt(Z),yt=[];if(o&&yt.push(F[Q]<=0),a&&yt.push(F[Z]<=0,F[be]<=0),yt.every(function(Vt){return Vt})){I=V,R=false;break}O.set(V,yt);}if(R)for(var ye=v?3:1,ei=function(lt){var ie=g.find(function(Te){var At=O.get(Te);if(At)return At.slice(0,lt).every(function(ii){return ii})});if(ie)return I=ie,"break"},ee=ye;ee>0;ee--){var Ae=ei(ee);if(Ae==="break")break}t.placement!==I&&(t.modifiersData[n]._skip=true,t.placement=I,t.reset=true);}}var Le={name:"flip",enabled:true,phase:"main",fn:Gr,requiresIfExists:["offset"],data:{_skip:false}};function mn(i,t,e){return e===void 0&&(e={x:0,y:0}),{top:i.top-t.height-e.y,right:i.right-t.width+e.x,bottom:i.bottom-t.height+e.y,left:i.left-t.width-e.x}}function _n(i){return [w,D,L,C].some(function(t){return i[t]>=0})}function Xr(i){var t=i.state,e=i.name,n=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,s=B(t,{elementContext:"reference"}),a=B(t,{altBoundary:true}),c=mn(s,n),d=mn(a,r,o),u=_n(c),h=_n(d);t.modifiersData[e]={referenceClippingOffsets:c,popperEscapeOffsets:d,isReferenceHidden:u,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":h});}var $e={name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:Xr};function Qr(i,t,e){var n=M(i),r=[C,w].indexOf(n)>=0?-1:1,o=typeof e=="function"?e(Object.assign({},t,{placement:i})):e,s=o[0],a=o[1];return s=s||0,a=(a||0)*r,[C,D].indexOf(n)>=0?{x:a,y:s}:{x:s,y:a}}function Zr(i){var t=i.state,e=i.options,n=i.name,r=e.offset,o=r===void 0?[0,0]:r,s=oe.reduce(function(u,h){return u[h]=Qr(h,t.rects,o),u},{}),a=s[t.placement],c=a.x,d=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s;}var xe={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:Zr};function Jr(i){var t=i.state,e=i.name;t.modifiersData[e]=de({reference:t.rects.reference,element:t.rects.popper,placement:t.placement});}var Ut={name:"popperOffsets",enabled:true,phase:"read",fn:Jr,data:{}};function pi(i){return i==="x"?"y":"x"}function to(i){var t=i.state,e=i.options,n=i.name,r=e.mainAxis,o=r===void 0?true:r,s=e.altAxis,a=s===void 0?false:s,c=e.boundary,d=e.rootBoundary,u=e.altBoundary,h=e.padding,m=e.tether,p=m===void 0?true:m,v=e.tetherOffset,_=v===void 0?0:v,E=B(t,{boundary:c,rootBoundary:d,padding:h,altBoundary:u}),A=M(t.placement),S=z(t.placement),N=!S,g=St(A),b=pi(g),y=t.modifiersData.popperOffsets,O=t.rects.reference,R=t.rects.popper,I=typeof _=="function"?_(Object.assign({},t.rects,{placement:t.placement})):_,$=typeof I=="number"?{mainAxis:I,altAxis:I}:Object.assign({mainAxis:0,altAxis:0},I),V=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,Q={x:0,y:0};if(y){if(o){var H,vt=g==="y"?w:C,bt=g==="y"?L:D,F=g==="y"?"height":"width",Z=y[g],be=Z+E[vt],yt=Z-E[bt],ye=p?-R[F]/2:0,ei=S===et?O[F]:R[F],ee=S===et?-R[F]:-O[F],Ae=t.elements.arrow,Vt=p&&Ae?Ct(Ae):{width:0,height:0},lt=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:le(),ie=lt[vt],Te=lt[bt],At=Nt(0,O[F],Vt[F]),ii=N?O[F]/2-ye-At-ie-$.mainAxis:ei-At-ie-$.mainAxis,Cr=N?-O[F]/2+ye+At+Te+$.mainAxis:ee+At+Te+$.mainAxis,ni=t.elements.arrow&&tt(t.elements.arrow),Sr=ni?g==="y"?ni.clientTop||0:ni.clientLeft||0:0,Ui=(H=V?.[g])!=null?H:0,Nr=Z+ii-Ui-Sr,Dr=Z+Cr-Ui,zi=Nt(p?Ot(be,Nr):be,Z,p?J(yt,Dr):yt);y[g]=zi,Q[g]=zi-Z;}if(a){var qi,Lr=g==="x"?w:C,$r=g==="x"?L:D,Tt=y[b],we=b==="y"?"height":"width",Gi=Tt+E[Lr],Xi=Tt-E[$r],ri=[w,C].indexOf(A)!==-1,Qi=(qi=V?.[b])!=null?qi:0,Zi=ri?Gi:Tt-O[we]-R[we]-Qi+$.altAxis,Ji=ri?Tt+O[we]+R[we]-Qi-$.altAxis:Xi,tn=p&&ri?fn(Zi,Tt,Ji):Nt(p?Zi:Gi,Tt,p?Ji:Xi);y[b]=tn,Q[b]=tn-Tt;}t.modifiersData[n]=Q;}}var Ie={name:"preventOverflow",enabled:true,phase:"main",fn:to,requiresIfExists:["offset"]};function hi(i){return {scrollLeft:i.scrollLeft,scrollTop:i.scrollTop}}function mi(i){return i===T(i)||!x(i)?Dt(i):hi(i)}function eo(i){var t=i.getBoundingClientRect(),e=nt(t.width)/i.offsetWidth||1,n=nt(t.height)/i.offsetHeight||1;return e!==1||n!==1}function _i(i,t,e){e===void 0&&(e=false);var n=x(t),r=x(t)&&eo(t),o=k(t),s=U(i,r,e),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return (n||!n&&!e)&&((P(t)!=="body"||$t(o))&&(a=mi(t)),x(t)?(c=U(t,true),c.x+=t.clientLeft,c.y+=t.clientTop):o&&(c.x=Lt(o))),{x:s.left+a.scrollLeft-c.x,y:s.top+a.scrollTop-c.y,width:s.width,height:s.height}}function io(i){var t=new Map,e=new Set,n=[];i.forEach(function(o){t.set(o.name,o);});function r(o){e.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(a){if(!e.has(a)){var c=t.get(a);c&&r(c);}}),n.push(o);}return i.forEach(function(o){e.has(o.name)||r(o);}),n}function gi(i){var t=io(i);return ai.reduce(function(e,n){return e.concat(t.filter(function(r){return r.phase===n}))},[])}function Ei(i){var t;return function(){return t||(t=new Promise(function(e){Promise.resolve().then(function(){t=void 0,e(i());});})),t}}function vi(i){var t=i.reduce(function(e,n){var r=e[n.name];return e[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,e},{});return Object.keys(t).map(function(e){return t[e]})}var gn={placement:"bottom",modifiers:[],strategy:"absolute"};function En(){for(var i=arguments.length,t=new Array(i),e=0;e<i;e++)t[e]=arguments[e];return !t.some(function(n){return !(n&&typeof n.getBoundingClientRect=="function")})}function xt(i){i===void 0&&(i={});var t=i,e=t.defaultModifiers,n=e===void 0?[]:e,r=t.defaultOptions,o=r===void 0?gn:r;return function(a,c,d){d===void 0&&(d=o);var u={placement:"bottom",orderedModifiers:[],options:Object.assign({},gn,o),modifiersData:{},elements:{reference:a,popper:c},attributes:{},styles:{}},h=[],m=false,p={state:u,setOptions:function(A){var S=typeof A=="function"?A(u.options):A;_(),u.options=Object.assign({},o,u.options,S),u.scrollParents={reference:Y(a)?ut(a):a.contextElement?ut(a.contextElement):[],popper:ut(c)};var N=gi(vi([].concat(n,u.options.modifiers)));return u.orderedModifiers=N.filter(function(g){return g.enabled}),v(),p.update()},forceUpdate:function(){if(!m){var A=u.elements,S=A.reference,N=A.popper;if(En(S,N)){u.rects={reference:_i(S,tt(N),u.options.strategy==="fixed"),popper:Ct(N)},u.reset=false,u.placement=u.options.placement,u.orderedModifiers.forEach(function($){return u.modifiersData[$.name]=Object.assign({},$.data)});for(var g=0;g<u.orderedModifiers.length;g++){if(u.reset===true){u.reset=false,g=-1;continue}var b=u.orderedModifiers[g],y=b.fn,O=b.options,R=O===void 0?{}:O,I=b.name;typeof y=="function"&&(u=y({state:u,options:R,name:I,instance:p})||u);}}}},update:Ei(function(){return new Promise(function(E){p.forceUpdate(),E(u);})}),destroy:function(){_(),m=true;}};if(!En(a,c))return p;p.setOptions(d).then(function(E){!m&&d.onFirstUpdate&&d.onFirstUpdate(E);});function v(){u.orderedModifiers.forEach(function(E){var A=E.name,S=E.options,N=S===void 0?{}:S,g=E.effect;if(typeof g=="function"){var b=g({state:u,name:A,instance:p,options:N}),y=function(){};h.push(b||y);}});}function _(){h.forEach(function(E){return E()}),h=[];}return p}}var vn=xt();var no=[Ft,Ut,jt,Wt],bn=xt({defaultModifiers:no});var ro=[Ft,Ut,jt,Wt,xe,Le,Ie,Ce,$e],fe=xt({defaultModifiers:ro});var dt=new Map,bi={set(i,t,e){dt.has(i)||dt.set(i,new Map);let n=dt.get(i);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,e);},get(i,t){return dt.has(i)&&dt.get(i).get(t)||null},remove(i,t){if(!dt.has(i))return;let e=dt.get(i);e.delete(t),e.size===0&&dt.delete(i);}},oo=1e6,so=1e3,Ri="transitionend",Gn=i=>(i&&window.CSS&&window.CSS.escape&&(i=i.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),i),ao=i=>i==null?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase(),lo=i=>{do i+=Math.floor(Math.random()*oo);while(document.getElementById(i));return i},co=i=>{if(!i)return 0;let{transitionDuration:t,transitionDelay:e}=window.getComputedStyle(i),n=Number.parseFloat(t),r=Number.parseFloat(e);return !n&&!r?0:(t=t.split(",")[0],e=e.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(e))*so)},Xn=i=>{i.dispatchEvent(new Event(Ri));},ot=i=>!i||typeof i!="object"?false:(typeof i.jquery<"u"&&(i=i[0]),typeof i.nodeType<"u"),ft=i=>ot(i)?i.jquery?i[0]:i:typeof i=="string"&&i.length>0?document.querySelector(Gn(i)):null,Jt=i=>{if(!ot(i)||i.getClientRects().length===0)return false;let t=getComputedStyle(i).getPropertyValue("visibility")==="visible",e=i.closest("details:not([open])");if(!e)return t;if(e!==i){let n=i.closest("summary");if(n&&n.parentNode!==e||n===null)return false}return t},pt=i=>!i||i.nodeType!==Node.ELEMENT_NODE||i.classList.contains("disabled")?true:typeof i.disabled<"u"?i.disabled:i.hasAttribute("disabled")&&i.getAttribute("disabled")!=="false",Qn=i=>{if(!document.documentElement.attachShadow)return null;if(typeof i.getRootNode=="function"){let t=i.getRootNode();return t instanceof ShadowRoot?t:null}return i instanceof ShadowRoot?i:i.parentNode?Qn(i.parentNode):null},Fe=()=>{},Ee=i=>{i.offsetHeight;},Zn=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,yi=[],uo=i=>{document.readyState==="loading"?(yi.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of yi)t();}),yi.push(i)):i();},q=()=>document.documentElement.dir==="rtl",X=i=>{uo(()=>{let t=Zn();if(t){let e=i.NAME,n=t.fn[e];t.fn[e]=i.jQueryInterface,t.fn[e].Constructor=i,t.fn[e].noConflict=()=>(t.fn[e]=n,i.jQueryInterface);}});},j=(i,t=[],e=i)=>typeof i=="function"?i.call(...t):e,Jn=(i,t,e=true)=>{if(!e){j(i);return}let r=co(t)+5,o=false,s=({target:a})=>{a===t&&(o=true,t.removeEventListener(Ri,s),j(i));};t.addEventListener(Ri,s),setTimeout(()=>{o||Xn(t);},r);},Bi=(i,t,e,n)=>{let r=i.length,o=i.indexOf(t);return o===-1?!e&&n?i[r-1]:i[0]:(o+=e?1:-1,n&&(o=(o+r)%r),i[Math.max(0,Math.min(o,r-1))])},fo=/[^.]*(?=\..*)\.|.*/,po=/\..*/,ho=/::\d+$/,Ai={},yn=1,tr={mouseenter:"mouseover",mouseleave:"mouseout"},mo=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 er(i,t){return t&&`${t}::${yn++}`||i.uidEvent||yn++}function ir(i){let t=er(i);return i.uidEvent=t,Ai[t]=Ai[t]||{},Ai[t]}function _o(i,t){return function e(n){return ji(n,{delegateTarget:i}),e.oneOff&&l.off(i,n.type,t),t.apply(i,[n])}}function go(i,t,e){return function n(r){let o=i.querySelectorAll(t);for(let{target:s}=r;s&&s!==this;s=s.parentNode)for(let a of o)if(a===s)return ji(r,{delegateTarget:s}),n.oneOff&&l.off(i,r.type,t,e),e.apply(s,[r])}}function nr(i,t,e=null){return Object.values(i).find(n=>n.callable===t&&n.delegationSelector===e)}function rr(i,t,e){let n=typeof t=="string",r=n?e:t||e,o=or(i);return mo.has(o)||(o=i),[n,r,o]}function An(i,t,e,n,r){if(typeof t!="string"||!i)return;let[o,s,a]=rr(t,e,n);t in tr&&(s=(v=>function(_){if(!_.relatedTarget||_.relatedTarget!==_.delegateTarget&&!_.delegateTarget.contains(_.relatedTarget))return v.call(this,_)})(s));let c=ir(i),d=c[a]||(c[a]={}),u=nr(d,s,o?e:null);if(u){u.oneOff=u.oneOff&&r;return}let h=er(s,t.replace(fo,"")),m=o?go(i,e,s):_o(i,s);m.delegationSelector=o?e:null,m.callable=s,m.oneOff=r,m.uidEvent=h,d[h]=m,i.addEventListener(a,m,o);}function ki(i,t,e,n,r){let o=nr(t[e],n,r);o&&(i.removeEventListener(e,o,!!r),delete t[e][o.uidEvent]);}function Eo(i,t,e,n){let r=t[e]||{};for(let[o,s]of Object.entries(r))o.includes(n)&&ki(i,t,e,s.callable,s.delegationSelector);}function or(i){return i=i.replace(po,""),tr[i]||i}var l={on(i,t,e,n){An(i,t,e,n,false);},one(i,t,e,n){An(i,t,e,n,true);},off(i,t,e,n){if(typeof t!="string"||!i)return;let[r,o,s]=rr(t,e,n),a=s!==t,c=ir(i),d=c[s]||{},u=t.startsWith(".");if(typeof o<"u"){if(!Object.keys(d).length)return;ki(i,c,s,o,r?e:null);return}if(u)for(let h of Object.keys(c))Eo(i,c,h,t.slice(1));for(let[h,m]of Object.entries(d)){let p=h.replace(ho,"");(!a||t.includes(p))&&ki(i,c,s,m.callable,m.delegationSelector);}},trigger(i,t,e){if(typeof t!="string"||!i)return null;let n=Zn(),r=or(t),o=t!==r,s=null,a=true,c=true,d=false;o&&n&&(s=n.Event(t,e),n(i).trigger(s),a=!s.isPropagationStopped(),c=!s.isImmediatePropagationStopped(),d=s.isDefaultPrevented());let u=ji(new Event(t,{bubbles:a,cancelable:true}),e);return d&&u.preventDefault(),c&&i.dispatchEvent(u),u.defaultPrevented&&s&&s.preventDefault(),u}};function ji(i,t={}){for(let[e,n]of Object.entries(t))try{i[e]=n;}catch{Object.defineProperty(i,e,{configurable:true,get(){return n}});}return i}function Tn(i){if(i==="true")return true;if(i==="false")return false;if(i===Number(i).toString())return Number(i);if(i===""||i==="null")return null;if(typeof i!="string")return i;try{return JSON.parse(decodeURIComponent(i))}catch{return i}}function Ti(i){return i.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var st={setDataAttribute(i,t,e){i.setAttribute(`data-bs-${Ti(t)}`,e);},removeDataAttribute(i,t){i.removeAttribute(`data-bs-${Ti(t)}`);},getDataAttributes(i){if(!i)return {};let t={},e=Object.keys(i.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of e){let r=n.replace(/^bs/,"");r=r.charAt(0).toLowerCase()+r.slice(1),t[r]=Tn(i.dataset[n]);}return t},getDataAttribute(i,t){return Tn(i.getAttribute(`data-bs-${Ti(t)}`))}},Mt=class{static get Default(){return {}}static get DefaultType(){return {}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){let n=ot(e)?st.getDataAttribute(e,"config"):{};return {...this.constructor.Default,...typeof n=="object"?n:{},...ot(e)?st.getDataAttributes(e):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(let[n,r]of Object.entries(e)){let o=t[n],s=ot(o)?"element":ao(o);if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${r}".`)}}},vo="5.3.8",K=class extends Mt{constructor(t,e){super(),t=ft(t),t&&(this._element=t,this._config=this._getConfig(e),bi.set(this._element,this.constructor.DATA_KEY,this));}dispose(){bi.remove(this._element,this.constructor.DATA_KEY),l.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null;}_queueCallback(t,e,n=true){Jn(t,e,n);}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return bi.get(ft(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,typeof e=="object"?e:null)}static get VERSION(){return vo}static get DATA_KEY(){return `bs.${this.NAME}`}static get EVENT_KEY(){return `.${this.DATA_KEY}`}static eventName(t){return `${t}${this.EVENT_KEY}`}},wi=i=>{let t=i.getAttribute("data-bs-target");if(!t||t==="#"){let e=i.getAttribute("href");if(!e||!e.includes("#")&&!e.startsWith("."))return null;e.includes("#")&&!e.startsWith("#")&&(e=`#${e.split("#")[1]}`),t=e&&e!=="#"?e.trim():null;}return t?t.split(",").map(e=>Gn(e)).join(","):null},f={find(i,t=document.documentElement){return [].concat(...Element.prototype.querySelectorAll.call(t,i))},findOne(i,t=document.documentElement){return Element.prototype.querySelector.call(t,i)},children(i,t){return [].concat(...i.children).filter(e=>e.matches(t))},parents(i,t){let e=[],n=i.parentNode.closest(t);for(;n;)e.push(n),n=n.parentNode.closest(t);return e},prev(i,t){let e=i.previousElementSibling;for(;e;){if(e.matches(t))return [e];e=e.previousElementSibling;}return []},next(i,t){let e=i.nextElementSibling;for(;e;){if(e.matches(t))return [e];e=e.nextElementSibling;}return []},focusableChildren(i){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,i).filter(e=>!pt(e)&&Jt(e))},getSelectorFromElement(i){let t=wi(i);return t&&f.findOne(t)?t:null},getElementFromSelector(i){let t=wi(i);return t?f.findOne(t):null},getMultipleElementsFromSelector(i){let t=wi(i);return t?f.find(t):[]}},Je=(i,t="hide")=>{let e=`click.dismiss${i.EVENT_KEY}`,n=i.NAME;l.on(document,e,`[data-bs-dismiss="${n}"]`,function(r){if(["A","AREA"].includes(this.tagName)&&r.preventDefault(),pt(this))return;let o=f.getElementFromSelector(this)||this.closest(`.${n}`);i.getOrCreateInstance(o)[t]();});},bo="alert",yo="bs.alert",sr=`.${yo}`,Ao=`close${sr}`,To=`closed${sr}`,wo="fade",Oo="show",Ke=class i extends K{static get NAME(){return bo}close(){if(l.trigger(this._element,Ao).defaultPrevented)return;this._element.classList.remove(Oo);let e=this._element.classList.contains(wo);this._queueCallback(()=>this._destroyElement(),this._element,e);}_destroyElement(){this._element.remove(),l.trigger(this._element,To),this.dispose();}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this);}})}};Je(Ke,"close");X(Ke);var Co="button",So="bs.button",No=`.${So}`,Do=".data-api",Lo="active",wn='[data-bs-toggle="button"]',$o=`click${No}${Do}`,Ye=class i extends K{static get NAME(){return Co}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(Lo));}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this);t==="toggle"&&e[t]();})}};l.on(document,$o,wn,i=>{i.preventDefault();let t=i.target.closest(wn);Ye.getOrCreateInstance(t).toggle();});X(Ye);var xo="swipe",te=".bs.swipe",Io=`touchstart${te}`,Po=`touchmove${te}`,Mo=`touchend${te}`,Ro=`pointerdown${te}`,ko=`pointerup${te}`,Vo="touch",Ho="pen",Wo="pointer-event",Bo=40,jo={endCallback:null,leftCallback:null,rightCallback:null},Fo={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"},Ue=class i extends Mt{constructor(t,e){super(),this._element=t,!(!t||!i.isSupported())&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents());}static get Default(){return jo}static get DefaultType(){return Fo}static get NAME(){return xo}dispose(){l.off(this._element,te);}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX);}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),j(this._config.endCallback);}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX;}_handleSwipe(){let t=Math.abs(this._deltaX);if(t<=Bo)return;let e=t/this._deltaX;this._deltaX=0,e&&j(e>0?this._config.rightCallback:this._config.leftCallback);}_initEvents(){this._supportPointerEvents?(l.on(this._element,Ro,t=>this._start(t)),l.on(this._element,ko,t=>this._end(t)),this._element.classList.add(Wo)):(l.on(this._element,Io,t=>this._start(t)),l.on(this._element,Po,t=>this._move(t)),l.on(this._element,Mo,t=>this._end(t)));}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===Ho||t.pointerType===Vo)}static isSupported(){return "ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}},Ko="carousel",Yo="bs.carousel",gt=`.${Yo}`,ar=".data-api",Uo="ArrowLeft",zo="ArrowRight",qo=500,pe="next",zt="prev",Gt="left",Be="right",Go=`slide${gt}`,Oi=`slid${gt}`,Xo=`keydown${gt}`,Qo=`mouseenter${gt}`,Zo=`mouseleave${gt}`,Jo=`dragstart${gt}`,ts=`load${gt}${ar}`,es=`click${gt}${ar}`,lr="carousel",Me="active",is="slide",ns="carousel-item-end",rs="carousel-item-start",os="carousel-item-next",ss="carousel-item-prev",cr=".active",ur=".carousel-item",as=cr+ur,ls=".carousel-item img",cs=".carousel-indicators",us="[data-bs-slide], [data-bs-slide-to]",ds='[data-bs-ride="carousel"]',fs={[Uo]:Be,[zo]:Gt},ps={interval:5e3,keyboard:true,pause:"hover",ride:false,touch:true,wrap:true},hs={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"},me=class i extends K{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=false,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=f.findOne(cs,this._element),this._addEventListeners(),this._config.ride===lr&&this.cycle();}static get Default(){return ps}static get DefaultType(){return hs}static get NAME(){return Ko}next(){this._slide(pe);}nextWhenVisible(){!document.hidden&&Jt(this._element)&&this.next();}prev(){this._slide(zt);}pause(){this._isSliding&&Xn(this._element),this._clearInterval();}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval);}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){l.one(this._element,Oi,()=>this.cycle());return}this.cycle();}}to(t){let e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding){l.one(this._element,Oi,()=>this.to(t));return}let n=this._getItemIndex(this._getActive());if(n===t)return;let r=t>n?pe:zt;this._slide(r,e[t]);}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose();}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&l.on(this._element,Xo,t=>this._keydown(t)),this._config.pause==="hover"&&(l.on(this._element,Qo,()=>this.pause()),l.on(this._element,Zo,()=>this._maybeEnableCycle())),this._config.touch&&Ue.isSupported()&&this._addTouchEventListeners();}_addTouchEventListeners(){for(let n of f.find(ls,this._element))l.on(n,Jo,r=>r.preventDefault());let e={leftCallback:()=>this._slide(this._directionToOrder(Gt)),rightCallback:()=>this._slide(this._directionToOrder(Be)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),qo+this._config.interval));}};this._swipeHelper=new Ue(this._element,e);}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;let e=fs[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)));}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;let e=f.findOne(cr,this._indicatorsElement);e.classList.remove(Me),e.removeAttribute("aria-current");let n=f.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);n&&(n.classList.add(Me),n.setAttribute("aria-current","true"));}_updateInterval(){let t=this._activeElement||this._getActive();if(!t)return;let e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval;}_slide(t,e=null){if(this._isSliding)return;let n=this._getActive(),r=t===pe,o=e||Bi(this._getItems(),n,r,this._config.wrap);if(o===n)return;let s=this._getItemIndex(o),a=p=>l.trigger(this._element,p,{relatedTarget:o,direction:this._orderToDirection(t),from:this._getItemIndex(n),to:s});if(a(Go).defaultPrevented||!n||!o)return;let d=!!this._interval;this.pause(),this._isSliding=true,this._setActiveIndicatorElement(s),this._activeElement=o;let u=r?rs:ns,h=r?os:ss;o.classList.add(h),Ee(o),n.classList.add(u),o.classList.add(u);let m=()=>{o.classList.remove(u,h),o.classList.add(Me),n.classList.remove(Me,h,u),this._isSliding=false,a(Oi);};this._queueCallback(m,n,this._isAnimated()),d&&this.cycle();}_isAnimated(){return this._element.classList.contains(is)}_getActive(){return f.findOne(as,this._element)}_getItems(){return f.find(ur,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null);}_directionToOrder(t){return q()?t===Gt?zt:pe:t===Gt?pe:zt}_orderToDirection(t){return q()?t===zt?Gt:Be:t===zt?Be:Gt}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="number"){e.to(t);return}if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]();}})}};l.on(document,es,us,function(i){let t=f.getElementFromSelector(this);if(!t||!t.classList.contains(lr))return;i.preventDefault();let e=me.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");if(n){e.to(n),e._maybeEnableCycle();return}if(st.getDataAttribute(this,"slide")==="next"){e.next(),e._maybeEnableCycle();return}e.prev(),e._maybeEnableCycle();});l.on(window,ts,()=>{let i=f.find(ds);for(let t of i)me.getOrCreateInstance(t);});X(me);var ms="collapse",_s="bs.collapse",ve=`.${_s}`,gs=".data-api",Es=`show${ve}`,vs=`shown${ve}`,bs=`hide${ve}`,ys=`hidden${ve}`,As=`click${ve}${gs}`,Ci="show",Qt="collapse",Re="collapsing",Ts="collapsed",ws=`:scope .${Qt} .${Qt}`,Os="collapse-horizontal",Cs="width",Ss="height",Ns=".collapse.show, .collapse.collapsing",Vi='[data-bs-toggle="collapse"]',Ds={parent:null,toggle:true},Ls={parent:"(null|element)",toggle:"boolean"},ze=class i extends K{constructor(t,e){super(t,e),this._isTransitioning=false,this._triggerArray=[];let n=f.find(Vi);for(let r of n){let o=f.getSelectorFromElement(r),s=f.find(o).filter(a=>a===this._element);o!==null&&s.length&&this._triggerArray.push(r);}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle();}static get Default(){return Ds}static get DefaultType(){return Ls}static get NAME(){return ms}toggle(){this._isShown()?this.hide():this.show();}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Ns).filter(a=>a!==this._element).map(a=>i.getOrCreateInstance(a,{toggle:false}))),t.length&&t[0]._isTransitioning||l.trigger(this._element,Es).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(Qt),this._element.classList.add(Re),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,true),this._isTransitioning=true;let r=()=>{this._isTransitioning=false,this._element.classList.remove(Re),this._element.classList.add(Qt,Ci),this._element.style[n]="",l.trigger(this._element,vs);},s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(r,this._element,true),this._element.style[n]=`${this._element[s]}px`;}hide(){if(this._isTransitioning||!this._isShown()||l.trigger(this._element,bs).defaultPrevented)return;let e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,Ee(this._element),this._element.classList.add(Re),this._element.classList.remove(Qt,Ci);for(let r of this._triggerArray){let o=f.getElementFromSelector(r);o&&!this._isShown(o)&&this._addAriaAndCollapsedClass([r],false);}this._isTransitioning=true;let n=()=>{this._isTransitioning=false,this._element.classList.remove(Re),this._element.classList.add(Qt),l.trigger(this._element,ys);};this._element.style[e]="",this._queueCallback(n,this._element,true);}_isShown(t=this._element){return t.classList.contains(Ci)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=ft(t.parent),t}_getDimension(){return this._element.classList.contains(Os)?Cs:Ss}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(Vi);for(let e of t){let n=f.getElementFromSelector(e);n&&this._addAriaAndCollapsedClass([e],this._isShown(n));}}_getFirstLevelChildren(t){let e=f.find(ws,this._config.parent);return f.find(t,this._config.parent).filter(n=>!e.includes(n))}_addAriaAndCollapsedClass(t,e){if(t.length)for(let n of t)n.classList.toggle(Ts,!e),n.setAttribute("aria-expanded",e);}static jQueryInterface(t){let e={};return typeof t=="string"&&/show|hide/.test(t)&&(e.toggle=false),this.each(function(){let n=i.getOrCreateInstance(this,e);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t]();}})}};l.on(document,As,Vi,function(i){(i.target.tagName==="A"||i.delegateTarget&&i.delegateTarget.tagName==="A")&&i.preventDefault();for(let t of f.getMultipleElementsFromSelector(this))ze.getOrCreateInstance(t,{toggle:false}).toggle();});X(ze);var On="dropdown",$s="bs.dropdown",Rt=`.${$s}`,Fi=".data-api",xs="Escape",Cn="Tab",Is="ArrowUp",Sn="ArrowDown",Ps=2,Ms=`hide${Rt}`,Rs=`hidden${Rt}`,ks=`show${Rt}`,Vs=`shown${Rt}`,dr=`click${Rt}${Fi}`,fr=`keydown${Rt}${Fi}`,Hs=`keyup${Rt}${Fi}`,Xt="show",Ws="dropup",Bs="dropend",js="dropstart",Fs="dropup-center",Ks="dropdown-center",It='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ys=`${It}.${Xt}`,je=".dropdown-menu",Us=".navbar",zs=".navbar-nav",qs=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Gs=q()?"top-end":"top-start",Xs=q()?"top-start":"top-end",Qs=q()?"bottom-end":"bottom-start",Zs=q()?"bottom-start":"bottom-end",Js=q()?"left-start":"right-start",ta=q()?"right-start":"left-start",ea="top",ia="bottom",na={autoClose:true,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ra={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"},ht=class i extends K{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=f.next(this._element,je)[0]||f.prev(this._element,je)[0]||f.findOne(je,this._parent),this._inNavbar=this._detectNavbar();}static get Default(){return na}static get DefaultType(){return ra}static get NAME(){return On}toggle(){return this._isShown()?this.hide():this.show()}show(){if(pt(this._element)||this._isShown())return;let t={relatedTarget:this._element};if(!l.trigger(this._element,ks,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(zs))for(let n of [].concat(...document.body.children))l.on(n,"mouseover",Fe);this._element.focus(),this._element.setAttribute("aria-expanded",true),this._menu.classList.add(Xt),this._element.classList.add(Xt),l.trigger(this._element,Vs,t);}}hide(){if(pt(this._element)||!this._isShown())return;let 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();}_completeHide(t){if(!l.trigger(this._element,Ms,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(let n of [].concat(...document.body.children))l.off(n,"mouseover",Fe);this._popper&&this._popper.destroy(),this._menu.classList.remove(Xt),this._element.classList.remove(Xt),this._element.setAttribute("aria-expanded","false"),st.removeDataAttribute(this._menu,"popper"),l.trigger(this._element,Rs,t);}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!ot(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${On.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof Pe>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");let t=this._element;this._config.reference==="parent"?t=this._parent:ot(this._config.reference)?t=ft(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);let e=this._getPopperConfig();this._popper=fe(t,this._menu,e);}_isShown(){return this._menu.classList.contains(Xt)}_getPlacement(){let t=this._parent;if(t.classList.contains(Bs))return Js;if(t.classList.contains(js))return ta;if(t.classList.contains(Fs))return ea;if(t.classList.contains(Ks))return ia;let e=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(Ws)?e?Xs:Gs:e?Zs:Qs}_detectNavbar(){return this._element.closest(Us)!==null}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_getPopperConfig(){let t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return (this._inNavbar||this._config.display==="static")&&(st.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:false}]),{...t,...j(this._config.popperConfig,[void 0,t])}}_selectMenuItem({key:t,target:e}){let n=f.find(qs,this._menu).filter(r=>Jt(r));n.length&&Bi(n,e,t===Sn,!n.includes(e)).focus();}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]();}})}static clearMenus(t){if(t.button===Ps||t.type==="keyup"&&t.key!==Cn)return;let e=f.find(Ys);for(let n of e){let r=i.getInstance(n);if(!r||r._config.autoClose===false)continue;let o=t.composedPath(),s=o.includes(r._menu);if(o.includes(r._element)||r._config.autoClose==="inside"&&!s||r._config.autoClose==="outside"&&s||r._menu.contains(t.target)&&(t.type==="keyup"&&t.key===Cn||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;let a={relatedTarget:r._element};t.type==="click"&&(a.clickEvent=t),r._completeHide(a);}}static dataApiKeydownHandler(t){let e=/input|textarea/i.test(t.target.tagName),n=t.key===xs,r=[Is,Sn].includes(t.key);if(!r&&!n||e&&!n)return;t.preventDefault();let o=this.matches(It)?this:f.prev(this,It)[0]||f.next(this,It)[0]||f.findOne(It,t.delegateTarget.parentNode),s=i.getOrCreateInstance(o);if(r){t.stopPropagation(),s.show(),s._selectMenuItem(t);return}s._isShown()&&(t.stopPropagation(),s.hide(),o.focus());}};l.on(document,fr,It,ht.dataApiKeydownHandler);l.on(document,fr,je,ht.dataApiKeydownHandler);l.on(document,dr,ht.clearMenus);l.on(document,Hs,ht.clearMenus);l.on(document,dr,It,function(i){i.preventDefault(),ht.getOrCreateInstance(this).toggle();});X(ht);var pr="backdrop",oa="fade",Nn="show",Dn=`mousedown.bs.${pr}`,sa={className:"modal-backdrop",clickCallback:null,isAnimated:false,isVisible:true,rootElement:"body"},aa={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"},qe=class extends Mt{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=false,this._element=null;}static get Default(){return sa}static get DefaultType(){return aa}static get NAME(){return pr}show(t){if(!this._config.isVisible){j(t);return}this._append();let e=this._getElement();this._config.isAnimated&&Ee(e),e.classList.add(Nn),this._emulateAnimation(()=>{j(t);});}hide(t){if(!this._config.isVisible){j(t);return}this._getElement().classList.remove(Nn),this._emulateAnimation(()=>{this.dispose(),j(t);});}dispose(){this._isAppended&&(l.off(this._element,Dn),this._element.remove(),this._isAppended=false);}_getElement(){if(!this._element){let t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(oa),this._element=t;}return this._element}_configAfterMerge(t){return t.rootElement=ft(t.rootElement),t}_append(){if(this._isAppended)return;let t=this._getElement();this._config.rootElement.append(t),l.on(t,Dn,()=>{j(this._config.clickCallback);}),this._isAppended=true;}_emulateAnimation(t){Jn(t,this._getElement(),this._config.isAnimated);}},la="focustrap",ca="bs.focustrap",Ge=`.${ca}`,ua=`focusin${Ge}`,da=`keydown.tab${Ge}`,fa="Tab",pa="forward",Ln="backward",ha={autofocus:true,trapElement:null},ma={autofocus:"boolean",trapElement:"element"},Xe=class extends Mt{constructor(t){super(),this._config=this._getConfig(t),this._isActive=false,this._lastTabNavDirection=null;}static get Default(){return ha}static get DefaultType(){return ma}static get NAME(){return la}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),l.off(document,Ge),l.on(document,ua,t=>this._handleFocusin(t)),l.on(document,da,t=>this._handleKeydown(t)),this._isActive=true);}deactivate(){this._isActive&&(this._isActive=false,l.off(document,Ge));}_handleFocusin(t){let{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;let n=f.focusableChildren(e);n.length===0?e.focus():this._lastTabNavDirection===Ln?n[n.length-1].focus():n[0].focus();}_handleKeydown(t){t.key===fa&&(this._lastTabNavDirection=t.shiftKey?Ln:pa);}},$n=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",xn=".sticky-top",ke="padding-right",In="margin-right",_e=class{constructor(){this._element=document.body;}getWidth(){let t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){let t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,ke,e=>e+t),this._setElementAttributes($n,ke,e=>e+t),this._setElementAttributes(xn,In,e=>e-t);}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,ke),this._resetElementAttributes($n,ke),this._resetElementAttributes(xn,In);}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden";}_setElementAttributes(t,e,n){let r=this.getWidth(),o=s=>{if(s!==this._element&&window.innerWidth>s.clientWidth+r)return;this._saveInitialAttribute(s,e);let a=window.getComputedStyle(s).getPropertyValue(e);s.style.setProperty(e,`${n(Number.parseFloat(a))}px`);};this._applyManipulationCallback(t,o);}_saveInitialAttribute(t,e){let n=t.style.getPropertyValue(e);n&&st.setDataAttribute(t,e,n);}_resetElementAttributes(t,e){let n=r=>{let o=st.getDataAttribute(r,e);if(o===null){r.style.removeProperty(e);return}st.removeDataAttribute(r,e),r.style.setProperty(e,o);};this._applyManipulationCallback(t,n);}_applyManipulationCallback(t,e){if(ot(t)){e(t);return}for(let n of f.find(t,this._element))e(n);}},_a="modal",ga="bs.modal",G=`.${ga}`,Ea=".data-api",va="Escape",ba=`hide${G}`,ya=`hidePrevented${G}`,hr=`hidden${G}`,mr=`show${G}`,Aa=`shown${G}`,Ta=`resize${G}`,wa=`click.dismiss${G}`,Oa=`mousedown.dismiss${G}`,Ca=`keydown.dismiss${G}`,Sa=`click${G}${Ea}`,Pn="modal-open",Na="fade",Mn="show",Si="modal-static",Da=".modal.show",La=".modal-dialog",$a=".modal-body",xa='[data-bs-toggle="modal"]',Ia={backdrop:true,focus:true,keyboard:true},Pa={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"},mt=class i extends K{constructor(t,e){super(t,e),this._dialog=f.findOne(La,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=false,this._isTransitioning=false,this._scrollBar=new _e,this._addEventListeners();}static get Default(){return Ia}static get DefaultType(){return Pa}static get NAME(){return _a}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||l.trigger(this._element,mr,{relatedTarget:t}).defaultPrevented||(this._isShown=true,this._isTransitioning=true,this._scrollBar.hide(),document.body.classList.add(Pn),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)));}hide(){!this._isShown||this._isTransitioning||l.trigger(this._element,ba).defaultPrevented||(this._isShown=false,this._isTransitioning=true,this._focustrap.deactivate(),this._element.classList.remove(Mn),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()));}dispose(){l.off(window,G),l.off(this._dialog,G),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose();}handleUpdate(){this._adjustDialog();}_initializeBackDrop(){return new qe({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Xe({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",true),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;let e=f.findOne($a,this._dialog);e&&(e.scrollTop=0),Ee(this._element),this._element.classList.add(Mn);let n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=false,l.trigger(this._element,Aa,{relatedTarget:t});};this._queueCallback(n,this._dialog,this._isAnimated());}_addEventListeners(){l.on(this._element,Ca,t=>{if(t.key===va){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition();}}),l.on(window,Ta,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog();}),l.on(this._element,Oa,t=>{l.one(this._element,wa,e=>{if(!(this._element!==t.target||this._element!==e.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide();}});});}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",true),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=false,this._backdrop.hide(()=>{document.body.classList.remove(Pn),this._resetAdjustments(),this._scrollBar.reset(),l.trigger(this._element,hr);});}_isAnimated(){return this._element.classList.contains(Na)}_triggerBackdropTransition(){if(l.trigger(this._element,ya).defaultPrevented)return;let e=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(Si)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(Si),this._queueCallback(()=>{this._element.classList.remove(Si),this._queueCallback(()=>{this._element.style.overflowY=n;},this._dialog);},this._dialog),this._element.focus());}_adjustDialog(){let t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),n=e>0;if(n&&!t){let r=q()?"paddingLeft":"paddingRight";this._element.style[r]=`${e}px`;}if(!n&&t){let r=q()?"paddingRight":"paddingLeft";this._element.style[r]=`${e}px`;}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight="";}static jQueryInterface(t,e){return this.each(function(){let n=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t](e);}})}};l.on(document,Sa,xa,function(i){let t=f.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&i.preventDefault(),l.one(t,mr,r=>{r.defaultPrevented||l.one(t,hr,()=>{Jt(this)&&this.focus();});});let e=f.findOne(Da);e&&mt.getInstance(e).hide(),mt.getOrCreateInstance(t).toggle(this);});Je(mt);X(mt);var Ma="offcanvas",Ra="bs.offcanvas",at=`.${Ra}`,_r=".data-api",ka=`load${at}${_r}`,Va="Escape",Rn="show",kn="showing",Vn="hiding",Ha="offcanvas-backdrop",gr=".offcanvas.show",Wa=`show${at}`,Ba=`shown${at}`,ja=`hide${at}`,Hn=`hidePrevented${at}`,Er=`hidden${at}`,Fa=`resize${at}`,Ka=`click${at}${_r}`,Ya=`keydown.dismiss${at}`,Ua='[data-bs-toggle="offcanvas"]',za={backdrop:true,keyboard:true,scroll:false},qa={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"},_t=class i extends K{constructor(t,e){super(t,e),this._isShown=false,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners();}static get Default(){return za}static get DefaultType(){return qa}static get NAME(){return Ma}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||l.trigger(this._element,Wa,{relatedTarget:t}).defaultPrevented)return;this._isShown=true,this._backdrop.show(),this._config.scroll||new _e().hide(),this._element.setAttribute("aria-modal",true),this._element.setAttribute("role","dialog"),this._element.classList.add(kn);let n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(Rn),this._element.classList.remove(kn),l.trigger(this._element,Ba,{relatedTarget:t});};this._queueCallback(n,this._element,true);}hide(){if(!this._isShown||l.trigger(this._element,ja).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=false,this._element.classList.add(Vn),this._backdrop.hide();let e=()=>{this._element.classList.remove(Rn,Vn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new _e().reset(),l.trigger(this._element,Er);};this._queueCallback(e,this._element,true);}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose();}_initializeBackDrop(){let t=()=>{if(this._config.backdrop==="static"){l.trigger(this._element,Hn);return}this.hide();},e=!!this._config.backdrop;return new qe({className:Ha,isVisible:e,isAnimated:true,rootElement:this._element.parentNode,clickCallback:e?t:null})}_initializeFocusTrap(){return new Xe({trapElement:this._element})}_addEventListeners(){l.on(this._element,Ya,t=>{if(t.key===Va){if(this._config.keyboard){this.hide();return}l.trigger(this._element,Hn);}});}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this);}})}};l.on(document,Ka,Ua,function(i){let t=f.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),pt(this))return;l.one(t,Er,()=>{Jt(this)&&this.focus();});let e=f.findOne(gr);e&&e!==t&&_t.getInstance(e).hide(),_t.getOrCreateInstance(t).toggle(this);});l.on(window,ka,()=>{for(let i of f.find(gr))_t.getOrCreateInstance(i).show();});l.on(window,Fa,()=>{for(let i of f.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(i).position!=="fixed"&&_t.getOrCreateInstance(i).hide();});Je(_t);X(_t);var Ga=/^aria-[\w-]*$/i,vr={"*":["class","dir","id","lang","role",Ga],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xa=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qa=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Za=(i,t)=>{let e=i.nodeName.toLowerCase();return t.includes(e)?Xa.has(e)?!!Qa.test(i.nodeValue):true:t.filter(n=>n instanceof RegExp).some(n=>n.test(e))};function Ja(i,t,e){if(!i.length)return i;if(e&&typeof e=="function")return e(i);let r=new window.DOMParser().parseFromString(i,"text/html"),o=[].concat(...r.body.querySelectorAll("*"));for(let s of o){let a=s.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){s.remove();continue}let c=[].concat(...s.attributes),d=[].concat(t["*"]||[],t[a]||[]);for(let u of c)Za(u,d)||s.removeAttribute(u.nodeName);}return r.body.innerHTML}var tl="TemplateFactory",el={allowList:vr,content:{},extraClass:"",html:false,sanitize:true,sanitizeFn:null,template:"<div></div>"},il={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},nl={entry:"(string|element|function|null)",selector:"(string|element)"},Hi=class extends Mt{constructor(t){super(),this._config=this._getConfig(t);}static get Default(){return el}static get DefaultType(){return il}static get NAME(){return tl}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[r,o]of Object.entries(this._config.content))this._setContent(t,o,r);let e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content);}_checkContent(t){for(let[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},nl);}_setContent(t,e,n){let r=f.findOne(n,t);if(r){if(e=this._resolvePossibleFunction(e),!e){r.remove();return}if(ot(e)){this._putElementInTemplate(ft(e),r);return}if(this._config.html){r.innerHTML=this._maybeSanitize(e);return}r.textContent=e;}}_maybeSanitize(t){return this._config.sanitize?Ja(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return j(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html){e.innerHTML="",e.append(t);return}e.textContent=t.textContent;}},rl="tooltip",ol=new Set(["sanitize","allowList","sanitizeFn"]),Ni="fade",sl="modal",Ve="show",al=".tooltip-inner",Wn=`.${sl}`,Bn="hide.bs.modal",he="hover",Di="focus",Li="click",ll="manual",cl="hide",ul="hidden",dl="show",fl="shown",pl="inserted",hl="click",ml="focusin",_l="focusout",gl="mouseenter",El="mouseleave",vl={AUTO:"auto",TOP:"top",RIGHT:q()?"left":"right",BOTTOM:"bottom",LEFT:q()?"right":"left"},bl={allowList:vr,animation:true,boundary:"clippingParents",container:false,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:false,offset:[0,6],placement:"top",popperConfig:null,sanitize:true,sanitizeFn:null,selector:false,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},yl={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Zt=class i extends K{constructor(t,e){if(typeof Pe>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,e),this._isEnabled=true,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle();}static get Default(){return bl}static get DefaultType(){return yl}static get NAME(){return rl}enable(){this._isEnabled=true;}disable(){this._isEnabled=false;}toggleEnabled(){this._isEnabled=!this._isEnabled;}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter();}}dispose(){clearTimeout(this._timeout),l.off(this._element.closest(Wn),Bn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose();}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=l.trigger(this._element,this.constructor.eventName(dl)),n=(Qn(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let r=this._getTipElement();this._element.setAttribute("aria-describedby",r.getAttribute("id"));let{container:o}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(o.append(r),l.trigger(this._element,this.constructor.eventName(pl))),this._popper=this._createPopper(r),r.classList.add(Ve),"ontouchstart"in document.documentElement)for(let a of [].concat(...document.body.children))l.on(a,"mouseover",Fe);let s=()=>{l.trigger(this._element,this.constructor.eventName(fl)),this._isHovered===false&&this._leave(),this._isHovered=false;};this._queueCallback(s,this.tip,this._isAnimated());}hide(){if(!this._isShown()||l.trigger(this._element,this.constructor.eventName(cl)).defaultPrevented)return;if(this._getTipElement().classList.remove(Ve),"ontouchstart"in document.documentElement)for(let r of [].concat(...document.body.children))l.off(r,"mouseover",Fe);this._activeTrigger[Li]=false,this._activeTrigger[Di]=false,this._activeTrigger[he]=false,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),l.trigger(this._element,this.constructor.eventName(ul)));};this._queueCallback(n,this.tip,this._isAnimated());}update(){this._popper&&this._popper.update();}_isWithContent(){return !!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ni,Ve),e.classList.add(`bs-${this.constructor.NAME}-auto`);let n=lo(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ni),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show());}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Hi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return {[al]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ni)}_isShown(){return this.tip&&this.tip.classList.contains(Ve)}_createPopper(t){let e=j(this._config.placement,[this,t,this._element]),n=vl[e.toUpperCase()];return fe(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_resolvePossibleFunction(t){return j(t,[this._element,this._element])}_getPopperConfig(t){let 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:"preSetPlacement",enabled:true,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement);}}]};return {...e,...j(this._config.popperConfig,[void 0,e])}}_setListeners(){let t=this._config.trigger.split(" ");for(let e of t)if(e==="click")l.on(this._element,this.constructor.eventName(hl),this._config.selector,n=>{let r=this._initializeOnDelegatedTarget(n);r._activeTrigger[Li]=!(r._isShown()&&r._activeTrigger[Li]),r.toggle();});else if(e!==ll){let n=e===he?this.constructor.eventName(gl):this.constructor.eventName(ml),r=e===he?this.constructor.eventName(El):this.constructor.eventName(_l);l.on(this._element,n,this._config.selector,o=>{let s=this._initializeOnDelegatedTarget(o);s._activeTrigger[o.type==="focusin"?Di:he]=true,s._enter();}),l.on(this._element,r,this._config.selector,o=>{let s=this._initializeOnDelegatedTarget(o);s._activeTrigger[o.type==="focusout"?Di:he]=s._element.contains(o.relatedTarget),s._leave();});}this._hideModalHandler=()=>{this._element&&this.hide();},l.on(this._element.closest(Wn),Bn,this._hideModalHandler);}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"));}_enter(){if(this._isShown()||this._isHovered){this._isHovered=true;return}this._isHovered=true,this._setTimeout(()=>{this._isHovered&&this.show();},this._config.delay.show);}_leave(){this._isWithActiveTrigger()||(this._isHovered=false,this._setTimeout(()=>{this._isHovered||this.hide();},this._config.delay.hide));}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e);}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(true)}_getConfig(t){let e=st.getDataAttributes(this._element);for(let n of Object.keys(e))ol.has(n)&&delete e[n];return t={...e,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===false?document.body:ft(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=false,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null);}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]();}})}};X(Zt);var Al="popover",Tl=".popover-header",wl=".popover-body",Ol={...Zt.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},Cl={...Zt.DefaultType,content:"(null|string|element|function)"},Wi=class i extends Zt{static get Default(){return Ol}static get DefaultType(){return Cl}static get NAME(){return Al}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return {[Tl]:this._getTitle(),[wl]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]();}})}};X(Wi);var Sl="scrollspy",Nl="bs.scrollspy",Ki=`.${Nl}`,Dl=".data-api",Ll=`activate${Ki}`,jn=`click${Ki}`,$l=`load${Ki}${Dl}`,xl="dropdown-item",qt="active",Il='[data-bs-spy="scroll"]',$i="[href]",Pl=".nav, .list-group",Fn=".nav-link",Ml=".nav-item",Rl=".list-group-item",kl=`${Fn}, ${Ml} > ${Fn}, ${Rl}`,Vl=".dropdown",Hl=".dropdown-toggle",Wl={offset:null,rootMargin:"0px 0px -25%",smoothScroll:false,target:null,threshold:[.1,.5,1]},Bl={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"},Qe=class i extends K{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh();}static get Default(){return Wl}static get DefaultType(){return Bl}static get NAME(){return Sl}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(let t of this._observableSections.values())this._observer.observe(t);}dispose(){this._observer.disconnect(),super.dispose();}_configAfterMerge(t){return t.target=ft(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(e=>Number.parseFloat(e))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(l.off(this._config.target,jn),l.on(this._config.target,jn,$i,t=>{let e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();let n=this._rootElement||window,r=e.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:r,behavior:"smooth"});return}n.scrollTop=r;}}));}_getNewObserver(){let t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),t)}_observerCallback(t){let e=s=>this._targetLinks.get(`#${s.target.id}`),n=s=>{this._previousScrollData.visibleEntryTop=s.target.offsetTop,this._process(e(s));},r=(this._rootElement||document.documentElement).scrollTop,o=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;for(let s of t){if(!s.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(s));continue}let a=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&a){if(n(s),!r)return;continue}!o&&!a&&n(s);}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;let t=f.find($i,this._config.target);for(let e of t){if(!e.hash||pt(e))continue;let n=f.findOne(decodeURI(e.hash),this._element);Jt(n)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,n));}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(qt),this._activateParents(t),l.trigger(this._element,Ll,{relatedTarget:t}));}_activateParents(t){if(t.classList.contains(xl)){f.findOne(Hl,t.closest(Vl)).classList.add(qt);return}for(let e of f.parents(t,Pl))for(let n of f.prev(e,kl))n.classList.add(qt);}_clearActiveClass(t){t.classList.remove(qt);let e=f.find(`${$i}.${qt}`,t);for(let n of e)n.classList.remove(qt);}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]();}})}};l.on(window,$l,()=>{for(let i of f.find(Il))Qe.getOrCreateInstance(i);});X(Qe);var jl="tab",Fl="bs.tab",kt=`.${Fl}`,Kl=`hide${kt}`,Yl=`hidden${kt}`,Ul=`show${kt}`,zl=`shown${kt}`,ql=`click${kt}`,Gl=`keydown${kt}`,Xl=`load${kt}`,Ql="ArrowLeft",Kn="ArrowRight",Zl="ArrowUp",Yn="ArrowDown",xi="Home",Un="End",Pt="active",zn="fade",Ii="show",Jl="dropdown",br=".dropdown-toggle",tc=".dropdown-menu",Pi=`:not(${br})`,ec='.list-group, .nav, [role="tablist"]',ic=".nav-item, .list-group-item",nc=`.nav-link${Pi}, .list-group-item${Pi}, [role="tab"]${Pi}`,yr='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Mi=`${nc}, ${yr}`,rc=`.${Pt}[data-bs-toggle="tab"], .${Pt}[data-bs-toggle="pill"], .${Pt}[data-bs-toggle="list"]`,ge=class i extends K{constructor(t){super(t),this._parent=this._element.closest(ec),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),l.on(this._element,Gl,e=>this._keydown(e)));}static get NAME(){return jl}show(){let t=this._element;if(this._elemIsActive(t))return;let e=this._getActiveElem(),n=e?l.trigger(e,Kl,{relatedTarget:t}):null;l.trigger(t,Ul,{relatedTarget:e}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(e,t),this._activate(t,e));}_activate(t,e){if(!t)return;t.classList.add(Pt),this._activate(f.getElementFromSelector(t));let n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(Ii);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",true),this._toggleDropDown(t,true),l.trigger(t,zl,{relatedTarget:e});};this._queueCallback(n,t,t.classList.contains(zn));}_deactivate(t,e){if(!t)return;t.classList.remove(Pt),t.blur(),this._deactivate(f.getElementFromSelector(t));let n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(Ii);return}t.setAttribute("aria-selected",false),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,false),l.trigger(t,Yl,{relatedTarget:e});};this._queueCallback(n,t,t.classList.contains(zn));}_keydown(t){if(![Ql,Kn,Zl,Yn,xi,Un].includes(t.key))return;t.stopPropagation(),t.preventDefault();let e=this._getChildren().filter(r=>!pt(r)),n;if([xi,Un].includes(t.key))n=e[t.key===xi?0:e.length-1];else {let r=[Kn,Yn].includes(t.key);n=Bi(e,t.target,r,true);}n&&(n.focus({preventScroll:true}),i.getOrCreateInstance(n).show());}_getChildren(){return f.find(Mi,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(let n of e)this._setInitialAttributesOnChild(n);}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);let e=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",e),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t);}_setInitialAttributesOnTargetPanel(t){let e=f.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`));}_toggleDropDown(t,e){let n=this._getOuterElement(t);if(!n.classList.contains(Jl))return;let r=(o,s)=>{let a=f.findOne(o,n);a&&a.classList.toggle(s,e);};r(br,Pt),r(tc,Ii),n.setAttribute("aria-expanded",e);}_setAttributeIfNotExists(t,e,n){t.hasAttribute(e)||t.setAttribute(e,n);}_elemIsActive(t){return t.classList.contains(Pt)}_getInnerElement(t){return t.matches(Mi)?t:f.findOne(Mi,t)}_getOuterElement(t){return t.closest(ic)||t}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]();}})}};l.on(document,ql,yr,function(i){["A","AREA"].includes(this.tagName)&&i.preventDefault(),!pt(this)&&ge.getOrCreateInstance(this).show();});l.on(window,Xl,()=>{for(let i of f.find(rc))ge.getOrCreateInstance(i);});X(ge);var oc="toast",sc="bs.toast",Et=`.${sc}`,ac=`mouseover${Et}`,lc=`mouseout${Et}`,cc=`focusin${Et}`,uc=`focusout${Et}`,dc=`hide${Et}`,fc=`hidden${Et}`,pc=`show${Et}`,hc=`shown${Et}`,mc="fade",qn="hide",He="show",We="showing",_c={animation:"boolean",autohide:"boolean",delay:"number"},gc={animation:true,autohide:true,delay:5e3},Ze=class i extends K{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=false,this._hasKeyboardInteraction=false,this._setListeners();}static get Default(){return gc}static get DefaultType(){return _c}static get NAME(){return oc}show(){if(l.trigger(this._element,pc).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(mc);let e=()=>{this._element.classList.remove(We),l.trigger(this._element,hc),this._maybeScheduleHide();};this._element.classList.remove(qn),Ee(this._element),this._element.classList.add(He,We),this._queueCallback(e,this._element,this._config.animation);}hide(){if(!this.isShown()||l.trigger(this._element,dc).defaultPrevented)return;let e=()=>{this._element.classList.add(qn),this._element.classList.remove(We,He),l.trigger(this._element,fc);};this._element.classList.add(We),this._queueCallback(e,this._element,this._config.animation);}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(He),super.dispose();}isShown(){return this._element.classList.contains(He)}_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;break}}if(e){this._clearTimeout();return}let n=t.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide();}_setListeners(){l.on(this._element,ac,t=>this._onInteraction(t,true)),l.on(this._element,lc,t=>this._onInteraction(t,false)),l.on(this._element,cc,t=>this._onInteraction(t,true)),l.on(this._element,uc,t=>this._onInteraction(t,false));}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null;}static jQueryInterface(t){return this.each(function(){let e=i.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t](this);}})}};Je(Ze);X(Ze);var ti=class i{element=null;instance=null;static open(t){let e=new i;return e.create(t),e.show(),e}create(t){let e=`modal-${Math.random().toString(36).substr(2,9)}`,n=`
|
|
2
|
+
<div class="modal fade" id="${e}" tabindex="-1" aria-hidden="true">
|
|
3
|
+
<div class="modal-dialog ${t.size?`modal-${t.size}`:""} ${t.centered?"modal-dialog-centered":""}">
|
|
4
|
+
<div class="modal-content">
|
|
5
|
+
${t.title?`
|
|
6
|
+
<div class="modal-header">
|
|
7
|
+
<h5 class="modal-title">${t.title}</h5>
|
|
8
|
+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
9
|
+
</div>
|
|
10
|
+
`:""}
|
|
11
|
+
<div class="modal-body">
|
|
12
|
+
${t.body||""}
|
|
13
|
+
</div>
|
|
14
|
+
${t.footer?`
|
|
15
|
+
<div class="modal-footer">
|
|
16
|
+
${t.footer}
|
|
17
|
+
</div>
|
|
18
|
+
`:""}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
`;document.body.insertAdjacentHTML("beforeend",n),this.element=document.getElementById(e),this.element&&(this.instance=new mt(this.element),this.element.addEventListener("hidden.bs.modal",()=>{this.destroy();}));}show(){this.instance?.show();}hide(){this.instance?.hide();}destroy(){this.element&&(this.element.remove(),this.element=null,this.instance=null);}};var wr={fr:{selectSlot:"Vous avez s\xE9lectionn\xE9 le",noSlots:"Pas de cr\xE9neaux disponibles pour cette date.",selectDay:"S\xE9lectionnez un jour dans le calendrier",selectTime:"S\xE9lectionner un horaire pour le",confirmTitle:"Confirmer la r\xE9servation",confirmBody:"Vous avez s\xE9lectionn\xE9 le <strong>{date}</strong> \xE0 <strong>{slot}</strong>.",confirmBtn:"R\xE9server ce cr\xE9neau",cancelBtn:"Annuler"},en:{selectSlot:"You have selected",noSlots:"No slots available for this date.",selectDay:"Please select a day in the calendar",selectTime:"Select a time slot for",confirmTitle:"Confirm Booking",confirmBody:"You selected <strong>{date}</strong> at <strong>{slot}</strong>.",confirmBtn:"Book this slot",cancelBtn:"Cancel"}},Or=class{container;calendarContainer=null;slotsContainer=null;calendarInstance=null;selectedDate=null;selectedSlot=null;options;currentTrads;constructor(t,e){this.container=t,this.options={lang:"fr",selectedDate:null,inputName:"booking_datetime",onSlotSelect:()=>{},mode:"single",disablePast:false,onRangeSelect:()=>{},initialDate:new Date,fields:[{name:"firstname",label:e?.lang==="en"?"Firstname":"Pr\xE9nom",type:"text",required:true},{name:"lastname",label:e?.lang==="en"?"Lastname":"Nom",type:"text",required:true},{name:"email",label:"Email",type:"email",required:true}],...e},this.selectedDate=this.options.selectedDate,this.currentTrads=wr[this.options.lang],this.initLayout(),this.render();}initLayout(){this.container.innerHTML=`
|
|
23
|
+
<div class="booking-wrapper">
|
|
24
|
+
<div class="booking__calendar-column"></div>
|
|
25
|
+
<div class="booking__slots-column"></div>
|
|
26
|
+
</div>
|
|
27
|
+
`,this.calendarContainer=this.container.querySelector(".booking__calendar-column"),this.slotsContainer=this.container.querySelector(".booking__slots-column"),this.calendarContainer&&(this.calendarInstance=new Calendar(this.calendarContainer,{lang:this.options.lang,mode:this.options.mode,disablePast:this.options.disablePast,availability:this.options.availability,initialDate:this.options.initialDate,onDateSelect:t=>{this.updateDate(t);}}));}updateDate(t){this.selectedDate=t,this.selectedSlot=null,this.render();}setLanguage(t){this.options.lang=t,this.currentTrads=wr[t],this.calendarInstance&&this.calendarInstance.setLanguage(t),this.render();}render(){if(!this.slotsContainer)return;if(!this.selectedDate){this.slotsContainer.innerHTML=`
|
|
28
|
+
<div class="booking--empty">
|
|
29
|
+
<div class="booking__empty-message">
|
|
30
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="4" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>
|
|
31
|
+
<p>${this.currentTrads.selectDay}</p>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
`;return}let t=format(this.selectedDate,"yyyy-MM-dd"),e=this.options.availability[t]||[],n=this.options.lang==="fr"?fr$1:enUS,r=format(this.selectedDate,"EEEE d MMMM yyyy",{locale:n});this.slotsContainer.innerHTML=`
|
|
35
|
+
<div class="booking">
|
|
36
|
+
<h3 class="booking__title">${this.currentTrads.selectTime} ${r}</h3>
|
|
37
|
+
<div class="booking__slots">
|
|
38
|
+
${e.map(o=>`
|
|
39
|
+
<button class="booking__slot ${this.selectedSlot===o?"booking__slot--selected":""}" data-slot="${o}">
|
|
40
|
+
${o.includes(":")?o.replace(":","h"):o}
|
|
41
|
+
</button>
|
|
42
|
+
`).join("")}
|
|
43
|
+
${e.length===0?`<p class="booking__empty">${this.currentTrads.noSlots}</p>`:""}
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<input type="hidden" name="${this.options.inputName}[date]" value="${this.selectedSlot?t:""}" />
|
|
47
|
+
<input type="hidden" name="${this.options.inputName}[slot]" value="${this.selectedSlot||""}" />
|
|
48
|
+
</div>
|
|
49
|
+
`,this.bindEvents();}bindEvents(){if(!this.slotsContainer)return;this.slotsContainer.querySelectorAll(".booking__slot").forEach(e=>{e.addEventListener("click",n=>{n.preventDefault();let r=e.getAttribute("data-slot");r&&this.selectedDate&&this.openConfirmationModal(this.selectedDate,r);});});}openConfirmationModal(t,e){let n=this.options.lang==="fr"?fr$1:enUS,r=format(t,"EEEE d MMMM yyyy",{locale:n}),o=e.includes(":")?e.replace(":","h"):e,s=`
|
|
50
|
+
<p>${this.currentTrads.confirmBody.replace("{date}",r).replace("{slot}",o)}</p>
|
|
51
|
+
<form id="booking-confirmation-form" class="mt-4">
|
|
52
|
+
${this.options.fields.map(d=>`
|
|
53
|
+
<div class="mb-3">
|
|
54
|
+
<label for="field-${d.name}" class="form-label">
|
|
55
|
+
${d.label}${d.required?' <span class="text-danger">*</span>':""}
|
|
56
|
+
</label>
|
|
57
|
+
${d.type==="textarea"?`
|
|
58
|
+
<textarea
|
|
59
|
+
id="field-${d.name}"
|
|
60
|
+
name="${d.name}"
|
|
61
|
+
class="form-control"
|
|
62
|
+
${d.required?"required":""}
|
|
63
|
+
placeholder="${d.placeholder||""}"
|
|
64
|
+
></textarea>
|
|
65
|
+
`:`
|
|
66
|
+
<input
|
|
67
|
+
type="${d.type}"
|
|
68
|
+
id="field-${d.name}"
|
|
69
|
+
name="${d.name}"
|
|
70
|
+
class="form-control"
|
|
71
|
+
${d.required?"required":""}
|
|
72
|
+
placeholder="${d.placeholder||""}"
|
|
73
|
+
/>
|
|
74
|
+
`}
|
|
75
|
+
</div>
|
|
76
|
+
`).join("")}
|
|
77
|
+
</form>
|
|
78
|
+
`,a=`
|
|
79
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
|
|
80
|
+
${this.currentTrads.cancelBtn}
|
|
81
|
+
</button>
|
|
82
|
+
<button type="submit" form="booking-confirmation-form" class="btn btn-primary" id="confirm-booking-btn">
|
|
83
|
+
${this.currentTrads.confirmBtn}
|
|
84
|
+
</button>
|
|
85
|
+
`,c=ti.open({title:this.currentTrads.confirmTitle,body:s,footer:a,centered:true});setTimeout(()=>{let d=document.getElementById("booking-confirmation-form");d&&d.addEventListener("submit",u=>{u.preventDefault();let h=new FormData(d),m={};h.forEach((p,v)=>{m[v]=p;}),this.selectedSlot=e,this.render(),c.hide(),this.options.onSlotSelect&&this.options.onSlotSelect(t,e,m);});},0);}};/*! Bundled license information:
|
|
86
|
+
|
|
87
|
+
bootstrap/dist/js/bootstrap.esm.js:
|
|
88
|
+
(*!
|
|
89
|
+
* Bootstrap v5.3.8 (https://getbootstrap.com/)
|
|
90
|
+
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
91
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
92
|
+
*)
|
|
93
|
+
*/export{Or as Booking};//# sourceMappingURL=index.js.map
|
|
94
|
+
//# sourceMappingURL=index.js.map
|