@ulu/frontend
Version:
A versatile SCSS and JavaScript component library offering configurable, accessible components and flexible integration into any project, with SCSS modules suitable for modern JS frameworks.
45 lines • 172 kB
JavaScript
var Ss=Object.defineProperty;var Fi=n=>{throw TypeError(n)};var Os=(n,e,t)=>e in n?Ss(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var G=(n,e,t)=>Os(n,typeof e!="symbol"?e+"":e,t),dn=(n,e,t)=>e.has(n)||Fi("Cannot "+t);var W=(n,e,t)=>(dn(n,e,"read from private field"),t?t.call(n):e.get(n)),fe=(n,e,t)=>e.has(n)?Fi("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),Y=(n,e,t,r)=>(dn(n,e,"write to private field"),r?r.call(n,t):e.set(n,t),t),me=(n,e,t)=>(dn(n,e,"access private method"),t);const Gi={iconClassClose:"css-icon css-icon--close",iconClassDragX:"css-icon css-icon--drag-x",iconClassDragBoth:"css-icon css-icon--drag-both",iconClassPrevious:"css-icon css-icon--angle-left",iconClassNext:"css-icon css-icon--angle-right",cssvarPrefix:""};let xt={...Gi};function Cs(){return{...Gi}}function Xi(n){Object.assign(xt,n)}function Ts(){return{...xt}}function Zi(n){if(!xt.hasOwnProperty(n)){console.warn(`Attempted to access non-existent setting: ${n}`);return}return xt[n]}function As(n,e){xt[n]=e}function Se(n,e){return{toString(){const t=Zi(n);return e?e(t):t}}}const Ms=Object.freeze(Object.defineProperty({__proto__:null,getDefaultSettings:Cs,getSetting:Zi,getSettings:Ts,updateSetting:As,updateSettings:Xi,wrapSettingString:Se},Symbol.toStringTag,{value:"Module"}));function Yi(n,e,t,r){var o;return function(){var s=this,a=arguments,l=function(){o=null,n.apply(s,a)};clearTimeout(o),o=setTimeout(l,e)}}const Ps=/(\r\n|\n|\r)/gm,Is=/\s+/g,Ls=/^[{\[][\s\S]*[}\]]$/;function Ds(n,e={},t=null){try{return JSON.parse(n)}catch(r){return typeof t=="function"?t(r,n):console.warn("safeParse: Failed to parse JSON string:",n,"Error:",r),e}}function ks(){return typeof window<"u"&&typeof window.document<"u"}function Ji(n){return new DOMParser().parseFromString(n,"text/html").body.firstElementChild}function Rs(n,e,t={}){const r=n.dataset[e];return Ds(r,t,o=>{console.error(`Error getting JSON from dataset (${e}) -- "${r}"
`,n,o)})}function Fs(n,e){const t=n.dataset[e];return t&&Ls.test(t.trim())?Rs(n,e):t}function $s(n,e){const t=n.getBoundingClientRect();return e.clientY<t.top||e.clientY>t.top+t.height||e.clientX<t.left||e.clientX>t.left+t.width}function mi(n,e=document){return typeof n=="string"?e.querySelector(n):n instanceof Element?n:(console.warn("getElement: Invalid target type (expected String/Node)",n),null)}function Qi(n,e=document){return typeof n=="string"?[...e.querySelectorAll(n)]:n instanceof Element?[n]:Array.isArray(n)||n instanceof NodeList?[...n]:(console.warn("getElement: Invalid target type (expected String/Node/Array/Node List)",n),null)}function Ns(n){const t={...{scrollableChild:document.body,container:window,propertyElement:document.documentElement,propertyName:"--ulu-scrollbar-width"},...n},{scrollableChild:r,container:o,propertyElement:i,propertyName:s}=t,a=eo(r,o);i.style.setProperty(s,`${a}px`)}function eo(n=document.body,e=window){return e.innerWidth-n.clientWidth}function Hs({preventShift:n=!1,container:e=document.body}){const t=e.style.overflow,r=e.style.paddingRight;if(e.style.overflow="hidden",n){const o=eo();if(o>0){const i=parseInt(r||"0px",10);e.style.paddingRight=`${i+o}px`}}return()=>{e.style.overflow=t,e.style.paddingRight=r}}ks()&&(qs(),Bs());const $i={pageModified(n){n.dispatchEvent(Ze("pageModified"))},pageResized(n){n.dispatchEvent(Ze("pageResized"))},beforePrint(n){n.dispatchEvent(Ze("beforePrint"))},afterPrint(n){n.dispatchEvent(Ze("afterPrint"))}};function Dt(n,e){$i[n]?$i[n](e):console.warn(`Unable to dispatch site event: ${n} in context:`,e)}function oe(n){return"ulu:"+n}function Ze(n,e=null,t={bubbles:!0}){return new CustomEvent(oe(n),{detail:e,...t})}function qs(){window.addEventListener("resize",Yi(()=>Dt("pageResized",document),250))}function Bs(){window.addEventListener("beforeprint",()=>{Dt("beforePrint",document)}),window.addEventListener("afterprint",()=>{Dt("afterPrint",document)})}const zs=Object.freeze(Object.defineProperty({__proto__:null,createEvent:Ze,dispatch:Dt,getName:oe},Symbol.toStringTag,{value:"Module"}));function Ws(){Ns()}const js=Object.freeze(Object.defineProperty({__proto__:null,init:Ws},Symbol.toStringTag,{value:"Module"}));function bn(n,e){var t=n.indexOf(e);t>-1&&n.splice(t,1)}function Vs(n,e){return`--${n}-${e}`}const wt={debug:!1,warningsAlways:!0,errorsAlways:!0,outputContext:!1},Ks="console"in window;function bi(n){var e;return Ks&&wt.debug&&((n==null?void 0:n.debug)||((e=n==null?void 0:n.options)==null?void 0:e.debug)||n==null)}function Us(n){var e;return typeof n=="object"&&((e=n==null?void 0:n.constructor)==null?void 0:e.name)}function gi(n,e,t){const r=Us(e)||"Logger";console[n](r,...t),wt.outputContext&&console.log(`Context:
`,e)}function Gs(n){Object.assign(wt,n)}function ne(n,...e){bi(n)&&gi("log",n,e)}function gn(n,...e){(wt.warningsAlways||bi(n))&&gi("warn",n,e)}function Q(n,...e){(wt.errorsAlways||bi(n))&&gi("error",n,e)}const Xs=Object.freeze(Object.defineProperty({__proto__:null,log:ne,logError:Q,logWarning:gn,set:Gs},Symbol.toStringTag,{value:"Module"})),Zs=n=>Vs(n,"breakpoint");window.addEventListener(oe("pageResized"),()=>{kt.instances.forEach(n=>n.update())});const Ye=class Ye{constructor(e){Object.assign(this,Ye.defaults,e),this.active=null,this.previous=null,this.activeIndex=null,this.resizeDirection=null,this.previousIndex=null,this.breakpoints={},this.onChangeCallbacks=[],this.order.forEach(t=>this.breakpoints[t]=new Ys(t,this)),ne(this,this),this.update(),Ye.instances.push(this)}onChange(e){this.onChangeCallbacks.push(e)}removeOnChange(e){bn(this.onChangeCallbacks,e)}getBreakpointInPseudo(){return window.getComputedStyle(this.element,this.pseudoSelector).content.replace(/^"|"$/g,"")}getBreakpointInProperty(){return getComputedStyle(this.element).getPropertyValue(this.customProperty).trim()}getBreakpoint(){return this.valueFromPseudo?this.getBreakpointInPseudo():this.getBreakpointInProperty()}update(){const e=this.getBreakpoint();if(!e){Q(this,"Unable to get current breakpoint, maybe order is incorrect? Breakpoint check skipped!");return}if(e===this.active)return;this.previous=this.active,this.previousIndex=this.activeIndex;const t=this.order.indexOf(e);this.active=e,this.activeIndex=t;const r=this.at(this.active),o=h=>this.at(h),i=this.order.slice(t).map(o),s=this.order.slice(0,t).map(o),a=this.order.slice(0,t+1).map(o),l=this.order.slice(t+1).map(o),u=this.order.slice().map(o);u.splice(t,1),ne(this,"max:",i.map(h=>h.name).join()),ne(this,"min:",a.map(h=>h.name).join()),i.forEach(h=>h._setDirection("max",!0)),a.forEach(h=>h._setDirection("min",!0)),r._setDirection("only",!0),s.forEach(h=>h._setDirection("max",!1)),l.forEach(h=>h._setDirection("min",!1)),u.forEach(h=>h._setDirection("only",!1)),this.previousIndex!==null&&(this.resizeDirection=this.previousIndex<t?"up":"down"),this.onChangeCallbacks.forEach(h=>h(this))}at(e){const t=this.breakpoints[e];return e||Q(this,"Unable to find breakpoint for:",t),t}};G(Ye,"instances",[]),G(Ye,"defaults",{element:document==null?void 0:document.documentElement,valueFromPseudo:!1,customProperty:"--breakpoint",customProperty:Se("cssvarPrefix",Zs),pseudoSelector:":before",order:["none","small","medium","large"],debug:!1});let kt=Ye;class pn{constructor(e,t){this.direction=e,this.active=!1,this.on=[],this.off=[],this.breakpoint=t}change(e){this.active!==e&&(e?this._call(!0):this.active&&this._call(!1),this.active=e)}_call(e){(e?this.on:this.off).forEach(r=>r()),ne(this.breakpoint._manager,`Handlers called (${e?"on":"off"}): ${this.direction}`)}getHandlers(e){return typeof e!="object"?{on:e}:e}add(e){const t=this.getHandlers(e);t.on&&this.on.push(t.on),t.off&&this.off.push(t.off),this.active&&t.on&&(t.on(),ne(this.breakpoint._manager,`Handler called immediately: ${this.direction}`,t.on))}remove(e){const t=this.getHandlers(e);t.on&&bn(this.on,t.on),t.off&&bn(this.off,t.off)}}class Ys{constructor(e,t){this.directions={max:new pn("max",this),min:new pn("min",this),only:new pn("only",this)},this._manager=t,this.name=e}_setDirection(e,t){this.directions[e].change(t)}max(e){this.directions.max.add(e)}min(e){this.directions.min.add(e)}only(e){this.directions.only.add(e)}remove(e,t){(t?[t]:["max","min","only"]).forEach(o=>o.remove(e))}log(...e){e.unshift(`Breakpoint (${this.name}):`),this._manager.log.apply(this._manager,e)}}const Js=Object.freeze(Object.defineProperty({__proto__:null,BreakpointManager:kt},Symbol.toStringTag,{value:"Module"}));let Qs=0;function xi(){return`ulu-uid-${++Qs}`}function Rt(n){n.id||(n.id=xi())}const ea=Object.freeze(Object.defineProperty({__proto__:null,ensureId:Rt,newId:xi},Symbol.toStringTag,{value:"Module"})),Xt=class Xt{constructor(e,t){const{trigger:r,content:o}=e;if(!r||!o){Q(this,"missing required elements (trigger or content)");return}const i=Object.assign({},Xt.defaults,t);this.elements=e,this.options=i,this.isOpen=!1,this.handlers={},Rt(r),Rt(o),this.debugLog(this,this),i.selfManaged||this.attachHandlers(),this.setup()}attachHandlers(){const{trigger:e,content:t}=this.elements,{focusoutCloses:r}=this.options;this.clickHandler=o=>{this.onClick(o)},this.focusoutHandler=o=>{r&&document.addEventListener("focusin",()=>{t.contains(document.activeElement)||this.close(o)},{once:!0})},e.addEventListener("click",this.clickHandler),t.addEventListener("focusout",this.focusoutHandler)}removeHandlers(){const{trigger:e,content:t}=this.elements;e.removeEventListener("click",this.clickHandler),t.removeEventListener("focusout",this.focusoutHandler)}onClick(e){this.toggle(e)}destroy(){this.removeHandlers(),this.destroyTemporaryHandlers()}debugLog(...e){this.options.debug&&ne(this,...e)}setup(){const{trigger:e,content:t}=this.elements,{startOpen:r}=this.options;e.setAttribute("role","button"),e.setAttribute("aria-controls",t.id),t.setAttribute("aria-labelledby",e.id),this.setState(r)}createEvent(e,t){return new CustomEvent(oe("collapsible:"+e),{detail:t})}setState(e,t){const r={collapsible:this,isOpen:e,event:t};this.debugLog(this,"Set state",r);const{trigger:o,content:i}=this.elements,{openClass:s}=this.options,a=l=>l.classList[e?"add":"remove"](s);o.setAttribute("aria-expanded",e?"true":"false"),a(o),a(i),this.isOpen=e,this.options.onChange(r),o.dispatchEvent(this.createEvent("change",r)),e?this.setupTemporaryHandlers():this.destroyTemporaryHandlers()}setupTemporaryHandlers(){const{content:e,trigger:t}=this.elements,{clickOutsideCloses:r,escapeCloses:o}=this.options,i=a=>{const{target:l}=a,u=t.contains(l),h=e.contains(l);r&&!u&&!h&&this.close(a)},s=a=>{o&&a.key==="Escape"&&this.close(a)};document.addEventListener("click",i),document.addEventListener("keydown",s),this.handlers.onDocumentClick=i,this.handlers.onDocumentKeydown=s}destroyTemporaryHandlers(){const{onDocumentClick:e,onDocumentKeydown:t}=this.handlers;e&&document.removeEventListener("click",e),e&&document.removeEventListener("keydown",t)}open(e){this.setState(!0,e)}close(e){this.setState(!1,e)}toggle(e){this.setState(!this.isOpen,e)}};G(Xt,"defaults",{clickOutsideCloses:!1,focusoutCloses:!1,escapeCloses:!1,selfManaged:!1,startOpen:!1,openClass:"is-active",debug:!0,onChange(e){}});let Ft=Xt;const ta=Object.freeze(Object.defineProperty({__proto__:null,Collapsible:Ft},Symbol.toStringTag,{value:"Module"}));function Qt(n){return e=>n.every(t=>Object.prototype.hasOwnProperty.call(e,t))}function Pt(n){return n.replace(Ps,"").replace(Is," ").trim()}function na(n){return n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function to(n){return na(n.replace(/^data-/,""))}function no(n,e={columnFirst:"position-column-first",columnLast:"position-column-last",rowFirst:"position-row-first",rowLast:"position-row-last"}){const t=[...n.children],r=[];let o;t.forEach(i=>{const s=i.getBoundingClientRect().y;o!==s&&r.push([]),r[r.length-1].push(i),o=s,i.classList.remove(...Object.values(e))}),r.forEach((i,s)=>{s===0&&i.forEach(a=>a.classList.add(e.rowFirst)),s==r.length-1&&i.forEach(a=>a.classList.add(e.rowLast)),i.forEach((a,l)=>{l===0&&a.classList.add(e.columnFirst),l==i.length-1&&a.classList.add(e.columnLast)})})}function $t(n){return typeof n=="string"?n.split(" ").filter(e=>e!==""):Array.isArray(n)?n:n?(console.warn("resolveClassArray: Invalid class input type.",n),[]):[]}const ra=Object.freeze(Object.defineProperty({__proto__:null,dataAttributeToDatasetKey:to,resolveClasses:$t,setPositionClasses:no},Symbol.toStringTag,{value:"Module"})),Ee=class Ee{constructor(e){if(!Ee.hasRequiredOptions(e))throw new Error(`Missing a required options: ${Ee.requiredOptions.join(", ")}`);this.options=Object.assign({},Ee.defaults,e),this.logTitle=`ULU: ${this.options.type}:
`}init(e){var t;this.setupElements(e),(t=e.events)!=null&&t.length&&e.events.forEach(r=>{document.addEventListener(oe(r),()=>this.setupElements(e))})}setupElements(e){const{setup:t,key:r,withData:o,context:i}=e;this.queryAllInitial(r,o,i).forEach(a=>t(a,this))}getAttribute(e){const{baseAttribute:t}=this.options;return e?`${t}-${e}`:`${t}`}attributeSelector(e){return`[${this.getAttribute(e)}]`}attributeSelectorInitial(e){return`${this.attributeSelector(e)}:not([${this.getAttribute("init")}])`}queryAllInitial(e,t,r=document){return[...r.querySelectorAll(this.attributeSelectorInitial(e))].map(i=>({element:i,data:t?this.getData(i,e):null,initialize:()=>this.initializeElement(i)}))}initializeElement(e){e.setAttribute(this.getAttribute("init"),"")}getData(e,t){const r=to(this.getAttribute(t));return Fs(e,r)}log(...e){console.log(this.logTitle,...e)}warn(...e){console.warn(this.logTitle,...e)}logError(...e){console.error(this.logTitle,...e)}};G(Ee,"defaults",{type:null,baseAttribute:null}),G(Ee,"requiredOptions",["type","baseAttribute"]),G(Ee,"hasRequiredOptions",Qt(Ee.requiredOptions));let ee=Ee;var nt,rt,de,ie,it,ot,Le,st,at,re,It,xn,yn,_n;const Zt=class Zt{constructor(e,t,r){fe(this,re);fe(this,nt);fe(this,rt);fe(this,de);fe(this,ie);fe(this,it);fe(this,ot);fe(this,Le);fe(this,st);fe(this,at);if(!t||!e){Q(this,"Missing required elements: control, container");return}const o=Object.assign({},Zt.defaults,r);this.options=o,this.container=e,this.control=t,this.debug=o.debug;const i=["left","right"],s=["top","bottom"],{fromX:a,fromY:l}=o;if(!i.includes(a)&&a!==null){Q(this,`Invalid fromX: ${a} (left|right|null)`);return}if(!s.includes(l)&&l!==null){Q(this,`Invalid fromY: ${l} (top|bottom|null)`);return}if(!a&&!l){Q(this,"Invalid fromX/fromY, failed to setup resizer (at least one of fromX or fromY must be set)");return}this.resizeHorizontal=o.fromX!==null,this.resizeVertical=o.fromY!==null,o.manageEvents&&(Y(this,nt,this.onPointerdown.bind(this)),Y(this,rt,this.onKeydown.bind(this)),o.enablePointerResizing&&t.addEventListener("pointerdown",W(this,nt)),o.enableKeyboardResizing&&t.addEventListener("keydown",W(this,rt))),me(this,re,It).call(this),o.manageAriaLabel&&t.setAttribute("aria-label",this.getAriaLabel())}destroy(){const{control:e,options:t}=this;t.manageEvents&&(t.enablePointerResizing&&e.removeEventListener("pointerdown",W(this,nt)),t.enableKeyboardResizing&&e.removeEventListener("keydown",W(this,rt))),W(this,de)&&clearTimeout(W(this,de)),me(this,re,It).call(this),t.manageAriaLabel&&e.removeAttribute("aria-label"),ne(this,"Resizer destroyed.")}onPointerdown(e){if(!this.options.enablePointerResizing){ne(this,"Pointer resizing disabled. Ignoring pointerdown event.");return}e.preventDefault();const t=document.documentElement;Y(this,st,e.clientX),Y(this,at,e.clientY),me(this,re,xn).call(this,{inputType:"pointer",startX:e.clientX,startY:e.clientY,pointerId:e.pointerId}),this.control.setPointerCapture(e.pointerId);const r=i=>{const s=i.clientX-W(this,st),a=i.clientY-W(this,at);me(this,re,_n).call(this,s,a,i)},o=i=>{t.removeEventListener("pointermove",r,!1),t.removeEventListener("pointerup",o,{capture:!0,once:!0}),this.control.hasPointerCapture(i.pointerId)&&this.control.releasePointerCapture(i.pointerId),me(this,re,yn).call(this)};t.addEventListener("pointermove",r,!1),t.addEventListener("pointerup",o,{capture:!0,once:!0})}onKeydown(e){if(!this.options.enableKeyboardResizing){ne(this,"Keyboard resizing disabled. Ignoring keydown event.");return}const{key:t}=e,{keyboardStep:r,keyboardDebounceTime:o}=this.options;let i=0,s=0,a=!1;this.resizeHorizontal&&(t==="ArrowLeft"?(i=-r,a=!0):t==="ArrowRight"&&(i=r,a=!0)),this.resizeVertical&&(t==="ArrowUp"?(s=-r,a=!0):t==="ArrowDown"&&(s=r,a=!0)),a&&(e.preventDefault(),e.stopPropagation(),(!W(this,Le)||W(this,de)===null)&&me(this,re,xn).call(this,{inputType:"keyboard",keyboardKey:t}),Y(this,it,W(this,it)+i),Y(this,ot,W(this,ot)+s),me(this,re,_n).call(this,W(this,it),W(this,ot),e),W(this,de)&&clearTimeout(W(this,de)),Y(this,de,setTimeout(()=>{me(this,re,yn).call(this),Y(this,de,null)},o)))}getAriaLabel(){const{fromY:e,fromX:t}=this.options,r=[e,t].filter(o=>o);return r.length===0?"Resize control":`Resize from ${r.join(" ")} edge`}dispatchEvent(e,t={}){this.container.dispatchEvent(Ze(e,t))}};nt=new WeakMap,rt=new WeakMap,de=new WeakMap,ie=new WeakMap,it=new WeakMap,ot=new WeakMap,Le=new WeakMap,st=new WeakMap,at=new WeakMap,re=new WeakSet,It=function(){Y(this,de,null),Y(this,ie,{width:0,height:0}),Y(this,it,0),Y(this,ot,0),Y(this,Le,!1),Y(this,st,0),Y(this,at,0)},xn=function(e){const{container:t,options:r}=this;if(W(this,Le)){r.overrideMaxDimensions&&(this.resizeHorizontal&&(t.style.maxWidth="none"),this.resizeVertical&&(t.style.maxHeight="none"));return}const i=document.defaultView.getComputedStyle(t);W(this,ie).width=parseInt(i.width,10),W(this,ie).height=parseInt(i.height,10),r.overrideMaxDimensions&&(this.resizeHorizontal&&(t.style.maxWidth="none"),this.resizeVertical&&(t.style.maxHeight="none")),Y(this,Le,!0),this.dispatchEvent("resizer:start",e),ne(this,"Resize started.",{initialWidth:W(this,ie).width,initialHeight:W(this,ie).height,...e})},yn=function(){W(this,Le)&&(this.dispatchEvent("resizer:end"),me(this,re,It).call(this),ne(this,"Resize ended."))},_n=function(e,t,r){let o=W(this,ie).width,i=W(this,ie).height;const{fromX:s,fromY:a,multiplier:l}=this.options;this.resizeHorizontal&&(s==="right"?o=W(this,ie).width+e*l:s==="left"&&(o=W(this,ie).width-e*l),this.container.style.width=`${Math.max(0,o)}px`),this.resizeVertical&&(a==="bottom"?i=W(this,ie).height+t*l:a==="top"&&(i=W(this,ie).height-t*l),this.container.style.height=`${Math.max(0,i)}px`);const u={newWidth:o,newHeight:i,totalDeltaX:e,totalDeltaY:t,event:r};this.dispatchEvent("resizer:update",u),ne(this,"Resizing update.",u)},G(Zt,"defaults",{debug:!1,multiplier:1,overrideMaxDimensions:!1,fromX:null,fromY:null,keyboardStep:10,keyboardDebounceTime:200,manageEvents:!0,manageAriaLabel:!1,enablePointerResizing:!0,enableKeyboardResizing:!0});let Nt=Zt;const ia=Object.freeze(Object.defineProperty({__proto__:null,Resizer:Nt},Symbol.toStringTag,{value:"Module"})),oa=[".youtube-embedded-video",'iframe[title*="YouTube video player"]','iframe[src*="youtube.com/embed"]'];function ro(n=document){oo(n).forEach(t=>{try{t.contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}',"*")}catch(r){console.error(r)}})}function io(n=document){oo(n).forEach(t=>{const{src:r}=t;r&&(t.src=r.split("?")[0]+"?rel=0&enablejsapi=1")})}function oo(n){return n.querySelectorAll(oa.join(", "))}const sa=Object.freeze(Object.defineProperty({__proto__:null,pauseVideos:ro,prepVideos:io},Symbol.toStringTag,{value:"Module"})),yi="data-ulu-dialog",lt=new ee({type:"dialog",baseAttribute:yi}),so=lt.getAttribute("close"),_i={nonModal:!1,documentEnd:!1,clickOutsideCloses:!0,pauseVideos:!0,preventScroll:!0,preventScrollShift:!0};let Ht={..._i};function aa(n){Ht=Object.assign({},Ht,n)}function la(){lt.init({events:["pageModified"],withData:!0,setup({element:n,initialize:e,data:t}){lo(n,t),e()}}),lt.init({key:"trigger",events:["pageModified"],withData:!0,setup({element:n,initialize:e,data:t}){ao(n,t),e()}})}function ao(n,e){n.addEventListener("click",t);function t(r){var a;r.target.closest("a")&&r.preventDefault();const i=document.getElementById(e);if(!i){console.error("Could not locate dialog (id)",e);return}if(((a=i==null?void 0:i.tagName)==null?void 0:a.toLowerCase())!=="dialog"){console.error("Attempted to trigger non <dialog> element. Did you mean to use modal builder?");return}const s=uo(i);i[s.nonModal?"show":"showModal"]()}}function lo(n,e){const t=Object.assign({},Ht,e),r=document.body,{preventScrollShift:o}=t;let i;if(n.addEventListener(oe("resizer:start"),a),n.addEventListener(oe("resizer:end"),l),n.addEventListener("click",s),t.documentEnd&&r.appendChild(n),t.pauseVideos&&ua(n),!t.nonModal&&t.preventScroll){let u;n.addEventListener("toggle",h=>{h.newState==="open"?u=Hs({preventShift:o}):u&&u()})}function s(u){const{target:h}=u,d=h===n,v=h.closest(lt.attributeSelector("close"));(!i&&t.clickOutsideCloses&&d&&$s(n,u)||v)&&(t.pauseVideos&&ca(n),n.close())}function a(u){i=u.pointerId}function l(u){i===u.pointerId&&setTimeout(()=>{i=null},0)}}function uo(n){return Object.assign({},Ht,lt.getData(n))}function ua(n){io(n)}function ca(n){ro(n),n.querySelectorAll("video").forEach(t=>t.pause())}const fa=Object.freeze(Object.defineProperty({__proto__:null,baseAttribute:yi,closeAttribute:so,defaults:_i,getDialogOptions:uo,init:la,initializer:lt,setDefaults:aa,setupDialog:lo,setupTrigger:ao},Symbol.toStringTag,{value:"Module"})),qe=new ee({type:"modal-builder",baseAttribute:"data-ulu-modal-builder"}),co={title:null,titleIcon:null,titleClass:"",labelledby:null,describedby:null,nonModal:!1,documentEnd:!0,allowResize:!1,position:"center",bodyFills:!1,noBackdrop:!1,size:"default",print:!1,noMinHeight:!1,class:"",baseClass:"modal",footerElement:null,footerHtml:null,classCloseIcon:Se("iconClassClose"),classResizerIcon:Se("iconClassDragX"),classResizerIconBoth:Se("iconClassDragBoth"),debug:!1,templateCloseIcon(n){const{baseClass:e,classCloseIcon:t}=n;return`<span class="${e}__close-icon ${t}" aria-hidden="true"></span>`},templateResizerIcon(n){const{baseClass:e,classResizerIcon:t,classResizerIconBoth:r}=n,o=n.position==="center"?r:t;return`<span class="${e}__resizer-icon ${o}" aria-hidden="true"></span>`},template(n,e){const{baseClass:t,describedby:r,footerHtml:o}=e,i=[t,`${t}--${e.position}`,`${t}--${e.size}`,`${t}--${e.allowResize?"resize":"no-resize"}`,...e.title?[]:[`${t}--no-header`],...e.bodyFills?[`${t}--body-fills`]:[],...e.noBackdrop?[`${t}--no-backdrop`]:[],...e.noMinHeight?[`${t}--no-min-height`]:[],...e.class?[e.class]:[]],s=e.title?`${n}--title`:e.labelledby;return`
<dialog
id="${n}"
class="${i.join(" ")}"
${s?`aria-labelledby="${s}"`:""}
${r?`aria-describedby="${r}"`:""}
>
${e.title?`
<header class="${t}__header">
<h2 id="${s}" class="${t}__title ${e.titleClass}">
${e.titleIcon?`<span class="${t}__title-icon ${e.titleIcon}" aria-hidden="true"></span>`:""}
<span class="${t}__title-text">${e.title}</span>
</h2>
<button class="${t}__close" aria-label="Close modal" ${so} autofocus>
${e.templateCloseIcon(e)}
</button>
</header>
`:""}
<div class="${t}__body" ${qe.getAttribute("body")}></div>
${o?`<div class="${t}__footer">${o}</div>`:""}
${e.allowResize?`<button class="${t}__resizer" type="button" ${qe.getAttribute("resizer")}>
${e.templateResizerIcon(e)}
</button>`:""}
</dialog>
`}};let wn={...co};function da(n){wn=Object.assign({},wn,n)}function pa(){qe.init({withData:!0,events:["pageModified"],setup({element:n,data:e}){fo(n,e)}})}function fo(n,e){const t=Object.assign({},wn,e),{position:r}=t;if(t.debug&&qe.log(t,n),!n.id)throw new Error("Missing ID on modal");const o=t.template(n.id,t),i=Ji(o.trim()),s=f=>i.querySelector(qe.attributeSelector(f)),a=s("body"),l=s("resizer"),u=va(t);if(n.removeAttribute("id"),n.removeAttribute("hidden"),n.removeAttribute(qe.getAttribute()),n.parentNode.replaceChild(i,n),a.appendChild(n),i.setAttribute(yi,JSON.stringify(u)),t.footerElement){const f=mi(t.footerElement);f&&(f.classList.add(`${t.baseClass}__footer`),a.after(f))}let h;const d=["left","right","center"],v=r==="center",m=r==="right";if(t.allowResize)if(d.includes(r)){const f=v?{fromX:"right",fromY:"bottom",multiplier:2}:{fromX:m?"left":"right"};h=new Nt(i,l,f)}else console.warn(`${r} is not supported for resizing`);if(t.print){let f;document.addEventListener(oe("beforePrint"),()=>{f=n.cloneNode(!0),i.after(f)}),document.addEventListener(oe("afterPrint"),()=>{f.remove()})}return{modal:i,resizer:h}}function va(n){return Object.keys(_i).reduce((e,t)=>(t in n&&(e[t]=n[t]),e),{})}const ha=Object.freeze(Object.defineProperty({__proto__:null,buildModal:fo,defaults:co,init:pa,initializer:qe,setDefaults:da},Symbol.toStringTag,{value:"Module"})),Lt=new ee({type:"flipcard",baseAttribute:"data-ulu-flipcard"});function ma(){Lt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){const r=Object.assign({},e),o=n.querySelector(Lt.attributeSelector("front")),i=n.querySelector(Lt.attributeSelector("back"));new qt(n,o,i,r),t()}})}const He=class He{constructor(e,t,r,o){r||Q(this,"Missing an element (container, front, back)"),this.options=Object.assign({},He.defaults,o);const{namespace:i}=this.options;He.instances.push(this),this.elements={container:e,front:t,back:r},this.isOpen=!1,this.uid=`${i}-id-${He.instances.length}`,this.stateAttr=`data-${i}-state`.toLowerCase(),this.setup(),this.setVisibility(!1),ne(this,this)}toggle(){this.setVisibility(!this.isOpen)}setup(){const{uid:e}=this,{namespace:t,proxyClick:r}=this.options,{container:o,front:i,back:s}=this.elements,a=this.elements.control=document.createElement("button");a.classList.add(this.getClass("control-button")),a.setAttribute("type","button"),a.innerHTML=this.createControlContent(),a.style.gridArea=t,a.style.zIndex="-1",a.addEventListener("focusin",()=>{a.style.zIndex="20"}),a.addEventListener("focusout",()=>{a.style.zIndex="-1"}),a.addEventListener("click",this.toggle.bind(this)),s.parentNode.insertBefore(a,s),o.classList.add(this.options.namespace),o.setAttribute("style",Pt(this.containerCss())),r&&o.addEventListener("click",this.onProxyClick.bind(this)),i.style.gridArea=t,s.style.gridArea=t,a.id=`${e}-control`,a.setAttribute("aria-controls",s.id),a.setAttribute("aria-expanded","false"),s.id=`${e}-back`,s.setAttribute("aria-labelledby",a.id),s.setAttribute("aria-hidden","true")}onProxyClick({target:e}){const{exclude:t,allowSelection:r,selectionMin:o}=this.options.proxyClick,i=window.getSelection();t&&!e.matches(t)&&(!r||i.toString().length<o)&&this.toggle()}getClass(e){const{namespace:t}=this.options;return e?`${t}__${e}`:t}createControlContent(){return`
<span class="hidden-visually">Show More Information</span>
`}setVisibility(e){const{back:t,container:r,control:o}=this.elements,i=e?"open":"closed";t.style.zIndex=e?"10":"1",t.style.visibility=e?"visible":"hidden",r.setAttribute(this.stateAttr,i),t.setAttribute("aria-hidden",e?"false":"true"),o.setAttribute("aria-expanded",e?"true":"false"),this.isOpen=e}containerCss(){return`
display: -ms-grid;
display: grid;
position: relative;
-ms-grid-columns: 1fr;
grid-template-columns: 1fr;
justify-items: stretch;
grid-template-areas: "${this.options.namespace}";
cursor: pointer;
`}panelCss(e=1){return`
grid-area: ${this.options.namespace};
z-index: ${e}
`}};G(He,"instances",[]),G(He,"defaults",{namespace:"Flipcard",proxyClick:{allowSelection:!0,selectionMin:10,exclude:"a, input, textarea, button"}});let qt=He;const ba=Object.freeze(Object.defineProperty({__proto__:null,Flipcard:qt,init:ma,initializer:Lt},Symbol.toStringTag,{value:"Module"})),po=new ee({type:"grid",baseAttribute:"data-grid"});function ga(n){po.init({events:["pageModified","pageResized"],setup({element:e,initialize:t}){no(e,n),t()}})}const xa=Object.freeze(Object.defineProperty({__proto__:null,init:ga,initializer:po},Symbol.toStringTag,{value:"Module"}));function vo(){return function(e,t){const r=t==="next",{track:o}=e.elements;if(!o.children)return 400;const s=window.getComputedStyle(o).getPropertyValue("scroll-padding-left").replace("auto","0px"),a=parseInt(s,10),{scrollLeft:l,offsetWidth:u}=o,h=l+u,d=[...o.children].map(m=>{const{offsetLeft:f,offsetWidth:p}=m;return{element:m,offsetLeft:f,offsetRight:f+p}});let v;if(r)v=d.find(m=>m.offsetRight>=h);else{let m=d.findLastIndex(f=>f.offsetLeft<=l);if(m){let f=d[m];v=d.slice(0,m+1).find(b=>b.offsetLeft+a+u>=f.offsetRight)}}return v?r?v.offsetLeft:v.offsetLeft+a:400}}const ya=Object.freeze(Object.defineProperty({__proto__:null,createPager:vo},Symbol.toStringTag,{value:"Module"})),_a=["track","controls"],gt=class gt{constructor(e,t){this.options=Object.assign({},gt.defaults,t),Qt(_a)||Q(this,"Missing a required Element"),console.log(e),this.elements={...e,...this.createControls(e.controls)},this.nextEnabled=!0,this.previousEnabled=!0,this.scrollHandler=r=>this.onScroll(r),this.elements.track.addEventListener("scroll",this.scrollHandler,{passive:!0}),this.checkOverflow(),this.onScroll()}checkOverflow(){const{track:e}=this.elements;this.hasOverflow=e.scrollWidth>e.clientWidth}createControls(e){const t=document.createElement("ul"),r=document.createElement("li"),o=document.createElement("li"),i=this.createControlButton("previous"),s=this.createControlButton("next"),a=this.getClass("controls-item");return o.classList.add(a),o.classList.add(a+"--next"),r.classList.add(a),r.classList.add(a+"--previous"),t.classList.add(this.getClass("controls")),r.appendChild(i),o.appendChild(s),t.appendChild(r),t.appendChild(o),i.addEventListener("click",this.previous.bind(this)),s.addEventListener("click",this.next.bind(this)),e.appendChild(t),{controls:t,previousItem:r,nextItem:o,previous:i,next:s}}createControlButton(e){const t=document.createElement("button");return t.classList.add(this.getClass("control-button")),t.classList.add(this.getClass(`control-button--${e}`)),t.classList.add(...this.options.buttonClasses),t.setAttribute("type","button"),t.innerHTML=this.getControlContent(e),t}getControlContent(e){const t=this.options[e==="next"?"iconClassNext":"iconClassPrevious"];return`
<span class="hidden-visually">${e}</span>
<span class="${t}" aria-hidden="true"></span>
`}onScroll(e){this.hasOverflow&&this.onScrollHorizontal()}onScrollHorizontal(){const{nextEnabled:e,previousEnabled:t}=this,{track:r}=this.elements,{offsetStart:o,offsetEnd:i}=this.options,{scrollWidth:s,clientWidth:a,scrollLeft:l}=r,u=l<=o,h=s-l-i<=a;u&&t?this.setControlState("previous",!1):!u&&!t&&this.setControlState("previous",!0),h&&e?this.setControlState("next",!1):!h&&!e&&this.setControlState("next",!0)}setControlState(e,t){const r=e==="next",{next:o,nextItem:i,previous:s,previousItem:a}=this.elements,l=r?i:a,u=r?o:s,h=t?"remove":"add";l.classList[h](this.getClass("controls-item--disabled")),u.classList[t?"remove":"add"](this.getClass("control--disabled")),t?u.removeAttribute("disabled"):u.setAttribute("disabled",""),this[r?"nextEnabled":"previousEnabled"]=t}resolveAmount(e){const t=e==="next",{amount:r}=this.options,{scrollLeft:o,offsetWidth:i}=this.elements.track;return r==="auto"?t?o+i:o-i:typeof r=="function"?r(this,e):typeof r=="number"?t?o+r:o-r:(Q("Unable to resolve amount for scroll"),500)}next(){this.elements.track.scrollTo({top:0,left:this.resolveAmount("next"),behavior:"smooth"})}previous(){this.elements.track.scrollTo({top:0,left:this.resolveAmount("previous"),behavior:"smooth"})}getClass(e){const{namespace:t}=this.options;return`${t}__${e}`}};G(gt,"instances",[]),G(gt,"defaults",{namespace:"OverflowScroller",events:{},horizontal:!0,offsetStart:100,offsetEnd:100,amount:"auto",buttonClasses:["button","button--icon"],iconClassPrevious:Se("iconClassPrevious"),iconClassNext:Se("iconClassNext")});let Bt=gt;const wa=Object.freeze(Object.defineProperty({__proto__:null,OverflowScroller:Bt},Symbol.toStringTag,{value:"Module"})),Oe=Math.min,be=Math.max,zt=Math.round,Mt=Math.floor,De=n=>({x:n,y:n}),Ea={left:"right",right:"left",bottom:"top",top:"bottom"},Sa={start:"end",end:"start"};function En(n,e,t){return be(n,Oe(e,t))}function ft(n,e){return typeof n=="function"?n(e):n}function Ce(n){return n.split("-")[0]}function Et(n){return n.split("-")[1]}function ho(n){return n==="x"?"y":"x"}function wi(n){return n==="y"?"height":"width"}function St(n){return["top","bottom"].includes(Ce(n))?"y":"x"}function Ei(n){return ho(St(n))}function Oa(n,e,t){t===void 0&&(t=!1);const r=Et(n),o=Ei(n),i=wi(o);let s=o==="x"?r===(t?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[i]>e.floating[i]&&(s=Wt(s)),[s,Wt(s)]}function Ca(n){const e=Wt(n);return[Sn(n),e,Sn(e)]}function Sn(n){return n.replace(/start|end/g,e=>Sa[e])}function Ta(n,e,t){const r=["left","right"],o=["right","left"],i=["top","bottom"],s=["bottom","top"];switch(n){case"top":case"bottom":return t?e?o:r:e?r:o;case"left":case"right":return e?i:s;default:return[]}}function Aa(n,e,t,r){const o=Et(n);let i=Ta(Ce(n),t==="start",r);return o&&(i=i.map(s=>s+"-"+o),e&&(i=i.concat(i.map(Sn)))),i}function Wt(n){return n.replace(/left|right|bottom|top/g,e=>Ea[e])}function Ma(n){return{top:0,right:0,bottom:0,left:0,...n}}function Si(n){return typeof n!="number"?Ma(n):{top:n,right:n,bottom:n,left:n}}function ut(n){const{x:e,y:t,width:r,height:o}=n;return{width:r,height:o,top:t,left:e,right:e+r,bottom:t+o,x:e,y:t}}function Ni(n,e,t){let{reference:r,floating:o}=n;const i=St(e),s=Ei(e),a=wi(s),l=Ce(e),u=i==="y",h=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,v=r[a]/2-o[a]/2;let m;switch(l){case"top":m={x:h,y:r.y-o.height};break;case"bottom":m={x:h,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:d};break;case"left":m={x:r.x-o.width,y:d};break;default:m={x:r.x,y:r.y}}switch(Et(e)){case"start":m[s]-=v*(t&&u?-1:1);break;case"end":m[s]+=v*(t&&u?-1:1);break}return m}const Pa=async(n,e,t)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=t,a=i.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(e));let u=await s.getElementRects({reference:n,floating:e,strategy:o}),{x:h,y:d}=Ni(u,r,l),v=r,m={},f=0;for(let p=0;p<a.length;p++){const{name:b,fn:_}=a[p],{x:g,y:x,data:y,reset:O}=await _({x:h,y:d,initialPlacement:r,placement:v,strategy:o,middlewareData:m,rects:u,platform:s,elements:{reference:n,floating:e}});h=g??h,d=x??d,m={...m,[b]:{...m[b],...y}},O&&f<=50&&(f++,typeof O=="object"&&(O.placement&&(v=O.placement),O.rects&&(u=O.rects===!0?await s.getElementRects({reference:n,floating:e,strategy:o}):O.rects),{x:h,y:d}=Ni(u,v,l)),p=-1)}return{x:h,y:d,placement:v,strategy:o,middlewareData:m}};async function mo(n,e){var t;e===void 0&&(e={});const{x:r,y:o,platform:i,rects:s,elements:a,strategy:l}=n,{boundary:u="clippingAncestors",rootBoundary:h="viewport",elementContext:d="floating",altBoundary:v=!1,padding:m=0}=ft(e,n),f=Si(m),b=a[v?d==="floating"?"reference":"floating":d],_=ut(await i.getClippingRect({element:(t=await(i.isElement==null?void 0:i.isElement(b)))==null||t?b:b.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:u,rootBoundary:h,strategy:l})),g=d==="floating"?{x:r,y:o,width:s.floating.width,height:s.floating.height}:s.reference,x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),y=await(i.isElement==null?void 0:i.isElement(x))?await(i.getScale==null?void 0:i.getScale(x))||{x:1,y:1}:{x:1,y:1},O=ut(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:g,offsetParent:x,strategy:l}):g);return{top:(_.top-O.top+f.top)/y.y,bottom:(O.bottom-_.bottom+f.bottom)/y.y,left:(_.left-O.left+f.left)/y.x,right:(O.right-_.right+f.right)/y.x}}const Ia=n=>({name:"arrow",options:n,async fn(e){const{x:t,y:r,placement:o,rects:i,platform:s,elements:a,middlewareData:l}=e,{element:u,padding:h=0}=ft(n,e)||{};if(u==null)return{};const d=Si(h),v={x:t,y:r},m=Ei(o),f=wi(m),p=await s.getDimensions(u),b=m==="y",_=b?"top":"left",g=b?"bottom":"right",x=b?"clientHeight":"clientWidth",y=i.reference[f]+i.reference[m]-v[m]-i.floating[f],O=v[m]-i.reference[m],A=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let P=A?A[x]:0;(!P||!await(s.isElement==null?void 0:s.isElement(A)))&&(P=a.floating[x]||i.floating[f]);const T=y/2-O/2,E=P/2-p[f]/2-1,c=Oe(d[_],E),w=Oe(d[g],E),C=c,M=P-p[f]-w,k=P/2-p[f]/2+T,I=En(C,k,M),F=!l.arrow&&Et(o)!=null&&k!==I&&i.reference[f]/2-(k<C?c:w)-p[f]/2<0,z=F?k<C?k-C:k-M:0;return{[m]:v[m]+z,data:{[m]:I,centerOffset:k-I-z,...F&&{alignmentOffset:z}},reset:F}}}),La=function(n){return n===void 0&&(n={}),{name:"flip",options:n,async fn(e){var t,r;const{placement:o,middlewareData:i,rects:s,initialPlacement:a,platform:l,elements:u}=e,{mainAxis:h=!0,crossAxis:d=!0,fallbackPlacements:v,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:p=!0,...b}=ft(n,e);if((t=i.arrow)!=null&&t.alignmentOffset)return{};const _=Ce(o),g=Ce(a)===a,x=await(l.isRTL==null?void 0:l.isRTL(u.floating)),y=v||(g||!p?[Wt(a)]:Ca(a));!v&&f!=="none"&&y.push(...Aa(a,p,f,x));const O=[a,...y],A=await mo(e,b),P=[];let T=((r=i.flip)==null?void 0:r.overflows)||[];if(h&&P.push(A[_]),d){const C=Oa(o,s,x);P.push(A[C[0]],A[C[1]])}if(T=[...T,{placement:o,overflows:P}],!P.every(C=>C<=0)){var E,c;const C=(((E=i.flip)==null?void 0:E.index)||0)+1,M=O[C];if(M)return{data:{index:C,overflows:T},reset:{placement:M}};let k=(c=T.filter(I=>I.overflows[0]<=0).sort((I,F)=>I.overflows[1]-F.overflows[1])[0])==null?void 0:c.placement;if(!k)switch(m){case"bestFit":{var w;const I=(w=T.map(F=>[F.placement,F.overflows.filter(z=>z>0).reduce((z,K)=>z+K,0)]).sort((F,z)=>F[1]-z[1])[0])==null?void 0:w[0];I&&(k=I);break}case"initialPlacement":k=a;break}if(o!==k)return{reset:{placement:k}}}return{}}}};function bo(n){const e=Oe(...n.map(i=>i.left)),t=Oe(...n.map(i=>i.top)),r=be(...n.map(i=>i.right)),o=be(...n.map(i=>i.bottom));return{x:e,y:t,width:r-e,height:o-t}}function Da(n){const e=n.slice().sort((o,i)=>o.y-i.y),t=[];let r=null;for(let o=0;o<e.length;o++){const i=e[o];!r||i.y-r.y>r.height/2?t.push([i]):t[t.length-1].push(i),r=i}return t.map(o=>ut(bo(o)))}const ka=function(n){return n===void 0&&(n={}),{name:"inline",options:n,async fn(e){const{placement:t,elements:r,rects:o,platform:i,strategy:s}=e,{padding:a=2,x:l,y:u}=ft(n,e),h=Array.from(await(i.getClientRects==null?void 0:i.getClientRects(r.reference))||[]),d=Da(h),v=ut(bo(h)),m=Si(a);function f(){if(d.length===2&&d[0].left>d[1].right&&l!=null&&u!=null)return d.find(b=>l>b.left-m.left&&l<b.right+m.right&&u>b.top-m.top&&u<b.bottom+m.bottom)||v;if(d.length>=2){if(St(t)==="y"){const c=d[0],w=d[d.length-1],C=Ce(t)==="top",M=c.top,k=w.bottom,I=C?c.left:w.left,F=C?c.right:w.right,z=F-I,K=k-M;return{top:M,bottom:k,left:I,right:F,width:z,height:K,x:I,y:M}}const b=Ce(t)==="left",_=be(...d.map(c=>c.right)),g=Oe(...d.map(c=>c.left)),x=d.filter(c=>b?c.left===g:c.right===_),y=x[0].top,O=x[x.length-1].bottom,A=g,P=_,T=P-A,E=O-y;return{top:y,bottom:O,left:A,right:P,width:T,height:E,x:A,y}}return v}const p=await i.getElementRects({reference:{getBoundingClientRect:f},floating:r.floating,strategy:s});return o.reference.x!==p.reference.x||o.reference.y!==p.reference.y||o.reference.width!==p.reference.width||o.reference.height!==p.reference.height?{reset:{rects:p}}:{}}}};async function Ra(n,e){const{placement:t,platform:r,elements:o}=n,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),s=Ce(t),a=Et(t),l=St(t)==="y",u=["left","top"].includes(s)?-1:1,h=i&&l?-1:1,d=ft(e,n);let{mainAxis:v,crossAxis:m,alignmentAxis:f}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return a&&typeof f=="number"&&(m=a==="end"?f*-1:f),l?{x:m*h,y:v*u}:{x:v*u,y:m*h}}const Fa=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(e){var t,r;const{x:o,y:i,placement:s,middlewareData:a}=e,l=await Ra(e,n);return s===((t=a.offset)==null?void 0:t.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:i+l.y,data:{...l,placement:s}}}}},$a=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(e){const{x:t,y:r,placement:o}=e,{mainAxis:i=!0,crossAxis:s=!1,limiter:a={fn:b=>{let{x:_,y:g}=b;return{x:_,y:g}}},...l}=ft(n,e),u={x:t,y:r},h=await mo(e,l),d=St(Ce(o)),v=ho(d);let m=u[v],f=u[d];if(i){const b=v==="y"?"top":"left",_=v==="y"?"bottom":"right",g=m+h[b],x=m-h[_];m=En(g,m,x)}if(s){const b=d==="y"?"top":"left",_=d==="y"?"bottom":"right",g=f+h[b],x=f-h[_];f=En(g,f,x)}const p=a.fn({...e,[v]:m,[d]:f});return{...p,data:{x:p.x-t,y:p.y-r}}}}};function dt(n){return go(n)?(n.nodeName||"").toLowerCase():"#document"}function le(n){var e;return(n==null||(e=n.ownerDocument)==null?void 0:e.defaultView)||window}function Ae(n){var e;return(e=(go(n)?n.ownerDocument:n.document)||window.document)==null?void 0:e.documentElement}function go(n){return n instanceof Node||n instanceof le(n).Node}function ge(n){return n instanceof Element||n instanceof le(n).Element}function xe(n){return n instanceof HTMLElement||n instanceof le(n).HTMLElement}function Hi(n){return typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof le(n).ShadowRoot}function Ot(n){const{overflow:e,overflowX:t,overflowY:r,display:o}=pe(n);return/auto|scroll|overlay|hidden|clip/.test(e+r+t)&&!["inline","contents"].includes(o)}function Na(n){return["table","td","th"].includes(dt(n))}function Oi(n){const e=Ci(),t=pe(n);return t.transform!=="none"||t.perspective!=="none"||(t.containerType?t.containerType!=="normal":!1)||!e&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!e&&(t.filter?t.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(t.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(t.contain||"").includes(r))}function Ha(n){let e=ke(n);for(;xe(e)&&!ct(e);){if(Oi(e))return e;e=ke(e)}return null}function Ci(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function ct(n){return["html","body","#document"].includes(dt(n))}function pe(n){return le(n).getComputedStyle(n)}function en(n){return ge(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function ke(n){if(dt(n)==="html")return n;const e=n.assignedSlot||n.parentNode||Hi(n)&&n.host||Ae(n);return Hi(e)?e.host:e}function xo(n){const e=ke(n);return ct(e)?n.ownerDocument?n.ownerDocument.body:n.body:xe(e)&&Ot(e)?e:xo(e)}function yt(n,e,t){var r;e===void 0&&(e=[]),t===void 0&&(t=!0);const o=xo(n),i=o===((r=n.ownerDocument)==null?void 0:r.body),s=le(o);return i?e.concat(s,s.visualViewport||[],Ot(o)?o:[],s.frameElement&&t?yt(s.frameElement):[]):e.concat(o,yt(o,[],t))}function yo(n){const e=pe(n);let t=parseFloat(e.width)||0,r=parseFloat(e.height)||0;const o=xe(n),i=o?n.offsetWidth:t,s=o?n.offsetHeight:r,a=zt(t)!==i||zt(r)!==s;return a&&(t=i,r=s),{width:t,height:r,$:a}}function Ti(n){return ge(n)?n:n.contextElement}function et(n){const e=Ti(n);if(!xe(e))return De(1);const t=e.getBoundingClientRect(),{width:r,height:o,$:i}=yo(e);let s=(i?zt(t.width):t.width)/r,a=(i?zt(t.height):t.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}const qa=De(0);function _o(n){const e=le(n);return!Ci()||!e.visualViewport?qa:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function Ba(n,e,t){return e===void 0&&(e=!1),!t||e&&t!==le(n)?!1:e}function Be(n,e,t,r){e===void 0&&(e=!1),t===void 0&&(t=!1);const o=n.getBoundingClientRect(),i=Ti(n);let s=De(1);e&&(r?ge(r)&&(s=et(r)):s=et(n));const a=Ba(i,t,r)?_o(i):De(0);let l=(o.left+a.x)/s.x,u=(o.top+a.y)/s.y,h=o.width/s.x,d=o.height/s.y;if(i){const v=le(i),m=r&&ge(r)?le(r):r;let f=v,p=f.frameElement;for(;p&&r&&m!==f;){const b=et(p),_=p.getBoundingClientRect(),g=pe(p),x=_.left+(p.clientLeft+parseFloat(g.paddingLeft))*b.x,y=_.top+(p.clientTop+parseFloat(g.paddingTop))*b.y;l*=b.x,u*=b.y,h*=b.x,d*=b.y,l+=x,u+=y,f=le(p),p=f.frameElement}}return ut({width:h,height:d,x:l,y:u})}const za=[":popover-open",":modal"];function Ai(n){return za.some(e=>{try{return n.matches(e)}catch{return!1}})}function Wa(n){let{elements:e,rect:t,offsetParent:r,strategy:o}=n;const i=o==="fixed",s=Ae(r),a=e?Ai(e.floating):!1;if(r===s||a&&i)return t;let l={scrollLeft:0,scrollTop:0},u=De(1);const h=De(0),d=xe(r);if((d||!d&&!i)&&((dt(r)!=="body"||Ot(s))&&(l=en(r)),xe(r))){const v=Be(r);u=et(r),h.x=v.x+r.clientLeft,h.y=v.y+r.clientTop}return{width:t.width*u.x,height:t.height*u.y,x:t.x*u.x-l.scrollLeft*u.x+h.x,y:t.y*u.y-l.scrollTop*u.y+h.y}}function ja(n){return Array.from(n.getClientRects())}function wo(n){return Be(Ae(n)).left+en(n).scrollLeft}function Va(n){const e=Ae(n),t=en(n),r=n.ownerDocument.body,o=be(e.scrollWidth,e.clientWidth,r.scrollWidth,r.clientWidth),i=be(e.scrollHeight,e.clientHeight,r.scrollHeight,r.clientHeight);let s=-t.scrollLeft+wo(n);const a=-t.scrollTop;return pe(r).direction==="rtl"&&(s+=be(e.clientWidth,r.clientWidth)-o),{width:o,height:i,x:s,y:a}}function Ka(n,e){const t=le(n),r=Ae(n),o=t.visualViewport;let i=r.clientWidth,s=r.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;const u=Ci();(!u||u&&e==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a,y:l}}function Ua(n,e){const t=Be(n,!0,e==="fixed"),r=t.top+n.clientTop,o=t.left+n.clientLeft,i=xe(n)?et(n):De(1),s=n.clientWidth*i.x,a=n.clientHeight*i.y,l=o*i.x,u=r*i.y;return{width:s,height:a,x:l,y:u}}function qi(n,e,t){let r;if(e==="viewport")r=Ka(n,t);else if(e==="document")r=Va(Ae(n));else if(ge(e))r=Ua(e,t);else{const o=_o(n);r={...e,x:e.x-o.x,y:e.y-o.y}}return ut(r)}function Eo(n,e){const t=ke(n);return t===e||!ge(t)||ct(t)?!1:pe(t).position==="fixed"||Eo(t,e)}function Ga(n,e){const t=e.get(n);if(t)return t;let r=yt(n,[],!1).filter(a=>ge(a)&&dt(a)!=="body"),o=null;const i=pe(n).position==="fixed";let s=i?ke(n):n;for(;ge(s)&&!ct(s);){const a=pe(s),l=Oi(s);!l&&a.position==="fixed"&&(o=null),(i?!l&&!o:!l&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Ot(s)&&!l&&Eo(n,s))?r=r.filter(h=>h!==s):o=a,s=ke(s)}return e.set(n,r),r}function Xa(n){let{element:e,boundary:t,rootBoundary:r,strategy:o}=n;const s=[...t==="clippingAncestors"?Ai(e)?[]:Ga(e,this._c):[].concat(t),r],a=s[0],l=s.reduce((u,h)=>{const d=qi(e,h,o);return u.top=be(d.top,u.top),u.right=Oe(d.right,u.right),u.bottom=Oe(d.bottom,u.bottom),u.left=be(d.left,u.left),u},qi(e,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Za(n){const{width:e,height:t}=yo(n);return{width:e,height:t}}function Ya(n,e,t){const r=xe(e),o=Ae(e),i=t==="fixed",s=Be(n,!0,i,e);let a={scrollLeft:0,scrollTop:0};const l=De(0);if(r||!r&&!i)if((dt(e)!=="body"||Ot(o))&&(a=en(e)),r){const d=Be(e,!0,i,e);l.x=d.x+e.clientLeft,l.y=d.y+e.clientTop}else o&&(l.x=wo(o));const u=s.left+a.scrollLeft-l.x,h=s.top+a.scrollTop-l.y;return{x:u,y:h,width:s.width,height:s.height}}function vn(n){return pe(n).position==="static"}function Bi(n,e){return!xe(n)||pe(n).position==="fixed"?null:e?e(n):n.offsetParent}function So(n,e){const t=le(n);if(Ai(n))return t;if(!xe(n)){let o=ke(n);for(;o&&!ct(o);){if(ge(o)&&!vn(o))return o;o=ke(o)}return t}let r=Bi(n,e);for(;r&&Na(r)&&vn(r);)r=Bi(r,e);return r&&ct(r)&&vn(r)&&!Oi(r)?t:r||Ha(n)||t}const Ja=async function(n){const e=this.getOffsetParent||So,t=this.getDimensions,r=await t(n.floating);return{reference:Ya(n.reference,await e(n.floating),n.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Qa(n){return pe(n).direction==="rtl"}const el={convertOffsetParentRelativeRectToViewportRelativeRect:Wa,getDocumentElement:Ae,getClippingRect:Xa,getOffsetParent:So,getElementRects:Ja,getClientRects:ja,getDimensions:Za,getScale:et,isElement:ge,isRTL:Qa};function tl(n,e){let t=null,r;const o=Ae(n);function i(){var a;clearTimeout(r),(a=t)==null||a.disconnect(),t=null}function s(a,l){a===void 0&&(a=!1),l===void 0&&(l=1),i();const{left:u,top:h,width:d,height:v}=n.getBoundingClientRect();if(a||e(),!d||!v)return;const m=Mt(h),f=Mt(o.clientWidth-(u+d)),p=Mt(o.clientHeight-(h+v)),b=Mt(u),g={rootMargin:-m+"px "+-f+"px "+-p+"px "+-b+"px",threshold:be(0,Oe(1,l))||1};let x=!0;function y(O){const A=O[0].intersectionRatio;if(A!==l){if(!x)return s();A?s(!1,A):r=setTimeout(()=>{s(!1,1e-7)},1e3)}x=!1}try{t=new IntersectionObserver(y,{...g,root:o.ownerDocument})}catch{t=new IntersectionObserver(y,g)}t.observe(n)}return s(!0),i}function nl(n,e,t,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,u=Ti(n),h=o||i?[...u?yt(u):[],...yt(e)]:[];h.forEach(_=>{o&&_.addEventListener("scroll",t,{passive:!0}),i&&_.addEventListener("resize",t)});const d=u&&a?tl(u,t):null;let v=-1,m=null;s&&(m=new ResizeObserver(_=>{let[g]=_;g&&g.target===u&&m&&(m.unobserve(e),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var x;(x=m)==null||x.observe(e)})),t()}),u&&!l&&m.observe(u),m.observe(e));let f,p=l?Be(n):null;l&&b();function b(){const _=Be(n);p&&(_.x!==p.x||_.y!==p.y||_.width!==p.width||_.height!==p.height)&&t(),p=_,f=requestAnimationFrame(b)}return t(),()=>{var _;h.forEach(g=>{o&&g.removeEventListener("scroll",t),i&&g.removeEventListener("resize",t)}),d==null||d(),(_=m)==null||_.disconnect(),m=null,l&&cancelAnimationFrame(f)}}const rl=Fa,il=$a,ol=La,sl=Ia,al=ka,ll=(n,e,t)=>{const r=new Map,o={platform:el,...t},i={...o.platform,_c:r};return Pa(n,e,{...o,platform:i})},Oo={strategy:"absolute",placement:"bottom",inline:!1,offset:{mainAxis:16},shift:!0,flip:!0,arrow:!0};function Mi(n,e){const t=Object.assign({},Oo,e),{placement:r,strategy:o}=t,{trigger:i,content:s,contentArrow:a}=n;return nl(i,s,()=>{ll(i,s,{placement:r,strategy:o,middleware:[...bt(al,t.inline),...bt(rl,t.offset),...bt(ol,t.flip),...bt(il,t.shift),...bt(sl,a&&t.arrow,{element:a})]}).then(l=>{const{x:u,y:h,middlewareData:d,placement:v}=l,m=d.arrow;Object.assign(s.style,{left:`${u}px`,top:`${h}px`}),s.setAttribute("data-placement"