@graupl/graupl 1.0.0-beta.31 → 1.0.0-beta.33
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/dist/css/component/tabs.css +2 -0
- package/dist/css/component/tabs.css.map +1 -0
- package/dist/js/accordion.js +3 -3
- package/dist/js/accordion.js.map +1 -1
- package/dist/js/alert.js +3 -3
- package/dist/js/alert.js.map +1 -1
- package/dist/js/carousel.js +3 -3
- package/dist/js/carousel.js.map +1 -1
- package/dist/js/component/accordion.cjs.js +3 -3
- package/dist/js/component/accordion.cjs.js.map +1 -1
- package/dist/js/component/accordion.es.js +3 -3
- package/dist/js/component/accordion.es.js.map +1 -1
- package/dist/js/component/accordion.iife.js +3 -3
- package/dist/js/component/accordion.iife.js.map +1 -1
- package/dist/js/component/alert.cjs.js +3 -3
- package/dist/js/component/alert.cjs.js.map +1 -1
- package/dist/js/component/alert.es.js +3 -3
- package/dist/js/component/alert.es.js.map +1 -1
- package/dist/js/component/alert.iife.js +3 -3
- package/dist/js/component/alert.iife.js.map +1 -1
- package/dist/js/component/carousel.cjs.js +3 -3
- package/dist/js/component/carousel.cjs.js.map +1 -1
- package/dist/js/component/carousel.es.js +3 -3
- package/dist/js/component/carousel.es.js.map +1 -1
- package/dist/js/component/carousel.iife.js +3 -3
- package/dist/js/component/carousel.iife.js.map +1 -1
- package/dist/js/component/disclosure.cjs.js +3 -3
- package/dist/js/component/disclosure.cjs.js.map +1 -1
- package/dist/js/component/disclosure.es.js +3 -3
- package/dist/js/component/disclosure.es.js.map +1 -1
- package/dist/js/component/disclosure.iife.js +3 -3
- package/dist/js/component/disclosure.iife.js.map +1 -1
- package/dist/js/component/tabs.cjs.js +3 -3
- package/dist/js/component/tabs.cjs.js.map +1 -1
- package/dist/js/component/tabs.es.js +3 -3
- package/dist/js/component/tabs.es.js.map +1 -1
- package/dist/js/component/tabs.iife.js +3 -3
- package/dist/js/component/tabs.iife.js.map +1 -1
- package/dist/js/disclosure.js +3 -3
- package/dist/js/disclosure.js.map +1 -1
- package/dist/js/generator/accordion.cjs.js +3 -3
- package/dist/js/generator/accordion.cjs.js.map +1 -1
- package/dist/js/generator/accordion.es.js +3 -3
- package/dist/js/generator/accordion.es.js.map +1 -1
- package/dist/js/generator/accordion.iife.js +3 -3
- package/dist/js/generator/accordion.iife.js.map +1 -1
- package/dist/js/generator/alert.cjs.js +3 -3
- package/dist/js/generator/alert.cjs.js.map +1 -1
- package/dist/js/generator/alert.es.js +3 -3
- package/dist/js/generator/alert.es.js.map +1 -1
- package/dist/js/generator/alert.iife.js +3 -3
- package/dist/js/generator/alert.iife.js.map +1 -1
- package/dist/js/generator/carousel.cjs.js +3 -3
- package/dist/js/generator/carousel.cjs.js.map +1 -1
- package/dist/js/generator/carousel.es.js +3 -3
- package/dist/js/generator/carousel.es.js.map +1 -1
- package/dist/js/generator/carousel.iife.js +3 -3
- package/dist/js/generator/carousel.iife.js.map +1 -1
- package/dist/js/generator/disclosure.cjs.js +3 -3
- package/dist/js/generator/disclosure.cjs.js.map +1 -1
- package/dist/js/generator/disclosure.es.js +3 -3
- package/dist/js/generator/disclosure.es.js.map +1 -1
- package/dist/js/generator/disclosure.iife.js +3 -3
- package/dist/js/generator/disclosure.iife.js.map +1 -1
- package/dist/js/generator/navigation.cjs.js +1 -1
- package/dist/js/generator/navigation.cjs.js.map +1 -1
- package/dist/js/generator/navigation.es.js +1 -1
- package/dist/js/generator/navigation.es.js.map +1 -1
- package/dist/js/generator/navigation.iife.js +1 -1
- package/dist/js/generator/navigation.iife.js.map +1 -1
- package/dist/js/generator/tabs.cjs.js +3 -3
- package/dist/js/generator/tabs.cjs.js.map +1 -1
- package/dist/js/generator/tabs.es.js +3 -3
- package/dist/js/generator/tabs.es.js.map +1 -1
- package/dist/js/generator/tabs.iife.js +3 -3
- package/dist/js/generator/tabs.iife.js.map +1 -1
- package/dist/js/graupl.js +3 -3
- package/dist/js/graupl.js.map +1 -1
- package/dist/js/navigation.js +1 -1
- package/dist/js/navigation.js.map +1 -1
- package/dist/js/tabs.js +3 -3
- package/dist/js/tabs.js.map +1 -1
- package/package.json +1 -1
- package/scss/component/tabs.scss +3 -0
package/dist/js/graupl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(){function
|
|
2
|
-
- ${this.errors.map(t=>t.
|
|
3
|
-
- `)}`);this._generateKey()}catch(t){console.error(t)}}init(){this.initialize()}get dom(){return this._dom}get selectors(){return this._selectors}get elements(){return this._elements}get classes(){return this._classes}get durations(){return this._durations}get delays(){return this._delays}get intervals(){return this._intervals}get timeouts(){return this._timeouts}get listeners(){return this._listeners}get events(){return this._events}get initializeClass(){return this._classes.initialize}set initializeClass(t){u({initializeClass:t}),this._classes.initialize!==t&&(this._classes.initialize=t)}get focusState(){return this._focusState}set focusState(t){V({focusState:t}),this._focusState!==t&&(this._focusState=t)}get currentEvent(){return this._currentEvent}set currentEvent(t){B({currentEvent:t}),this._currentEvent!==t&&(this._currentEvent=t)}get breakpoint(){return this._breakpoint}set breakpoint(t){n("string",{breakpoint:t}),this._breakpoint!==t&&(this._breakpoint=t)}get mediaQuery(){return this._mediaQueryString!==""?this._mediaQueryString:this._breakpoint===""?"":`(width <= ${this._breakpoint})`}set mediaQuery(t){n("string",{mediaQuery:t}),this._mediaQueryString!==t&&(this._mediaQueryString=t)}get prefix(){return this._prefix}get key(){return this._key}get id(){return this._id}get isValid(){return this._valid}get isInitialized(){return this._initialized}get errors(){return this._errors}_validate(){if(Object.keys(this._dom).length>0){const t={};for(const s of Object.keys(this._dom))Array.isArray(this._dom[s])?this._dom[s].forEach((i,r)=>{t[`${s}Element[${r}]`]=i}):this._dom[s]!==null&&(t[`${s}Element`]=this._dom[s]);const e=w(HTMLElement,t,{shouldThrow:!1});e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1)}if(Object.keys(this._selectors).length>0){const t={};for(const s of Object.keys(this._selectors))t[`${s}Selector`]=this._selectors[s];const e=N(t,{shouldThrow:!1});e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1)}if(Object.keys(this._classes).length>0){const t={};for(const s of Object.keys(this._classes))this._classes[s]!==""&&(t[`${s}Class`]=this._classes[s]);const e=u(t,{shouldThrow:!1});e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1)}if(Object.keys(this._durations).length>0){const t={};for(const s of Object.keys(this._durations))t[`${s}Duration`]=this._durations[s];const e=n("number",t,{shouldThrow:!1});e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1)}if(Object.keys(this.delays).length>0){const t={};for(const s of Object.keys(this.delays))t[`${s}Delay`]=this.delays[s];const e=n("number",t,{shouldThrow:!1});e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1)}if(this._key!==""){const t=n("string",{key:this._key},{shouldThrow:!1});t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1)}if(this._prefix!==""){const t=n("string",{prefix:this._prefix},{shouldThrow:!1});t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1)}return this._valid}_generateKey(t=!1){(this._key===""||t)&&(this._key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){}_setAriaAttributes(){}_setCustomProps(){}_setDOMElementType(t,{context:e,overwrite:s=!0,strict:i=!1}={}){if(typeof this.selectors[t]!="string")throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`);if(this._protectedDOMElements.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be set through _setDOMElementType because it is a protected element.`);w(HTMLElement,{context:e});const r=Array.from(e.querySelectorAll(this.selectors[t])).filter(o=>i?o.parentElement===e:!0);Array.isArray(this._dom[t])?s?this._dom[t]=r:this._dom[t]=[...this._dom[t],...r]:this._dom[t]=r[0]||null}_resetDOMElementType(t){if(typeof this.selectors[t]!="string")throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`);if(this._protectedDOMElements.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be reset through _resetDOMElementType because it is a protected element.`);Array.isArray(this._dom[t])?this._dom[t]=[]:this._dom[t]=null}_setDOMElements(){}_createChildElements(){}_handleMediaMatch(){this.mediaQuery!==""&&(this._mediaQueryList=window.matchMedia(this.mediaQuery),this._mediaQueryList.addEventListener("change",this._mediaQueryListEventCallback),this._mediaQueryListEventCallback(this._mediaQueryList))}_handleFocus(){}_handleClick(){}_handleKeydown(){}_handleKeyup(){}_store(){w(O,{storage:window.Graupl},{shouldThrow:!1}).status||new O({scope:"Graupl"}),window.Graupl.set({key:this.id!==""?this.id:this.key,type:this._storageKey,data:this})}_unstore(){w(O,{storage:window.Graupl},{shouldThrow:!1}).status&&window.Graupl.clear({key:this.id!==""?this.id:this.key,type:this._storageKey})}_setInterval(t,e,s="_default"){this._clearInterval(s),this._intervals[s]=setInterval(t,e)}_clearInterval(t="_default"){clearInterval(this._intervals[t])}_clearIntervals(){for(const t of Object.keys(this._intervals))this._clearInterval(t)}_setTimeout(t,e,s="_default"){this._clearTimeout(s),this._timeouts[s]=setTimeout(t,e)}_clearTimeout(t="_default"){clearTimeout(this._timeouts[t])}_clearTimeouts(){for(const t of Object.keys(this._timeouts))this._clearTimeout(t)}_dispatchEvent(t,e){if(!Object.keys(this.events).includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid event type.`);w(HTMLElement,{element:e}),e.dispatchEvent(this.events[t])}_addEventListener(t,e,s,i={}){e.addEventListener(t,s,i),this._listeners.push({type:t,element:e,listener:s,options:i})}_removeEventListener(t,e,s,i={}){e.removeEventListener(t,s,i);let r=-1;this._listeners.forEach((o,d)=>{o.type===t&&o.element===e&&o.listener===s&&JSON.stringify(o.options)===JSON.stringify(i)&&(r=d)}),r!==-1&&this._listeners.splice(r,1)}_removeEventListeners({type:t=null,element:e=null}={}){[...this._listeners].forEach(s=>{t!==null&&s.type!==t||e!==null&&s.element!==e||this._removeEventListener(s.type,s.element,s.listener,s.options)})}dispose(){this._clearIntervals(),this._clearTimeouts(),this._removeEventListeners(),this._unstore(),delete this}},b=J,U=class extends b{_dom={item:null,toggle:null,header:null,content:null};_protectedDOMElements=["item","toggle","header","content"];_elements={parent:null};_open=new A(!1);_locked=new A(!1);_events={expand:new CustomEvent("grauplAccordionItemExpand",{bubbles:!0,detail:{item:this}}),collapse:new CustomEvent("grauplAccordionItemCollapse",{bubbles:!0,detail:{item:this}})};constructor({accordionItemElement:t,accordionItemToggleElement:e,accordionItemHeaderElement:s,accordionItemContentElement:i,parentAccordion:r=null}){super({prefix:r.prefix,key:r.key}),this._dom.item=t,this._dom.toggle=e,this._dom.header=s,this._dom.content=i,this._elements.parent=r}initialize(){this._setIds(),this._setAriaAttributes(),this.dom.toggle.getAttribute("aria-expanded")==="true"?this.show({force:!0,emit:!1,transition:!1}):this.hide({force:!0,emit:!1,transition:!1})}get isOpen(){return this._open.value}get isLocked(){return this._locked.value}_setIds(){const{key:t}=this.elements.parent,e=this.elements.parent.dom.accordionItems.indexOf(this.dom.item);this.dom.item.id=this.dom.item.id||`accordion-item-${t}-${e}`,this.dom.toggle.id=this.dom.toggle.id||`accordion-item-toggle-${t}-${e}`,this.dom.header.id=this.dom.header.id||`accordion-item-header-${t}-${e}`,this.dom.content.id=this.dom.content.id||`accordion-item-content-${t}-${e}`}_setAriaAttributes(){E("button",{toggle:this.dom.toggle},{shouldThrow:!1}).status||this.dom.toggle.setAttribute("role","button"),this.dom.toggle.getAttribute("aria-expanded")!=="true"&&this.dom.toggle.setAttribute("aria-expanded","false"),this.dom.toggle.setAttribute("aria-controls",this.dom.content.id),E("section",{content:this.dom.content},{shouldThrow:!1}).status||this.dom.content.setAttribute("role","region"),this.dom.content.setAttribute("aria-labelledby",this.dom.toggle.id)}_reveal({emit:t=!0,transition:e=!0}={}){const{closeClass:s,openClass:i,transitionClass:r,openDuration:o}=this.elements.parent;this.dom.toggle.setAttribute("aria-expanded","true"),e&&r!==""?(a(r,this.dom.item),requestAnimationFrame(()=>{l(s,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{a(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height+this.dom.content.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{this._setTimeout(()=>{l(r,this.dom.item),this.dom.item.style.height=""},o)})})})):(a(i,this.dom.item),l(s,this.dom.item)),this.dom.content.removeAttribute("inert"),t&&this._dispatchEvent("expand",this.dom.item)}_conceal({emit:t=!0,transition:e=!0}={}){const{closeClass:s,openClass:i,transitionClass:r,closeDuration:o}=this.elements.parent;this.dom.toggle.setAttribute("aria-expanded","false"),e&&r!==""?(a(r,this.dom.item),this.dom.item.style.height=`${this.dom.item.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{l(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{a(s,this.dom.item),requestAnimationFrame(()=>{this._setTimeout(()=>{l(r,this.dom.item),this.dom.item.style.height=""},o)})})})):(a(s,this.dom.item),l(i,this.dom.item)),this.dom.content.setAttribute("inert","true"),t&&this._dispatchEvent("collapse",this.dom.item)}show({force:t=!1,preserveState:e=!1,emit:s=!0,transition:i=!0}={}){this.isOpen&&!t||(this._reveal({emit:s,transition:i}),this._open.value=!0,e||this._open.commit(),this.elements.parent.allowMultipleExpand||(this.unlockSiblings(),this.closeSiblings()),this.elements.parent.allowNoExpand||(this.elements.parent.openAccordionItems.length<=1?this.lock():this.unlockSiblings()))}hide({force:t=!1,preserveState:e=!1,emit:s=!0,transition:i=!0}={}){!this.isOpen&&!t||!this.elements.parent.allowNoExpand&&this.elements.parent.openAccordionItems.length<=1||(this._conceal({emit:s,transition:i}),this._open.value=!1,e||this._open.commit(),!this.elements.parent.allowNoExpand&&this.elements.parent.openAccordionItems.length===1&&this.elements.parent.openAccordionItems[0].lock())}toggle(){this.isOpen?this.hide():this.show()}focus(){this.dom.toggle.focus()}blur(){this.dom.toggle.blur()}lock(){this._locked.value=!0,this._locked.commit(),this.dom.toggle.setAttribute("disabled","true")}unlock(){this._locked.value=!1,this._locked.commit(),this.dom.toggle.removeAttribute("disabled")}closeSiblings(){this.elements.parent&&this.elements.parent.elements.accordionItems.forEach(t=>{t!==this&&t.hide()})}unlockSiblings(){this.elements.parent&&this.elements.parent.elements.accordionItems.forEach(t=>{t!==this&&t.unlock()})}},W=U;function c(t){try{const e=t.key||t.keyCode,s={Enter:e==="Enter"||e===13,Space:e===" "||e==="Spacebar"||e===32,Escape:e==="Escape"||e==="Esc"||e===27,ArrowUp:e==="ArrowUp"||e==="Up"||e===38,ArrowRight:e==="ArrowRight"||e==="Right"||e===39,ArrowDown:e==="ArrowDown"||e==="Down"||e===40,ArrowLeft:e==="ArrowLeft"||e==="Left"||e===37,Home:e==="Home"||e===36,End:e==="End"||e===35,Character:isNaN(e)&&!!e.match(/^[a-zA-Z]{1}$/),Tab:e==="Tab"||e===9,Asterisk:e==="*"||e===56};return Object.keys(s).find(i=>s[i]===!0)||""}catch{return""}}function h(t){t.preventDefault(),t.stopPropagation()}var Z=class extends b{_dom={accordion:null,accordionItems:[],accordionItemToggles:[],accordionItemHeaders:[],accordionItemContents:[],accordionControlContainer:null,accordionControls:[],expandController:[],collapseController:[]};_protectedDOMElements=["accordion"];_selectors={accordionItems:"",accordionItemToggles:"",accordionItemHeaders:"",accordionItemContents:"",accordionControlContainer:"",accordionControls:"",expandController:"",collapseController:""};_elements={accordionItems:[]};_classes={open:"show",close:"hide",transition:"transitioning",initialize:"initializing"};_durations={transition:250,open:-1,close:-1};_optionalKeySupport=!0;_allowMultipleExpand=!0;_allowNoExpand=!0;_currentChild=0;_storageKey="accordions";constructor({accordionElement:t,accordionItemsSelector:e=".accordion-item",accordionItemTogglesSelector:s=".accordion-item-toggle",accordionItemHeadersSelector:i=".accordion-item-header",accordionItemContentsSelector:r=".accordion-item-content",accordionControlContainerSelector:o=".accordion-control-container",accordionControlsSelector:d=".accordion-control",expandControllerSelector:m=".expand-all",collapseControllerSelector:p=".collapse-all",openClass:_="show",closeClass:g="hide",transitionClass:y="transitioning",transitionDuration:C=300,openDuration:v=-1,closeDuration:k=-1,optionalKeySupport:I=!1,allowMultipleExpand:x=!0,allowNoExpand:z=!0,automaticActivation:F=!1,prefix:K="graupl-",key:q=null,initializeClass:P="initializing",initialize:j=!1}){super({prefix:K,key:q,initializeClass:P}),this._dom.accordion=t,this._selectors.accordionItems=e,this._selectors.accordionItemToggles=s,this._selectors.accordionItemHeaders=i,this._selectors.accordionItemContents=r,this._selectors.accordionControlContainer=o,this._selectors.accordionControls=d,this._selectors.expandController=m,this._selectors.collapseController=p,this._classes.open=_||"",this._classes.close=g||"",this._classes.transition=y||"",this._durations.transition=C,this._durations.open=v,this._durations.close=k,this._automatic=F,this._optionalKeySupport=I,this._allowMultipleExpand=x,this._allowNoExpand=z,j&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.accordion),super.initialize(),this._setDOMElements(),this._setIds(),this._setCustomProps(),this._createChildElements(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.dom.expandController.length>0&&!this.allowMultipleExpand&&this.dom.expandController.forEach(t=>{t.setAttribute("disabled","disabled")}),this.dom.collapseController.length>0&&!this.allowNoExpand&&this.dom.collapseController.forEach(t=>{t.setAttribute("disabled","disabled")})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this._classes.initialize,this.dom.accordion)}),this.isValid&&(this._initialized=!0)}}get openClass(){return this._classes.open}set openClass(t){u({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){u({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){u({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setTransitionDurations())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){n("number",{openDuration:t}),this._durations.open!==t&&(this._durations.open=t,this._setTransitionDurations())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){n("number",{closeDuration:t}),this._durations.close!==t&&(this._durations.close=t,this._setTransitionDurations())}get currentChild(){return this._currentChild}set currentChild(t){n("number",{currentChild:t}),this._currentChild!==t&&t>=0&&t<this.elements.accordionItems.length&&(this._currentChild=t)}get optionalKeySupport(){return this._optionalKeySupport}set optionalKeySupport(t){n("boolean",{optionalKeySupport:t}),this._optionalKeySupport!==t&&(this._optionalKeySupport=t)}get currentAccordionItem(){return this.elements.accordionItems[this.currentChild]}get openAccordionItems(){return this.elements.accordionItems.filter(t=>t.isOpen)}get allowMultipleExpand(){return this._allowMultipleExpand}set allowMultipleExpand(t){n("boolean",{allowMultipleExpand:t}),this._allowMultipleExpand!==t&&(this._allowMultipleExpand=t,this.dom.expandController.length>0&&(t?this.dom.expandController.forEach(e=>{e.removeAttribute("disabled")}):this.dom.expandController.forEach(e=>{e.setAttribute("disabled","disabled")})))}get allowNoExpand(){return this._allowNoExpand}set allowNoExpand(t){n("boolean",{allowNoExpand:t}),this._allowNoExpand!==t&&(this._allowNoExpand=t,this.dom.collapseController.length>0&&(t?this.dom.collapseController.forEach(e=>{e.removeAttribute("disabled")}):this.dom.collapseController.forEach(e=>{e.setAttribute("disabled","disabled")})))}_validate(){super._validate();const t=n("boolean",{automaticActivation:this._automatic,optionalKeySupport:this._optionalKeySupport,allowMultipleExpand:this._allowMultipleExpand,allowNoExpand:this._allowNoExpand});return t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1),this._valid}_setIds(){this.dom.accordion.id=this.dom.accordion.id||`accordion-${this.key}`,this._id=this.dom.accordion.id}_setCustomProps(){this.dom.accordion.style.setProperty(`--${this.prefix}accordion-transition-duration`,`${this.transitionDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-open-transition-duration`,`${this.openDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElements(){this._setDOMElementType("accordionItems",{context:this.dom.accordion}),this._resetDOMElementType("accordionItemToggles"),this._setDOMElementType("accordionControlContainer",{context:this.dom.accordion}),this.dom.accordionControlContainer&&(this._setDOMElementType("accordionControls",{context:this.dom.accordionControlContainer}),this._setDOMElementType("expandController",{context:this.dom.accordionControlContainer}),this._setDOMElementType("collapseController",{context:this.dom.accordionControlContainer})),this.dom.accordionItems.forEach(t=>{this._setDOMElementType("accordionItemToggles",{context:t,overwrite:!1,strict:!1}),this._setDOMElementType("accordionItemHeaders",{context:t,overwrite:!1,strict:!1}),this._setDOMElementType("accordionItemContents",{context:t,overwrite:!1,strict:!1})})}_createChildElements(){this.dom.accordionItems.forEach((t,e)=>{const s=new W({accordionItemElement:t,accordionItemToggleElement:this.dom.accordionItemToggles[e],accordionItemHeaderElement:this.dom.accordionItemHeaders[e],accordionItemContentElement:this.dom.accordionItemContents[e],parentAccordion:this});s.initialize(),this.elements.accordionItems.push(s)})}_handleFocus(){this.elements.accordionItems.forEach((t,e)=>{this._addEventListener("focus",t.dom.toggle,()=>{this.currentChild=e})})}_handleClick(){this.elements.accordionItems.forEach((t,e)=>{this._addEventListener("click",t.dom.toggle,()=>{this.currentChild=e,this.currentEvent="mouse",t.toggle()})}),this.dom.expandController.forEach(t=>{this._addEventListener("click",t,()=>{this.currentEvent="mouse",this.allowMultipleExpand&&this.openChildren()})}),this.dom.collapseController.forEach(t=>{this._addEventListener("click",t,()=>{this.currentEvent="mouse",this.allowNoExpand&&this.closeChildren()})})}_handleKeydown(){this.dom.accordionItemToggles.forEach(t=>{this._addEventListener("keydown",t,e=>{const s=c(e);["Space","Enter"].includes(s)?(h(e),this.currentEvent="keyboard"):this.optionalKeySupport&&["ArrowDown","ArrowUp","Home","End"].includes(s)&&(h(e),this.currentEvent="keyboard")})}),this.dom.accordionControls.forEach(t=>{this._addEventListener("keydown",t,e=>{const s=c(e);["Space","Enter"].includes(s)&&(h(e),this.currentEvent="keyboard")})})}_handleKeyup(){this.dom.accordionItemToggles.forEach(t=>{this._addEventListener("keyup",t,e=>{const s=c(e);switch(s){case"Space":case"Enter":h(e),this.currentEvent="keyboard",this.currentAccordionItem.toggle();break}if(this.optionalKeySupport)switch(s){case"Home":h(e),this.focusFirstChild();break;case"End":h(e),this.focusLastChild();break;case"ArrowDown":h(e),this.focusNextChild();break;case"ArrowUp":h(e),this.focusPreviousChild();break}})}),this.dom.expandController.forEach(t=>{this._addEventListener("keyup",t,e=>{switch(c(e)){case"Space":case"Enter":h(e),this.currentEvent="keyboard",this.allowMultipleExpand&&this.openChildren()}})}),this.dom.collapseController.forEach(t=>{this._addEventListener("keyup",t,e=>{switch(c(e)){case"Space":case"Enter":h(e),this.currentEvent="keyboard",this.allowNoExpand&&this.closeChildren()}})})}focusCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.focus()}focusChild(t){this.blurCurrentChild(),this.currentChild=t,this.focusCurrentChild()}focusFirstChild(){this.focusChild(0)}focusLastChild(){this.focusChild(this.elements.accordionItems.length-1)}focusNextChild(){this.currentChild<this.elements.accordionItems.length-1?this.focusChild(this.currentChild+1):this.focusCurrentChild()}focusPreviousChild(){this.currentChild>0?this.focusChild(this.currentChild-1):this.focusCurrentChild()}blurCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.blur()}openChildren(){this.elements.accordionItems.forEach(t=>t.show())}closeChildren(){this.elements.accordionItems.forEach(t=>t.hide())}},X=Z;const G=/[\11\12\14\15\40]+/,S="data-once",Y=document;function M(t,e,s){return t[`${e}Attribute`](S,s)}function T(t){if(typeof t!="string")throw new TypeError("once ID must be a string");if(t===""||G.test(t))throw new RangeError("once ID must not be empty or contain spaces");return`[${S}~="${t}"]`}function tt(t){if(!(t instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function D(t,e=Y){let s=t;if(t===null)s=[];else if(t)if(e instanceof Document||e instanceof DocumentFragment||e instanceof Element)typeof t=="string"?s=e.querySelectorAll(t):t instanceof Element&&(s=[t]);else throw new TypeError('Context must be an object of type "Document", "DocumentFragment", or "Element".');else throw new TypeError("Selector must not be empty");return Array.prototype.slice.call(s)}function L(t,e,s){return e.filter(i=>{const r=tt(i)&&i.matches(t);return r&&s&&s(i),r})}function H(t,{add:e,remove:s}){const i=[];M(t,"has")&&M(t,"get").trim().split(G).forEach(o=>{i.indexOf(o)<0&&o!==s&&i.push(o)}),e&&i.push(e);const r=i.join(" ");M(t,r===""?"remove":"set",r)}function $(t,e,s){return L(`:not(${T(t)})`,D(e,s),i=>H(i,{add:t}))}$.remove=(t,e,s)=>L(T(t),D(e,s),i=>H(i,{remove:t})),$.filter=(t,e,s)=>L(T(t),D(e,s)),$.find=(t,e)=>D(t?T(t):`[${S}]`,e);var f=$,et=(t={},e=document,s=".accordion")=>{f("graupl-accordion-generator",s,e).forEach(i=>{const r=i.dataset.grauplAccordionOptions?JSON.parse(i.dataset.grauplAccordionOptions.replace(/'/g,'"'))||{}:{};new X({accordionElement:i,initialize:!0,...t,...r})})},st=class extends b{_dom={alert:null,controller:null};_protectedDOMElements=["alert","controller"];_classes={show:"",hide:"",transition:"",initialize:""};_durations={transition:150,show:-1,hide:-1};_hidden=new A(!1);_events={show:new CustomEvent("grauplAlertShow",{bubbles:!0,detail:{alert:this}}),hide:new CustomEvent("grauplAlertHide",{bubbles:!0,detail:{alert:this}})};_storageKey="alerts";constructor({alertElement:t,controllerElement:e=null,showClass:s="show",hideClass:i="hide",transitionClass:r="transitioning",transitionDuration:o=150,showDuration:d=-1,hideDuration:m=-1,isHidden:p=!1,prefix:_="graupl-",key:g=null,initializeClass:y="initializing",initialize:C=!1}={}){super({prefix:_,key:g,initializeClass:y}),this._dom.alert=t,this._dom.controller=e,this._classes.show=s||"",this._classes.hide=i||"",this._classes.transition=r||"",this._durations.transition=o,this._durations.show=d,this._durations.hide=m,this._hidden.value=p,this._hidden.commit(),C&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.alert),super.initialize(),this._setIds(),this._setCustomProps(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.isHidden&&this._conseal({emit:!1,transition:!1})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this._classes.initialize,this.dom.alert)}),this.isValid&&(this._initialized=!0)}}get showClass(){return this._classes.show}set showClass(t){u({showClass:t}),this._classes.show!==t&&(this._classes.show=t)}get hideClass(){return this._classes.hide}set hideClass(t){u({hideClass:t}),this._classes.hide!==t&&(this._classes.hide=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){u({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setCustomProps())}get showDuration(){return this._durations.show===-1?this.transitionDuration:this._durations.show}set showDuration(t){n("number",{showDuration:t}),this._durations.show!==t&&(this._durations.show=t,this._setCustomProps())}get hideDuration(){return this._durations.hide===-1?this.transitionDuration:this._durations.hide}set hideDuration(t){n("number",{hideDuration:t}),this._durations.hide!==t&&(this._durations.hide=t,this._setCustomProps())}get isHidden(){return this._hidden.value}_validate(){super._validate();const t=n("boolean",{isHidden:this._hidden.value},{shouldThrow:!1});return t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1),this._valid}_setIds(){this.dom.alert.id=this.dom.alert.id||`alert-${this.key}`,this.dom.controller.id=this.dom.controller.id||`alert-controller-${this.key}`,this._id=this.dom.alert.id}_reveal({emit:t=!0,transition:e=!0}={}){e&&this.transitionClass!==""?(a(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{l(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{a(this.showClass,this.dom.alert),requestAnimationFrame(()=>{this._setTimeout(()=>l(this.transitionClass,this.dom.alert),this.showDuration)})})})):(a(this.showClass,this.dom.alert),l(this.hideClass,this.dom.alert)),this.dom.alert.removeAttribute("inert"),t&&this._dispatchEvent("show",this.dom.alert)}_conseal({emit:t=!0,transition:e=!0}={}){e&&this.transitionClass!==""?(a(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{l(this.showClass,this.dom.alert),requestAnimationFrame(()=>{a(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{this._setTimeout(()=>l(this.transitionClass,this.dom.alert),this.hideDuration)})})})):(a(this.hideClass,this.dom.alert),l(this.showClass,this.dom.alert)),this.dom.alert.setAttribute("inert","true"),t&&this._dispatchEvent("hide",this.dom.alert)}_setCustomProps(){this.dom.alert.style.setProperty(`--${this.prefix}alert-transition-duration`,`${this.transitionDuration}ms`),this.dom.alert.style.setProperty(`--${this.prefix}alert-show-transition-duration`,`${this.showDuration}ms`),this.dom.alert.style.setProperty(`--${this.prefix}alert-hide-transition-duration`,`${this.hideDuration}ms`)}_handleClick(){this.dom.controller!==null&&this._addEventListener("click",this.dom.controller,()=>this.hide())}_handleKeydown(){this.dom.controller!==null&&this._addEventListener("keydown",this.dom.controller,t=>{const e=c(t);(e==="Space"||e==="Enter")&&h(t)})}_handleKeyup(){this.dom.controller!==null&&this._addEventListener("keyup",this.dom.controller,t=>{const e=c(t);(e==="Space"||e==="Enter")&&this.hide()})}show({force:t=!1,preserveState:e=!1}={}){!this.isHidden&&!t||(this.focusState="self",this._reveal(),this._hidden.value=!1,e||this._hidden.commit())}hide({force:t=!1,preserveState:e=!1}={}){this.isHidden&&!t||(this.focusState="none",this._conseal(),this._hidden.value=!0,e||this._hidden.commit())}},it=st,rt=(t={},e=document,s=".alert")=>{f("graupl-alert-generator",s,e).forEach(i=>{const r=i.dataset.grauplAlertOptions?JSON.parse(i.dataset.grauplAlertOptions.replace(/'/g,'"'))||{}:{};new it({alertElement:i,controllerElement:i.querySelector(".alert-dismisser")||null,initialize:!0,...t,...r})})},ot=class extends b{_dom={carousel:null,carouselItems:[],carouselItemContainer:null,carouselControls:[],carouselControlContainer:null,carouselTabs:[],carouselTabContainer:null,autoplay:null,next:null,previous:null};_protectedDOMElements=["carousel"];_selectors={carouselItems:"",carouselItemContainer:"",carouselControls:"",carouselControlContainer:"",carouselTabs:"",carouselTabContainer:"",autoplay:"",next:"",previous:""};_classes={active:"active",previous:"previous",next:"next",play:"play",pause:"pause",initialize:"initializing"};_durations={transition:250};_delays={transition:1e4};_currentItem=0;_autoplay=!0;_playText="Play";_pauseText="Pause";_currentAction="next";_storageKey="carousels";constructor({carouselElement:t,carouselItemsSelector:e=".carousel-item",carouselItemContainerSelector:s=".carousel-item-container",carouselControlsSelector:i=".carousel-control",carouselControlContainerSelector:r=".carousel-control-container",carouselTabsSelector:o=".carousel-tab",carouselTabContainerSelector:d=".carousel-tab-container",autoplaySelector:m=".autoplay",nextSelector:p=".next",previousSelector:_=".previous",activeClass:g="active",previousClass:y="previous",nextClass:C="next",playClass:v="play",pauseClass:k="pause",autoplay:I=!0,transitionDelay:x=1e4,transitionDuration:z=500,playText:F="Play",pauseText:K="Pause",prefix:q="graupl-",key:P=null,initializeClass:j="initializing",initialize:Ct=!1}){super({prefix:q,key:P,initializeClass:j}),this._dom.carousel=t,this._selectors.carouselItems=e,this._selectors.carouselItemContainer=s,this._selectors.carouselControls=i,this._selectors.carouselControlContainer=r,this._selectors.carouselTabs=o,this._selectors.carouselTabContainer=d,this._selectors.autoplay=m,this._selectors.next=p,this._selectors.previous=_,this._classes.active=g||"",this._classes.previous=y||"",this._classes.next=C||"",this._classes.play=v||"",this._classes.pause=k||"",this._autoplay=I,this._delays.transition=x,this._durations.transition=z,this._playText=F||"",this._pauseText=K||"",Ct&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.carousel),super.initialize(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._setCustomProps(),this.activateFirstItem(),this._handleAutoplay(),this._handleFocus(),this._handleClick(),this._handleHover(),this._handleKeydown(),this._handleKeyup(),this._store()}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this.initializeClass,this.dom.carousel)}),this.isValid&&(this._initialized=!0)}}get activeClass(){return this._classes.active}set activeClass(t){u({activeClass:t}),this._classes.active!==t&&(this._classes.active=t)}get previousClass(){return this._classes.previous}set previousClass(t){u({previousClass:t}),this._classes.previous!==t&&(this._classes.previous=t)}get nextClass(){return this._classes.next}set nextClass(t){u({nextClass:t}),this._classes.next!==t&&(this._classes.next=t)}get playClass(){return this._classes.play}set playClass(t){u({playClass:t}),this._classes.play!==t&&(this._classes.play=t)}get pauseClass(){return this._classes.pause}set pauseClass(t){u({pauseClass:t}),this._classes.pause!==t&&(this._classes.pause=t)}get currentItem(){return this._currentItem}set currentItem(t){n("number",{currentItem:t}),t!==this.currentItem&&(t<0?this._currentItem=0:t>=this.dom.carouselItems.length?this._currentItem=this.dom.carouselItems.length-1:this._currentItem=t,this._dom.carousel.querySelectorAll(this.selectors.carouselTab)&&this.dom.carouselItems.forEach((e,s)=>{e.setAttribute("aria-selected",s===this._currentItem)}))}get currentCarouselItem(){return this.dom.carouselItems[this.currentItem]}get currentCarouselTab(){return this.dom.carouselTabs[this.currentItem]}get autoplay(){return this._autoplay}set autoplay(t){n("boolean",{autoplay:t}),this._autoplay!==t&&(this._autoplay=t)}get transitionDelay(){return this._delays.transition}set transitionDelay(t){n("number",{transitionDelay:t}),t!==this.transitionDelay&&t>=0&&(this._delays.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&t>=0&&(this._durations.transition=t,this._setTransitionDuration())}get playText(){return this._playText}set playText(t){n("string",{playText:t}),this._playText!==t&&(this._playText=t)}get pauseText(){return this._pauseText}set pauseText(t){n("string",{pauseText:t}),this._pauseText!==t&&(this._pauseText=t)}get currentAction(){return this._currentAction}_validate(){super._validate();const t=n("boolean",{autoplay:this._autoplay},{shouldThrow:!1});t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1);const e=n("string",{playText:this._playText,pauseText:this._pauseText},{shouldThrow:!1});return e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1),this._valid}_setDOMElements(){this._setDOMElementType("carouselItemContainer",{context:this.dom.carousel}),this._setDOMElementType("carouselControlContainer",{context:this.dom.carousel}),this._setDOMElementType("carouselTabContainer",{context:this.dom.carousel}),this.dom.carouselItemContainer&&this._setDOMElementType("carouselItems",{context:this.dom.carouselItemContainer}),this.dom.carouselControlContainer&&(this._setDOMElementType("carouselControls",{context:this.dom.carouselControlContainer}),this._setDOMElementType("autoplay",{context:this.dom.carouselControlContainer}),this._setDOMElementType("next",{context:this.dom.carouselControlContainer}),this._setDOMElementType("previous",{context:this.dom.carouselControlContainer})),this._dom.carouselTabContainer&&this._setDOMElementType("carouselTabs",{context:this.dom.carouselTabContainer})}_setIds(){this.dom.carousel.id=this.dom.carousel.id||`carousel-${this.key}`,this.dom.carouselItems.forEach((t,e)=>{t.id=t.id||`carousel-item-${this.key}-${e}`}),this.dom.carouselTabs.forEach((t,e)=>{t.id=t.id||`carousel-tab-${this.key}-${e}`}),this._id=this.dom.carousel.id}_setAriaAttributes(){!E("section",{carousel:this.dom.carousel},{shouldThrow:!1}).status&&!this.dom.carousel.getAttribute("role")!=="region"&&this.dom.carousel.setAttribute("role","group"),this._dom.carousel.setAttribute("aria-roledescription","carousel"),this.dom.carouselTabContainer&&this.dom.carouselTabContainer.setAttribute("role","tablist"),this.dom.carouselTabs.forEach((t,e)=>{E("button",{tab:t},{shouldThrow:!1}).status||t.setAttribute("role","button"),t.setAttribute("aria-selected",e===0),t.setAttribute("aria-controls",this.dom.carouselItems[e].id)})}_setCustomProps(){this.dom.carousel.style.setProperty(`--${this.prefix}carousel-transition-duration`,`${this.transitionDuration}ms`)}_handleAutoplay(){this.autoplay?(a(this.pauseClass,this.dom.autoplay),l(this.playClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.pauseText),this.dom.carousel.setAttribute("aria-live","off"),this._setInterval(()=>this.activateNextItem(),this.transitionDelay)):(a(this.playClass,this.dom.autoplay),l(this.pauseClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.playText),this.dom.carousel.setAttribute("aria-live","polite"),this._clearInterval())}_handleFocus(){this._addEventListener("focusin",this.dom.carousel,()=>{this.autoplay&&this._clearInterval()}),this._addEventListener("focusout",this.dom.carousel,()=>{this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)})}_handleClick(){this._addEventListener("click",this.dom.next,()=>{this.activateNextItem()}),this._addEventListener("click",this.dom.previous,()=>{this.activatePreviousItem()}),this._addEventListener("click",this.dom.autoplay,()=>{this.toggleAutoplay()}),this.dom.carouselTabs.forEach((t,e)=>{this._addEventListener("click",t,()=>{this.currentItem>e?this._currentAction="previous":this._currentAction="next",this.activateItem(e)})})}_handleHover(){this._addEventListener("pointerover",this.dom.carousel,()=>{this.autoplay&&this._clearInterval()}),this._addEventListener("pointerleave",this.dom.carousel,()=>{this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)})}_handleKeydown(){this.dom.carouselControls.forEach(t=>{this._addEventListener("keydown",t,e=>{switch(c(e)){case"Space":case"Enter":h(e);break}})}),this.dom.carouselTabs.forEach(t=>{this._addEventListener("keydown",t,e=>{switch(c(e)){case"Space":case"Enter":h(e);break}})})}_handleKeyup(){this._addEventListener("keyup",this.dom.next,t=>{switch(c(t)){case"Space":case"Enter":this.activateNextItem(),h(t);break}}),this._addEventListener("keyup",this.dom.previous,t=>{switch(c(t)){case"Space":case"Enter":this.activatePreviousItem(),h(t);break}}),this._addEventListener("keyup",this.dom.autoplay,t=>{switch(c(t)){case"Space":case"Enter":this.toggleAutoplay(),h(t);break}}),this.dom.carouselTabs.forEach((t,e)=>{this._addEventListener("keyup",t,s=>{switch(c(s)){case"Space":case"Enter":this.activateItem(e),h(s);break}})})}activateCurrentItem(){a(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!0),a(this.activeClass,this.currentCarouselTab))}deactivateCurrentItem(){l(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!1),l(this.activeClass,this.currentCarouselTab))}activateItem(t){const e=this.currentItem;this.dom.carousel.dataset.grauplAction=this._currentAction,this.autoplay&&this._clearInterval(),a(this.previousClass,this.currentCarouselItem),a(this.nextClass,this.dom.carouselItems[t]),requestAnimationFrame(()=>{this.deactivateCurrentItem(),this.currentItem=t,this.activateCurrentItem(),requestAnimationFrame(()=>{setTimeout(()=>{l(this.previousClass,this.dom.carouselItems[e]),l(this.nextClass,this.currentCarouselItem)},this.transitionDuration)})}),this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)}activateFirstItem(){this.activateItem(0)}activateLastItem(){this.activateItem(this.dom.carouselItems.length-1)}activateNextItem(){this._currentAction="next",this.currentItem+1>=this.dom.carouselItems.length?this.activateFirstItem():this.activateItem(this.currentItem+1)}activatePreviousItem(){this._currentAction="previous",this.currentItem-1<0?this.activateLastItem():this.activateItem(this.currentItem-1)}toggleAutoplay(){this.autoplay=!this.autoplay,this._handleAutoplay()}},nt=ot,at=(t={},e=document,s=".carousel")=>{f("graupl-carousel-generator",s,e).forEach(i=>{const r=i.dataset.grauplCarouselOptions?JSON.parse(i.dataset.grauplCarouselOptions.replace(/'/g,'"'))||{}:{};new nt({carouselElement:i,initialize:!0,...t,...r})})};function lt(t=null){window.Graupl=window.Graupl||{},n("string",{type:t})&&(window.Graupl[t]=window.Graupl[t]||{})}function ht(t=null){return n("string",{type:t})?window.Graupl[t]:window.Graupl}function ct(t,e={}){n("string",{type:t})&&n("object",{data:e})&&(window.Graupl[t]=e)}function ut(t){n("string",{type:t})&&(window.Graupl[t]={})}function dt(t,e,s){n("string",{type:t,key:e})&&(window.Graupl[t][e]=s)}function mt(t,e){return n("string",{type:t,key:e})?window.Graupl[t][e]:null}function _t(t,e){n("string",{type:t,key:e})&&delete window.Graupl[t][e]}var Q={initializeStorage:lt,getStorage:ht,setStorage:ct,clearStorage:ut,pushToStorage:dt,getFromStorage:mt,removeFromStorage:_t},pt=(t={},e=document,s=".navigation")=>{f("graupl-navigation-generator",s,e).forEach(i=>{const r=i.dataset.grauplMenuType||DisclosureMenu;if(window[r]===void 0){console.warn(`Graupl navigation requires accessible-menu's ${r}. Please make sure to include it on this page.`);return}const o=i.dataset.grauplMenuOptions?JSON.parse(i.dataset.grauplMenuOptions.replace(/'/g,'"'))||{}:{},d=i.querySelector(".menu"),m=i.querySelector(".navigation-toggle")||null,p=m?i:null,_=new window[r]({menuElement:d,menuItemSelector:".menu-item",menuLinkSelector:".menu-link",submenuItemSelector:".submenu-item",submenuToggleSelector:".submenu-toggle",controllerElement:m,containerElement:p,...t,...o});Q.initializeStorage("menus"),Q.pushToStorage("menus",_.dom.menu.id,_)})},ft=class extends b{_dom={controller:null,disclosure:null,content:null};_protectedDOMElements=["controller","disclosure"];_selectors={content:""};_classes={open:"show",close:"hide",transition:"transitioning",initialize:"initializing"};_durations={transition:5e3,open:-1,close:-1};_open=new A(!1);_shouldOpen=!1;_closeOnBlur=!1;_mediaQueryListEventCallback=t=>{t.matches&&this.isOpen?this.close({preserveState:!0}):!t.matches&&!this.isOpen&&(this.hasOpened||this.shouldOpen)&&this.open()};_storageKey="disclosures";_events={expand:new CustomEvent("grauplDisclosureExpand",{bubbles:!0,detail:{disclosure:this}}),collapse:new CustomEvent("grauplDisclosureCollapse",{bubbles:!0,detail:{disclosure:this}})};constructor({disclosureElement:t,controllerElement:e,disclosureContentSelector:s=".disclosure-content",openClass:i="show",closeClass:r="hide",transitionClass:o="transitioning",transitionDuration:d=250,openDuration:m=-1,closeDuration:p=-1,closeOnBlur:_=!1,minWidth:g="",autoOpen:y=!1,mediaQuery:C="",prefix:v="graupl-",key:k=null,initializeClass:I="initializing",initialize:x=!1}={}){super({prefix:v,key:k,initializeClass:I}),this._dom.disclosure=t,this._dom.controller=e,this._selectors.content=s,this._classes.open=i||"",this._classes.close=r||"",this._classes.transition=o||"",this._durations.transition=d,this._durations.open=m,this._durations.close=p,this._closeOnBlur=_,this._breakpoint=g||"",this._shouldOpen=y,this._mediaQueryString=C||"",x&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.disclosure),super.initialize(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._setCustomProps(),this._handleMediaMatch(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.dom.controller.getAttribute("aria-expanded")==="true"||this.shouldOpen&&window.matchMedia(this.mediaQuery).matches?this._expand({emit:!1,transition:!1}):this._collapse({emit:!1,transition:!1})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this._classes.initialize,this.dom.disclosure)}),this.isValid&&(this._initialized=!0)}}get openClass(){return this._classes.open}set openClass(t){u({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){u({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){u({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setCustomProps())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){n("number",{openDuration:t}),this._durations.open!==t&&(this._durations.open=t,this._setCustomProps())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){n("number",{closeDuration:t}),this._durations.close!==t&&(this._durations.close=t,this._setCustomProps())}get minWidth(){return this.breakpoint}set minWidth(t){this.breakpoint=t}get closeOnBlur(){return this._closeOnBlur}set closeOnBlur(t){n("boolean",{closeOnBlur:t}),this._closeOnBlur!==t&&(this._closeOnBlur=t)}get isOpen(){return this._open.value}get hasOpened(){return this._open.committed}get shouldOpen(){return this._shouldOpen}set shouldOpen(t){n("boolean",{shouldOpen:t}),this._shouldOpen!==t&&(this._shouldOpen=t)}get shouldFocus(){let t=!1;return this.currentEvent==="keyboard"&&(t=!0),t}_validate(){super._validate();const t=n("boolean",{closeOnBlur:this._closeOnBlur,autoOpen:this._shouldOpen},{shouldThrow:!1});return t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1),this._valid}_setIds(){this.dom.disclosure.id=this.dom.disclosure.id||`disclosure-${this.key}`,this.dom.controller.id=this.dom.controller.id||`disclosure-controller-${this.key}`,this._id=this.dom.disclosure.id}_setAriaAttributes(){this.dom.controller.getAttribute("aria-expanded")!=="true"&&this.dom.controller.setAttribute("aria-expanded","false"),this.dom.controller.setAttribute("aria-controls",this.dom.disclosure.id),E("button",{controller:this.dom.controller},{shouldThrow:!1}).status||this.dom.controller.setAttribute("role","button")}_setCustomProps(){this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-transition-duration`,`${this.transitionDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-open-transition-duration`,`${this.openDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElements(){this._resetDOMElementType("content"),this._setDOMElementType("content",{context:this.dom.disclosure})}_expand({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","true"),e&&this.transitionlass!==""?(a(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{l(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{a(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{l(this.transitionClass,this.dom.disclosure)},this.openDuration)})})})):(a(this.openClass,this.dom.disclosure),l(this.closeClass,this.dom.disclosure)),this.dom.content.removeAttribute("inert"),t&&this._dispatchEvent("expand",this.dom.controller)}_collapse({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","false"),e&&this.transitionClass!==""?(a(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{l(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{a(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{l(this.transitionClass,this.dom.disclosure),this.dom.content.innert=!0},this.closeDuration)})})})):(a(this.closeClass,this.dom.disclosure),l(this.openClass,this.dom.disclosure)),this.dom.content.setAttribute("inert","true"),t&&this._dispatchEvent("collapse",this.dom.controller)}_handleFocus(){this._addEventListener("focusout",this.dom.disclosure,t=>{!this.closeOnBlur||this.currentEvent!=="keyboard"||t.relatedTarget===null||this.dom.disclosure.contains(t.relatedTarget)||this.dom.controller===t.relatedTarget||this.close()})}_handleClick(){this._addEventListener("click",this.dom.controller,t=>{this.currentEvent="mouse",t.button===0&&(h(t),this.toggle())}),this._addEventListener("click",document,t=>{this.focusState!=="self"||!this.closeOnBlur||(this.currentEvent="mouse",!this.dom.disclosure.contains(t.target)&&this.dom.controller!==t.target&&this.close())})}_handleKeydown(){this._addEventListener("keydown",this.dom.controller,t=>{switch(this.currentEvent="keyboard",c(t)){case"Space":case"Enter":h(t);break}}),this._addEventListener("keydown",this.dom.disclosure,t=>{this.currentEvent="keyboard",c(t)==="Escape"&&h(t)})}_handleKeyup(){this._addEventListener("keyup",this.dom.controller,t=>{switch(this.currentEvent="keyboard",c(t)){case"Space":case"Enter":this.toggle(),h(t);break}}),this._addEventListener("keyup",this.dom.disclosure,t=>{this.currentEvent="keyboard",c(t)==="Escape"&&(this.close(),h(t))})}open({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="self",this._expand(),this._open.value=!0,e||this._open.commit())}preview({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="none",this._expand(),this._open.value=!0,e||this._open.commit())}close({force:t=!1,preserveState:e=!1}={}){!this.isOpen&&!t||(this.focusState="none",this._collapse(),this._open.value=!1,e||this._open.commit())}toggle({force:t=!1,preserveState:e=!1}={}){this.isOpen?this.close({force:t,preserveState:e}):this.open({force:t,preserveState:e})}},gt=ft,yt=({options:t={},context:e=document,disclosureSelector:s=".disclosure",controllerSelector:i=".disclosure-toggle"}={})=>{f("graupl-disclosure-generator",s,e).forEach(r=>{const o=r.dataset.grauplDisclosureOptions?JSON.parse(r.dataset.grauplDisclosureOptions.replace(/'/g,'"'))||{}:{},d=`${i}[data-graupl-disclosure-target="${r.id}"]`,[m]=f("graupl-disclosure-generator",d,e);if(!m){console.warn(`No controller found for disclosure with ID "${r.id}". Please ensure there is an element with the selector "${d}".`),f.remove("graupl-disclosure-generator",r);return}new gt({disclosureElement:r,controllerElement:m,initialize:!0,...t,...o})})};document.addEventListener("DOMContentLoaded",()=>{et(),rt(),at(),pt(),yt()})})();
|
|
1
|
+
(function(){function E(t,e,{shouldThrow:s=!0}={}){const i={status:!0,errors:[]};try{if(typeof e!="object"){const r=typeof e;throw new TypeError(`Elements given to isValidInstance() must be inside of an object. "${r}" given.`)}for(const r in e)try{if(!(e[r]instanceof t)){const o=typeof e[r];throw new TypeError(`${r} must be an instance of ${t.name}. "${o}" given.`)}}catch(o){i.status=!1,i.errors.push(o)}}catch(r){i.status=!1,i.errors.push(r)}if(s&&!i.status)throw i.errors[0];return i}function n(t,e,{shouldThrow:s=!0}={}){const i={status:!0,errors:[]};try{if(typeof e!="object"){const r=typeof e;throw new TypeError(`Values given to isValidType() must be inside of an object. "${r}" given.`)}for(const r in e)try{const o=typeof e[r];if(o!==t)throw new TypeError(`${r} must be a ${t}. "${o}" given.`)}catch(o){i.status=!1,i.errors.push(o)}}catch(r){i.status=!1,i.errors.push(r)}if(s&&!i.status)throw i.errors[0];return i}function Q(t,{shouldThrow:e=!0}={}){const s={status:!0,errors:[]};try{if(typeof t!="object"){const i=typeof t;throw new TypeError(`Values given to isQuerySelector() must be inside of an object. "${i}" given.`)}for(const i in t)try{try{if(t[i]===null)throw new Error;document.querySelector(t[i])}catch{throw new TypeError(`${i} must be a valid query selector. "${t[i]}" given.`)}}catch(r){s.status=!1,s.errors.push(r)}}catch(i){s.status=!1,s.errors.push(i)}if(e&&!s.status)throw s.errors[0];return s}function d(t,{shouldThrow:e=!0}={}){const s={status:!0,errors:[]};try{if(typeof t!="object"||Array.isArray(t)){const i=typeof t;throw new TypeError(`Values given to isValidClassList() must be inside of an object. "${i}" given.`)}for(const i in t)try{const r=typeof t[i];if(r!=="string")if(Array.isArray(t[i]))t[i].forEach(o=>{if(typeof o!="string")throw new TypeError(`${i} must be a string or an array of strings. An array containing non-strings given.`)});else throw new TypeError(`${i} must be a string or an array of strings. "${r}" given.`);else{const o={};o[i]=t[i],Q(o)}}catch(r){s.status=!1,s.errors.push(r)}}catch(i){s.status=!1,s.errors.push(i)}if(e&&!s.status)throw s.errors[0];return s}function B(t,{shouldThrow:e=!0}={}){const s={status:!0,errors:[]};try{if(typeof t!="object"){const r=typeof t;throw new TypeError(`Values given to isValidState() must be inside of an object. "${r}" given.`)}const i=["none","self","child"];for(const r in t)try{if(!i.includes(t[r]))throw new TypeError(`${r} must be one of the following values: ${i.join(", ")}. "${t[r]}" given.`)}catch(o){s.status=!1,s.errors.push(o)}}catch(i){s.status=!1,s.errors.push(i)}if(e&&!s.status)throw s.errors[0];return s}function N(t,{shouldThrow:e=!0}={}){const s={status:!0,errors:[]};try{if(typeof t!="object"){const r=typeof t;throw new TypeError(`Values given to isValidEvent() must be inside of an object. "${r}" given.`)}const i=["none","mouse","keyboard","character"];for(const r in t)try{if(!i.includes(t[r]))throw new TypeError(`${r} must be one of the following values: ${i.join(", ")}. "${t[r]}" given.`)}catch(o){s.status=!1,s.errors.push(o)}}catch(i){s.status=!1,s.errors.push(i)}if(e&&!s.status)throw s.errors[0];return s}function b(t,e,{shouldThrow:s=!0}={}){const i={status:!0,errors:[]};try{if(n("string",{tagName:t},{shouldThrow:!0}).status&&E(HTMLElement,e,{shouldThrow:!0}).status){const r=t.toLowerCase();for(const o in e)try{if(e[o].tagName.toLowerCase()!==r)throw new TypeError(`${o} must be a <${r}> element. <${e[o].tagName.toLowerCase()}> given.`)}catch(c){i.status=!1,i.errors.push(c)}}}catch(r){i.status=!1,i.errors.push(r)}if(s&&!i.status)throw i.errors[0];return i}function G(t,e,{shouldThrow:s=!0}={}){const i={status:!0,errors:[]};try{if(!Object.prototype.hasOwnProperty.call(e.events,t))throw new TypeError(`Event type "${t}" is not valid for ${e.constructor.name}. Valid event types are: "${Object.keys(e.events).join('", ')}".`)}catch(r){i.status=!1,i.errors.push(r)}if(s&&!i.status)throw i.errors[0];return i}function a(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.add(t):e.classList.add(...t))}function l(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.remove(t):e.classList.remove(...t))}var R=class{_equals=Object.is;_current;_committed;constructor(t,{equals:e=Object.is}={}){this._equals=e||Object.is,this._current=t,this._committed=t}get value(){return this._current}set value(t){this._current=t}get committed(){return this._committed}get isDirty(){return!this._equals(this._current,this._committed)}commit(){return this._committed=this._current,this}reset(){return this._current=this._committed,this}update(t){return this._current=t(this._current),this}},T=R,J=class{_scope;_type="_default";_storage={};constructor({scope:t,type:e=null,initialize:s=!0}={}){this._scope=t,this._type=e||"_default",s&&this.initialize()}initialize(){window[this.scope]=this}get scope(){return this._scope}get type(){return this._type}set type(t){n("string",{type:t})&&(this._type=t)}get storage(){return this._storage}get({type:t=this.type,key:e=null}={}){const s=n("string",{type:t});if(!s.status)throw new Error(`StorageManager (${this.scope}): ${s.message}`);if(!this.storage[t])throw new Error(`StorageManager (${this.scope}): Type "${t}" is not initialized.`);if(e!==null){const i=n("string",{key:e});if(!i.status)throw new Error(`StorageManager (${this.scope}): ${i.message}`);return this.storage[t][e]}return this.storage[t]}set({type:t=this.type,key:e=null,data:s={}}={}){const i=n("string",{type:t}),r=n("object",{data:s});if(!i.status)throw new Error(`StorageManager (${this.scope}): ${i.message}`);if(!r.status)throw new Error(`StorageManager (${this.scope}): ${r.message}`);if(e!==null){const o=n("string",{key:e});if(!o.status)throw new Error(`StorageManager (${this.scope}): ${o.message}`);this._storage[t]||(this._storage[t]={}),this._storage[t][e]=s}else this._storage[t]=s}clear({type:t=this.type,key:e=null}={}){const s=n("string",{type:t});if(!s.status)throw new Error(`StorageManager (${this.scope}): ${s.message}`);if(e!==null){const i=n("string",{key:e});if(!i.status)throw new Error(`StorageManager (${this.scope}): ${i.message}`);delete this.storage[t][e]}else delete this.storage[t]}dispose(){delete this._storage,delete this}},O=J,U=class{_dom={};_protectedDOMElements=[];_selectors={};_elements={};_classes={initialize:""};_durations={};_delays={};_focusState="none";_currentEvent="none";_breakpoint="";_mediaQueryString="";_mediaQueryList=null;_mediaQueryListEventCallback=t=>{t.matches};_intervals={};_timeouts={};_listeners=[];_events={};_prefix="graupl-";_key="";_storageKey="components";_id="";_valid=!0;_initialized=!1;_errors=[];constructor({prefix:t="graupl-",key:e=null,initializeClass:s="initializing"}={}){this._classes.initialize=s||"",this._prefix=t||"",this._key=e||""}initialize(){try{if(!this._validate())throw new Error(`Graupl ${this.constructor.name}: Cannot initialize component. The following errors have been found:
|
|
2
|
+
- ${this.errors.map(t=>t.message).join(`
|
|
3
|
+
- `)}`);this._generateKey()}catch(t){console.error(t)}}init(){this.initialize()}get dom(){return this._dom}get selectors(){return this._selectors}get elements(){return this._elements}get classes(){return this._classes}get durations(){return this._durations}get delays(){return this._delays}get intervals(){return this._intervals}get timeouts(){return this._timeouts}get listeners(){return this._listeners}get events(){return this._events}get initializeClass(){return this._classes.initialize}set initializeClass(t){d({initializeClass:t}),this._classes.initialize!==t&&(this._classes.initialize=t)}get focusState(){return this._focusState}set focusState(t){B({focusState:t}),this._focusState!==t&&(this._focusState=t)}get currentEvent(){return this._currentEvent}set currentEvent(t){N({currentEvent:t}),this._currentEvent!==t&&(this._currentEvent=t)}get breakpoint(){return this._breakpoint}set breakpoint(t){n("string",{breakpoint:t}),this._breakpoint!==t&&(this._breakpoint=t)}get mediaQuery(){return this._mediaQueryString!==""?this._mediaQueryString:this._breakpoint===""?"":`(width <= ${this._breakpoint})`}set mediaQuery(t){n("string",{mediaQuery:t}),this._mediaQueryString!==t&&(this._mediaQueryString=t)}get prefix(){return this._prefix}get key(){return this._key}get id(){return this._id}get isValid(){return this._valid}get isInitialized(){return this._initialized}get errors(){return this._errors}_validate(){if(Object.keys(this._dom).length>0){const s={};for(const r of Object.keys(this._dom))Array.isArray(this._dom[r])?this._dom[r].forEach((o,c)=>{s[`${r}Element[${c}]`]=o}):this._dom[r]!==null&&(s[`${r}Element`]=this._dom[r]);const i=E(HTMLElement,s,{shouldThrow:!1});i.status||(this._errors=[...this._errors,...i.errors],this._valid=!1)}if(Object.keys(this._selectors).length>0){const s={};for(const r of Object.keys(this._selectors))s[`${r}Selector`]=this._selectors[r];const i=Q(s,{shouldThrow:!1});i.status||(this._errors=[...this._errors,...i.errors],this._valid=!1)}if(Object.keys(this._classes).length>0){const s={};for(const r of Object.keys(this._classes))this._classes[r]!==""&&(s[`${r}Class`]=this._classes[r]);const i=d(s,{shouldThrow:!1});i.status||(this._errors=[...this._errors,...i.errors],this._valid=!1)}if(Object.keys(this._durations).length>0){const s={};for(const r of Object.keys(this._durations))s[`${r}Duration`]=this._durations[r];const i=n("number",s,{shouldThrow:!1});i.status||(this._errors=[...this._errors,...i.errors],this._valid=!1)}if(Object.keys(this.delays).length>0){const s={};for(const r of Object.keys(this.delays))s[`${r}Delay`]=this.delays[r];const i=n("number",s,{shouldThrow:!1});i.status||(this._errors=[...this._errors,...i.errors],this._valid=!1)}const t={_storageKey:this._storageKey,key:this._key,prefix:this._prefix,mediaQuery:this._mediaQueryString,breakpoint:this._breakpoint};this._protectedDOMElements.forEach(s=>{t[`_protectedDOMElementType[${s}]`]=s});const e=n("string",t,{shouldThrow:!1});return e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1),this._valid}_generateKey(t=!1){(this._key===""||t)&&(this._key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){}_setAriaAttributes(){}_setCustomProps(){}_setDOMElementType(t,{context:e,overwrite:s=!0,strict:i=!1}={}){if(typeof this.selectors[t]!="string")throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`);if(this._protectedDOMElements.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be set through _setDOMElementType because it is a protected element.`);E(HTMLElement,{context:e});const r=Array.from(e.querySelectorAll(this.selectors[t])).filter(o=>i?o.parentElement===e:!0);Array.isArray(this._dom[t])?s?this._dom[t]=r:this._dom[t]=[...this._dom[t],...r]:this._dom[t]=r[0]||null}_resetDOMElementType(t){if(typeof this.selectors[t]!="string")throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`);if(this._protectedDOMElements.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be reset through _resetDOMElementType because it is a protected element.`);Array.isArray(this._dom[t])?this._dom[t]=[]:this._dom[t]=null}_setDOMElements(){}_createChildElements(){}_handleMediaMatch(){this.mediaQuery!==""&&(this._mediaQueryList=window.matchMedia(this.mediaQuery),this._addEventListener("change",this._mediaQueryList,this._mediaQueryListEventCallback),this._mediaQueryListEventCallback(this._mediaQueryList))}_handleFocus(){}_handleClick(){}_handleKeydown(){}_handleKeyup(){}_store(){E(O,{storage:window.GrauplStorage},{shouldThrow:!1}).status||new O({scope:"GrauplStorage"}),window.GrauplStorage.set({key:this.id!==""?this.id:this.key,type:this._storageKey,data:this})}_unstore(){E(O,{storage:window.GrauplStorage},{shouldThrow:!1}).status&&window.GrauplStorage.clear({key:this.id!==""?this.id:this.key,type:this._storageKey})}_setInterval(t,e,s="_default"){this._clearInterval(s),this._intervals[s]=setInterval(t,e)}_clearInterval(t="_default"){clearInterval(this._intervals[t])}_clearIntervals(){for(const t of Object.keys(this._intervals))this._clearInterval(t)}_setTimeout(t,e,s="_default"){this._clearTimeout(s),this._timeouts[s]=setTimeout(t,e)}_clearTimeout(t="_default"){clearTimeout(this._timeouts[t])}_clearTimeouts(){for(const t of Object.keys(this._timeouts))this._clearTimeout(t)}_registerEvent(t,{bubbles:e=!0,detail:s={}}={}){n("string",{name:t}),n("boolean",{bubbles:e}),n("object",{detail:s});const i=`graupl${this.constructor.name}${t.charAt(0).toUpperCase()}${t.slice(1)}`;this._events[t]=new CustomEvent(i,{bubbles:e,detail:{component:this,...s}})}_dispatchEvent(t,e){G(t,this),E(HTMLElement,{element:e}),e.dispatchEvent(this.events[t])}_addEventListener(t,e,s,i={}){e.addEventListener(t,s,i),this._listeners.push({type:t,element:e,listener:s,options:i})}_removeEventListener(t,e,s,i={}){e.removeEventListener(t,s,i);let r=-1;this._listeners.forEach((o,c)=>{o.type===t&&o.element===e&&o.listener===s&&JSON.stringify(o.options)===JSON.stringify(i)&&(r=c)}),r!==-1&&this._listeners.splice(r,1)}_removeEventListeners({type:t=null,element:e=null}={}){[...this._listeners].forEach(s=>{t!==null&&s.type!==t||e!==null&&s.element!==e||this._removeEventListener(s.type,s.element,s.listener,s.options)})}dispose(){this._clearIntervals(),this._clearTimeouts(),this._removeEventListeners(),this._unstore(),delete this}},w=U,W=class extends w{_protectedDOMElements=["item","toggle","header","content"];_open=new T(!1);_locked=new T(!1);constructor({accordionItemElement:t,accordionItemToggleElement:e,accordionItemHeaderElement:s,accordionItemContentElement:i,parentAccordion:r=null}){super({prefix:r.prefix,key:r.key}),this._dom.item=t,this._dom.toggle=e,this._dom.header=s,this._dom.content=i,this._elements.parent=r,this._registerEvent("expand",{detail:{item:this}}),this._registerEvent("collapse",{detail:{item:this}})}initialize(){this._setIds(),this._setAriaAttributes(),this.dom.toggle.getAttribute("aria-expanded")==="true"?this.show({force:!0,emit:!1,transition:!1}):this.hide({force:!0,emit:!1,transition:!1})}get isOpen(){return this._open.value}get isLocked(){return this._locked.value}_setIds(){const{key:t}=this.elements.parent,e=this.elements.parent.dom.accordionItems.indexOf(this.dom.item);this.dom.item.id=this.dom.item.id||`accordion-item-${t}-${e}`,this.dom.toggle.id=this.dom.toggle.id||`accordion-item-toggle-${t}-${e}`,this.dom.header.id=this.dom.header.id||`accordion-item-header-${t}-${e}`,this.dom.content.id=this.dom.content.id||`accordion-item-content-${t}-${e}`}_setAriaAttributes(){b("button",{toggle:this.dom.toggle},{shouldThrow:!1}).status||this.dom.toggle.setAttribute("role","button"),this.dom.toggle.getAttribute("aria-expanded")!=="true"&&this.dom.toggle.setAttribute("aria-expanded","false"),this.dom.toggle.setAttribute("aria-controls",this.dom.content.id),b("section",{content:this.dom.content},{shouldThrow:!1}).status||this.dom.content.setAttribute("role","region"),this.dom.content.setAttribute("aria-labelledby",this.dom.toggle.id)}_reveal({emit:t=!0,transition:e=!0}={}){const{closeClass:s,openClass:i,transitionClass:r,openDuration:o}=this.elements.parent;this.dom.toggle.setAttribute("aria-expanded","true"),e&&r!==""?(a(r,this.dom.item),requestAnimationFrame(()=>{l(s,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{a(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height+this.dom.content.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{this._setTimeout(()=>{l(r,this.dom.item),this.dom.item.style.height=""},o)})})})):(a(i,this.dom.item),l(s,this.dom.item)),this.dom.content.removeAttribute("inert"),t&&this._dispatchEvent("expand",this.dom.item)}_conceal({emit:t=!0,transition:e=!0}={}){const{closeClass:s,openClass:i,transitionClass:r,closeDuration:o}=this.elements.parent;this.dom.toggle.setAttribute("aria-expanded","false"),e&&r!==""?(a(r,this.dom.item),this.dom.item.style.height=`${this.dom.item.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{l(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{a(s,this.dom.item),requestAnimationFrame(()=>{this._setTimeout(()=>{l(r,this.dom.item),this.dom.item.style.height=""},o)})})})):(a(s,this.dom.item),l(i,this.dom.item)),this.dom.content.setAttribute("inert","true"),t&&this._dispatchEvent("collapse",this.dom.item)}show({force:t=!1,preserveState:e=!1,emit:s=!0,transition:i=!0}={}){this.isOpen&&!t||(this._reveal({emit:s,transition:i}),this._open.value=!0,e||this._open.commit(),this.elements.parent.allowExpandMultiple||(this.unlockSiblings(),this.closeSiblings()),this.elements.parent.allowCollapseAll||(this.elements.parent.openAccordionItems.length<=1?this.lock():this.unlockSiblings()))}hide({force:t=!1,preserveState:e=!1,emit:s=!0,transition:i=!0}={}){!this.isOpen&&!t||!this.elements.parent.allowCollapseAll&&this.elements.parent.openAccordionItems.length<=1||(this._conceal({emit:s,transition:i}),this._open.value=!1,e||this._open.commit(),!this.elements.parent.allowCollapseAll&&this.elements.parent.openAccordionItems.length===1&&this.elements.parent.openAccordionItems[0].lock())}toggle(){this.isOpen?this.hide():this.show()}focus(){this.dom.toggle.focus()}blur(){this.dom.toggle.blur()}lock(){this._locked.value=!0,this._locked.commit(),this.dom.toggle.setAttribute("disabled","true")}unlock(){this._locked.value=!1,this._locked.commit(),this.dom.toggle.removeAttribute("disabled")}closeSiblings(){this.elements.parent&&this.elements.parent.elements.accordionItems.forEach(t=>{t!==this&&t.hide()})}unlockSiblings(){this.elements.parent&&this.elements.parent.elements.accordionItems.forEach(t=>{t!==this&&t.unlock()})}},Z=W;function u(t){try{const e=t.key||t.keyCode,s={Enter:e==="Enter"||e===13,Space:e===" "||e==="Spacebar"||e===32,Escape:e==="Escape"||e==="Esc"||e===27,ArrowUp:e==="ArrowUp"||e==="Up"||e===38,ArrowRight:e==="ArrowRight"||e==="Right"||e===39,ArrowDown:e==="ArrowDown"||e==="Down"||e===40,ArrowLeft:e==="ArrowLeft"||e==="Left"||e===37,Home:e==="Home"||e===36,End:e==="End"||e===35,Character:isNaN(e)&&!!e.match(/^[a-zA-Z]{1}$/),Tab:e==="Tab"||e===9,Asterisk:e==="*"||e===56};return Object.keys(s).find(i=>s[i]===!0)||""}catch{return""}}function h(t){t.preventDefault(),t.stopPropagation()}var X=class extends w{_protectedDOMElements=["accordion"];_optionalKeySupport=!0;_expandMultiple=!0;_collapseAll=!0;_currentChild=0;_storageKey="accordions";constructor({accordionElement:t,accordionItemsSelector:e=".accordion-item",accordionItemTogglesSelector:s=".accordion-item-toggle",accordionItemHeadersSelector:i=".accordion-item-header",accordionItemContentsSelector:r=".accordion-item-content",accordionControlContainerSelector:o=".accordion-control-container",accordionControlsSelector:c=".accordion-control",expandControllerSelector:m=".expand-all",collapseControllerSelector:_=".collapse-all",openClass:f="show",closeClass:g="hide",transitionClass:y="transitioning",transitionDuration:C=300,openDuration:k=-1,closeDuration:v=-1,optionalKeySupport:A=!1,allowExpandMultiple:I=!0,allowCollapseAll:z=!0,automaticActivation:K=!1,prefix:j="graupl-",key:q=null,initializeClass:F="initializing",initialize:P=!1}){super({prefix:j,key:q,initializeClass:F}),this._dom.accordion=t,this._dom.accordionItems=[],this._dom.accordionItemToggles=[],this._dom.accordionItemHeaders=[],this._dom.accordionItemContents=[],this._dom.accordionControlContainer=null,this._dom.accordionControls=[],this._dom.expandController=[],this._dom.collapseController=[],this._selectors.accordionItems=e,this._selectors.accordionItemToggles=s,this._selectors.accordionItemHeaders=i,this._selectors.accordionItemContents=r,this._selectors.accordionControlContainer=o,this._selectors.accordionControls=c,this._selectors.expandController=m,this._selectors.collapseController=_,this._elements.accordionItems=[],this._classes.open=f||"",this._classes.close=g||"",this._classes.transition=y||"",this._durations.transition=C,this._durations.open=k,this._durations.close=v,this._automatic=K,this._optionalKeySupport=A,this._expandMultiple=I,this._collapseAll=z,P&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.accordion),super.initialize(),this._setDOMElements(),this._setIds(),this._setCustomProps(),this._createChildElements(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.dom.expandController.length>0&&!this.allowExpandMultiple&&this.dom.expandController.forEach(t=>{t.setAttribute("disabled","disabled")}),this.dom.collapseController.length>0&&!this.allowCollapseAll&&this.dom.collapseController.forEach(t=>{t.setAttribute("disabled","disabled")})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this._classes.initialize,this.dom.accordion)}),this.isValid&&(this._initialized=!0)}}get openClass(){return this._classes.open}set openClass(t){d({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){d({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){d({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setTransitionDurations())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){n("number",{openDuration:t}),this._durations.open!==t&&(this._durations.open=t,this._setTransitionDurations())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){n("number",{closeDuration:t}),this._durations.close!==t&&(this._durations.close=t,this._setTransitionDurations())}get currentChild(){return this._currentChild}set currentChild(t){n("number",{currentChild:t}),this._currentChild!==t&&t>=0&&t<this.elements.accordionItems.length&&(this._currentChild=t)}get optionalKeySupport(){return this._optionalKeySupport}set optionalKeySupport(t){n("boolean",{optionalKeySupport:t}),this._optionalKeySupport!==t&&(this._optionalKeySupport=t)}get currentAccordionItem(){return this.elements.accordionItems[this.currentChild]}get openAccordionItems(){return this.elements.accordionItems.filter(t=>t.isOpen)}get allowExpandMultiple(){return this._expandMultiple}set allowExpandMultiple(t){n("boolean",{allowExpandMultiple:t}),this._expandMultiple!==t&&(this._expandMultiple=t,this.dom.expandController.length>0&&(t?this.dom.expandController.forEach(e=>{e.removeAttribute("disabled")}):this.dom.expandController.forEach(e=>{e.setAttribute("disabled","disabled")})))}get allowCollapseAll(){return this._collapseAll}set allowCollapseAll(t){n("boolean",{allowCollapseAll:t}),this._collapseAll!==t&&(this._collapseAll=t,this.dom.collapseController.length>0&&(t?this.dom.collapseController.forEach(e=>{e.removeAttribute("disabled")}):this.dom.collapseController.forEach(e=>{e.setAttribute("disabled","disabled")})))}_validate(){const t=n("boolean",{automaticActivation:this._automatic,optionalKeySupport:this._optionalKeySupport,allowExpandMultiple:this._expandMultiple,allowCollapseAll:this._collapseAll});return t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1),super._validate()}_setIds(){this.dom.accordion.id=this.dom.accordion.id||`accordion-${this.key}`,this._id=this.dom.accordion.id}_setCustomProps(){this.dom.accordion.style.setProperty(`--${this.prefix}accordion-transition-duration`,`${this.transitionDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-open-transition-duration`,`${this.openDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElements(){this._setDOMElementType("accordionItems",{context:this.dom.accordion}),this._resetDOMElementType("accordionItemToggles"),this._setDOMElementType("accordionControlContainer",{context:this.dom.accordion}),this.dom.accordionControlContainer&&(this._setDOMElementType("accordionControls",{context:this.dom.accordionControlContainer}),this._setDOMElementType("expandController",{context:this.dom.accordionControlContainer}),this._setDOMElementType("collapseController",{context:this.dom.accordionControlContainer})),this.dom.accordionItems.forEach(t=>{this._setDOMElementType("accordionItemToggles",{context:t,overwrite:!1,strict:!1}),this._setDOMElementType("accordionItemHeaders",{context:t,overwrite:!1,strict:!1}),this._setDOMElementType("accordionItemContents",{context:t,overwrite:!1,strict:!1})})}_createChildElements(){this.dom.accordionItems.forEach((t,e)=>{const s=new Z({accordionItemElement:t,accordionItemToggleElement:this.dom.accordionItemToggles[e],accordionItemHeaderElement:this.dom.accordionItemHeaders[e],accordionItemContentElement:this.dom.accordionItemContents[e],parentAccordion:this});s.initialize(),this.elements.accordionItems.push(s)})}_handleFocus(){this.elements.accordionItems.forEach((t,e)=>{this._addEventListener("focus",t.dom.toggle,()=>{this.currentChild=e})})}_handleClick(){this.elements.accordionItems.forEach((t,e)=>{this._addEventListener("click",t.dom.toggle,()=>{this.currentChild=e,this.currentEvent="mouse",t.toggle()})}),this.dom.expandController.forEach(t=>{this._addEventListener("click",t,()=>{this.currentEvent="mouse",this.allowExpandMultiple&&this.openChildren()})}),this.dom.collapseController.forEach(t=>{this._addEventListener("click",t,()=>{this.currentEvent="mouse",this.allowCollapseAll&&this.closeChildren()})})}_handleKeydown(){this.dom.accordionItemToggles.forEach(t=>{this._addEventListener("keydown",t,e=>{const s=u(e);["Space","Enter"].includes(s)?(h(e),this.currentEvent="keyboard"):this.optionalKeySupport&&["ArrowDown","ArrowUp","Home","End"].includes(s)&&(h(e),this.currentEvent="keyboard")})}),this.dom.accordionControls.forEach(t=>{this._addEventListener("keydown",t,e=>{const s=u(e);["Space","Enter"].includes(s)&&(h(e),this.currentEvent="keyboard")})})}_handleKeyup(){this.dom.accordionItemToggles.forEach(t=>{this._addEventListener("keyup",t,e=>{const s=u(e);switch(s){case"Space":case"Enter":h(e),this.currentEvent="keyboard",this.currentAccordionItem.toggle();break}if(this.optionalKeySupport)switch(s){case"Home":h(e),this.focusFirstChild();break;case"End":h(e),this.focusLastChild();break;case"ArrowDown":h(e),this.focusNextChild();break;case"ArrowUp":h(e),this.focusPreviousChild();break}})}),this.dom.expandController.forEach(t=>{this._addEventListener("keyup",t,e=>{switch(u(e)){case"Space":case"Enter":h(e),this.currentEvent="keyboard",this.allowExpandMultiple&&this.openChildren()}})}),this.dom.collapseController.forEach(t=>{this._addEventListener("keyup",t,e=>{switch(u(e)){case"Space":case"Enter":h(e),this.currentEvent="keyboard",this.allowCollapseAll&&this.closeChildren()}})})}focusCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.focus()}focusChild(t){this.blurCurrentChild(),this.currentChild=t,this.focusCurrentChild()}focusFirstChild(){this.focusChild(0)}focusLastChild(){this.focusChild(this.elements.accordionItems.length-1)}focusNextChild(){this.currentChild<this.elements.accordionItems.length-1?this.focusChild(this.currentChild+1):this.focusCurrentChild()}focusPreviousChild(){this.currentChild>0?this.focusChild(this.currentChild-1):this.focusCurrentChild()}blurCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.blur()}openChildren(){this.elements.accordionItems.forEach(t=>t.show())}closeChildren(){this.elements.accordionItems.forEach(t=>t.hide())}},Y=X;const V=/[\11\12\14\15\40]+/,S="data-once",tt=document;function M(t,e,s){return t[`${e}Attribute`](S,s)}function x(t){if(typeof t!="string")throw new TypeError("once ID must be a string");if(t===""||V.test(t))throw new RangeError("once ID must not be empty or contain spaces");return`[${S}~="${t}"]`}function et(t){if(!(t instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function $(t,e=tt){let s=t;if(t===null)s=[];else if(t)if(e instanceof Document||e instanceof DocumentFragment||e instanceof Element)typeof t=="string"?s=e.querySelectorAll(t):t instanceof Element&&(s=[t]);else throw new TypeError('Context must be an object of type "Document", "DocumentFragment", or "Element".');else throw new TypeError("Selector must not be empty");return Array.prototype.slice.call(s)}function L(t,e,s){return e.filter(i=>{const r=et(i)&&i.matches(t);return r&&s&&s(i),r})}function H(t,{add:e,remove:s}){const i=[];M(t,"has")&&M(t,"get").trim().split(V).forEach(o=>{i.indexOf(o)<0&&o!==s&&i.push(o)}),e&&i.push(e);const r=i.join(" ");M(t,r===""?"remove":"set",r)}function D(t,e,s){return L(`:not(${x(t)})`,$(e,s),i=>H(i,{add:t}))}D.remove=(t,e,s)=>L(x(t),$(e,s),i=>H(i,{remove:t})),D.filter=(t,e,s)=>L(x(t),$(e,s)),D.find=(t,e)=>$(t?x(t):`[${S}]`,e);var p=D,st=(t={},e=document,s=".accordion")=>{p("graupl-accordion-generator",s,e).forEach(i=>{const r=i.dataset.grauplAccordionOptions?JSON.parse(i.dataset.grauplAccordionOptions.replace(/'/g,'"'))||{}:{};new Y({accordionElement:i,initialize:!0,...t,...r})})},it=class extends w{_protectedDOMElements=["alert","controller"];_hidden=new T(!1);_storageKey="alerts";constructor({alertElement:t,controllerElement:e=null,showClass:s="show",hideClass:i="hide",transitionClass:r="transitioning",transitionDuration:o=150,showDuration:c=-1,hideDuration:m=-1,isHidden:_=!1,prefix:f="graupl-",key:g=null,initializeClass:y="initializing",initialize:C=!1}={}){super({prefix:f,key:g,initializeClass:y}),this._dom.alert=t,this._dom.controller=e,this._classes.show=s||"",this._classes.hide=i||"",this._classes.transition=r||"",this._durations.transition=o,this._durations.show=c,this._durations.hide=m,this._hidden.value=_,this._hidden.commit(),this._registerEvent("show",{detail:{alert:this}}),this._registerEvent("hide",{detail:{alert:this}}),C&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.alert),super.initialize(),this._setIds(),this._setCustomProps(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.isHidden&&this._conseal({emit:!1,transition:!1})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this._classes.initialize,this.dom.alert)}),this.isValid&&(this._initialized=!0)}}get showClass(){return this._classes.show}set showClass(t){d({showClass:t}),this._classes.show!==t&&(this._classes.show=t)}get hideClass(){return this._classes.hide}set hideClass(t){d({hideClass:t}),this._classes.hide!==t&&(this._classes.hide=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){d({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setCustomProps())}get showDuration(){return this._durations.show===-1?this.transitionDuration:this._durations.show}set showDuration(t){n("number",{showDuration:t}),this._durations.show!==t&&(this._durations.show=t,this._setCustomProps())}get hideDuration(){return this._durations.hide===-1?this.transitionDuration:this._durations.hide}set hideDuration(t){n("number",{hideDuration:t}),this._durations.hide!==t&&(this._durations.hide=t,this._setCustomProps())}get isHidden(){return this._hidden.value}_validate(){const t=n("boolean",{isHidden:this._hidden.value},{shouldThrow:!1});return t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1),super._validate()}_setIds(){this.dom.alert.id=this.dom.alert.id||`alert-${this.key}`,this.dom.controller.id=this.dom.controller.id||`alert-controller-${this.key}`,this._id=this.dom.alert.id}_reveal({emit:t=!0,transition:e=!0}={}){e&&this.transitionClass!==""?(a(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{l(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{a(this.showClass,this.dom.alert),requestAnimationFrame(()=>{this._setTimeout(()=>l(this.transitionClass,this.dom.alert),this.showDuration)})})})):(a(this.showClass,this.dom.alert),l(this.hideClass,this.dom.alert)),this.dom.alert.removeAttribute("inert"),t&&this._dispatchEvent("show",this.dom.alert)}_conseal({emit:t=!0,transition:e=!0}={}){e&&this.transitionClass!==""?(a(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{l(this.showClass,this.dom.alert),requestAnimationFrame(()=>{a(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{this._setTimeout(()=>l(this.transitionClass,this.dom.alert),this.hideDuration)})})})):(a(this.hideClass,this.dom.alert),l(this.showClass,this.dom.alert)),this.dom.alert.setAttribute("inert","true"),t&&this._dispatchEvent("hide",this.dom.alert)}_setCustomProps(){this.dom.alert.style.setProperty(`--${this.prefix}alert-transition-duration`,`${this.transitionDuration}ms`),this.dom.alert.style.setProperty(`--${this.prefix}alert-show-transition-duration`,`${this.showDuration}ms`),this.dom.alert.style.setProperty(`--${this.prefix}alert-hide-transition-duration`,`${this.hideDuration}ms`)}_handleClick(){this.dom.controller!==null&&this._addEventListener("click",this.dom.controller,()=>this.hide())}_handleKeydown(){this.dom.controller!==null&&this._addEventListener("keydown",this.dom.controller,t=>{const e=u(t);(e==="Space"||e==="Enter")&&h(t)})}_handleKeyup(){this.dom.controller!==null&&this._addEventListener("keyup",this.dom.controller,t=>{const e=u(t);(e==="Space"||e==="Enter")&&this.hide()})}show({force:t=!1,preserveState:e=!1}={}){!this.isHidden&&!t||(this.focusState="self",this._reveal(),this._hidden.value=!1,e||this._hidden.commit())}hide({force:t=!1,preserveState:e=!1}={}){this.isHidden&&!t||(this.focusState="none",this._conseal(),this._hidden.value=!0,e||this._hidden.commit())}},rt=it,ot=(t={},e=document,s=".alert")=>{p("graupl-alert-generator",s,e).forEach(i=>{const r=i.dataset.grauplAlertOptions?JSON.parse(i.dataset.grauplAlertOptions.replace(/'/g,'"'))||{}:{};new rt({alertElement:i,controllerElement:i.querySelector(".alert-dismisser")||null,initialize:!0,...t,...r})})},nt=class extends w{_protectedDOMElements=["carousel"];_currentItem=0;_autoplay=!0;_playText="Play";_pauseText="Pause";_currentAction="next";_storageKey="carousels";constructor({carouselElement:t,carouselItemsSelector:e=".carousel-item",carouselItemContainerSelector:s=".carousel-item-container",carouselControlsSelector:i=".carousel-control",carouselControlContainerSelector:r=".carousel-control-container",carouselTabsSelector:o=".carousel-tab",carouselTabContainerSelector:c=".carousel-tab-container",autoplaySelector:m=".autoplay",nextSelector:_=".next",previousSelector:f=".previous",activeClass:g="active",previousClass:y="previous",nextClass:C="next",playClass:k="play",pauseClass:v="pause",autoplay:A=!0,transitionDelay:I=1e4,transitionDuration:z=500,playText:K="Play",pauseText:j="Pause",prefix:q="graupl-",key:F=null,initializeClass:P="initializing",initialize:mt=!1}){super({prefix:q,key:F,initializeClass:P}),this._dom.carousel=t,this._dom.carouselItems=[],this._dom.carouselItemContainer=null,this._dom.carouselControls=[],this._dom.carouselControlContainer=null,this._dom.carouselTabs=[],this._dom.carouselTabContainer=null,this._dom.autoplay=null,this._dom.next=null,this._dom.previous=null,this._selectors.carouselItems=e,this._selectors.carouselItemContainer=s,this._selectors.carouselControls=i,this._selectors.carouselControlContainer=r,this._selectors.carouselTabs=o,this._selectors.carouselTabContainer=c,this._selectors.autoplay=m,this._selectors.next=_,this._selectors.previous=f,this._classes.active=g||"",this._classes.previous=y||"",this._classes.next=C||"",this._classes.play=k||"",this._classes.pause=v||"",this._autoplay=A,this._delays.transition=I,this._durations.transition=z,this._playText=K||"",this._pauseText=j||"",mt&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.carousel),super.initialize(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._setCustomProps(),this.activateFirstItem(),this._handleAutoplay(),this._handleFocus(),this._handleClick(),this._handleHover(),this._handleKeydown(),this._handleKeyup(),this._store()}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this.initializeClass,this.dom.carousel)}),this.isValid&&(this._initialized=!0)}}get activeClass(){return this._classes.active}set activeClass(t){d({activeClass:t}),this._classes.active!==t&&(this._classes.active=t)}get previousClass(){return this._classes.previous}set previousClass(t){d({previousClass:t}),this._classes.previous!==t&&(this._classes.previous=t)}get nextClass(){return this._classes.next}set nextClass(t){d({nextClass:t}),this._classes.next!==t&&(this._classes.next=t)}get playClass(){return this._classes.play}set playClass(t){d({playClass:t}),this._classes.play!==t&&(this._classes.play=t)}get pauseClass(){return this._classes.pause}set pauseClass(t){d({pauseClass:t}),this._classes.pause!==t&&(this._classes.pause=t)}get currentItem(){return this._currentItem}set currentItem(t){n("number",{currentItem:t}),t!==this.currentItem&&(t<0?this._currentItem=0:t>=this.dom.carouselItems.length?this._currentItem=this.dom.carouselItems.length-1:this._currentItem=t,this._dom.carousel.querySelectorAll(this.selectors.carouselTab)&&this.dom.carouselItems.forEach((e,s)=>{e.setAttribute("aria-selected",s===this._currentItem)}))}get currentCarouselItem(){return this.dom.carouselItems[this.currentItem]}get currentCarouselTab(){return this.dom.carouselTabs[this.currentItem]}get autoplay(){return this._autoplay}set autoplay(t){n("boolean",{autoplay:t}),this._autoplay!==t&&(this._autoplay=t)}get transitionDelay(){return this._delays.transition}set transitionDelay(t){n("number",{transitionDelay:t}),t!==this.transitionDelay&&t>=0&&(this._delays.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&t>=0&&(this._durations.transition=t,this._setTransitionDuration())}get playText(){return this._playText}set playText(t){n("string",{playText:t}),this._playText!==t&&(this._playText=t)}get pauseText(){return this._pauseText}set pauseText(t){n("string",{pauseText:t}),this._pauseText!==t&&(this._pauseText=t)}get currentAction(){return this._currentAction}_validate(){const t=n("boolean",{autoplay:this._autoplay},{shouldThrow:!1});t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1);const e=n("string",{playText:this._playText,pauseText:this._pauseText},{shouldThrow:!1});return e.status||(this._errors=[...this._errors,...e.errors],this._valid=!1),super._validate()}_setDOMElements(){this._setDOMElementType("carouselItemContainer",{context:this.dom.carousel}),this._setDOMElementType("carouselControlContainer",{context:this.dom.carousel}),this._setDOMElementType("carouselTabContainer",{context:this.dom.carousel}),this.dom.carouselItemContainer&&this._setDOMElementType("carouselItems",{context:this.dom.carouselItemContainer}),this.dom.carouselControlContainer&&(this._setDOMElementType("carouselControls",{context:this.dom.carouselControlContainer}),this._setDOMElementType("autoplay",{context:this.dom.carouselControlContainer}),this._setDOMElementType("next",{context:this.dom.carouselControlContainer}),this._setDOMElementType("previous",{context:this.dom.carouselControlContainer})),this._dom.carouselTabContainer&&this._setDOMElementType("carouselTabs",{context:this.dom.carouselTabContainer})}_setIds(){this.dom.carousel.id=this.dom.carousel.id||`carousel-${this.key}`,this.dom.carouselItems.forEach((t,e)=>{t.id=t.id||`carousel-item-${this.key}-${e}`}),this.dom.carouselTabs.forEach((t,e)=>{t.id=t.id||`carousel-tab-${this.key}-${e}`}),this._id=this.dom.carousel.id}_setAriaAttributes(){!b("section",{carousel:this.dom.carousel},{shouldThrow:!1}).status&&!this.dom.carousel.getAttribute("role")!=="region"&&this.dom.carousel.setAttribute("role","group"),this._dom.carousel.setAttribute("aria-roledescription","carousel"),this.dom.carouselTabContainer&&this.dom.carouselTabContainer.setAttribute("role","tablist"),this.dom.carouselTabs.forEach((t,e)=>{b("button",{tab:t},{shouldThrow:!1}).status||t.setAttribute("role","button"),t.setAttribute("aria-selected",e===0),t.setAttribute("aria-controls",this.dom.carouselItems[e].id)})}_setCustomProps(){this.dom.carousel.style.setProperty(`--${this.prefix}carousel-transition-duration`,`${this.transitionDuration}ms`)}_handleAutoplay(){this.autoplay?(a(this.pauseClass,this.dom.autoplay),l(this.playClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.pauseText),this.dom.carousel.setAttribute("aria-live","off"),this._setInterval(()=>this.activateNextItem(),this.transitionDelay)):(a(this.playClass,this.dom.autoplay),l(this.pauseClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.playText),this.dom.carousel.setAttribute("aria-live","polite"),this._clearInterval())}_handleFocus(){this._addEventListener("focusin",this.dom.carousel,()=>{this.autoplay&&this._clearInterval()}),this._addEventListener("focusout",this.dom.carousel,()=>{this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)})}_handleClick(){this._addEventListener("click",this.dom.next,()=>{this.activateNextItem()}),this._addEventListener("click",this.dom.previous,()=>{this.activatePreviousItem()}),this._addEventListener("click",this.dom.autoplay,()=>{this.toggleAutoplay()}),this.dom.carouselTabs.forEach((t,e)=>{this._addEventListener("click",t,()=>{this.currentItem>e?this._currentAction="previous":this._currentAction="next",this.activateItem(e)})})}_handleHover(){this._addEventListener("pointerover",this.dom.carousel,()=>{this.autoplay&&this._clearInterval()}),this._addEventListener("pointerleave",this.dom.carousel,()=>{this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)})}_handleKeydown(){this.dom.carouselControls.forEach(t=>{this._addEventListener("keydown",t,e=>{switch(u(e)){case"Space":case"Enter":h(e);break}})}),this.dom.carouselTabs.forEach(t=>{this._addEventListener("keydown",t,e=>{switch(u(e)){case"Space":case"Enter":h(e);break}})})}_handleKeyup(){this._addEventListener("keyup",this.dom.next,t=>{switch(u(t)){case"Space":case"Enter":this.activateNextItem(),h(t);break}}),this._addEventListener("keyup",this.dom.previous,t=>{switch(u(t)){case"Space":case"Enter":this.activatePreviousItem(),h(t);break}}),this._addEventListener("keyup",this.dom.autoplay,t=>{switch(u(t)){case"Space":case"Enter":this.toggleAutoplay(),h(t);break}}),this.dom.carouselTabs.forEach((t,e)=>{this._addEventListener("keyup",t,s=>{switch(u(s)){case"Space":case"Enter":this.activateItem(e),h(s);break}})})}activateCurrentItem(){a(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!0),a(this.activeClass,this.currentCarouselTab))}deactivateCurrentItem(){l(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!1),l(this.activeClass,this.currentCarouselTab))}activateItem(t){const e=this.currentItem;this.dom.carousel.dataset.grauplAction=this._currentAction,this.autoplay&&this._clearInterval(),a(this.previousClass,this.currentCarouselItem),a(this.nextClass,this.dom.carouselItems[t]),requestAnimationFrame(()=>{this.deactivateCurrentItem(),this.currentItem=t,this.activateCurrentItem(),requestAnimationFrame(()=>{setTimeout(()=>{l(this.previousClass,this.dom.carouselItems[e]),l(this.nextClass,this.currentCarouselItem)},this.transitionDuration)})}),this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)}activateFirstItem(){this.activateItem(0)}activateLastItem(){this.activateItem(this.dom.carouselItems.length-1)}activateNextItem(){this._currentAction="next",this.currentItem+1>=this.dom.carouselItems.length?this.activateFirstItem():this.activateItem(this.currentItem+1)}activatePreviousItem(){this._currentAction="previous",this.currentItem-1<0?this.activateLastItem():this.activateItem(this.currentItem-1)}toggleAutoplay(){this.autoplay=!this.autoplay,this._handleAutoplay()}},at=nt,lt=(t={},e=document,s=".carousel")=>{p("graupl-carousel-generator",s,e).forEach(i=>{const r=i.dataset.grauplCarouselOptions?JSON.parse(i.dataset.grauplCarouselOptions.replace(/'/g,'"'))||{}:{};new at({carouselElement:i,initialize:!0,...t,...r})})},ht=(t={},e=document,s=".navigation")=>{p("graupl-navigation-generator",s,e).forEach(i=>{const r=i.dataset.grauplMenuType||DisclosureMenu;if(window[r]===void 0){console.warn(`Graupl navigation requires accessible-menu's ${r}. Please make sure to include it on this page.`);return}const o=i.dataset.grauplMenuOptions?JSON.parse(i.dataset.grauplMenuOptions.replace(/'/g,'"'))||{}:{},c=i.querySelector(".menu"),m=i.querySelector(".navigation-toggle")||null,_=m?i:null;new window[r]({menuElement:c,menuItemSelector:".menu-item",menuLinkSelector:".menu-link",submenuItemSelector:".submenu-item",submenuToggleSelector:".submenu-toggle",controllerElement:m,containerElement:_,...t,...o})})},ct=class extends w{_protectedDOMElements=["disclosure","controller"];_open=new T(!1);_shouldOpen=!1;_closeOnBlur=!1;_storageKey="disclosures";_mediaQueryListEventCallback=t=>{t.matches&&this.isOpen?this.close({preserveState:!0}):!t.matches&&!this.isOpen&&(this.hasOpened||this.shouldOpen)&&this.open()};constructor({disclosureElement:t,controllerElement:e,disclosureContentSelector:s=".disclosure-content",openClass:i="show",closeClass:r="hide",transitionClass:o="transitioning",transitionDuration:c=250,openDuration:m=-1,closeDuration:_=-1,closeOnBlur:f=!1,minWidth:g="",autoOpen:y=!1,mediaQuery:C="",prefix:k="graupl-",key:v=null,initializeClass:A="initializing",initialize:I=!1}={}){super({prefix:k,key:v,initializeClass:A}),this._dom.disclosure=t,this._dom.controller=e,this._selectors.content=s,this._classes.open=i||"",this._classes.close=r||"",this._classes.transition=o||"",this._durations.transition=c,this._durations.open=m,this._durations.close=_,this._closeOnBlur=f,this._breakpoint=g||"",this._shouldOpen=y,this._mediaQueryString=C||"",this._registerEvent("expand",{detail:{disclosure:this}}),this._registerEvent("collapse",{detail:{disclosure:this}}),I&&this.initialize()}initialize(){try{a(this._classes.initialize,this.dom.disclosure),super.initialize(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._setCustomProps(),this._handleMediaMatch(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.dom.controller.getAttribute("aria-expanded")==="true"||this.shouldOpen&&window.matchMedia(this.mediaQuery).matches?this._expand({emit:!1,transition:!1}):this._collapse({emit:!1,transition:!1})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{l(this._classes.initialize,this.dom.disclosure)}),this.isValid&&(this._initialized=!0)}}get openClass(){return this._classes.open}set openClass(t){d({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){d({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){d({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){n("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setCustomProps())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){n("number",{openDuration:t}),this._durations.open!==t&&(this._durations.open=t,this._setCustomProps())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){n("number",{closeDuration:t}),this._durations.close!==t&&(this._durations.close=t,this._setCustomProps())}get minWidth(){return this.breakpoint}set minWidth(t){this.breakpoint=t}get closeOnBlur(){return this._closeOnBlur}set closeOnBlur(t){n("boolean",{closeOnBlur:t}),this._closeOnBlur!==t&&(this._closeOnBlur=t)}get isOpen(){return this._open.value}get hasOpened(){return this._open.committed}get shouldOpen(){return this._shouldOpen}set shouldOpen(t){n("boolean",{shouldOpen:t}),this._shouldOpen!==t&&(this._shouldOpen=t)}get shouldFocus(){let t=!1;return this.currentEvent==="keyboard"&&(t=!0),t}_validate(){const t=n("boolean",{closeOnBlur:this._closeOnBlur,autoOpen:this._shouldOpen},{shouldThrow:!1});return t.status||(this._errors=[...this._errors,...t.errors],this._valid=!1),super._validate()}_setIds(){this.dom.disclosure.id=this.dom.disclosure.id||`disclosure-${this.key}`,this.dom.controller.id=this.dom.controller.id||`disclosure-controller-${this.key}`,this._id=this.dom.disclosure.id}_setAriaAttributes(){this.dom.controller.getAttribute("aria-expanded")!=="true"&&this.dom.controller.setAttribute("aria-expanded","false"),this.dom.controller.setAttribute("aria-controls",this.dom.disclosure.id),b("button",{controller:this.dom.controller},{shouldThrow:!1}).status||this.dom.controller.setAttribute("role","button")}_setCustomProps(){this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-transition-duration`,`${this.transitionDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-open-transition-duration`,`${this.openDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElements(){this._resetDOMElementType("content"),this._setDOMElementType("content",{context:this.dom.disclosure})}_expand({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","true"),e&&this.transitionlass!==""?(a(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{l(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{a(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{l(this.transitionClass,this.dom.disclosure)},this.openDuration)})})})):(a(this.openClass,this.dom.disclosure),l(this.closeClass,this.dom.disclosure)),this.dom.content.removeAttribute("inert"),t&&this._dispatchEvent("expand",this.dom.controller)}_collapse({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","false"),e&&this.transitionClass!==""?(a(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{l(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{a(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{l(this.transitionClass,this.dom.disclosure),this.dom.content.innert=!0},this.closeDuration)})})})):(a(this.closeClass,this.dom.disclosure),l(this.openClass,this.dom.disclosure)),this.dom.content.setAttribute("inert","true"),t&&this._dispatchEvent("collapse",this.dom.controller)}_handleFocus(){this._addEventListener("focusout",this.dom.disclosure,t=>{!this.closeOnBlur||this.currentEvent!=="keyboard"||t.relatedTarget===null||this.dom.disclosure.contains(t.relatedTarget)||this.dom.controller===t.relatedTarget||this.close()})}_handleClick(){this._addEventListener("click",this.dom.controller,t=>{this.currentEvent="mouse",t.button===0&&(h(t),this.toggle())}),this._addEventListener("click",document,t=>{this.focusState!=="self"||!this.closeOnBlur||(this.currentEvent="mouse",!this.dom.disclosure.contains(t.target)&&this.dom.controller!==t.target&&this.close())})}_handleKeydown(){this._addEventListener("keydown",this.dom.controller,t=>{switch(this.currentEvent="keyboard",u(t)){case"Space":case"Enter":h(t);break}}),this._addEventListener("keydown",this.dom.disclosure,t=>{this.currentEvent="keyboard",u(t)==="Escape"&&h(t)})}_handleKeyup(){this._addEventListener("keyup",this.dom.controller,t=>{switch(this.currentEvent="keyboard",u(t)){case"Space":case"Enter":this.toggle(),h(t);break}}),this._addEventListener("keyup",this.dom.disclosure,t=>{this.currentEvent="keyboard",u(t)==="Escape"&&(this.close(),h(t))})}open({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="self",this._expand(),this._open.value=!0,e||this._open.commit())}preview({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="none",this._expand(),this._open.value=!0,e||this._open.commit())}close({force:t=!1,preserveState:e=!1}={}){!this.isOpen&&!t||(this.focusState="none",this._collapse(),this._open.value=!1,e||this._open.commit())}toggle({force:t=!1,preserveState:e=!1}={}){this.isOpen?this.close({force:t,preserveState:e}):this.open({force:t,preserveState:e})}},ut=ct,dt=({options:t={},context:e=document,disclosureSelector:s=".disclosure",controllerSelector:i=".disclosure-toggle"}={})=>{p("graupl-disclosure-generator",s,e).forEach(r=>{const o=r.dataset.grauplDisclosureOptions?JSON.parse(r.dataset.grauplDisclosureOptions.replace(/'/g,'"'))||{}:{},c=`${i}[data-graupl-disclosure-target="${r.id}"]`,[m]=p("graupl-disclosure-generator",c,e);if(!m){console.warn(`No controller found for disclosure with ID "${r.id}". Please ensure there is an element with the selector "${c}".`),p.remove("graupl-disclosure-generator",r);return}new ut({disclosureElement:r,controllerElement:m,initialize:!0,...t,...o})})};document.addEventListener("DOMContentLoaded",()=>{st(),ot(),lt(),ht(),dt()})})();
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=graupl.js.map
|