var Ht=Object.defineProperty;var Jt=(g,u,m)=>u in g?Ht(g,u,{enumerable:!0,configurable:!0,writable:!0,value:m}):g[u]=m;var c=(g,u,m)=>(Jt(g,typeof u!="symbol"?u+"":u,m),m);(function(){"use strict";class g{constructor(e,t,s){this.eventTarget=e,this.eventName=t,this.eventOptions=s,this.unorderedBindings=new Set}connect(){this.eventTarget.addEventListener(this.eventName,this,this.eventOptions)}disconnect(){this.eventTarget.removeEventListener(this.eventName,this,this.eventOptions)}bindingConnected(e){this.unorderedBindings.add(e)}bindingDisconnected(e){this.unorderedBindings.delete(e)}handleEvent(e){const t=u(e);for(const s of this.bindings){if(t.immediatePropagationStopped)break;s.handleEvent(t)}}hasBindings(){return this.unorderedBindings.size>0}get bindings(){return Array.from(this.unorderedBindings).sort((e,t)=>{const s=e.index,n=t.index;return sn?1:0})}}function u(r){if("immediatePropagationStopped"in r)return r;{const{stopImmediatePropagation:e}=r;return Object.assign(r,{immediatePropagationStopped:!1,stopImmediatePropagation(){this.immediatePropagationStopped=!0,e.call(this)}})}}class m{constructor(e){this.application=e,this.eventListenerMaps=new Map,this.started=!1}start(){this.started||(this.started=!0,this.eventListeners.forEach(e=>e.connect()))}stop(){this.started&&(this.started=!1,this.eventListeners.forEach(e=>e.disconnect()))}get eventListeners(){return Array.from(this.eventListenerMaps.values()).reduce((e,t)=>e.concat(Array.from(t.values())),[])}bindingConnected(e){this.fetchEventListenerForBinding(e).bindingConnected(e)}bindingDisconnected(e,t=!1){this.fetchEventListenerForBinding(e).bindingDisconnected(e),t&&this.clearEventListenersForBinding(e)}handleError(e,t,s={}){this.application.handleError(e,`Error ${t}`,s)}clearEventListenersForBinding(e){const t=this.fetchEventListenerForBinding(e);t.hasBindings()||(t.disconnect(),this.removeMappedEventListenerFor(e))}removeMappedEventListenerFor(e){const{eventTarget:t,eventName:s,eventOptions:n}=e,i=this.fetchEventListenerMapForEventTarget(t),o=this.cacheKey(s,n);i.delete(o),i.size==0&&this.eventListenerMaps.delete(t)}fetchEventListenerForBinding(e){const{eventTarget:t,eventName:s,eventOptions:n}=e;return this.fetchEventListener(t,s,n)}fetchEventListener(e,t,s){const n=this.fetchEventListenerMapForEventTarget(e),i=this.cacheKey(t,s);let o=n.get(i);return o||(o=this.createEventListener(e,t,s),n.set(i,o)),o}createEventListener(e,t,s){const n=new g(e,t,s);return this.started&&n.connect(),n}fetchEventListenerMapForEventTarget(e){let t=this.eventListenerMaps.get(e);return t||(t=new Map,this.eventListenerMaps.set(e,t)),t}cacheKey(e,t){const s=[e];return Object.keys(t).sort().forEach(n=>{s.push(`${t[n]?"":"!"}${n}`)}),s.join(":")}}const ne={stop({event:r,value:e}){return e&&r.stopPropagation(),!0},prevent({event:r,value:e}){return e&&r.preventDefault(),!0},self({event:r,value:e,element:t}){return e?t===r.target:!0}},ie=/^(?:(.+?)(?:\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;function oe(r){const t=r.trim().match(ie)||[];let s=t[1],n=t[2];return n&&!["keydown","keyup","keypress"].includes(s)&&(s+=`.${n}`,n=""),{eventTarget:ae(t[3]),eventName:s,eventOptions:t[6]?ce(t[6]):{},identifier:t[4],methodName:t[5],keyFilter:n}}function ae(r){if(r=="window")return window;if(r=="document")return document}function ce(r){return r.split(":").reduce((e,t)=>Object.assign(e,{[t.replace(/^!/,"")]:!/^!/.test(t)}),{})}function le(r){if(r==window)return"window";if(r==document)return"document"}function T(r){return r.replace(/(?:[_-])([a-z0-9])/g,(e,t)=>t.toUpperCase())}function M(r){return T(r.replace(/--/g,"-").replace(/__/g,"_"))}function b(r){return r.charAt(0).toUpperCase()+r.slice(1)}function I(r){return r.replace(/([A-Z])/g,(e,t)=>`-${t.toLowerCase()}`)}function he(r){return r.match(/[^\s]+/g)||[]}class ue{constructor(e,t,s,n){this.element=e,this.index=t,this.eventTarget=s.eventTarget||e,this.eventName=s.eventName||de(e)||w("missing event name"),this.eventOptions=s.eventOptions||{},this.identifier=s.identifier||w("missing identifier"),this.methodName=s.methodName||w("missing method name"),this.keyFilter=s.keyFilter||"",this.schema=n}static forToken(e,t){return new this(e.element,e.index,oe(e.content),t)}toString(){const e=this.keyFilter?`.${this.keyFilter}`:"",t=this.eventTargetName?`@${this.eventTargetName}`:"";return`${this.eventName}${e}${t}->${this.identifier}#${this.methodName}`}isFilterTarget(e){if(!this.keyFilter)return!1;const t=this.keyFilter.split("+"),s=["meta","ctrl","alt","shift"],[n,i,o,a]=s.map(p=>t.includes(p));if(e.metaKey!==n||e.ctrlKey!==i||e.altKey!==o||e.shiftKey!==a)return!0;const l=t.filter(p=>!s.includes(p))[0];return l?(Object.prototype.hasOwnProperty.call(this.keyMappings,l)||w(`contains unknown key filter: ${this.keyFilter}`),this.keyMappings[l].toLowerCase()!==e.key.toLowerCase()):!1}get params(){const e={},t=new RegExp(`^data-${this.identifier}-(.+)-param$`,"i");for(const{name:s,value:n}of Array.from(this.element.attributes)){const i=s.match(t),o=i&&i[1];o&&(e[T(o)]=ge(n))}return e}get eventTargetName(){return le(this.eventTarget)}get keyMappings(){return this.schema.keyMappings}}const K={a:()=>"click",button:()=>"click",form:()=>"submit",details:()=>"toggle",input:r=>r.getAttribute("type")=="submit"?"click":"input",select:()=>"change",textarea:()=>"input"};function de(r){const e=r.tagName.toLowerCase();if(e in K)return K[e](r)}function w(r){throw new Error(r)}function ge(r){try{return JSON.parse(r)}catch{return r}}class me{constructor(e,t){this.context=e,this.action=t}get index(){return this.action.index}get eventTarget(){return this.action.eventTarget}get eventOptions(){return this.action.eventOptions}get identifier(){return this.context.identifier}handleEvent(e){this.willBeInvokedByEvent(e)&&this.applyEventModifiers(e)&&this.invokeWithEvent(e)}get eventName(){return this.action.eventName}get method(){const e=this.controller[this.methodName];if(typeof e=="function")return e;throw new Error(`Action "${this.action}" references undefined method "${this.methodName}"`)}applyEventModifiers(e){const{element:t}=this.action,{actionDescriptorFilters:s}=this.context.application;let n=!0;for(const[i,o]of Object.entries(this.eventOptions))if(i in s){const a=s[i];n=n&&a({name:i,value:o,event:e,element:t})}else continue;return n}invokeWithEvent(e){const{target:t,currentTarget:s}=e;try{const{params:n}=this.action,i=Object.assign(e,{params:n});this.method.call(this.controller,i),this.context.logDebugActivity(this.methodName,{event:e,target:t,currentTarget:s,action:this.methodName})}catch(n){const{identifier:i,controller:o,element:a,index:l}=this,p={identifier:i,controller:o,element:a,index:l,event:e};this.context.handleError(n,`invoking action "${this.action}"`,p)}}willBeInvokedByEvent(e){const t=e.target;return e instanceof KeyboardEvent&&this.action.isFilterTarget(e)?!1:this.element===t?!0:t instanceof Element&&this.element.contains(t)?this.scope.containsElement(t):this.scope.containsElement(this.action.element)}get controller(){return this.context.controller}get methodName(){return this.action.methodName}get element(){return this.scope.element}get scope(){return this.context.scope}}class R{constructor(e,t){this.mutationObserverInit={attributes:!0,childList:!0,subtree:!0},this.element=e,this.started=!1,this.delegate=t,this.elements=new Set,this.mutationObserver=new MutationObserver(s=>this.processMutations(s))}start(){this.started||(this.started=!0,this.mutationObserver.observe(this.element,this.mutationObserverInit),this.refresh())}pause(e){this.started&&(this.mutationObserver.disconnect(),this.started=!1),e(),this.started||(this.mutationObserver.observe(this.element,this.mutationObserverInit),this.started=!0)}stop(){this.started&&(this.mutationObserver.takeRecords(),this.mutationObserver.disconnect(),this.started=!1)}refresh(){if(this.started){const e=new Set(this.matchElementsInTree());for(const t of Array.from(this.elements))e.has(t)||this.removeElement(t);for(const t of Array.from(e))this.addElement(t)}}processMutations(e){if(this.started)for(const t of e)this.processMutation(t)}processMutation(e){e.type=="attributes"?this.processAttributeChange(e.target,e.attributeName):e.type=="childList"&&(this.processRemovedNodes(e.removedNodes),this.processAddedNodes(e.addedNodes))}processAttributeChange(e,t){const s=e;this.elements.has(s)?this.delegate.elementAttributeChanged&&this.matchElement(s)?this.delegate.elementAttributeChanged(s,t):this.removeElement(s):this.matchElement(s)&&this.addElement(s)}processRemovedNodes(e){for(const t of Array.from(e)){const s=this.elementFromNode(t);s&&this.processTree(s,this.removeElement)}}processAddedNodes(e){for(const t of Array.from(e)){const s=this.elementFromNode(t);s&&this.elementIsActive(s)&&this.processTree(s,this.addElement)}}matchElement(e){return this.delegate.matchElement(e)}matchElementsInTree(e=this.element){return this.delegate.matchElementsInTree(e)}processTree(e,t){for(const s of this.matchElementsInTree(e))t.call(this,s)}elementFromNode(e){if(e.nodeType==Node.ELEMENT_NODE)return e}elementIsActive(e){return e.isConnected!=this.element.isConnected?!1:this.element.contains(e)}addElement(e){this.elements.has(e)||this.elementIsActive(e)&&(this.elements.add(e),this.delegate.elementMatched&&this.delegate.elementMatched(e))}removeElement(e){this.elements.has(e)&&(this.elements.delete(e),this.delegate.elementUnmatched&&this.delegate.elementUnmatched(e))}}class fe{constructor(e,t,s){this.attributeName=t,this.delegate=s,this.elementObserver=new R(e,this)}get element(){return this.elementObserver.element}get selector(){return`[${this.attributeName}]`}start(){this.elementObserver.start()}pause(e){this.elementObserver.pause(e)}stop(){this.elementObserver.stop()}refresh(){this.elementObserver.refresh()}get started(){return this.elementObserver.started}matchElement(e){return e.hasAttribute(this.attributeName)}matchElementsInTree(e){const t=this.matchElement(e)?[e]:[],s=Array.from(e.querySelectorAll(this.selector));return t.concat(s)}elementMatched(e){this.delegate.elementMatchedAttribute&&this.delegate.elementMatchedAttribute(e,this.attributeName)}elementUnmatched(e){this.delegate.elementUnmatchedAttribute&&this.delegate.elementUnmatchedAttribute(e,this.attributeName)}elementAttributeChanged(e,t){this.delegate.elementAttributeValueChanged&&this.attributeName==t&&this.delegate.elementAttributeValueChanged(e,t)}}function pe(r,e,t){z(r,e).add(t)}function be(r,e,t){z(r,e).delete(t),ye(r,e)}function z(r,e){let t=r.get(e);return t||(t=new Set,r.set(e,t)),t}function ye(r,e){const t=r.get(e);t!=null&&t.size==0&&r.delete(e)}class f{constructor(){this.valuesByKey=new Map}get keys(){return Array.from(this.valuesByKey.keys())}get values(){return Array.from(this.valuesByKey.values()).reduce((t,s)=>t.concat(Array.from(s)),[])}get size(){return Array.from(this.valuesByKey.values()).reduce((t,s)=>t+s.size,0)}add(e,t){pe(this.valuesByKey,e,t)}delete(e,t){be(this.valuesByKey,e,t)}has(e,t){const s=this.valuesByKey.get(e);return s!=null&&s.has(t)}hasKey(e){return this.valuesByKey.has(e)}hasValue(e){return Array.from(this.valuesByKey.values()).some(s=>s.has(e))}getValuesForKey(e){const t=this.valuesByKey.get(e);return t?Array.from(t):[]}getKeysForValue(e){return Array.from(this.valuesByKey).filter(([t,s])=>s.has(e)).map(([t,s])=>t)}}class ve{constructor(e,t,s,n={}){this.selector=t,this.details=n,this.elementObserver=new R(e,this),this.delegate=s,this.matchesByElement=new f}get started(){return this.elementObserver.started}start(){this.elementObserver.start()}pause(e){this.elementObserver.pause(e)}stop(){this.elementObserver.stop()}refresh(){this.elementObserver.refresh()}get element(){return this.elementObserver.element}matchElement(e){const t=e.matches(this.selector);return this.delegate.selectorMatchElement?t&&this.delegate.selectorMatchElement(e,this.details):t}matchElementsInTree(e){const t=this.matchElement(e)?[e]:[],s=Array.from(e.querySelectorAll(this.selector)).filter(n=>this.matchElement(n));return t.concat(s)}elementMatched(e){this.selectorMatched(e)}elementUnmatched(e){this.selectorUnmatched(e)}elementAttributeChanged(e,t){const s=this.matchElement(e),n=this.matchesByElement.has(this.selector,e);!s&&n&&this.selectorUnmatched(e)}selectorMatched(e){this.delegate.selectorMatched&&(this.delegate.selectorMatched(e,this.selector,this.details),this.matchesByElement.add(this.selector,e))}selectorUnmatched(e){this.delegate.selectorUnmatched(e,this.selector,this.details),this.matchesByElement.delete(this.selector,e)}}class we{constructor(e,t){this.element=e,this.delegate=t,this.started=!1,this.stringMap=new Map,this.mutationObserver=new MutationObserver(s=>this.processMutations(s))}start(){this.started||(this.started=!0,this.mutationObserver.observe(this.element,{attributes:!0,attributeOldValue:!0}),this.refresh())}stop(){this.started&&(this.mutationObserver.takeRecords(),this.mutationObserver.disconnect(),this.started=!1)}refresh(){if(this.started)for(const e of this.knownAttributeNames)this.refreshAttribute(e,null)}processMutations(e){if(this.started)for(const t of e)this.processMutation(t)}processMutation(e){const t=e.attributeName;t&&this.refreshAttribute(t,e.oldValue)}refreshAttribute(e,t){const s=this.delegate.getStringMapKeyForAttribute(e);if(s!=null){this.stringMap.has(e)||this.stringMapKeyAdded(s,e);const n=this.element.getAttribute(e);if(this.stringMap.get(e)!=n&&this.stringMapValueChanged(n,s,t),n==null){const i=this.stringMap.get(e);this.stringMap.delete(e),i&&this.stringMapKeyRemoved(s,e,i)}else this.stringMap.set(e,n)}}stringMapKeyAdded(e,t){this.delegate.stringMapKeyAdded&&this.delegate.stringMapKeyAdded(e,t)}stringMapValueChanged(e,t,s){this.delegate.stringMapValueChanged&&this.delegate.stringMapValueChanged(e,t,s)}stringMapKeyRemoved(e,t,s){this.delegate.stringMapKeyRemoved&&this.delegate.stringMapKeyRemoved(e,t,s)}get knownAttributeNames(){return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)))}get currentAttributeNames(){return Array.from(this.element.attributes).map(e=>e.name)}get recordedAttributeNames(){return Array.from(this.stringMap.keys())}}class U{constructor(e,t,s){this.attributeObserver=new fe(e,t,this),this.delegate=s,this.tokensByElement=new f}get started(){return this.attributeObserver.started}start(){this.attributeObserver.start()}pause(e){this.attributeObserver.pause(e)}stop(){this.attributeObserver.stop()}refresh(){this.attributeObserver.refresh()}get element(){return this.attributeObserver.element}get attributeName(){return this.attributeObserver.attributeName}elementMatchedAttribute(e){this.tokensMatched(this.readTokensForElement(e))}elementAttributeValueChanged(e){const[t,s]=this.refreshTokensForElement(e);this.tokensUnmatched(t),this.tokensMatched(s)}elementUnmatchedAttribute(e){this.tokensUnmatched(this.tokensByElement.getValuesForKey(e))}tokensMatched(e){e.forEach(t=>this.tokenMatched(t))}tokensUnmatched(e){e.forEach(t=>this.tokenUnmatched(t))}tokenMatched(e){this.delegate.tokenMatched(e),this.tokensByElement.add(e.element,e)}tokenUnmatched(e){this.delegate.tokenUnmatched(e),this.tokensByElement.delete(e.element,e)}refreshTokensForElement(e){const t=this.tokensByElement.getValuesForKey(e),s=this.readTokensForElement(e),n=Ee(t,s).findIndex(([i,o])=>!Ae(i,o));return n==-1?[[],[]]:[t.slice(n),s.slice(n)]}readTokensForElement(e){const t=this.attributeName,s=e.getAttribute(t)||"";return Oe(s,e,t)}}function Oe(r,e,t){return r.trim().split(/\s+/).filter(s=>s.length).map((s,n)=>({element:e,attributeName:t,content:s,index:n}))}function Ee(r,e){const t=Math.max(r.length,e.length);return Array.from({length:t},(s,n)=>[r[n],e[n]])}function Ae(r,e){return r&&e&&r.index==e.index&&r.content==e.content}class q{constructor(e,t,s){this.tokenListObserver=new U(e,t,this),this.delegate=s,this.parseResultsByToken=new WeakMap,this.valuesByTokenByElement=new WeakMap}get started(){return this.tokenListObserver.started}start(){this.tokenListObserver.start()}stop(){this.tokenListObserver.stop()}refresh(){this.tokenListObserver.refresh()}get element(){return this.tokenListObserver.element}get attributeName(){return this.tokenListObserver.attributeName}tokenMatched(e){const{element:t}=e,{value:s}=this.fetchParseResultForToken(e);s&&(this.fetchValuesByTokenForElement(t).set(e,s),this.delegate.elementMatchedValue(t,s))}tokenUnmatched(e){const{element:t}=e,{value:s}=this.fetchParseResultForToken(e);s&&(this.fetchValuesByTokenForElement(t).delete(e),this.delegate.elementUnmatchedValue(t,s))}fetchParseResultForToken(e){let t=this.parseResultsByToken.get(e);return t||(t=this.parseToken(e),this.parseResultsByToken.set(e,t)),t}fetchValuesByTokenForElement(e){let t=this.valuesByTokenByElement.get(e);return t||(t=new Map,this.valuesByTokenByElement.set(e,t)),t}parseToken(e){try{return{value:this.delegate.parseValueForToken(e)}}catch(t){return{error:t}}}}class Te{constructor(e,t){this.context=e,this.delegate=t,this.bindingsByAction=new Map}start(){this.valueListObserver||(this.valueListObserver=new q(this.element,this.actionAttribute,this),this.valueListObserver.start())}stop(){this.valueListObserver&&(this.valueListObserver.stop(),delete this.valueListObserver,this.disconnectAllActions())}get element(){return this.context.element}get identifier(){return this.context.identifier}get actionAttribute(){return this.schema.actionAttribute}get schema(){return this.context.schema}get bindings(){return Array.from(this.bindingsByAction.values())}connectAction(e){const t=new me(this.context,e);this.bindingsByAction.set(e,t),this.delegate.bindingConnected(t)}disconnectAction(e){const t=this.bindingsByAction.get(e);t&&(this.bindingsByAction.delete(e),this.delegate.bindingDisconnected(t))}disconnectAllActions(){this.bindings.forEach(e=>this.delegate.bindingDisconnected(e,!0)),this.bindingsByAction.clear()}parseValueForToken(e){const t=ue.forToken(e,this.schema);if(t.identifier==this.identifier)return t}elementMatchedValue(e,t){this.connectAction(t)}elementUnmatchedValue(e,t){this.disconnectAction(t)}}class Me{constructor(e,t){this.context=e,this.receiver=t,this.stringMapObserver=new we(this.element,this),this.valueDescriptorMap=this.controller.valueDescriptorMap}start(){this.stringMapObserver.start(),this.invokeChangedCallbacksForDefaultValues()}stop(){this.stringMapObserver.stop()}get element(){return this.context.element}get controller(){return this.context.controller}getStringMapKeyForAttribute(e){if(e in this.valueDescriptorMap)return this.valueDescriptorMap[e].name}stringMapKeyAdded(e,t){const s=this.valueDescriptorMap[t];this.hasValue(e)||this.invokeChangedCallback(e,s.writer(this.receiver[e]),s.writer(s.defaultValue))}stringMapValueChanged(e,t,s){const n=this.valueDescriptorNameMap[t];e!==null&&(s===null&&(s=n.writer(n.defaultValue)),this.invokeChangedCallback(t,e,s))}stringMapKeyRemoved(e,t,s){const n=this.valueDescriptorNameMap[e];this.hasValue(e)?this.invokeChangedCallback(e,n.writer(this.receiver[e]),s):this.invokeChangedCallback(e,n.writer(n.defaultValue),s)}invokeChangedCallbacksForDefaultValues(){for(const{key:e,name:t,defaultValue:s,writer:n}of this.valueDescriptors)s!=null&&!this.controller.data.has(e)&&this.invokeChangedCallback(t,n(s),void 0)}invokeChangedCallback(e,t,s){const n=`${e}Changed`,i=this.receiver[n];if(typeof i=="function"){const o=this.valueDescriptorNameMap[e];try{const a=o.reader(t);let l=s;s&&(l=o.reader(s)),i.call(this.receiver,a,l)}catch(a){throw a instanceof TypeError&&(a.message=`Stimulus Value "${this.context.identifier}.${o.name}" - ${a.message}`),a}}}get valueDescriptors(){const{valueDescriptorMap:e}=this;return Object.keys(e).map(t=>e[t])}get valueDescriptorNameMap(){const e={};return Object.keys(this.valueDescriptorMap).forEach(t=>{const s=this.valueDescriptorMap[t];e[s.name]=s}),e}hasValue(e){const t=this.valueDescriptorNameMap[e],s=`has${b(t.name)}`;return this.receiver[s]}}class Ce{constructor(e,t){this.context=e,this.delegate=t,this.targetsByName=new f}start(){this.tokenListObserver||(this.tokenListObserver=new U(this.element,this.attributeName,this),this.tokenListObserver.start())}stop(){this.tokenListObserver&&(this.disconnectAllTargets(),this.tokenListObserver.stop(),delete this.tokenListObserver)}tokenMatched({element:e,content:t}){this.scope.containsElement(e)&&this.connectTarget(e,t)}tokenUnmatched({element:e,content:t}){this.disconnectTarget(e,t)}connectTarget(e,t){var s;this.targetsByName.has(t,e)||(this.targetsByName.add(t,e),(s=this.tokenListObserver)===null||s===void 0||s.pause(()=>this.delegate.targetConnected(e,t)))}disconnectTarget(e,t){var s;this.targetsByName.has(t,e)&&(this.targetsByName.delete(t,e),(s=this.tokenListObserver)===null||s===void 0||s.pause(()=>this.delegate.targetDisconnected(e,t)))}disconnectAllTargets(){for(const e of this.targetsByName.keys)for(const t of this.targetsByName.getValuesForKey(e))this.disconnectTarget(t,e)}get attributeName(){return`data-${this.context.identifier}-target`}get element(){return this.context.element}get scope(){return this.context.scope}}function y(r,e){const t=W(r);return Array.from(t.reduce((s,n)=>(ke(n,e).forEach(i=>s.add(i)),s),new Set))}function Se(r,e){return W(r).reduce((s,n)=>(s.push(...Le(n,e)),s),[])}function W(r){const e=[];for(;r;)e.push(r),r=Object.getPrototypeOf(r);return e.reverse()}function ke(r,e){const t=r[e];return Array.isArray(t)?t:[]}function Le(r,e){const t=r[e];return t?Object.keys(t).map(s=>[s,t[s]]):[]}class xe{constructor(e,t){this.context=e,this.delegate=t,this.outletsByName=new f,this.outletElementsByName=new f,this.selectorObserverMap=new Map}start(){this.selectorObserverMap.size===0&&(this.outletDefinitions.forEach(e=>{const t=this.selector(e),s={outletName:e};t&&this.selectorObserverMap.set(e,new ve(document.body,t,this,s))}),this.selectorObserverMap.forEach(e=>e.start())),this.dependentContexts.forEach(e=>e.refresh())}stop(){this.selectorObserverMap.size>0&&(this.disconnectAllOutlets(),this.selectorObserverMap.forEach(e=>e.stop()),this.selectorObserverMap.clear())}refresh(){this.selectorObserverMap.forEach(e=>e.refresh())}selectorMatched(e,t,{outletName:s}){const n=this.getOutlet(e,s);n&&this.connectOutlet(n,e,s)}selectorUnmatched(e,t,{outletName:s}){const n=this.getOutletFromMap(e,s);n&&this.disconnectOutlet(n,e,s)}selectorMatchElement(e,{outletName:t}){return this.hasOutlet(e,t)&&e.matches(`[${this.context.application.schema.controllerAttribute}~=${t}]`)}connectOutlet(e,t,s){var n;this.outletElementsByName.has(s,t)||(this.outletsByName.add(s,e),this.outletElementsByName.add(s,t),(n=this.selectorObserverMap.get(s))===null||n===void 0||n.pause(()=>this.delegate.outletConnected(e,t,s)))}disconnectOutlet(e,t,s){var n;this.outletElementsByName.has(s,t)&&(this.outletsByName.delete(s,e),this.outletElementsByName.delete(s,t),(n=this.selectorObserverMap.get(s))===null||n===void 0||n.pause(()=>this.delegate.outletDisconnected(e,t,s)))}disconnectAllOutlets(){for(const e of this.outletElementsByName.keys)for(const t of this.outletElementsByName.getValuesForKey(e))for(const s of this.outletsByName.getValuesForKey(e))this.disconnectOutlet(s,t,e)}selector(e){return this.scope.outlets.getSelectorForOutletName(e)}get outletDependencies(){const e=new f;return this.router.modules.forEach(t=>{const s=t.definition.controllerConstructor;y(s,"outlets").forEach(i=>e.add(i,t.identifier))}),e}get outletDefinitions(){return this.outletDependencies.getKeysForValue(this.identifier)}get dependentControllerIdentifiers(){return this.outletDependencies.getValuesForKey(this.identifier)}get dependentContexts(){const e=this.dependentControllerIdentifiers;return this.router.contexts.filter(t=>e.includes(t.identifier))}hasOutlet(e,t){return!!this.getOutlet(e,t)||!!this.getOutletFromMap(e,t)}getOutlet(e,t){return this.application.getControllerForElementAndIdentifier(e,t)}getOutletFromMap(e,t){return this.outletsByName.getValuesForKey(t).find(s=>s.element===e)}get scope(){return this.context.scope}get identifier(){return this.context.identifier}get application(){return this.context.application}get router(){return this.application.router}}class _e{constructor(e,t){this.logDebugActivity=(s,n={})=>{const{identifier:i,controller:o,element:a}=this;n=Object.assign({identifier:i,controller:o,element:a},n),this.application.logDebugActivity(this.identifier,s,n)},this.module=e,this.scope=t,this.controller=new e.controllerConstructor(this),this.bindingObserver=new Te(this,this.dispatcher),this.valueObserver=new Me(this,this.controller),this.targetObserver=new Ce(this,this),this.outletObserver=new xe(this,this);try{this.controller.initialize(),this.logDebugActivity("initialize")}catch(s){this.handleError(s,"initializing controller")}}connect(){this.bindingObserver.start(),this.valueObserver.start(),this.targetObserver.start(),this.outletObserver.start();try{this.controller.connect(),this.logDebugActivity("connect")}catch(e){this.handleError(e,"connecting controller")}}refresh(){this.outletObserver.refresh()}disconnect(){try{this.controller.disconnect(),this.logDebugActivity("disconnect")}catch(e){this.handleError(e,"disconnecting controller")}this.outletObserver.stop(),this.targetObserver.stop(),this.valueObserver.stop(),this.bindingObserver.stop()}get application(){return this.module.application}get identifier(){return this.module.identifier}get schema(){return this.application.schema}get dispatcher(){return this.application.dispatcher}get element(){return this.scope.element}get parentElement(){return this.element.parentElement}handleError(e,t,s={}){const{identifier:n,controller:i,element:o}=this;s=Object.assign({identifier:n,controller:i,element:o},s),this.application.handleError(e,`Error ${t}`,s)}targetConnected(e,t){this.invokeControllerMethod(`${t}TargetConnected`,e)}targetDisconnected(e,t){this.invokeControllerMethod(`${t}TargetDisconnected`,e)}outletConnected(e,t,s){this.invokeControllerMethod(`${M(s)}OutletConnected`,e,t)}outletDisconnected(e,t,s){this.invokeControllerMethod(`${M(s)}OutletDisconnected`,e,t)}invokeControllerMethod(e,...t){const s=this.controller;typeof s[e]=="function"&&s[e](...t)}}function Be(r){return Fe(r,je(r))}function Fe(r,e){const t=De(r),s=$e(r.prototype,e);return Object.defineProperties(t.prototype,s),t}function je(r){return y(r,"blessings").reduce((t,s)=>{const n=s(r);for(const i in n){const o=t[i]||{};t[i]=Object.assign(o,n[i])}return t},{})}function $e(r,e){return Ne(e).reduce((t,s)=>{const n=Ve(r,e,s);return n&&Object.assign(t,{[s]:n}),t},{})}function Ve(r,e,t){const s=Object.getOwnPropertyDescriptor(r,t);if(!(s&&"value"in s)){const i=Object.getOwnPropertyDescriptor(e,t).value;return s&&(i.get=s.get||i.get,i.set=s.set||i.set),i}}const Ne=(()=>typeof Object.getOwnPropertySymbols=="function"?r=>[...Object.getOwnPropertyNames(r),...Object.getOwnPropertySymbols(r)]:Object.getOwnPropertyNames)(),De=(()=>{function r(t){function s(){return Reflect.construct(t,arguments,new.target)}return s.prototype=Object.create(t.prototype,{constructor:{value:s}}),Reflect.setPrototypeOf(s,t),s}function e(){const s=r(function(){this.a.call(this)});return s.prototype.a=function(){},new s}try{return e(),r}catch{return s=>class extends s{}}})();function Pe(r){return{identifier:r.identifier,controllerConstructor:Be(r.controllerConstructor)}}class Ie{constructor(e,t){this.application=e,this.definition=Pe(t),this.contextsByScope=new WeakMap,this.connectedContexts=new Set}get identifier(){return this.definition.identifier}get controllerConstructor(){return this.definition.controllerConstructor}get contexts(){return Array.from(this.connectedContexts)}connectContextForScope(e){const t=this.fetchContextForScope(e);this.connectedContexts.add(t),t.connect()}disconnectContextForScope(e){const t=this.contextsByScope.get(e);t&&(this.connectedContexts.delete(t),t.disconnect())}fetchContextForScope(e){let t=this.contextsByScope.get(e);return t||(t=new _e(this,e),this.contextsByScope.set(e,t)),t}}class Ke{constructor(e){this.scope=e}has(e){return this.data.has(this.getDataKey(e))}get(e){return this.getAll(e)[0]}getAll(e){const t=this.data.get(this.getDataKey(e))||"";return he(t)}getAttributeName(e){return this.data.getAttributeNameForKey(this.getDataKey(e))}getDataKey(e){return`${e}-class`}get data(){return this.scope.data}}class Re{constructor(e){this.scope=e}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get(e){const t=this.getAttributeNameForKey(e);return this.element.getAttribute(t)}set(e,t){const s=this.getAttributeNameForKey(e);return this.element.setAttribute(s,t),this.get(e)}has(e){const t=this.getAttributeNameForKey(e);return this.element.hasAttribute(t)}delete(e){if(this.has(e)){const t=this.getAttributeNameForKey(e);return this.element.removeAttribute(t),!0}else return!1}getAttributeNameForKey(e){return`data-${this.identifier}-${I(e)}`}}class ze{constructor(e){this.warnedKeysByObject=new WeakMap,this.logger=e}warn(e,t,s){let n=this.warnedKeysByObject.get(e);n||(n=new Set,this.warnedKeysByObject.set(e,n)),n.has(t)||(n.add(t),this.logger.warn(s,e))}}function C(r,e){return`[${r}~="${e}"]`}class Ue{constructor(e){this.scope=e}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get schema(){return this.scope.schema}has(e){return this.find(e)!=null}find(...e){return e.reduce((t,s)=>t||this.findTarget(s)||this.findLegacyTarget(s),void 0)}findAll(...e){return e.reduce((t,s)=>[...t,...this.findAllTargets(s),...this.findAllLegacyTargets(s)],[])}findTarget(e){const t=this.getSelectorForTargetName(e);return this.scope.findElement(t)}findAllTargets(e){const t=this.getSelectorForTargetName(e);return this.scope.findAllElements(t)}getSelectorForTargetName(e){const t=this.schema.targetAttributeForScope(this.identifier);return C(t,e)}findLegacyTarget(e){const t=this.getLegacySelectorForTargetName(e);return this.deprecate(this.scope.findElement(t),e)}findAllLegacyTargets(e){const t=this.getLegacySelectorForTargetName(e);return this.scope.findAllElements(t).map(s=>this.deprecate(s,e))}getLegacySelectorForTargetName(e){const t=`${this.identifier}.${e}`;return C(this.schema.targetAttribute,t)}deprecate(e,t){if(e){const{identifier:s}=this,n=this.schema.targetAttribute,i=this.schema.targetAttributeForScope(s);this.guide.warn(e,`target:${t}`,`Please replace ${n}="${s}.${t}" with ${i}="${t}". The ${n} attribute is deprecated and will be removed in a future version of Stimulus.`)}return e}get guide(){return this.scope.guide}}class qe{constructor(e,t){this.scope=e,this.controllerElement=t}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get schema(){return this.scope.schema}has(e){return this.find(e)!=null}find(...e){return e.reduce((t,s)=>t||this.findOutlet(s),void 0)}findAll(...e){return e.reduce((t,s)=>[...t,...this.findAllOutlets(s)],[])}getSelectorForOutletName(e){const t=this.schema.outletAttributeForScope(this.identifier,e);return this.controllerElement.getAttribute(t)}findOutlet(e){const t=this.getSelectorForOutletName(e);if(t)return this.findElement(t,e)}findAllOutlets(e){const t=this.getSelectorForOutletName(e);return t?this.findAllElements(t,e):[]}findElement(e,t){return this.scope.queryElements(e).filter(n=>this.matchesElement(n,e,t))[0]}findAllElements(e,t){return this.scope.queryElements(e).filter(n=>this.matchesElement(n,e,t))}matchesElement(e,t,s){const n=e.getAttribute(this.scope.schema.controllerAttribute)||"";return e.matches(t)&&n.split(" ").includes(s)}}class S{constructor(e,t,s,n){this.targets=new Ue(this),this.classes=new Ke(this),this.data=new Re(this),this.containsElement=i=>i.closest(this.controllerSelector)===this.element,this.schema=e,this.element=t,this.identifier=s,this.guide=new ze(n),this.outlets=new qe(this.documentScope,t)}findElement(e){return this.element.matches(e)?this.element:this.queryElements(e).find(this.containsElement)}findAllElements(e){return[...this.element.matches(e)?[this.element]:[],...this.queryElements(e).filter(this.containsElement)]}queryElements(e){return Array.from(this.element.querySelectorAll(e))}get controllerSelector(){return C(this.schema.controllerAttribute,this.identifier)}get isDocumentScope(){return this.element===document.documentElement}get documentScope(){return this.isDocumentScope?this:new S(this.schema,document.documentElement,this.identifier,this.guide.logger)}}class We{constructor(e,t,s){this.element=e,this.schema=t,this.delegate=s,this.valueListObserver=new q(this.element,this.controllerAttribute,this),this.scopesByIdentifierByElement=new WeakMap,this.scopeReferenceCounts=new WeakMap}start(){this.valueListObserver.start()}stop(){this.valueListObserver.stop()}get controllerAttribute(){return this.schema.controllerAttribute}parseValueForToken(e){const{element:t,content:s}=e,n=this.fetchScopesByIdentifierForElement(t);let i=n.get(s);return i||(i=this.delegate.createScopeForElementAndIdentifier(t,s),n.set(s,i)),i}elementMatchedValue(e,t){const s=(this.scopeReferenceCounts.get(t)||0)+1;this.scopeReferenceCounts.set(t,s),s==1&&this.delegate.scopeConnected(t)}elementUnmatchedValue(e,t){const s=this.scopeReferenceCounts.get(t);s&&(this.scopeReferenceCounts.set(t,s-1),s==1&&this.delegate.scopeDisconnected(t))}fetchScopesByIdentifierForElement(e){let t=this.scopesByIdentifierByElement.get(e);return t||(t=new Map,this.scopesByIdentifierByElement.set(e,t)),t}}class He{constructor(e){this.application=e,this.scopeObserver=new We(this.element,this.schema,this),this.scopesByIdentifier=new f,this.modulesByIdentifier=new Map}get element(){return this.application.element}get schema(){return this.application.schema}get logger(){return this.application.logger}get controllerAttribute(){return this.schema.controllerAttribute}get modules(){return Array.from(this.modulesByIdentifier.values())}get contexts(){return this.modules.reduce((e,t)=>e.concat(t.contexts),[])}start(){this.scopeObserver.start()}stop(){this.scopeObserver.stop()}loadDefinition(e){this.unloadIdentifier(e.identifier);const t=new Ie(this.application,e);this.connectModule(t);const s=e.controllerConstructor.afterLoad;s&&s(e.identifier,this.application)}unloadIdentifier(e){const t=this.modulesByIdentifier.get(e);t&&this.disconnectModule(t)}getContextForElementAndIdentifier(e,t){const s=this.modulesByIdentifier.get(t);if(s)return s.contexts.find(n=>n.element==e)}handleError(e,t,s){this.application.handleError(e,t,s)}createScopeForElementAndIdentifier(e,t){return new S(this.schema,e,t,this.logger)}scopeConnected(e){this.scopesByIdentifier.add(e.identifier,e);const t=this.modulesByIdentifier.get(e.identifier);t&&t.connectContextForScope(e)}scopeDisconnected(e){this.scopesByIdentifier.delete(e.identifier,e);const t=this.modulesByIdentifier.get(e.identifier);t&&t.disconnectContextForScope(e)}connectModule(e){this.modulesByIdentifier.set(e.identifier,e),this.scopesByIdentifier.getValuesForKey(e.identifier).forEach(s=>e.connectContextForScope(s))}disconnectModule(e){this.modulesByIdentifier.delete(e.identifier),this.scopesByIdentifier.getValuesForKey(e.identifier).forEach(s=>e.disconnectContextForScope(s))}}const Je={controllerAttribute:"data-controller",actionAttribute:"data-action",targetAttribute:"data-target",targetAttributeForScope:r=>`data-${r}-target`,outletAttributeForScope:(r,e)=>`data-${r}-${e}-outlet`,keyMappings:Object.assign(Object.assign({enter:"Enter",tab:"Tab",esc:"Escape",space:" ",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",home:"Home",end:"End"},H("abcdefghijklmnopqrstuvwxyz".split("").map(r=>[r,r]))),H("0123456789".split("").map(r=>[r,r])))};function H(r){return r.reduce((e,[t,s])=>Object.assign(Object.assign({},e),{[t]:s}),{})}class Qe{constructor(e=document.documentElement,t=Je){this.logger=console,this.debug=!1,this.logDebugActivity=(s,n,i={})=>{this.debug&&this.logFormattedMessage(s,n,i)},this.element=e,this.schema=t,this.dispatcher=new m(this),this.router=new He(this),this.actionDescriptorFilters=Object.assign({},ne)}static start(e,t){const s=new this(e,t);return s.start(),s}async start(){await Ge(),this.logDebugActivity("application","starting"),this.dispatcher.start(),this.router.start(),this.logDebugActivity("application","start")}stop(){this.logDebugActivity("application","stopping"),this.dispatcher.stop(),this.router.stop(),this.logDebugActivity("application","stop")}register(e,t){this.load({identifier:e,controllerConstructor:t})}registerActionOption(e,t){this.actionDescriptorFilters[e]=t}load(e,...t){(Array.isArray(e)?e:[e,...t]).forEach(n=>{n.controllerConstructor.shouldLoad&&this.router.loadDefinition(n)})}unload(e,...t){(Array.isArray(e)?e:[e,...t]).forEach(n=>this.router.unloadIdentifier(n))}get controllers(){return this.router.contexts.map(e=>e.controller)}getControllerForElementAndIdentifier(e,t){const s=this.router.getContextForElementAndIdentifier(e,t);return s?s.controller:null}handleError(e,t,s){var n;this.logger.error(`%s %o %o`,t,e,s),(n=window.onerror)===null||n===void 0||n.call(window,t,"",0,0,e)}logFormattedMessage(e,t,s={}){s=Object.assign({application:this},s),this.logger.groupCollapsed(`${e} #${t}`),this.logger.log("details:",Object.assign({},s)),this.logger.groupEnd()}}function Ge(){return new Promise(r=>{document.readyState=="loading"?document.addEventListener("DOMContentLoaded",()=>r()):r()})}function Xe(r){return y(r,"classes").reduce((t,s)=>Object.assign(t,Ze(s)),{})}function Ze(r){return{[`${r}Class`]:{get(){const{classes:e}=this;if(e.has(r))return e.get(r);{const t=e.getAttributeName(r);throw new Error(`Missing attribute "${t}"`)}}},[`${r}Classes`]:{get(){return this.classes.getAll(r)}},[`has${b(r)}Class`]:{get(){return this.classes.has(r)}}}}function Ye(r){return y(r,"outlets").reduce((t,s)=>Object.assign(t,et(s)),{})}function et(r){const e=M(r);return{[`${e}Outlet`]:{get(){const t=this.outlets.find(r);if(t){const s=this.application.getControllerForElementAndIdentifier(t,r);if(s)return s;throw new Error(`Missing "data-controller=${r}" attribute on outlet element for "${this.identifier}" controller`)}throw new Error(`Missing outlet element "${r}" for "${this.identifier}" controller`)}},[`${e}Outlets`]:{get(){const t=this.outlets.findAll(r);return t.length>0?t.map(s=>{const n=this.application.getControllerForElementAndIdentifier(s,r);if(n)return n;console.warn(`The provided outlet element is missing the outlet controller "${r}" for "${this.identifier}"`,s)}).filter(s=>s):[]}},[`${e}OutletElement`]:{get(){const t=this.outlets.find(r);if(t)return t;throw new Error(`Missing outlet element "${r}" for "${this.identifier}" controller`)}},[`${e}OutletElements`]:{get(){return this.outlets.findAll(r)}},[`has${b(e)}Outlet`]:{get(){return this.outlets.has(r)}}}}function tt(r){return y(r,"targets").reduce((t,s)=>Object.assign(t,st(s)),{})}function st(r){return{[`${r}Target`]:{get(){const e=this.targets.find(r);if(e)return e;throw new Error(`Missing target element "${r}" for "${this.identifier}" controller`)}},[`${r}Targets`]:{get(){return this.targets.findAll(r)}},[`has${b(r)}Target`]:{get(){return this.targets.has(r)}}}}function rt(r){const e=Se(r,"values"),t={valueDescriptorMap:{get(){return e.reduce((s,n)=>{const i=J(n,this.identifier),o=this.data.getAttributeNameForKey(i.key);return Object.assign(s,{[o]:i})},{})}}};return e.reduce((s,n)=>Object.assign(s,nt(n)),t)}function nt(r,e){const t=J(r,e),{key:s,name:n,reader:i,writer:o}=t;return{[n]:{get(){const a=this.data.get(s);return a!==null?i(a):t.defaultValue},set(a){a===void 0?this.data.delete(s):this.data.set(s,o(a))}},[`has${b(n)}`]:{get(){return this.data.has(s)||t.hasCustomDefaultValue}}}}function J([r,e],t){return ct({controller:t,token:r,typeDefinition:e})}function k(r){switch(r){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function v(r){switch(typeof r){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(r))return"array";if(Object.prototype.toString.call(r)==="[object Object]")return"object"}function it(r){const e=k(r.typeObject.type);if(!e)return;const t=v(r.typeObject.default);if(e!==t){const s=r.controller?`${r.controller}.${r.token}`:r.token;throw new Error(`The specified default value for the Stimulus Value "${s}" must match the defined type "${e}". The provided default value of "${r.typeObject.default}" is of type "${t}".`)}return e}function ot(r){const e=it({controller:r.controller,token:r.token,typeObject:r.typeDefinition}),t=v(r.typeDefinition),s=k(r.typeDefinition),n=e||t||s;if(n)return n;const i=r.controller?`${r.controller}.${r.typeDefinition}`:r.token;throw new Error(`Unknown value type "${i}" for "${r.token}" value`)}function at(r){const e=k(r);if(e)return lt[e];const t=r.default;return t!==void 0?t:r}function ct(r){const e=`${I(r.token)}-value`,t=ot(r);return{type:t,key:e,name:T(e),get defaultValue(){return at(r.typeDefinition)},get hasCustomDefaultValue(){return v(r.typeDefinition)!==void 0},reader:ht[t],writer:Q[t]||Q.default}}const lt={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},ht={array(r){const e=JSON.parse(r);if(!Array.isArray(e))throw new TypeError(`expected value of type "array" but instead got value "${r}" of type "${v(e)}"`);return e},boolean(r){return!(r=="0"||String(r).toLowerCase()=="false")},number(r){return Number(r)},object(r){const e=JSON.parse(r);if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError(`expected value of type "object" but instead got value "${r}" of type "${v(e)}"`);return e},string(r){return r}},Q={default:ut,array:G,object:G};function G(r){return JSON.stringify(r)}function ut(r){return`${r}`}class h{constructor(e){this.context=e}static get shouldLoad(){return!0}static afterLoad(e,t){}get application(){return this.context.application}get scope(){return this.context.scope}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get targets(){return this.scope.targets}get outlets(){return this.scope.outlets}get classes(){return this.scope.classes}get data(){return this.scope.data}initialize(){}connect(){}disconnect(){}dispatch(e,{target:t=this.element,detail:s={},prefix:n=this.identifier,bubbles:i=!0,cancelable:o=!0}={}){const a=n?`${n}:${e}`:e,l=new CustomEvent(a,{detail:s,bubbles:i,cancelable:o});return t.dispatchEvent(l),l}}h.blessings=[Xe,tt,rt,Ye],h.targets=[],h.outlets=[],h.values={};const d=r=>{Object.assign(r,{showElement(e){e.style.display=null},hideElement(e){e.style.display="none"}})};class L extends h{initialize(){d(this)}toggle(){this.openValue=!this.openValue}openValueChanged(){this.openValue?this.bodyTarget.style.maxHeight=`${this.bodyTarget.scrollHeight}px`:this.bodyTarget.style.maxHeight="0px"}}c(L,"targets",["body"]),c(L,"values",{open:Boolean});const dt=Object.freeze(Object.defineProperty({__proto__:null,default:L},Symbol.toStringTag,{value:"Module"}));class O extends h{initialize(){d(this)}answer({currentTarget:e}){const t=e.dataset.slug,s=this.currentAnswers.find(n=>n.slug===t);if(this.isMultiple){const n=this.givenAnswers.indexOf(s);n!==-1?(this.givenAnswers.splice(n,1),e.classList.remove(this.selectedClass)):(this.givenAnswers.push(s),e.classList.add(this.selectedClass))}else this.givenAnswers=[s],this.commit()}commit(){calculationViewModel.answerCurrentQuestion(this.givenAnswers),this.dispatch("answer")}isMultipleValueChanged(){this.isMultipleValue?this.showElement(this.nextTarget):this.hideElement(this.nextTarget)}get isMultiple(){return this.isMultipleValue}get currentAnswers(){return calculationViewModel.currentQuestion.possibleAnswers}}c(O,"classes",["selected"]),c(O,"targets",["next"]),c(O,"values",{isMultiple:{type:Boolean,default:!1}});const gt=Object.freeze(Object.defineProperty({__proto__:null,default:O},Symbol.toStringTag,{value:"Module"}));class mt extends h{connect(){const t=this.element.getAttribute("data-controller").replace(this.identifier,"");this.element.setAttribute("data-controller",t)}}const ft=Object.freeze(Object.defineProperty({__proto__:null,default:mt},Symbol.toStringTag,{value:"Module"})),pt=r=>{Object.assign(r,{removeEventCallbacks:[],on(e,t,s=this.element){const n=t.bind(r);s.addEventListener(e,n);const i=()=>s.removeEventListener(e,n);return this.removeEventCallbacks.push(i),i},cleanupEvents(){this.removeEventCallbacks.forEach(e=>e())}})};class x extends h{initialize(){d(this),pt(this)}connect(){this.on("answers:answer",this.nextQuestion),this.on("question:reset",this.resetTo),this.hideElement(this.redirectTarget),this.redirectTarget.classList.add("animate-in"),setTimeout(()=>this.start())}disconnect(){this.cleanupEvents()}start(){this.indexValue=0}nextQuestion(){this.indexValue++}resetTo({target:e}){const t=this.questionTargets.indexOf(e);this.indexValue=t}indexValueChanged(){this.questionTargets.forEach((e,t)=>{t=this.questionTargets.length?(this.showElement(this.redirectTarget),setTimeout(()=>this.redirectTarget.classList.remove("animate-in"),300)):(this.hideElement(this.redirectTarget),this.redirectTarget.classList.add("animate-in")),setTimeout(()=>this.scrollToBottom())}scrollToBottom(){const e=this.scrollAreaTarget.getBoundingClientRect();(e.bottom<0||e.bottom>window.innerHeight)&&this.scrollAreaTarget.scrollIntoView({block:"end",behavior:"smooth"})}}c(x,"targets",["question","redirect","scrollArea"]),c(x,"values",{index:{type:Number,default:-1}});const bt=Object.freeze(Object.defineProperty({__proto__:null,default:x},Symbol.toStringTag,{value:"Module"}));class _ extends h{get subjects(){return[this.element,...this.subjectTargets]}initialize(){d(this),this.observerOptions={attributeFilter:["data-loading"]},this.mutationObserver=new MutationObserver(this.checkLoading.bind(this))}connect(){this.mutationObserver.observe(this.element,this.observerOptions),this.checkLoading()}disconnect(){this.mutationObserver.disconnect()}subjectTargetConnected(e){this.mutationObserver.observe(e,this.observerOptions)}checkLoading(){const e=this.subjects.some(t=>t.dataset.loading==="true");this.loadingValue=e}loadingValueChanged(){this.loadingValue===!0?(this.showElement(this.loadingTarget),this.hideElement(this.wrapperTarget)):(this.hideElement(this.loadingTarget),this.showElement(this.wrapperTarget))}}c(_,"values",{loading:Boolean}),c(_,"targets",["loading","wrapper","subject"]);const yt=Object.freeze(Object.defineProperty({__proto__:null,default:_},Symbol.toStringTag,{value:"Module"})),B=r=>{Object.assign(r,{renderTemplateList(e,t,s,n){Array.from(e.children).filter(i=>i!==t).forEach(i=>i.remove()),s.forEach(i=>{const o=t.content.firstElementChild.cloneNode(!0);n(o,i),e.appendChild(o)})}})};class X{constructor(e=window.location){this.url=e,this.domParser=new DOMParser}async parseHTML(e){const{body:t}=this.domParser.parseFromString(e,"text/html");return await this.parseContainer(t)}async parseElement(e){return await this.parseContainer(e)}async parseContainer(e){const t=e.dataset.container;return t==="single"?await this.parseSingle(e):t==="multiple"?await this.parseMultiple(e):{}}async parseSingle(e){const t=e.querySelector("[data-item]");return t.dataset.type==="list"?await this.parseList(t):t.textContent}async parseMultiple(e){const t=Array.from(e.querySelectorAll("[data-item]:not(:scope [data-type] [data-item])")),s={};for(const n of t){const i=n.dataset.item,o=n.dataset.type;o==="list"?s[i]=await this.parseList(n):o==="collection"?s[i]=await this.parseMultiple(n):o==="element"?s[i]=n:s[i]=n.textContent}return s}async parseList(e){const t=Array.from(e.querySelectorAll(":scope > .w-dyn-items > .w-dyn-item")).map(async n=>await this.parseContainer(n)),s=this.parsePagination(e);return(await Promise.all([...t,s])).flat()}async parsePagination(e){const t=e.dataset.paginationId,s=e.querySelector(":scope > .w-pagination-wrapper > .w-pagination-next");if(!s)return[];const n=s.getAttribute("href"),i=vt(this.url,n),o=await fetch(i).then(l=>l.text()),a=this.domParser.parseFromString(o,"text/html").querySelector(`[data-pagination-id=${t}]`);return await this.parseList(a)}}function vt(r,e){const[t,s]=r.split("?"),n=new URLSearchParams(s),i=new URLSearchParams(e),o=new URLSearchParams({...Object.fromEntries(n),...Object.fromEntries(i)});return`${t}?${o}`}function Qt(r){return r}class F extends h{initialize(){d(this),B(this)}async connect(){const e=new X,{slug:t,answers:s,multipleChoice:n}=await e.parseElement(this.element);this.question={slug:t,multipleChoice:n==="true",possibleAnswers:s,givenAnswers:[]},this.answersTarget.dataset.answersIsMultipleValue=this.question.multipleChoice}updateResults(){this.renderTemplateList(this.resultListTarget,this.resultTemplateTarget,this.question.givenAnswers,(e,t)=>{e.querySelector("a").textContent=t.label})}stateValueChanged(){switch(this.stateValue){case"hidden":this.hideElement(this.element),this.titleTarget.classList.add("animate-in"),this.answersTarget.classList.add("animate-in");break;case"shown":this.hideElement(this.resultTarget),this.resultTarget.classList.add("animate-in"),this.showElement(this.element),this.showElement(this.answersTarget),calculationViewModel.setCurrentQuestion(this.question),this.dispatch("show"),setTimeout(()=>{this.titleTarget.classList.remove("animate-in"),this.answersTarget.classList.remove("animate-in")},300);break;case"answered":this.showElement(this.element),this.hideElement(this.answersTarget),this.showElement(this.resultTarget),setTimeout(()=>this.resultTarget.classList.remove("animate-in")),this.updateResults();break}}reset(){calculationViewModel.resetTo(this.question),this.dispatch("reset")}}c(F,"targets",["title","answers","result","resultList","resultTemplate","info"]),c(F,"values",{state:String});const wt=Object.freeze(Object.defineProperty({__proto__:null,default:F},Symbol.toStringTag,{value:"Module"})),j=new Map;function E(r){if(j.has(r))return j.get(r);const e=Ot(r);return j.set(r,e),e}async function Ot(r){const e=await fetch(r).then(t=>t.text());return await new X(r).parseHTML(e)}const Et="/zukunfts-check/data/ergebnisse",At="/zukunfts-check/data/weitere-daten",Tt="/zukunfts-check/data/ergebnisse-fachbereiche";async function Mt(){const r=E(Et),e=E(At).then(o=>o.entryRequirements),t=E(Tt),[s,n,i]=await Promise.all([r,e,t]);return s.forEach(o=>{const a=o.entrySlug,l=n.find(P=>P.slug===a);o.stage=l.stage;const{subjects:p}=i.find(P=>P.slug===o.slug);o.subjects=p}),s}function Ct(r){const e=r.map(n=>n.slug),t=JSON.stringify(e);return btoa(t)}async function St(r){const e=atob(r),t=JSON.parse(e),s=await Mt();return t.map(i=>s.find(o=>o.slug===i)).filter(i=>i!==void 0)}class $ extends h{initialize(){d(this)}connect(){this.hideElement(this.loadingTarget)}async redirect(){this.showLoadingButton();const e=await calculationViewModel.calculateResult(),t=Ct(e),s=calculationViewModel.entry,n=calculationViewModel.goal,i=new URLSearchParams;i.set("entry",s),i.set("results",t),n&&i.set("goal",n),window.location.href=`${this.getCorrectUrl()}?${i}`}getCorrectUrl(){return this.urlValue}showLoadingButton(){const e=this.buttonTarget.getBoundingClientRect().width;this.loadingTarget.style.width=`${e}px`,this.hideElement(this.buttonTarget),this.showElement(this.loadingTarget)}}c($,"values",{url:String}),c($,"targets",["button","loading"]);const kt=Object.freeze(Object.defineProperty({__proto__:null,default:$},Symbol.toStringTag,{value:"Module"})),Z=r=>{Object.assign(r,{reveal(){this.element.dataset.loading=!1}})};class V extends h{initialize(){d(this),B(this),Z(this)}async outcomeValueChanged(){if(!this.hasOutcomeValue)return;const e=this.outcomeValue;if(this.titleTarget.textContent=e.name,this.descriptionTarget.textContent=e.description,this.schulartTarget.textContent=e.schoolType.name,this.linkTarget.href=`/bildungsangebot/${e.slug}`,this.subjectTarget.textContent=e.subjects[0].name,e.subjects.length>1)for(const s of e.subjects.slice(1)){const n=this.subjectTarget.cloneNode(!0);n.textContent=s.name,this.subjectTarget.insertAdjacentElement("afterend",n)}this.hasImgTarget&&(this.imgTarget.src=e.imgUrl),this.hideElement(this.pathWrapperTarget);const t=await resultViewModel.calculatePathsTo(e.stage.slug);t.length>0&&(this.showElement(this.pathWrapperTarget),this.renderTemplateList(this.pathListTarget,this.pathTemplateTarget,t,(s,n)=>{s.dataset["result-PathPathValue"]=JSON.stringify(n)})),this.reveal()}}c(V,"targets",["title","description","subject","img","berufskolleg","schulart","link","pathWrapper","pathList","pathTemplate"]),c(V,"values",{outcome:Object});const Lt=Object.freeze(Object.defineProperty({__proto__:null,default:V},Symbol.toStringTag,{value:"Module"})),Y=Symbol(),ee=Symbol(),te=Symbol();class N extends h{pathValueChanged(){setTimeout(()=>{if(!this.hasPathValue)return;this.pathValue.flatMap((s,n,{length:i})=>n===0?[Y,s]:n===i-1?[te,s]:[ee,s]).map(s=>{if(s===Y)return this.firstLabelTemplateTarget.content.firstElementChild.cloneNode(!0);if(s===ee)return this.middleLabelTemplateTarget.content.firstElementChild.cloneNode(!0);if(s===te)return this.lastLabelTemplateTarget.content.firstElementChild.cloneNode(!0);{const n=this.stageTemplateTarget.content.firstElementChild.cloneNode(!0);return n.textContent=s.name,n}}).forEach(s=>this.pathTarget.appendChild(s))})}}c(N,"targets",["path","stageTemplate","firstLabelTemplate","middleLabelTemplate","lastLabelTemplate"]),c(N,"values",{path:Array});const xt=Object.freeze(Object.defineProperty({__proto__:null,default:N},Symbol.toStringTag,{value:"Module"}));class se extends h{initialize(){d(this),B(this),Z(this)}connect(){this.hideElement(this.emptyTarget),setTimeout(()=>this.showResult())}showResult(){const e=resultViewModel.results;if(e===null){this.showElement(this.emptyTarget),this.hideElement(this.wrapperTarget),this.reveal();return}const t=e[0];this.itemFirstTarget.dataset["result-ItemOutcomeValue"]=JSON.stringify(t),this.renderTemplateList(this.itemListTarget,this.itemTemplateTarget,e.slice(1),(s,n)=>{s.dataset["result-ItemOutcomeValue"]=JSON.stringify(n),s.querySelector("[data-lottie]").innerHTML=null}),this.reveal(),Webflow.destroy(),Webflow.ready(),Webflow.require("ix2").init()}}c(se,"targets",["itemTemplate","itemList","itemFirst","wrapper","empty"]);const _t=Object.freeze(Object.defineProperty({__proto__:null,default:se},Symbol.toStringTag,{value:"Module"}));class Bt extends h{connect(){const e=document.createElement("template");e.innerHTML=this.element.innerHTML;for(let{name:t,value:s}of this.element.attributes)t==="data-controller"&&(s=s.replace(this.identifier,"")),e.setAttribute(t,s);this.element.insertAdjacentElement("afterend",e),this.element.remove()}}const Ft=Object.freeze(Object.defineProperty({__proto__:null,default:Bt},Symbol.toStringTag,{value:"Module"}));var jt=/^(?:.*?(?:controllers|components)\/|\.?\.\/)?(.+)(?:[/_-]controller\..+?)$/;function $t(r,e){r.load(Vt(e))}function Vt(r){return Object.entries(r).map(Nt).filter(e=>e)}function Nt([r,e]){const t=Dt(r),s=e.default;if(t&&typeof s=="function")return{identifier:t,controllerConstructor:s}}function Dt(r){const e=(r.match(jt)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}function Pt(){window.Stimulus=Qe.start();const r=Object.assign({"../controllers/accordion_controller.js":dt,"../controllers/answers_controller.js":gt,"../controllers/cloak_controller.js":ft,"../controllers/flow_controller.js":bt,"../controllers/loading_controller.js":yt,"../controllers/question_controller.js":wt,"../controllers/redirect_controller.js":kt,"../controllers/result/item_controller.js":Lt,"../controllers/result/path_controller.js":xt,"../controllers/result_controller.js":_t,"../controllers/template_controller.js":Ft});$t(Stimulus,r)}const D=new Map;function It(r){return D.has(r)}function Kt(r){return D.get(r)}function Rt(r,e){D.set(r,e)}const A="/zukunfts-check/data/etappen";async function zt(){if(It(A))return Kt(A);const e=(await E(A)).reduce((t,s)=>({...t,[s.slug]:s}),{});return Rt(A,e),e}function Ut(r,e,t){let s=[];return re(r,e,{},[],s,t),s.forEach(a=>a.reverse()),s=s.filter(a=>a.length>1),s.map(a=>a.map(l=>t[l]))}function re(r,e,t,s,n,i){if(t[r]=!0,s.push(r),r===e)n.push([...s]);else{const o=i[r].requirements;for(const a of o)t[a]||re(a,e,t,s,n,i)}s.pop(),t[r]=!1}class qt{constructor(e,t){this.entry=e,this.results=t}async calculatePathsTo(e){const t=await zt();return Ut(e,this.entry,t)}}async function Wt(){var n;const r=new URLSearchParams(window.location.search),e=(n=r.get("entry"))!=null?n:"kein-schulabschluss",t=r.get("results");let s;try{s=await St(t),s.length===0&&(s=null)}catch{s=null}window.resultViewModel=new qt(e,s),Pt(),window.debugResults=()=>{console.table(resultViewModel.results.map(i=>({...i,stage:i.stage.slug,subject:i.subject.slug})))}}Wt()})();