@citolab/qti-components 7.27.0 → 7.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cdn/index.js CHANGED
@@ -1,12 +1,12 @@
1
- var sc=Object.defineProperty;var nc=Object.getOwnPropertyDescriptor;var qn=s=>{throw TypeError(s)};var d=(s,r,e,t)=>{for(var i=t>1?void 0:t?nc(r,e):r,o=s.length-1,n;o>=0;o--)(n=s[o])&&(i=(t?n(r,e,i):n(i))||i);return t&&i&&sc(r,e,i),i};var Zo=(s,r,e)=>r.has(s)||qn("Cannot "+e);var I=(s,r,e)=>(Zo(s,r,"read from private field"),e?e.call(s):r.get(s)),_=(s,r,e)=>r.has(s)?qn("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(s):r.set(s,e),B=(s,r,e,t)=>(Zo(s,r,"write to private field"),t?t.call(s,e):r.set(s,e),e),D=(s,r,e)=>(Zo(s,r,"access private method"),e);var wn=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(r){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=r}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var Te=function(s,r,e,t,i){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof r=="function"?s!==r||!i:!r.has(s))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(s,e):i?i.value=e:r.set(s,e),e},J=function(s,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?s!==r||!t:!r.has(s))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(s):t?t.value:r.get(s)},Vt,Di,$i,xr,es,qr,Oi,qt,wr,Je,Vi,Cn,En=s=>typeof s=="boolean"?s:s?.capture??!1;var ts=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=En(t)?this.__captureEventListeners:this.__eventListeners,o=i.get(r);if(o===void 0)o=new Map,i.set(r,o);else if(o.has(e))return;let n=typeof t=="object"&&t?t:{};n.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),o.set(e,n??{})}removeEventListener(r,e,t){if(e==null)return;let i=En(t)?this.__captureEventListeners:this.__eventListeners,o=i.get(r);o!==void 0&&(o.delete(e),o.size||i.delete(r))}dispatchEvent(r){let e=[this],t=this.__eventTargetParent;if(r.composed)for(;t;)e.push(t),t=t.__eventTargetParent;else for(;t&&t!==this.__host;)e.push(t),t=t.__eventTargetParent;let i=!1,o=!1,n=0,a=null,l=null,c=null,p=r.stopPropagation,h=r.stopImmediatePropagation;Object.defineProperties(r,{target:{get(){return a??l},...j},srcElement:{get(){return r.target},...j},currentTarget:{get(){return c},...j},eventPhase:{get(){return n},...j},composedPath:{value:()=>e,...j},stopPropagation:{value:()=>{i=!0,p.call(r)},...j},stopImmediatePropagation:{value:()=>{o=!0,h.call(r)},...j}});let m=(u,g,q)=>{typeof u=="function"?u(r):typeof u?.handleEvent=="function"&&u.handleEvent(r),g.once&&q.delete(u)},y=()=>(c=null,n=0,!r.defaultPrevented),v=e.slice().reverse();a=!this.__host||!r.composed?this:null;let w=u=>{for(l=this;l.__host&&u.includes(l.__host);)l=l.__host};for(let u of v){!a&&(!l||l===u.__host)&&w(v.slice(v.indexOf(u))),c=u,n=u===r.target?2:1;let g=u.__captureEventListeners.get(r.type);if(g){for(let[q,T]of g)if(m(q,T,g),o)return y()}if(i)return y()}let f=r.bubbles?e:[this];l=null;for(let u of f){!a&&(!l||u===l.__host)&&w(f.slice(0,f.indexOf(u)+1)),c=u,n=u===r.target?2:3;let g=u.__eventListeners.get(r.type);if(g){for(let[q,T]of g)if(m(q,T,g),o)return y()}if(i)return y()}return y()}},rs=ts;var j={__proto__:null};j.enumerable=!0;Object.freeze(j);var is=(Je=class{constructor(r,e={}){if(Vt.set(this,!1),Di.set(this,!1),$i.set(this,!1),xr.set(this,!1),es.set(this,Date.now()),qr.set(this,!1),Oi.set(this,void 0),qt.set(this,void 0),wr.set(this,void 0),this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,arguments.length===0)throw new Error("The type argument must be specified");if(typeof e!="object"||!e)throw new Error('The "options" argument must be an object');let{bubbles:t,cancelable:i,composed:o}=e;Te(this,Vt,!!i,"f"),Te(this,Di,!!t,"f"),Te(this,$i,!!o,"f"),Te(this,Oi,`${r}`,"f"),Te(this,qt,null,"f"),Te(this,wr,!1,"f")}initEvent(r,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){Te(this,xr,!0,"f")}get target(){return J(this,qt,"f")}get currentTarget(){return J(this,qt,"f")}get srcElement(){return J(this,qt,"f")}get type(){return J(this,Oi,"f")}get cancelable(){return J(this,Vt,"f")}get defaultPrevented(){return J(this,Vt,"f")&&J(this,xr,"f")}get timeStamp(){return J(this,es,"f")}composedPath(){return J(this,wr,"f")?[J(this,qt,"f")]:[]}get returnValue(){return!J(this,Vt,"f")||!J(this,xr,"f")}get bubbles(){return J(this,Di,"f")}get composed(){return J(this,$i,"f")}get eventPhase(){return J(this,wr,"f")?Je.AT_TARGET:Je.NONE}get cancelBubble(){return J(this,qr,"f")}set cancelBubble(r){r&&Te(this,qr,!0,"f")}stopPropagation(){Te(this,qr,!0,"f")}get isTrusted(){return!1}},Vt=new WeakMap,Di=new WeakMap,$i=new WeakMap,xr=new WeakMap,es=new WeakMap,qr=new WeakMap,Oi=new WeakMap,qt=new WeakMap,wr=new WeakMap,Je.NONE=0,Je.CAPTURING_PHASE=1,Je.AT_TARGET=2,Je.BUBBLING_PHASE=3,Je);Object.defineProperties(is.prototype,{initEvent:j,stopImmediatePropagation:j,preventDefault:j,target:j,currentTarget:j,srcElement:j,type:j,cancelable:j,defaultPrevented:j,timeStamp:j,composedPath:j,returnValue:j,bubbles:j,composed:j,eventPhase:j,cancelBubble:j,stopPropagation:j,isTrusted:j});var Sn=(Cn=class extends is{constructor(r,e={}){super(r,e),Vi.set(this,void 0),Te(this,Vi,e?.detail??null,"f")}initCustomEvent(r,e,t,i){throw new Error("Method not implemented.")}get detail(){return J(this,Vi,"f")}},Vi=new WeakMap,Cn);Object.defineProperties(Sn.prototype,{detail:j});var os=is,ss=Sn;globalThis.Event??=os;globalThis.CustomEvent??=ss;var Tn=new WeakMap,Cr=s=>{let r=Tn.get(s);return r===void 0&&Tn.set(s,r=new Map),r},ac=class extends rs{constructor(){super(...arguments),this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(Cr(this)).map(([r,e])=>({name:r,value:e}))}get shadowRoot(){return this.__shadowRootMode==="closed"?null:this.__shadowRoot}get localName(){return this.constructor.__localName}get tagName(){return this.localName?.toUpperCase()}setAttribute(r,e){Cr(this).set(r,String(e))}removeAttribute(r){Cr(this).delete(r)}toggleAttribute(r,e){if(this.hasAttribute(r)){if(e===void 0||!e)return this.removeAttribute(r),!1}else return e===void 0||e?(this.setAttribute(r,""),!0):!1;return!0}hasAttribute(r){return Cr(this).has(r)}attachShadow(r){let e={host:this};return this.__shadowRootMode=r.mode,r&&r.mode==="open"&&(this.__shadowRoot=e),e}attachInternals(){if(this.__internals!==null)throw new Error("Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.");let r=new wn(this);return this.__internals=r,r}getAttribute(r){return Cr(this).get(r)??null}};var lc=class extends ac{},as=lc;globalThis.litServerRoot??=Object.defineProperty(new as,"localName",{get(){return"lit-server-root"}});function cc(){let s,r;return{promise:new Promise((t,i)=>{s=t,r=i}),resolve:s,reject:r}}var ns=class{constructor(){this.__definitions=new Map,this.__reverseDefinitions=new Map,this.__pendingWhenDefineds=new Map}define(r,e){if(this.__definitions.has(r))if(process.env.NODE_ENV==="development")console.warn(`'CustomElementRegistry' already has "${r}" defined. This may have been caused by live reload or hot module replacement in which case it can be safely ignored.
2
- Make sure to test your application with a production build as repeat registrations will throw in production.`);else throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the name "${r}" has already been used with this registry`);if(this.__reverseDefinitions.has(e))throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the constructor has already been used with this registry for the tag name ${this.__reverseDefinitions.get(e)}`);e.__localName=r,this.__definitions.set(r,{ctor:e,observedAttributes:e.observedAttributes??[]}),this.__reverseDefinitions.set(e,r),this.__pendingWhenDefineds.get(r)?.resolve(e),this.__pendingWhenDefineds.delete(r)}get(r){return this.__definitions.get(r)?.ctor}getName(r){return this.__reverseDefinitions.get(r)??null}upgrade(r){throw new Error("customElements.upgrade is not currently supported in SSR. Please file a bug if you need it.")}async whenDefined(r){let e=this.__definitions.get(r);if(e)return e.ctor;let t=this.__pendingWhenDefineds.get(r);return t||(t=cc(),this.__pendingWhenDefineds.set(r,t)),t.promise}},dc=ns;var An=new dc;var Er=globalThis,Ni=Er.ShadowRoot&&(Er.ShadyCSS===void 0||Er.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ls=Symbol(),In=new WeakMap,Sr=class{constructor(r,e,t){if(this._$cssResult$=!0,t!==ls)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=r,this.t=e}get styleSheet(){let r=this.o,e=this.t;if(Ni&&r===void 0){let t=e!==void 0&&e.length===1;t&&(r=In.get(e)),r===void 0&&((this.o=r=new CSSStyleSheet).replaceSync(this.cssText),t&&In.set(e,r))}return r}toString(){return this.cssText}},kn=s=>new Sr(typeof s=="string"?s:s+"",void 0,ls),S=(s,...r)=>{let e=s.length===1?s[0]:r.reduce(((t,i,o)=>t+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+s[o+1]),s[0]);return new Sr(e,s,ls)},Mn=(s,r)=>{if(Ni)s.adoptedStyleSheets=r.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(let e of r){let t=document.createElement("style"),i=Er.litNonce;i!==void 0&&t.setAttribute("nonce",i),t.textContent=e.cssText,s.appendChild(t)}},cs=Ni||Er.CSSStyleSheet===void 0?s=>s:s=>s instanceof CSSStyleSheet?(r=>{let e="";for(let t of r.cssRules)e+=t.cssText;return kn(e)})(s):s;var{is:pc,defineProperty:uc,getOwnPropertyDescriptor:mc,getOwnPropertyNames:hc,getOwnPropertySymbols:fc,getPrototypeOf:gc}=Object,Ir=globalThis;Ir.customElements??=An;var Rn=Ir.trustedTypes,bc=Rn?Rn.emptyScript:"",vc=Ir.reactiveElementPolyfillSupport,Tr=(s,r)=>s,Ar={toAttribute(s,r){switch(r){case Boolean:s=s?bc:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,r){let e=s;switch(r){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch{e=null}}return e}},Hi=(s,r)=>!pc(s,r),_n={attribute:!0,type:String,converter:Ar,reflect:!1,useDefault:!1,hasChanged:Hi};Symbol.metadata??=Symbol("metadata"),Ir.litPropertyMetadata??=new WeakMap;var Ne=class extends(globalThis.HTMLElement??as){static addInitializer(r){this._$Ei(),(this.l??=[]).push(r)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(r,e=_n){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(r)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(r,e),!e.noAccessor){let t=Symbol(),i=this.getPropertyDescriptor(r,t,e);i!==void 0&&uc(this.prototype,r,i)}}static getPropertyDescriptor(r,e,t){let{get:i,set:o}=mc(this.prototype,r)??{get(){return this[e]},set(n){this[e]=n}};return{get:i,set(n){let a=i?.call(this);o?.call(this,n),this.requestUpdate(r,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(r){return this.elementProperties.get(r)??_n}static _$Ei(){if(this.hasOwnProperty(Tr("elementProperties")))return;let r=gc(this);r.finalize(),r.l!==void 0&&(this.l=[...r.l]),this.elementProperties=new Map(r.elementProperties)}static finalize(){if(this.hasOwnProperty(Tr("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Tr("properties"))){let e=this.properties,t=[...hc(e),...fc(e)];for(let i of t)this.createProperty(i,e[i])}let r=this[Symbol.metadata];if(r!==null){let e=litPropertyMetadata.get(r);if(e!==void 0)for(let[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let i=this._$Eu(e,t);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(r){let e=[];if(Array.isArray(r)){let t=new Set(r.flat(1/0).reverse());for(let i of t)e.unshift(cs(i))}else r!==void 0&&e.push(cs(r));return e}static _$Eu(r,e){let t=e.attribute;return t===!1?void 0:typeof t=="string"?t:typeof r=="string"?r.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((r=>this.enableUpdating=r)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((r=>r(this)))}addController(r){(this._$EO??=new Set).add(r),this.renderRoot!==void 0&&this.isConnected&&r.hostConnected?.()}removeController(r){this._$EO?.delete(r)}_$E_(){let r=new Map,e=this.constructor.elementProperties;for(let t of e.keys())this.hasOwnProperty(t)&&(r.set(t,this[t]),delete this[t]);r.size>0&&(this._$Ep=r)}createRenderRoot(){let r=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Mn(r,this.constructor.elementStyles),r}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((r=>r.hostConnected?.()))}enableUpdating(r){}disconnectedCallback(){this._$EO?.forEach((r=>r.hostDisconnected?.()))}attributeChangedCallback(r,e,t){this._$AK(r,t)}_$ET(r,e){let t=this.constructor.elementProperties.get(r),i=this.constructor._$Eu(r,t);if(i!==void 0&&t.reflect===!0){let o=(t.converter?.toAttribute!==void 0?t.converter:Ar).toAttribute(e,t.type);this._$Em=r,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(r,e){let t=this.constructor,i=t._$Eh.get(r);if(i!==void 0&&this._$Em!==i){let o=t.getPropertyOptions(i),n=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:Ar;this._$Em=i;let a=n.fromAttribute(e,o.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(r,e,t){if(r!==void 0){let i=this.constructor,o=this[r];if(t??=i.getPropertyOptions(r),!((t.hasChanged??Hi)(o,e)||t.useDefault&&t.reflect&&o===this._$Ej?.get(r)&&!this.hasAttribute(i._$Eu(r,t))))return;this.C(r,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(r,e,{useDefault:t,reflect:i,wrapped:o},n){t&&!(this._$Ej??=new Map).has(r)&&(this._$Ej.set(r,n??e??this[r]),o!==!0||n!==void 0)||(this._$AL.has(r)||(this.hasUpdated||t||(e=void 0),this._$AL.set(r,e)),i===!0&&this._$Em!==r&&(this._$Eq??=new Set).add(r))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let r=this.scheduleUpdate();return r!=null&&await r,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[i,o]of this._$Ep)this[i]=o;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[i,o]of t){let{wrapped:n}=o,a=this[i];n!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,o,a)}}let r=!1,e=this._$AL;try{r=this.shouldUpdate(e),r?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EM()}catch(t){throw r=!1,this._$EM(),t}r&&this._$AE(e)}willUpdate(r){}_$AE(r){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(r)),this.updated(r)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(r){return!0}update(r){this._$Eq&&=this._$Eq.forEach((e=>this._$ET(e,this[e]))),this._$EM()}updated(r){}firstUpdated(r){}};Ne.elementStyles=[],Ne.shadowRootOptions={mode:"open"},Ne[Tr("elementProperties")]=new Map,Ne[Tr("finalized")]=new Map,vc?.({ReactiveElement:Ne}),(Ir.reactiveElementVersions??=[]).push("2.1.1");var Gi=globalThis,Fi=Gi.trustedTypes,Ln=Fi?Fi.createPolicy("lit-html",{createHTML:s=>s}):void 0,ps="$lit$",He=`lit$${Math.random().toFixed(9).slice(2)}$`,us="?"+He,yc=`<${us}>`,Et=Gi.document===void 0?{createTreeWalker:()=>({})}:document,Mr=()=>Et.createComment(""),Rr=s=>s===null||typeof s!="object"&&typeof s!="function",ms=Array.isArray,Nn=s=>ms(s)||typeof s?.[Symbol.iterator]=="function",ds=`[
1
+ var sc=Object.defineProperty;var nc=Object.getOwnPropertyDescriptor;var qn=n=>{throw TypeError(n)};var d=(n,i,e,t)=>{for(var r=t>1?void 0:t?nc(i,e):i,o=n.length-1,s;o>=0;o--)(s=n[o])&&(r=(t?s(i,e,r):s(r))||r);return t&&r&&sc(i,e,r),r};var Zo=(n,i,e)=>i.has(n)||qn("Cannot "+e);var I=(n,i,e)=>(Zo(n,i,"read from private field"),e?e.call(n):i.get(n)),_=(n,i,e)=>i.has(n)?qn("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(n):i.set(n,e),B=(n,i,e,t)=>(Zo(n,i,"write to private field"),t?t.call(n,e):i.set(n,e),e),D=(n,i,e)=>(Zo(n,i,"access private method"),e);var wn=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(i){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=i}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var Te=function(n,i,e,t,r){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!r:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?r.call(n,e):r?r.value=e:i.set(n,e),e},J=function(n,i,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!t:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(n):t?t.value:i.get(n)},Vt,Di,$i,xr,es,qr,Oi,qt,wr,Je,Vi,Cn,En=n=>typeof n=="boolean"?n:n?.capture??!1;var ts=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(i,e,t){if(e==null)return;let r=En(t)?this.__captureEventListeners:this.__eventListeners,o=r.get(i);if(o===void 0)o=new Map,r.set(i,o);else if(o.has(e))return;let s=typeof t=="object"&&t?t:{};s.signal?.addEventListener("abort",()=>this.removeEventListener(i,e,t)),o.set(e,s??{})}removeEventListener(i,e,t){if(e==null)return;let r=En(t)?this.__captureEventListeners:this.__eventListeners,o=r.get(i);o!==void 0&&(o.delete(e),o.size||r.delete(i))}dispatchEvent(i){let e=[this],t=this.__eventTargetParent;if(i.composed)for(;t;)e.push(t),t=t.__eventTargetParent;else for(;t&&t!==this.__host;)e.push(t),t=t.__eventTargetParent;let r=!1,o=!1,s=0,a=null,l=null,c=null,p=i.stopPropagation,h=i.stopImmediatePropagation;Object.defineProperties(i,{target:{get(){return a??l},...j},srcElement:{get(){return i.target},...j},currentTarget:{get(){return c},...j},eventPhase:{get(){return s},...j},composedPath:{value:()=>e,...j},stopPropagation:{value:()=>{r=!0,p.call(i)},...j},stopImmediatePropagation:{value:()=>{o=!0,h.call(i)},...j}});let m=(u,g,q)=>{typeof u=="function"?u(i):typeof u?.handleEvent=="function"&&u.handleEvent(i),g.once&&q.delete(u)},y=()=>(c=null,s=0,!i.defaultPrevented),v=e.slice().reverse();a=!this.__host||!i.composed?this:null;let w=u=>{for(l=this;l.__host&&u.includes(l.__host);)l=l.__host};for(let u of v){!a&&(!l||l===u.__host)&&w(v.slice(v.indexOf(u))),c=u,s=u===i.target?2:1;let g=u.__captureEventListeners.get(i.type);if(g){for(let[q,T]of g)if(m(q,T,g),o)return y()}if(r)return y()}let f=i.bubbles?e:[this];l=null;for(let u of f){!a&&(!l||u===l.__host)&&w(f.slice(0,f.indexOf(u)+1)),c=u,s=u===i.target?2:3;let g=u.__eventListeners.get(i.type);if(g){for(let[q,T]of g)if(m(q,T,g),o)return y()}if(r)return y()}return y()}},rs=ts;var j={__proto__:null};j.enumerable=!0;Object.freeze(j);var is=(Je=class{constructor(i,e={}){if(Vt.set(this,!1),Di.set(this,!1),$i.set(this,!1),xr.set(this,!1),es.set(this,Date.now()),qr.set(this,!1),Oi.set(this,void 0),qt.set(this,void 0),wr.set(this,void 0),this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,arguments.length===0)throw new Error("The type argument must be specified");if(typeof e!="object"||!e)throw new Error('The "options" argument must be an object');let{bubbles:t,cancelable:r,composed:o}=e;Te(this,Vt,!!r,"f"),Te(this,Di,!!t,"f"),Te(this,$i,!!o,"f"),Te(this,Oi,`${i}`,"f"),Te(this,qt,null,"f"),Te(this,wr,!1,"f")}initEvent(i,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){Te(this,xr,!0,"f")}get target(){return J(this,qt,"f")}get currentTarget(){return J(this,qt,"f")}get srcElement(){return J(this,qt,"f")}get type(){return J(this,Oi,"f")}get cancelable(){return J(this,Vt,"f")}get defaultPrevented(){return J(this,Vt,"f")&&J(this,xr,"f")}get timeStamp(){return J(this,es,"f")}composedPath(){return J(this,wr,"f")?[J(this,qt,"f")]:[]}get returnValue(){return!J(this,Vt,"f")||!J(this,xr,"f")}get bubbles(){return J(this,Di,"f")}get composed(){return J(this,$i,"f")}get eventPhase(){return J(this,wr,"f")?Je.AT_TARGET:Je.NONE}get cancelBubble(){return J(this,qr,"f")}set cancelBubble(i){i&&Te(this,qr,!0,"f")}stopPropagation(){Te(this,qr,!0,"f")}get isTrusted(){return!1}},Vt=new WeakMap,Di=new WeakMap,$i=new WeakMap,xr=new WeakMap,es=new WeakMap,qr=new WeakMap,Oi=new WeakMap,qt=new WeakMap,wr=new WeakMap,Je.NONE=0,Je.CAPTURING_PHASE=1,Je.AT_TARGET=2,Je.BUBBLING_PHASE=3,Je);Object.defineProperties(is.prototype,{initEvent:j,stopImmediatePropagation:j,preventDefault:j,target:j,currentTarget:j,srcElement:j,type:j,cancelable:j,defaultPrevented:j,timeStamp:j,composedPath:j,returnValue:j,bubbles:j,composed:j,eventPhase:j,cancelBubble:j,stopPropagation:j,isTrusted:j});var Sn=(Cn=class extends is{constructor(i,e={}){super(i,e),Vi.set(this,void 0),Te(this,Vi,e?.detail??null,"f")}initCustomEvent(i,e,t,r){throw new Error("Method not implemented.")}get detail(){return J(this,Vi,"f")}},Vi=new WeakMap,Cn);Object.defineProperties(Sn.prototype,{detail:j});var os=is,ss=Sn;globalThis.Event??=os;globalThis.CustomEvent??=ss;var Tn=new WeakMap,Cr=n=>{let i=Tn.get(n);return i===void 0&&Tn.set(n,i=new Map),i},ac=class extends rs{constructor(){super(...arguments),this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(Cr(this)).map(([i,e])=>({name:i,value:e}))}get shadowRoot(){return this.__shadowRootMode==="closed"?null:this.__shadowRoot}get localName(){return this.constructor.__localName}get tagName(){return this.localName?.toUpperCase()}setAttribute(i,e){Cr(this).set(i,String(e))}removeAttribute(i){Cr(this).delete(i)}toggleAttribute(i,e){if(this.hasAttribute(i)){if(e===void 0||!e)return this.removeAttribute(i),!1}else return e===void 0||e?(this.setAttribute(i,""),!0):!1;return!0}hasAttribute(i){return Cr(this).has(i)}attachShadow(i){let e={host:this};return this.__shadowRootMode=i.mode,i&&i.mode==="open"&&(this.__shadowRoot=e),e}attachInternals(){if(this.__internals!==null)throw new Error("Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.");let i=new wn(this);return this.__internals=i,i}getAttribute(i){return Cr(this).get(i)??null}};var lc=class extends ac{},as=lc;globalThis.litServerRoot??=Object.defineProperty(new as,"localName",{get(){return"lit-server-root"}});function cc(){let n,i;return{promise:new Promise((t,r)=>{n=t,i=r}),resolve:n,reject:i}}var ns=class{constructor(){this.__definitions=new Map,this.__reverseDefinitions=new Map,this.__pendingWhenDefineds=new Map}define(i,e){if(this.__definitions.has(i))if(process.env.NODE_ENV==="development")console.warn(`'CustomElementRegistry' already has "${i}" defined. This may have been caused by live reload or hot module replacement in which case it can be safely ignored.
2
+ Make sure to test your application with a production build as repeat registrations will throw in production.`);else throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the name "${i}" has already been used with this registry`);if(this.__reverseDefinitions.has(e))throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the constructor has already been used with this registry for the tag name ${this.__reverseDefinitions.get(e)}`);e.__localName=i,this.__definitions.set(i,{ctor:e,observedAttributes:e.observedAttributes??[]}),this.__reverseDefinitions.set(e,i),this.__pendingWhenDefineds.get(i)?.resolve(e),this.__pendingWhenDefineds.delete(i)}get(i){return this.__definitions.get(i)?.ctor}getName(i){return this.__reverseDefinitions.get(i)??null}upgrade(i){throw new Error("customElements.upgrade is not currently supported in SSR. Please file a bug if you need it.")}async whenDefined(i){let e=this.__definitions.get(i);if(e)return e.ctor;let t=this.__pendingWhenDefineds.get(i);return t||(t=cc(),this.__pendingWhenDefineds.set(i,t)),t.promise}},dc=ns;var An=new dc;var Er=globalThis,Ni=Er.ShadowRoot&&(Er.ShadyCSS===void 0||Er.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ls=Symbol(),In=new WeakMap,Sr=class{constructor(i,e,t){if(this._$cssResult$=!0,t!==ls)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=i,this.t=e}get styleSheet(){let i=this.o,e=this.t;if(Ni&&i===void 0){let t=e!==void 0&&e.length===1;t&&(i=In.get(e)),i===void 0&&((this.o=i=new CSSStyleSheet).replaceSync(this.cssText),t&&In.set(e,i))}return i}toString(){return this.cssText}},kn=n=>new Sr(typeof n=="string"?n:n+"",void 0,ls),S=(n,...i)=>{let e=n.length===1?n[0]:i.reduce(((t,r,o)=>t+(s=>{if(s._$cssResult$===!0)return s.cssText;if(typeof s=="number")return s;throw Error("Value passed to 'css' function must be a 'css' function result: "+s+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+n[o+1]),n[0]);return new Sr(e,n,ls)},Mn=(n,i)=>{if(Ni)n.adoptedStyleSheets=i.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(let e of i){let t=document.createElement("style"),r=Er.litNonce;r!==void 0&&t.setAttribute("nonce",r),t.textContent=e.cssText,n.appendChild(t)}},cs=Ni||Er.CSSStyleSheet===void 0?n=>n:n=>n instanceof CSSStyleSheet?(i=>{let e="";for(let t of i.cssRules)e+=t.cssText;return kn(e)})(n):n;var{is:pc,defineProperty:uc,getOwnPropertyDescriptor:mc,getOwnPropertyNames:hc,getOwnPropertySymbols:fc,getPrototypeOf:gc}=Object,Ir=globalThis;Ir.customElements??=An;var Rn=Ir.trustedTypes,bc=Rn?Rn.emptyScript:"",vc=Ir.reactiveElementPolyfillSupport,Tr=(n,i)=>n,Ar={toAttribute(n,i){switch(i){case Boolean:n=n?bc:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,i){let e=n;switch(i){case Boolean:e=n!==null;break;case Number:e=n===null?null:Number(n);break;case Object:case Array:try{e=JSON.parse(n)}catch{e=null}}return e}},Hi=(n,i)=>!pc(n,i),_n={attribute:!0,type:String,converter:Ar,reflect:!1,useDefault:!1,hasChanged:Hi};Symbol.metadata??=Symbol("metadata"),Ir.litPropertyMetadata??=new WeakMap;var Ne=class extends(globalThis.HTMLElement??as){static addInitializer(i){this._$Ei(),(this.l??=[]).push(i)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(i,e=_n){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(i)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(i,e),!e.noAccessor){let t=Symbol(),r=this.getPropertyDescriptor(i,t,e);r!==void 0&&uc(this.prototype,i,r)}}static getPropertyDescriptor(i,e,t){let{get:r,set:o}=mc(this.prototype,i)??{get(){return this[e]},set(s){this[e]=s}};return{get:r,set(s){let a=r?.call(this);o?.call(this,s),this.requestUpdate(i,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(i){return this.elementProperties.get(i)??_n}static _$Ei(){if(this.hasOwnProperty(Tr("elementProperties")))return;let i=gc(this);i.finalize(),i.l!==void 0&&(this.l=[...i.l]),this.elementProperties=new Map(i.elementProperties)}static finalize(){if(this.hasOwnProperty(Tr("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Tr("properties"))){let e=this.properties,t=[...hc(e),...fc(e)];for(let r of t)this.createProperty(r,e[r])}let i=this[Symbol.metadata];if(i!==null){let e=litPropertyMetadata.get(i);if(e!==void 0)for(let[t,r]of e)this.elementProperties.set(t,r)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let r=this._$Eu(e,t);r!==void 0&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(i){let e=[];if(Array.isArray(i)){let t=new Set(i.flat(1/0).reverse());for(let r of t)e.unshift(cs(r))}else i!==void 0&&e.push(cs(i));return e}static _$Eu(i,e){let t=e.attribute;return t===!1?void 0:typeof t=="string"?t:typeof i=="string"?i.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((i=>this.enableUpdating=i)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((i=>i(this)))}addController(i){(this._$EO??=new Set).add(i),this.renderRoot!==void 0&&this.isConnected&&i.hostConnected?.()}removeController(i){this._$EO?.delete(i)}_$E_(){let i=new Map,e=this.constructor.elementProperties;for(let t of e.keys())this.hasOwnProperty(t)&&(i.set(t,this[t]),delete this[t]);i.size>0&&(this._$Ep=i)}createRenderRoot(){let i=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Mn(i,this.constructor.elementStyles),i}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((i=>i.hostConnected?.()))}enableUpdating(i){}disconnectedCallback(){this._$EO?.forEach((i=>i.hostDisconnected?.()))}attributeChangedCallback(i,e,t){this._$AK(i,t)}_$ET(i,e){let t=this.constructor.elementProperties.get(i),r=this.constructor._$Eu(i,t);if(r!==void 0&&t.reflect===!0){let o=(t.converter?.toAttribute!==void 0?t.converter:Ar).toAttribute(e,t.type);this._$Em=i,o==null?this.removeAttribute(r):this.setAttribute(r,o),this._$Em=null}}_$AK(i,e){let t=this.constructor,r=t._$Eh.get(i);if(r!==void 0&&this._$Em!==r){let o=t.getPropertyOptions(r),s=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:Ar;this._$Em=r;let a=s.fromAttribute(e,o.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(i,e,t){if(i!==void 0){let r=this.constructor,o=this[i];if(t??=r.getPropertyOptions(i),!((t.hasChanged??Hi)(o,e)||t.useDefault&&t.reflect&&o===this._$Ej?.get(i)&&!this.hasAttribute(r._$Eu(i,t))))return;this.C(i,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(i,e,{useDefault:t,reflect:r,wrapped:o},s){t&&!(this._$Ej??=new Map).has(i)&&(this._$Ej.set(i,s??e??this[i]),o!==!0||s!==void 0)||(this._$AL.has(i)||(this.hasUpdated||t||(e=void 0),this._$AL.set(i,e)),r===!0&&this._$Em!==i&&(this._$Eq??=new Set).add(i))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let i=this.scheduleUpdate();return i!=null&&await i,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[r,o]of t){let{wrapped:s}=o,a=this[r];s!==!0||this._$AL.has(r)||a===void 0||this.C(r,void 0,o,a)}}let i=!1,e=this._$AL;try{i=this.shouldUpdate(e),i?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EM()}catch(t){throw i=!1,this._$EM(),t}i&&this._$AE(e)}willUpdate(i){}_$AE(i){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(i)),this.updated(i)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(i){return!0}update(i){this._$Eq&&=this._$Eq.forEach((e=>this._$ET(e,this[e]))),this._$EM()}updated(i){}firstUpdated(i){}};Ne.elementStyles=[],Ne.shadowRootOptions={mode:"open"},Ne[Tr("elementProperties")]=new Map,Ne[Tr("finalized")]=new Map,vc?.({ReactiveElement:Ne}),(Ir.reactiveElementVersions??=[]).push("2.1.1");var Gi=globalThis,Fi=Gi.trustedTypes,Ln=Fi?Fi.createPolicy("lit-html",{createHTML:n=>n}):void 0,ps="$lit$",He=`lit$${Math.random().toFixed(9).slice(2)}$`,us="?"+He,yc=`<${us}>`,Et=Gi.document===void 0?{createTreeWalker:()=>({})}:document,Mr=()=>Et.createComment(""),Rr=n=>n===null||typeof n!="object"&&typeof n!="function",ms=Array.isArray,Nn=n=>ms(n)||typeof n?.[Symbol.iterator]=="function",ds=`[
3
3
  \f\r]`,kr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Pn=/-->/g,Dn=/>/g,wt=RegExp(`>|${ds}(?:([^\\s"'>=/]+)(${ds}*=${ds}*(?:[^
4
- \f\r"'\`<>=]|("|')|))|$)`,"g"),$n=/'/g,On=/"/g,Hn=/^(?:script|style|textarea|title)$/i,hs=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),x=hs(1),Xi=hs(2),Hd=hs(3),X=Symbol.for("lit-noChange"),N=Symbol.for("lit-nothing"),Vn=new WeakMap,Ct=Et.createTreeWalker(Et,129);function Fn(s,r){if(!ms(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ln!==void 0?Ln.createHTML(r):r}var Bn=(s,r)=>{let e=s.length-1,t=[],i,o=r===2?"<svg>":r===3?"<math>":"",n=kr;for(let a=0;a<e;a++){let l=s[a],c,p,h=-1,m=0;for(;m<l.length&&(n.lastIndex=m,p=n.exec(l),p!==null);)m=n.lastIndex,n===kr?p[1]==="!--"?n=Pn:p[1]!==void 0?n=Dn:p[2]!==void 0?(Hn.test(p[2])&&(i=RegExp("</"+p[2],"g")),n=wt):p[3]!==void 0&&(n=wt):n===wt?p[0]===">"?(n=i??kr,h=-1):p[1]===void 0?h=-2:(h=n.lastIndex-p[2].length,c=p[1],n=p[3]===void 0?wt:p[3]==='"'?On:$n):n===On||n===$n?n=wt:n===Pn||n===Dn?n=kr:(n=wt,i=void 0);let y=n===wt&&s[a+1].startsWith("/>")?" ":"";o+=n===kr?l+yc:h>=0?(t.push(c),l.slice(0,h)+ps+l.slice(h)+He+y):l+He+(h===-2?a:y)}return[Fn(s,o+(s[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},_r=class s{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let o=0,n=0,a=r.length-1,l=this.parts,[c,p]=Bn(r,e);if(this.el=s.createElement(c,t),Ct.currentNode=this.el.content,e===2||e===3){let h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(i=Ct.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let h of i.getAttributeNames())if(h.endsWith(ps)){let m=p[n++],y=i.getAttribute(h).split(He),v=/([.?@])?(.*)/.exec(m);l.push({type:1,index:o,name:v[2],strings:y,ctor:v[1]==="."?Ui:v[1]==="?"?zi:v[1]==="@"?ji:Tt}),i.removeAttribute(h)}else h.startsWith(He)&&(l.push({type:6,index:o}),i.removeAttribute(h));if(Hn.test(i.tagName)){let h=i.textContent.split(He),m=h.length-1;if(m>0){i.textContent=Fi?Fi.emptyScript:"";for(let y=0;y<m;y++)i.append(h[y],Mr()),Ct.nextNode(),l.push({type:2,index:++o});i.append(h[m],Mr())}}}else if(i.nodeType===8)if(i.data===us)l.push({type:2,index:o});else{let h=-1;for(;(h=i.data.indexOf(He,h+1))!==-1;)l.push({type:7,index:o}),h+=He.length-1}o++}}static createElement(r,e){let t=Et.createElement("template");return t.innerHTML=r,t}};function St(s,r,e=s,t){if(r===X)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,o=Rr(r)?void 0:r._$litDirective$;return i?.constructor!==o&&(i?._$AO?.(!1),o===void 0?i=void 0:(i=new o(s),i._$AT(s,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=St(s,i._$AS(s,r.values),i,t)),r}var Bi=class{constructor(r,e){this._$AV=[],this._$AN=void 0,this._$AD=r,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(r){let{el:{content:e},parts:t}=this._$AD,i=(r?.creationScope??Et).importNode(e,!0);Ct.currentNode=i;let o=Ct.nextNode(),n=0,a=0,l=t[0];for(;l!==void 0;){if(n===l.index){let c;l.type===2?c=new Nt(o,o.nextSibling,this,r):l.type===1?c=new l.ctor(o,l.name,l.strings,this,r):l.type===6&&(c=new Wi(o,this,r)),this._$AV.push(c),l=t[++a]}n!==l?.index&&(o=Ct.nextNode(),n++)}return Ct.currentNode=Et,i}p(r){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(r,t,e),e+=t.strings.length-2):t._$AI(r[e])),e++}},Nt=class s{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=N,this._$AN=void 0,this._$AA=r,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let r=this._$AA.parentNode,e=this._$AM;return e!==void 0&&r?.nodeType===11&&(r=e.parentNode),r}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(r,e=this){r=St(this,r,e),Rr(r)?r===N||r==null||r===""?(this._$AH!==N&&this._$AR(),this._$AH=N):r!==this._$AH&&r!==X&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):Nn(r)?this.k(r):this._(r)}O(r){return this._$AA.parentNode.insertBefore(r,this._$AB)}T(r){this._$AH!==r&&(this._$AR(),this._$AH=this.O(r))}_(r){this._$AH!==N&&Rr(this._$AH)?this._$AA.nextSibling.data=r:this.T(Et.createTextNode(r)),this._$AH=r}$(r){let{values:e,_$litType$:t}=r,i=typeof t=="number"?this._$AC(r):(t.el===void 0&&(t.el=_r.createElement(Fn(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let o=new Bi(i,this),n=o.u(this.options);o.p(e),this.T(n),this._$AH=o}}_$AC(r){let e=Vn.get(r.strings);return e===void 0&&Vn.set(r.strings,e=new _r(r)),e}k(r){ms(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let o of r)i===e.length?e.push(t=new s(this.O(Mr()),this.O(Mr()),this,this.options)):t=e[i],t._$AI(o),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(r=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);r!==this._$AB;){let t=r.nextSibling;r.remove(),r=t}}setConnected(r){this._$AM===void 0&&(this._$Cv=r,this._$AP?.(r))}},Tt=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,o){this.type=1,this._$AH=N,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=o,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=N}_$AI(r,e=this,t,i){let o=this.strings,n=!1;if(o===void 0)r=St(this,r,e,0),n=!Rr(r)||r!==this._$AH&&r!==X,n&&(this._$AH=r);else{let a=r,l,c;for(r=o[0],l=0;l<o.length-1;l++)c=St(this,a[t+l],e,l),c===X&&(c=this._$AH[l]),n||=!Rr(c)||c!==this._$AH[l],c===N?r=N:r!==N&&(r+=(c??"")+o[l+1]),this._$AH[l]=c}n&&!i&&this.j(r)}j(r){r===N?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},Ui=class extends Tt{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===N?void 0:r}},zi=class extends Tt{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==N)}},ji=class extends Tt{constructor(r,e,t,i,o){super(r,e,t,i,o),this.type=5}_$AI(r,e=this){if((r=St(this,r,e,0)??N)===X)return;let t=this._$AH,i=r===N&&t!==N||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,o=r!==N&&(t===N||i);i&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,r),this._$AH=r}handleEvent(r){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,r):this._$AH.handleEvent(r)}},Wi=class{constructor(r,e,t){this.element=r,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(r){St(this,r)}},Y={M:ps,P:He,A:us,C:1,L:Bn,R:Bi,D:Nn,V:St,I:Nt,H:Tt,N:zi,U:ji,B:Ui,F:Wi},xc=Gi.litHtmlPolyfillSupport;xc?.(_r,Nt),(Gi.litHtmlVersions??=[]).push("3.3.1");var fs=(s,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let o=e?.renderBefore??null;t._$litPart$=i=new Nt(r.insertBefore(Mr(),o),o,void 0,e??{})}return i._$AI(s),i};var gs=globalThis,C=class extends Ne{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let r=super.createRenderRoot();return this.renderOptions.renderBefore??=r.firstChild,r}update(r){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(r),this._$Do=fs(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return X}};C._$litElement$=!0,C.finalized=!0,gs.litElementHydrateSupport?.({LitElement:C});var qc=gs.litElementPolyfillSupport;qc?.({LitElement:C});(gs.litElementVersions??=[]).push("4.2.1");var k=s=>(r,e)=>{e!==void 0?e.addInitializer((()=>{customElements.define(s,r)})):customElements.define(s,r)};var wc={attribute:!0,type:String,converter:Ar,reflect:!1,hasChanged:Hi},Cc=(s=wc,r,e)=>{let{kind:t,metadata:i}=e,o=globalThis.litPropertyMetadata.get(i);if(o===void 0&&globalThis.litPropertyMetadata.set(i,o=new Map),t==="setter"&&((s=Object.create(s)).wrapped=!0),o.set(e.name,s),t==="accessor"){let{name:n}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(n,l,s)},init(a){return a!==void 0&&this.C(n,void 0,s,a),a}}}if(t==="setter"){let{name:n}=e;return function(a){let l=this[n];r.call(this,a),this.requestUpdate(n,l,s)}}throw Error("Unsupported decorator location: "+t)};function b(s){return(r,e)=>typeof e=="object"?Cc(s,r,e):((t,i,o)=>{let n=i.hasOwnProperty(o);return i.constructor.createProperty(o,t),n?Object.getOwnPropertyDescriptor(i,o):void 0})(s,r,e)}function R(s){return b({...s,state:!0,attribute:!1})}var Ye=(s,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(s,r,e),e);function Ht(s,r){return(e,t,i)=>{let o=n=>n.renderRoot?.querySelector(s)??null;if(r){let{get:n,set:a}=typeof t=="object"?e:i??(()=>{let l=Symbol();return{get(){return this[l]},set(c){this[l]=c}}})();return Ye(e,t,{get(){let l=n.call(this);return l===void 0&&(l=o(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return Ye(e,t,{get(){return o(this)}})}}function Un(s){return(r,e)=>{let{slot:t,selector:i}=s??{},o="slot"+(t?`[name=${t}]`:":not([name])");return Ye(r,e,{get(){let n=this.renderRoot?.querySelector(o),a=n?.assignedElements(s)??[];return i===void 0?a:a.filter((l=>l.matches(i)))}})}}function zn(s,r,e){Array.from(s.getElementsByTagName("*")).filter(o=>o.localName===r||o.localName?.toLowerCase()===r.toLowerCase()).forEach(o=>{let n=`${r}-${e}`,a=Wn(o,n);o.replaceWith(a)})}function jn(s,r){s.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let o=i.slice(`${r}:`.length),n=`${e.nodeName}-${o}`,a=Wn(e,n);e.replaceWith(a)}})})}function Wn(s,r){let e=s.ownerDocument.createElement(r);for(let t of s.attributes)e.setAttribute(t.name,t.value);for(;s.firstChild;)e.appendChild(s.firstChild);return e}function Gn(s){let r=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),i=e.getAttribute("href"),o=e.getAttribute("category");r.push({identifier:t,href:i,category:o})}),r}function Ft(s,r){return fetch(s,{signal:r}).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.text()}).then(e=>new DOMParser().parseFromString(e,"text/xml")).catch(e=>{throw e.name==="AbortError"?e:new Error(`Failed to load XML: ${e.message}`)})}function Bt(s){return new DOMParser().parseFromString(s,"text/xml")}function Xn(s,r){if(s.nodeType===Node.ELEMENT_NODE){let e=s,t=r.createElement(e.localName);for(let i=0;i<e.attributes.length;i++){let o=e.attributes[i];t.setAttribute(o.localName,o.value)}for(let i=0;i<e.childNodes.length;i++)t.appendChild(Xn(e.childNodes[i],r));return t}return s.cloneNode(!1)}function Ut(s){let r=document.createDocumentFragment();for(let e=0;e<s.childNodes.length;e++)r.appendChild(Xn(s.childNodes[e],document));return r}function zt(s,r){r.endsWith("/")||(r+="/"),s.querySelectorAll("*").forEach(t=>{for(let i of["src","href"]){let o=t.getAttribute(i)?.trim();if(o&&!/^(data:|https?:|blob:)/.test(o)){let n=r+encodeURI(o);t.setAttribute(i,n)}}})}function Qn(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function Jn(s){s.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function Yn(s){switch(s){case"qti-choice-interaction":case"qti-order-interaction":return"qti-simple-choice";case"qti-inline-choice-interaction":return"qti-inline-choice";case"qti-match-interaction":return["qti-simple-match-set:first-of-type qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice"];case"qti-gap-match-interaction":return"qti-gap-text";case"qti-associate-interaction":return"qti-simple-associable-choice";default:return null}}var Ae=(s=!1)=>{let r,e="",t={load(i,o){e=i;let n=encodeURI(i);return s&&sessionStorage.getItem(n)?Promise.resolve(t.parse(sessionStorage.getItem(n))):Ft(i,o).then(a=>(r=a,t.shuffleInteractions(),s&&sessionStorage.setItem(n,new XMLSerializer().serializeToString(r)),t))},parse(i){return r=Bt(i),t},path:i=>(zt(r,i),e=null,t),fn(i){return i(r),t},pciHooks(i){let o=["hook","module"],n=i.substring(0,i.lastIndexOf("/"));for(let a of o)r.querySelectorAll("["+a+"]").forEach(c=>{let p=c.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(c.setAttribute("base-url",i),c.setAttribute("module",n+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,o,n="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(n);if(l.length===0)return t;let c=null,p=null,h=async()=>{if(c===null)try{c=await o(i,"/modules/module_resolution.js")}catch{c=null}if(p===null)try{p=await o(i,"/modules/fallback_module_resolution.js")}catch{p=null}};for(let m of Array.from(l)){m.setAttribute("data-base-url",i);let y=m.getAttribute("custom-interaction-type-identifier");y&&a.includes(y)&&(y=y+a.length,m.setAttribute("custom-interaction-type-identifier",y),a.push(y)),y&&a.push(y);let v=m.querySelector("qti-interaction-modules");if(v&&v.getAttribute("primary-configuration")){await h();let w=v.getAttribute("primary-configuration");if(w)try{let f=await o(i,`/${w}`),u=Array.from(v.querySelectorAll("qti-interaction-module"));for(let g of u){let q=g.getAttribute("id");if(q&&f.paths&&f.paths[q]){let T=f.paths[q],E=Array.isArray(T)?T[0]:T;if(g.setAttribute("primary-path",E),p&&p.paths&&p.paths[q]){let A=p.paths[q];Array.isArray(A)?g.setAttribute("fallback-path",A[0]):g.setAttribute("fallback-path",A)}}}if(f.paths){for(let g in f.paths)if(!v.querySelector(`qti-interaction-module[id="${g}"]`)){let T=r.createElement("qti-interaction-module");T.setAttribute("id",g);let E=Array.isArray(f.paths[g])?f.paths[g][0]:f.paths[g];if(T.setAttribute("primary-path",E),p&&p.paths&&p.paths[g]){let A=p.paths[g];Array.isArray(A)?T.setAttribute("fallback-path",A[0]):T.setAttribute("fallback-path",A)}v.appendChild(T)}}f.urlArgs&&v.setAttribute("url-args",f.urlArgs)}catch(f){console.warn(`Failed to load primary configuration: ${w}`,f)}}else if(await h(),c){m.querySelector("qti-interaction-modules")===null?(v=r.createElement("qti-interaction-modules"),m.appendChild(v)):v=m.querySelector("qti-interaction-modules");for(let w in c.paths){let f=c.paths[w],u="";p&&p.paths&&p.paths[w]&&(u=p.paths[w]);let g=Array.isArray(f)?f:[f],q=Array.isArray(u)?u:[u],T=g.map((E,A)=>{let M=q.length>A?q[A]:"";return{primaryPath:E,fallbackPath:M}});for(let E of q)T.some(A=>A.fallbackPath===E)||T.push({primaryPath:g.length>0?g[0]:E,fallbackPath:E});for(let E of T){let A=r.createElement("qti-interaction-module");E.fallbackPath&&A.setAttribute("fallback-path",E.fallbackPath),A.setAttribute("id",w),A.setAttribute("primary-path",E.primaryPath),v&&v.appendChild(A)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),o=Array.from(i).filter(n=>n.tagName?.toLowerCase().endsWith("-interaction"));for(let n of o){let a=Yn(n.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let c of l){let p=Array.from(n.querySelectorAll(c)),h=p.map((u,g)=>({element:u,fixed:u.hasAttribute("fixed")&&u.getAttribute("fixed")==="true",originalOrder:g})).filter(u=>u.fixed),m=p.filter(u=>!u.hasAttribute("fixed")||u.getAttribute("fixed")!=="true");if(m.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;let y=[...m],v=!1,w=0;for(;!v&&w<20;){w++;for(let u=m.length-1;u>0;u--){let g=Math.floor(Math.random()*(u+1));[m[u],m[g]]=[m[g],m[u]]}v=!m.every((u,g)=>u===y[g])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;n.removeAttribute("shuffle");let f=0;for(let u of m)u.parentElement.insertBefore(u,h[f]?.element),f++;for(let u of h)u.element.parentElement.insertBefore(u.element,m[u.originalOrder])}}return t},extendElementName:(i,o)=>(zn(r,i,o),t),extendElementsWithClass:(i="extend")=>(jn(r,i),t),customInteraction(i,o){let n=r.querySelector("qti-custom-interaction"),a=n.querySelector("object");return n.setAttribute("data-base-ref",i),n.setAttribute("data-base-item",i+o),n.setAttribute("data",a.getAttribute("data")),n.setAttribute("width",a.getAttribute("width")),n.setAttribute("height",a.getAttribute("height")),n.removeChild(a),t},convertCDATAtoComment(){return Qn(r),t},stripStyleSheets(){return Jn(r),t},html(){return e!==null&&zt(r,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(Ut(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return e!==null&&zt(r,e.substring(0,e.lastIndexOf("/"))),Ut(r)},xmlDoc(){return r}};return t};var Kn=()=>{let s,r={async load(e,t){return new Promise(i=>{Ft(e,t).then(o=>(s=o,i(r)))})},parse(e){s=Bt(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var jt=()=>{let s,r={async load(e,t){return new Promise((i,o)=>{Ft(e,t).then(n=>(s=n,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return s=Bt(e),r},path:e=>(zt(s,e),r),fn(e){return e(s),r},items(){return Gn(s)},html(){return new XMLSerializer().serializeToString(Ut(s))},xml(){return new XMLSerializer().serializeToString(s)},htmlDoc(){return Ut(s)},xmlDoc(){return s}};return r};var Zn=s=>{class r extends s{constructor(...i){super(...i);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.postLoadTransformCallback=null;this.postLoadTestTransformCallback=null;this._activeController=null;this._loadResults=[];this._navigationId=0;this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1};this._loadedStimulusHrefs=new Set;this._loadingStimulusHrefs=new Set;this._bindEventHandlers()}navigateTo(i,o){let n=o||this._getDefaultNavigationId(i);n&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_bindEventHandlers(){this.addEventListener("qti-request-navigation",this._handleNavigationRequest.bind(this)),this.addEventListener("qti-assessment-test-connected",this._handleTestConnected.bind(this)),this.addEventListener("qti-assessment-item-connected",this._handleItemConnected.bind(this)),this.addEventListener("qti-assessment-stimulus-ref-connected",this._handleStimulusRefConnected.bind(this))}_handleTestConnected(i){this._testElement=i.detail,this._initializeNavigation()}_handleItemConnected(i){let o=i.detail;this._loadingState.connectedItems++;let n=o.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=n.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:o,item:n}=i;if(console.info("Stimulus ref connected:",{identifier:o.identifier,href:o.href,item:n.identifier}),this._loadedStimulusHrefs.has(o.href)){console.info("Stimulus already loaded, skipping:",o.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(o.href)){console.info("Stimulus already loading, skipping duplicate:",o.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(o.href),console.info("Starting stimulus load:",o.href);try{await this._loadStimulusRef(o,n),this._loadedStimulusHrefs.add(o.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",o.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${o.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(o.href)}}_getDefaultNavigationId(i){return i==="section"?this._testElement?.querySelector("qti-assessment-section")?.identifier:this.sessionContext?.navItemRefId??this._testElement?.querySelector("qti-assessment-item-ref")?.identifier}_initializeNavigation(){if(!this.navigate)return;let i=this._getDefaultNavigationId(this.navigate);i&&this.navigateTo(this.navigate,i)}async _handleNavigationRequest({detail:i}){if(!i?.id)return;this._cancelPreviousNavigation();let o=++this._navigationId,n=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=n,await this._executeNavigation(i.type,i.id,o,n)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===n&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,o,n){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,o,n))}async _executeNavigation(i,o,n,a){i==="item"?await this._navigateToItem(o,n,a):await this._navigateToSection(o,n,a)}async _navigateToItem(i,o,n){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],o,n),await this._waitForLoadingComplete(o,n),!this._isStaleNavigation(o,n)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,o,n){let l=this._findSection(i)?.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:l,navSectionId:i,navItemRefId:null};let c=this._getSectionItemIds(i);this._resetLoadingState(),this._loadingState.expectedItems=c.length,await this._loadItems(c,o,n),await this._waitForLoadingComplete(o,n),!this._isStaleNavigation(o,n)&&this._dispatchTestLoaded(this._loadResults)}_resetLoadingState(){this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1},this._loadedStimulusHrefs.clear(),this._loadingStimulusHrefs.clear()}_checkLoadingComplete(){let i=this._loadingState.connectedItems>=this._loadingState.expectedItems,o=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;i&&o&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(i,o){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(i,o))return;await new Promise(n=>setTimeout(n,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,o){console.info("Loading stimulus:",i.href);let n=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",n?"has content":"no content"),this._applyStimulusContent(n,i,o)}_applyStimulusContent(i,o,n){if(!i){console.warn("No stimulus content to apply");return}let a=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");if(console.info(`Found ${a.length} stimulus elements to apply for ${o.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],c=document.querySelector(`qti-assessment-item[identifier="${n.identifier}"] [data-stimulus-idref="${o.identifier}"]`);if(c)l.push(c),console.info("Found specific target:",c);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${o.identifier}"]`));if(p.length>0)l=p,console.info("Found targets by identifier:",p.length);else{let h=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=h,console.info("Using fallback targets:",h.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,h)=>{p.innerHTML="";let m=Array.from(a).map(y=>y.cloneNode(!0));p.append(...m),console.info(`Applied stimulus content to target ${h+1}/${l.length}`)})}_cancelPreviousNavigation(){this._activeController&&(this._activeController.abort(),console.info("Previous navigation request cancelled")),this._clearNavigationState()}_clearNavigationState(){this._clearLoadedItems(),this._resetLoadingState(),this._loadResults=[]}async _loadItems(i,o,n){if(!this._testElement||i.length===0)return;let a=i.map(p=>this._findItemRef(p));this._clearLoadedItems(),this._clearStimulusRef();let c=(await Promise.all(a.map(p=>this._loadSingleItem(p,o,n)))).filter(Boolean);this._isStaleNavigation(o,n)||(c.forEach(({itemRef:p,doc:h})=>{p&&h&&(p.xmlDoc=h)}),c.forEach(({itemRef:p})=>{let h=p?.identifier;if(!p||!h)return;let m=this.testContext.items.find(y=>y.identifier===h)?.state;m!==void 0&&p.updateComplete.then(()=>{let y=p.assessmentItem;y&&(y.state=m)})}),this._loadResults=c)}async _loadSingleItem(i,o,n){try{let a=await Ae(this.cacheTransform).load(i.href,n.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(o,n)?null:{itemRef:i,doc:a.htmlDoc()}}catch(a){if(a.name==="AbortError")throw console.info(`Item load for ${i.identifier} was aborted`),a;return console.warn(`Failed to load item ${i.identifier}:`,a),null}}async _loadStimulus(i){return(await Ae().load(i,this._activeController?.signal)).htmlDoc()}_findItemRef(i){let o=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);if(!o)throw new Error(`Item with identifier "${i}" not found`);return o}_findSection(i){return this._testElement?.querySelector(`qti-assessment-section[identifier="${i}"]`)||null}_updateSessionContext(i,o){let n=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:n,navSectionId:a,navItemRefId:o}}_getSectionItemIds(i){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${i}"] > qti-assessment-item-ref`)).map(o=>o.identifier).filter(Boolean)}_clearLoadedItems(){let i=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(i||[]).forEach(o=>{o.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(i=>i.innerHTML="")}_isStaleNavigation(i,o){return o.signal.aborted||i!==this._navigationId}_createNavigationError(i,o,n){return{message:i.message||`Failed to load ${o}: ${n}`,details:i,itemId:o==="item"?n:void 0,sectionId:o==="section"?n:void 0}}_dispatchLoadingStarted(i,o){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:i,id:o},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(i,o){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:i,id:o},bubbles:!0,composed:!0}))}_dispatchError(i){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:i,bubbles:!0,composed:!0}))}_dispatchTestLoaded(i){requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:i.map(({itemRef:o})=>({identifier:o?.identifier,element:o})),bubbles:!0,composed:!0}))})}}return d([b({type:String})],r.prototype,"navigate",2),d([b({type:Boolean,attribute:"cache-transform"})],r.prototype,"cacheTransform",2),d([b({type:Number})],r.prototype,"requestTimeout",2),d([b({attribute:!1})],r.prototype,"postLoadTransformCallback",2),d([b({attribute:!1})],r.prototype,"postLoadTestTransformCallback",2),r};var ea=s=>{class r extends s{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",i=>{this.sessionContext={...this.sessionContext,view:i.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",i=>{this._updateElementView(),this._setCorrectResponseVisibility(i.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(n=>{n.classList.toggle("show",n.getAttribute("view")===this.sessionContext.view)});let o=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;o&&o.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this.sessionContext.view==="scorer")}}return r};var Ke=class extends Event{constructor(r,e,t,i){super("context-request",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e,this.callback=t,this.subscribe=i??!1}};var Wt=class{constructor(r,e,t,i){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(o,n)=>{this.unsubscribe&&(this.unsubscribe!==n&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=o,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(o,n)),this.unsubscribe=n},this.host=r,e.context!==void 0){let o=e;this.context=o.context,this.callback=o.callback,this.subscribe=o.subscribe??!1}else this.context=e,this.callback=t,this.subscribe=i??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new Ke(this.context,this.host,this.t,this.subscribe))}};var Qi=class{get value(){return this.o}set value(r){this.setValue(r)}setValue(r,e=!1){let t=e||!Object.is(r,this.o);this.o=r,t&&this.updateObservers()}constructor(r){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:t}]of this.subscriptions)e(this.o,t)},r!==void 0&&(this.value=r)}addCallback(r,e,t){if(!t)return void r(this.value);this.subscriptions.has(r)||this.subscriptions.set(r,{disposer:()=>{this.subscriptions.delete(r)},consumerHost:e});let{disposer:i}=this.subscriptions.get(r);r(this.value,i)}clearCallbacks(){this.subscriptions.clear()}};var bs=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},Gt=class extends Qi{constructor(r,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=i=>{if(i.context!==this.context)return;let o=i.contextTarget??i.composedPath()[0];o!==this.host&&(i.stopPropagation(),this.addCallback(i.callback,o,i.subscribe))},this.onProviderRequest=i=>{if(i.context!==this.context||(i.contextTarget??i.composedPath()[0])===this.host)return;let o=new Set;for(let[n,{consumerHost:a}]of this.subscriptions)o.has(n)||(o.add(n),a.dispatchEvent(new Ke(this.context,a,n,!0)));i.stopPropagation()},this.host=r,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new bs(this.context,this.host))}};function ne({context:s}){return(r,e)=>{let t=new WeakMap;if(typeof e=="object")return{get(){return r.get.call(this)},set(i){return t.get(this).setValue(i),r.set.call(this,i)},init(i){return t.set(this,new Gt(this,{context:s,initialValue:i})),i}};{r.constructor.addInitializer((n=>{t.set(n,new Gt(n,{context:s}))}));let i=Object.getOwnPropertyDescriptor(r,e),o;if(i===void 0){let n=new WeakMap;o={get(){return n.get(this)},set(a){t.get(this).setValue(a),n.set(this,a)},configurable:!0,enumerable:!0}}else{let n=i.set;o={...i,set(a){t.get(this).setValue(a),n?.call(this,a)}}}return void Object.defineProperty(r,e,o)}}}function P({context:s,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new Wt(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new Wt(i,{context:s,callback:o=>{i[t]=o},subscribe:r})}))}}var Ze=Symbol("computedItemContext");var W=Symbol("computedContext");var he=Symbol("configContext");var ta=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var G=Symbol("item");var Xt=Symbol("qtiContext");var vs={view:"candidate"},et=Symbol("testContext");var ys={items:[],testOutcomeVariables:[]},Ie=Symbol("testContext");function U(s,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{let{update:o}=t,n=Array.isArray(s)?s:[s];t.update=function(a){n.forEach(l=>{let c=l;if(a.has(c)){let p=a.get(c),h=this[c];p!==h&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](p,h)}}),o.call(this,a)}}}var tt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},ae=s=>(...r)=>({_$litDirective$:s,values:r}),ke=class{constructor(r){}get _$AU(){return this._$AM._$AU}_$AT(r,e,t){this._$Ct=r,this._$AM=e,this._$Ci=t}_$AS(r,e){return this.update(r,e)}update(r,e){return this.render(...e)}};var{I:Ec}=Y,ia=s=>s===null||typeof s!="object"&&typeof s!="function";var oa=s=>s.strings===void 0,ra=()=>document.createComment(""),Qt=(s,r,e)=>{let t=s._$AA.parentNode,i=r===void 0?s._$AB:r._$AA;if(e===void 0){let o=t.insertBefore(ra(),i),n=t.insertBefore(ra(),i);e=new Ec(o,n,s,s.options)}else{let o=e._$AB.nextSibling,n=e._$AM,a=n!==s;if(a){let l;e._$AQ?.(s),e._$AM=s,e._$AP!==void 0&&(l=s._$AU)!==n._$AU&&e._$AP(l)}if(o!==i||a){let l=e._$AA;for(;l!==o;){let c=l.nextSibling;t.insertBefore(l,i),l=c}}}return e},rt=(s,r,e=s)=>(s._$AI(r,e),s),Sc={},sa=(s,r=Sc)=>s._$AH=r,na=s=>s._$AH,Ji=s=>{s._$AR(),s._$AA.remove()};var Lr=(s,r)=>{let e=s._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),Lr(t,r);return!0},Yi=s=>{let r,e;do{if((r=s._$AM)===void 0)break;e=r._$AN,e.delete(s),s=r}while(e?.size===0)},aa=s=>{for(let r;r=s._$AM;s=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(s))break;e.add(s),Ic(r)}};function Tc(s){this._$AN!==void 0?(Yi(this),this._$AM=s,aa(this)):this._$AM=s}function Ac(s,r=!1,e=0){let t=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(r)if(Array.isArray(t))for(let o=e;o<t.length;o++)Lr(t[o],!1),Yi(t[o]);else t!=null&&(Lr(t,!1),Yi(t));else Lr(this,s)}var Ic=s=>{s.type==tt.CHILD&&(s._$AP??=Ac,s._$AQ??=Tc)},it=class extends ke{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),aa(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(Lr(this,r),Yi(this))}setValue(r){if(oa(this._$Ct))this._$Ct._$AI(r,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=r,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};var xs=class extends it{constructor(){super(...arguments);this.prevData={}}render(e){return N}update(e,[t]){return this.element!==e.element&&(this.element=e.element),this.host=e.options?.host||this.element,this.apply(t),this.groom(t),this.prevData={...t},N}apply(e){let t=this.#e(e),{prevData:i,element:o}=this;for(let n in t){let a=t[n];a!==i[n]&&(a===!0?o.setAttribute(n,""):a===!1?o.removeAttribute(n):a!=null?o.setAttribute(n,String(a)):o.removeAttribute(n))}}groom(e){let{prevData:t,element:i}=this;if(!t)return;let o=e?this.#e(e):{};for(let n in t)(!o||!(n in o))&&i.removeAttribute(n)}#e(e){return Object.fromEntries(Object.entries(e).filter(([t,i])=>typeof i=="function"?!1:t==="max-choices"&&i===0?!0:!(i===""||i===null||i===void 0)))}},Ju=ae(xs);var la=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(la||{}),$=class extends C{constructor(){super();this.disabled=!1;this.readonly=!1;this.showCorrectResponse=!1;this._handleShowCorrectResponseChange=(e,t)=>{this.toggleInternalCorrectResponse(t)};this.showFullCorrectResponse=!1;this._handleShowFullCorrectResponseChange=(e,t)=>{this.toggleFullCorrectResponse(t)};this.showCandidateCorrection=!1;this._handleShowCandidateCorrectionChange=(e,t)=>{this.toggleCandidateCorrection(t)};this._correctResponse=null;this._internals=this.attachInternals()}static{this.formAssociated=!0}get internals(){return this._internals}set correctResponseAttr(e){e===null?this._correctResponse=null:e.includes(",")?this._correctResponse=e.split(",").map(t=>t.trim()):this._correctResponse=e}get correctResponseAttr(){return this._correctResponse===null||this._correctResponse===void 0?null:Array.isArray(this._correctResponse)?this._correctResponse.join(","):this._correctResponse}get isFullCorrectResponse(){return this._isFullCorrectResponse}set isFullCorrectResponse(e){this._isFullCorrectResponse=e,e&&(this.disabled=!0,this.setAttribute("inert",""),this.setAttribute("response-identifier",this.responseIdentifier+"_cr"))}get correctResponse(){let e=this.responseVariable;return e?.correctResponse?e.correctResponse:this._correctResponse}set correctResponse(e){let t=this._correctResponse;this._correctResponse=e,e==null?this.removeAttribute("correct-response"):this.setAttribute("correct-response",Array.isArray(e)?e.join(","):e),this.requestUpdate("_correctResponse",t)}get correctness(){let e=this.correctResponse;if(!e)return null;let t=this.response;if(t==null||t===""||Array.isArray(t)&&t.length===0)return null;let i=Array.isArray(e)?e:[e],n=(Array.isArray(t)?t:[t]).filter(c=>c!=="");if(n.length===0)return null;let a=n.filter(c=>i.includes(c)).length,l=n.filter(c=>!i.includes(c)).length;return a===i.length&&l===0&&n.length===i.length?"correct":a>0&&(a<i.length||l>0)?"partially-correct":"incorrect"}get isInline(){return!1}get responseVariable(){if(!this._context?.variables)return;let e=this._context.variables.filter(i=>i.type==="response"),t=this.getAttribute("response-identifier");return e.find(i=>i.identifier===t)}toggleCorrectResponse(e){(this?.configContext?.correctResponseMode||"internal")==="full"?this.toggleFullCorrectResponse(e):this.toggleInternalCorrectResponse(e)}async toggleFullCorrectResponse(e){let t=this.nextSibling,i=t instanceof HTMLDivElement&&t?.classList.contains("full-correct-response"),o=this.correctResponse;if(!o)return;if(!(e&&(this?.configContext?.fullCorrectResponseOnlyWhenIncorrect===!1||this.correctness!=="correct"))){if(!i)return;this.parentElement?.removeChild(t);return}if(i)return;let a=this.cloneNode(!0);a.removeAttribute("show-full-correct-response"),a.removeAttribute("show-correct-response"),a.removeAttribute("show-candidate-correction");let l=document.createElement("div");l.classList.add("full-correct-response"),this.isInline?l.classList.add("full-correct-response-inline"):l.classList.add("full-correct-response-block"),l.role="full-correct-response",l.appendChild(a),a.isFullCorrectResponse=!0,this.parentElement?.insertBefore(l,this.nextSibling),await a.updateComplete,a.response=Array.isArray(o)?[...o]:o}toggleInternalCorrectResponse(e){this._internals.states.delete("show-correct-response"),e&&this.correctResponse&&this._internals.states.add("show-correct-response")}toggleCandidateCorrection(e){this._internals.states.delete("candidate-correct"),this._internals.states.delete("candidate-partially-correct"),this._internals.states.delete("candidate-incorrect"),e&&(this.correctness==="correct"&&this._internals.states.add("candidate-correct"),this.correctness==="partially-correct"&&this._internals.states.add("candidate-partially-correct"),this.correctness==="incorrect"&&this._internals.states.add("candidate-incorrect"))}get value(){return JSON.stringify(this.response)}set value(e){this.response=e?JSON.parse(e):null}reportValidity(){return this._internals.reportValidity()}reset(){this.response=null}formResetCallback(){this.reset()}connectedCallback(){super.connectedCallback(),!this.isFullCorrectResponse&&this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,cancelable:!1,detail:{interactionElement:this,responseIdentifier:this.responseIdentifier}}))}firstUpdated(){this.isFullCorrectResponse||(this.showCorrectResponse&&this.toggleInternalCorrectResponse(!0),this.showFullCorrectResponse&&this.toggleFullCorrectResponse(!0),this.showCandidateCorrection&&this.toggleCandidateCorrection(!0))}saveResponse(e,t){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e,...t!==void 0?{state:t}:{}}}))}};d([P({context:G,subscribe:!0})],$.prototype,"_context",2),d([P({context:he,subscribe:!0})],$.prototype,"configContext",2),d([b({type:String,attribute:"response-identifier"})],$.prototype,"responseIdentifier",2),d([b({reflect:!0,type:Boolean})],$.prototype,"disabled",2),d([b({reflect:!0,type:Boolean})],$.prototype,"readonly",2),d([b({type:String})],$.prototype,"name",2),d([b({type:String,attribute:"correct-response",reflect:!0})],$.prototype,"correctResponseAttr",1),d([b({type:Boolean,attribute:"show-correct-response",reflect:!0})],$.prototype,"showCorrectResponse",2),d([U("showCorrectResponse",{waitUntilFirstUpdate:!0})],$.prototype,"_handleShowCorrectResponseChange",2),d([b({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],$.prototype,"showFullCorrectResponse",2),d([U("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],$.prototype,"_handleShowFullCorrectResponseChange",2),d([b({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],$.prototype,"showCandidateCorrection",2),d([U("showCandidateCorrection",{waitUntilFirstUpdate:!0})],$.prototype,"_handleShowCandidateCorrectionChange",2),d([R()],$.prototype,"_isFullCorrectResponse",2),d([R()],$.prototype,"_correctResponse",2);var Jt=class extends C{render(){return x`<slot></slot>`}defaultValues(r){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(i=>i.innerHTML.trim());return t.length>1||r==="multiple"||r==="ordered"?t:t[0]}};var L=class extends C{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(console.debug("getVariables",e.tagName.toLowerCase()),e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent.trim(),cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return t==="QTI_CONTEXT"?this.qtiContext?.QTI_CONTEXT?{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}:(console.warn("QTI_CONTEXT not available"),{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}):this.context.variables.find(o=>o.identifier===t)||null}case"qti-multiple":{let i=e.getResult();return console.debug("values",i),i?.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(o=>o.value),cardinality:"multiple",type:"response"}:null}case"qti-ordered":{let i=e.getResult();return i?.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(o=>o.value),cardinality:"ordered",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",i=this.context?.variables?.find(o=>o.identifier===t)||null;return{baseType:i.baseType,value:i.correctResponse,cardinality:i.cardinality}}default:{try{return{baseType:"integer",value:e.getResult()?.toString()||null,cardinality:"single"}}catch{console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}static{this.styles=S`
4
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),$n=/'/g,On=/"/g,Hn=/^(?:script|style|textarea|title)$/i,hs=n=>(i,...e)=>({_$litType$:n,strings:i,values:e}),x=hs(1),Xi=hs(2),Hd=hs(3),X=Symbol.for("lit-noChange"),N=Symbol.for("lit-nothing"),Vn=new WeakMap,Ct=Et.createTreeWalker(Et,129);function Fn(n,i){if(!ms(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ln!==void 0?Ln.createHTML(i):i}var Bn=(n,i)=>{let e=n.length-1,t=[],r,o=i===2?"<svg>":i===3?"<math>":"",s=kr;for(let a=0;a<e;a++){let l=n[a],c,p,h=-1,m=0;for(;m<l.length&&(s.lastIndex=m,p=s.exec(l),p!==null);)m=s.lastIndex,s===kr?p[1]==="!--"?s=Pn:p[1]!==void 0?s=Dn:p[2]!==void 0?(Hn.test(p[2])&&(r=RegExp("</"+p[2],"g")),s=wt):p[3]!==void 0&&(s=wt):s===wt?p[0]===">"?(s=r??kr,h=-1):p[1]===void 0?h=-2:(h=s.lastIndex-p[2].length,c=p[1],s=p[3]===void 0?wt:p[3]==='"'?On:$n):s===On||s===$n?s=wt:s===Pn||s===Dn?s=kr:(s=wt,r=void 0);let y=s===wt&&n[a+1].startsWith("/>")?" ":"";o+=s===kr?l+yc:h>=0?(t.push(c),l.slice(0,h)+ps+l.slice(h)+He+y):l+He+(h===-2?a:y)}return[Fn(n,o+(n[e]||"<?>")+(i===2?"</svg>":i===3?"</math>":"")),t]},_r=class n{constructor({strings:i,_$litType$:e},t){let r;this.parts=[];let o=0,s=0,a=i.length-1,l=this.parts,[c,p]=Bn(i,e);if(this.el=n.createElement(c,t),Ct.currentNode=this.el.content,e===2||e===3){let h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(r=Ct.nextNode())!==null&&l.length<a;){if(r.nodeType===1){if(r.hasAttributes())for(let h of r.getAttributeNames())if(h.endsWith(ps)){let m=p[s++],y=r.getAttribute(h).split(He),v=/([.?@])?(.*)/.exec(m);l.push({type:1,index:o,name:v[2],strings:y,ctor:v[1]==="."?Ui:v[1]==="?"?zi:v[1]==="@"?ji:Tt}),r.removeAttribute(h)}else h.startsWith(He)&&(l.push({type:6,index:o}),r.removeAttribute(h));if(Hn.test(r.tagName)){let h=r.textContent.split(He),m=h.length-1;if(m>0){r.textContent=Fi?Fi.emptyScript:"";for(let y=0;y<m;y++)r.append(h[y],Mr()),Ct.nextNode(),l.push({type:2,index:++o});r.append(h[m],Mr())}}}else if(r.nodeType===8)if(r.data===us)l.push({type:2,index:o});else{let h=-1;for(;(h=r.data.indexOf(He,h+1))!==-1;)l.push({type:7,index:o}),h+=He.length-1}o++}}static createElement(i,e){let t=Et.createElement("template");return t.innerHTML=i,t}};function St(n,i,e=n,t){if(i===X)return i;let r=t!==void 0?e._$Co?.[t]:e._$Cl,o=Rr(i)?void 0:i._$litDirective$;return r?.constructor!==o&&(r?._$AO?.(!1),o===void 0?r=void 0:(r=new o(n),r._$AT(n,e,t)),t!==void 0?(e._$Co??=[])[t]=r:e._$Cl=r),r!==void 0&&(i=St(n,r._$AS(n,i.values),r,t)),i}var Bi=class{constructor(i,e){this._$AV=[],this._$AN=void 0,this._$AD=i,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(i){let{el:{content:e},parts:t}=this._$AD,r=(i?.creationScope??Et).importNode(e,!0);Ct.currentNode=r;let o=Ct.nextNode(),s=0,a=0,l=t[0];for(;l!==void 0;){if(s===l.index){let c;l.type===2?c=new Nt(o,o.nextSibling,this,i):l.type===1?c=new l.ctor(o,l.name,l.strings,this,i):l.type===6&&(c=new Wi(o,this,i)),this._$AV.push(c),l=t[++a]}s!==l?.index&&(o=Ct.nextNode(),s++)}return Ct.currentNode=Et,r}p(i){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(i,t,e),e+=t.strings.length-2):t._$AI(i[e])),e++}},Nt=class n{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(i,e,t,r){this.type=2,this._$AH=N,this._$AN=void 0,this._$AA=i,this._$AB=e,this._$AM=t,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let i=this._$AA.parentNode,e=this._$AM;return e!==void 0&&i?.nodeType===11&&(i=e.parentNode),i}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(i,e=this){i=St(this,i,e),Rr(i)?i===N||i==null||i===""?(this._$AH!==N&&this._$AR(),this._$AH=N):i!==this._$AH&&i!==X&&this._(i):i._$litType$!==void 0?this.$(i):i.nodeType!==void 0?this.T(i):Nn(i)?this.k(i):this._(i)}O(i){return this._$AA.parentNode.insertBefore(i,this._$AB)}T(i){this._$AH!==i&&(this._$AR(),this._$AH=this.O(i))}_(i){this._$AH!==N&&Rr(this._$AH)?this._$AA.nextSibling.data=i:this.T(Et.createTextNode(i)),this._$AH=i}$(i){let{values:e,_$litType$:t}=i,r=typeof t=="number"?this._$AC(i):(t.el===void 0&&(t.el=_r.createElement(Fn(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===r)this._$AH.p(e);else{let o=new Bi(r,this),s=o.u(this.options);o.p(e),this.T(s),this._$AH=o}}_$AC(i){let e=Vn.get(i.strings);return e===void 0&&Vn.set(i.strings,e=new _r(i)),e}k(i){ms(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,r=0;for(let o of i)r===e.length?e.push(t=new n(this.O(Mr()),this.O(Mr()),this,this.options)):t=e[r],t._$AI(o),r++;r<e.length&&(this._$AR(t&&t._$AB.nextSibling,r),e.length=r)}_$AR(i=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);i!==this._$AB;){let t=i.nextSibling;i.remove(),i=t}}setConnected(i){this._$AM===void 0&&(this._$Cv=i,this._$AP?.(i))}},Tt=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(i,e,t,r,o){this.type=1,this._$AH=N,this._$AN=void 0,this.element=i,this.name=e,this._$AM=r,this.options=o,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=N}_$AI(i,e=this,t,r){let o=this.strings,s=!1;if(o===void 0)i=St(this,i,e,0),s=!Rr(i)||i!==this._$AH&&i!==X,s&&(this._$AH=i);else{let a=i,l,c;for(i=o[0],l=0;l<o.length-1;l++)c=St(this,a[t+l],e,l),c===X&&(c=this._$AH[l]),s||=!Rr(c)||c!==this._$AH[l],c===N?i=N:i!==N&&(i+=(c??"")+o[l+1]),this._$AH[l]=c}s&&!r&&this.j(i)}j(i){i===N?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,i??"")}},Ui=class extends Tt{constructor(){super(...arguments),this.type=3}j(i){this.element[this.name]=i===N?void 0:i}},zi=class extends Tt{constructor(){super(...arguments),this.type=4}j(i){this.element.toggleAttribute(this.name,!!i&&i!==N)}},ji=class extends Tt{constructor(i,e,t,r,o){super(i,e,t,r,o),this.type=5}_$AI(i,e=this){if((i=St(this,i,e,0)??N)===X)return;let t=this._$AH,r=i===N&&t!==N||i.capture!==t.capture||i.once!==t.once||i.passive!==t.passive,o=i!==N&&(t===N||r);r&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,i),this._$AH=i}handleEvent(i){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,i):this._$AH.handleEvent(i)}},Wi=class{constructor(i,e,t){this.element=i,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(i){St(this,i)}},Y={M:ps,P:He,A:us,C:1,L:Bn,R:Bi,D:Nn,V:St,I:Nt,H:Tt,N:zi,U:ji,B:Ui,F:Wi},xc=Gi.litHtmlPolyfillSupport;xc?.(_r,Nt),(Gi.litHtmlVersions??=[]).push("3.3.1");var fs=(n,i,e)=>{let t=e?.renderBefore??i,r=t._$litPart$;if(r===void 0){let o=e?.renderBefore??null;t._$litPart$=r=new Nt(i.insertBefore(Mr(),o),o,void 0,e??{})}return r._$AI(n),r};var gs=globalThis,C=class extends Ne{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let i=super.createRenderRoot();return this.renderOptions.renderBefore??=i.firstChild,i}update(i){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(i),this._$Do=fs(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return X}};C._$litElement$=!0,C.finalized=!0,gs.litElementHydrateSupport?.({LitElement:C});var qc=gs.litElementPolyfillSupport;qc?.({LitElement:C});(gs.litElementVersions??=[]).push("4.2.1");var k=n=>(i,e)=>{e!==void 0?e.addInitializer((()=>{customElements.define(n,i)})):customElements.define(n,i)};var wc={attribute:!0,type:String,converter:Ar,reflect:!1,hasChanged:Hi},Cc=(n=wc,i,e)=>{let{kind:t,metadata:r}=e,o=globalThis.litPropertyMetadata.get(r);if(o===void 0&&globalThis.litPropertyMetadata.set(r,o=new Map),t==="setter"&&((n=Object.create(n)).wrapped=!0),o.set(e.name,n),t==="accessor"){let{name:s}=e;return{set(a){let l=i.get.call(this);i.set.call(this,a),this.requestUpdate(s,l,n)},init(a){return a!==void 0&&this.C(s,void 0,n,a),a}}}if(t==="setter"){let{name:s}=e;return function(a){let l=this[s];i.call(this,a),this.requestUpdate(s,l,n)}}throw Error("Unsupported decorator location: "+t)};function b(n){return(i,e)=>typeof e=="object"?Cc(n,i,e):((t,r,o)=>{let s=r.hasOwnProperty(o);return r.constructor.createProperty(o,t),s?Object.getOwnPropertyDescriptor(r,o):void 0})(n,i,e)}function R(n){return b({...n,state:!0,attribute:!1})}var Ye=(n,i,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof i!="object"&&Object.defineProperty(n,i,e),e);function Ht(n,i){return(e,t,r)=>{let o=s=>s.renderRoot?.querySelector(n)??null;if(i){let{get:s,set:a}=typeof t=="object"?e:r??(()=>{let l=Symbol();return{get(){return this[l]},set(c){this[l]=c}}})();return Ye(e,t,{get(){let l=s.call(this);return l===void 0&&(l=o(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return Ye(e,t,{get(){return o(this)}})}}function Un(n){return(i,e)=>{let{slot:t,selector:r}=n??{},o="slot"+(t?`[name=${t}]`:":not([name])");return Ye(i,e,{get(){let s=this.renderRoot?.querySelector(o),a=s?.assignedElements(n)??[];return r===void 0?a:a.filter((l=>l.matches(r)))}})}}function zn(n,i,e){Array.from(n.getElementsByTagName("*")).filter(o=>o.localName===i||o.localName?.toLowerCase()===i.toLowerCase()).forEach(o=>{let s=`${i}-${e}`,a=Wn(o,s);o.replaceWith(a)})}function jn(n,i){n.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(r=>{if(r.startsWith(`${i}:`)){let o=r.slice(`${i}:`.length),s=`${e.nodeName}-${o}`,a=Wn(e,s);e.replaceWith(a)}})})}function Wn(n,i){let e=n.ownerDocument.createElement(i);for(let t of n.attributes)e.setAttribute(t.name,t.value);for(;n.firstChild;)e.appendChild(n.firstChild);return e}function Gn(n){let i=[];return n.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),r=e.getAttribute("href"),o=e.getAttribute("category");i.push({identifier:t,href:r,category:o})}),i}function Ft(n,i){return fetch(n,{signal:i}).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.text()}).then(e=>new DOMParser().parseFromString(e,"text/xml")).catch(e=>{throw e.name==="AbortError"?e:new Error(`Failed to load XML: ${e.message}`)})}function Bt(n){return new DOMParser().parseFromString(n,"text/xml")}function Xn(n,i){if(n.nodeType===Node.ELEMENT_NODE){let e=n,t=i.createElement(e.localName);for(let r=0;r<e.attributes.length;r++){let o=e.attributes[r];t.setAttribute(o.localName,o.value)}for(let r=0;r<e.childNodes.length;r++)t.appendChild(Xn(e.childNodes[r],i));return t}return n.cloneNode(!1)}function Ut(n){let i=document.createDocumentFragment();for(let e=0;e<n.childNodes.length;e++)i.appendChild(Xn(n.childNodes[e],document));return i}function zt(n,i){i.endsWith("/")||(i+="/"),n.querySelectorAll("*").forEach(t=>{for(let r of["src","href"]){let o=t.getAttribute(r)?.trim();if(o&&!/^(data:|https?:|blob:)/.test(o)){let s=i+encodeURI(o);t.setAttribute(r,s)}}})}function Qn(n){n.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function Jn(n){n.querySelectorAll("qti-stylesheet").forEach(i=>i.remove())}function Yn(n){switch(n){case"qti-choice-interaction":case"qti-order-interaction":return"qti-simple-choice";case"qti-inline-choice-interaction":return"qti-inline-choice";case"qti-match-interaction":return["qti-simple-match-set:first-of-type qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice"];case"qti-gap-match-interaction":return"qti-gap-text";case"qti-associate-interaction":return"qti-simple-associable-choice";default:return null}}var Ae=(n=!1)=>{let i,e="",t={load(r,o){e=r;let s=encodeURI(r);return n&&sessionStorage.getItem(s)?Promise.resolve(t.parse(sessionStorage.getItem(s))):Ft(r,o).then(a=>(i=a,t.shuffleInteractions(),n&&sessionStorage.setItem(s,new XMLSerializer().serializeToString(i)),t))},parse(r){return i=Bt(r),t},path:r=>(zt(i,r),e=null,t),fn(r){return r(i),t},pciHooks(r){let o=["hook","module"],s=r.substring(0,r.lastIndexOf("/"));for(let a of o)i.querySelectorAll("["+a+"]").forEach(c=>{let p=c.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(c.setAttribute("base-url",r),c.setAttribute("module",s+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(r,o,s="qti-portable-custom-interaction"){let a=[],l=i.querySelectorAll(s);if(l.length===0)return t;let c=null,p=null,h=async()=>{if(c===null)try{c=await o(r,"/modules/module_resolution.js")}catch{c=null}if(p===null)try{p=await o(r,"/modules/fallback_module_resolution.js")}catch{p=null}};for(let m of Array.from(l)){m.setAttribute("data-base-url",r);let y=m.getAttribute("custom-interaction-type-identifier");y&&a.includes(y)&&(y=y+a.length,m.setAttribute("custom-interaction-type-identifier",y),a.push(y)),y&&a.push(y);let v=m.querySelector("qti-interaction-modules");if(v&&v.getAttribute("primary-configuration")){await h();let w=v.getAttribute("primary-configuration");if(w)try{let f=await o(r,`/${w}`),u=Array.from(v.querySelectorAll("qti-interaction-module"));for(let g of u){let q=g.getAttribute("id");if(q&&f.paths&&f.paths[q]){let T=f.paths[q],E=Array.isArray(T)?T[0]:T;if(g.setAttribute("primary-path",E),p&&p.paths&&p.paths[q]){let A=p.paths[q];Array.isArray(A)?g.setAttribute("fallback-path",A[0]):g.setAttribute("fallback-path",A)}}}if(f.paths){for(let g in f.paths)if(!v.querySelector(`qti-interaction-module[id="${g}"]`)){let T=i.createElement("qti-interaction-module");T.setAttribute("id",g);let E=Array.isArray(f.paths[g])?f.paths[g][0]:f.paths[g];if(T.setAttribute("primary-path",E),p&&p.paths&&p.paths[g]){let A=p.paths[g];Array.isArray(A)?T.setAttribute("fallback-path",A[0]):T.setAttribute("fallback-path",A)}v.appendChild(T)}}f.urlArgs&&v.setAttribute("url-args",f.urlArgs)}catch(f){console.warn(`Failed to load primary configuration: ${w}`,f)}}else if(await h(),c){m.querySelector("qti-interaction-modules")===null?(v=i.createElement("qti-interaction-modules"),m.appendChild(v)):v=m.querySelector("qti-interaction-modules");for(let w in c.paths){let f=c.paths[w],u="";p&&p.paths&&p.paths[w]&&(u=p.paths[w]);let g=Array.isArray(f)?f:[f],q=Array.isArray(u)?u:[u],T=g.map((E,A)=>{let M=q.length>A?q[A]:"";return{primaryPath:E,fallbackPath:M}});for(let E of q)T.some(A=>A.fallbackPath===E)||T.push({primaryPath:g.length>0?g[0]:E,fallbackPath:E});for(let E of T){let A=i.createElement("qti-interaction-module");E.fallbackPath&&A.setAttribute("fallback-path",E.fallbackPath),A.setAttribute("id",w),A.setAttribute("primary-path",E.primaryPath),v&&v.appendChild(A)}}}}return t},shuffleInteractions(){let r=i.querySelectorAll('[shuffle="true"]'),o=Array.from(r).filter(s=>s.tagName?.toLowerCase().endsWith("-interaction"));for(let s of o){let a=Yn(s.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let c of l){let p=Array.from(s.querySelectorAll(c)),h=p.map((u,g)=>({element:u,fixed:u.hasAttribute("fixed")&&u.getAttribute("fixed")==="true",originalOrder:g})).filter(u=>u.fixed),m=p.filter(u=>!u.hasAttribute("fixed")||u.getAttribute("fixed")!=="true");if(m.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;let y=[...m],v=!1,w=0;for(;!v&&w<20;){w++;for(let u=m.length-1;u>0;u--){let g=Math.floor(Math.random()*(u+1));[m[u],m[g]]=[m[g],m[u]]}v=!m.every((u,g)=>u===y[g])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;s.removeAttribute("shuffle");let f=0;for(let u of m)u.parentElement.insertBefore(u,h[f]?.element),f++;for(let u of h)u.element.parentElement.insertBefore(u.element,m[u.originalOrder])}}return t},extendElementName:(r,o)=>(zn(i,r,o),t),extendElementsWithClass:(r="extend")=>(jn(i,r),t),customInteraction(r,o){let s=i.querySelector("qti-custom-interaction"),a=s.querySelector("object");return s.setAttribute("data-base-ref",r),s.setAttribute("data-base-item",r+o),s.setAttribute("data",a.getAttribute("data")),s.setAttribute("width",a.getAttribute("width")),s.setAttribute("height",a.getAttribute("height")),s.removeChild(a),t},convertCDATAtoComment(){return Qn(i),t},stripStyleSheets(){return Jn(i),t},html(){return e!==null&&zt(i,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(Ut(i))},xml(){return new XMLSerializer().serializeToString(i)},htmlDoc(){return e!==null&&zt(i,e.substring(0,e.lastIndexOf("/"))),Ut(i)},xmlDoc(){return i}};return t};var Kn=()=>{let n,i={async load(e,t){return new Promise(r=>{Ft(e,t).then(o=>(n=o,r(i)))})},parse(e){n=Bt(e)},assessmentTest(){let e=n.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return i};var jt=()=>{let n,i={async load(e,t){return new Promise((r,o)=>{Ft(e,t).then(s=>(n=s,i.path(e.substring(0,e.lastIndexOf("/"))),r(i)))})},parse(e){return n=Bt(e),i},path:e=>(zt(n,e),i),fn(e){return e(n),i},items(){return Gn(n)},html(){return new XMLSerializer().serializeToString(Ut(n))},xml(){return new XMLSerializer().serializeToString(n)},htmlDoc(){return Ut(n)},xmlDoc(){return n}};return i};var Zn=n=>{class i extends n{constructor(...r){super(...r);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.postLoadTransformCallback=null;this.postLoadTestTransformCallback=null;this._activeController=null;this._loadResults=[];this._navigationId=0;this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1};this._loadedStimulusHrefs=new Set;this._loadingStimulusHrefs=new Set;this._bindEventHandlers()}navigateTo(r,o){let s=o||this._getDefaultNavigationId(r);s&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:r,id:s},bubbles:!0,composed:!0}))}_bindEventHandlers(){this.addEventListener("qti-request-navigation",this._handleNavigationRequest.bind(this)),this.addEventListener("qti-assessment-test-connected",this._handleTestConnected.bind(this)),this.addEventListener("qti-assessment-item-connected",this._handleItemConnected.bind(this)),this.addEventListener("qti-assessment-stimulus-ref-connected",this._handleStimulusRefConnected.bind(this))}_handleTestConnected(r){this._testElement=r.detail,this._initializeNavigation()}_handleItemConnected(r){let o=r.detail;this._loadingState.connectedItems++;let s=o.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=s.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(r){r.preventDefault();let{element:o,item:s}=r;if(console.info("Stimulus ref connected:",{identifier:o.identifier,href:o.href,item:s.identifier}),this._loadedStimulusHrefs.has(o.href)){console.info("Stimulus already loaded, skipping:",o.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(o.href)){console.info("Stimulus already loading, skipping duplicate:",o.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(o.href),console.info("Starting stimulus load:",o.href);try{await this._loadStimulusRef(o,s),this._loadedStimulusHrefs.add(o.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",o.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${o.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(o.href)}}_getDefaultNavigationId(r){return r==="section"?this._testElement?.querySelector("qti-assessment-section")?.identifier:this.sessionContext?.navItemRefId??this._testElement?.querySelector("qti-assessment-item-ref")?.identifier}_initializeNavigation(){if(!this.navigate)return;let r=this._getDefaultNavigationId(this.navigate);r&&this.navigateTo(this.navigate,r)}async _handleNavigationRequest({detail:r}){if(!r?.id)return;this._cancelPreviousNavigation();let o=++this._navigationId,s=new AbortController;try{this._dispatchLoadingStarted(r.type,r.id),this._activeController=s,await this._executeNavigation(r.type,r.id,o,s)}catch(a){this._handleNavigationError(a,r.type,r.id)}finally{this._activeController===s&&(this._activeController=null),this._dispatchLoadingEnded(r.type,r.id)}}_handleNavigationError(r,o,s){r.name!=="AbortError"&&this._dispatchError(this._createNavigationError(r,o,s))}async _executeNavigation(r,o,s,a){r==="item"?await this._navigateToItem(o,s,a):await this._navigateToSection(o,s,a)}async _navigateToItem(r,o,s){let a=this._findItemRef(r);this._updateSessionContext(a,r),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([r],o,s),await this._waitForLoadingComplete(o,s),!this._isStaleNavigation(o,s)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(r,o,s){let l=this._findSection(r)?.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:l,navSectionId:r,navItemRefId:null};let c=this._getSectionItemIds(r);this._resetLoadingState(),this._loadingState.expectedItems=c.length,await this._loadItems(c,o,s),await this._waitForLoadingComplete(o,s),!this._isStaleNavigation(o,s)&&this._dispatchTestLoaded(this._loadResults)}_resetLoadingState(){this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1},this._loadedStimulusHrefs.clear(),this._loadingStimulusHrefs.clear()}_checkLoadingComplete(){let r=this._loadingState.connectedItems>=this._loadingState.expectedItems,o=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;r&&o&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(r,o){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(r,o))return;await new Promise(s=>setTimeout(s,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(r,o){console.info("Loading stimulus:",r.href);let s=await this._loadStimulus(r.href);console.info("Stimulus loaded, applying content:",s?"has content":"no content"),this._applyStimulusContent(s,r,o)}_applyStimulusContent(r,o,s){if(!r){console.warn("No stimulus content to apply");return}let a=r.querySelectorAll("qti-stimulus-body, qti-stylesheet");if(console.info(`Found ${a.length} stimulus elements to apply for ${o.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],c=document.querySelector(`qti-assessment-item[identifier="${s.identifier}"] [data-stimulus-idref="${o.identifier}"]`);if(c)l.push(c),console.info("Found specific target:",c);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${o.identifier}"]`));if(p.length>0)l=p,console.info("Found targets by identifier:",p.length);else{let h=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=h,console.info("Using fallback targets:",h.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,h)=>{p.innerHTML="";let m=Array.from(a).map(y=>y.cloneNode(!0));p.append(...m),console.info(`Applied stimulus content to target ${h+1}/${l.length}`)})}_cancelPreviousNavigation(){this._activeController&&(this._activeController.abort(),console.info("Previous navigation request cancelled")),this._clearNavigationState()}_clearNavigationState(){this._clearLoadedItems(),this._resetLoadingState(),this._loadResults=[]}async _loadItems(r,o,s){if(!this._testElement||r.length===0)return;let a=r.map(p=>this._findItemRef(p));this._clearLoadedItems(),this._clearStimulusRef();let c=(await Promise.all(a.map(p=>this._loadSingleItem(p,o,s)))).filter(Boolean);this._isStaleNavigation(o,s)||(c.forEach(({itemRef:p,doc:h})=>{p&&h&&(p.xmlDoc=h)}),c.forEach(({itemRef:p})=>{let h=p?.identifier;if(!p||!h)return;let m=this.testContext.items.find(y=>y.identifier===h)?.state;m!==void 0&&p.updateComplete.then(()=>{let y=p.assessmentItem;y&&(y.state=m)})}),this._loadResults=c)}async _loadSingleItem(r,o,s){try{let a=await Ae(this.cacheTransform).load(r.href,s.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,r)),this._isStaleNavigation(o,s)?null:{itemRef:r,doc:a.htmlDoc()}}catch(a){if(a.name==="AbortError")throw console.info(`Item load for ${r.identifier} was aborted`),a;return console.warn(`Failed to load item ${r.identifier}:`,a),null}}async _loadStimulus(r){return(await Ae().load(r,this._activeController?.signal)).htmlDoc()}_findItemRef(r){let o=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${r}"]`);if(!o)throw new Error(`Item with identifier "${r}" not found`);return o}_findSection(r){return this._testElement?.querySelector(`qti-assessment-section[identifier="${r}"]`)||null}_updateSessionContext(r,o){let s=r.closest("qti-test-part")?.identifier,a=r.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:s,navSectionId:a,navItemRefId:o}}_getSectionItemIds(r){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${r}"] > qti-assessment-item-ref`)).map(o=>o.identifier).filter(Boolean)}_clearLoadedItems(){let r=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(r||[]).forEach(o=>{o.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(r=>r.innerHTML="")}_isStaleNavigation(r,o){return o.signal.aborted||r!==this._navigationId}_createNavigationError(r,o,s){return{message:r.message||`Failed to load ${o}: ${s}`,details:r,itemId:o==="item"?s:void 0,sectionId:o==="section"?s:void 0}}_dispatchLoadingStarted(r,o){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:r,id:o},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(r,o){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:r,id:o},bubbles:!0,composed:!0}))}_dispatchError(r){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:r,bubbles:!0,composed:!0}))}_dispatchTestLoaded(r){requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:r.map(({itemRef:o})=>({identifier:o?.identifier,element:o})),bubbles:!0,composed:!0}))})}}return d([b({type:String})],i.prototype,"navigate",2),d([b({type:Boolean,attribute:"cache-transform"})],i.prototype,"cacheTransform",2),d([b({type:Number})],i.prototype,"requestTimeout",2),d([b({attribute:!1})],i.prototype,"postLoadTransformCallback",2),d([b({attribute:!1})],i.prototype,"postLoadTestTransformCallback",2),i};var ea=n=>{class i extends n{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",r=>{this.sessionContext={...this.sessionContext,view:r.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",r=>{this._updateElementView(),this._setCorrectResponseVisibility(r.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(s=>{s.classList.toggle("show",s.getAttribute("view")===this.sessionContext.view)});let o=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;o&&o.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this.sessionContext.view==="scorer")}}return i};var Ke=class extends Event{constructor(i,e,t,r){super("context-request",{bubbles:!0,composed:!0}),this.context=i,this.contextTarget=e,this.callback=t,this.subscribe=r??!1}};var Wt=class{constructor(i,e,t,r){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(o,s)=>{this.unsubscribe&&(this.unsubscribe!==s&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=o,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(o,s)),this.unsubscribe=s},this.host=i,e.context!==void 0){let o=e;this.context=o.context,this.callback=o.callback,this.subscribe=o.subscribe??!1}else this.context=e,this.callback=t,this.subscribe=r??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new Ke(this.context,this.host,this.t,this.subscribe))}};var Qi=class{get value(){return this.o}set value(i){this.setValue(i)}setValue(i,e=!1){let t=e||!Object.is(i,this.o);this.o=i,t&&this.updateObservers()}constructor(i){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:t}]of this.subscriptions)e(this.o,t)},i!==void 0&&(this.value=i)}addCallback(i,e,t){if(!t)return void i(this.value);this.subscriptions.has(i)||this.subscriptions.set(i,{disposer:()=>{this.subscriptions.delete(i)},consumerHost:e});let{disposer:r}=this.subscriptions.get(i);i(this.value,r)}clearCallbacks(){this.subscriptions.clear()}};var bs=class extends Event{constructor(i,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=i,this.contextTarget=e}},Gt=class extends Qi{constructor(i,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=r=>{if(r.context!==this.context)return;let o=r.contextTarget??r.composedPath()[0];o!==this.host&&(r.stopPropagation(),this.addCallback(r.callback,o,r.subscribe))},this.onProviderRequest=r=>{if(r.context!==this.context||(r.contextTarget??r.composedPath()[0])===this.host)return;let o=new Set;for(let[s,{consumerHost:a}]of this.subscriptions)o.has(s)||(o.add(s),a.dispatchEvent(new Ke(this.context,a,s,!0)));r.stopPropagation()},this.host=i,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new bs(this.context,this.host))}};function ne({context:n}){return(i,e)=>{let t=new WeakMap;if(typeof e=="object")return{get(){return i.get.call(this)},set(r){return t.get(this).setValue(r),i.set.call(this,r)},init(r){return t.set(this,new Gt(this,{context:n,initialValue:r})),r}};{i.constructor.addInitializer((s=>{t.set(s,new Gt(s,{context:n}))}));let r=Object.getOwnPropertyDescriptor(i,e),o;if(r===void 0){let s=new WeakMap;o={get(){return s.get(this)},set(a){t.get(this).setValue(a),s.set(this,a)},configurable:!0,enumerable:!0}}else{let s=r.set;o={...r,set(a){t.get(this).setValue(a),s?.call(this,a)}}}return void Object.defineProperty(i,e,o)}}}function P({context:n,subscribe:i}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new Wt(this,{context:n,callback:r=>{e.set.call(this,r)},subscribe:i})})):e.constructor.addInitializer((r=>{new Wt(r,{context:n,callback:o=>{r[t]=o},subscribe:i})}))}}var Ze=Symbol("computedItemContext");var W=Symbol("computedContext");var he=Symbol("configContext");var ta=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var G=Symbol("item");var Xt=Symbol("qtiContext");var vs={view:"candidate"},et=Symbol("testContext");var ys={items:[],testOutcomeVariables:[]},Ie=Symbol("testContext");function U(n,i){let e={waitUntilFirstUpdate:!1,...i};return(t,r)=>{let{update:o}=t,s=Array.isArray(n)?n:[n];t.update=function(a){s.forEach(l=>{let c=l;if(a.has(c)){let p=a.get(c),h=this[c];p!==h&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[r](p,h)}}),o.call(this,a)}}}var tt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},ae=n=>(...i)=>({_$litDirective$:n,values:i}),ke=class{constructor(i){}get _$AU(){return this._$AM._$AU}_$AT(i,e,t){this._$Ct=i,this._$AM=e,this._$Ci=t}_$AS(i,e){return this.update(i,e)}update(i,e){return this.render(...e)}};var{I:Ec}=Y,ia=n=>n===null||typeof n!="object"&&typeof n!="function";var oa=n=>n.strings===void 0,ra=()=>document.createComment(""),Qt=(n,i,e)=>{let t=n._$AA.parentNode,r=i===void 0?n._$AB:i._$AA;if(e===void 0){let o=t.insertBefore(ra(),r),s=t.insertBefore(ra(),r);e=new Ec(o,s,n,n.options)}else{let o=e._$AB.nextSibling,s=e._$AM,a=s!==n;if(a){let l;e._$AQ?.(n),e._$AM=n,e._$AP!==void 0&&(l=n._$AU)!==s._$AU&&e._$AP(l)}if(o!==r||a){let l=e._$AA;for(;l!==o;){let c=l.nextSibling;t.insertBefore(l,r),l=c}}}return e},rt=(n,i,e=n)=>(n._$AI(i,e),n),Sc={},sa=(n,i=Sc)=>n._$AH=i,na=n=>n._$AH,Ji=n=>{n._$AR(),n._$AA.remove()};var Lr=(n,i)=>{let e=n._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(i,!1),Lr(t,i);return!0},Yi=n=>{let i,e;do{if((i=n._$AM)===void 0)break;e=i._$AN,e.delete(n),n=i}while(e?.size===0)},aa=n=>{for(let i;i=n._$AM;n=i){let e=i._$AN;if(e===void 0)i._$AN=e=new Set;else if(e.has(n))break;e.add(n),Ic(i)}};function Tc(n){this._$AN!==void 0?(Yi(this),this._$AM=n,aa(this)):this._$AM=n}function Ac(n,i=!1,e=0){let t=this._$AH,r=this._$AN;if(r!==void 0&&r.size!==0)if(i)if(Array.isArray(t))for(let o=e;o<t.length;o++)Lr(t[o],!1),Yi(t[o]);else t!=null&&(Lr(t,!1),Yi(t));else Lr(this,n)}var Ic=n=>{n.type==tt.CHILD&&(n._$AP??=Ac,n._$AQ??=Tc)},it=class extends ke{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,e,t){super._$AT(i,e,t),aa(this),this.isConnected=i._$AU}_$AO(i,e=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),e&&(Lr(this,i),Yi(this))}setValue(i){if(oa(this._$Ct))this._$Ct._$AI(i,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=i,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};var xs=class extends it{constructor(){super(...arguments);this.prevData={}}render(e){return N}update(e,[t]){return this.element!==e.element&&(this.element=e.element),this.host=e.options?.host||this.element,this.apply(t),this.groom(t),this.prevData={...t},N}apply(e){let t=this.#e(e),{prevData:r,element:o}=this;for(let s in t){let a=t[s];a!==r[s]&&(a===!0?o.setAttribute(s,""):a===!1?o.removeAttribute(s):a!=null?o.setAttribute(s,String(a)):o.removeAttribute(s))}}groom(e){let{prevData:t,element:r}=this;if(!t)return;let o=e?this.#e(e):{};for(let s in t)(!o||!(s in o))&&r.removeAttribute(s)}#e(e){return Object.fromEntries(Object.entries(e).filter(([t,r])=>typeof r=="function"?!1:t==="max-choices"&&r===0?!0:!(r===""||r===null||r===void 0)))}},Ju=ae(xs);var la=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(la||{}),$=class extends C{constructor(){super();this.disabled=!1;this.readonly=!1;this.showCorrectResponse=!1;this._handleShowCorrectResponseChange=(e,t)=>{this.toggleInternalCorrectResponse(t)};this.showFullCorrectResponse=!1;this._handleShowFullCorrectResponseChange=(e,t)=>{this.toggleFullCorrectResponse(t)};this.showCandidateCorrection=!1;this._handleShowCandidateCorrectionChange=(e,t)=>{this.toggleCandidateCorrection(t)};this._correctResponse=null;this._internals=this.attachInternals()}static{this.formAssociated=!0}get internals(){return this._internals}set correctResponseAttr(e){e===null?this._correctResponse=null:e.includes(",")?this._correctResponse=e.split(",").map(t=>t.trim()):this._correctResponse=e}get correctResponseAttr(){return this._correctResponse===null||this._correctResponse===void 0?null:Array.isArray(this._correctResponse)?this._correctResponse.join(","):this._correctResponse}get isFullCorrectResponse(){return this._isFullCorrectResponse}set isFullCorrectResponse(e){this._isFullCorrectResponse=e,e&&(this.disabled=!0,this.setAttribute("inert",""),this.setAttribute("response-identifier",this.responseIdentifier+"_cr"))}get correctResponse(){let e=this.responseVariable;return e?.correctResponse?e.correctResponse:this._correctResponse}set correctResponse(e){let t=this._correctResponse;this._correctResponse=e,e==null?this.removeAttribute("correct-response"):this.setAttribute("correct-response",Array.isArray(e)?e.join(","):e),this.requestUpdate("_correctResponse",t)}get correctness(){let e=this.correctResponse;if(!e)return null;let t=this.response;if(t==null||t===""||Array.isArray(t)&&t.length===0)return null;let r=Array.isArray(e)?e:[e],s=(Array.isArray(t)?t:[t]).filter(c=>c!=="");if(s.length===0)return null;let a=s.filter(c=>r.includes(c)).length,l=s.filter(c=>!r.includes(c)).length;return a===r.length&&l===0&&s.length===r.length?"correct":a>0&&(a<r.length||l>0)?"partially-correct":"incorrect"}get isInline(){return!1}get responseVariable(){if(!this._context?.variables)return;let e=this._context.variables.filter(r=>r.type==="response"),t=this.getAttribute("response-identifier");return e.find(r=>r.identifier===t)}toggleCorrectResponse(e){(this?.configContext?.correctResponseMode||"internal")==="full"?this.toggleFullCorrectResponse(e):this.toggleInternalCorrectResponse(e)}async toggleFullCorrectResponse(e){let t=this.nextSibling,r=t instanceof HTMLDivElement&&t?.classList.contains("full-correct-response"),o=this.correctResponse;if(!o)return;if(!(e&&(this?.configContext?.fullCorrectResponseOnlyWhenIncorrect===!1||this.correctness!=="correct"))){if(!r)return;this.parentElement?.removeChild(t);return}if(r)return;let a=this.cloneNode(!0);a.removeAttribute("show-full-correct-response"),a.removeAttribute("show-correct-response"),a.removeAttribute("show-candidate-correction");let l=document.createElement("div");l.classList.add("full-correct-response"),this.isInline?l.classList.add("full-correct-response-inline"):l.classList.add("full-correct-response-block"),l.role="full-correct-response",l.appendChild(a),a.isFullCorrectResponse=!0,this.parentElement?.insertBefore(l,this.nextSibling),await a.updateComplete,a.response=Array.isArray(o)?[...o]:o}toggleInternalCorrectResponse(e){this._internals.states.delete("show-correct-response"),e&&this.correctResponse&&this._internals.states.add("show-correct-response")}toggleCandidateCorrection(e){this._internals.states.delete("candidate-correct"),this._internals.states.delete("candidate-partially-correct"),this._internals.states.delete("candidate-incorrect"),e&&(this.correctness==="correct"&&this._internals.states.add("candidate-correct"),this.correctness==="partially-correct"&&this._internals.states.add("candidate-partially-correct"),this.correctness==="incorrect"&&this._internals.states.add("candidate-incorrect"))}get value(){return JSON.stringify(this.response)}set value(e){this.response=e?JSON.parse(e):null}reportValidity(){return this._internals.reportValidity()}reset(){this.response=null}formResetCallback(){this.reset()}connectedCallback(){super.connectedCallback(),!this.isFullCorrectResponse&&this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,cancelable:!1,detail:{interactionElement:this,responseIdentifier:this.responseIdentifier}}))}firstUpdated(){this.isFullCorrectResponse||(this.showCorrectResponse&&this.toggleInternalCorrectResponse(!0),this.showFullCorrectResponse&&this.toggleFullCorrectResponse(!0),this.showCandidateCorrection&&this.toggleCandidateCorrection(!0))}saveResponse(e,t){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e,...t!==void 0?{state:t}:{}}}))}};d([P({context:G,subscribe:!0})],$.prototype,"_context",2),d([P({context:he,subscribe:!0})],$.prototype,"configContext",2),d([b({type:String,attribute:"response-identifier"})],$.prototype,"responseIdentifier",2),d([b({reflect:!0,type:Boolean})],$.prototype,"disabled",2),d([b({reflect:!0,type:Boolean})],$.prototype,"readonly",2),d([b({type:String})],$.prototype,"name",2),d([b({type:String,attribute:"correct-response",reflect:!0})],$.prototype,"correctResponseAttr",1),d([b({type:Boolean,attribute:"show-correct-response",reflect:!0})],$.prototype,"showCorrectResponse",2),d([U("showCorrectResponse",{waitUntilFirstUpdate:!0})],$.prototype,"_handleShowCorrectResponseChange",2),d([b({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],$.prototype,"showFullCorrectResponse",2),d([U("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],$.prototype,"_handleShowFullCorrectResponseChange",2),d([b({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],$.prototype,"showCandidateCorrection",2),d([U("showCandidateCorrection",{waitUntilFirstUpdate:!0})],$.prototype,"_handleShowCandidateCorrectionChange",2),d([R()],$.prototype,"_isFullCorrectResponse",2),d([R()],$.prototype,"_correctResponse",2);var Jt=class extends C{render(){return x`<slot></slot>`}defaultValues(i){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(r=>r.innerHTML.trim());return t.length>1||i==="multiple"||i==="ordered"?t:t[0]}};var L=class extends C{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(console.debug("getVariables",e.tagName.toLowerCase()),e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent.trim(),cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return t==="QTI_CONTEXT"?this.qtiContext?.QTI_CONTEXT?{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}:(console.warn("QTI_CONTEXT not available"),{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}):this.context.variables.find(o=>o.identifier===t)||null}case"qti-multiple":{let r=e.getResult();return console.debug("values",r),r?.length>0?{identifier:"",baseType:r[0].baseType,value:r.map(o=>o.value),cardinality:"multiple",type:"response"}:null}case"qti-ordered":{let r=e.getResult();return r?.length>0?{identifier:"",baseType:r[0].baseType,value:r.map(o=>o.value),cardinality:"ordered",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",r=this.context?.variables?.find(o=>o.identifier===t)||null;return{baseType:r.baseType,value:r.correctResponse,cardinality:r.cardinality}}default:{try{return{baseType:"integer",value:e.getResult()?.toString()||null,cardinality:"single"}}catch{console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}static{this.styles=S`
5
5
  slot {
6
6
  display: none;
7
7
  }
8
8
  `}render(){return x`<pre>${JSON.stringify(this.result,null,2)}</pre>
9
- <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};d([R()],L.prototype,"result",2),d([P({context:G,subscribe:!0}),R()],L.prototype,"context",2),d([P({context:Xt,subscribe:!0}),R()],L.prototype,"qtiContext",2);var fe=class extends L{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var kc=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Pr=s=>{if(typeof s=="string")return s;let r=kc();return r==="."?s.toLocaleString():s.toString().replace(".","").replace(r,".")};function qs(s){return s==null}function Ki(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var le=class extends C{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(r){let e=this._context.variables.find(i=>i.identifier===r)||null;if(this.outcomeIdentifier!==r||!e)return;let t=!1;Array.isArray(e.value)?t=e.value.includes(this.identifier):t=!qs(this.identifier)&&!qs(e?.value)&&this.identifier===e.value||!1,this.#e(t)}#e(r){this.showStatus=r&&this.showHide==="show"||!r&&this.showHide==="hide"?"on":"off"}};d([b({type:String,attribute:"show-hide"})],le.prototype,"showHide",2),d([b({type:String,attribute:"outcome-identifier"})],le.prototype,"outcomeIdentifier",2),d([b({type:String})],le.prototype,"identifier",2),d([b({type:String,attribute:!1})],le.prototype,"showStatus",2),d([P({context:G,subscribe:!0}),R()],le.prototype,"_context",2);var ca=class extends C{};var K=class{static isPointInArea(r,e,t){if(t!=="point")return console.warn(`Base type ${t} is not supported for point area mapping.`),!1;let[i,o]=r.split(" ").map(Number),[n,...a]=e.split(","),l=a.map(Number);switch(n.toLowerCase()){case"circle":case"default":{let[c,p,h]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((i-c)**2+(o-p)**2)<=h}case"rect":{let[c,p,h,m]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):i>=c&&i<=h&&o>=p&&o<=m}case"ellipse":{let[c,p,h,m]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let y=(i-c)**2/h**2,v=(o-p)**2/m**2;return y+v<=1}case"poly":{if(l.length<6||l.length%2!==0)return console.warn(`Invalid polygon definition: ${e}`),!1;let c=[];for(let p=0;p<l.length;p+=2)c.push({x:l[p],y:l[p+1]});return this.isPointInPolygon({x:i,y:o},c)}default:return console.warn(`Unsupported shape type: ${n}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,o=e.length-1;i<e.length;o=i++){let n=e[i].x,a=e[i].y,l=e[o].x,c=e[o].y;a>r.y!=c>r.y&&r.x<(l-n)*(r.y-a)/(c-a)+n&&(t=!t)}return t}static compareSingleValues(r,e,t){switch(t){case"identifier":case"string":return r===e;case"integer":{let i=parseInt(r,10),o=parseInt(e,10);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`Cannot convert ${r} and/or ${e} to int.`);break}case"float":{let i=parseFloat(r),o=parseFloat(e);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`couldn't convert ${r} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=r.split(" ").sort(),o=e.split(" ").sort();if(i.length===2&&o.length===2)return t==="pair"&&(i.sort(),o.sort()),i.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${r} 2: ${e}`);break}}return!1}};var ws=s=>{class r extends s{constructor(...i){super(...i);this.testContext=ys;this.sessionContext=vs;this._updateItemInTestContext=i=>{let o=i._context,n=o.identifier,a=o.variables,l=this.testContext.items.find(c=>c?.identifier===n);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${n} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(n,a);else{let c=[...i.variables];for(let p of l.variables){let h=c.find(m=>m.identifier===p.identifier);h?h.value=p.value:c.push(p)}i.variables=c}};this._initializeEventListeners()}updateItemVariables(i,o){let n=this.testContext.items.find(l=>l.identifier===i);n&&(n.variables=n.variables.map(l=>{let c=o.find(p=>p.identifier===l.identifier);return c?{...l,...c}:l}));let a=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=o)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=ys,this.sessionContext=vs,this.testContext&&this.testContext.items.length>0)return;this._testElement=i.detail;let o=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(n=>({href:n.href,identifier:n.identifier,category:n.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:o}}),this.addEventListener("qti-assessment-item-connected",i=>{let o=i.detail,n=o.closest("qti-assessment-item-ref")?.identifier;n&&(o.assessmentItemRefId=n),this._updateItemInTestContext(i.detail)}),this.addEventListener("qti-item-context-updated",i=>{this._updateItemVariablesInTestContext(i.detail.itemContext.identifier,i.detail.itemContext.variables,i.detail.itemContext.state)})}_updateItemVariablesInTestContext(i,o,n){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==i?a:{...a,variables:o.map(l=>{let c=a.variables.find(p=>p.identifier===l.identifier);return c?{...c,...l}:l}),...n!==void 0?{state:n?{...n}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return d([b({attribute:!1,type:Object}),ne({context:Ie})],r.prototype,"testContext",2),d([b({attribute:!1,type:Object}),ne({context:et})],r.prototype,"sessionContext",2),r},da=class extends ws(C){};var pa=s=>{class r extends s{constructor(...t){super(...t),this.addEventListener("qti-register-variable",i=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],i.detail.variable]},i.stopPropagation()}),this.addEventListener("qti-set-outcome-value",i=>{let{outcomeIdentifier:o,value:n}=i.detail;this.updateOutcomeVariable(o,n),i.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,i){let o=this.getOutcome(t);if(!o){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(n=>n.identifier!==t?n:{...n,value:o.cardinality==="single"?i:[...n.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var Zi=class extends Zn(ea(pa(ws(C)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return x`<slot></slot>`}};Zi=d([k("qti-test")],Zi);var ua={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},Fe=class extends C{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};d([b({type:String})],Fe.prototype,"category",2),d([b({type:String})],Fe.prototype,"identifier",2),d([b({type:Boolean,converter:ua})],Fe.prototype,"required",2),d([b({type:Boolean,converter:ua})],Fe.prototype,"fixed",2),d([b({type:String})],Fe.prototype,"href",2),d([b({type:Object,attribute:!1})],Fe.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Fe);var Cs={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},Be=class extends C{get title(){return this.#e}set title(r){this.#e=r,this.removeAttribute("title"),this.setAttribute("data-title",r)}#e="";async connectedCallback(){this.#e=this.getAttribute("title")||"",super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return x`<slot name="qti-rubric-block"></slot><slot></slot>`}};d([b({type:String})],Be.prototype,"identifier",2),d([b({type:String})],Be.prototype,"required",2),d([b({type:Boolean,converter:Cs})],Be.prototype,"fixed",2),d([b({type:Boolean,converter:Cs})],Be.prototype,"visible",2),d([b({type:Boolean,converter:Cs,attribute:"keep-together"})],Be.prototype,"keepTogether",2),d([P({context:Ie,subscribe:!0})],Be.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",Be);var Dr,It=class extends C{constructor(){super(...arguments);_(this,Dr,"")}get title(){return I(this,Dr)}set title(e){B(this,Dr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};Dr=new WeakMap,d([b({type:String})],It.prototype,"identifier",2),d([b({type:String})],It.prototype,"title",1),d([P({context:Ie,subscribe:!0})],It.prototype,"_testContext",2),It=d([k("qti-assessment-test")],It);var $r,Ue=class extends C{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";_(this,$r,"")}get title(){return I(this,$r)}set title(e){B(this,$r,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};$r=new WeakMap,d([b({type:String})],Ue.prototype,"identifier",2),d([b({type:String})],Ue.prototype,"class",2),d([b({type:String,attribute:"navigation-mode"})],Ue.prototype,"navigationMode",2),d([b({type:String,attribute:"submission-mode"})],Ue.prototype,"submissionMode",2),Ue=d([k("qti-test-part")],Ue);customElements.get("qti-test-part")||customElements.define("qti-test-part",Ue);var Or,Yt,Vr,Kt,ge,de,ma,ha,Nr,Hr,Fr,Br,Ur,zr,fa,Es,ga,ce=class extends C{constructor(){super(...arguments);_(this,de);_(this,Or);_(this,Yt,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{I(this,ge).forEach(i=>i.disabled=t)};this._handleReadonlyChange=(e,t)=>I(this,ge).forEach(i=>i.readonly=t);this._context={variables:ta};_(this,Vr,{...this._context,variables:this._context.variables});_(this,Kt,[]);_(this,ge,[]);_(this,Nr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},B(this,Vr,this._context),e.stopPropagation()});_(this,Hr,e=>{e.stopImmediatePropagation();let t=e.detail;I(this,Kt).push(t),(Number(this._context.variables.find(o=>o.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});_(this,Fr,e=>{e.stopImmediatePropagation(),I(this,ge).push(e.detail.interactionElement)});_(this,Br,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});_(this,Ur,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:i}=e.detail;this.updateOutcomeVariable(t,i),e.stopPropagation()});_(this,zr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:i,state:o}=e.detail;this.updateResponseVariable(t,i),o!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:o}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return I(this,Or)}set title(e){B(this,Or,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}set assessmentItemRefId(e){this._context={...this._context,identifier:e}}get assessmentItemRefId(){return this._context.identifier}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type,...e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context={...this._context,variables:this._context.variables.map(t=>{let i=e.find(o=>o.identifier===t.identifier);return i?{...t,...i,interpolationTable:t.interpolationTable}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let i=I(this,ge).find(o=>o.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&I(this,Kt).forEach(i=>i.checkShowFeedback(t.identifier))})}get state(){return this._context.state}set state(e){this._context={...this._context,state:e?{...e}:void 0}}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let o=I(this,ge).find(n=>n.getAttribute("response-identifier")===t.responseIdentifier);o&&(o.response=t.response)}}render(){return x`<slot></slot>`}connectedCallback(){D(this,de,ma).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),D(this,de,fa).call(this)})}disconnectedCallback(){D(this,de,ha).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of I(this,ge))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of I(this,ge))t.toggleCandidateCorrection(e);document.querySelectorAll("item-show-candidate-correction").forEach(t=>{t.shown=e})}processResponse(e=!0,t=!0){this.validate(t),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(n=>n.identifier==="numAttempts")?.value+1).toString()),this.adaptive==="false"&&D(this,de,ga).call(this);let i=this.querySelector("qti-response-processing"),o=!!(i&&typeof i.process=="function");return o&&i.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",D(this,de,Es).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),o}resetResponses(){this._context=I(this,Vr)}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}updateResponseVariable(e,t){this._context={...this._context,variables:this._context.variables.map(i=>i.identifier!==e?i:{...i,value:t})},this.showCandidateCorrection(!1),this.dispatchEvent(new CustomEvent("qti-interaction-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}})),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",D(this,de,Es).call(this))}setOutcomeVariable(e,t){this.updateOutcomeVariable(e,t),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateOutcomeVariable(e,t){let i=this.getOutcome(e);if(!i){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,value:i.cardinality==="single"||Array.isArray(t)?t:[t]})},I(this,Kt).forEach(o=>o.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(o=>o.identifier===e)?.value}}))}validate(e=!0){let t=I(this,ge).every(i=>i.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of I(this,ge))e.reportValidity()}};Or=new WeakMap,Yt=new WeakMap,Vr=new WeakMap,Kt=new WeakMap,ge=new WeakMap,de=new WeakSet,ma=function(){this.addEventListener("qti-register-variable",I(this,Nr)),this.addEventListener("qti-register-feedback",I(this,Hr)),this.addEventListener("qti-register-interaction",I(this,Fr)),this.addEventListener("end-attempt",I(this,Br)),this.addEventListener("qti-set-outcome-value",I(this,Ur)),this.addEventListener("qti-interaction-response",I(this,zr))},ha=function(){this.removeEventListener("qti-register-variable",I(this,Nr)),this.removeEventListener("qti-register-feedback",I(this,Hr)),this.removeEventListener("qti-register-interaction",I(this,Fr)),this.removeEventListener("end-attempt",I(this,Br)),this.removeEventListener("qti-set-outcome-value",I(this,Ur)),this.removeEventListener("qti-interaction-response",I(this,zr))},Nr=new WeakMap,Hr=new WeakMap,Fr=new WeakMap,Br=new WeakMap,Ur=new WeakMap,zr=new WeakMap,fa=function(){B(this,Yt,this.querySelector("qti-template-processing")),I(this,Yt)&&I(this,Yt).process()},Es=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},ga=function(){this._context={...this._context,variables:this._context.variables.map(e=>{if(e.type!=="outcome")return e;let o=("defaultValue"in e?e.defaultValue:null)??null;return o==null&&(e.baseType==="integer"||e.baseType==="float")&&(o="0"),{...e,value:o}})}},d([b({type:String})],ce.prototype,"identifier",2),d([b({type:String})],ce.prototype,"adaptive",2),d([b({type:String})],ce.prototype,"timeDependent",2),d([b({type:String})],ce.prototype,"title",1),d([b({type:Boolean})],ce.prototype,"disabled",2),d([U("disabled",{waitUntilFirstUpdate:!0})],ce.prototype,"_handleDisabledChange",2),d([b({type:Boolean})],ce.prototype,"readonly",2),d([U("readonly",{waitUntilFirstUpdate:!0})],ce.prototype,"_handleReadonlyChange",2),d([ne({context:G})],ce.prototype,"_context",2),ce=d([k("qti-assessment-item")],ce);var Ss=class s extends Event{constructor(e,t){super(s.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},Zt=class extends C{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new Ss(this,e);this.dispatchEvent(t);let i=e?.querySelector(`[data-stimulus-idref="${this.identifier}"]`);!t.defaultPrevented&&i&&await this.updateStimulusRef(i)}async updateStimulusRef(e){let t=await Ae().load(this.href).then(i=>i.htmlDoc());if(t){let i=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...i)}}};d([b({type:String})],Zt.prototype,"identifier",2),d([b({type:String})],Zt.prototype,"href",2),Zt=d([k("qti-assessment-stimulus-ref")],Zt);var eo=class extends C{};eo=d([k("qti-companion-materials-info")],eo);var Wr,jr=class extends C{constructor(){super(...arguments);_(this,Wr)}render(){return x`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{B(this,Wr,new Function("context","fn","item",e?.textContent??""))}catch(t){console.error("custom-operator contains invalid javascript code",t)}}calculate(){let e={variable:i=>this._context?.variables.find(o=>o.identifier===i)?.value??"",correct:i=>this._context?.variables.find(o=>o.identifier===i)?.correctResponse??""},t={getVariable:i=>this._context?.variables.find(o=>o.identifier===i),updateOutcomeVariable:(i,o)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:o}}))},updateResponseVariable:(i,o)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:i,response:o}}))}};return I(this,Wr).call(this,this._context,e,t)}};Wr=new WeakMap,d([P({context:G,subscribe:!0}),R()],jr.prototype,"_context",2),jr=d([k("qti-custom-operator")],jr);var Gr=class extends le{render(){return x` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};Gr.styles=S`
9
+ <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};d([R()],L.prototype,"result",2),d([P({context:G,subscribe:!0}),R()],L.prototype,"context",2),d([P({context:Xt,subscribe:!0}),R()],L.prototype,"qtiContext",2);var fe=class extends L{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var kc=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Pr=n=>{if(typeof n=="string")return n;let i=kc();return i==="."?n.toLocaleString():n.toString().replace(".","").replace(i,".")};function qs(n){return n==null}function Ki(n){return n.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var le=class extends C{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(i){let e=this._context.variables.find(r=>r.identifier===i)||null;if(this.outcomeIdentifier!==i||!e)return;let t=!1;Array.isArray(e.value)?t=e.value.includes(this.identifier):t=!qs(this.identifier)&&!qs(e?.value)&&this.identifier===e.value||!1,this.#e(t)}#e(i){this.showStatus=i&&this.showHide==="show"||!i&&this.showHide==="hide"?"on":"off"}};d([b({type:String,attribute:"show-hide"})],le.prototype,"showHide",2),d([b({type:String,attribute:"outcome-identifier"})],le.prototype,"outcomeIdentifier",2),d([b({type:String})],le.prototype,"identifier",2),d([b({type:String,attribute:!1})],le.prototype,"showStatus",2),d([P({context:G,subscribe:!0}),R()],le.prototype,"_context",2);var ca=class extends C{};var K=class{static isPointInArea(i,e,t){if(t!=="point")return console.warn(`Base type ${t} is not supported for point area mapping.`),!1;let[r,o]=i.split(" ").map(Number),[s,...a]=e.split(","),l=a.map(Number);switch(s.toLowerCase()){case"circle":case"default":{let[c,p,h]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((r-c)**2+(o-p)**2)<=h}case"rect":{let[c,p,h,m]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):r>=c&&r<=h&&o>=p&&o<=m}case"ellipse":{let[c,p,h,m]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let y=(r-c)**2/h**2,v=(o-p)**2/m**2;return y+v<=1}case"poly":{if(l.length<6||l.length%2!==0)return console.warn(`Invalid polygon definition: ${e}`),!1;let c=[];for(let p=0;p<l.length;p+=2)c.push({x:l[p],y:l[p+1]});return this.isPointInPolygon({x:r,y:o},c)}default:return console.warn(`Unsupported shape type: ${s}`),!1}}static isPointInPolygon(i,e){let t=!1;for(let r=0,o=e.length-1;r<e.length;o=r++){let s=e[r].x,a=e[r].y,l=e[o].x,c=e[o].y;a>i.y!=c>i.y&&i.x<(l-s)*(i.y-a)/(c-a)+s&&(t=!t)}return t}static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),o=parseInt(e,10);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`Cannot convert ${i} and/or ${e} to int.`);break}case"float":{let r=parseFloat(i),o=parseFloat(e);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`couldn't convert ${i} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=i.split(" ").sort(),o=e.split(" ").sort();if(r.length===2&&o.length===2)return t==="pair"&&(r.sort(),o.sort()),r.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${i} 2: ${e}`);break}}return!1}};var ws=n=>{class i extends n{constructor(...r){super(...r);this.testContext=ys;this.sessionContext=vs;this._updateItemInTestContext=r=>{let o=r._context,s=o.identifier,a=o.variables,l=this.testContext.items.find(c=>c?.identifier===s);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${s} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(s,a);else{let c=[...r.variables];for(let p of l.variables){let h=c.find(m=>m.identifier===p.identifier);h?h.value=p.value:c.push(p)}r.variables=c}};this._initializeEventListeners()}updateItemVariables(r,o){let s=this.testContext.items.find(l=>l.identifier===r);s&&(s.variables=s.variables.map(l=>{let c=o.find(p=>p.identifier===l.identifier);return c?{...l,...c}:l}));let a=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=o)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",r=>{if(this.testContext=ys,this.sessionContext=vs,this.testContext&&this.testContext.items.length>0)return;this._testElement=r.detail;let o=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(s=>({href:s.href,identifier:s.identifier,category:s.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:o}}),this.addEventListener("qti-assessment-item-connected",r=>{let o=r.detail,s=o.closest("qti-assessment-item-ref")?.identifier;s&&(o.assessmentItemRefId=s),this._updateItemInTestContext(r.detail)}),this.addEventListener("qti-item-context-updated",r=>{this._updateItemVariablesInTestContext(r.detail.itemContext.identifier,r.detail.itemContext.variables,r.detail.itemContext.state)})}_updateItemVariablesInTestContext(r,o,s){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==r?a:{...a,variables:o.map(l=>{let c=a.variables.find(p=>p.identifier===l.identifier);return c?{...c,...l}:l}),...s!==void 0?{state:s?{...s}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return d([b({attribute:!1,type:Object}),ne({context:Ie})],i.prototype,"testContext",2),d([b({attribute:!1,type:Object}),ne({context:et})],i.prototype,"sessionContext",2),i},da=class extends ws(C){};var pa=n=>{class i extends n{constructor(...t){super(...t),this.addEventListener("qti-register-variable",r=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],r.detail.variable]},r.stopPropagation()}),this.addEventListener("qti-set-outcome-value",r=>{let{outcomeIdentifier:o,value:s}=r.detail;this.updateOutcomeVariable(o,s),r.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,r){let o=this.getOutcome(t);if(!o){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(s=>s.identifier!==t?s:{...s,value:o.cardinality==="single"?r:[...s.value,r]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(r=>r.identifier===t)||null}}return i};var Zi=class extends Zn(ea(pa(ws(C)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return x`<slot></slot>`}};Zi=d([k("qti-test")],Zi);var ua={fromAttribute(n){return n==="true"},toAttribute(n){return n?"true":"false"}},Fe=class extends C{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};d([b({type:String})],Fe.prototype,"category",2),d([b({type:String})],Fe.prototype,"identifier",2),d([b({type:Boolean,converter:ua})],Fe.prototype,"required",2),d([b({type:Boolean,converter:ua})],Fe.prototype,"fixed",2),d([b({type:String})],Fe.prototype,"href",2),d([b({type:Object,attribute:!1})],Fe.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Fe);var Cs={fromAttribute(n){return n==="true"},toAttribute(n){return n?"true":"false"}},Be=class extends C{get title(){return this.#e}set title(i){this.#e=i,this.removeAttribute("title"),this.setAttribute("data-title",i)}#e="";async connectedCallback(){this.#e=this.getAttribute("title")||"",super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return x`<slot name="qti-rubric-block"></slot><slot></slot>`}};d([b({type:String})],Be.prototype,"identifier",2),d([b({type:String})],Be.prototype,"required",2),d([b({type:Boolean,converter:Cs})],Be.prototype,"fixed",2),d([b({type:Boolean,converter:Cs})],Be.prototype,"visible",2),d([b({type:Boolean,converter:Cs,attribute:"keep-together"})],Be.prototype,"keepTogether",2),d([P({context:Ie,subscribe:!0})],Be.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",Be);var Dr,It=class extends C{constructor(){super(...arguments);_(this,Dr,"")}get title(){return I(this,Dr)}set title(e){B(this,Dr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};Dr=new WeakMap,d([b({type:String})],It.prototype,"identifier",2),d([b({type:String})],It.prototype,"title",1),d([P({context:Ie,subscribe:!0})],It.prototype,"_testContext",2),It=d([k("qti-assessment-test")],It);var $r,Ue=class extends C{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";_(this,$r,"")}get title(){return I(this,$r)}set title(e){B(this,$r,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};$r=new WeakMap,d([b({type:String})],Ue.prototype,"identifier",2),d([b({type:String})],Ue.prototype,"class",2),d([b({type:String,attribute:"navigation-mode"})],Ue.prototype,"navigationMode",2),d([b({type:String,attribute:"submission-mode"})],Ue.prototype,"submissionMode",2),Ue=d([k("qti-test-part")],Ue);customElements.get("qti-test-part")||customElements.define("qti-test-part",Ue);var Or,Yt,Vr,Kt,ge,de,ma,ha,Nr,Hr,Fr,Br,Ur,zr,fa,Es,ga,ce=class extends C{constructor(){super(...arguments);_(this,de);_(this,Or);_(this,Yt,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{I(this,ge).forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>I(this,ge).forEach(r=>r.readonly=t);this._context={variables:ta};_(this,Vr,{...this._context,variables:this._context.variables});_(this,Kt,[]);_(this,ge,[]);_(this,Nr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},B(this,Vr,this._context),e.stopPropagation()});_(this,Hr,e=>{e.stopImmediatePropagation();let t=e.detail;I(this,Kt).push(t),(Number(this._context.variables.find(o=>o.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});_(this,Fr,e=>{e.stopImmediatePropagation(),I(this,ge).push(e.detail.interactionElement)});_(this,Br,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:r}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(r)});_(this,Ur,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r),e.stopPropagation()});_(this,zr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:r,state:o}=e.detail;this.updateResponseVariable(t,r),o!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:o}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return I(this,Or)}set title(e){B(this,Or,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}set assessmentItemRefId(e){this._context={...this._context,identifier:e}}get assessmentItemRefId(){return this._context.identifier}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type,...e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context={...this._context,variables:this._context.variables.map(t=>{let r=e.find(o=>o.identifier===t.identifier);return r?{...t,...r,interpolationTable:t.interpolationTable}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let r=I(this,ge).find(o=>o.responseIdentifier===t.identifier);r&&(r.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&I(this,Kt).forEach(r=>r.checkShowFeedback(t.identifier))})}get state(){return this._context.state}set state(e){this._context={...this._context,state:e?{...e}:void 0}}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let o=I(this,ge).find(s=>s.getAttribute("response-identifier")===t.responseIdentifier);o&&(o.response=t.response)}}render(){return x`<slot></slot>`}connectedCallback(){D(this,de,ma).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),D(this,de,fa).call(this)})}disconnectedCallback(){D(this,de,ha).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of I(this,ge))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of I(this,ge))t.toggleCandidateCorrection(e);document.querySelectorAll("item-show-candidate-correction").forEach(t=>{t.shown=e})}processResponse(e=!0,t=!0){this.validate(t),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(s=>s.identifier==="numAttempts")?.value+1).toString()),this.adaptive==="false"&&D(this,de,ga).call(this);let r=this.querySelector("qti-response-processing"),o=!!(r&&typeof r.process=="function");return o&&r.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",D(this,de,Es).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),o}resetResponses(){this._context=I(this,Vr)}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}updateResponseVariable(e,t){this._context={...this._context,variables:this._context.variables.map(r=>r.identifier!==e?r:{...r,value:t})},this.showCandidateCorrection(!1),this.dispatchEvent(new CustomEvent("qti-interaction-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}})),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",D(this,de,Es).call(this))}setOutcomeVariable(e,t){this.updateOutcomeVariable(e,t),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateOutcomeVariable(e,t){let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,value:r.cardinality==="single"||Array.isArray(t)?t:[t]})},I(this,Kt).forEach(o=>o.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(o=>o.identifier===e)?.value}}))}validate(e=!0){let t=I(this,ge).every(r=>r.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of I(this,ge))e.reportValidity()}};Or=new WeakMap,Yt=new WeakMap,Vr=new WeakMap,Kt=new WeakMap,ge=new WeakMap,de=new WeakSet,ma=function(){this.addEventListener("qti-register-variable",I(this,Nr)),this.addEventListener("qti-register-feedback",I(this,Hr)),this.addEventListener("qti-register-interaction",I(this,Fr)),this.addEventListener("end-attempt",I(this,Br)),this.addEventListener("qti-set-outcome-value",I(this,Ur)),this.addEventListener("qti-interaction-response",I(this,zr))},ha=function(){this.removeEventListener("qti-register-variable",I(this,Nr)),this.removeEventListener("qti-register-feedback",I(this,Hr)),this.removeEventListener("qti-register-interaction",I(this,Fr)),this.removeEventListener("end-attempt",I(this,Br)),this.removeEventListener("qti-set-outcome-value",I(this,Ur)),this.removeEventListener("qti-interaction-response",I(this,zr))},Nr=new WeakMap,Hr=new WeakMap,Fr=new WeakMap,Br=new WeakMap,Ur=new WeakMap,zr=new WeakMap,fa=function(){B(this,Yt,this.querySelector("qti-template-processing")),I(this,Yt)&&I(this,Yt).process()},Es=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},ga=function(){this._context={...this._context,variables:this._context.variables.map(e=>{if(e.type!=="outcome")return e;let o=("defaultValue"in e?e.defaultValue:null)??null;return o==null&&(e.baseType==="integer"||e.baseType==="float")&&(o="0"),{...e,value:o}})}},d([b({type:String})],ce.prototype,"identifier",2),d([b({type:String})],ce.prototype,"adaptive",2),d([b({type:String})],ce.prototype,"timeDependent",2),d([b({type:String})],ce.prototype,"title",1),d([b({type:Boolean})],ce.prototype,"disabled",2),d([U("disabled",{waitUntilFirstUpdate:!0})],ce.prototype,"_handleDisabledChange",2),d([b({type:Boolean})],ce.prototype,"readonly",2),d([U("readonly",{waitUntilFirstUpdate:!0})],ce.prototype,"_handleReadonlyChange",2),d([ne({context:G})],ce.prototype,"_context",2),ce=d([k("qti-assessment-item")],ce);var Ss=class n extends Event{constructor(e,t){super(n.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},Zt=class extends C{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new Ss(this,e);this.dispatchEvent(t);let r=e?.querySelector(`[data-stimulus-idref="${this.identifier}"]`);!t.defaultPrevented&&r&&await this.updateStimulusRef(r)}async updateStimulusRef(e){let t=await Ae().load(this.href).then(r=>r.htmlDoc());if(t){let r=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...r)}}};d([b({type:String})],Zt.prototype,"identifier",2),d([b({type:String})],Zt.prototype,"href",2),Zt=d([k("qti-assessment-stimulus-ref")],Zt);var eo=class extends C{};eo=d([k("qti-companion-materials-info")],eo);var Wr,jr=class extends C{constructor(){super(...arguments);_(this,Wr)}render(){return x`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{B(this,Wr,new Function("context","fn","item",e?.textContent??""))}catch(t){console.error("custom-operator contains invalid javascript code",t)}}calculate(){let e={variable:r=>this._context?.variables.find(o=>o.identifier===r)?.value??"",correct:r=>this._context?.variables.find(o=>o.identifier===r)?.correctResponse??""},t={getVariable:r=>this._context?.variables.find(o=>o.identifier===r),updateOutcomeVariable:(r,o)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:r,value:o}}))},updateResponseVariable:(r,o)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:r,response:o}}))}};return I(this,Wr).call(this,this._context,e,t)}};Wr=new WeakMap,d([P({context:G,subscribe:!0}),R()],jr.prototype,"_context",2),jr=d([k("qti-custom-operator")],jr);var Gr=class extends le{render(){return x` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};Gr.styles=S`
10
10
  :host {
11
11
  display: block;
12
12
  }
@@ -16,7 +16,7 @@ Make sure to test your application with a production build as repeat registratio
16
16
  .off {
17
17
  display: none;
18
18
  }
19
- `,Gr=d([k("qti-feedback-block")],Gr);var Me=s=>s??N;var Xr=class extends le{constructor(){super(...arguments);this.render=()=>x` <slot part="feedback" class="${Me(this.showStatus)}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};Xr.styles=S`
19
+ `,Gr=d([k("qti-feedback-block")],Gr);var Me=n=>n??N;var Xr=class extends le{constructor(){super(...arguments);this.render=()=>x` <slot part="feedback" class="${Me(this.showStatus)}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};Xr.styles=S`
20
20
  .on {
21
21
  display: inline-block;
22
22
  }
@@ -30,7 +30,7 @@ Make sure to test your application with a production build as repeat registratio
30
30
  <button class="button close-button" @click="${this.closeFeedback}">Close</button>
31
31
  </div>
32
32
  </dialog>
33
- `}openFeedback(){let r=this.shadowRoot?.querySelector("dialog");r&&!r.open&&r.showModal()}closeFeedback(){let r=this.shadowRoot?.querySelector("dialog");r&&r.open&&(r.close(),this.showStatus="off")}connectedCallback(){super.connectedCallback(),this.showStatus==="on"&&this.openFeedback()}updated(r){r.has("showStatus")&&(this.showStatus==="on"?this.openFeedback():this.closeFeedback())}};kt.styles=S`
33
+ `}openFeedback(){let i=this.shadowRoot?.querySelector("dialog");i&&!i.open&&i.showModal()}closeFeedback(){let i=this.shadowRoot?.querySelector("dialog");i&&i.open&&(i.close(),this.showStatus="off")}connectedCallback(){super.connectedCallback(),this.showStatus==="on"&&this.openFeedback()}updated(i){i.has("showStatus")&&(this.showStatus==="on"?this.openFeedback():this.closeFeedback())}};kt.styles=S`
34
34
  .qti-dialog {
35
35
  background: var(--qti-bg);
36
36
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
@@ -77,11 +77,11 @@ Make sure to test your application with a production build as repeat registratio
77
77
  :host {
78
78
  display: block;
79
79
  }
80
- `,d([b({type:String})],Re.prototype,"id",2),d([b({type:String})],Re.prototype,"use",2),d([b({type:String})],Re.prototype,"view",2),d([b({type:String,attribute:"class"})],Re.prototype,"classNames",2),d([U("classNames",{waitUntilFirstUpdate:!0})],Re.prototype,"handleclassNamesChange",1),Re=d([k("qti-rubric-block")],Re);var pe,Jr,Ts,ro=class extends C{constructor(){super(...arguments);_(this,Jr);_(this,pe,null)}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(i=>i.text()).then(i=>{let o=D(this,Jr,Ts).call(this,i);B(this,pe,document.createElement("style")),I(this,pe).media="screen",I(this,pe).textContent=`@scope {${o}}`,this.parentElement?this.parentElement.appendChild(I(this,pe)):console.warn("No parent element to append the scoped stylesheet to.")}).catch(i=>{console.error("Failed to load stylesheet:",i)}),this.textContent!==null&&this.textContent.trim()!==""){let i=D(this,Jr,Ts).call(this,this.textContent);B(this,pe,document.createElement("style")),I(this,pe).media="screen",I(this,pe).textContent=`@scope {${i}}`,this.parentElement?this.parentElement.appendChild(I(this,pe)):console.warn("No parent element to append the scoped stylesheet to.")}}disconnectedCallback(){if(I(this,pe))try{I(this,pe).remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};pe=new WeakMap,Jr=new WeakSet,Ts=function(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()},ro=d([k("qti-stylesheet")],ro);var ot,va,ya,xa,ze=class extends Jt{constructor(){super(...arguments);_(this,ot)}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return x`${JSON.stringify(e,null,2)}`}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={baseType:this.baseType,identifier:this.identifier,correctResponse:I(this,ot,va),cardinality:this.cardinality||"single",mapping:I(this,ot,ya),defaultValue:e,areaMapping:I(this,ot,xa),value:null,type:"response",candidateResponse:null};t.value=e,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};ot=new WeakSet,va=function(){let e,t=this.querySelector("qti-correct-response");if(t){let i=t.querySelectorAll("qti-value");if(this.cardinality==="single"&&i.length>0)e=i[0].textContent.trim(),i[0].remove();else if(this.cardinality!=="single"){e=[];for(let o=0;o<i.length;o++)e.push(i[o].textContent.trim()),i[o].remove()}}return e},ya=function(){let e=this.querySelector("qti-mapping"),t=parseFloat(e?.getAttribute("lower-bound")),i=parseFloat(e?.getAttribute("upper-bound"));return{defaultValue:Number(e?.getAttribute("default-value"))||0,lowerBound:isNaN(t)?null:t,upperBound:isNaN(i)?null:i,mapEntries:Array.from(e?.querySelectorAll("qti-map-entry")||[]).map(n=>({mapKey:n.getAttribute("map-key")||"",mappedValue:Number(n.getAttribute("mapped-value"))||0,caseSensitive:n.hasAttribute("case-sensitive")?n.getAttribute("case-sensitive")!=="false":!1}))}},xa=function(){let e=this.querySelector("qti-area-mapping"),t=Number(e?.getAttribute("default-value"))||0,i=parseFloat(e?.getAttribute("lower-bound")),o=parseFloat(e?.getAttribute("upper-bound")),n=Array.from(e?.querySelectorAll("qti-area-map-entry")||[]).map(a=>({shape:a.getAttribute("shape")||"default",coords:a.getAttribute("coords")||"",mappedValue:Number(a.getAttribute("mapped-value"))||0,defaultValue:Number(a.getAttribute("default-value"))||0}));return{defaultValue:t,lowerBound:isNaN(i)?null:i,upperBound:isNaN(o)?null:o,areaMapEntries:n}},ze.styles=[S`
80
+ `,d([b({type:String})],Re.prototype,"id",2),d([b({type:String})],Re.prototype,"use",2),d([b({type:String})],Re.prototype,"view",2),d([b({type:String,attribute:"class"})],Re.prototype,"classNames",2),d([U("classNames",{waitUntilFirstUpdate:!0})],Re.prototype,"handleclassNamesChange",1),Re=d([k("qti-rubric-block")],Re);var pe,Jr,Ts,ro=class extends C{constructor(){super(...arguments);_(this,Jr);_(this,pe,null)}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(r=>r.text()).then(r=>{let o=D(this,Jr,Ts).call(this,r);B(this,pe,document.createElement("style")),I(this,pe).media="screen",I(this,pe).textContent=`@scope {${o}}`,this.parentElement?this.parentElement.appendChild(I(this,pe)):console.warn("No parent element to append the scoped stylesheet to.")}).catch(r=>{console.error("Failed to load stylesheet:",r)}),this.textContent!==null&&this.textContent.trim()!==""){let r=D(this,Jr,Ts).call(this,this.textContent);B(this,pe,document.createElement("style")),I(this,pe).media="screen",I(this,pe).textContent=`@scope {${r}}`,this.parentElement?this.parentElement.appendChild(I(this,pe)):console.warn("No parent element to append the scoped stylesheet to.")}}disconnectedCallback(){if(I(this,pe))try{I(this,pe).remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};pe=new WeakMap,Jr=new WeakSet,Ts=function(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()},ro=d([k("qti-stylesheet")],ro);var ot,va,ya,xa,ze=class extends Jt{constructor(){super(...arguments);_(this,ot)}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return x`${JSON.stringify(e,null,2)}`}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={baseType:this.baseType,identifier:this.identifier,correctResponse:I(this,ot,va),cardinality:this.cardinality||"single",mapping:I(this,ot,ya),defaultValue:e,areaMapping:I(this,ot,xa),value:null,type:"response",candidateResponse:null};t.value=e,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};ot=new WeakSet,va=function(){let e,t=this.querySelector("qti-correct-response");if(t){let r=t.querySelectorAll("qti-value");if(this.cardinality==="single"&&r.length>0)e=r[0].textContent.trim(),r[0].remove();else if(this.cardinality!=="single"){e=[];for(let o=0;o<r.length;o++)e.push(r[o].textContent.trim()),r[o].remove()}}return e},ya=function(){let e=this.querySelector("qti-mapping"),t=parseFloat(e?.getAttribute("lower-bound")),r=parseFloat(e?.getAttribute("upper-bound"));return{defaultValue:Number(e?.getAttribute("default-value"))||0,lowerBound:isNaN(t)?null:t,upperBound:isNaN(r)?null:r,mapEntries:Array.from(e?.querySelectorAll("qti-map-entry")||[]).map(s=>({mapKey:s.getAttribute("map-key")||"",mappedValue:Number(s.getAttribute("mapped-value"))||0,caseSensitive:s.hasAttribute("case-sensitive")?s.getAttribute("case-sensitive")!=="false":!1}))}},xa=function(){let e=this.querySelector("qti-area-mapping"),t=Number(e?.getAttribute("default-value"))||0,r=parseFloat(e?.getAttribute("lower-bound")),o=parseFloat(e?.getAttribute("upper-bound")),s=Array.from(e?.querySelectorAll("qti-area-map-entry")||[]).map(a=>({shape:a.getAttribute("shape")||"default",coords:a.getAttribute("coords")||"",mappedValue:Number(a.getAttribute("mapped-value"))||0,defaultValue:Number(a.getAttribute("default-value"))||0}));return{defaultValue:t,lowerBound:isNaN(r)?null:r,upperBound:isNaN(o)?null:o,areaMapEntries:s}},ze.styles=[S`
81
81
  :host {
82
82
  display: none;
83
83
  }
84
- `],d([b({type:String,attribute:"base-type"})],ze.prototype,"baseType",2),d([b({type:String})],ze.prototype,"identifier",2),d([b({type:String})],ze.prototype,"cardinality",2),d([P({context:G,subscribe:!0}),R()],ze.prototype,"itemContext",2),ze=d([k("qti-response-declaration")],ze);var _e=class extends Jt{constructor(){super(...arguments);this.externalScored=null}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return x`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let i of e.querySelectorAll("qti-interpolation-table-entry")){!i.getAttribute("source-value")&&i.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let o=parseFloat(i.getAttribute("source-value")),n=parseFloat(i.getAttribute("target-value"));(isNaN(o)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(o,n)}return t}return null}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:e,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};t.value=e,(t.value===null||t.value==null)&&(t.baseType==="integer"||t.baseType==="float")&&(t.value="0"),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};_e.styles=[S`
84
+ `],d([b({type:String,attribute:"base-type"})],ze.prototype,"baseType",2),d([b({type:String})],ze.prototype,"identifier",2),d([b({type:String})],ze.prototype,"cardinality",2),d([P({context:G,subscribe:!0}),R()],ze.prototype,"itemContext",2),ze=d([k("qti-response-declaration")],ze);var _e=class extends Jt{constructor(){super(...arguments);this.externalScored=null}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return x`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let r of e.querySelectorAll("qti-interpolation-table-entry")){!r.getAttribute("source-value")&&r.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let o=parseFloat(r.getAttribute("source-value")),s=parseFloat(r.getAttribute("target-value"));(isNaN(o)||isNaN(s))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(o,s)}return t}return null}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:e,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};t.value=e,(t.value===null||t.value==null)&&(t.baseType==="integer"||t.baseType==="float")&&(t.value="0"),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};_e.styles=[S`
85
85
  :host {
86
86
  display: none;
87
87
  }
@@ -134,7 +134,7 @@ Make sure to test your application with a production build as repeat registratio
134
134
  </qti-set-outcome-value>
135
135
  </qti-response-else>
136
136
  </qti-response-condition>
137
- </qti-response-processing>`;var er,io,Yr=class extends C{constructor(){super(...arguments);_(this,er)}render(){return x`<slot></slot>`}process(){if(!this.closest("qti-assessment-item"))return;let t=[...this.children];for(let i of t)i.process()}firstUpdated(e){if(this.getAttribute("template")){let t=this.getAttribute("template").split("/"),i=t[t.length-1].replace(".xml","");switch(this.innerHTML="",i){case"map_response":{this.appendChild(D(this,er,io).call(this,wa).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(D(this,er,io).call(this,Ca).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(D(this,er,io).call(this,qa).firstElementChild.firstElementChild);break}}}};er=new WeakSet,io=function(e){return document.createRange().createContextualFragment(e)},Yr.styles=[S`
137
+ </qti-response-processing>`;var er,io,Yr=class extends C{constructor(){super(...arguments);_(this,er)}render(){return x`<slot></slot>`}process(){if(!this.closest("qti-assessment-item"))return;let t=[...this.children];for(let r of t)r.process()}firstUpdated(e){if(this.getAttribute("template")){let t=this.getAttribute("template").split("/"),r=t[t.length-1].replace(".xml","");switch(this.innerHTML="",r){case"map_response":{this.appendChild(D(this,er,io).call(this,wa).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(D(this,er,io).call(this,Ca).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(D(this,er,io).call(this,qa).firstElementChild.firstElementChild);break}}}};er=new WeakSet,io=function(e){return document.createRange().createContextualFragment(e)},Yr.styles=[S`
138
138
  :host {
139
139
  display: none;
140
140
  }
@@ -150,7 +150,7 @@ Make sure to test your application with a production build as repeat registratio
150
150
  :host {
151
151
  color: gray;
152
152
  }
153
- `,Kr=d([k("qti-test-feedback")],Kr);var ue,Q,Aa,Ia,ka,Ma,Ra,_a,La,Pa,be=class extends C{constructor(){super();_(this,Q);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;_(this,ue);this.addEventListener("qti-assessment-test-connected",D(this,Q,_a).bind(this)),this.addEventListener("qti-assessment-item-connected",D(this,Q,Pa).bind(this)),this.addEventListener("qti-interaction-changed",D(this,Q,Ra).bind(this)),this.addEventListener("test-end-attempt",D(this,Q,Aa).bind(this)),this.addEventListener("test-show-correct-response",D(this,Q,Ia).bind(this)),this.addEventListener("test-show-candidate-correction",D(this,Q,ka).bind(this)),this.addEventListener("test-update-outcome-variable",D(this,Q,Ma).bind(this))}render(){return x`<slot></slot>`}willUpdate(e){if(!this.computedContext)return;let t=1;this.computedContext={...this.computedContext,view:this._sessionContext?.view,testParts:this.computedContext.testParts.map(i=>({...i,active:this._sessionContext?.navPartId===i.identifier||!1,sections:i.sections.map(o=>({...o,active:this._sessionContext?.navSectionId===o.identifier||!1,completed:o.items.every(n=>this._testContext.items.find(a=>a.identifier===n.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:o.items.map(n=>{let a=this._testContext?.items.find(g=>g.identifier===n.identifier),l={...n,...a,...this.initContext?.find(g=>g.identifier===n.identifier)},c=l.variables?.find(g=>g.identifier=="SCORE")?.value,p=c==null?null:parseFloat(c?.toString()),h=l.variables?.find(g=>g.identifier==="completionStatus")?.value,m=l.variables?.find(g=>g.identifier==="RESPONSE")?.value||"",y=l.variables?.find(g=>g.identifier==="numAttempts")?.value||0,v=this._sessionContext?.navItemRefId===l.identifier||!1,w=n.categories.includes(this.configContext?.infoItemCategory)?null:t++,f=n.variables?.find(g=>g.identifier=="MAXSCORE")?.value,u=f==null?null:parseFloat(f?.toString());return{...l,completionStatus:h,numAttempts:y,score:p,response:m,index:w,active:v,maxScore:u}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};ue=new WeakMap,Q=new WeakSet,Aa=function(e){let i=I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,o=this.configContext?.reportValidityAfterScoring===!0;i.processResponse(!0,o)},Ia=function(e){let i=I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;i&&i.showCorrectResponse(e.detail)},ka=function(e){I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},Ma=function(e){I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},Ra=function(e){if(this.autoScoreItems){let t=e.composedPath()[0].closest("qti-assessment-item"),i=t.variables.find(o=>o.identifier==="SCORE");if(i&&i.externalScored===null&&t.adaptive==="false"){let o=this.configContext?.reportValidityAfterScoring===!0;t.processResponse(!0,o)}}},_a=function(e){if(B(this,ue,e.detail),!this.qtiContext.QTI_CONTEXT?.testIdentifier){let o=this.qtiContext.QTI_CONTEXT||{testIdentifier:"",candidateIdentifier:"not set",environmentIdentifier:"default"};this.qtiContext={QTI_CONTEXT:{...o,testIdentifier:I(this,ue).identifier,environmentIdentifier:o.environmentIdentifier||"default"}}}I(this,ue).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(o=>{let n=D(this,Q,La).call(this,o);Object.keys(n).length>0&&(this.qtiContext={QTI_CONTEXT:{...n,...this.qtiContext.QTI_CONTEXT}})});let i=Array.from(I(this,ue)?.querySelectorAll("qti-test-part")||[]);this.computedContext={identifier:I(this,ue).identifier,title:I(this,ue).title,view:this._sessionContext?.view,testParts:i.map(o=>{let n=[...o.querySelectorAll("qti-assessment-section")];return{active:!1,identifier:o.identifier,navigationMode:o.navigationMode,submissionMode:o.submissionMode,sections:n.map(a=>{let l=[...a.querySelectorAll("qti-assessment-item-ref")];return{active:!1,identifier:a.identifier,title:a.title,items:l.map(c=>({...this.initContext?.find(p=>p.identifier===c.identifier),active:!1,identifier:c.identifier,categories:c.category?c.category?.split(" "):[],href:c.href,variables:[]}))}})}})}},La=function(e){let t={},i=e.querySelector("qti-default-value");return i&&i.querySelectorAll("qti-value[field-identifier]").forEach(n=>{let a=n.getAttribute("field-identifier"),l=n.getAttribute("base-type")||"string",c=n.textContent?.trim()||"";if(a){let p=c;switch(l){case"integer":p=parseInt(c,10);break;case"float":case"duration":p=parseFloat(c);break;case"boolean":p=c.toLowerCase()==="true";break;default:p=c;break}t[a]=p}}),t},Pa=function(e){let t=e.detail;this.computedContext={...this.computedContext,testParts:this.computedContext.testParts.map(i=>({...i,sections:i.sections.map(o=>({...o,items:o.items.map(n=>{if(n.identifier!==t.parentElement.getAttribute("identifier"))return n;let l=t.querySelector("qti-outcome-declaration[identifier='SCORE']")?.getAttribute("externalScored"),c=t.querySelectorAll("qti-response-declaration"),p=Array.from(c).some(v=>v.querySelector("qti-correct-response")),h=Array.from(c).some(v=>{let w=v.querySelector("qti-mapping"),f=v.querySelector("qti-area-mapping");return w?.querySelector("qti-map-entry")||f?.querySelector("qti-area-map-entry")}),m=p||h,y=!!t.querySelector("qti-response-processing");return{...n,assessmentItemIdentifier:t.getAttribute("identifier"),label:t.getAttribute("label"),title:t.title,externalScored:l,adaptive:t.adaptive=="true"||!1,timeDependent:t.timeDependent=="true"||!1,variables:t.variables,hasCorrectResponse:m,hasResponseProcessing:y}})}))}))}},d([b({type:String})],be.prototype,"identifier",2),d([R()],be.prototype,"initContext",2),d([R(),ne({context:Xt})],be.prototype,"qtiContext",2),d([R(),ne({context:he})],be.prototype,"configContext",2),d([R(),P({context:Ie,subscribe:!0})],be.prototype,"_testContext",2),d([R(),P({context:et,subscribe:!0})],be.prototype,"_sessionContext",2),d([R(),ne({context:W})],be.prototype,"computedContext",2),d([b({type:Boolean,attribute:"auto-score-items"})],be.prototype,"autoScoreItems",2),be=d([k("test-navigation")],be);var Da=S`
153
+ `,Kr=d([k("qti-test-feedback")],Kr);var ue,Q,Aa,Ia,ka,Ma,Ra,_a,La,Pa,be=class extends C{constructor(){super();_(this,Q);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;_(this,ue);this.addEventListener("qti-assessment-test-connected",D(this,Q,_a).bind(this)),this.addEventListener("qti-assessment-item-connected",D(this,Q,Pa).bind(this)),this.addEventListener("qti-interaction-changed",D(this,Q,Ra).bind(this)),this.addEventListener("test-end-attempt",D(this,Q,Aa).bind(this)),this.addEventListener("test-show-correct-response",D(this,Q,Ia).bind(this)),this.addEventListener("test-show-candidate-correction",D(this,Q,ka).bind(this)),this.addEventListener("test-update-outcome-variable",D(this,Q,Ma).bind(this))}render(){return x`<slot></slot>`}willUpdate(e){if(!this.computedContext)return;let t=1;this.computedContext={...this.computedContext,view:this._sessionContext?.view,testParts:this.computedContext.testParts.map(r=>({...r,active:this._sessionContext?.navPartId===r.identifier||!1,sections:r.sections.map(o=>({...o,active:this._sessionContext?.navSectionId===o.identifier||!1,completed:o.items.every(s=>this._testContext.items.find(a=>a.identifier===s.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:o.items.map(s=>{let a=this._testContext?.items.find(g=>g.identifier===s.identifier),l={...s,...a,...this.initContext?.find(g=>g.identifier===s.identifier)},c=l.variables?.find(g=>g.identifier=="SCORE")?.value,p=c==null?null:parseFloat(c?.toString()),h=l.variables?.find(g=>g.identifier==="completionStatus")?.value,m=l.variables?.find(g=>g.identifier==="RESPONSE")?.value||"",y=l.variables?.find(g=>g.identifier==="numAttempts")?.value||0,v=this._sessionContext?.navItemRefId===l.identifier||!1,w=s.categories.includes(this.configContext?.infoItemCategory)?null:t++,f=s.variables?.find(g=>g.identifier=="MAXSCORE")?.value,u=f==null?null:parseFloat(f?.toString());return{...l,completionStatus:h,numAttempts:y,score:p,response:m,index:w,active:v,maxScore:u}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};ue=new WeakMap,Q=new WeakSet,Aa=function(e){let r=I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,o=this.configContext?.reportValidityAfterScoring===!0;r.processResponse(!0,o)},Ia=function(e){let r=I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;r&&r.showCorrectResponse(e.detail)},ka=function(e){I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},Ma=function(e){I(this,ue).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},Ra=function(e){if(this.autoScoreItems){let t=e.composedPath()[0].closest("qti-assessment-item"),r=t.variables.find(o=>o.identifier==="SCORE");if(r&&r.externalScored===null&&t.adaptive==="false"){let o=this.configContext?.reportValidityAfterScoring===!0;t.processResponse(!0,o)}}},_a=function(e){if(B(this,ue,e.detail),!this.qtiContext.QTI_CONTEXT?.testIdentifier){let o=this.qtiContext.QTI_CONTEXT||{testIdentifier:"",candidateIdentifier:"not set",environmentIdentifier:"default"};this.qtiContext={QTI_CONTEXT:{...o,testIdentifier:I(this,ue).identifier,environmentIdentifier:o.environmentIdentifier||"default"}}}I(this,ue).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(o=>{let s=D(this,Q,La).call(this,o);Object.keys(s).length>0&&(this.qtiContext={QTI_CONTEXT:{...s,...this.qtiContext.QTI_CONTEXT}})});let r=Array.from(I(this,ue)?.querySelectorAll("qti-test-part")||[]);this.computedContext={identifier:I(this,ue).identifier,title:I(this,ue).title,view:this._sessionContext?.view,testParts:r.map(o=>{let s=[...o.querySelectorAll("qti-assessment-section")];return{active:!1,identifier:o.identifier,navigationMode:o.navigationMode,submissionMode:o.submissionMode,sections:s.map(a=>{let l=[...a.querySelectorAll("qti-assessment-item-ref")];return{active:!1,identifier:a.identifier,title:a.title,items:l.map(c=>({...this.initContext?.find(p=>p.identifier===c.identifier),active:!1,identifier:c.identifier,categories:c.category?c.category?.split(" "):[],href:c.href,variables:[]}))}})}})}},La=function(e){let t={},r=e.querySelector("qti-default-value");return r&&r.querySelectorAll("qti-value[field-identifier]").forEach(s=>{let a=s.getAttribute("field-identifier"),l=s.getAttribute("base-type")||"string",c=s.textContent?.trim()||"";if(a){let p=c;switch(l){case"integer":p=parseInt(c,10);break;case"float":case"duration":p=parseFloat(c);break;case"boolean":p=c.toLowerCase()==="true";break;default:p=c;break}t[a]=p}}),t},Pa=function(e){let t=e.detail;this.computedContext={...this.computedContext,testParts:this.computedContext.testParts.map(r=>({...r,sections:r.sections.map(o=>({...o,items:o.items.map(s=>{if(s.identifier!==t.parentElement.getAttribute("identifier"))return s;let l=t.querySelector("qti-outcome-declaration[identifier='SCORE']")?.getAttribute("externalScored"),c=t.querySelectorAll("qti-response-declaration"),p=Array.from(c).some(v=>v.querySelector("qti-correct-response")),h=Array.from(c).some(v=>{let w=v.querySelector("qti-mapping"),f=v.querySelector("qti-area-mapping");return w?.querySelector("qti-map-entry")||f?.querySelector("qti-area-map-entry")}),m=p||h,y=!!t.querySelector("qti-response-processing");return{...s,assessmentItemIdentifier:t.getAttribute("identifier"),label:t.getAttribute("label"),title:t.title,externalScored:l,adaptive:t.adaptive=="true"||!1,timeDependent:t.timeDependent=="true"||!1,variables:t.variables,hasCorrectResponse:m,hasResponseProcessing:y}})}))}))}},d([b({type:String})],be.prototype,"identifier",2),d([R()],be.prototype,"initContext",2),d([R(),ne({context:Xt})],be.prototype,"qtiContext",2),d([R(),ne({context:he})],be.prototype,"configContext",2),d([R(),P({context:Ie,subscribe:!0})],be.prototype,"_testContext",2),d([R(),P({context:et,subscribe:!0})],be.prototype,"_sessionContext",2),d([R(),ne({context:W})],be.prototype,"computedContext",2),d([b({type:Boolean,attribute:"auto-score-items"})],be.prototype,"autoScoreItems",2),be=d([k("test-navigation")],be);var Da=S`
154
154
  display: inline-flex;
155
155
  align-items: center;
156
156
  cursor: pointer;
@@ -166,14 +166,14 @@ Make sure to test your application with a production build as repeat registratio
166
166
  `,eb=S`
167
167
  ${Da};
168
168
  border: 1px solid gray;
169
- `;var tr,at=class extends C{constructor(){super();this._internalDisabled=!0;_(this,tr);B(this,tr,this.attachInternals()),I(this,tr).role="button",I(this,tr).ariaLabel="Next item",this.addEventListener("click",e=>{e.preventDefault(),this._internalDisabled||this._requestItem(this.sectionItems[this.itemIndex+1].identifier)})}_handleTestElementChange(e,t){t&&(this._internalDisabled=!1)}connectedCallback(){super.connectedCallback(),this.checkDisabled()}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext?.testParts.find(i=>i.active);t&&(this.sectionItems=t.sections.flatMap(i=>i.items),this.itemIndex=this.sectionItems.findIndex(i=>i.active),this.checkDisabled())}checkDisabled(){this._internalDisabled=!this.computedContext||this.itemIndex<0||this.itemIndex>=this.sectionItems?.length-1}_requestItem(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"item",id:e}}))}render(){return x`<slot></slot>`}};tr=new WeakMap,at.styles=S`
169
+ `;var tr,at=class extends C{constructor(){super();this._internalDisabled=!0;_(this,tr);B(this,tr,this.attachInternals()),I(this,tr).role="button",I(this,tr).ariaLabel="Next item",this.addEventListener("click",e=>{e.preventDefault(),this._internalDisabled||this._requestItem(this.sectionItems[this.itemIndex+1].identifier)})}_handleTestElementChange(e,t){t&&(this._internalDisabled=!1)}connectedCallback(){super.connectedCallback(),this.checkDisabled()}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext?.testParts.find(r=>r.active);t&&(this.sectionItems=t.sections.flatMap(r=>r.items),this.itemIndex=this.sectionItems.findIndex(r=>r.active),this.checkDisabled())}checkDisabled(){this._internalDisabled=!this.computedContext||this.itemIndex<0||this.itemIndex>=this.sectionItems?.length-1}_requestItem(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"item",id:e}}))}render(){return x`<slot></slot>`}};tr=new WeakMap,at.styles=S`
170
170
  :host {
171
171
  ${te};
172
172
  }
173
173
  :host([disabled]) {
174
174
  ${re};
175
175
  }
176
- `,d([b({type:Boolean,reflect:!0,attribute:"disabled"})],at.prototype,"_internalDisabled",2),d([P({context:W,subscribe:!0})],at.prototype,"computedContext",2),d([U("computedContext")],at.prototype,"_handleTestElementChange",1),at=d([k("test-next")],at);var lt=class extends C{constructor(){super();this._internalDisabled=!0;this.addEventListener("click",e=>{e.preventDefault(),this._internalDisabled||this._requestItem(this.sectionItems[this.itemIndex-1].identifier)})}_handleTestElementChange(e,t){t&&(this._internalDisabled=!1)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext?.testParts.find(i=>i.active);t&&(this.sectionItems=t.sections.flatMap(i=>i.items),this.itemIndex=this.sectionItems.findIndex(i=>i.active),this.checkDisabled())}checkDisabled(){this._internalDisabled=!this.computedContext||this.itemIndex===0||this.itemIndex===-1}_requestItem(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"item",id:e}}))}render(){return x`<slot></slot>`}};lt.styles=S`
176
+ `,d([b({type:Boolean,reflect:!0,attribute:"disabled"})],at.prototype,"_internalDisabled",2),d([P({context:W,subscribe:!0})],at.prototype,"computedContext",2),d([U("computedContext")],at.prototype,"_handleTestElementChange",1),at=d([k("test-next")],at);var lt=class extends C{constructor(){super();this._internalDisabled=!0;this.addEventListener("click",e=>{e.preventDefault(),this._internalDisabled||this._requestItem(this.sectionItems[this.itemIndex-1].identifier)})}_handleTestElementChange(e,t){t&&(this._internalDisabled=!1)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext?.testParts.find(r=>r.active);t&&(this.sectionItems=t.sections.flatMap(r=>r.items),this.itemIndex=this.sectionItems.findIndex(r=>r.active),this.checkDisabled())}checkDisabled(){this._internalDisabled=!this.computedContext||this.itemIndex===0||this.itemIndex===-1}_requestItem(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"item",id:e}}))}render(){return x`<slot></slot>`}};lt.styles=S`
177
177
  :host {
178
178
  ${te};
179
179
  }
@@ -203,15 +203,15 @@ Make sure to test your application with a production build as repeat registratio
203
203
  :host([disabled]) {
204
204
  ${re};
205
205
  }
206
- `,ei=d([k("test-end-attempt")],ei);var ti,ir,$a,Oa,ye=class extends C{constructor(){super(...arguments);_(this,ir);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";_(this,ti)}willUpdate(e){let t=this.computedContext?.testParts.flatMap(i=>i.sections.flatMap(o=>o.items)).find(i=>i.active);if(I(this,ti)!==t&&(this.shown=!1,B(this,ti,t)),t){let i=!!t?.variables?.some(n=>n.correctResponse),o=!!t?.variables?.some(n=>n.mapping?.mapEntries?.length>0||n.areaMapping?.areaMapEntries?.length>0);this.disabled=!i&&!o}else this.disabled=!0}render(){return x` <div @click="${D(this,ir,$a)}">${D(this,ir,Oa).call(this)}</div> `}};ti=new WeakMap,ir=new WeakSet,$a=function(){this.disabled||(this.shown=!this.shown,this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:this.shown,bubbles:!0})))},Oa=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},ye.styles=S`
206
+ `,ei=d([k("test-end-attempt")],ei);var ti,ir,$a,Oa,ye=class extends C{constructor(){super(...arguments);_(this,ir);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";_(this,ti)}willUpdate(e){let t=this.computedContext?.testParts.flatMap(r=>r.sections.flatMap(o=>o.items)).find(r=>r.active);if(I(this,ti)!==t&&(this.shown=!1,B(this,ti,t)),t){let r=!!t?.variables?.some(s=>s.correctResponse),o=!!t?.variables?.some(s=>s.mapping?.mapEntries?.length>0||s.areaMapping?.areaMapEntries?.length>0);this.disabled=!r&&!o}else this.disabled=!0}render(){return x` <div @click="${D(this,ir,$a)}">${D(this,ir,Oa).call(this)}</div> `}};ti=new WeakMap,ir=new WeakSet,$a=function(){this.disabled||(this.shown=!this.shown,this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:this.shown,bubbles:!0})))},Oa=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},ye.styles=S`
207
207
  :host {
208
208
  ${te};
209
209
  }
210
210
  :host([disabled]) {
211
211
  ${re};
212
212
  }
213
- `,d([P({context:W,subscribe:!0})],ye.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],ye.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],ye.prototype,"disabled",2),d([b({type:String})],ye.prototype,"showCorrectText",2),d([b({type:String})],ye.prototype,"hideCorrectText",2),d([b({type:String})],ye.prototype,"noCorrectResponseText",2),ye=d([k("test-show-correct-response")],ye);var oo=["this"],Va=["+","-","!"],Na=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],Is={"!":0,":":0,",":0,")":0,"]":0,"}":0,"|>":1,"?":2,"??":3,"||":4,"&&":5,"|":6,"^":7,"&":8,"!=":9,"==":9,"!==":9,"===":9,">=":10,">":10,"<=":10,"<":10,"+":11,"-":11,"%":12,"/":12,"*":12,"(":13,"[":13,".":13,"{":13},so=13;var Mc=["==","!=","<=",">=","||","&&","??","|>"],Rc=["===","!=="],O;(function(s){s[s.STRING=1]="STRING",s[s.IDENTIFIER=2]="IDENTIFIER",s[s.DOT=3]="DOT",s[s.COMMA=4]="COMMA",s[s.COLON=5]="COLON",s[s.INTEGER=6]="INTEGER",s[s.DECIMAL=7]="DECIMAL",s[s.OPERATOR=8]="OPERATOR",s[s.GROUPER=9]="GROUPER",s[s.KEYWORD=10]="KEYWORD",s[s.ARROW=11]="ARROW"})(O||(O={}));var Pe=(s,r,e=0)=>({kind:s,value:r,precedence:e}),_c=s=>s===9||s===10||s===13||s===32,Ha=s=>s===95||s===36||(s&=-33,65<=s&&s<=90),Lc=s=>Ha(s)||ri(s),Pc=s=>oo.indexOf(s)!==-1,Dc=s=>s===34||s===39,ri=s=>48<=s&&s<=57,$c=s=>s===43||s===45||s===42||s===47||s===33||s===38||s===37||s===60||s===61||s===62||s===63||s===94||s===124,Oc=s=>s===40||s===41||s===91||s===93||s===123||s===125,Vc=s=>s.replace(/\\(.)/g,(r,e)=>{switch(e){case"n":return`
214
- `;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),no=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#o()}nextToken(){for(;_c(this.#i);)this.#o(!0);if(Dc(this.#i))return this.#a();if(Ha(this.#i))return this.#c();if(ri(this.#i))return this.#d();if(this.#i===46)return this.#l();if(this.#i===44)return this.#u();if(this.#i===58)return this.#h();if($c(this.#i))return this.#b();if(Oc(this.#i))return this.#f();if(this.#o(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#o(r){this.#t++,this.#t<this.#e.length?(this.#i=this.#e.charCodeAt(this.#t),r===!0&&(this.#r=this.#t)):this.#i=void 0}#s(r=0){let e=this.#e.substring(this.#r,this.#t+r);return r===0&&this.#n(),e}#n(){this.#r=this.#t}#a(){let r="unterminated string",e=this.#i;for(this.#o(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(r);if(this.#i===92&&(this.#o(),this.#i===void 0))throw new Error(r);this.#o()}let t=Pe(O.STRING,Vc(this.#s()));return this.#o(),t}#c(){do this.#o();while(Lc(this.#i));let r=this.#s(),e=Pc(r)?O.KEYWORD:O.IDENTIFIER;return Pe(e,r)}#d(){do this.#o();while(ri(this.#i));return this.#i===46?this.#l():Pe(O.INTEGER,this.#s())}#l(){return this.#o(),ri(this.#i)?this.#g():(this.#n(),Pe(O.DOT,".",so))}#u(){return this.#o(!0),Pe(O.COMMA,",")}#h(){return this.#o(!0),Pe(O.COLON,":")}#g(){do this.#o();while(ri(this.#i));return Pe(O.DECIMAL,this.#s())}#b(){this.#o();let r=this.#s(2);if(Rc.indexOf(r)!==-1)this.#o(),this.#o();else{if(r=this.#s(1),r==="=>")return this.#o(),Pe(O.ARROW,r);Mc.indexOf(r)!==-1&&this.#o()}return r=this.#s(),Pe(O.OPERATOR,r,Is[r])}#f(){let r=String.fromCharCode(this.#i),e=Pe(O.GROUPER,r,Is[r]);return this.#o(!0),e}};var ks=(s,r)=>new ii(s,r).parse(),ii=class{#e;#t;#r;#i;#o;constructor(r,e){this.#t=new no(r),this.#r=e}parse(){return this.#s(),this.#n()}#s(r,e){if(!this._matches(r,e))throw new Error(`Expected kind ${r} (${e}), was ${this.#i?.kind} (${this.#i?.value})`);let t=this.#t.nextToken();this.#i=t,this.#e=t?.kind,this.#o=t?.value}_matches(r,e){return!(r&&this.#e!==r||e&&this.#o!==e)}#n(){if(!this.#i)return this.#r.empty();let r=this.#l();return r===void 0?void 0:this.#a(r,0)}#a(r,e){if(r===void 0)throw new Error("Expected left to be defined.");for(;this.#i;)if(this._matches(O.GROUPER,"(")){let t=this.#p();r=this.#r.invoke(r,void 0,t)}else if(this._matches(O.GROUPER,"[")){let t=this.#v();r=this.#r.index(r,t)}else if(this._matches(O.DOT)){this.#s();let t=this.#l();r=this.#c(r,t)}else{if(this._matches(O.KEYWORD))break;if(this._matches(O.OPERATOR)&&this.#i.precedence>=e)r=this.#o==="?"?this.#u(r):this.#d(r,this.#i);else break}return r}#c(r,e){if(e===void 0)throw new Error("expected identifier");if(e.type==="ID")return this.#r.getter(r,e.value);if(e.type==="Invoke"&&e.receiver.type==="ID"){let t=e.receiver;return this.#r.invoke(r,t.value,e.arguments)}else throw new Error(`expected identifier: ${e}`)}#d(r,e){if(Na.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#s();let t=this.#l();for(;(this.#e===O.OPERATOR||this.#e===O.DOT||this.#e===O.GROUPER)&&this.#i.precedence>e.precedence;)t=this.#a(t,this.#i.precedence);return this.#r.binary(r,e.value,t)}#l(){if(this._matches(O.OPERATOR)){let r=this.#o;if(this.#s(),r==="+"||r==="-"){if(this._matches(O.INTEGER))return this.#m(r);if(this._matches(O.DECIMAL))return this.#w(r)}if(Va.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#h(),so);return this.#r.unary(r,e)}return this.#h()}#u(r){this.#s(O.OPERATOR,"?");let e=this.#n();this.#s(O.COLON);let t=this.#n();return this.#r.ternary(r,e,t)}#h(){switch(this.#e){case O.KEYWORD:let r=this.#o;if(r==="this")return this.#s(),this.#r.id(r);throw oo.indexOf(r)!==-1?new Error(`unexpected keyword: ${r}`):new Error(`unrecognized keyword: ${r}`);case O.IDENTIFIER:return this.#f();case O.STRING:return this.#q();case O.INTEGER:return this.#m();case O.DECIMAL:return this.#w();case O.GROUPER:return this.#o==="("?this.#x():this.#o==="{"?this.#b():this.#o==="["?this.#g():void 0;case O.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let r=[];do{if(this.#s(),this._matches(O.GROUPER,"]"))break;r.push(this.#n())}while(this._matches(O.COMMA));return this.#s(O.GROUPER,"]"),this.#r.list(r)}#b(){let r={};do{if(this.#s(),this._matches(O.GROUPER,"}"))break;let e=this.#o;(this._matches(O.STRING)||this._matches(O.IDENTIFIER))&&this.#s(),this.#s(O.COLON),r[e]=this.#n()}while(this._matches(O.COMMA));return this.#s(O.GROUPER,"}"),this.#r.map(r)}#f(){let r=this.#o;if(r==="true")return this.#s(),this.#r.literal(!0);if(r==="false")return this.#s(),this.#r.literal(!1);if(r==="null")return this.#s(),this.#r.literal(null);if(r==="undefined")return this.#s(),this.#r.literal(void 0);let e=this.#y(),t=this.#p();return t?this.#r.invoke(e,void 0,t):e}#y(){if(!this._matches(O.IDENTIFIER))throw new Error(`expected identifier: ${this.#o}`);let r=this.#o;return this.#s(),this.#r.id(r)}#p(){if(!this._matches(O.GROUPER,"("))return;let r=[];do{if(this.#s(),this._matches(O.GROUPER,")"))break;let e=this.#n();r.push(e)}while(this._matches(O.COMMA));return this.#s(O.GROUPER,")"),r}#v(){this.#s();let r=this.#n();return this.#s(O.GROUPER,"]"),r}#x(){let r=this.#p();if(this._matches(O.ARROW)){this.#s();let e=this.#n(),t=r?.map(i=>i.value)??[];return this.#r.arrowFunction(t,e)}else return this.#r.paren(r[0])}#q(){let r=this.#r.literal(this.#o);return this.#s(),r}#m(r=""){let e=this.#r.literal(parseInt(`${r}${this.#o}`,10));return this.#s(),e}#w(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#o}`));return this.#s(),e}};var{hasOwn:Fa,fromEntries:Nc}=Object,Hc={"+":(s,r)=>s+r,"-":(s,r)=>s-r,"*":(s,r)=>s*r,"/":(s,r)=>s/r,"%":(s,r)=>s%r,"==":(s,r)=>s==r,"!=":(s,r)=>s!=r,"===":(s,r)=>s===r,"!==":(s,r)=>s!==r,">":(s,r)=>s>r,">=":(s,r)=>s>=r,"<":(s,r)=>s<r,"<=":(s,r)=>s<=r,"||":(s,r)=>s||r,"&&":(s,r)=>s&&r,"??":(s,r)=>s??r,"|":(s,r)=>r(s),"|>":(s,r)=>r(s)},Fc={"+":s=>s,"-":s=>-s,"!":s=>!s},ao=class{empty(){return{type:"Empty",evaluate(r){return r},getIds(r){return r}}}literal(r){return{type:"Literal",value:r,evaluate(e){return this.value},getIds(e){return e}}}id(r){return{type:"ID",value:r,evaluate(e){return this.value==="this"?e:e?.[this.value]},getIds(e){return e.push(this.value),e}}}unary(r,e){let t=Fc[r];return{type:"Unary",operator:r,child:e,evaluate(i){return t(this.child.evaluate(i))},getIds(i){return this.child.getIds(i)}}}binary(r,e,t){let i=Hc[e];return{type:"Binary",operator:e,left:r,right:t,evaluate(o){if(this.operator==="="){if(this.left.type!=="ID"&&this.left.type!=="Getter"&&this.left.type!=="Index")throw new Error(`Invalid assignment target: ${this.left}`);let n=this.right.evaluate(o),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(o),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(o),l=this.left.argument.evaluate(o)):this.left.type==="ID"&&(a=o,l=this.left.value),a===void 0?void 0:a[l]=n}return i(this.left.evaluate(o),this.right.evaluate(o))},getIds(o){return this.left.getIds(o),this.right.getIds(o),o}}}getter(r,e){return{type:"Getter",receiver:r,name:e,evaluate(t){return this.receiver.evaluate(t)?.[this.name]},getIds(t){return this.receiver.getIds(t),t}}}invoke(r,e,t){if(e!=null&&typeof e!="string")throw new Error("method not a string");return{type:"Invoke",receiver:r,method:e,arguments:t,evaluate(i){let o=this.receiver.evaluate(i),n=this.method?o:i?.this??i,a=this.method?o?.[e]:o,c=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(n,c)},getIds(i){return this.receiver.getIds(i),this.arguments?.forEach(o=>o?.getIds(i)),i}}}paren(r){return r}index(r,e){return{type:"Index",receiver:r,argument:e,evaluate(t){return this.receiver.evaluate(t)?.[this.argument.evaluate(t)]},getIds(t){return this.receiver.getIds(t),t}}}ternary(r,e,t){return{type:"Ternary",condition:r,trueExpr:e,falseExpr:t,evaluate(i){return this.condition.evaluate(i)?this.trueExpr.evaluate(i):this.falseExpr.evaluate(i)},getIds(i){return this.condition.getIds(i),this.trueExpr.getIds(i),this.falseExpr.getIds(i),i}}}map(r){return{type:"Map",entries:r,evaluate(e){let t={};if(r&&this.entries)for(let i in r){let o=this.entries[i];o&&(t[i]=o.evaluate(e))}return t},getIds(e){if(r&&this.entries)for(let t in r){let i=this.entries[t];i&&i.getIds(e)}return e}}}list(r){return{type:"List",items:r,evaluate(e){return this.items?.map(t=>t?.evaluate(e))},getIds(e){return this.items?.forEach(t=>t?.getIds(e)),e}}}arrowFunction(r,e){return{type:"ArrowFunction",params:r,body:e,evaluate(t){let i=this.params,o=this.body;return function(...n){let a=Nc(i.map((c,p)=>[c,n[p]])),l=new Proxy(t??{},{set(c,p,h){return Fa(a,p)&&(a[p]=h),c[p]=h},get(c,p){return Fa(a,p)?a[p]:c[p]}});return o.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var Ms=null,Ba={boundAttributeSuffix:Y.M,marker:Y.P,markerMatch:Y.A,HTML_RESULT:Y.C,getTemplateHtml:Y.L,overrideDirectiveResolve:(s,r)=>class extends s{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(s,r)=>{if(s.prototype._$AS.name!==r.name){Ms??=s.prototype._$AS.name;for(let e=s.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(Ms))return void(e[Ms]=r);throw Error("Internal error: It is possible that both dev mode and production mode Lit was mixed together during SSR. Please comment on the issue: https://github.com/lit/lit/issues/4527")}},setDirectiveClass(s,r){s._$litDirective$=r},getAttributePartCommittedValue:(s,r,e)=>{let t=X;return s.j=i=>t=i,s._$AI(r,s,e),t},connectedDisconnectable:s=>({...s,_$AU:!0}),resolveDirective:Y.V,AttributePart:Y.H,PropertyPart:Y.B,BooleanAttributePart:Y.N,EventPart:Y.U,ElementPart:Y.F,TemplateInstance:Y.R,isIterable:Y.D,ChildPart:Y.I};var{AttributePart:Bc,PropertyPart:Uc,BooleanAttributePart:zc,EventPart:jc}=Ba,_s=new ao,Rs=new Map,Ua=s=>s.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),lo=(s,r)=>{let e=Rs.get(s);if(e===void 0){if(Rs.has(s))return;if(s=s.trim(),s.startsWith("{{")&&s.endsWith("}}")){let t=s.substring(2,s.length-2).trim();e=new ii(t,_s).parse(),Rs.set(s,e)}}return e?.evaluate(r)},Wc=(s,r,e,t)=>{let i=s.getAttribute("if");if(i!==null&&lo(i,r))return co(s,r,e,t)},za=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,ja=s=>/(?:\\{{)|(?:\\}})/g.test(s),oi=s=>s.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),Gc=(s,r,e,t)=>{let i=s.getAttribute("repeat");if(i!==null){let o=lo(i,r);if(!o[Symbol.iterator])return N;let n=si(s),a=-1,l=[];for(let c of o){a++;let p=Object.create(r);p.item=c,p.index=a,p.this=r.this??r;let h=[];for(let y of n.parts){let v=y.update(p,e,t);y.type===1?h.push(...v):h.push(v)}let m={_$litType$:n,values:h};l.push(m)}return l}},Ga={if:Wc,repeat:Gc},De=(s,r=Ga,e={},t)=>{let o=si(s).renderers;if(t){let a=si(t).renderers,l=o.super;l!==void 0?e={...o,...e,super:(c,p,h)=>(h={...a,...h,super:(m,y,v)=>co(t,m,y,v)},l(c,p,h))}:(e={...a,...o,...e},s=t)}else e={...o,...e};return n=>co(s,n,r,e)};var co=(s,r,e=Ga,t={})=>{let i=si(s),o=[];for(let a of i.parts){let l=a.update(r,e,t);a.type===1?o.push(...l):o.push(l)}return{_$litType$:i,values:o}},Wa=new Map,si=s=>{let r=Wa.get(s);return r===void 0&&Wa.set(s,r=Xc(s)),r},Xc=s=>{let r={h:void 0,el:s.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(r.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,i=-1,o=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)i++;else if(t.nodeType===Node.ELEMENT_NODE){i++;let n=t;if(n.tagName==="TEMPLATE"){let l=n.getAttribute("type"),c=n.getAttribute("name"),p=n.getAttribute("call");if(p!==null||l!==null||c!==null){n.parentNode.insertBefore(document.createComment(""),n),o.push(n);let h;if(p!==null){let m=p.trim(),y=m.startsWith("{{")&&m.endsWith("}}");h=(v,w,f)=>{let u=n.getAttribute("data"),g=u===null?void 0:lo(u,v);return(y?lo(m,v):f[p])?.(g,w,f)}}else l!==null?h=(m,y,v)=>{let w=y[l];return w?.(n,m,y,v)}:(c==="super"?r.renderers.super=(m,y,v)=>{let w=v.super,f=si(n);return v={...v,...f.renderers},w(m,y,v)}:r.renderers[c]=(m,y,v)=>co(n,m,y,v),h=(m,y,v)=>{let w=v[c];return w?.(m,y,v)});r.parts.push({type:2,index:i,update:h});continue}}let a=n.getAttributeNames();for(let l of a){let c=n.getAttribute(l),p=c.split(za);if(p.length===1){ja(c)&&n.setAttribute(l,oi(c));continue}n.removeAttribute(l);let h=l,m=Bc,y=l[0];y==="."?(h=Ua(l.substring(1)),m=Uc):y==="?"?(h=l.substring(1),m=zc):y==="@"&&(h=Ua(l.substring(1)),m=jc);let v=[oi(p[0])],w=[];for(let f=1;f<p.length;f+=2){let u=p[f];w.push(ks(u,_s)),v.push(oi(p[f+1]))}r.parts.push({type:1,index:i,name:h,strings:v,ctor:m,update:(f,u,g)=>w.map(q=>q.evaluate(f))})}}else if(t.nodeType===Node.TEXT_NODE){let n=t,a=n.textContent,l=a.split(za);l.length>1?n.textContent=oi(l[0]):ja(a)&&(n.textContent=oi(a));for(let c=1;c<l.length;c+=2){let p=l[c],h=ks(p,_s);r.parts.push({type:2,index:++i,update:(y,v)=>h.evaluate(y)});let m=new Text(l[c+1].replace("\\{{","{{"));n.parentNode.insertBefore(m,n.nextSibling),n.parentNode.insertBefore(document.createComment(""),n.nextSibling),n=m,e.currentNode=m}}for(let n of o)n.remove();return r};var ai,ni=class extends C{constructor(){super();_(this,ai);B(this,ai,this.attachInternals()),I(this,ai).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=De(e)}render(){if(!this.computedContext)return x``;let e=this.computedContext.testParts.flatMap(t=>t.sections.flatMap(i=>i.items));return x` ${e.map(t=>this.myTemplate({item:t,view:this.computedContext.view}))} `}};ai=new WeakMap,d([P({context:W,subscribe:!0})],ni.prototype,"computedContext",2),ni=d([k("test-paging-buttons-stamp")],ni);var po=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},uo=class{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise((r=>this.Z=r))}resume(){this.Z?.(),this.Y=this.Z=void 0}};var Xa=s=>!ia(s)&&typeof s.then=="function",Qa=1073741823,Ls=class extends it{constructor(){super(...arguments),this._$Cwt=Qa,this._$Cbt=[],this._$CK=new po(this),this._$CX=new uo}render(...r){return r.find((e=>!Xa(e)))??X}update(r,e){let t=this._$Cbt,i=t.length;this._$Cbt=e;let o=this._$CK,n=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!Xa(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=Qa,i=0,Promise.resolve(l).then((async c=>{for(;n.get();)await n.get();let p=o.deref();if(p!==void 0){let h=p._$Cbt.indexOf(l);h>-1&&h<p._$Cwt&&(p._$Cwt=h,p.setValue(c))}})))}return X}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},mo=ae(Ls);var ho=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
213
+ `,d([P({context:W,subscribe:!0})],ye.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],ye.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],ye.prototype,"disabled",2),d([b({type:String})],ye.prototype,"showCorrectText",2),d([b({type:String})],ye.prototype,"hideCorrectText",2),d([b({type:String})],ye.prototype,"noCorrectResponseText",2),ye=d([k("test-show-correct-response")],ye);var oo=["this"],Va=["+","-","!"],Na=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],Is={"!":0,":":0,",":0,")":0,"]":0,"}":0,"|>":1,"?":2,"??":3,"||":4,"&&":5,"|":6,"^":7,"&":8,"!=":9,"==":9,"!==":9,"===":9,">=":10,">":10,"<=":10,"<":10,"+":11,"-":11,"%":12,"/":12,"*":12,"(":13,"[":13,".":13,"{":13},so=13;var Mc=["==","!=","<=",">=","||","&&","??","|>"],Rc=["===","!=="],O;(function(n){n[n.STRING=1]="STRING",n[n.IDENTIFIER=2]="IDENTIFIER",n[n.DOT=3]="DOT",n[n.COMMA=4]="COMMA",n[n.COLON=5]="COLON",n[n.INTEGER=6]="INTEGER",n[n.DECIMAL=7]="DECIMAL",n[n.OPERATOR=8]="OPERATOR",n[n.GROUPER=9]="GROUPER",n[n.KEYWORD=10]="KEYWORD",n[n.ARROW=11]="ARROW"})(O||(O={}));var Pe=(n,i,e=0)=>({kind:n,value:i,precedence:e}),_c=n=>n===9||n===10||n===13||n===32,Ha=n=>n===95||n===36||(n&=-33,65<=n&&n<=90),Lc=n=>Ha(n)||ri(n),Pc=n=>oo.indexOf(n)!==-1,Dc=n=>n===34||n===39,ri=n=>48<=n&&n<=57,$c=n=>n===43||n===45||n===42||n===47||n===33||n===38||n===37||n===60||n===61||n===62||n===63||n===94||n===124,Oc=n=>n===40||n===41||n===91||n===93||n===123||n===125,Vc=n=>n.replace(/\\(.)/g,(i,e)=>{switch(e){case"n":return`
214
+ `;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),no=class{#e;#t=-1;#r=0;#i;constructor(i){this.#e=i,this.#o()}nextToken(){for(;_c(this.#i);)this.#o(!0);if(Dc(this.#i))return this.#a();if(Ha(this.#i))return this.#c();if(ri(this.#i))return this.#d();if(this.#i===46)return this.#l();if(this.#i===44)return this.#u();if(this.#i===58)return this.#h();if($c(this.#i))return this.#b();if(Oc(this.#i))return this.#f();if(this.#o(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#o(i){this.#t++,this.#t<this.#e.length?(this.#i=this.#e.charCodeAt(this.#t),i===!0&&(this.#r=this.#t)):this.#i=void 0}#s(i=0){let e=this.#e.substring(this.#r,this.#t+i);return i===0&&this.#n(),e}#n(){this.#r=this.#t}#a(){let i="unterminated string",e=this.#i;for(this.#o(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(i);if(this.#i===92&&(this.#o(),this.#i===void 0))throw new Error(i);this.#o()}let t=Pe(O.STRING,Vc(this.#s()));return this.#o(),t}#c(){do this.#o();while(Lc(this.#i));let i=this.#s(),e=Pc(i)?O.KEYWORD:O.IDENTIFIER;return Pe(e,i)}#d(){do this.#o();while(ri(this.#i));return this.#i===46?this.#l():Pe(O.INTEGER,this.#s())}#l(){return this.#o(),ri(this.#i)?this.#g():(this.#n(),Pe(O.DOT,".",so))}#u(){return this.#o(!0),Pe(O.COMMA,",")}#h(){return this.#o(!0),Pe(O.COLON,":")}#g(){do this.#o();while(ri(this.#i));return Pe(O.DECIMAL,this.#s())}#b(){this.#o();let i=this.#s(2);if(Rc.indexOf(i)!==-1)this.#o(),this.#o();else{if(i=this.#s(1),i==="=>")return this.#o(),Pe(O.ARROW,i);Mc.indexOf(i)!==-1&&this.#o()}return i=this.#s(),Pe(O.OPERATOR,i,Is[i])}#f(){let i=String.fromCharCode(this.#i),e=Pe(O.GROUPER,i,Is[i]);return this.#o(!0),e}};var ks=(n,i)=>new ii(n,i).parse(),ii=class{#e;#t;#r;#i;#o;constructor(i,e){this.#t=new no(i),this.#r=e}parse(){return this.#s(),this.#n()}#s(i,e){if(!this._matches(i,e))throw new Error(`Expected kind ${i} (${e}), was ${this.#i?.kind} (${this.#i?.value})`);let t=this.#t.nextToken();this.#i=t,this.#e=t?.kind,this.#o=t?.value}_matches(i,e){return!(i&&this.#e!==i||e&&this.#o!==e)}#n(){if(!this.#i)return this.#r.empty();let i=this.#l();return i===void 0?void 0:this.#a(i,0)}#a(i,e){if(i===void 0)throw new Error("Expected left to be defined.");for(;this.#i;)if(this._matches(O.GROUPER,"(")){let t=this.#p();i=this.#r.invoke(i,void 0,t)}else if(this._matches(O.GROUPER,"[")){let t=this.#v();i=this.#r.index(i,t)}else if(this._matches(O.DOT)){this.#s();let t=this.#l();i=this.#c(i,t)}else{if(this._matches(O.KEYWORD))break;if(this._matches(O.OPERATOR)&&this.#i.precedence>=e)i=this.#o==="?"?this.#u(i):this.#d(i,this.#i);else break}return i}#c(i,e){if(e===void 0)throw new Error("expected identifier");if(e.type==="ID")return this.#r.getter(i,e.value);if(e.type==="Invoke"&&e.receiver.type==="ID"){let t=e.receiver;return this.#r.invoke(i,t.value,e.arguments)}else throw new Error(`expected identifier: ${e}`)}#d(i,e){if(Na.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#s();let t=this.#l();for(;(this.#e===O.OPERATOR||this.#e===O.DOT||this.#e===O.GROUPER)&&this.#i.precedence>e.precedence;)t=this.#a(t,this.#i.precedence);return this.#r.binary(i,e.value,t)}#l(){if(this._matches(O.OPERATOR)){let i=this.#o;if(this.#s(),i==="+"||i==="-"){if(this._matches(O.INTEGER))return this.#m(i);if(this._matches(O.DECIMAL))return this.#w(i)}if(Va.indexOf(i)===-1)throw new Error(`unexpected token: ${i}`);let e=this.#a(this.#h(),so);return this.#r.unary(i,e)}return this.#h()}#u(i){this.#s(O.OPERATOR,"?");let e=this.#n();this.#s(O.COLON);let t=this.#n();return this.#r.ternary(i,e,t)}#h(){switch(this.#e){case O.KEYWORD:let i=this.#o;if(i==="this")return this.#s(),this.#r.id(i);throw oo.indexOf(i)!==-1?new Error(`unexpected keyword: ${i}`):new Error(`unrecognized keyword: ${i}`);case O.IDENTIFIER:return this.#f();case O.STRING:return this.#q();case O.INTEGER:return this.#m();case O.DECIMAL:return this.#w();case O.GROUPER:return this.#o==="("?this.#x():this.#o==="{"?this.#b():this.#o==="["?this.#g():void 0;case O.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let i=[];do{if(this.#s(),this._matches(O.GROUPER,"]"))break;i.push(this.#n())}while(this._matches(O.COMMA));return this.#s(O.GROUPER,"]"),this.#r.list(i)}#b(){let i={};do{if(this.#s(),this._matches(O.GROUPER,"}"))break;let e=this.#o;(this._matches(O.STRING)||this._matches(O.IDENTIFIER))&&this.#s(),this.#s(O.COLON),i[e]=this.#n()}while(this._matches(O.COMMA));return this.#s(O.GROUPER,"}"),this.#r.map(i)}#f(){let i=this.#o;if(i==="true")return this.#s(),this.#r.literal(!0);if(i==="false")return this.#s(),this.#r.literal(!1);if(i==="null")return this.#s(),this.#r.literal(null);if(i==="undefined")return this.#s(),this.#r.literal(void 0);let e=this.#y(),t=this.#p();return t?this.#r.invoke(e,void 0,t):e}#y(){if(!this._matches(O.IDENTIFIER))throw new Error(`expected identifier: ${this.#o}`);let i=this.#o;return this.#s(),this.#r.id(i)}#p(){if(!this._matches(O.GROUPER,"("))return;let i=[];do{if(this.#s(),this._matches(O.GROUPER,")"))break;let e=this.#n();i.push(e)}while(this._matches(O.COMMA));return this.#s(O.GROUPER,")"),i}#v(){this.#s();let i=this.#n();return this.#s(O.GROUPER,"]"),i}#x(){let i=this.#p();if(this._matches(O.ARROW)){this.#s();let e=this.#n(),t=i?.map(r=>r.value)??[];return this.#r.arrowFunction(t,e)}else return this.#r.paren(i[0])}#q(){let i=this.#r.literal(this.#o);return this.#s(),i}#m(i=""){let e=this.#r.literal(parseInt(`${i}${this.#o}`,10));return this.#s(),e}#w(i=""){let e=this.#r.literal(parseFloat(`${i}${this.#o}`));return this.#s(),e}};var{hasOwn:Fa,fromEntries:Nc}=Object,Hc={"+":(n,i)=>n+i,"-":(n,i)=>n-i,"*":(n,i)=>n*i,"/":(n,i)=>n/i,"%":(n,i)=>n%i,"==":(n,i)=>n==i,"!=":(n,i)=>n!=i,"===":(n,i)=>n===i,"!==":(n,i)=>n!==i,">":(n,i)=>n>i,">=":(n,i)=>n>=i,"<":(n,i)=>n<i,"<=":(n,i)=>n<=i,"||":(n,i)=>n||i,"&&":(n,i)=>n&&i,"??":(n,i)=>n??i,"|":(n,i)=>i(n),"|>":(n,i)=>i(n)},Fc={"+":n=>n,"-":n=>-n,"!":n=>!n},ao=class{empty(){return{type:"Empty",evaluate(i){return i},getIds(i){return i}}}literal(i){return{type:"Literal",value:i,evaluate(e){return this.value},getIds(e){return e}}}id(i){return{type:"ID",value:i,evaluate(e){return this.value==="this"?e:e?.[this.value]},getIds(e){return e.push(this.value),e}}}unary(i,e){let t=Fc[i];return{type:"Unary",operator:i,child:e,evaluate(r){return t(this.child.evaluate(r))},getIds(r){return this.child.getIds(r)}}}binary(i,e,t){let r=Hc[e];return{type:"Binary",operator:e,left:i,right:t,evaluate(o){if(this.operator==="="){if(this.left.type!=="ID"&&this.left.type!=="Getter"&&this.left.type!=="Index")throw new Error(`Invalid assignment target: ${this.left}`);let s=this.right.evaluate(o),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(o),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(o),l=this.left.argument.evaluate(o)):this.left.type==="ID"&&(a=o,l=this.left.value),a===void 0?void 0:a[l]=s}return r(this.left.evaluate(o),this.right.evaluate(o))},getIds(o){return this.left.getIds(o),this.right.getIds(o),o}}}getter(i,e){return{type:"Getter",receiver:i,name:e,evaluate(t){return this.receiver.evaluate(t)?.[this.name]},getIds(t){return this.receiver.getIds(t),t}}}invoke(i,e,t){if(e!=null&&typeof e!="string")throw new Error("method not a string");return{type:"Invoke",receiver:i,method:e,arguments:t,evaluate(r){let o=this.receiver.evaluate(r),s=this.method?o:r?.this??r,a=this.method?o?.[e]:o,c=(this.arguments??[]).map(p=>p?.evaluate(r));return a?.apply?.(s,c)},getIds(r){return this.receiver.getIds(r),this.arguments?.forEach(o=>o?.getIds(r)),r}}}paren(i){return i}index(i,e){return{type:"Index",receiver:i,argument:e,evaluate(t){return this.receiver.evaluate(t)?.[this.argument.evaluate(t)]},getIds(t){return this.receiver.getIds(t),t}}}ternary(i,e,t){return{type:"Ternary",condition:i,trueExpr:e,falseExpr:t,evaluate(r){return this.condition.evaluate(r)?this.trueExpr.evaluate(r):this.falseExpr.evaluate(r)},getIds(r){return this.condition.getIds(r),this.trueExpr.getIds(r),this.falseExpr.getIds(r),r}}}map(i){return{type:"Map",entries:i,evaluate(e){let t={};if(i&&this.entries)for(let r in i){let o=this.entries[r];o&&(t[r]=o.evaluate(e))}return t},getIds(e){if(i&&this.entries)for(let t in i){let r=this.entries[t];r&&r.getIds(e)}return e}}}list(i){return{type:"List",items:i,evaluate(e){return this.items?.map(t=>t?.evaluate(e))},getIds(e){return this.items?.forEach(t=>t?.getIds(e)),e}}}arrowFunction(i,e){return{type:"ArrowFunction",params:i,body:e,evaluate(t){let r=this.params,o=this.body;return function(...s){let a=Nc(r.map((c,p)=>[c,s[p]])),l=new Proxy(t??{},{set(c,p,h){return Fa(a,p)&&(a[p]=h),c[p]=h},get(c,p){return Fa(a,p)?a[p]:c[p]}});return o.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(r=>!this.params.includes(r))}}}};var Ms=null,Ba={boundAttributeSuffix:Y.M,marker:Y.P,markerMatch:Y.A,HTML_RESULT:Y.C,getTemplateHtml:Y.L,overrideDirectiveResolve:(n,i)=>class extends n{_$AS(e,t){return i(this,t)}},patchDirectiveResolve:(n,i)=>{if(n.prototype._$AS.name!==i.name){Ms??=n.prototype._$AS.name;for(let e=n.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(Ms))return void(e[Ms]=i);throw Error("Internal error: It is possible that both dev mode and production mode Lit was mixed together during SSR. Please comment on the issue: https://github.com/lit/lit/issues/4527")}},setDirectiveClass(n,i){n._$litDirective$=i},getAttributePartCommittedValue:(n,i,e)=>{let t=X;return n.j=r=>t=r,n._$AI(i,n,e),t},connectedDisconnectable:n=>({...n,_$AU:!0}),resolveDirective:Y.V,AttributePart:Y.H,PropertyPart:Y.B,BooleanAttributePart:Y.N,EventPart:Y.U,ElementPart:Y.F,TemplateInstance:Y.R,isIterable:Y.D,ChildPart:Y.I};var{AttributePart:Bc,PropertyPart:Uc,BooleanAttributePart:zc,EventPart:jc}=Ba,_s=new ao,Rs=new Map,Ua=n=>n.replace(/-(-|\w)/g,(i,e)=>e.toUpperCase()),lo=(n,i)=>{let e=Rs.get(n);if(e===void 0){if(Rs.has(n))return;if(n=n.trim(),n.startsWith("{{")&&n.endsWith("}}")){let t=n.substring(2,n.length-2).trim();e=new ii(t,_s).parse(),Rs.set(n,e)}}return e?.evaluate(i)},Wc=(n,i,e,t)=>{let r=n.getAttribute("if");if(r!==null&&lo(r,i))return co(n,i,e,t)},za=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,ja=n=>/(?:\\{{)|(?:\\}})/g.test(n),oi=n=>n.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),Gc=(n,i,e,t)=>{let r=n.getAttribute("repeat");if(r!==null){let o=lo(r,i);if(!o[Symbol.iterator])return N;let s=si(n),a=-1,l=[];for(let c of o){a++;let p=Object.create(i);p.item=c,p.index=a,p.this=i.this??i;let h=[];for(let y of s.parts){let v=y.update(p,e,t);y.type===1?h.push(...v):h.push(v)}let m={_$litType$:s,values:h};l.push(m)}return l}},Ga={if:Wc,repeat:Gc},De=(n,i=Ga,e={},t)=>{let o=si(n).renderers;if(t){let a=si(t).renderers,l=o.super;l!==void 0?e={...o,...e,super:(c,p,h)=>(h={...a,...h,super:(m,y,v)=>co(t,m,y,v)},l(c,p,h))}:(e={...a,...o,...e},n=t)}else e={...o,...e};return s=>co(n,s,i,e)};var co=(n,i,e=Ga,t={})=>{let r=si(n),o=[];for(let a of r.parts){let l=a.update(i,e,t);a.type===1?o.push(...l):o.push(l)}return{_$litType$:r,values:o}},Wa=new Map,si=n=>{let i=Wa.get(n);return i===void 0&&Wa.set(n,i=Xc(n)),i},Xc=n=>{let i={h:void 0,el:n.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(i.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,r=-1,o=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)r++;else if(t.nodeType===Node.ELEMENT_NODE){r++;let s=t;if(s.tagName==="TEMPLATE"){let l=s.getAttribute("type"),c=s.getAttribute("name"),p=s.getAttribute("call");if(p!==null||l!==null||c!==null){s.parentNode.insertBefore(document.createComment(""),s),o.push(s);let h;if(p!==null){let m=p.trim(),y=m.startsWith("{{")&&m.endsWith("}}");h=(v,w,f)=>{let u=s.getAttribute("data"),g=u===null?void 0:lo(u,v);return(y?lo(m,v):f[p])?.(g,w,f)}}else l!==null?h=(m,y,v)=>{let w=y[l];return w?.(s,m,y,v)}:(c==="super"?i.renderers.super=(m,y,v)=>{let w=v.super,f=si(s);return v={...v,...f.renderers},w(m,y,v)}:i.renderers[c]=(m,y,v)=>co(s,m,y,v),h=(m,y,v)=>{let w=v[c];return w?.(m,y,v)});i.parts.push({type:2,index:r,update:h});continue}}let a=s.getAttributeNames();for(let l of a){let c=s.getAttribute(l),p=c.split(za);if(p.length===1){ja(c)&&s.setAttribute(l,oi(c));continue}s.removeAttribute(l);let h=l,m=Bc,y=l[0];y==="."?(h=Ua(l.substring(1)),m=Uc):y==="?"?(h=l.substring(1),m=zc):y==="@"&&(h=Ua(l.substring(1)),m=jc);let v=[oi(p[0])],w=[];for(let f=1;f<p.length;f+=2){let u=p[f];w.push(ks(u,_s)),v.push(oi(p[f+1]))}i.parts.push({type:1,index:r,name:h,strings:v,ctor:m,update:(f,u,g)=>w.map(q=>q.evaluate(f))})}}else if(t.nodeType===Node.TEXT_NODE){let s=t,a=s.textContent,l=a.split(za);l.length>1?s.textContent=oi(l[0]):ja(a)&&(s.textContent=oi(a));for(let c=1;c<l.length;c+=2){let p=l[c],h=ks(p,_s);i.parts.push({type:2,index:++r,update:(y,v)=>h.evaluate(y)});let m=new Text(l[c+1].replace("\\{{","{{"));s.parentNode.insertBefore(m,s.nextSibling),s.parentNode.insertBefore(document.createComment(""),s.nextSibling),s=m,e.currentNode=m}}for(let s of o)s.remove();return i};var ai,ni=class extends C{constructor(){super();_(this,ai);B(this,ai,this.attachInternals()),I(this,ai).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=De(e)}render(){if(!this.computedContext)return x``;let e=this.computedContext.testParts.flatMap(t=>t.sections.flatMap(r=>r.items));return x` ${e.map(t=>this.myTemplate({item:t,view:this.computedContext.view}))} `}};ai=new WeakMap,d([P({context:W,subscribe:!0})],ni.prototype,"computedContext",2),ni=d([k("test-paging-buttons-stamp")],ni);var po=class{constructor(i){this.G=i}disconnect(){this.G=void 0}reconnect(i){this.G=i}deref(){return this.G}},uo=class{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise((i=>this.Z=i))}resume(){this.Z?.(),this.Y=this.Z=void 0}};var Xa=n=>!ia(n)&&typeof n.then=="function",Qa=1073741823,Ls=class extends it{constructor(){super(...arguments),this._$Cwt=Qa,this._$Cbt=[],this._$CK=new po(this),this._$CX=new uo}render(...i){return i.find((e=>!Xa(e)))??X}update(i,e){let t=this._$Cbt,r=t.length;this._$Cbt=e;let o=this._$CK,s=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!Xa(l))return this._$Cwt=a,l;a<r&&l===t[a]||(this._$Cwt=Qa,r=0,Promise.resolve(l).then((async c=>{for(;s.get();)await s.get();let p=o.deref();if(p!==void 0){let h=p._$Cbt.indexOf(l);h>-1&&h<p._$Cwt&&(p._$Cwt=h,p.setValue(c))}})))}return X}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},mo=ae(Ls);var ho=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
215
215
 
216
216
  /* https://www.imsglobal.org/sites/default/files/spec/qti/v3/guide/img/qti3p0.css */
217
217
 
@@ -3788,8 +3788,8 @@ div.full-correct-response-inline {
3788
3788
  ${I(this,li)}
3789
3789
  <slot></slot>
3790
3790
  ${mo(this.testDoc,x`<span>Loading...</span>`)}
3791
- `}};li=new WeakMap,or=new WeakSet,Ja=function(){let e=this.querySelector("template");B(this,li,e?e.content:x``)},Ya=function(){let e=new CSSStyleSheet;e.replaceSync(ho),this.shadowRoot.adoptedStyleSheets=[e]},d([b({type:String,attribute:"test-url"})],je.prototype,"testURL",2),d([R()],je.prototype,"testDoc",2),d([R()],je.prototype,"testXML",2),d([U("testURL",{waitUntilFirstUpdate:!0})],je.prototype,"handleTestURLChange",1),d([U("testXML",{waitUntilFirstUpdate:!0})],je.prototype,"handleTestXMLChange",1),je=d([k("test-container")],je);var sr=class extends C{render(){let r=this.computedContext?.testParts.flatMap(o=>o.sections.flatMap(n=>n.items)).find(o=>o.active);if(!r||!r.variables)return x``;let e=r.variables.filter(o=>o.type==="response"),t=r.variables.filter(o=>o.type==="outcome"),i=(o,n)=>x`
3792
- <h3>${n}</h3>
3791
+ `}};li=new WeakMap,or=new WeakSet,Ja=function(){let e=this.querySelector("template");B(this,li,e?e.content:x``)},Ya=function(){let e=new CSSStyleSheet;e.replaceSync(ho),this.shadowRoot.adoptedStyleSheets=[e]},d([b({type:String,attribute:"test-url"})],je.prototype,"testURL",2),d([R()],je.prototype,"testDoc",2),d([R()],je.prototype,"testXML",2),d([U("testURL",{waitUntilFirstUpdate:!0})],je.prototype,"handleTestURLChange",1),d([U("testXML",{waitUntilFirstUpdate:!0})],je.prototype,"handleTestXMLChange",1),je=d([k("test-container")],je);var sr=class extends C{render(){let i=this.computedContext?.testParts.flatMap(o=>o.sections.flatMap(s=>s.items)).find(o=>o.active);if(!i||!i.variables)return x``;let e=i.variables.filter(o=>o.type==="response"),t=i.variables.filter(o=>o.type==="outcome"),r=(o,s)=>x`
3792
+ <h3>${s}</h3>
3793
3793
  <table>
3794
3794
  <thead>
3795
3795
  <tr>
@@ -3813,7 +3813,7 @@ div.full-correct-response-inline {
3813
3813
  </tbody>
3814
3814
  </table>
3815
3815
  `;return x`
3816
- ${i(e,"Response Variables")} ${i(t,"Outcome Variables")}
3816
+ ${r(e,"Response Variables")} ${r(t,"Outcome Variables")}
3817
3817
  `}};sr.styles=S`
3818
3818
  table {
3819
3819
  width: 100%;
@@ -3842,8 +3842,8 @@ div.full-correct-response-inline {
3842
3842
  :host([disabled]) {
3843
3843
  ${re};
3844
3844
  }
3845
- `,d([b({type:String,attribute:"section-id"})],nr.prototype,"sectionId",2),nr=d([k("test-section-link")],nr);var pi=class extends C{render(){return x` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};d([R(),P({context:W,subscribe:!0})],pi.prototype,"computedContext",2),pi=d([k("test-print-context")],pi);var _t=class extends C{constructor(){super(...arguments);this.debug=!1;this.stampContext={view:"candidate",activeItem:{},activeSection:{items:[]},activeTestpart:{items:[],sections:[]},test:{}}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=De(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(m=>m.active),i=t?.sections.find(m=>m.active),o=i?.items.find(m=>m.active),{variables:n,...a}=o||{};if(!t||!i||!o)return;let l={...t,items:t.sections.flatMap(m=>m.items.map(({variables:y,...v})=>v)),sections:t.sections.map(m=>({...m,items:m.items.map(({variables:y,...v})=>v)}))},c={...i,items:i.items.map(({variables:m,...y})=>y)},{testParts:p,...h}=this.computedContext;this.stampContext={view:this.computedContext.view,activeItem:a,activeSection:c,activeTestpart:l,test:h},this.dispatchEvent(new CustomEvent("qti-stamp-context-updated",{detail:this.stampContext,bubbles:!0}))}render(){return x` ${this.debug?x`<small><pre>${JSON.stringify(this.stampContext,null,2)}</pre></small>`:N}
3846
- ${this.myTemplate?this.myTemplate(this.stampContext):N}`}};d([b({type:Boolean,reflect:!0})],_t.prototype,"debug",2),d([R(),P({context:W,subscribe:!0})],_t.prototype,"computedContext",2),d([R()],_t.prototype,"stampContext",2),_t=d([k("test-stamp")],_t);var go,Za,Lt=class extends C{constructor(){super();_(this,go);this.view="";this.disabled=!1;this.myTemplate=null;this.addEventListener("click",e=>{let t=e.target,i=parseFloat(t.value);t.tagName==="INPUT"&&D(this,go,Za).call(this,i)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=De(e)}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(c=>c.items)).find(l=>l.active);if(!e||!e.variables)return x``;let t=e.variables.find(l=>l.identifier=="MAXSCORE")?.value,i=e.variables.find(l=>l.identifier=="SCORE"),o=i?.value,n=i?.externalScored!=="human";if(!t||!i)return N;let a=[...Array(Number(t)+1).keys()];return x`${this.myTemplate?this.myTemplate({scores:a,score:o,disabled:n}):N}`}};go=new WeakSet,Za=function(e){let o=(this.computedContext?.testParts.find(n=>n.active)).sections.flatMap(n=>n.items).find(n=>n.active)?.identifier;this.dispatchEvent(new CustomEvent("test-update-outcome-variable",{detail:{assessmentItemRefId:o,outcomeVariableId:"SCORE",value:e},bubbles:!0}))},d([b({type:String,attribute:"view"})],Lt.prototype,"view",2),d([b({type:Boolean})],Lt.prototype,"disabled",2),d([P({context:W,subscribe:!0})],Lt.prototype,"computedContext",2),Lt=d([k("test-scoring-buttons")],Lt);var ui=class extends C{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let r=this.querySelector("template");if(!r){this.myTemplate=null;return}this.myTemplate=De(r)}_switchView(r){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:r}))}firstUpdated(r){this.addEventListener("click",()=>{this.sessionContext?.view==="scorer"?this._switchView("candidate"):this._switchView("scorer")})}render(){return x`${this.myTemplate?this.myTemplate({view:this.sessionContext?.view}):N}`}};d([P({context:et,subscribe:!0})],ui.prototype,"sessionContext",2),ui=d([k("test-view-toggle")],ui);var ar=class extends C{constructor(){super(...arguments);this.view=null}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(c=>c.items)).find(l=>l.active);if(!e||!e.variables)return x``;if(e.category==="dep-informational")return x`<div>${this.dataset.informational}</div>`;let t=e?.variables.find(l=>l.identifier==="completionStatus")?.value,i=e?.variables.find(l=>l.identifier=="SCORE"),o=parseFloat(i?.value),n=e.externalScored;return x`<div>${t!=="completed"?this.dataset.textNoResponse:!n&&o!==void 0&&!Number.isNaN(o)?o>0?this.dataset.textCorrect:this.dataset.textIncorrect:n==="externalMachine"?Number.isNaN(o)||o===void 0?this.dataset.scoreUnknown:`We hebben je antwoord ${o===0?"geen punten":o==1?"\xE9\xE9n punt":`${o} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`:n==="human"?Number.isNaN(o)?"":"Deze score heb je zelf toegekend.":this.dataset.inProgress}</div>`}};d([P({context:W,subscribe:!0})],ar.prototype,"computedContext",2),d([b({type:String,attribute:"view"})],ar.prototype,"view",2),ar=d([k("test-scoring-feedback")],ar);var mi=class extends C{constructor(){super(),this.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})),this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:!0,bubbles:!0}));let e=this.closest("qti-test").querySelector("test-container");Array.from(e.shadowRoot.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",!0)})})}render(){return x` <slot></slot> `}};mi.styles=S`
3845
+ `,d([b({type:String,attribute:"section-id"})],nr.prototype,"sectionId",2),nr=d([k("test-section-link")],nr);var pi=class extends C{render(){return x` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};d([R(),P({context:W,subscribe:!0})],pi.prototype,"computedContext",2),pi=d([k("test-print-context")],pi);var _t=class extends C{constructor(){super(...arguments);this.debug=!1;this.stampContext={view:"candidate",activeItem:{},activeSection:{items:[]},activeTestpart:{items:[],sections:[]},test:{}}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=De(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(m=>m.active),r=t?.sections.find(m=>m.active),o=r?.items.find(m=>m.active),{variables:s,...a}=o||{};if(!t||!r||!o)return;let l={...t,items:t.sections.flatMap(m=>m.items.map(({variables:y,...v})=>v)),sections:t.sections.map(m=>({...m,items:m.items.map(({variables:y,...v})=>v)}))},c={...r,items:r.items.map(({variables:m,...y})=>y)},{testParts:p,...h}=this.computedContext;this.stampContext={view:this.computedContext.view,activeItem:a,activeSection:c,activeTestpart:l,test:h},this.dispatchEvent(new CustomEvent("qti-stamp-context-updated",{detail:this.stampContext,bubbles:!0}))}render(){return x` ${this.debug?x`<small><pre>${JSON.stringify(this.stampContext,null,2)}</pre></small>`:N}
3846
+ ${this.myTemplate?this.myTemplate(this.stampContext):N}`}};d([b({type:Boolean,reflect:!0})],_t.prototype,"debug",2),d([R(),P({context:W,subscribe:!0})],_t.prototype,"computedContext",2),d([R()],_t.prototype,"stampContext",2),_t=d([k("test-stamp")],_t);var go,Za,Lt=class extends C{constructor(){super();_(this,go);this.view="";this.disabled=!1;this.myTemplate=null;this.addEventListener("click",e=>{let t=e.target,r=parseFloat(t.value);t.tagName==="INPUT"&&D(this,go,Za).call(this,r)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=De(e)}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(c=>c.items)).find(l=>l.active);if(!e||!e.variables)return x``;let t=e.variables.find(l=>l.identifier=="MAXSCORE")?.value,r=e.variables.find(l=>l.identifier=="SCORE"),o=r?.value,s=r?.externalScored!=="human";if(!t||!r)return N;let a=[...Array(Number(t)+1).keys()];return x`${this.myTemplate?this.myTemplate({scores:a,score:o,disabled:s}):N}`}};go=new WeakSet,Za=function(e){let o=(this.computedContext?.testParts.find(s=>s.active)).sections.flatMap(s=>s.items).find(s=>s.active)?.identifier;this.dispatchEvent(new CustomEvent("test-update-outcome-variable",{detail:{assessmentItemRefId:o,outcomeVariableId:"SCORE",value:e},bubbles:!0}))},d([b({type:String,attribute:"view"})],Lt.prototype,"view",2),d([b({type:Boolean})],Lt.prototype,"disabled",2),d([P({context:W,subscribe:!0})],Lt.prototype,"computedContext",2),Lt=d([k("test-scoring-buttons")],Lt);var ui=class extends C{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let i=this.querySelector("template");if(!i){this.myTemplate=null;return}this.myTemplate=De(i)}_switchView(i){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:i}))}firstUpdated(i){this.addEventListener("click",()=>{this.sessionContext?.view==="scorer"?this._switchView("candidate"):this._switchView("scorer")})}render(){return x`${this.myTemplate?this.myTemplate({view:this.sessionContext?.view}):N}`}};d([P({context:et,subscribe:!0})],ui.prototype,"sessionContext",2),ui=d([k("test-view-toggle")],ui);var ar=class extends C{constructor(){super(...arguments);this.view=null}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(c=>c.items)).find(l=>l.active);if(!e||!e.variables)return x``;if(e.category==="dep-informational")return x`<div>${this.dataset.informational}</div>`;let t=e?.variables.find(l=>l.identifier==="completionStatus")?.value,r=e?.variables.find(l=>l.identifier=="SCORE"),o=parseFloat(r?.value),s=e.externalScored;return x`<div>${t!=="completed"?this.dataset.textNoResponse:!s&&o!==void 0&&!Number.isNaN(o)?o>0?this.dataset.textCorrect:this.dataset.textIncorrect:s==="externalMachine"?Number.isNaN(o)||o===void 0?this.dataset.scoreUnknown:`We hebben je antwoord ${o===0?"geen punten":o==1?"\xE9\xE9n punt":`${o} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`:s==="human"?Number.isNaN(o)?"":"Deze score heb je zelf toegekend.":this.dataset.inProgress}</div>`}};d([P({context:W,subscribe:!0})],ar.prototype,"computedContext",2),d([b({type:String,attribute:"view"})],ar.prototype,"view",2),ar=d([k("test-scoring-feedback")],ar);var mi=class extends C{constructor(){super(),this.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})),this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:!0,bubbles:!0}));let e=this.closest("qti-test").querySelector("test-container");Array.from(e.shadowRoot.querySelectorAll("[view]")).forEach(r=>{r.classList.toggle("show",!0)})})}render(){return x` <slot></slot> `}};mi.styles=S`
3847
3847
  :host {
3848
3848
  ${te};
3849
3849
  }
@@ -3881,22 +3881,22 @@ div.full-correct-response-inline {
3881
3881
  `,fx=S`
3882
3882
  ${il};
3883
3883
  border: 1px solid gray;
3884
- `;var cr,fi,dr,sl,nl,xe=class extends C{constructor(){super();_(this,dr);this.shown=!1;this.disabled=!1;this.showCandidateCorrectionText="Show candidate correction";this.hideCandidateCorrectionText="Hide candidate correction";this.noCorrectResponseText="No correct response specified";_(this,cr,!1);_(this,fi,"")}updated(){if(!I(this,cr)||I(this,fi)!==this.computedContext?.identifier){B(this,fi,this.computedContext?.identifier);let e=!!this.computedContext?.variables.some(i=>i.correctResponse),t=!!this.computedContext?.variables.some(i=>i.mapping?.mapEntries?.length>0||i.areaMapping?.areaMapEntries?.length>0);B(this,cr,e||t)}this.disabled=!I(this,cr)}render(){return x` <div @click="${D(this,dr,sl)}">${D(this,dr,nl).call(this)}</div> `}};cr=new WeakMap,fi=new WeakMap,dr=new WeakSet,sl=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-candidate-correction",{detail:!this.shown,bubbles:!0}))},nl=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCandidateCorrectionText:this.showCandidateCorrectionText},xe.styles=S`
3884
+ `;var cr,fi,dr,sl,nl,xe=class extends C{constructor(){super();_(this,dr);this.shown=!1;this.disabled=!1;this.showCandidateCorrectionText="Show candidate correction";this.hideCandidateCorrectionText="Hide candidate correction";this.noCorrectResponseText="No correct response specified";_(this,cr,!1);_(this,fi,"")}updated(){if(!I(this,cr)||I(this,fi)!==this.computedContext?.identifier){B(this,fi,this.computedContext?.identifier);let e=!!this.computedContext?.variables.some(r=>r.correctResponse),t=!!this.computedContext?.variables.some(r=>r.mapping?.mapEntries?.length>0||r.areaMapping?.areaMapEntries?.length>0);B(this,cr,e||t)}this.disabled=!I(this,cr)}render(){return x` <div @click="${D(this,dr,sl)}">${D(this,dr,nl).call(this)}</div> `}};cr=new WeakMap,fi=new WeakMap,dr=new WeakSet,sl=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-candidate-correction",{detail:!this.shown,bubbles:!0}))},nl=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCandidateCorrectionText:this.showCandidateCorrectionText},xe.styles=S`
3885
3885
  :host {
3886
3886
  ${vo};
3887
3887
  }
3888
3888
  :host([disabled]) {
3889
3889
  ${yo};
3890
3890
  }
3891
- `,d([P({context:Ze,subscribe:!0})],xe.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],xe.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],xe.prototype,"disabled",2),d([b({type:String})],xe.prototype,"showCandidateCorrectionText",2),d([b({type:String})],xe.prototype,"hideCandidateCorrectionText",2),d([b({type:String})],xe.prototype,"noCorrectResponseText",2),xe=d([k("item-show-candidate-correction")],xe);var pr,gi,ur,al,ll,qe=class extends C{constructor(){super(...arguments);_(this,ur);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";_(this,pr,!1);_(this,gi,"")}updated(){if(!I(this,pr)||I(this,gi)!==this.computedContext?.identifier){B(this,gi,this.computedContext?.identifier);let e=!!this.computedContext?.variables.some(i=>i.correctResponse),t=!!this.computedContext?.variables.some(i=>i.mapping?.mapEntries?.length>0||i.areaMapping?.areaMapEntries?.length>0);B(this,pr,e||t)}this.disabled=!I(this,pr)}render(){return x` <div @click="${D(this,ur,al)}">${D(this,ur,ll).call(this)}</div> `}};pr=new WeakMap,gi=new WeakMap,ur=new WeakSet,al=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-correct-response",{detail:!this.shown,bubbles:!0}))},ll=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},qe.styles=S`
3891
+ `,d([P({context:Ze,subscribe:!0})],xe.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],xe.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],xe.prototype,"disabled",2),d([b({type:String})],xe.prototype,"showCandidateCorrectionText",2),d([b({type:String})],xe.prototype,"hideCandidateCorrectionText",2),d([b({type:String})],xe.prototype,"noCorrectResponseText",2),xe=d([k("item-show-candidate-correction")],xe);var pr,gi,ur,al,ll,qe=class extends C{constructor(){super(...arguments);_(this,ur);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";_(this,pr,!1);_(this,gi,"")}updated(){if(!I(this,pr)||I(this,gi)!==this.computedContext?.identifier){B(this,gi,this.computedContext?.identifier);let e=!!this.computedContext?.variables.some(r=>r.correctResponse),t=!!this.computedContext?.variables.some(r=>r.mapping?.mapEntries?.length>0||r.areaMapping?.areaMapEntries?.length>0);B(this,pr,e||t)}this.disabled=!I(this,pr)}render(){return x` <div @click="${D(this,ur,al)}">${D(this,ur,ll).call(this)}</div> `}};pr=new WeakMap,gi=new WeakMap,ur=new WeakSet,al=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-correct-response",{detail:!this.shown,bubbles:!0}))},ll=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},qe.styles=S`
3892
3892
  :host {
3893
3893
  ${vo};
3894
3894
  }
3895
3895
  :host([disabled]) {
3896
3896
  ${yo};
3897
3897
  }
3898
- `,d([P({context:Ze,subscribe:!0})],qe.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],qe.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],qe.prototype,"disabled",2),d([b({type:String})],qe.prototype,"showCorrectText",2),d([b({type:String})],qe.prototype,"hideCorrectText",2),d([b({type:String})],qe.prototype,"noCorrectResponseText",2),qe=d([k("item-show-correct-response")],qe);var mr=class extends C{render(){let r=this.computedContext;if(!r||!r.variables)return x``;let e=r.variables.filter(o=>o.type==="response"),t=r.variables.filter(o=>o.type==="outcome"),i=(o,n)=>x`
3899
- <h3>${n}</h3>
3898
+ `,d([P({context:Ze,subscribe:!0})],qe.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],qe.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],qe.prototype,"disabled",2),d([b({type:String})],qe.prototype,"showCorrectText",2),d([b({type:String})],qe.prototype,"hideCorrectText",2),d([b({type:String})],qe.prototype,"noCorrectResponseText",2),qe=d([k("item-show-correct-response")],qe);var mr=class extends C{render(){let i=this.computedContext;if(!i||!i.variables)return x``;let e=i.variables.filter(o=>o.type==="response"),t=i.variables.filter(o=>o.type==="outcome"),r=(o,s)=>x`
3899
+ <h3>${s}</h3>
3900
3900
  <table>
3901
3901
  <thead>
3902
3902
  <tr>
@@ -3920,7 +3920,7 @@ div.full-correct-response-inline {
3920
3920
  </tbody>
3921
3921
  </table>
3922
3922
  `;return x`
3923
- ${i(e,"Response Variables")} ${i(t,"Outcome Variables")}
3923
+ ${r(e,"Response Variables")} ${r(t,"Outcome Variables")}
3924
3924
  `}};mr.styles=S`
3925
3925
  table {
3926
3926
  width: 100%;
@@ -3942,7 +3942,7 @@ div.full-correct-response-inline {
3942
3942
  margin-top: 20px;
3943
3943
  font-size: 16px;
3944
3944
  }
3945
- `,d([P({context:Ze,subscribe:!0})],mr.prototype,"computedContext",2),mr=d([k("item-print-variables")],mr);var oe,bi,vi,xo,qo,wo,ee,cl,dl,Ps,pl,ul,Ds,hr=class extends C{constructor(){super();_(this,ee);_(this,oe);this.configContext={};_(this,bi,D(this,ee,cl).bind(this));_(this,vi,D(this,ee,dl).bind(this));_(this,xo,D(this,ee,Ps).bind(this));_(this,qo,D(this,ee,pl).bind(this));_(this,wo,D(this,ee,ul).bind(this));this.addEventListener("qti-item-context-updated",I(this,bi)),this.addEventListener("qti-assessment-item-connected",I(this,vi)),this.addEventListener("item-show-correct-response",I(this,xo)),this.addEventListener("item-show-candidate-correction",I(this,qo)),this.addEventListener("item-switch-correct-response-mode",I(this,wo))}render(){return x`<slot></slot>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-item-context-changed",I(this,bi)),this.removeEventListener("qti-assessment-item-connected",I(this,vi))}};oe=new WeakMap,bi=new WeakMap,vi=new WeakMap,xo=new WeakMap,qo=new WeakMap,wo=new WeakMap,ee=new WeakSet,cl=function(e){D(this,ee,Ds).call(this,e.detail.itemContext.identifier,e.detail?.itemContext?.variables||[])},dl=function(e){let t=e.detail._context.variables;B(this,oe,e.detail),this.computedContext=this.computedContext?.identifier===I(this,oe).identifier?{...this.computedContext,title:I(this,oe).title}:{identifier:I(this,oe).identifier,title:I(this,oe).title,adaptive:I(this,oe).getAttribute("adaptive")?.toLowerCase()==="true"||!1,variables:t,correctResponseMode:"internal"},D(this,ee,Ds).call(this,I(this,oe).identifier,t||[])},Ps=function(e){I(this,oe)&&I(this,oe).showCorrectResponse(e.detail)},pl=function(e){I(this,oe)&&I(this,oe).showCandidateCorrection(e.detail)},ul=function(e){D(this,ee,Ps).call(this,new CustomEvent("item-show-correct-response",{detail:!1,bubbles:!0})),this.configContext={...this.configContext,correctResponseMode:e.detail}},Ds=function(e,t){let i=t?.find(p=>p.identifier=="SCORE")?.value,o=parseFloat(i?.toString()),n=t?.find(p=>p.identifier==="completionStatus")?.value,a=o!==void 0&&!isNaN(o)&&o>0,l=o!==void 0&&!isNaN(o)&&o<=0,c=n==="completed";this.computedContext={...this.computedContext,identifier:e,correct:a,incorrect:l,completed:c,variables:t}},d([R(),ne({context:Ze})],hr.prototype,"computedContext",2),d([R(),ne({context:he})],hr.prototype,"configContext",2),hr=d([k("qti-item")],hr);var Co=class extends C{static{this.styles=S`
3945
+ `,d([P({context:Ze,subscribe:!0})],mr.prototype,"computedContext",2),mr=d([k("item-print-variables")],mr);var oe,bi,vi,xo,qo,wo,ee,cl,dl,Ps,pl,ul,Ds,hr=class extends C{constructor(){super();_(this,ee);_(this,oe);this.configContext={};_(this,bi,D(this,ee,cl).bind(this));_(this,vi,D(this,ee,dl).bind(this));_(this,xo,D(this,ee,Ps).bind(this));_(this,qo,D(this,ee,pl).bind(this));_(this,wo,D(this,ee,ul).bind(this));this.addEventListener("qti-item-context-updated",I(this,bi)),this.addEventListener("qti-assessment-item-connected",I(this,vi)),this.addEventListener("item-show-correct-response",I(this,xo)),this.addEventListener("item-show-candidate-correction",I(this,qo)),this.addEventListener("item-switch-correct-response-mode",I(this,wo))}render(){return x`<slot></slot>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-item-context-changed",I(this,bi)),this.removeEventListener("qti-assessment-item-connected",I(this,vi))}};oe=new WeakMap,bi=new WeakMap,vi=new WeakMap,xo=new WeakMap,qo=new WeakMap,wo=new WeakMap,ee=new WeakSet,cl=function(e){D(this,ee,Ds).call(this,e.detail.itemContext.identifier,e.detail?.itemContext?.variables||[])},dl=function(e){let t=e.detail._context.variables;B(this,oe,e.detail),this.computedContext=this.computedContext?.identifier===I(this,oe).identifier?{...this.computedContext,title:I(this,oe).title}:{identifier:I(this,oe).identifier,title:I(this,oe).title,adaptive:I(this,oe).getAttribute("adaptive")?.toLowerCase()==="true"||!1,variables:t,correctResponseMode:"internal"},D(this,ee,Ds).call(this,I(this,oe).identifier,t||[])},Ps=function(e){I(this,oe)&&I(this,oe).showCorrectResponse(e.detail)},pl=function(e){I(this,oe)&&I(this,oe).showCandidateCorrection(e.detail)},ul=function(e){D(this,ee,Ps).call(this,new CustomEvent("item-show-correct-response",{detail:!1,bubbles:!0})),this.configContext={...this.configContext,correctResponseMode:e.detail}},Ds=function(e,t){let r=t?.find(p=>p.identifier=="SCORE")?.value,o=parseFloat(r?.toString()),s=t?.find(p=>p.identifier==="completionStatus")?.value,a=o!==void 0&&!isNaN(o)&&o>0,l=o!==void 0&&!isNaN(o)&&o<=0,c=s==="completed";this.computedContext={...this.computedContext,identifier:e,correct:a,incorrect:l,completed:c,variables:t}},d([R(),ne({context:Ze})],hr.prototype,"computedContext",2),d([R(),ne({context:he})],hr.prototype,"configContext",2),hr=d([k("qti-item")],hr);var Co=class extends C{static{this.styles=S`
3946
3946
  :host {
3947
3947
  display: flex;
3948
3948
  user-select: none;
@@ -3958,7 +3958,7 @@ div.full-correct-response-inline {
3958
3958
  display: flex;
3959
3959
  user-select: none;
3960
3960
  }
3961
- `}connectedCallback(){this.setAttribute("slot","drags")}};d([b({type:Number,reflect:!0})],xi.prototype,"tabindex",2);customElements.define("qti-gap-img",xi);var ml={toAttribute:s=>s?"true":"false",fromAttribute:s=>s==="true"};function ve(s,r){class e extends s{constructor(...o){super(...o);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this.internals=this.attachInternals()}handleDisabledChange(o,n){this.tabIndex=n?-1:0,n&&this.blur()}connectedCallback(){super.connectedCallback(),this.internals.ariaChecked="false",this.disabled&&(this.tabIndex=-1),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${r}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${r}`,{bubbles:!0,composed:!0}))}_onKeyUp(o){o.altKey||(o.code==="Space"||o.code==="Enter")&&(o.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${r}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return x`<slot></slot>`}}return d([b({type:String})],e.prototype,"identifier",2),d([b({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),d([b({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:ml})],e.prototype,"disabled",2),d([b({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:ml})],e.prototype,"readonly",2),d([U("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}var qi=class extends ve(C,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}static{this.styles=S`
3961
+ `}connectedCallback(){this.setAttribute("slot","drags")}};d([b({type:Number,reflect:!0})],xi.prototype,"tabindex",2);customElements.define("qti-gap-img",xi);var ml={toAttribute:n=>n?"true":"false",fromAttribute:n=>n==="true"};function ve(n,i){class e extends n{constructor(...o){super(...o);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this.internals=this.attachInternals()}handleDisabledChange(o,s){this.tabIndex=s?-1:0,s&&this.blur()}connectedCallback(){super.connectedCallback(),this.internals.ariaChecked="false",this.disabled&&(this.tabIndex=-1),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${i}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${i}`,{bubbles:!0,composed:!0}))}_onKeyUp(o){o.altKey||(o.code==="Space"||o.code==="Enter")&&(o.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${i}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return x`<slot></slot>`}}return d([b({type:String})],e.prototype,"identifier",2),d([b({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),d([b({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:ml})],e.prototype,"disabled",2),d([b({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:ml})],e.prototype,"readonly",2),d([U("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}var qi=class extends ve(C,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}static{this.styles=S`
3962
3962
  :host {
3963
3963
  display: inline-flex;
3964
3964
  user-select: none;
@@ -4020,7 +4020,7 @@ div.full-correct-response-inline {
4020
4020
  <div part="cha"></div>
4021
4021
  </div>
4022
4022
  ${this.marker?x`<div id="label">${this.marker}</div>`:N}
4023
- <slot part="slot"></slot>`}};d([b({type:String,attribute:"template-identifier"})],ct.prototype,"templateIdentifier",2),d([b({type:String,attribute:"show-hide"})],ct.prototype,"showHide",2),d([b({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],ct.prototype,"fixed",2),d([b({type:String,attribute:!1})],ct.prototype,"marker",2);customElements.define("qti-simple-choice",ct);var{AbortController:$e,AbortSignal:$s,WeakMap:Yc,WeakRef:Kc,Window:gl,reportError:To=console.log}=globalThis,dt=s=>s&&s.defaultView!==null&&s.defaultView.document===s&&(s.defaultView.top===s.defaultView||dt(s.defaultView.parent.document)),$t=()=>!!gl&&globalThis instanceof gl,Os=Symbol("unset"),[bl,Zc]=(()=>{function s(w,f,u=!0){Object.defineProperty(w,f,{...Object.getOwnPropertyDescriptor(w,f),enumerable:u})}let r="try"in Promise?Promise.try.bind(Promise):(w,...f)=>new Promise(u=>u(w(...f))),e="withResolvers"in Promise?Promise.withResolvers.bind(Promise):()=>{let w,f;return{promise:new Promise((g,q)=>(w=g,f=q)),resolve:w,reject:f}};function t(w,f){let u=f.call(w);if(u===null||typeof u!="object")throw new TypeError("Iterator is not an object");return u}let i=new Yc,o={next(...w){let f=this,u=i.get(f);if(!u?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.next called on invalid object");let{syncIteratorRecord:g}=u;return r(()=>g.next(...w))},return(...w){let f=this,u=i.get(f);if(!u?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.return called on invalid object");let{syncIteratorRecord:g}=u;return r(()=>g.return?g.return(...w):{value:void 0,done:!0})},throw(...w){let f=this,u=i.get(f);if(!u?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.throw called on invalid object");let{syncIteratorRecord:g}=u;return r(()=>{if(!g.throw)throw g.return(),new TypeError("no throw method");return g.throw(...w)})}};function n(w){let f=Object.create(o);return i.set(f,{syncIteratorRecord:w}),f}function a(w,f){let u;if(f){if(u=w[Symbol.asyncIterator],u==null){if(u=w[Symbol.iterator],u==null)throw new TypeError("Object is not async iterable");let g=t(w,u);return n(g)}}else u=w[Symbol.iterator];if(u==null)throw new TypeError("Object is not iterable");return t(w,u)}let l="any"in $s?$s.any.bind($s):w=>{let f=new $e;for(let u of w)if(u.aborted)return f.abort(u.reason),f.signal;for(let u of w)u.addEventListener("abort",()=>{f.abort(u.reason)},{signal:f.signal});return f.signal},c=w=>l(w.filter(Boolean));class p{constructor({next:f,error:u,complete:g}={}){i.set(this,{next:f,error:u,complete:g})}next(f){let{next:u}=i.get(this)||{};u&&u(f)}error(f){let{error:u}=i.get(this)||{};u?u(f):To(f)}complete(){let{complete:f}=i.get(this)||{};f&&f()}}function h(w,f){let u=i.get(w);if(u?.active){u.active=!1,u.subscriptionController.abort(f);for(let g of u.teardowns.reverse()){if($t()&&!dt(document))return;try{g()}catch(q){To(q)}}}}function m(w,f,u={}){if($t()&&!dt(document))return;let g;typeof f=="function"?g=new p({next:f}):f&&!(f instanceof p)?g=new p(f):g=f||new p;let q=i.get(w),T=q.weakSubscriber?.deref();if(T?.active){let A=T,M=i.get(A);M.observers.add(g),u.signal&&(u.signal.aborted?M.observers.delete(g):u.signal.addEventListener("abort",()=>{let V=i.get(A);V?.active&&(V.observers.delete(g),V.observers.size==0&&h(A,u.signal.reason))}));return}let E=new y(g);if(q.weakSubscriber=new Kc(E),"signal"in u&&(u.signal.aborted?h(E,u.signal.reason):u.signal.addEventListener("abort",()=>{let A=i.get(E);A?.active&&(A.observers.delete(g),A.observers.size==0&&h(E,u.signal.reason))})),q.subscribeCallback)try{q.subscribeCallback(E)}catch(A){E.error(A)}}class y{get[Symbol.toStringTag](){return"Subscriber"}constructor(f=null){if(!(f instanceof p))throw new TypeError("Illegal constructor");i.set(this,{active:!0,observers:new Set([f]),teardowns:[],subscriptionController:new $e})}next(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let u=i.get(this);if(!u?.active||$t()&&!dt(document))return;let g=new Set(u.observers);for(let q of g)q.next(f)}error(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let u=i.get(this);if(!u?.active){To(f);return}if($t()&&!dt(document))return;h(this,f);let g=new Set(u.observers);for(let q of g)q.error(f)}complete(){if(!(this instanceof y))throw new TypeError("illegal invocation");let f=i.get(this);if(!f?.active||$t()&&!dt(document))return;h(this);let u=new Set(f.observers);for(let g of u)g.complete()}addTeardown(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");if($t()&&!dt(document))return;let u=i.get(this);u?.active?u.teardowns.push(f):f()}get active(){if(!(this instanceof y))throw new TypeError("illegal invocation");return!!i.get(this)?.active}get signal(){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!i.has(this)){let f=new $e;return f.abort(),f.signal}return i.get(this).subscriptionController.signal}}s(y.prototype,"next"),s(y.prototype,"error"),s(y.prototype,"complete"),s(y.prototype,"addTeardown"),s(y.prototype,"active"),s(y.prototype,"signal");class v{get[Symbol.toStringTag](){return"Observable"}constructor(f){if(!f)throw new TypeError("1 argument required but 0 present");i.set(this,{weakSubscriber:null,subscribeCallback:f})}static from(f){if(f===null||typeof f!="object")throw new TypeError("Observable.from only accepts objects");if(f instanceof v)return f;if(typeof(Symbol.asyncIterator in f&&f[Symbol.asyncIterator])=="function"){let T=function(E,A){if(E.signal.aborted)return;let M;try{let V=A.next();M=Promise.resolve(V)}catch(V){M=Promise.reject(V)}M.then(V=>{if(V===null||typeof V!="object"){E.error(new TypeError("Not an IteratorResult."));return}try{({done:q}=V)}catch(z){E.error(z);return}if(q){E.complete();return}let H;try{H=V.value}catch(z){E.error(z);return}E.next(H),T(E,A)},V=>{E.error(V)})},q=!1;return new v(E=>{if(E.signal.aborted)return;let A;try{A=a(f,!0)}catch(V){E.error(V);return}let M=A;E.signal.aborted||(E.signal.addEventListener("abort",()=>{if(typeof M.return!="function"||q)return;r(()=>M.return(E.signal.reason)).then(H=>{if(H===null||typeof H!="object")throw new TypeError("Iterator .return() must return an Object")})}),T(E,M))})}if(typeof(Symbol.iterator in f&&f[Symbol.iterator])=="function")return new v(q=>{if(q.signal.aborted)return;let T;try{T=a(f,!1)}catch(M){q.error(M);return}let E=!1,A=T;if(!q.signal.aborted)for(q.signal.addEventListener("abort",()=>{if(typeof A.return!="function"||E)return;let M=A.return();if(M===null||typeof M!="object")throw new TypeError("Iterator .return() must return an Object")});;)try{let M=A.next();if({done:E}=M,E){q.complete();return}if(q.next(M.value),q.signal.aborted)break}catch(M){q.error(M);break}});if(f instanceof Promise||typeof f.then=="function")return new v(q=>{f.then(T=>{q.next(T),q.complete()},T=>{q.error(T)})});throw new TypeError("Could not convert value to Observable")}subscribe(f=null,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");m(this,f,u)}takeUntil(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let u=this,g=v.from(f);return new v(q=>{let T=new p({next(){q.complete()},error(){q.complete()}}),E={signal:q.signal};if(m(g,T,E),!q.active)return;let A=new p({next(M){q.next(M)},error(M){q.error(M)},complete(){q.complete()}});m(u,A,E)})}map(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=new p({next(A){let M;try{M=f(A,q)}catch(V){g.error(V);return}q+=1,g.next(M)},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}inspect(f={}){let u=null,g=null,q=null,T=null,E=null;typeof f=="function"?g=f:f&&typeof f=="object"&&("subscribe"in f&&(u=f.subscribe),"next"in f&&(g=f.next),"error"in f&&(q=f.error),"complete"in f&&(T=f.complete),"abort"in f&&(E=f.abort));let A=this;return new v(M=>{if(u!==null)try{u()}catch(F){M.error(F);return}let V=()=>{try{E!==null&&E(M.signal.reason)}catch(F){To(F)}};M.signal.addEventListener("abort",V,{once:!0});let H=new p({next(F){if(g!==null)try{g(F)}catch(se){M.signal.removeEventListener("abort",V),M.error(se);return}M.next(F)},error(F){if(M.signal.removeEventListener("abort",V),q!==null)try{q(F)}catch(se){M.error(se);return}M.error(F)},complete(){if(M.signal.removeEventListener("abort",V),T!==null)try{T()}catch(F){M.error(F);return}M.complete()}}),z={signal:M.signal};m(A,H,z)})}filter(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=new p({next(A){let M=!1;try{M=f(A,q)}catch(V){g.error(V);return}q+=1,M&&g.next(A)},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}take(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let u=this;return new v(g=>{let q=f;if(q==0)return g.complete();let T=new p({next(A){g.next(A),q-=1,q==0&&g.complete()},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}drop(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let u=this;return new v(g=>{let q=f,T=new p({next(A){if(q>0)return q-=1;q==0&&g.next(A)},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}flatMap(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=!1,E=[];function A(z){let F;try{F=f(z,q)}catch(Ve){return g.error(Ve)}q+=1;let se;try{se=v.from(F)}catch(Ve){return g.error(Ve)}let Ko=new p({next(Ve){g.next(Ve)},error(Ve){g.error(Ve)},complete(){if(E.length){let Ve=E.shift();A(Ve)}else M=!1,T&&g.complete()}}),Se={signal:g.signal};m(se,Ko,Se)}let M=!1,V=new p({next(z){M?E.push(z):(M=!0,A(z))},error(z){g.error(z)},complete(){T=!0,!M&&!E.length&&g.complete()}}),H={signal:g.signal};m(u,V,H)})}switchMap(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=!1,E=null;function A(H){let z;try{z=f(H,q)}catch(Se){return g.error(Se)}q+=1;let F;try{F=v.from(z)}catch(Se){return g.error(Se)}let se=new p({next(Se){g.next(Se)},error(Se){g.error(Se)},complete(Se){T?g.complete():E=null}}),Ko={signal:c([E.signal,g.signal])};m(F,se,Ko)}let M=new p({next(H){E&&E.abort(),E=new $e,A(H)},error(H){g.error(H)},complete(){T=!0,E||g.complete()}}),V={signal:g.signal};m(u,M,V)})}catch(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(q=>{let T=new p({next(A){q.next(A)},error(A){let M;try{M=f(A)}catch(F){q.error(F);return}let V;try{V=v.from(M)}catch(F){q.error(F);return}let H=new p({next(F){q.next(F)},error(F){q.error(F)},complete(){q.complete()}}),z={signal:q.signal};m(V,H,z)},complete(){q.complete()}}),E={signal:q.signal};m(u,T,E)})}finally(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{g.addTeardown(f);let q=new p({next(E){g.next(E)},error(E){g.error(E)},complete(){g.complete()}}),T={signal:g.signal};m(u,q,T)})}toArray(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:u,resolve:g,reject:q}=e();if(f.signal){if(f.signal.aborted)return Promise.reject(f.signal.reason);f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let T=[],E=new p({next(A){T.push(A)},error(A){q(A)},complete(){g(T)}});return m(this,E,f),u}forEach(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){try{f(H,M)}catch(z){T(z),E.abort(z)}M+=1},error(H){T(H)},complete(){q()}});return m(this,V,A),g}every(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){let z=!1;try{z=f(H,M)}catch(F){T(F),E.abort(F)}M+=1,z||(q(!1),E.abort())},error(H){T(H)},complete(){q(!0)}});return m(this,V,A),g}first(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:u,resolve:g,reject:q}=e(),T=new $e,E={signal:c([T.signal,f.signal])};if(E.signal.aborted)return q(E.signal.reason),u;E.signal.addEventListener("abort",()=>{q(E.signal.reason)});let A=new p({next(M){g(M),T.abort()},error(M){q(M)},complete(){q(new RangeError("No values in Observable"))}});return m(this,A,E),u}last(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:u,resolve:g,reject:q}=e();if(f.signal){if(f.signal.aborted)return q(f.signal.reason),u;f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let T=null,E=!1,A=new p({next(M){E=!0,T=M},error(M){q(M)},complete(){E?g(T):q(new RangeError("No values in Observable"))}});return m(this,A,f),u}find(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){let z=!1;try{z=f(H,M)}catch(F){T(F),E.abort(F)}M+=1,z&&(q(H),E.abort())},error(H){T(H)},complete(){q()}});return m(this,V,A),g}some(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){let z=!1;try{z=f(H,M)}catch(F){T(F),E.abort(F)}M+=1,z&&(q(!0),E.abort())},error(H){T(H)},complete(){q(!1)}});return m(this,V,A),g}reduce(f,u,g={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:q,resolve:T,reject:E}=e(),A=new $e,M={signal:c([A.signal,g.signal])};if(M.signal.aborted)return E(M.signal.reason),q;M.signal.addEventListener("abort",()=>{E(M.signal.reason)},{once:!0});let V=0,H=arguments.length>1?u:Os,z=new p({next(F){if(H===Os){H=F,V++;return}try{let se=f(H,F,V);V++,H=se}catch(se){E(se),A.abort(se);return}},error(F){E(F)},complete(){H!==Os?T(H):E(new TypeError("no initial value provided and no values emitted"))}});return m(this,z,M),q}}return s(v.prototype,"subscribe"),[v,y]})();function vl(){return typeof globalThis.Observable=="function"}function yl(){Object.defineProperties(globalThis,{Observable:{value:bl,configurable:!0,writable:!0},Subscriber:{value:Zc,configurable:!0,writable:!0}}),EventTarget.prototype.when=function(s,r={}){if($t()&&!dt(document))return;let e=this;return new bl(t=>{if(!e||t.signal.aborted)return;let i=o=>{t.next(o)};e.addEventListener(s,i,{capture:r.capture||!1,passive:r.passive,once:!1,signal:t.signal})})}}function Vs(s,r,e){let t=s.filter(i=>!i.hasAttribute("disabled"));for(let i of t){let o=i.getBoundingClientRect();if(r>=o.left&&r<=o.right&&e>=o.top&&e<=o.bottom)return i}return null}function xl(s,r,e,t){if(!t)return null;let i=s.filter(n=>!n.hasAttribute("disabled")),o=t.getBoundingClientRect();for(let n of i){let a=n.getBoundingClientRect();if(!(o.right<a.left||o.left>a.right||o.bottom<a.top||o.top>a.bottom))return n}return null}function ql(s,r,e,t){let i=s.filter(c=>!c.hasAttribute("disabled"));if(i.length===0)return null;let o,n;if(t){let c=t.getBoundingClientRect();o=c.left+c.width/2,n=c.top+c.height/2}else o=r,n=e;let a=null,l=1/0;for(let c of i){let p=c.getBoundingClientRect(),h=p.left+p.width/2,m=p.top+p.height/2,y=Math.sqrt(Math.pow(o-h,2)+Math.pow(n-m,2));y<l&&(l=y,a=c)}return a}function wl(s,r,e,t){let i=s.filter(l=>!l.hasAttribute("disabled"));if(i.length===0)return null;let o;if(t){let l=t.getBoundingClientRect();o=[{x:l.left,y:l.top},{x:l.right,y:l.top},{x:l.left,y:l.bottom},{x:l.right,y:l.bottom}]}else o=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let n=null,a=1/0;for(let l of i){let c=l.getBoundingClientRect(),p=[{x:c.left,y:c.top},{x:c.right,y:c.top},{x:c.left,y:c.bottom},{x:c.right,y:c.bottom}],h=0,m=0;for(let v of o)for(let w of p){let f=Math.sqrt(Math.pow(v.x-w.x,2)+Math.pow(v.y-w.y,2));h+=f,m++}let y=h/m;y<a&&(a=y,n=l)}return n}function ed(s,r,e,t,i){let o=i&&i.length>0?s.filter(u=>i.includes(u)):s.filter(u=>u.tagName==="SLOT"&&u.hasAttribute("part")&&u.getAttribute("part")?.includes("drags")),a=s.filter(u=>!o.includes(u));if(o.length===0&&a.length===0)return null;let l;if(t){let u=t.getBoundingClientRect();l=[{x:u.left,y:u.top},{x:u.right,y:u.top},{x:u.left,y:u.bottom},{x:u.right,y:u.bottom}]}else l=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let c=u=>{let g=u.getBoundingClientRect(),q=[{x:g.left,y:g.top},{x:g.right,y:g.top},{x:g.left,y:g.bottom},{x:g.right,y:g.bottom}],T=0,E=0;for(let A of l)for(let M of q){let V=Math.sqrt(Math.pow(A.x-M.x,2)+Math.pow(A.y-M.y,2));T+=V,E++}return T/E},p=null,h=1/0;for(let u of o){let g=c(u);g<h&&(h=g,p=u)}let m=null,y=1/0;for(let u of a){let g=c(u);g<y&&(y=g,m=u)}if(p&&t){let u=t.getBoundingClientRect(),g=p.getBoundingClientRect(),q=u.left+u.width/2,T=u.top+u.height/2;if(q>=g.left&&q<=g.right&&T>=g.top&&T<=g.bottom)return p}let w=t?.getAttribute("data-drag-origin")==="droppable"?.85:1.5;return p&&m?h<=y*w?p:m:p||m}function Cl(s){switch(s){case"pointerWithin":return Vs;case"rectangleIntersection":return xl;case"closestCenter":return ql;case"closestCorners":return wl;case"closestCornersWithInventoryPriority":return ed;default:return Vs}}function gr(s,r,e,t,i="pointerWithin",o){return Cl(i)(s,r,e,t,o)}function pt(s,r){let e=s.composedPath?s.composedPath():[s.target];for(let t of e)if(t instanceof HTMLElement&&t.tagName!=="SLOT"){if(t.matches(r)||t.hasAttribute("qti-draggable"))return t;let i=t.closest(r)||t.closest('[qti-draggable="true"]');if(i)return i}return null}function Ao(s,r){let e=[];return s.forEach(t=>{let i=[];t.tagName.toLowerCase()==="slot"?i=t.assignedElements({flatten:!0}).filter(a=>a.getAttribute("identifier")===r):i=Array.from(t.querySelectorAll(`[identifier="${r}"]`)),e.push(...i)}),e}function El(s,r){let e=s.find(i=>i.getAttribute("identifier")===r);if(!e)return 1;let t=e.getAttribute("match-max");return t?parseInt(t,10)||0:1}function Sl(s,r){let e=parseInt(s.getAttribute("match-max")||"1",10),t=Number.isNaN(e)?1:e;if(t===0)return!1;let i=s.querySelectorAll(r),o=s.querySelectorAll('[qti-draggable="true"]');return Math.max(i.length,o.length)>=t}function Ci(s,r){return s.reduce((e,t)=>{let i=t.querySelectorAll(r).length,o=t.querySelectorAll('[qti-draggable="true"]').length;return e+Math.max(i,o)},0)}function Io(s,r){return s.map(e=>{let i=Array.from(e.querySelectorAll(r)).map(n=>n.getAttribute("identifier")).filter(n=>!!n),o=e.getAttribute("identifier");return i.map(n=>`${n} ${o}`)}).flat()}function Tl(s,r,e,t=typeof window<"u"?window:null){if(!s.length||!r.length||!t)return;let i=0,o=0;s.forEach(c=>{let p=c.getBoundingClientRect();i=Math.max(i,p.height),o=Math.max(o,p.width)});let n=r[0].parentElement,a=r[0].tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE",l=r[0].tagName==="QTI-GAP";if(a&&n){let c;if(n.clientWidth>0){let p=t.getComputedStyle(n),h=parseFloat(p.paddingLeft),m=parseFloat(p.paddingRight);c=n.clientWidth-h-m}else c=Math.min(t.innerWidth*.8,600);n.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${c}px, ${o}px + 2 * var(--qti-dropzone-padding, 0.5rem))), 1fr))`}r.forEach(c=>{c.style.minHeight=`${i}px`,(a||l)&&(c.style.minWidth=`${o}px`);let p=c.shadowRoot?.querySelector('slot[part="dropslot"]');p&&(p.style.minHeight=`${i}px`)}),e.forEach(c=>{c.style.minHeight=`${i}px`})}vl()||yl();var Al=new WeakSet;function td(s){!s||Al.has(s)||(s.addEventListener("touchmove",()=>{},{capture:!1,passive:!1}),Al.add(s))}var ko=(s,r,e,t='slot[part="drags"]',i="pointerWithin")=>{class o extends s{constructor(){super(...arguments);this.trackedDraggables=[];this.trackedDroppables=[];this.trackedDragContainers=[];this.allDropzones=[];this.collisionDetectionAlgorithm=i;this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null};this.subscriptions=[];this.dragSubscriptions=[];this.lastPointerDownAt=0;this.lastTouchStartAt=0}connectedCallback(){super.connectedCallback(),td(this.ownerDocument?.defaultView),this.setupDragDrop()}disconnectedCallback(){super.disconnectedCallback(),this.cleanup()}async setupDragDrop(){await this.updateComplete,this.cacheInteractiveElements(),this.afterCache(),this.setupDragObservables()}afterCache(){}cacheInteractiveElements(){let l=(u,g)=>Array.from(g?.querySelectorAll(u)??[]),c=l(r,this),p=l(r,this.shadowRoot),h=l('[qti-draggable="true"]:not([data-drag-clone])',this),m=l('[qti-draggable="true"]:not([data-drag-clone])',this.shadowRoot);this.trackedDraggables=Array.from(new Set([...c,...p,...h,...m]));let y=l(e,this),v=l(e,this.shadowRoot);this.trackedDroppables=Array.from(new Set([...y,...v]));let w=l(t,this),f=l(t,this.shadowRoot);this.trackedDragContainers=Array.from(new Set([...w,...f])),this.allDropzones=[...this.trackedDroppables,...this.trackedDragContainers],this.trackedDraggables.forEach(u=>{u.style.cursor="grab",u.style.userSelect="none",u.style.touchAction="none",u.style.webkitUserSelect="none",u.style.webkitTouchCallout="none",u.setAttribute("qti-draggable","true"),u.setAttribute("tabindex","0")})}setupDragObservables(){let l=this.shadowRoot;if(!l){console.error("\u274C [Observable DnD] No shadow root found!");return}let c=l.when("pointerdown").filter(v=>{if(!v.isTrusted)return!1;let w=pt(v,r),f=this.disabled||this.readonly,u=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",g=Date.now()-this.lastTouchStartAt<50;return w&&v.isPrimary!==!1&&v.button===0&&!f&&!u&&!g}).subscribe(v=>{this.lastPointerDownAt=Date.now();let w=pt(v,r);if(!w){console.warn("\u26A0\uFE0F [Observable DnD] No draggable target found");return}v.pointerType==="touch"&&(v.preventDefault(),v.stopPropagation());let f=v.isTrusted?v.pointerType==="touch"?100:10:0;if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),f===0){this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted);return}let u=()=>{this.dragState.activationTimeout&&(clearTimeout(this.dragState.activationTimeout),this.dragState.activationTimeout=void 0),document.removeEventListener("pointerup",u,!0),document.removeEventListener("pointercancel",u,!0)};document.addEventListener("pointerup",u,{once:!0,capture:!0}),document.addEventListener("pointercancel",u,{once:!0,capture:!0}),this.dragState.activationTimeout=window.setTimeout(()=>{this.dragState.activationTimeout=void 0,document.removeEventListener("pointerup",u,!0),document.removeEventListener("pointercancel",u,!0),this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted)},f)}),p=l.when("mousedown").filter(v=>{let w=pt(v,r),f=this.disabled||this.readonly,u=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",g=v.button===0,q=Date.now()-this.lastPointerDownAt<50;return w&&g&&!f&&!u&&!q}).subscribe(v=>{let w=pt(v,r);!w||this.dragState.dragging||(v.preventDefault(),this.initiateDrag(w,v.clientX,v.clientY,"mouse","mouse",void 0,v.isTrusted))}),h=l.when("touchstart").filter(v=>{let w=pt(v,r),f=this.disabled||this.readonly,u=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",g=!!(v.touches?.[0]||v.changedTouches?.[0]),q=Date.now()-this.lastPointerDownAt<50;return w&&g&&!f&&!u&&!q}).subscribe(v=>{let w=pt(v,r),f=v.touches?.[0]||v.changedTouches?.[0];!w||!f||this.dragState.dragging||(this.lastTouchStartAt=Date.now(),v.preventDefault(),v.stopPropagation(),this.initiateDrag(w,f.clientX,f.clientY,"touch","touch",void 0,v.isTrusted))}),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null},y=l.when("keydown").subscribe(v=>{let w=this.trackedDraggables.filter(u=>u.style.opacity!=="0"),f=[...this.trackedDroppables,...this.trackedDragContainers];if(m.dragging)switch(v.code){case"ArrowRight":case"ArrowDown":{v.preventDefault();let u=(m.dropIndex+1)%f.length;m={...m,dropIndex:u,dropElement:f[u]};break}case"ArrowLeft":case"ArrowUp":{v.preventDefault();let u=(m.dropIndex-1+f.length)%f.length;m={...m,dropIndex:u,dropElement:f[u]};break}case"Space":case"Enter":case"Tab":{v.preventDefault(),m.dragElement&&m.dropElement&&(this.allowDrop(m.dragElement,m.dropElement)||this.trackedDragContainers.includes(m.dropElement)?this.handleDrop(m.dragElement,m.dropElement):this.handleInvalidDrop(m.dragElement)),this.trackedDraggables.forEach(u=>u.removeAttribute("data-keyboard-dragging")),this.saveResponse(),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}case"Escape":{v.preventDefault(),this.trackedDraggables.forEach(u=>u.removeAttribute("data-keyboard-dragging")),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}}else{let u=pt(v,r),g=this.disabled||this.readonly,q=u?.hasAttribute("disabled")||u?.getAttribute("aria-disabled")==="true";u&&["Space","Enter"].includes(v.code)&&!g&&!q&&(v.preventDefault(),u.setAttribute("data-keyboard-dragging","true"),m={dragging:!0,dragElement:u,dragIndex:w.indexOf(u),dropIndex:0,dropElement:f[0]})}this.allDropzones.forEach(u=>u.removeAttribute("hover")),m.dragging&&m.dropElement&&(m.dropElement.setAttribute("hover",""),m.dropElement.hasAttribute("tabindex")&&m.dropElement.getAttribute("tabindex")!=="-1"&&m.dropElement.focus())});this.subscriptions.push(c,p,h,y)}initiateDrag(l,c,p,h,m="pointer",y,v){if(this.dragState.dragging){console.warn("\u26A0\uFE0F [Observable DnD] Already dragging, ignoring initiateDrag");return}if(l.hasAttribute("data-drag-clone")){console.warn("\u26A0\uFE0F [Observable DnD] Attempted to drag visual clone, ignoring");return}let w=this.trackedDroppables.some(g=>g.contains(l)),f=this.trackedDroppables.find(g=>g.contains(l))||null,u=l.getBoundingClientRect();this.dragState={dragging:!0,dragSource:l,dragClone:this.createDragClone(l,u),startOffset:{x:c-u.left,y:p-u.top},currentTarget:null,sourceDroppable:f,inputType:h,pointerId:y,startedFromTrustedEvent:v,initialCoordinates:{x:c,y:p}},w?(this.dragState.dragClone?.setAttribute("data-drag-origin","droppable"),l.remove(),this.cacheInteractiveElements(),f&&f.setAttribute("data-drag-source","true")):(this.dragState.dragClone?.setAttribute("data-drag-origin","inventory"),l.style.opacity="0",l.style.pointerEvents="none"),this.updateClonePosition(c,p),this.activateAllDroppables(),this.setupMoveObservables(h,m)}setupMoveObservables(l,c="pointer"){if(l==="touch"){if(c==="pointer")try{let T=this.dragState.dragSource,E=this.dragState.pointerId;T&&E!==void 0&&T.setPointerCapture&&T.setPointerCapture(E)}catch{}let g=T=>{T.cancelable&&(T.preventDefault(),c==="pointer"&&T.stopPropagation())};document.addEventListener("touchmove",g,{passive:!1,capture:!0}),document.addEventListener("touchstart",g,{passive:!1,capture:!0}),document.addEventListener("touchend",g,{passive:!1,capture:!0}),document.addEventListener("gesturestart",g,{passive:!1}),document.addEventListener("gesturechange",g,{passive:!1}),document.addEventListener("gestureend",g,{passive:!1});let q=()=>{if(document.removeEventListener("touchmove",g,{capture:!0}),document.removeEventListener("touchstart",g,{capture:!0}),document.removeEventListener("touchend",g,{capture:!0}),document.removeEventListener("gesturestart",g),document.removeEventListener("gesturechange",g),document.removeEventListener("gestureend",g),c==="pointer")try{let T=this.dragState.dragSource,E=this.dragState.pointerId;T&&E!==void 0&&T.releasePointerCapture&&T.releasePointerCapture(E)}catch{}};this.dragState.touchCleanup=q}let p=c==="mouse"?"mousemove":c==="touch"?"touchmove":"pointermove",h=c==="mouse"?"mouseup":c==="touch"?"touchend":"pointerup",m=g=>{let q=this.dragState.startedFromTrustedEvent;return q===void 0||g.isTrusted===q},y=document.when(p).takeUntil(document.when(h)).subscribe({next:g=>{if(m(g)){if(g.preventDefault(),g.stopPropagation(),c==="touch"){let q=g.touches?.[0]||g.changedTouches?.[0];if(!q)return;this.handleDragMove(q.clientX,q.clientY);return}if(c==="mouse"){let q=g;if(typeof q.buttons=="number"&&(q.buttons&1)!==1)return}this.handleDragMove(g.clientX,g.clientY)}}}),v=document.when(h).subscribe({next:g=>{m(g)&&(g.preventDefault(),g.stopPropagation(),this.handleDragEnd())}}),w=c==="touch"?document.when("touchcancel").subscribe({next:g=>{m(g)&&this.handleDragEnd()}}):c==="mouse"?null:document.when("pointercancel").subscribe({next:g=>{m(g)&&this.handleDragEnd()}}),f=document.when("keydown").filter(g=>g.key==="Escape").subscribe({next:g=>{m(g)&&this.handleDragEnd()}}),u=[y,v,f];w&&u.push(w),this.dragSubscriptions.push(...u)}handleDragMove(l,c){if(!this.dragState.dragging||!this.dragState.dragClone)return;this.updateClonePosition(l,c);let p=gr(this.allDropzones,l,c,this.dragState.dragClone,this.collisionDetectionAlgorithm,this.trackedDragContainers),h=Date.now(),m=h-(this.dragState.lastTargetChangeTime||0);p!==this.dragState.currentTarget&&(p===null||m>=50)&&(this.allDropzones.forEach(v=>v.removeAttribute("hover")),p&&p.setAttribute("hover",""),this.dragState.currentTarget=p,this.dragState.lastTargetChangeTime=h)}handleDragEnd(){if(!this.dragState.dragging)return;let{dragSource:l,dragClone:c,currentTarget:p,sourceDroppable:h}=this.dragState,m=p;if(!m&&c){let f=c.getBoundingClientRect(),u=this.dragState.initialCoordinates?.x??f.left+f.width/2,g=this.dragState.initialCoordinates?.y??f.top+f.height/2;m=gr(this.allDropzones,u,g,c,this.collisionDetectionAlgorithm,this.trackedDragContainers)}let y=m?.hasAttribute("disabled")&&m.hasAttribute("data-drag-source");!!l&&!!m&&this.allowDrop(l,m)&&(!m.hasAttribute("disabled")||y)&&l&&m?this.handleDrop(l,m):this.handleInvalidDrop(l),c&&c.remove(),this.dragState.touchCleanup&&this.dragState.touchCleanup(),this.resetDragState(),this.deactivateAllDroppables(),this.saveResponse(),h&&h.removeAttribute("data-drag-source"),this.cacheInteractiveElements();let w=this.checkAllMaxAssociations;typeof w=="function"&&w.call(this)}allowDrop(l,c){return this.trackedDroppables.includes(c)||this.trackedDragContainers.includes(c)}handleInvalidDrop(l){l&&(l.style.opacity="1.0",l.style.pointerEvents="auto")}createDragClone(l,c){let p=l.cloneNode(!0),h=window.getComputedStyle(l);for(let m=0;m<h.length;m++){let y=h[m];p.style.setProperty(y,h.getPropertyValue(y))}return p.style.position="fixed",p.style.width=`${c.width}px`,p.style.height=`${c.height}px`,p.style.zIndex="9999",p.style.pointerEvents="none",p.style.touchAction="none",p.style.userSelect="none",p.style.opacity="0.8",p.removeAttribute("qti-draggable"),p.removeAttribute("tabindex"),p.setAttribute("data-drag-clone","true"),document.body.appendChild(p),p}updateClonePosition(l,c){if(!this.dragState.dragClone)return;let{startOffset:p}=this.dragState,h=l-p.x,m=c-p.y;this.dragState.dragClone.style.left=`${h}px`,this.dragState.dragClone.style.top=`${m}px`}activateAllDroppables(){this.setInternalsState("--dragzone-enabled",!0),this.setInternalsState("--dragzone-active",!0),this.allDropzones.forEach(l=>{l.setAttribute("enabled",""),l.setAttribute("active","")})}deactivateAllDroppables(){this.setInternalsState("--dragzone-enabled",!1),this.setInternalsState("--dragzone-active",!1),this.allDropzones.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active"),l.removeAttribute("hover")})}resetDragState(){if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),this.dragState.touchCleanup)try{this.dragState.touchCleanup()}catch(l){console.warn("\u26A0\uFE0F [Observable DnD] Error during touch cleanup:",l)}this.dragSubscriptions.forEach(l=>{try{l&&typeof l.unsubscribe=="function"&&l.unsubscribe()}catch(c){console.warn("\u26A0\uFE0F [Observable DnD] Error unsubscribing:",c)}}),this.dragSubscriptions=[],this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null,pointerId:void 0,startedFromTrustedEvent:void 0,touchCleanup:void 0}}setInternalsState(l,c){let p=this._internals;p?.states&&(c?p.states.add(l):p.states.delete(l))}cleanup(){this.subscriptions.forEach(l=>{try{l.unsubscribe()}catch{}}),this.subscriptions=[],this.dragState.dragClone&&this.dragState.dragClone.remove(),this.resetDragState()}}return o};var Il={duration:250,easing:"ease",fill:"both"};function Ns(s){let r=s.getBoundingClientRect();return{left:r.left,top:r.top,width:r.width,height:r.height}}function ut(s){let r=new Map;return s.forEach(e=>{r.set(e,Ns(e))}),r}function kl(s,r){return{deltaX:s.left-r.left,deltaY:s.top-r.top,deltaW:s.width/r.width,deltaH:s.height/r.height}}function Ml(s,r,e={}){let t=Ns(s),{deltaX:i,deltaY:o,deltaW:n,deltaH:a}=kl(r,t);if(i===0&&o===0&&n===1&&a===1)return null;let{duration:l,easing:c,fill:p}={...Il,...e};return s.animate([{transformOrigin:"top left",transform:`translate(${i}px, ${o}px) scale(${n}, ${a})`},{transformOrigin:"top left",transform:"none"}],{duration:l,easing:c,fill:p})}function mt(s,r={}){let e=new Map;return s.forEach((t,i)=>{if(!(i instanceof HTMLElement))return;let o=Ml(i,t,r);o&&e.set(i,o)}),e}var we=(s,r,e,t='slot[part="drags"]',i="closestCornersWithInventoryPriority")=>{let o=ko(s,r,e,t,i);class n extends o{constructor(){super(...arguments);this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this._maxAssociations=0;this._maxAssociationsDefaultApplied=!1;this._response=[];this._dropBlockedDueToMax=!1;this.flipAnimationConfig={duration:200,easing:"ease"};this._enableFlipAnimations=!0;this.autoSizeDropzones=!1}get maxAssociations(){if(!this._maxAssociationsDefaultApplied){this._maxAssociationsDefaultApplied=!0;let c=this.tagName?.toLowerCase()||"";(c==="qti-graphic-gap-match-interaction"||c==="qti-gap-match-interaction")&&!this.hasAttribute("max-associations")&&this._maxAssociations===0&&(this._maxAssociations=1)}return this._maxAssociations}set maxAssociations(c){let p=this._maxAssociations;this._maxAssociations=c,this.requestUpdate("maxAssociations",p)}set disableAnimations(c){this._enableFlipAnimations=!c}get disableAnimations(){return!this._enableFlipAnimations}get enableFlipAnimations(){return this._enableFlipAnimations}get response(){let c=this.getResponse,p=typeof c=="function"?c.call(this):void 0;return(Array.isArray(p)?p:(this.cacheInteractiveElements(),Io(this.trackedDroppables,r))).join(",")}set response(c){if(Array.isArray(c)){let p=this.getValue,h=typeof p=="function"?p.call(this,c):c,m=Array.isArray(h)?h:typeof h=="string"&&h.length>0?[h]:[];this.reset(!1),m.forEach(w=>this.placeResponse(w));let y=this.getResponse,v=typeof y=="function"?y.call(this):void 0;this._response=Array.isArray(v)?v:(this.cacheInteractiveElements(),Io(this.trackedDroppables,r))}else this._response=typeof c=="string"&&c.length>0?[c]:[];this._internals.setFormValue(JSON.stringify(this._response))}afterCache(){this.applyConfiguredChoicesContainerWidth(),this.updateMinDimensionsForDropZones()}applyConfiguredChoicesContainerWidth(){let c=this.dataset.choicesContainerWidth;c&&this.trackedDroppables.forEach(p=>{p.style.width=`${c}px`,p.style.boxSizing="border-box"})}shouldTreatBlockedMaxAsInvalid(){return!0}shouldReturnToInventoryOnInventoryDrop(){return!1}getFirstMessageAttribute(c){for(let h of c){let m=this.getAttribute(h);if(m&&m.trim().length>0)return m}let p=c.map(h=>h.toLowerCase());for(let h of Array.from(this.attributes))if(p.includes(h.name.toLowerCase())&&h.value.trim().length>0)return h.value;return null}allowDrop(c,p){if(this.trackedDragContainers.includes(p))return!0;let h=this.trackedDroppables.includes(p),m=p.hasAttribute("disabled"),y=p.hasAttribute("data-drag-source");return h&&(!m||y)}handleDrop(c,p){let h=this.dragState.dragClone?.getBoundingClientRect();this.dropDraggableInDroppable(c,p,h);let m=c.getAttribute("identifier");m&&this.updateInventoryBasedOnMatchMax(m);let y=Ci(this.trackedDroppables,r);this.maxAssociations>0&&y>this.maxAssociations&&(this._dropBlockedDueToMax=!0,this.validate(),this.reportValidity())}handleInvalidDrop(c){let p=this.dragState.sourceDroppable,h=this.dragState.currentTarget,m=!h,y=this.trackedDragContainers[0]||null;if(!c)return;p&&m&&y&&this.configuration.dragCanBePlacedBack!==!1?this.dropDraggableInDroppable(c,y):p&&this.trackedDroppables.includes(p)?this.dropDraggableInDroppable(c,p):c.style.opacity==="0"&&(this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations());let v=Ci(this.trackedDroppables,r),w=this.maxAssociations>0&&v>=this.maxAssociations,f=!!h&&h.hasAttribute("disabled")&&!h.hasAttribute("data-drag-source");this._dropBlockedDueToMax=f&&w,this.validate(),this.reportValidity()}updateMinDimensionsForDropZones(){this.trackedDraggables.length!==0&&Tl(this.trackedDraggables,this.trackedDroppables,this.trackedDragContainers)}restoreInventoryItem(c){c.style.opacity="1.0",c.style.display="",c.style.position="",c.style.pointerEvents="auto"}placeResponse(c){let[p,...h]=c.split(" ").reverse(),m=this.trackedDroppables.find(y=>y.getAttribute("identifier")===p);m&&h.forEach(y=>{if(!y)return;let w=Ao(this.trackedDragContainers,y).at(0)||this.trackedDraggables.find(f=>f.getAttribute("identifier")===y);w&&this.dropDraggableInDroppable(w,m)})}dropDraggableInDroppable(c,p,h){if(this.trackedDragContainers.includes(p)){if(!this.dragState.sourceDroppable){if(this.shouldReturnToInventoryOnInventoryDrop()){this.returnToInventory(c),this._dropBlockedDueToMax=!1,this.validate();return}this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let T=c.getAttribute("identifier");c.remove(),T&&this.restoreOriginalInInventory(T),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let y=parseInt(p.getAttribute("match-max")||"1",10),v=Number.isNaN(y)?1:y,w=v===0||v>1,f=Array.from(p.querySelectorAll('[qti-draggable="true"]')),u=this.enableFlipAnimations&&f.length>0?ut(f):null;if(!w){let T=p.querySelector(r)||p.querySelector('[qti-draggable="true"]');if(T){let E=T.getAttribute("identifier");T.remove(),E&&this.restoreOriginalInInventory(E)}}let g=c.cloneNode(!0);g.removeAttribute("style"),g.removeAttribute("data-keyboard-dragging"),g.setAttribute("qti-draggable","true"),g.setAttribute("tabindex","0"),p.tagName==="SLOT"?g.setAttribute("slot",p.getAttribute("name")||""):p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"?(g.setAttribute("slot","qti-simple-associable-choice"),p.appendChild(g),p.setAttribute("data-has-drop","true")):p.appendChild(g),u&&this.enableFlipAnimations&&mt(u,this.flipAnimationConfig),h&&this.enableFlipAnimations&&requestAnimationFrame(()=>{let T=g.getBoundingClientRect(),E=h.left-T.left,A=h.top-T.top;(E!==0||A!==0)&&g.animate([{transform:`translate(${E}px, ${A}px)`,opacity:.8},{transform:"translate(0, 0)",opacity:1}],{duration:this.flipAnimationConfig.duration||200,easing:this.flipAnimationConfig.easing||"ease",fill:"both"})});let q=c.getAttribute("identifier");q&&this.updateInventoryBasedOnMatchMax(q),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}returnToInventory(c){let p=c.getAttribute("identifier");p&&(this.trackedDroppables.forEach(h=>{Array.from(h.querySelectorAll(`[identifier="${p}"][qti-draggable="true"]`)).forEach(y=>{y.remove(),h.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&h.removeAttribute("data-has-drop")})}),this.restoreOriginalInInventory(p)),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}restoreOriginalInInventory(c){let p=Ao(this.trackedDragContainers,c),h=[];this.trackedDragContainers.forEach(y=>{h.push(...Array.from(y.querySelectorAll('[qti-draggable="true"]')))});let m=this.enableFlipAnimations&&h.length>0?ut(h):null;p.forEach(y=>{y.style.opacity="1.0",y.style.pointerEvents="auto",y.style.display="",y.style.visibility="visible",y.style.setProperty("opacity","1.0","important"),y.style.setProperty("pointer-events","auto","important")}),m&&this.enableFlipAnimations&&mt(m,this.flipAnimationConfig)}updateInventoryBasedOnMatchMax(c){let p=Ao(this.trackedDragContainers,c),h=El(this.trackedDraggables,c),m=this.trackedDroppables.reduce((y,v)=>{let w=v.querySelectorAll(`[identifier="${c}"]`);return y+w.length},0);p.forEach(y=>{h!==0&&m>=h?(y.style.opacity="0.0",y.style.pointerEvents="none"):(y.style.opacity="1.0",y.style.pointerEvents="auto")})}checkAllMaxAssociations(){let c=Ci(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations;this.trackedDroppables.forEach(h=>{let m=h.hasAttribute("data-drag-source"),y=Sl(h,r);(p||y)&&!m?h.setAttribute("disabled",""):h.removeAttribute("disabled")})}saveResponse(c){let p=this.getResponse,h=c??(typeof p=="function"?p.call(this):void 0),m=Array.isArray(h)?h:typeof h=="string"?[h]:(this.cacheInteractiveElements(),Io(this.trackedDroppables,r));this._response=m,this._internals.setFormValue(JSON.stringify(this._response)),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:m}})),this.requestUpdate()}reset(c=!0){this.trackedDroppables.forEach(p=>{Array.from(p.querySelectorAll(r)).forEach(m=>m.remove()),p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&p.removeAttribute("data-has-drop")}),this.trackedDraggables.forEach(p=>{let h=p.getAttribute("identifier");h&&this.restoreOriginalInInventory(h)}),this.resetDragState(),this.cacheInteractiveElements(),this._response=[],this._internals.setFormValue(JSON.stringify(this._response)),c&&this.saveResponse()}validate(){let c=Ci(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations,h=this.maxAssociations>0&&c>this.maxAssociations,m=this.minAssociations>0&&c<this.minAssociations,y="",v=!0;h?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,v=!1):p&&this._dropBlockedDueToMax&&this.shouldTreatBlockedMaxAsInvalid()?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,v=!1):m?(y=this.getFirstMessageAttribute(["data-min-associations-message","data-min-selections-message"])||this.dataset.minAssociationsMessage||this.dataset.minSelectionsMessage||`Please select at least ${this.minAssociations} ${this.minAssociations===1?"association":"associations"}.`,v=!1,this._dropBlockedDueToMax=!1):this._dropBlockedDueToMax=!1;let w=this.trackedDroppables[0]??this.trackedDraggables[0]??this;return this._internals.setValidity(v?{}:{customError:!0},y,w),v}reportValidity(){let c=this._internals.reportValidity(),p=this.shadowRoot?.querySelector("#validation-message");return p&&(c?(p.textContent="",p.style.display="none"):(p.textContent=this._internals.validationMessage,p.style.setProperty("display","block","important"))),c}}return d([b({attribute:!1,type:Object})],n.prototype,"configuration",2),d([b({type:Number,reflect:!0,attribute:"min-associations"})],n.prototype,"minAssociations",2),d([b({type:Number,reflect:!0,attribute:"max-associations"})],n.prototype,"maxAssociations",1),d([b({type:Boolean,attribute:"disable-animations"})],n.prototype,"disableAnimations",1),d([b({type:Boolean,attribute:"auto-size-dropzones"})],n.prototype,"autoSizeDropzones",2),n};var Mo=class{getInsertPosition(r,e,t,i,o){let n=r.indexOf(t);if(n===-1)return null;let a=t.getBoundingClientRect(),l=(o-a.top)/a.height,p=Math.min(1,Math.max(0,l))>.5;return{index:n,placeAfter:p}}};var Rl=new Mo;var rd={borderStyle:"2px dashed",borderColor:"var(--qti-drop-placeholder, #c1c1c1)",background:"transparent",transitionDuration:150};function Ei(){return{placeholder:null,lastHoverTarget:null,lastPlacement:null,sortContainer:null}}function Ro(s){s.placeholder?.remove(),s.placeholder=null,s.lastHoverTarget=null,s.lastPlacement=null,s.sortContainer=null}function _o(s,r,e={}){let t={...rd,...e},i=document.createElement("div");return i.setAttribute("data-drop-placeholder","true"),i.style.width=`${r.width}px`,i.style.height=`${r.height}px`,i.style.margin=window.getComputedStyle(s).margin,i.style.boxSizing="border-box",i.style.border=`${t.borderStyle} ${t.borderColor}`,i.style.borderRadius=getComputedStyle(s).borderRadius,i.style.background=t.background,i.style.transition=`transform ${t.transitionDuration}ms ease`,i.style.pointerEvents="none",i}function Hs(s,r){for(let e of r)if(e.contains(s)&&e!==s)return e;return null}var Ce=(s,r='[qti-draggable="true"]')=>{class e extends s{constructor(){super(...arguments);this.#e=null;this.#t=Ei();this.#r={hoveredSlot:null,originalPositions:new Map};this.#i=new Set;this.allowReorder=!0;this.sortablePlaceholderConfig={};this.sortableAnimationConfig={duration:150,easing:"ease"}}#e;#t;#r;#i;get isDraggingFromSlot(){return this.#e!==null}findContainingDroppable(o){return Hs(o,this.trackedDroppables)}#o(o){return o.querySelector(r)}#s(o){let n=this.#n(o);return n===0||n>1}#n(o){let n=parseInt(o.getAttribute("match-max")||"1",10);return Number.isNaN(n)?1:n}#a(o){return o.querySelectorAll(r).length}#c(o){let n=this.#n(o);return n===0?!1:this.#a(o)>=n}#d(){this.#r={hoveredSlot:null,originalPositions:new Map}}#l(o){if(!this.#e||o===this.#e){this.#u();return}if(this.#r.hoveredSlot===o)return;this.#u();let n=this.#o(o);if(!n){this.#t.placeholder&&o.appendChild(this.#t.placeholder),this.#r.hoveredSlot=o;return}if(this.#s(o)){if(this.#c(o)){this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),this.#r.hoveredSlot=null;return}this.#t.placeholder&&o.appendChild(this.#t.placeholder),this.#r.hoveredSlot=o;return}let l=ut([n]);this.#r.originalPositions.set(n,o),this.#t.placeholder&&this.#t.placeholder.parentElement&&this.#t.placeholder.remove(),this.#e.appendChild(n),this.#t.placeholder&&o.appendChild(this.#t.placeholder),this.#r.hoveredSlot=o,mt(l,this.sortableAnimationConfig)}#u(){if(this.#r.originalPositions.size===0&&this.#r.hoveredSlot===null)return;let o=Array.from(this.#r.originalPositions.keys()),n=o.length>0?ut(o):null;for(let[a,l]of this.#r.originalPositions)l.appendChild(a);this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),n&&mt(n,this.sortableAnimationConfig),this.#r.originalPositions.clear(),this.#r.hoveredSlot=null}initiateDrag(o,n,a,l,...c){this.#e=null,this.#t=Ei(),this.#d();let p=this.findContainingDroppable(o);if(p&&this.allowReorder){this.#e=p,this.#t.sortContainer=p;let m=o.getBoundingClientRect();this.#t.placeholder=_o(o,m,this.sortablePlaceholderConfig);let y=o.getAttribute("slot");y&&this.#t.placeholder.setAttribute("slot",y),this.#t.placeholder.style.visibility="hidden",p.appendChild(this.#t.placeholder),this.trackedDroppables.forEach(v=>{if(v!==p&&v.hasAttribute("disabled")){if(this.#s(v)&&this.#c(v))return;v.removeAttribute("disabled"),this.#i.add(v)}})}let[h]=c;super.initiateDrag(o,n,a,l,h)}cleanupSortableState(o=!0){if(o)for(let[n,a]of this.#r.originalPositions)a.appendChild(n);this.#t.placeholder&&this.#t.placeholder.remove(),Ro(this.#t),this.#i.clear(),this.#e=null,this.#d()}onSortableDragMove(o,n){if(!this.isDraggingFromSlot)return;let a=gr(this.trackedDroppables,o,n,this.dragState.dragClone,this.collisionDetectionAlgorithm);a?this.#l(a):this.#u()}handleDragMove(o,n){Object.getPrototypeOf(e.prototype).handleDragMove?.call(this,o,n),this.onSortableDragMove(o,n)}allowDrop(o,n){return this.isDraggingFromSlot&&this.trackedDroppables.includes(n)?this.#s(n)?!this.#c(n):!0:this.isDraggingFromSlot&&this.trackedDragContainers.includes(n)?!0:super.allowDrop(o,n)}handleDrop(o,n){super.handleDrop(o,n),this.cleanupSortableState(!1)}handleInvalidDrop(o){this.cleanupSortableState(),super.handleInvalidDrop(o)}}return e};var _l=S`
4023
+ <slot part="slot"></slot>`}};d([b({type:String,attribute:"template-identifier"})],ct.prototype,"templateIdentifier",2),d([b({type:String,attribute:"show-hide"})],ct.prototype,"showHide",2),d([b({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],ct.prototype,"fixed",2),d([b({type:String,attribute:!1})],ct.prototype,"marker",2);customElements.define("qti-simple-choice",ct);var{AbortController:$e,AbortSignal:$s,WeakMap:Yc,WeakRef:Kc,Window:gl,reportError:To=console.log}=globalThis,dt=n=>n&&n.defaultView!==null&&n.defaultView.document===n&&(n.defaultView.top===n.defaultView||dt(n.defaultView.parent.document)),$t=()=>!!gl&&globalThis instanceof gl,Os=Symbol("unset"),[bl,Zc]=(()=>{function n(w,f,u=!0){Object.defineProperty(w,f,{...Object.getOwnPropertyDescriptor(w,f),enumerable:u})}let i="try"in Promise?Promise.try.bind(Promise):(w,...f)=>new Promise(u=>u(w(...f))),e="withResolvers"in Promise?Promise.withResolvers.bind(Promise):()=>{let w,f;return{promise:new Promise((g,q)=>(w=g,f=q)),resolve:w,reject:f}};function t(w,f){let u=f.call(w);if(u===null||typeof u!="object")throw new TypeError("Iterator is not an object");return u}let r=new Yc,o={next(...w){let f=this,u=r.get(f);if(!u?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.next called on invalid object");let{syncIteratorRecord:g}=u;return i(()=>g.next(...w))},return(...w){let f=this,u=r.get(f);if(!u?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.return called on invalid object");let{syncIteratorRecord:g}=u;return i(()=>g.return?g.return(...w):{value:void 0,done:!0})},throw(...w){let f=this,u=r.get(f);if(!u?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.throw called on invalid object");let{syncIteratorRecord:g}=u;return i(()=>{if(!g.throw)throw g.return(),new TypeError("no throw method");return g.throw(...w)})}};function s(w){let f=Object.create(o);return r.set(f,{syncIteratorRecord:w}),f}function a(w,f){let u;if(f){if(u=w[Symbol.asyncIterator],u==null){if(u=w[Symbol.iterator],u==null)throw new TypeError("Object is not async iterable");let g=t(w,u);return s(g)}}else u=w[Symbol.iterator];if(u==null)throw new TypeError("Object is not iterable");return t(w,u)}let l="any"in $s?$s.any.bind($s):w=>{let f=new $e;for(let u of w)if(u.aborted)return f.abort(u.reason),f.signal;for(let u of w)u.addEventListener("abort",()=>{f.abort(u.reason)},{signal:f.signal});return f.signal},c=w=>l(w.filter(Boolean));class p{constructor({next:f,error:u,complete:g}={}){r.set(this,{next:f,error:u,complete:g})}next(f){let{next:u}=r.get(this)||{};u&&u(f)}error(f){let{error:u}=r.get(this)||{};u?u(f):To(f)}complete(){let{complete:f}=r.get(this)||{};f&&f()}}function h(w,f){let u=r.get(w);if(u?.active){u.active=!1,u.subscriptionController.abort(f);for(let g of u.teardowns.reverse()){if($t()&&!dt(document))return;try{g()}catch(q){To(q)}}}}function m(w,f,u={}){if($t()&&!dt(document))return;let g;typeof f=="function"?g=new p({next:f}):f&&!(f instanceof p)?g=new p(f):g=f||new p;let q=r.get(w),T=q.weakSubscriber?.deref();if(T?.active){let A=T,M=r.get(A);M.observers.add(g),u.signal&&(u.signal.aborted?M.observers.delete(g):u.signal.addEventListener("abort",()=>{let V=r.get(A);V?.active&&(V.observers.delete(g),V.observers.size==0&&h(A,u.signal.reason))}));return}let E=new y(g);if(q.weakSubscriber=new Kc(E),"signal"in u&&(u.signal.aborted?h(E,u.signal.reason):u.signal.addEventListener("abort",()=>{let A=r.get(E);A?.active&&(A.observers.delete(g),A.observers.size==0&&h(E,u.signal.reason))})),q.subscribeCallback)try{q.subscribeCallback(E)}catch(A){E.error(A)}}class y{get[Symbol.toStringTag](){return"Subscriber"}constructor(f=null){if(!(f instanceof p))throw new TypeError("Illegal constructor");r.set(this,{active:!0,observers:new Set([f]),teardowns:[],subscriptionController:new $e})}next(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let u=r.get(this);if(!u?.active||$t()&&!dt(document))return;let g=new Set(u.observers);for(let q of g)q.next(f)}error(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let u=r.get(this);if(!u?.active){To(f);return}if($t()&&!dt(document))return;h(this,f);let g=new Set(u.observers);for(let q of g)q.error(f)}complete(){if(!(this instanceof y))throw new TypeError("illegal invocation");let f=r.get(this);if(!f?.active||$t()&&!dt(document))return;h(this);let u=new Set(f.observers);for(let g of u)g.complete()}addTeardown(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");if($t()&&!dt(document))return;let u=r.get(this);u?.active?u.teardowns.push(f):f()}get active(){if(!(this instanceof y))throw new TypeError("illegal invocation");return!!r.get(this)?.active}get signal(){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!r.has(this)){let f=new $e;return f.abort(),f.signal}return r.get(this).subscriptionController.signal}}n(y.prototype,"next"),n(y.prototype,"error"),n(y.prototype,"complete"),n(y.prototype,"addTeardown"),n(y.prototype,"active"),n(y.prototype,"signal");class v{get[Symbol.toStringTag](){return"Observable"}constructor(f){if(!f)throw new TypeError("1 argument required but 0 present");r.set(this,{weakSubscriber:null,subscribeCallback:f})}static from(f){if(f===null||typeof f!="object")throw new TypeError("Observable.from only accepts objects");if(f instanceof v)return f;if(typeof(Symbol.asyncIterator in f&&f[Symbol.asyncIterator])=="function"){let T=function(E,A){if(E.signal.aborted)return;let M;try{let V=A.next();M=Promise.resolve(V)}catch(V){M=Promise.reject(V)}M.then(V=>{if(V===null||typeof V!="object"){E.error(new TypeError("Not an IteratorResult."));return}try{({done:q}=V)}catch(z){E.error(z);return}if(q){E.complete();return}let H;try{H=V.value}catch(z){E.error(z);return}E.next(H),T(E,A)},V=>{E.error(V)})},q=!1;return new v(E=>{if(E.signal.aborted)return;let A;try{A=a(f,!0)}catch(V){E.error(V);return}let M=A;E.signal.aborted||(E.signal.addEventListener("abort",()=>{if(typeof M.return!="function"||q)return;i(()=>M.return(E.signal.reason)).then(H=>{if(H===null||typeof H!="object")throw new TypeError("Iterator .return() must return an Object")})}),T(E,M))})}if(typeof(Symbol.iterator in f&&f[Symbol.iterator])=="function")return new v(q=>{if(q.signal.aborted)return;let T;try{T=a(f,!1)}catch(M){q.error(M);return}let E=!1,A=T;if(!q.signal.aborted)for(q.signal.addEventListener("abort",()=>{if(typeof A.return!="function"||E)return;let M=A.return();if(M===null||typeof M!="object")throw new TypeError("Iterator .return() must return an Object")});;)try{let M=A.next();if({done:E}=M,E){q.complete();return}if(q.next(M.value),q.signal.aborted)break}catch(M){q.error(M);break}});if(f instanceof Promise||typeof f.then=="function")return new v(q=>{f.then(T=>{q.next(T),q.complete()},T=>{q.error(T)})});throw new TypeError("Could not convert value to Observable")}subscribe(f=null,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");m(this,f,u)}takeUntil(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let u=this,g=v.from(f);return new v(q=>{let T=new p({next(){q.complete()},error(){q.complete()}}),E={signal:q.signal};if(m(g,T,E),!q.active)return;let A=new p({next(M){q.next(M)},error(M){q.error(M)},complete(){q.complete()}});m(u,A,E)})}map(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=new p({next(A){let M;try{M=f(A,q)}catch(V){g.error(V);return}q+=1,g.next(M)},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}inspect(f={}){let u=null,g=null,q=null,T=null,E=null;typeof f=="function"?g=f:f&&typeof f=="object"&&("subscribe"in f&&(u=f.subscribe),"next"in f&&(g=f.next),"error"in f&&(q=f.error),"complete"in f&&(T=f.complete),"abort"in f&&(E=f.abort));let A=this;return new v(M=>{if(u!==null)try{u()}catch(F){M.error(F);return}let V=()=>{try{E!==null&&E(M.signal.reason)}catch(F){To(F)}};M.signal.addEventListener("abort",V,{once:!0});let H=new p({next(F){if(g!==null)try{g(F)}catch(se){M.signal.removeEventListener("abort",V),M.error(se);return}M.next(F)},error(F){if(M.signal.removeEventListener("abort",V),q!==null)try{q(F)}catch(se){M.error(se);return}M.error(F)},complete(){if(M.signal.removeEventListener("abort",V),T!==null)try{T()}catch(F){M.error(F);return}M.complete()}}),z={signal:M.signal};m(A,H,z)})}filter(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=new p({next(A){let M=!1;try{M=f(A,q)}catch(V){g.error(V);return}q+=1,M&&g.next(A)},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}take(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let u=this;return new v(g=>{let q=f;if(q==0)return g.complete();let T=new p({next(A){g.next(A),q-=1,q==0&&g.complete()},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}drop(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let u=this;return new v(g=>{let q=f,T=new p({next(A){if(q>0)return q-=1;q==0&&g.next(A)},error(A){g.error(A)},complete(){g.complete()}}),E={signal:g.signal};m(u,T,E)})}flatMap(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=!1,E=[];function A(z){let F;try{F=f(z,q)}catch(Ve){return g.error(Ve)}q+=1;let se;try{se=v.from(F)}catch(Ve){return g.error(Ve)}let Ko=new p({next(Ve){g.next(Ve)},error(Ve){g.error(Ve)},complete(){if(E.length){let Ve=E.shift();A(Ve)}else M=!1,T&&g.complete()}}),Se={signal:g.signal};m(se,Ko,Se)}let M=!1,V=new p({next(z){M?E.push(z):(M=!0,A(z))},error(z){g.error(z)},complete(){T=!0,!M&&!E.length&&g.complete()}}),H={signal:g.signal};m(u,V,H)})}switchMap(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{let q=0,T=!1,E=null;function A(H){let z;try{z=f(H,q)}catch(Se){return g.error(Se)}q+=1;let F;try{F=v.from(z)}catch(Se){return g.error(Se)}let se=new p({next(Se){g.next(Se)},error(Se){g.error(Se)},complete(Se){T?g.complete():E=null}}),Ko={signal:c([E.signal,g.signal])};m(F,se,Ko)}let M=new p({next(H){E&&E.abort(),E=new $e,A(H)},error(H){g.error(H)},complete(){T=!0,E||g.complete()}}),V={signal:g.signal};m(u,M,V)})}catch(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(q=>{let T=new p({next(A){q.next(A)},error(A){let M;try{M=f(A)}catch(F){q.error(F);return}let V;try{V=v.from(M)}catch(F){q.error(F);return}let H=new p({next(F){q.next(F)},error(F){q.error(F)},complete(){q.complete()}}),z={signal:q.signal};m(V,H,z)},complete(){q.complete()}}),E={signal:q.signal};m(u,T,E)})}finally(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let u=this;return new v(g=>{g.addTeardown(f);let q=new p({next(E){g.next(E)},error(E){g.error(E)},complete(){g.complete()}}),T={signal:g.signal};m(u,q,T)})}toArray(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:u,resolve:g,reject:q}=e();if(f.signal){if(f.signal.aborted)return Promise.reject(f.signal.reason);f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let T=[],E=new p({next(A){T.push(A)},error(A){q(A)},complete(){g(T)}});return m(this,E,f),u}forEach(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){try{f(H,M)}catch(z){T(z),E.abort(z)}M+=1},error(H){T(H)},complete(){q()}});return m(this,V,A),g}every(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){let z=!1;try{z=f(H,M)}catch(F){T(F),E.abort(F)}M+=1,z||(q(!1),E.abort())},error(H){T(H)},complete(){q(!0)}});return m(this,V,A),g}first(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:u,resolve:g,reject:q}=e(),T=new $e,E={signal:c([T.signal,f.signal])};if(E.signal.aborted)return q(E.signal.reason),u;E.signal.addEventListener("abort",()=>{q(E.signal.reason)});let A=new p({next(M){g(M),T.abort()},error(M){q(M)},complete(){q(new RangeError("No values in Observable"))}});return m(this,A,E),u}last(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:u,resolve:g,reject:q}=e();if(f.signal){if(f.signal.aborted)return q(f.signal.reason),u;f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let T=null,E=!1,A=new p({next(M){E=!0,T=M},error(M){q(M)},complete(){E?g(T):q(new RangeError("No values in Observable"))}});return m(this,A,f),u}find(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){let z=!1;try{z=f(H,M)}catch(F){T(F),E.abort(F)}M+=1,z&&(q(H),E.abort())},error(H){T(H)},complete(){q()}});return m(this,V,A),g}some(f,u={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:g,resolve:q,reject:T}=e(),E=new $e,A={signal:c([E.signal,u.signal])};if(A.signal.aborted)return T(A.signal.reason),g;A.signal.addEventListener("abort",()=>{T(A.signal.reason)});let M=0,V=new p({next(H){let z=!1;try{z=f(H,M)}catch(F){T(F),E.abort(F)}M+=1,z&&(q(!0),E.abort())},error(H){T(H)},complete(){q(!1)}});return m(this,V,A),g}reduce(f,u,g={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:q,resolve:T,reject:E}=e(),A=new $e,M={signal:c([A.signal,g.signal])};if(M.signal.aborted)return E(M.signal.reason),q;M.signal.addEventListener("abort",()=>{E(M.signal.reason)},{once:!0});let V=0,H=arguments.length>1?u:Os,z=new p({next(F){if(H===Os){H=F,V++;return}try{let se=f(H,F,V);V++,H=se}catch(se){E(se),A.abort(se);return}},error(F){E(F)},complete(){H!==Os?T(H):E(new TypeError("no initial value provided and no values emitted"))}});return m(this,z,M),q}}return n(v.prototype,"subscribe"),[v,y]})();function vl(){return typeof globalThis.Observable=="function"}function yl(){Object.defineProperties(globalThis,{Observable:{value:bl,configurable:!0,writable:!0},Subscriber:{value:Zc,configurable:!0,writable:!0}}),EventTarget.prototype.when=function(n,i={}){if($t()&&!dt(document))return;let e=this;return new bl(t=>{if(!e||t.signal.aborted)return;let r=o=>{t.next(o)};e.addEventListener(n,r,{capture:i.capture||!1,passive:i.passive,once:!1,signal:t.signal})})}}function Vs(n,i,e){let t=n.filter(r=>!r.hasAttribute("disabled"));for(let r of t){let o=r.getBoundingClientRect();if(i>=o.left&&i<=o.right&&e>=o.top&&e<=o.bottom)return r}return null}function xl(n,i,e,t){if(!t)return null;let r=n.filter(s=>!s.hasAttribute("disabled")),o=t.getBoundingClientRect();for(let s of r){let a=s.getBoundingClientRect();if(!(o.right<a.left||o.left>a.right||o.bottom<a.top||o.top>a.bottom))return s}return null}function ql(n,i,e,t){let r=n.filter(c=>!c.hasAttribute("disabled"));if(r.length===0)return null;let o,s;if(t){let c=t.getBoundingClientRect();o=c.left+c.width/2,s=c.top+c.height/2}else o=i,s=e;let a=null,l=1/0;for(let c of r){let p=c.getBoundingClientRect(),h=p.left+p.width/2,m=p.top+p.height/2,y=Math.sqrt(Math.pow(o-h,2)+Math.pow(s-m,2));y<l&&(l=y,a=c)}return a}function wl(n,i,e,t){let r=n.filter(l=>!l.hasAttribute("disabled"));if(r.length===0)return null;let o;if(t){let l=t.getBoundingClientRect();o=[{x:l.left,y:l.top},{x:l.right,y:l.top},{x:l.left,y:l.bottom},{x:l.right,y:l.bottom}]}else o=[{x:i,y:e},{x:i,y:e},{x:i,y:e},{x:i,y:e}];let s=null,a=1/0;for(let l of r){let c=l.getBoundingClientRect(),p=[{x:c.left,y:c.top},{x:c.right,y:c.top},{x:c.left,y:c.bottom},{x:c.right,y:c.bottom}],h=0,m=0;for(let v of o)for(let w of p){let f=Math.sqrt(Math.pow(v.x-w.x,2)+Math.pow(v.y-w.y,2));h+=f,m++}let y=h/m;y<a&&(a=y,s=l)}return s}function ed(n,i,e,t,r){let o=r&&r.length>0?n.filter(u=>r.includes(u)):n.filter(u=>u.tagName==="SLOT"&&u.hasAttribute("part")&&u.getAttribute("part")?.includes("drags")),a=n.filter(u=>!o.includes(u));if(o.length===0&&a.length===0)return null;let l;if(t){let u=t.getBoundingClientRect();l=[{x:u.left,y:u.top},{x:u.right,y:u.top},{x:u.left,y:u.bottom},{x:u.right,y:u.bottom}]}else l=[{x:i,y:e},{x:i,y:e},{x:i,y:e},{x:i,y:e}];let c=u=>{let g=u.getBoundingClientRect(),q=[{x:g.left,y:g.top},{x:g.right,y:g.top},{x:g.left,y:g.bottom},{x:g.right,y:g.bottom}],T=0,E=0;for(let A of l)for(let M of q){let V=Math.sqrt(Math.pow(A.x-M.x,2)+Math.pow(A.y-M.y,2));T+=V,E++}return T/E},p=null,h=1/0;for(let u of o){let g=c(u);g<h&&(h=g,p=u)}let m=null,y=1/0;for(let u of a){let g=c(u);g<y&&(y=g,m=u)}if(p&&t){let u=t.getBoundingClientRect(),g=p.getBoundingClientRect(),q=u.left+u.width/2,T=u.top+u.height/2;if(q>=g.left&&q<=g.right&&T>=g.top&&T<=g.bottom)return p}let w=t?.getAttribute("data-drag-origin")==="droppable"?.85:1.5;return p&&m?h<=y*w?p:m:p||m}function Cl(n){switch(n){case"pointerWithin":return Vs;case"rectangleIntersection":return xl;case"closestCenter":return ql;case"closestCorners":return wl;case"closestCornersWithInventoryPriority":return ed;default:return Vs}}function gr(n,i,e,t,r="pointerWithin",o){return Cl(r)(n,i,e,t,o)}function pt(n,i){let e=n.composedPath?n.composedPath():[n.target];for(let t of e)if(t instanceof HTMLElement&&t.tagName!=="SLOT"){if(t.matches(i)||t.hasAttribute("qti-draggable"))return t;let r=t.closest(i)||t.closest('[qti-draggable="true"]');if(r)return r}return null}function Ao(n,i){let e=[];return n.forEach(t=>{let r=[];t.tagName.toLowerCase()==="slot"?r=t.assignedElements({flatten:!0}).filter(a=>a.getAttribute("identifier")===i):r=Array.from(t.querySelectorAll(`[identifier="${i}"]`)),e.push(...r)}),e}function El(n,i){let e=n.find(r=>r.getAttribute("identifier")===i);if(!e)return 1;let t=e.getAttribute("match-max");return t?parseInt(t,10)||0:1}function Sl(n,i){let e=parseInt(n.getAttribute("match-max")||"1",10),t=Number.isNaN(e)?1:e;if(t===0)return!1;let r=n.querySelectorAll(i),o=n.querySelectorAll('[qti-draggable="true"]');return Math.max(r.length,o.length)>=t}function Ci(n,i){return n.reduce((e,t)=>{let r=t.querySelectorAll(i).length,o=t.querySelectorAll('[qti-draggable="true"]').length;return e+Math.max(r,o)},0)}function Io(n,i){return n.map(e=>{let r=Array.from(e.querySelectorAll(i)).map(s=>s.getAttribute("identifier")).filter(s=>!!s),o=e.getAttribute("identifier");return r.map(s=>`${s} ${o}`)}).flat()}function Tl(n,i,e,t=typeof window<"u"?window:null){if(!n.length||!i.length||!t)return;let r=0,o=0;n.forEach(c=>{let p=c.getBoundingClientRect();r=Math.max(r,p.height),o=Math.max(o,p.width)});let s=i[0].parentElement,a=i[0].tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE",l=i[0].tagName==="QTI-GAP";if(a&&s){let c;if(s.clientWidth>0){let p=t.getComputedStyle(s),h=parseFloat(p.paddingLeft),m=parseFloat(p.paddingRight);c=s.clientWidth-h-m}else c=Math.min(t.innerWidth*.8,600);s.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${c}px, ${o}px + 2 * var(--qti-dropzone-padding, 0.5rem))), 1fr))`}i.forEach(c=>{c.style.minHeight=`${r}px`,(a||l)&&(c.style.minWidth=`${o}px`);let p=c.shadowRoot?.querySelector('slot[part="dropslot"]');p&&(p.style.minHeight=`${r}px`)}),e.forEach(c=>{c.style.minHeight=`${r}px`})}vl()||yl();var Al=new WeakSet;function td(n){!n||Al.has(n)||(n.addEventListener("touchmove",()=>{},{capture:!1,passive:!1}),Al.add(n))}var ko=(n,i,e,t='slot[part="drags"]',r="pointerWithin")=>{class o extends n{constructor(){super(...arguments);this.trackedDraggables=[];this.trackedDroppables=[];this.trackedDragContainers=[];this.allDropzones=[];this.collisionDetectionAlgorithm=r;this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null};this.subscriptions=[];this.dragSubscriptions=[];this.lastPointerDownAt=0;this.lastTouchStartAt=0}connectedCallback(){super.connectedCallback(),td(this.ownerDocument?.defaultView),this.setupDragDrop()}disconnectedCallback(){super.disconnectedCallback(),this.cleanup()}async setupDragDrop(){await this.updateComplete,this.cacheInteractiveElements(),this.afterCache(),this.setupDragObservables()}afterCache(){}cacheInteractiveElements(){let l=(u,g)=>Array.from(g?.querySelectorAll(u)??[]),c=l(i,this),p=l(i,this.shadowRoot),h=l('[qti-draggable="true"]:not([data-drag-clone])',this),m=l('[qti-draggable="true"]:not([data-drag-clone])',this.shadowRoot);this.trackedDraggables=Array.from(new Set([...c,...p,...h,...m]));let y=l(e,this),v=l(e,this.shadowRoot);this.trackedDroppables=Array.from(new Set([...y,...v]));let w=l(t,this),f=l(t,this.shadowRoot);this.trackedDragContainers=Array.from(new Set([...w,...f])),this.allDropzones=[...this.trackedDroppables,...this.trackedDragContainers],this.trackedDraggables.forEach(u=>{u.style.cursor="grab",u.style.userSelect="none",u.style.touchAction="none",u.style.webkitUserSelect="none",u.style.webkitTouchCallout="none",u.setAttribute("qti-draggable","true"),u.setAttribute("tabindex","0")})}setupDragObservables(){let l=this.shadowRoot;if(!l){console.error("\u274C [Observable DnD] No shadow root found!");return}let c=l.when("pointerdown").filter(v=>{if(!v.isTrusted)return!1;let w=pt(v,i),f=this.disabled||this.readonly,u=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",g=Date.now()-this.lastTouchStartAt<50;return w&&v.isPrimary!==!1&&v.button===0&&!f&&!u&&!g}).subscribe(v=>{this.lastPointerDownAt=Date.now();let w=pt(v,i);if(!w){console.warn("\u26A0\uFE0F [Observable DnD] No draggable target found");return}v.pointerType==="touch"&&(v.preventDefault(),v.stopPropagation());let f=v.isTrusted?v.pointerType==="touch"?100:10:0;if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),f===0){this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted);return}let u=()=>{this.dragState.activationTimeout&&(clearTimeout(this.dragState.activationTimeout),this.dragState.activationTimeout=void 0),document.removeEventListener("pointerup",u,!0),document.removeEventListener("pointercancel",u,!0)};document.addEventListener("pointerup",u,{once:!0,capture:!0}),document.addEventListener("pointercancel",u,{once:!0,capture:!0}),this.dragState.activationTimeout=window.setTimeout(()=>{this.dragState.activationTimeout=void 0,document.removeEventListener("pointerup",u,!0),document.removeEventListener("pointercancel",u,!0),this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted)},f)}),p=l.when("mousedown").filter(v=>{let w=pt(v,i),f=this.disabled||this.readonly,u=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",g=v.button===0,q=Date.now()-this.lastPointerDownAt<50;return w&&g&&!f&&!u&&!q}).subscribe(v=>{let w=pt(v,i);!w||this.dragState.dragging||(v.preventDefault(),this.initiateDrag(w,v.clientX,v.clientY,"mouse","mouse",void 0,v.isTrusted))}),h=l.when("touchstart").filter(v=>{let w=pt(v,i),f=this.disabled||this.readonly,u=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",g=!!(v.touches?.[0]||v.changedTouches?.[0]),q=Date.now()-this.lastPointerDownAt<50;return w&&g&&!f&&!u&&!q}).subscribe(v=>{let w=pt(v,i),f=v.touches?.[0]||v.changedTouches?.[0];!w||!f||this.dragState.dragging||(this.lastTouchStartAt=Date.now(),v.preventDefault(),v.stopPropagation(),this.initiateDrag(w,f.clientX,f.clientY,"touch","touch",void 0,v.isTrusted))}),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null},y=l.when("keydown").subscribe(v=>{let w=this.trackedDraggables.filter(u=>u.style.opacity!=="0"),f=[...this.trackedDroppables,...this.trackedDragContainers];if(m.dragging)switch(v.code){case"ArrowRight":case"ArrowDown":{v.preventDefault();let u=(m.dropIndex+1)%f.length;m={...m,dropIndex:u,dropElement:f[u]};break}case"ArrowLeft":case"ArrowUp":{v.preventDefault();let u=(m.dropIndex-1+f.length)%f.length;m={...m,dropIndex:u,dropElement:f[u]};break}case"Space":case"Enter":case"Tab":{v.preventDefault(),m.dragElement&&m.dropElement&&(this.allowDrop(m.dragElement,m.dropElement)||this.trackedDragContainers.includes(m.dropElement)?this.handleDrop(m.dragElement,m.dropElement):this.handleInvalidDrop(m.dragElement)),this.trackedDraggables.forEach(u=>u.removeAttribute("data-keyboard-dragging")),this.saveResponse(),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}case"Escape":{v.preventDefault(),this.trackedDraggables.forEach(u=>u.removeAttribute("data-keyboard-dragging")),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}}else{let u=pt(v,i),g=this.disabled||this.readonly,q=u?.hasAttribute("disabled")||u?.getAttribute("aria-disabled")==="true";u&&["Space","Enter"].includes(v.code)&&!g&&!q&&(v.preventDefault(),u.setAttribute("data-keyboard-dragging","true"),m={dragging:!0,dragElement:u,dragIndex:w.indexOf(u),dropIndex:0,dropElement:f[0]})}this.allDropzones.forEach(u=>u.removeAttribute("hover")),m.dragging&&m.dropElement&&(m.dropElement.setAttribute("hover",""),m.dropElement.hasAttribute("tabindex")&&m.dropElement.getAttribute("tabindex")!=="-1"&&m.dropElement.focus())});this.subscriptions.push(c,p,h,y)}initiateDrag(l,c,p,h,m="pointer",y,v){if(this.dragState.dragging){console.warn("\u26A0\uFE0F [Observable DnD] Already dragging, ignoring initiateDrag");return}if(l.hasAttribute("data-drag-clone")){console.warn("\u26A0\uFE0F [Observable DnD] Attempted to drag visual clone, ignoring");return}let w=this.trackedDroppables.some(g=>g.contains(l)),f=this.trackedDroppables.find(g=>g.contains(l))||null,u=l.getBoundingClientRect();this.dragState={dragging:!0,dragSource:l,dragClone:this.createDragClone(l,u),startOffset:{x:c-u.left,y:p-u.top},currentTarget:null,sourceDroppable:f,inputType:h,pointerId:y,startedFromTrustedEvent:v,initialCoordinates:{x:c,y:p}},w?(this.dragState.dragClone?.setAttribute("data-drag-origin","droppable"),l.remove(),this.cacheInteractiveElements(),f&&f.setAttribute("data-drag-source","true")):(this.dragState.dragClone?.setAttribute("data-drag-origin","inventory"),l.style.opacity="0",l.style.pointerEvents="none"),this.updateClonePosition(c,p),this.activateAllDroppables(),this.setupMoveObservables(h,m)}setupMoveObservables(l,c="pointer"){if(l==="touch"){if(c==="pointer")try{let T=this.dragState.dragSource,E=this.dragState.pointerId;T&&E!==void 0&&T.setPointerCapture&&T.setPointerCapture(E)}catch{}let g=T=>{T.cancelable&&(T.preventDefault(),c==="pointer"&&T.stopPropagation())};document.addEventListener("touchmove",g,{passive:!1,capture:!0}),document.addEventListener("touchstart",g,{passive:!1,capture:!0}),document.addEventListener("touchend",g,{passive:!1,capture:!0}),document.addEventListener("gesturestart",g,{passive:!1}),document.addEventListener("gesturechange",g,{passive:!1}),document.addEventListener("gestureend",g,{passive:!1});let q=()=>{if(document.removeEventListener("touchmove",g,{capture:!0}),document.removeEventListener("touchstart",g,{capture:!0}),document.removeEventListener("touchend",g,{capture:!0}),document.removeEventListener("gesturestart",g),document.removeEventListener("gesturechange",g),document.removeEventListener("gestureend",g),c==="pointer")try{let T=this.dragState.dragSource,E=this.dragState.pointerId;T&&E!==void 0&&T.releasePointerCapture&&T.releasePointerCapture(E)}catch{}};this.dragState.touchCleanup=q}let p=c==="mouse"?"mousemove":c==="touch"?"touchmove":"pointermove",h=c==="mouse"?"mouseup":c==="touch"?"touchend":"pointerup",m=g=>{let q=this.dragState.startedFromTrustedEvent;return q===void 0||g.isTrusted===q},y=document.when(p).takeUntil(document.when(h)).subscribe({next:g=>{if(m(g)){if(g.preventDefault(),g.stopPropagation(),c==="touch"){let q=g.touches?.[0]||g.changedTouches?.[0];if(!q)return;this.handleDragMove(q.clientX,q.clientY);return}if(c==="mouse"){let q=g;if(typeof q.buttons=="number"&&(q.buttons&1)!==1)return}this.handleDragMove(g.clientX,g.clientY)}}}),v=document.when(h).subscribe({next:g=>{m(g)&&(g.preventDefault(),g.stopPropagation(),this.handleDragEnd())}}),w=c==="touch"?document.when("touchcancel").subscribe({next:g=>{m(g)&&this.handleDragEnd()}}):c==="mouse"?null:document.when("pointercancel").subscribe({next:g=>{m(g)&&this.handleDragEnd()}}),f=document.when("keydown").filter(g=>g.key==="Escape").subscribe({next:g=>{m(g)&&this.handleDragEnd()}}),u=[y,v,f];w&&u.push(w),this.dragSubscriptions.push(...u)}handleDragMove(l,c){if(!this.dragState.dragging||!this.dragState.dragClone)return;this.updateClonePosition(l,c);let p=gr(this.allDropzones,l,c,this.dragState.dragClone,this.collisionDetectionAlgorithm,this.trackedDragContainers),h=Date.now(),m=h-(this.dragState.lastTargetChangeTime||0);p!==this.dragState.currentTarget&&(p===null||m>=50)&&(this.allDropzones.forEach(v=>v.removeAttribute("hover")),p&&p.setAttribute("hover",""),this.dragState.currentTarget=p,this.dragState.lastTargetChangeTime=h)}handleDragEnd(){if(!this.dragState.dragging)return;let{dragSource:l,dragClone:c,currentTarget:p,sourceDroppable:h}=this.dragState,m=p;if(!m&&c){let f=c.getBoundingClientRect(),u=this.dragState.initialCoordinates?.x??f.left+f.width/2,g=this.dragState.initialCoordinates?.y??f.top+f.height/2;m=gr(this.allDropzones,u,g,c,this.collisionDetectionAlgorithm,this.trackedDragContainers)}let y=m?.hasAttribute("disabled")&&m.hasAttribute("data-drag-source");!!l&&!!m&&this.allowDrop(l,m)&&(!m.hasAttribute("disabled")||y)&&l&&m?this.handleDrop(l,m):this.handleInvalidDrop(l),c&&c.remove(),this.dragState.touchCleanup&&this.dragState.touchCleanup(),this.resetDragState(),this.deactivateAllDroppables(),this.saveResponse(),h&&h.removeAttribute("data-drag-source"),this.cacheInteractiveElements();let w=this.checkAllMaxAssociations;typeof w=="function"&&w.call(this)}allowDrop(l,c){return this.trackedDroppables.includes(c)||this.trackedDragContainers.includes(c)}handleInvalidDrop(l){l&&(l.style.opacity="1.0",l.style.pointerEvents="auto")}createDragClone(l,c){let p=l.cloneNode(!0),h=window.getComputedStyle(l);for(let m=0;m<h.length;m++){let y=h[m];p.style.setProperty(y,h.getPropertyValue(y))}return p.style.position="fixed",p.style.width=`${c.width}px`,p.style.height=`${c.height}px`,p.style.zIndex="9999",p.style.pointerEvents="none",p.style.touchAction="none",p.style.userSelect="none",p.style.opacity="0.8",p.removeAttribute("qti-draggable"),p.removeAttribute("tabindex"),p.setAttribute("data-drag-clone","true"),document.body.appendChild(p),p}updateClonePosition(l,c){if(!this.dragState.dragClone)return;let{startOffset:p}=this.dragState,h=l-p.x,m=c-p.y;this.dragState.dragClone.style.left=`${h}px`,this.dragState.dragClone.style.top=`${m}px`}activateAllDroppables(){this.setInternalsState("--dragzone-enabled",!0),this.setInternalsState("--dragzone-active",!0),this.allDropzones.forEach(l=>{l.setAttribute("enabled",""),l.setAttribute("active","")})}deactivateAllDroppables(){this.setInternalsState("--dragzone-enabled",!1),this.setInternalsState("--dragzone-active",!1),this.allDropzones.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active"),l.removeAttribute("hover")})}resetDragState(){if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),this.dragState.touchCleanup)try{this.dragState.touchCleanup()}catch(l){console.warn("\u26A0\uFE0F [Observable DnD] Error during touch cleanup:",l)}this.dragSubscriptions.forEach(l=>{try{l&&typeof l.unsubscribe=="function"&&l.unsubscribe()}catch(c){console.warn("\u26A0\uFE0F [Observable DnD] Error unsubscribing:",c)}}),this.dragSubscriptions=[],this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null,pointerId:void 0,startedFromTrustedEvent:void 0,touchCleanup:void 0}}setInternalsState(l,c){let p=this._internals;p?.states&&(c?p.states.add(l):p.states.delete(l))}cleanup(){this.subscriptions.forEach(l=>{try{l.unsubscribe()}catch{}}),this.subscriptions=[],this.dragState.dragClone&&this.dragState.dragClone.remove(),this.resetDragState()}}return o};var Il={duration:250,easing:"ease",fill:"both"};function Ns(n){let i=n.getBoundingClientRect();return{left:i.left,top:i.top,width:i.width,height:i.height}}function ut(n){let i=new Map;return n.forEach(e=>{i.set(e,Ns(e))}),i}function kl(n,i){return{deltaX:n.left-i.left,deltaY:n.top-i.top,deltaW:n.width/i.width,deltaH:n.height/i.height}}function Ml(n,i,e={}){let t=Ns(n),{deltaX:r,deltaY:o,deltaW:s,deltaH:a}=kl(i,t);if(r===0&&o===0&&s===1&&a===1)return null;let{duration:l,easing:c,fill:p}={...Il,...e};return n.animate([{transformOrigin:"top left",transform:`translate(${r}px, ${o}px) scale(${s}, ${a})`},{transformOrigin:"top left",transform:"none"}],{duration:l,easing:c,fill:p})}function mt(n,i={}){let e=new Map;return n.forEach((t,r)=>{if(!(r instanceof HTMLElement))return;let o=Ml(r,t,i);o&&e.set(r,o)}),e}var we=(n,i,e,t='slot[part="drags"]',r="closestCornersWithInventoryPriority")=>{let o=ko(n,i,e,t,r);class s extends o{constructor(){super(...arguments);this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this._maxAssociations=0;this._maxAssociationsDefaultApplied=!1;this._response=[];this._dropBlockedDueToMax=!1;this.flipAnimationConfig={duration:200,easing:"ease"};this._enableFlipAnimations=!0;this.autoSizeDropzones=!1}get maxAssociations(){if(!this._maxAssociationsDefaultApplied){this._maxAssociationsDefaultApplied=!0;let c=this.tagName?.toLowerCase()||"";(c==="qti-graphic-gap-match-interaction"||c==="qti-gap-match-interaction")&&!this.hasAttribute("max-associations")&&this._maxAssociations===0&&(this._maxAssociations=1)}return this._maxAssociations}set maxAssociations(c){let p=this._maxAssociations;this._maxAssociations=c,this.requestUpdate("maxAssociations",p)}set disableAnimations(c){this._enableFlipAnimations=!c}get disableAnimations(){return!this._enableFlipAnimations}get enableFlipAnimations(){return this._enableFlipAnimations}get response(){let c=this.getResponse,p=typeof c=="function"?c.call(this):void 0;return(Array.isArray(p)?p:(this.cacheInteractiveElements(),Io(this.trackedDroppables,i))).join(",")}set response(c){if(Array.isArray(c)){let p=this.getValue,h=typeof p=="function"?p.call(this,c):c,m=Array.isArray(h)?h:typeof h=="string"&&h.length>0?[h]:[];this.reset(!1),m.forEach(w=>this.placeResponse(w));let y=this.getResponse,v=typeof y=="function"?y.call(this):void 0;this._response=Array.isArray(v)?v:(this.cacheInteractiveElements(),Io(this.trackedDroppables,i))}else this._response=typeof c=="string"&&c.length>0?[c]:[];this._internals.setFormValue(JSON.stringify(this._response))}afterCache(){this.applyConfiguredChoicesContainerWidth(),this.updateMinDimensionsForDropZones()}applyConfiguredChoicesContainerWidth(){let c=this.dataset.choicesContainerWidth;c&&this.trackedDroppables.forEach(p=>{p.style.width=`${c}px`,p.style.boxSizing="border-box"})}shouldTreatBlockedMaxAsInvalid(){return!0}shouldReturnToInventoryOnInventoryDrop(){return!1}getFirstMessageAttribute(c){for(let h of c){let m=this.getAttribute(h);if(m&&m.trim().length>0)return m}let p=c.map(h=>h.toLowerCase());for(let h of Array.from(this.attributes))if(p.includes(h.name.toLowerCase())&&h.value.trim().length>0)return h.value;return null}allowDrop(c,p){if(this.trackedDragContainers.includes(p))return!0;let h=this.trackedDroppables.includes(p),m=p.hasAttribute("disabled"),y=p.hasAttribute("data-drag-source");return h&&(!m||y)}handleDrop(c,p){let h=this.dragState.dragClone?.getBoundingClientRect();this.dropDraggableInDroppable(c,p,h);let m=c.getAttribute("identifier");m&&this.updateInventoryBasedOnMatchMax(m);let y=Ci(this.trackedDroppables,i);this.maxAssociations>0&&y>this.maxAssociations&&(this._dropBlockedDueToMax=!0,this.validate(),this.reportValidity())}handleInvalidDrop(c){let p=this.dragState.sourceDroppable,h=this.dragState.currentTarget,m=!h,y=this.trackedDragContainers[0]||null;if(!c)return;p&&m&&y&&this.configuration.dragCanBePlacedBack!==!1?this.dropDraggableInDroppable(c,y):p&&this.trackedDroppables.includes(p)?this.dropDraggableInDroppable(c,p):c.style.opacity==="0"&&(this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations());let v=Ci(this.trackedDroppables,i),w=this.maxAssociations>0&&v>=this.maxAssociations,f=!!h&&h.hasAttribute("disabled")&&!h.hasAttribute("data-drag-source");this._dropBlockedDueToMax=f&&w,this.validate(),this.reportValidity()}updateMinDimensionsForDropZones(){this.trackedDraggables.length!==0&&Tl(this.trackedDraggables,this.trackedDroppables,this.trackedDragContainers)}restoreInventoryItem(c){c.style.opacity="1.0",c.style.display="",c.style.position="",c.style.pointerEvents="auto"}placeResponse(c){let[p,...h]=c.split(" ").reverse(),m=this.trackedDroppables.find(y=>y.getAttribute("identifier")===p);m&&h.forEach(y=>{if(!y)return;let w=Ao(this.trackedDragContainers,y).at(0)||this.trackedDraggables.find(f=>f.getAttribute("identifier")===y);w&&this.dropDraggableInDroppable(w,m)})}dropDraggableInDroppable(c,p,h){if(this.trackedDragContainers.includes(p)){if(!this.dragState.sourceDroppable){if(this.shouldReturnToInventoryOnInventoryDrop()){this.returnToInventory(c),this._dropBlockedDueToMax=!1,this.validate();return}this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let T=c.getAttribute("identifier");c.remove(),T&&this.restoreOriginalInInventory(T),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let y=parseInt(p.getAttribute("match-max")||"1",10),v=Number.isNaN(y)?1:y,w=v===0||v>1,f=Array.from(p.querySelectorAll('[qti-draggable="true"]')),u=this.enableFlipAnimations&&f.length>0?ut(f):null;if(!w){let T=p.querySelector(i)||p.querySelector('[qti-draggable="true"]');if(T){let E=T.getAttribute("identifier");T.remove(),E&&this.restoreOriginalInInventory(E)}}let g=c.cloneNode(!0);g.removeAttribute("style"),g.removeAttribute("data-keyboard-dragging"),g.setAttribute("qti-draggable","true"),g.setAttribute("tabindex","0"),p.tagName==="SLOT"?g.setAttribute("slot",p.getAttribute("name")||""):p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"?(g.setAttribute("slot","qti-simple-associable-choice"),p.appendChild(g),p.setAttribute("data-has-drop","true")):p.appendChild(g),u&&this.enableFlipAnimations&&mt(u,this.flipAnimationConfig),h&&this.enableFlipAnimations&&requestAnimationFrame(()=>{let T=g.getBoundingClientRect(),E=h.left-T.left,A=h.top-T.top;(E!==0||A!==0)&&g.animate([{transform:`translate(${E}px, ${A}px)`,opacity:.8},{transform:"translate(0, 0)",opacity:1}],{duration:this.flipAnimationConfig.duration||200,easing:this.flipAnimationConfig.easing||"ease",fill:"both"})});let q=c.getAttribute("identifier");q&&this.updateInventoryBasedOnMatchMax(q),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}returnToInventory(c){let p=c.getAttribute("identifier");p&&(this.trackedDroppables.forEach(h=>{Array.from(h.querySelectorAll(`[identifier="${p}"][qti-draggable="true"]`)).forEach(y=>{y.remove(),h.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&h.removeAttribute("data-has-drop")})}),this.restoreOriginalInInventory(p)),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}restoreOriginalInInventory(c){let p=Ao(this.trackedDragContainers,c),h=[];this.trackedDragContainers.forEach(y=>{h.push(...Array.from(y.querySelectorAll('[qti-draggable="true"]')))});let m=this.enableFlipAnimations&&h.length>0?ut(h):null;p.forEach(y=>{y.style.opacity="1.0",y.style.pointerEvents="auto",y.style.display="",y.style.visibility="visible",y.style.setProperty("opacity","1.0","important"),y.style.setProperty("pointer-events","auto","important")}),m&&this.enableFlipAnimations&&mt(m,this.flipAnimationConfig)}updateInventoryBasedOnMatchMax(c){let p=Ao(this.trackedDragContainers,c),h=El(this.trackedDraggables,c),m=this.trackedDroppables.reduce((y,v)=>{let w=v.querySelectorAll(`[identifier="${c}"]`);return y+w.length},0);p.forEach(y=>{h!==0&&m>=h?(y.style.opacity="0.0",y.style.pointerEvents="none"):(y.style.opacity="1.0",y.style.pointerEvents="auto")})}checkAllMaxAssociations(){let c=Ci(this.trackedDroppables,i),p=this.maxAssociations>0&&c>=this.maxAssociations;this.trackedDroppables.forEach(h=>{let m=h.hasAttribute("data-drag-source"),y=Sl(h,i);(p||y)&&!m?h.setAttribute("disabled",""):h.removeAttribute("disabled")})}saveResponse(c){let p=this.getResponse,h=c??(typeof p=="function"?p.call(this):void 0),m=Array.isArray(h)?h:typeof h=="string"?[h]:(this.cacheInteractiveElements(),Io(this.trackedDroppables,i));this._response=m,this._internals.setFormValue(JSON.stringify(this._response)),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:m}})),this.requestUpdate()}reset(c=!0){this.trackedDroppables.forEach(p=>{Array.from(p.querySelectorAll(i)).forEach(m=>m.remove()),p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&p.removeAttribute("data-has-drop")}),this.trackedDraggables.forEach(p=>{let h=p.getAttribute("identifier");h&&this.restoreOriginalInInventory(h)}),this.resetDragState(),this.cacheInteractiveElements(),this._response=[],this._internals.setFormValue(JSON.stringify(this._response)),c&&this.saveResponse()}validate(){let c=Ci(this.trackedDroppables,i),p=this.maxAssociations>0&&c>=this.maxAssociations,h=this.maxAssociations>0&&c>this.maxAssociations,m=this.minAssociations>0&&c<this.minAssociations,y="",v=!0;h?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,v=!1):p&&this._dropBlockedDueToMax&&this.shouldTreatBlockedMaxAsInvalid()?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,v=!1):m?(y=this.getFirstMessageAttribute(["data-min-associations-message","data-min-selections-message"])||this.dataset.minAssociationsMessage||this.dataset.minSelectionsMessage||`Please select at least ${this.minAssociations} ${this.minAssociations===1?"association":"associations"}.`,v=!1,this._dropBlockedDueToMax=!1):this._dropBlockedDueToMax=!1;let w=this.trackedDroppables[0]??this.trackedDraggables[0]??this;return this._internals.setValidity(v?{}:{customError:!0},y,w),v}reportValidity(){let c=this._internals.reportValidity(),p=this.shadowRoot?.querySelector("#validation-message");return p&&(c?(p.textContent="",p.style.display="none"):(p.textContent=this._internals.validationMessage,p.style.setProperty("display","block","important"))),c}}return d([b({attribute:!1,type:Object})],s.prototype,"configuration",2),d([b({type:Number,reflect:!0,attribute:"min-associations"})],s.prototype,"minAssociations",2),d([b({type:Number,reflect:!0,attribute:"max-associations"})],s.prototype,"maxAssociations",1),d([b({type:Boolean,attribute:"disable-animations"})],s.prototype,"disableAnimations",1),d([b({type:Boolean,attribute:"auto-size-dropzones"})],s.prototype,"autoSizeDropzones",2),s};var Mo=class{getInsertPosition(i,e,t,r,o){let s=i.indexOf(t);if(s===-1)return null;let a=t.getBoundingClientRect(),l=(o-a.top)/a.height,p=Math.min(1,Math.max(0,l))>.5;return{index:s,placeAfter:p}}};var Rl=new Mo;var rd={borderStyle:"2px dashed",borderColor:"var(--qti-drop-placeholder, #c1c1c1)",background:"transparent",transitionDuration:150};function Ei(){return{placeholder:null,lastHoverTarget:null,lastPlacement:null,sortContainer:null}}function Ro(n){n.placeholder?.remove(),n.placeholder=null,n.lastHoverTarget=null,n.lastPlacement=null,n.sortContainer=null}function _o(n,i,e={}){let t={...rd,...e},r=document.createElement("div");return r.setAttribute("data-drop-placeholder","true"),r.style.width=`${i.width}px`,r.style.height=`${i.height}px`,r.style.margin=window.getComputedStyle(n).margin,r.style.boxSizing="border-box",r.style.border=`${t.borderStyle} ${t.borderColor}`,r.style.borderRadius=getComputedStyle(n).borderRadius,r.style.background=t.background,r.style.transition=`transform ${t.transitionDuration}ms ease`,r.style.pointerEvents="none",r}function Hs(n,i){for(let e of i)if(e.contains(n)&&e!==n)return e;return null}var Ce=(n,i='[qti-draggable="true"]')=>{class e extends n{constructor(){super(...arguments);this.#e=null;this.#t=Ei();this.#r={hoveredSlot:null,originalPositions:new Map};this.#i=new Set;this.allowReorder=!0;this.sortablePlaceholderConfig={};this.sortableAnimationConfig={duration:150,easing:"ease"}}#e;#t;#r;#i;get isDraggingFromSlot(){return this.#e!==null}findContainingDroppable(o){return Hs(o,this.trackedDroppables)}#o(o){return o.querySelector(i)}#s(o){let s=this.#n(o);return s===0||s>1}#n(o){let s=parseInt(o.getAttribute("match-max")||"1",10);return Number.isNaN(s)?1:s}#a(o){return o.querySelectorAll(i).length}#c(o){let s=this.#n(o);return s===0?!1:this.#a(o)>=s}#d(){this.#r={hoveredSlot:null,originalPositions:new Map}}#l(o){if(!this.#e||o===this.#e){this.#u();return}if(this.#r.hoveredSlot===o)return;this.#u();let s=this.#o(o);if(!s){this.#t.placeholder&&o.appendChild(this.#t.placeholder),this.#r.hoveredSlot=o;return}if(this.#s(o)){if(this.#c(o)){this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),this.#r.hoveredSlot=null;return}this.#t.placeholder&&o.appendChild(this.#t.placeholder),this.#r.hoveredSlot=o;return}let l=ut([s]);this.#r.originalPositions.set(s,o),this.#t.placeholder&&this.#t.placeholder.parentElement&&this.#t.placeholder.remove(),this.#e.appendChild(s),this.#t.placeholder&&o.appendChild(this.#t.placeholder),this.#r.hoveredSlot=o,mt(l,this.sortableAnimationConfig)}#u(){if(this.#r.originalPositions.size===0&&this.#r.hoveredSlot===null)return;let o=Array.from(this.#r.originalPositions.keys()),s=o.length>0?ut(o):null;for(let[a,l]of this.#r.originalPositions)l.appendChild(a);this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),s&&mt(s,this.sortableAnimationConfig),this.#r.originalPositions.clear(),this.#r.hoveredSlot=null}initiateDrag(o,s,a,l,...c){this.#e=null,this.#t=Ei(),this.#d();let p=this.findContainingDroppable(o);if(p&&this.allowReorder){this.#e=p,this.#t.sortContainer=p;let m=o.getBoundingClientRect();this.#t.placeholder=_o(o,m,this.sortablePlaceholderConfig);let y=o.getAttribute("slot");y&&this.#t.placeholder.setAttribute("slot",y),this.#t.placeholder.style.visibility="hidden",p.appendChild(this.#t.placeholder),this.trackedDroppables.forEach(v=>{if(v!==p&&v.hasAttribute("disabled")){if(this.#s(v)&&this.#c(v))return;v.removeAttribute("disabled"),this.#i.add(v)}})}let[h]=c;super.initiateDrag(o,s,a,l,h)}cleanupSortableState(o=!0){if(o)for(let[s,a]of this.#r.originalPositions)a.appendChild(s);this.#t.placeholder&&this.#t.placeholder.remove(),Ro(this.#t),this.#i.clear(),this.#e=null,this.#d()}onSortableDragMove(o,s){if(!this.isDraggingFromSlot)return;let a=gr(this.trackedDroppables,o,s,this.dragState.dragClone,this.collisionDetectionAlgorithm);a?this.#l(a):this.#u()}handleDragMove(o,s){Object.getPrototypeOf(e.prototype).handleDragMove?.call(this,o,s),this.onSortableDragMove(o,s)}allowDrop(o,s){return this.isDraggingFromSlot&&this.trackedDroppables.includes(s)?this.#s(s)?!this.#c(s):!0:this.isDraggingFromSlot&&this.trackedDragContainers.includes(s)?!0:super.allowDrop(o,s)}handleDrop(o,s){super.handleDrop(o,s),this.cleanupSortableState(!1)}handleInvalidDrop(o){this.cleanupSortableState(),super.handleInvalidDrop(o)}}return e};var _l=S`
4024
4024
  :host {
4025
4025
  display: block; /* necessary to calculate scaling position */
4026
4026
  }
@@ -4068,7 +4068,7 @@ div.full-correct-response-inline {
4068
4068
  rgb(0 0 0 / 0%) calc(50% + 1px)
4069
4069
  );
4070
4070
  }
4071
- `;var ld=we($,"qti-simple-associable-choice",".dl","slot[name='qti-simple-associable-choice']","pointerWithin"),Si=class extends Ce(ld,'[qti-draggable="true"]'){constructor(){super();this._childrenMap=[];this._registerChoiceHandler=this._registerChoice.bind(this),this.addEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}static{this.styles=_l}_registerChoice(e){let t=e.composedPath()[0];if(this.shadowRoot?.contains(t))return;let i=t;this._childrenMap.includes(i)||(this._childrenMap=[...this._childrenMap,i])}getResponse(){let e=Math.ceil(this._childrenMap.length/2),t=[];for(let i=0;i<e;i++){let o=this.shadowRoot?.querySelector(`.dl[identifier="droplist${i}_left"]`),n=this.shadowRoot?.querySelector(`.dl[identifier="droplist${i}_right"]`),a=o?.querySelector('[qti-draggable="true"]')?.getAttribute("identifier"),l=n?.querySelector('[qti-draggable="true"]')?.getAttribute("identifier");a&&l&&t.push(`${a} ${l}`)}return t}getValue(e){return e?.flatMap((t,i)=>{let o=t.split(" ");return o.length!==2?[]:[`${o[0]} droplist${i}_left`,`${o[1]} droplist${i}_right`]})??[]}render(){return x` <slot name="prompt"></slot>
4071
+ `;var ld=we($,"qti-simple-associable-choice",".dl","slot[name='qti-simple-associable-choice']","pointerWithin"),Si=class extends Ce(ld,'[qti-draggable="true"]'){constructor(){super();this._childrenMap=[];this._registerChoiceHandler=this._registerChoice.bind(this),this.addEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}static{this.styles=_l}_registerChoice(e){let t=e.composedPath()[0];if(this.shadowRoot?.contains(t))return;let r=t;this._childrenMap.includes(r)||(this._childrenMap=[...this._childrenMap,r])}getResponse(){let e=Math.ceil(this._childrenMap.length/2),t=[];for(let r=0;r<e;r++){let o=this.shadowRoot?.querySelector(`.dl[identifier="droplist${r}_left"]`),s=this.shadowRoot?.querySelector(`.dl[identifier="droplist${r}_right"]`),a=o?.querySelector('[qti-draggable="true"]')?.getAttribute("identifier"),l=s?.querySelector('[qti-draggable="true"]')?.getAttribute("identifier");a&&l&&t.push(`${a} ${l}`)}return t}getValue(e){return e?.flatMap((t,r)=>{let o=t.split(" ");return o.length!==2?[]:[`${o[0]} droplist${r}_left`,`${o[1]} droplist${r}_right`]})??[]}render(){return x` <slot name="prompt"></slot>
4072
4072
  <slot name="qti-simple-associable-choice"></slot>
4073
4073
  <div part="drop-container">
4074
4074
  ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>x`<div part="associables-container">
@@ -4077,7 +4077,7 @@ div.full-correct-response-inline {
4077
4077
  </div>`)}
4078
4078
 
4079
4079
  <div role="alert" part="message" id="validation-message"></div>
4080
- </div>`}updated(e){super.updated(e),e.has("_childrenMap")&&this.cacheInteractiveElements()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};d([R()],Si.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",Si);var ht=(s,r)=>{class e extends s{constructor(){super(...arguments);this._choiceElements=[];this._mutationObserver=null;this._validationMessageShown=!1;this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(o,n)=>{this._choiceElements.forEach(a=>a.disabled=n)};this._handleReadonlyChange=(o,n)=>{this._choiceElements.forEach(a=>a.readonly=n)};this.response="";this._handleValueChange=()=>{this._internals.setFormValue(this.value),this._updateChoiceSelection()}}_handleMaxChoicesChange(o,n){this._determineInputType()}get value(){return Array.isArray(this.response)&&this.response.length===0||this.response===""?null:Array.isArray(this.response)?this.response.join(","):this.response}set value(o){this.maxChoices>1&&(typeof o=="string"||o===null)?this.response=o?o.toString().split(","):[]:this.response=o||""}toggleInternalCorrectResponse(o){let n=this.correctResponse;if(n){let a=Array.isArray(n)?n:[n];this._choiceElements.forEach(l=>{l.internals.states.delete("correct-response"),l.internals.states.delete("incorrect-response"),o&&a.length>0&&(a.includes(l.identifier)?l.internals.states.add("correct-response"):l.internals.states.add("incorrect-response"))})}}toggleCandidateCorrection(o){let n=this.correctResponse;if(!n)return;let a=Array.isArray(n)?n:[n],l=this.response,c=Array.isArray(l)?l:l?[l]:[];this._choiceElements.forEach(p=>{p.internals.states.delete("candidate-correct"),p.internals.states.delete("candidate-incorrect"),o&&c.includes(p.identifier)&&(a.includes(p.identifier)?p.internals.states.add("candidate-correct"):p.internals.states.add("candidate-incorrect"))}),super.toggleCandidateCorrection(o)}connectedCallback(){super.connectedCallback(),this.addEventListener(`activate-${r}`,this._choiceElementSelectedHandler),this._mutationObserver=new MutationObserver(()=>this._syncChoicesFromDOM()),this._mutationObserver.observe(this,{childList:!0,subtree:!0}),this._syncChoicesFromDOM()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`activate-${r}`,this._choiceElementSelectedHandler),this._mutationObserver&&(this._mutationObserver.disconnect(),this._mutationObserver=null)}_syncChoicesFromDOM(){let o=new Set(this._choiceElements);this._choiceElements=Array.from(this.querySelectorAll(r)),this._choiceElements.forEach(a=>{o.has(a)||(this.disabled&&(a.disabled=!0),a.readonly=this.readonly,a.internals&&!a.internals.ariaChecked&&(a.internals.ariaChecked="false"),this._setInputType(a))});let n=new Set(this._choiceElements.map(a=>a.identifier));if(Array.isArray(this.response)){let a=this.response.filter(l=>n.has(l));a.length!==this.response.length&&(this.response=a)}else this.response&&!n.has(this.response)&&(this.response="");this._updateChoiceSelection()}validate(){let n=this._choiceElements.filter(p=>this._getChoiceChecked(p)).length,a=!0,l="";this.maxChoices!==0&&n>this.maxChoices?(a=!1,l=this.dataset.maxSelectionsMessage||`Please select no more than ${this.maxChoices} ${this.maxChoices===1?"option":"options"}.`):n<this.minChoices&&(a=!1,l=this.dataset.minSelectionsMessage||`Please select at least ${this.minChoices} ${this.minChoices===1?"option":"options"}.`);let c=this._choiceElements.find(p=>this.contains(p))||this;return this._internals.setValidity(a?{}:{customError:!0},l,c),a}reportValidity(){return this._validationMessageElement&&(this._internals.validity.valid?(this._validationMessageElement.textContent="",this._validationMessageElement.style.display="none"):(this._validationMessageElement.textContent=this._internals.validationMessage,this._validationMessageElement.style.setProperty("display","block","important"),this._validationMessageShown=!0)),this._internals.validity.valid}_determineInputType(){this._choiceElements.forEach(o=>{this._setInputType(o)})}async _setInputType(o){if(this._internals.role=this.maxChoices===1?"radiogroup":null,o.internals){let n=this.maxChoices===1?"radio":"checkbox";o.internals.role=n,o.internals.states.delete(n==="radio"?"checkbox":"radio"),o.internals.states.add(n)}}_choiceElementSelectedHandler(o){this._toggleChoiceChecked(o.target),this.maxChoices===1?this._choiceElements.forEach(n=>{n.identifier!==o.detail.identifier&&this._setChoiceChecked(n,!1)}):this.maxChoices!==0&&this._configContext?.disableAfterIfMaxChoicesReached&&(this._choiceElements.filter(a=>this._getChoiceChecked(a)).length>=this.maxChoices?this._choiceElements.forEach(a=>{this._getChoiceChecked(a)||(a.disabled=!0)}):this._choiceElements.forEach(a=>a.disabled=!1)),this._handleChoiceSelection()}_setChoiceChecked(o,n){o.internals?.states&&(n?(o.internals.states.add("--checked"),o.internals.ariaChecked="true"):(o.internals.states.delete("--checked"),o.internals.ariaChecked="false"))}_getChoiceChecked(o){return o.internals.states.has("--checked")}_toggleChoiceChecked(o){let n=this._getChoiceChecked(o);this._setChoiceChecked(o,!n)}_handleChoiceSelection(){let n=this._choiceElements.filter(a=>this._getChoiceChecked(a)).map(a=>a.identifier);this.response=this.maxChoices===1?n[0]||"":n,this.validate(),this._validationMessageShown&&(this.reportValidity(),this._internals.validity.valid&&(this._validationMessageShown=!1)),this.saveResponse(this.response)}_updateChoiceSelection(){let o=Array.isArray(this.response)?this.response:[this.response];this._choiceElements.forEach(n=>{let a=o.includes(n.identifier);this._setChoiceChecked(n,a)})}}return d([Ht("#validation-message")],e.prototype,"_validationMessageElement",2),d([b({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),d([b({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),d([U("maxChoices")],e.prototype,"_handleMaxChoicesChange",1),d([U("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),d([U("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),d([R()],e.prototype,"response",2),d([U("response",{waitUntilFirstUpdate:!0})],e.prototype,"_handleValueChange",2),d([R(),P({context:he,subscribe:!0})],e.prototype,"_configContext",2),e};var Ll=(s,r)=>{class e extends s{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"];this._mutationObserver=null}set class(o){o&&(this._classes=o.split(" "),this._addLabels())}get class(){return this._classes?.join(" ")||""}updated(o){super.updated(o),this._addLabels()}connectedCallback(){super.connectedCallback(),this._mutationObserver=new MutationObserver(()=>this._addLabels()),this._mutationObserver.observe(this,{childList:!0,subtree:!0})}disconnectedCallback(){super.disconnectedCallback(),this._mutationObserver?.disconnect(),this._mutationObserver=null}_addLabels(){let o=this._classes.some(a=>this._allLabels.includes(a)||this._allLabelSuffixes.includes(a)),n=a=>!isNaN(+a);if(o){let l=Array.from(this.querySelectorAll("qti-simple-choice")).map(c=>c).map((c,p)=>({el:c,order:n(c.style.order)?+c.style.order:p+1})).sort((c,p)=>c.order-p.order).map(c=>c.el);for(let c=0;c<l.length;c++)l[c].marker=this._getLabel(c+1)}}_getLabel(o){let n=this._classes.filter(c=>this._allLabels.includes(c)).pop(),a=this._classes.filter(c=>this._allLabelSuffixes.includes(c)).pop();!n&&a&&(n="qti-labels-upper-alpha");let l="";switch(n){case"qti-labels-decimal":l=`${o}`;break;case"qti-labels-lower-alpha":l=`${String.fromCharCode(97+o-1)}`;break;case"qti-labels-upper-alpha":l=`${String.fromCharCode(65+o-1)}`;break}return a==="qti-labels-suffix-period"?l+=".":a==="qti-labels-suffix-parenthesis"&&(l+=")"),l}}return d([b({type:String})],e.prototype,"class",1),e};var Pl=S`
4080
+ </div>`}updated(e){super.updated(e),e.has("_childrenMap")&&this.cacheInteractiveElements()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};d([R()],Si.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",Si);var ht=(n,i)=>{class e extends n{constructor(){super(...arguments);this._choiceElements=[];this._mutationObserver=null;this._validationMessageShown=!1;this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(o,s)=>{this._choiceElements.forEach(a=>a.disabled=s)};this._handleReadonlyChange=(o,s)=>{this._choiceElements.forEach(a=>a.readonly=s)};this.response="";this._handleValueChange=()=>{this._internals.setFormValue(this.value),this._updateChoiceSelection()}}_handleMaxChoicesChange(o,s){this._determineInputType()}get value(){return Array.isArray(this.response)&&this.response.length===0||this.response===""?null:Array.isArray(this.response)?this.response.join(","):this.response}set value(o){this.maxChoices>1&&(typeof o=="string"||o===null)?this.response=o?o.toString().split(","):[]:this.response=o||""}toggleInternalCorrectResponse(o){let s=this.correctResponse;if(s){let a=Array.isArray(s)?s:[s];this._choiceElements.forEach(l=>{l.internals.states.delete("correct-response"),l.internals.states.delete("incorrect-response"),o&&a.length>0&&(a.includes(l.identifier)?l.internals.states.add("correct-response"):l.internals.states.add("incorrect-response"))})}}toggleCandidateCorrection(o){let s=this.correctResponse;if(!s)return;let a=Array.isArray(s)?s:[s],l=this.response,c=Array.isArray(l)?l:l?[l]:[];this._choiceElements.forEach(p=>{p.internals.states.delete("candidate-correct"),p.internals.states.delete("candidate-incorrect"),o&&c.includes(p.identifier)&&(a.includes(p.identifier)?p.internals.states.add("candidate-correct"):p.internals.states.add("candidate-incorrect"))}),super.toggleCandidateCorrection(o)}connectedCallback(){super.connectedCallback(),this.addEventListener(`activate-${i}`,this._choiceElementSelectedHandler),this._mutationObserver=new MutationObserver(()=>this._syncChoicesFromDOM()),this._mutationObserver.observe(this,{childList:!0,subtree:!0}),this._syncChoicesFromDOM()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`activate-${i}`,this._choiceElementSelectedHandler),this._mutationObserver&&(this._mutationObserver.disconnect(),this._mutationObserver=null)}_syncChoicesFromDOM(){let o=new Set(this._choiceElements);this._choiceElements=Array.from(this.querySelectorAll(i)),this._choiceElements.forEach(a=>{o.has(a)||(this.disabled&&(a.disabled=!0),a.readonly=this.readonly,a.internals&&!a.internals.ariaChecked&&(a.internals.ariaChecked="false"),this._setInputType(a))});let s=new Set(this._choiceElements.map(a=>a.identifier));if(Array.isArray(this.response)){let a=this.response.filter(l=>s.has(l));a.length!==this.response.length&&(this.response=a)}else this.response&&!s.has(this.response)&&(this.response="");this._updateChoiceSelection()}validate(){let s=this._choiceElements.filter(p=>this._getChoiceChecked(p)).length,a=!0,l="";this.maxChoices!==0&&s>this.maxChoices?(a=!1,l=this.dataset.maxSelectionsMessage||`Please select no more than ${this.maxChoices} ${this.maxChoices===1?"option":"options"}.`):s<this.minChoices&&(a=!1,l=this.dataset.minSelectionsMessage||`Please select at least ${this.minChoices} ${this.minChoices===1?"option":"options"}.`);let c=this._choiceElements.find(p=>this.contains(p))||this;return this._internals.setValidity(a?{}:{customError:!0},l,c),a}reportValidity(){return this._validationMessageElement&&(this._internals.validity.valid?(this._validationMessageElement.textContent="",this._validationMessageElement.style.display="none"):(this._validationMessageElement.textContent=this._internals.validationMessage,this._validationMessageElement.style.setProperty("display","block","important"),this._validationMessageShown=!0)),this._internals.validity.valid}_determineInputType(){this._choiceElements.forEach(o=>{this._setInputType(o)})}async _setInputType(o){if(this._internals.role=this.maxChoices===1?"radiogroup":null,o.internals){let s=this.maxChoices===1?"radio":"checkbox";o.internals.role=s,o.internals.states.delete(s==="radio"?"checkbox":"radio"),o.internals.states.add(s)}}_choiceElementSelectedHandler(o){this._toggleChoiceChecked(o.target),this.maxChoices===1?this._choiceElements.forEach(s=>{s.identifier!==o.detail.identifier&&this._setChoiceChecked(s,!1)}):this.maxChoices!==0&&this._configContext?.disableAfterIfMaxChoicesReached&&(this._choiceElements.filter(a=>this._getChoiceChecked(a)).length>=this.maxChoices?this._choiceElements.forEach(a=>{this._getChoiceChecked(a)||(a.disabled=!0)}):this._choiceElements.forEach(a=>a.disabled=!1)),this._handleChoiceSelection()}_setChoiceChecked(o,s){o.internals?.states&&(s?(o.internals.states.add("--checked"),o.internals.ariaChecked="true"):(o.internals.states.delete("--checked"),o.internals.ariaChecked="false"))}_getChoiceChecked(o){return o.internals.states.has("--checked")}_toggleChoiceChecked(o){let s=this._getChoiceChecked(o);this._setChoiceChecked(o,!s)}_handleChoiceSelection(){let s=this._choiceElements.filter(a=>this._getChoiceChecked(a)).map(a=>a.identifier);this.response=this.maxChoices===1?s[0]||"":s,this.validate(),this._validationMessageShown&&(this.reportValidity(),this._internals.validity.valid&&(this._validationMessageShown=!1)),this.saveResponse(this.response)}_updateChoiceSelection(){let o=Array.isArray(this.response)?this.response:[this.response];this._choiceElements.forEach(s=>{let a=o.includes(s.identifier);this._setChoiceChecked(s,a)})}}return d([Ht("#validation-message")],e.prototype,"_validationMessageElement",2),d([b({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),d([b({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),d([U("maxChoices")],e.prototype,"_handleMaxChoicesChange",1),d([U("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),d([U("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),d([R()],e.prototype,"response",2),d([U("response",{waitUntilFirstUpdate:!0})],e.prototype,"_handleValueChange",2),d([R(),P({context:he,subscribe:!0})],e.prototype,"_configContext",2),e};var Ll=(n,i)=>{class e extends n{#e=[];#t=["qti-labels-none","qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];#r=["qti-labels-suffix-none","qti-labels-suffix-period","qti-labels-suffix-parenthesis"];#i=null;set class(r){this.#e=this.#o(r),this.#s()}get class(){return this.#e.join(" ")}attributeChangedCallback(r,o,s){super.attributeChangedCallback(r,o,s),r==="class"&&o!==s&&(this.class=s??"")}updated(r){super.updated(r),this.#s()}connectedCallback(){super.connectedCallback(),this.class=this.getAttribute("class")??"",this.#i=new MutationObserver(r=>{r.some(o=>o.type==="childList"||o.type==="attributes"&&o.attributeName==="style")&&this.#s()}),this.#i.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]})}disconnectedCallback(){super.disconnectedCallback(),this.#i?.disconnect(),this.#i=null}#o(r){return r?r.split(/\s+/).map(o=>o.trim()).filter(Boolean).filter((o,s,a)=>a.indexOf(o)===s):[]}#s(){let r=Array.from(this.querySelectorAll("qti-simple-choice")).map(l=>l),o=this.#n(r),s=this.#a(),a=this.#c();o.forEach((l,c)=>{l.marker=this.#d(c+1,s,a)})}#n(r){return r.map((o,s)=>{let a=Number(o.style.order);return{el:o,order:Number.isFinite(a)?a:s+1,index:s}}).sort((o,s)=>o.order-s.order||o.index-s.index).map(o=>o.el)}#a(){return this.#e.filter(r=>this.#t.includes(r)).pop()??null}#c(){return this.#e.filter(r=>this.#r.includes(r)).pop()??null}#d(r,o,s){let a=o;if(!a&&s&&s!=="qti-labels-suffix-none"&&(a="qti-labels-upper-alpha"),!a||a==="qti-labels-none")return"";let l="";switch(a){case"qti-labels-decimal":l=`${r}`;break;case"qti-labels-lower-alpha":l=this.#l(r,"lower");break;case"qti-labels-upper-alpha":l=this.#l(r,"upper");break}return s==="qti-labels-suffix-period"?`${l}.`:s==="qti-labels-suffix-parenthesis"?`${l})`:l}#l(r,o){let s=r,a="",l=o==="lower"?97:65;for(;s>0;)s-=1,a=String.fromCharCode(l+s%26)+a,s=Math.floor(s/26);return a}}return d([b({type:String,attribute:"class"})],e.prototype,"class",1),e};var Pl=S`
4081
4081
  :host {
4082
4082
  display: block;
4083
4083
  }
@@ -4262,7 +4262,7 @@ CES.load();
4262
4262
  requestBlobUrl();
4263
4263
  }
4264
4264
  })();
4265
- `,Ge=class extends ${constructor(){super();this.#e="";this.#t=null;this.#r=null;this._errorMessage=null;this.#i=null;this.handlePostMessage=this.handlePostMessage.bind(this)}#e;#t;#r;static{this.styles=Dl}#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let i=this.querySelector("object[data]");if(i){e=i.getAttribute("data");let o=i.getAttribute("width"),n=i.getAttribute("height");o&&this.setAttribute("width",o),n&&this.setAttribute("height",n)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:Ki((this.baseItemUrl||"")+"/"+e);this.#t=new URL(t,window.location.href).toString(),fetch(t).then(i=>i.json()).then(i=>{this.manifest=i,this.setupCES()}).catch(i=>{this._errorMessage=i})}async setupCES(){await this.updateComplete;let e=this.shadowRoot?.querySelector("#pciContainer");if(!e){this._errorMessage="pciContainer iframe not found";return}e.getAttribute("src")||e.setAttribute("src","about:blank");let t=e.contentDocument??e.contentWindow?.document??null;if(t||(await new Promise(h=>e.addEventListener("load",()=>h(),{once:!0})),t=e.contentDocument??e.contentWindow?.document??null),!t){this._errorMessage="pciContainer iframe document not available";return}if(!this.manifest.script||this.manifest.script.length===0){this._errorMessage="No script found in manifest";return}if(!this.manifest.style||this.manifest.style.length===0){this._errorMessage="No style found in manifest";return}let i=this.manifest.style[0],o=this.#a(),n=await this.#l(i,o),a=n.url;if(n.baseUrl&&!this.#r&&(this.#r=n.baseUrl),!0){let h="";if(this.manifest.media&&this.manifest.media.length>0){let m=this.manifest.media[0],y=await this.#l(m,o,{returnText:!0});if(h=y.url,y.baseUrl&&!this.#r&&(this.#r=y.baseUrl),y.text){let v=y.text;if(!(v.includes("postToParentWindows")||v.includes("window.CES"))){let u="<script>"+Fs+"</script>",g=v.indexOf("<head>");g!==-1?v=v.slice(0,g+6)+u+v.slice(g+6):v=u+v}let f=new Blob([v],{type:"text/html"});this.#i=URL.createObjectURL(f)}}else{let m=this.data||"manifest.json",y=m.includes("/")?m.substring(0,m.lastIndexOf("/")):"",v=y?`${y}/index.html`:"index.html",w=await this.#l(v,o,{returnText:!0});if(h=w.url,w.baseUrl&&!this.#r&&(this.#r=w.baseUrl),w.text){let f=w.text;if(!(f.includes("postToParentWindows")||f.includes("window.CES"))){let q="<script>"+Fs+"</script>",T=f.indexOf("<head>");T!==-1?f=f.slice(0,T+6)+q+f.slice(T+6):f=q+f}let g=new Blob([f],{type:"text/html"});this.#i=URL.createObjectURL(g)}}if(h&&!this.#i)try{let m=await fetch(h);if(m.ok){let y=await m.text();if(!(y.includes("postToParentWindows")||y.includes("window.CES"))){let f="<script>"+Fs+"</script>",u=y.indexOf("<head>");u!==-1?y=y.slice(0,u+6)+f+y.slice(u+6):y=f+y}let w=new Blob([y],{type:"text/html"});this.#i=URL.createObjectURL(w)}else console.error(`Failed to fetch index.html: ${m.status}`)}catch(m){console.error(`Error fetching index.html: ${m}`)}}let c=`<script>${cd}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
4265
+ `,Ge=class extends ${constructor(){super();this.#e="";this.#t=null;this.#r=null;this._errorMessage=null;this.#i=null;this.handlePostMessage=this.handlePostMessage.bind(this)}#e;#t;#r;static{this.styles=Dl}#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let r=this.querySelector("object[data]");if(r){e=r.getAttribute("data");let o=r.getAttribute("width"),s=r.getAttribute("height");o&&this.setAttribute("width",o),s&&this.setAttribute("height",s)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:Ki((this.baseItemUrl||"")+"/"+e);this.#t=new URL(t,window.location.href).toString(),fetch(t).then(r=>r.json()).then(r=>{this.manifest=r,this.setupCES()}).catch(r=>{this._errorMessage=r})}async setupCES(){await this.updateComplete;let e=this.shadowRoot?.querySelector("#pciContainer");if(!e){this._errorMessage="pciContainer iframe not found";return}e.getAttribute("src")||e.setAttribute("src","about:blank");let t=e.contentDocument??e.contentWindow?.document??null;if(t||(await new Promise(h=>e.addEventListener("load",()=>h(),{once:!0})),t=e.contentDocument??e.contentWindow?.document??null),!t){this._errorMessage="pciContainer iframe document not available";return}if(!this.manifest.script||this.manifest.script.length===0){this._errorMessage="No script found in manifest";return}if(!this.manifest.style||this.manifest.style.length===0){this._errorMessage="No style found in manifest";return}let r=this.manifest.style[0],o=this.#a(),s=await this.#l(r,o),a=s.url;if(s.baseUrl&&!this.#r&&(this.#r=s.baseUrl),!0){let h="";if(this.manifest.media&&this.manifest.media.length>0){let m=this.manifest.media[0],y=await this.#l(m,o,{returnText:!0});if(h=y.url,y.baseUrl&&!this.#r&&(this.#r=y.baseUrl),y.text){let v=y.text;if(!(v.includes("postToParentWindows")||v.includes("window.CES"))){let u="<script>"+Fs+"</script>",g=v.indexOf("<head>");g!==-1?v=v.slice(0,g+6)+u+v.slice(g+6):v=u+v}let f=new Blob([v],{type:"text/html"});this.#i=URL.createObjectURL(f)}}else{let m=this.data||"manifest.json",y=m.includes("/")?m.substring(0,m.lastIndexOf("/")):"",v=y?`${y}/index.html`:"index.html",w=await this.#l(v,o,{returnText:!0});if(h=w.url,w.baseUrl&&!this.#r&&(this.#r=w.baseUrl),w.text){let f=w.text;if(!(f.includes("postToParentWindows")||f.includes("window.CES"))){let q="<script>"+Fs+"</script>",T=f.indexOf("<head>");T!==-1?f=f.slice(0,T+6)+q+f.slice(T+6):f=q+f}let g=new Blob([f],{type:"text/html"});this.#i=URL.createObjectURL(g)}}if(h&&!this.#i)try{let m=await fetch(h);if(m.ok){let y=await m.text();if(!(y.includes("postToParentWindows")||y.includes("window.CES"))){let f="<script>"+Fs+"</script>",u=y.indexOf("<head>");u!==-1?y=y.slice(0,u+6)+f+y.slice(u+6):y=f+y}let w=new Blob([y],{type:"text/html"});this.#i=URL.createObjectURL(w)}else console.error(`Failed to fetch index.html: ${m.status}`)}catch(m){console.error(`Error fetching index.html: ${m}`)}}let c=`<script>${cd}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
4266
4266
  <!DOCTYPE html>
4267
4267
  <html>
4268
4268
  <head>
@@ -4271,7 +4271,7 @@ CES.load();
4271
4271
  </head>
4272
4272
  <body></body>
4273
4273
  </html>
4274
- `;e.srcdoc=p}#o(){let e=this.shadowRoot.querySelectorAll("iframe"),t=this.querySelectorAll("iframe"),i=[...e,...t];for(let o of i){let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let l=o.contentDocument||o.contentWindow.document;l&&this.#s(l,i)}catch(l){console.error("Error accessing nested iframe:",l)}}return i.forEach((o,n)=>{i.indexOf(o)!==n&&i.splice(n,1)}),i}#s(e,t=[]){return e.querySelectorAll("iframe").forEach(o=>{t.push(o);let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let l=o.contentDocument||o.contentWindow.document;this.#s(l,t)}catch(l){console.error("Error accessing nested iframe:",l)}else console.warn("Skipped cross-origin iframe:",n)}),t}#n(e,t){window.postMessage({type:e,data:t},"*");let i=this.#o();for(let o of i)o.contentWindow&&o.contentWindow.postMessage({type:e,data:t},"*")}handlePostMessage(e){let{type:t,data:i}=e.data;switch(t){case"setResponse":(i===null||!(Array.isArray(i)&&i.length===1&&i[0]===""))&&(this.#e=i,this.saveResponse(i));break;case"getResponse":{this.#n("responseData",this.#e);break}case"getBlobUrl":{this.#i&&(this.#n("blobUrl",this.#i),e.source&&e.source!==window&&e.source.postMessage({type:"blobUrl",data:this.#i},"*"));break}case"getMedia":{let o=this.#a(),n=this.manifest.media.map(a=>{if(a.startsWith("http")||a.startsWith("blob"))return a;let l=this.#r||o[0];return l?new URL(a,l.endsWith("/")?l:`${l}/`).toString():a});this.#n("mediaData",n);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){if(!this.#e)return!1;if(Array.isArray(this.#e)){if(this.#e.length===0)return!1;for(let e of this.#e)if(e!==""&&e!==null)return!0}return!0}get response(){return this.#e||null}set response(e){if(typeof e=="string")this.#e=e,this.saveResponse(e);else if(Array.isArray(e))this.#e=e;else if(e)throw new Error("Value must be a string or an array of strings")}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return x`<iframe
4274
+ `;e.srcdoc=p}#o(){let e=this.shadowRoot.querySelectorAll("iframe"),t=this.querySelectorAll("iframe"),r=[...e,...t];for(let o of r){let s=o.src;if(new URL(s,window.location.href).origin===window.location.origin)try{let l=o.contentDocument||o.contentWindow.document;l&&this.#s(l,r)}catch(l){console.error("Error accessing nested iframe:",l)}}return r.forEach((o,s)=>{r.indexOf(o)!==s&&r.splice(s,1)}),r}#s(e,t=[]){return e.querySelectorAll("iframe").forEach(o=>{t.push(o);let s=o.src;if(new URL(s,window.location.href).origin===window.location.origin)try{let l=o.contentDocument||o.contentWindow.document;this.#s(l,t)}catch(l){console.error("Error accessing nested iframe:",l)}else console.warn("Skipped cross-origin iframe:",s)}),t}#n(e,t){window.postMessage({type:e,data:t},"*");let r=this.#o();for(let o of r)o.contentWindow&&o.contentWindow.postMessage({type:e,data:t},"*")}handlePostMessage(e){let{type:t,data:r}=e.data;switch(t){case"setResponse":(r===null||!(Array.isArray(r)&&r.length===1&&r[0]===""))&&(this.#e=r,this.saveResponse(r));break;case"getResponse":{this.#n("responseData",this.#e);break}case"getBlobUrl":{this.#i&&(this.#n("blobUrl",this.#i),e.source&&e.source!==window&&e.source.postMessage({type:"blobUrl",data:this.#i},"*"));break}case"getMedia":{let o=this.#a(),s=this.manifest.media.map(a=>{if(a.startsWith("http")||a.startsWith("blob"))return a;let l=this.#r||o[0];return l?new URL(a,l.endsWith("/")?l:`${l}/`).toString():a});this.#n("mediaData",s);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){if(!this.#e)return!1;if(Array.isArray(this.#e)){if(this.#e.length===0)return!1;for(let e of this.#e)if(e!==""&&e!==null)return!0}return!0}get response(){return this.#e||null}set response(e){if(typeof e=="string")this.#e=e,this.saveResponse(e);else if(Array.isArray(e))this.#e=e;else if(e)throw new Error("Value must be a string or an array of strings")}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return x`<iframe
4275
4275
  width=${this.getAttribute("width")}
4276
4276
  height=${this.getAttribute("height")}
4277
4277
  frameborder="0"
@@ -4282,7 +4282,7 @@ CES.load();
4282
4282
  ${this._errorMessage&&x`<div style="color:red">
4283
4283
  <h1>Error</h1>
4284
4284
  ${this._errorMessage}
4285
- </div>`}`}#a(){let t=[this.#r,this.baseRefUrl,this.baseItemUrl,this.#c()].filter(Boolean).map(o=>new URL(o,window.location.href).toString()),i=this.#d();return i&&t.push(i),[...new Set(t)]}#c(){return this.#t?new URL(".",this.#t).toString():null}#d(){return this.#t?new URL("..",this.#t).toString():null}async#l(e,t,i={}){if(!e)return{url:"",baseUrl:null};if(e.startsWith("http")||e.startsWith("blob"))return{url:e,baseUrl:null};for(let o of t){let n=new URL(o,window.location.href).toString(),a=new URL(e,n.endsWith("/")?n:`${n}/`).toString();try{let l=await fetch(a);if(l.ok){if(i.returnText){let c=await l.text();return{url:a,baseUrl:n,text:c}}return{url:a,baseUrl:n}}}catch{}}return{url:"",baseUrl:null}}};d([b({type:String,attribute:"data"})],Ge.prototype,"data",2),d([b({type:String,attribute:"data-base-item"})],Ge.prototype,"baseItemUrl",2),d([b({type:String,attribute:"data-base-ref"})],Ge.prototype,"baseRefUrl",2),d([b({type:String,attribute:"id"})],Ge.prototype,"id",2),d([R()],Ge.prototype,"_errorMessage",2);customElements.define("qti-custom-interaction",Ge);var $l=S``;var ft=class extends C{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}static{this.styles=$l}render(){return x`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};d([b({type:String,attribute:"response-identifier"})],ft.prototype,"responseIdentifier",2),d([b({reflect:!0,type:Boolean})],ft.prototype,"disabled",2),d([b({type:String,attribute:"count-attempt"})],ft.prototype,"countAttempt",2),d([b({type:String})],ft.prototype,"title",2);customElements.define("qti-end-attempt-interaction",ft);var Ol=S`
4285
+ </div>`}`}#a(){let t=[this.#r,this.baseRefUrl,this.baseItemUrl,this.#c()].filter(Boolean).map(o=>new URL(o,window.location.href).toString()),r=this.#d();return r&&t.push(r),[...new Set(t)]}#c(){return this.#t?new URL(".",this.#t).toString():null}#d(){return this.#t?new URL("..",this.#t).toString():null}async#l(e,t,r={}){if(!e)return{url:"",baseUrl:null};if(e.startsWith("http")||e.startsWith("blob"))return{url:e,baseUrl:null};for(let o of t){let s=new URL(o,window.location.href).toString(),a=new URL(e,s.endsWith("/")?s:`${s}/`).toString();try{let l=await fetch(a);if(l.ok){if(r.returnText){let c=await l.text();return{url:a,baseUrl:s,text:c}}return{url:a,baseUrl:s}}}catch{}}return{url:"",baseUrl:null}}};d([b({type:String,attribute:"data"})],Ge.prototype,"data",2),d([b({type:String,attribute:"data-base-item"})],Ge.prototype,"baseItemUrl",2),d([b({type:String,attribute:"data-base-ref"})],Ge.prototype,"baseRefUrl",2),d([b({type:String,attribute:"id"})],Ge.prototype,"id",2),d([R()],Ge.prototype,"_errorMessage",2);customElements.define("qti-custom-interaction",Ge);var $l=S``;var ft=class extends C{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}static{this.styles=$l}render(){return x`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};d([b({type:String,attribute:"response-identifier"})],ft.prototype,"responseIdentifier",2),d([b({reflect:!0,type:Boolean})],ft.prototype,"disabled",2),d([b({type:String,attribute:"count-attempt"})],ft.prototype,"countAttempt",2),d([b({type:String})],ft.prototype,"title",2);customElements.define("qti-end-attempt-interaction",ft);var Ol=S`
4286
4286
  /* PK: display host as block, else design will be collapsed */
4287
4287
  :host {
4288
4288
  display: block;
@@ -4293,7 +4293,7 @@ CES.load();
4293
4293
  height: 100%;
4294
4294
  border: 0;
4295
4295
  }
4296
- `;var me=class extends ${constructor(){super(...arguments);this._rows=5;this.response=null;this._handleResponseChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=Ol}handleclassNamesChange(e,t){let i=t.split(" "),o=!1;if(i.forEach(n=>{if(n.startsWith("qti-height-lines-")){let a=n.replace("qti-height-lines-","");this._rows=parseInt(a),o=!0}}),!o&&this.expectedLength){let n=Math.ceil(this.expectedLength/50);this._rows=n}}get value(){return this.response||null}set value(e){this.response=e||null}validate(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;if(this.patternMask&&this.dataPatternmaskMessage){this._internals.setValidity({}),e.setCustomValidity("");let t=this.patternMask.startsWith("^")&&this.patternMask.endsWith("$")?this.patternMask:`^${this.patternMask}$`,i=new RegExp(t);e.checkValidity()&&i.test(e.value)||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),e.setCustomValidity(this.dataPatternmaskMessage))}else{let t=e.checkValidity();this._internals.setValidity(t?{}:{customError:!1})}return!!this.response&&e.checkValidity()}toggleCorrectResponse(){}reportValidity(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}render(){return x`<slot name="prompt"></slot
4296
+ `;var me=class extends ${constructor(){super(...arguments);this._rows=5;this.response=null;this._handleResponseChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=Ol}handleclassNamesChange(e,t){let r=t.split(" "),o=!1;if(r.forEach(s=>{if(s.startsWith("qti-height-lines-")){let a=s.replace("qti-height-lines-","");this._rows=parseInt(a),o=!0}}),!o&&this.expectedLength){let s=Math.ceil(this.expectedLength/50);this._rows=s}}get value(){return this.response||null}set value(e){this.response=e||null}validate(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;if(this.patternMask&&this.dataPatternmaskMessage){this._internals.setValidity({}),e.setCustomValidity("");let t=this.patternMask.startsWith("^")&&this.patternMask.endsWith("$")?this.patternMask:`^${this.patternMask}$`,r=new RegExp(t);e.checkValidity()&&r.test(e.value)||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),e.setCustomValidity(this.dataPatternmaskMessage))}else{let t=e.checkValidity();this._internals.setValidity(t?{}:{customError:!1})}return!!this.response&&e.checkValidity()}toggleCorrectResponse(){}reportValidity(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}render(){return x`<slot name="prompt"></slot
4297
4297
  ><textarea
4298
4298
  part="textarea"
4299
4299
  name="${this.responseIdentifier}"
@@ -4346,7 +4346,7 @@ CES.load();
4346
4346
  `;var dd=we($,"qti-gap-text","qti-gap","slot[part='drags']"),Lo=class extends Ce(dd,'[qti-draggable="true"]'){static{this.styles=Vl}render(){return x`<slot name="prompt"> </slot>
4347
4347
  <slot part="drags" name="drags"></slot>
4348
4348
  <slot part="drops"></slot>
4349
- <div role="alert" part="message" id="validation-message"></div>`}toggleCorrectResponse(r){let e=this.responseVariable;if(r&&e?.correctResponse){let t=[],i=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse];i&&(t=i.map(n=>{let a=n.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(n=>{let a=n.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,c=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&c){if(!n.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=c,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",n.insertAdjacentElement("afterend",p)}}else n.nextElementSibling?.classList.contains("correct-option")&&n.nextElementSibling.remove()})}else this.querySelectorAll(".correct-option").forEach(i=>{i.remove()})}#e(r){if(!r.correctResponse)return[];let e=Array.isArray(r.correctResponse)?r.correctResponse:[r.correctResponse],t=[];return e&&e.forEach(i=>{let o=i.split(" ");t.push({source:o[0],target:o[1]})}),t}toggleCandidateCorrection(r){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(o=>{let n=o.getAttribute("identifier"),a=t.filter(c=>c.target===n);o.querySelectorAll("qti-gap-text").forEach(c=>{if(c.internals.states.delete("candidate-correct"),c.internals.states.delete("candidate-incorrect"),!r)return;a.find(h=>h.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",Lo);var Nl=(s,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(s[i],i);return t},br=ae(class extends ke{constructor(s){if(super(s),s.type!==tt.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],o=[],n=0;for(let a of s)i[n]=t?t(a,n):n,o[n]=e(a,n),n++;return{values:o,keys:i}}render(s,r,e){return this.dt(s,r,e).values}update(s,[r,e,t]){let i=na(s),{values:o,keys:n}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=n,o;let a=this.ut??=[],l=[],c,p,h=0,m=i.length-1,y=0,v=o.length-1;for(;h<=m&&y<=v;)if(i[h]===null)h++;else if(i[m]===null)m--;else if(a[h]===n[y])l[y]=rt(i[h],o[y]),h++,y++;else if(a[m]===n[v])l[v]=rt(i[m],o[v]),m--,v--;else if(a[h]===n[v])l[v]=rt(i[h],o[v]),Qt(s,l[v+1],i[h]),h++,v--;else if(a[m]===n[y])l[y]=rt(i[m],o[y]),Qt(s,i[h],i[m]),m--,y++;else if(c===void 0&&(c=Nl(n,y,v),p=Nl(a,h,m)),c.has(a[h]))if(c.has(a[m])){let w=p.get(n[y]),f=w!==void 0?i[w]:null;if(f===null){let u=Qt(s,i[h]);rt(u,o[y]),l[y]=u}else l[y]=rt(f,o[y]),Qt(s,i[h],f),i[w]=null;y++}else Ji(i[m]),m--;else Ji(i[h]),h++;for(;y<=v;){let w=Qt(s,l[v+1]);rt(w,o[y]),l[y++]=w}for(;h<=m;){let w=i[h++];w!==null&&Ji(w)}return this.ut=n,sa(s,l),X}});function gt(s,r,e,t){let i=e.getAttribute("width")?parseFloat(e.getAttribute("width")):e.naturalWidth,o=e.getAttribute("height")?parseFloat(e.getAttribute("height")):e.naturalHeight;switch(s){case"circle":{if(r.length!==3){console.error("Invalid circle coordinates:",r);return}let[n,a,l]=r,c=n/i*100,p=a/o*100,h=l/i*100,m=l/o*100;t.style.left=c-h+"%",t.style.top=p-m+"%",t.style.width=2*h+"%",t.style.height=2*m+"%",t.style.borderRadius="50%"}break;case"rect":{if(r.length!==4){console.error("Invalid rectangle coordinates:",r);return}let[n,a,l,c]=r,p=n/i*100,h=a/o*100,m=l/i*100,y=c/o*100;t.style.left=p+"%",t.style.top=h+"%",t.style.width=m-p+"%",t.style.height=y-h+"%"}break;case"ellipse":{if(r.length!==4){console.error("Invalid ellipse coordinates:",r);return}let[n,a,l,c]=r,p=n/i*100,h=a/o*100,m=l/i*100,y=c/o*100;t.style.left=p-m+"%",t.style.top=h-y+"%",t.style.width=2*m+"%",t.style.height=2*y+"%",t.style.borderRadius="50%"}break;case"poly":{if(r.length<6||r.length%2!==0){console.error("Invalid polygon coordinates:",r);return}let n=[];for(let u=0;u<r.length;u+=2)n.push({x:r[u],y:r[u+1]});let a=Math.min(...n.map(u=>u.x)),l=Math.max(...n.map(u=>u.x)),c=Math.min(...n.map(u=>u.y)),p=Math.max(...n.map(u=>u.y)),h=a/i*100,m=c/o*100,y=l/i*100,v=p/o*100;t.style.left=h+"%",t.style.top=m+"%",t.style.width=y-h+"%",t.style.height=v-m+"%";let f=n.map(u=>({x:(u.x-a)/(l-a)*100,y:(u.y-c)/(p-c)*100})).map(u=>`${u.x}% ${u.y}%`).join(",");t.style.clipPath=`polygon(${f})`}break;default:console.error(`Unsupported shape: ${s}`);break}}var Hl=S`
4349
+ <div role="alert" part="message" id="validation-message"></div>`}toggleCorrectResponse(i){let e=this.responseVariable;if(i&&e?.correctResponse){let t=[],r=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse];r&&(t=r.map(s=>{let a=s.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(s=>{let a=s.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,c=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&c){if(!s.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=c,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",s.insertAdjacentElement("afterend",p)}}else s.nextElementSibling?.classList.contains("correct-option")&&s.nextElementSibling.remove()})}else this.querySelectorAll(".correct-option").forEach(r=>{r.remove()})}#e(i){if(!i.correctResponse)return[];let e=Array.isArray(i.correctResponse)?i.correctResponse:[i.correctResponse],t=[];return e&&e.forEach(r=>{let o=r.split(" ");t.push({source:o[0],target:o[1]})}),t}toggleCandidateCorrection(i){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(o=>{let s=o.getAttribute("identifier"),a=t.filter(c=>c.target===s);o.querySelectorAll("qti-gap-text").forEach(c=>{if(c.internals.states.delete("candidate-correct"),c.internals.states.delete("candidate-incorrect"),!i)return;a.find(h=>h.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",Lo);var Nl=(n,i,e)=>{let t=new Map;for(let r=i;r<=e;r++)t.set(n[r],r);return t},br=ae(class extends ke{constructor(n){if(super(n),n.type!==tt.CHILD)throw Error("repeat() can only be used in text expressions")}dt(n,i,e){let t;e===void 0?e=i:i!==void 0&&(t=i);let r=[],o=[],s=0;for(let a of n)r[s]=t?t(a,s):s,o[s]=e(a,s),s++;return{values:o,keys:r}}render(n,i,e){return this.dt(n,i,e).values}update(n,[i,e,t]){let r=na(n),{values:o,keys:s}=this.dt(i,e,t);if(!Array.isArray(r))return this.ut=s,o;let a=this.ut??=[],l=[],c,p,h=0,m=r.length-1,y=0,v=o.length-1;for(;h<=m&&y<=v;)if(r[h]===null)h++;else if(r[m]===null)m--;else if(a[h]===s[y])l[y]=rt(r[h],o[y]),h++,y++;else if(a[m]===s[v])l[v]=rt(r[m],o[v]),m--,v--;else if(a[h]===s[v])l[v]=rt(r[h],o[v]),Qt(n,l[v+1],r[h]),h++,v--;else if(a[m]===s[y])l[y]=rt(r[m],o[y]),Qt(n,r[h],r[m]),m--,y++;else if(c===void 0&&(c=Nl(s,y,v),p=Nl(a,h,m)),c.has(a[h]))if(c.has(a[m])){let w=p.get(s[y]),f=w!==void 0?r[w]:null;if(f===null){let u=Qt(n,r[h]);rt(u,o[y]),l[y]=u}else l[y]=rt(f,o[y]),Qt(n,r[h],f),r[w]=null;y++}else Ji(r[m]),m--;else Ji(r[h]),h++;for(;y<=v;){let w=Qt(n,l[v+1]);rt(w,o[y]),l[y++]=w}for(;h<=m;){let w=r[h++];w!==null&&Ji(w)}return this.ut=s,sa(n,l),X}});function gt(n,i,e,t){let r=e.getAttribute("width")?parseFloat(e.getAttribute("width")):e.naturalWidth,o=e.getAttribute("height")?parseFloat(e.getAttribute("height")):e.naturalHeight;switch(n){case"circle":{if(i.length!==3){console.error("Invalid circle coordinates:",i);return}let[s,a,l]=i,c=s/r*100,p=a/o*100,h=l/r*100,m=l/o*100;t.style.left=c-h+"%",t.style.top=p-m+"%",t.style.width=2*h+"%",t.style.height=2*m+"%",t.style.borderRadius="50%"}break;case"rect":{if(i.length!==4){console.error("Invalid rectangle coordinates:",i);return}let[s,a,l,c]=i,p=s/r*100,h=a/o*100,m=l/r*100,y=c/o*100;t.style.left=p+"%",t.style.top=h+"%",t.style.width=m-p+"%",t.style.height=y-h+"%"}break;case"ellipse":{if(i.length!==4){console.error("Invalid ellipse coordinates:",i);return}let[s,a,l,c]=i,p=s/r*100,h=a/o*100,m=l/r*100,y=c/o*100;t.style.left=p-m+"%",t.style.top=h-y+"%",t.style.width=2*m+"%",t.style.height=2*y+"%",t.style.borderRadius="50%"}break;case"poly":{if(i.length<6||i.length%2!==0){console.error("Invalid polygon coordinates:",i);return}let s=[];for(let u=0;u<i.length;u+=2)s.push({x:i[u],y:i[u+1]});let a=Math.min(...s.map(u=>u.x)),l=Math.max(...s.map(u=>u.x)),c=Math.min(...s.map(u=>u.y)),p=Math.max(...s.map(u=>u.y)),h=a/r*100,m=c/o*100,y=l/r*100,v=p/o*100;t.style.left=h+"%",t.style.top=m+"%",t.style.width=y-h+"%",t.style.height=v-m+"%";let f=s.map(u=>({x:(u.x-a)/(l-a)*100,y:(u.y-c)/(p-c)*100})).map(u=>`${u.x}% ${u.y}%`).join(",");t.style.clipPath=`polygon(${f})`}break;default:console.error(`Unsupported shape: ${n}`);break}}var Hl=S`
4350
4350
  slot:not([name='prompt']) {
4351
4351
  // position: relative; /* qti-hotspot-choice relative to the slot */
4352
4352
  display: block;
@@ -4370,7 +4370,7 @@ CES.load();
4370
4370
  top: 0px;
4371
4371
  left: 0px;
4372
4372
  }
4373
- `;var Xe=class extends ${constructor(){super();this.#t=null;this.#r=null;this._correctLines=[];this._response=[];this.addEventListener("qti-register-hotspot",this.#s)}static{this.styles=Hl}#e;#t;#r;reset(){this._response=[],this._correctLines=[]}validate(){return this.#o().length>0}set response(e){this._response=this.#i(e)}get response(){return this._response}#i(e){return e==null||e===""?[]:Array.isArray(e)?e:[e]}#o(){return this.#i(this._response)}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(!e||!t){this._correctLines=[];return}if(!t.correctResponse){console.error("No correct response found for this interaction.");return}let i=Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse];this._correctLines=i}render(){return x`<slot name="prompt"></slot>
4373
+ `;var Xe=class extends ${constructor(){super();this.#t=null;this.#r=null;this._correctLines=[];this._response=[];this.addEventListener("qti-register-hotspot",this.#s)}static{this.styles=Hl}#e;#t;#r;reset(){this._response=[],this._correctLines=[]}validate(){return this.#o().length>0}set response(e){this._response=this.#i(e)}get response(){return this._response}#i(e){return e==null||e===""?[]:Array.isArray(e)?e:[e]}#o(){return this.#i(this._response)}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(!e||!t){this._correctLines=[];return}if(!t.correctResponse){console.error("No correct response found for this interaction.");return}let r=Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse];this._correctLines=r}render(){return x`<slot name="prompt"></slot>
4374
4374
  <line-container>
4375
4375
  <svg
4376
4376
  width=${Me(this.grImage[0]?.width)}
@@ -4386,7 +4386,7 @@ CES.load();
4386
4386
  y2=${parseInt(this.querySelector(`[identifier=${e.split(" ")[1]}]`).style.top)}
4387
4387
  stroke="red"
4388
4388
  stroke-width="3"
4389
- @click=${i=>{i.stopPropagation(),this._response=this._response.filter((o,n)=>n!==t),this.saveResponse(this.response)}}
4389
+ @click=${r=>{r.stopPropagation(),this._response=this._response.filter((o,s)=>s!==t),this.saveResponse(this.response)}}
4390
4390
  />
4391
4391
  `)}
4392
4392
  ${br(this._correctLines||[],e=>e,(e,t)=>Xi`
@@ -4413,7 +4413,7 @@ CES.load();
4413
4413
  </svg>
4414
4414
  <slot></slot>
4415
4415
  </line-container>
4416
- <div role="alert" part="message" id="validation-message"></div>`}#s(e){let t=this.querySelector("img"),i=e.target,o=i.getAttribute("coords"),n=i.getAttribute("shape"),a=o.split(",").map(l=>parseInt(l));gt(n,a,t,i)}firstUpdated(){this.#e=this.querySelectorAll("qti-associable-hotspot"),this.addEventListener("mousemove",e=>{let t=this.grImage[0];if(!t)return;let i=t.getBoundingClientRect();this.mouseCoord={x:e.clientX-i.left,y:e.clientY-i.top}}),this.#e.forEach(e=>{e.style.left=e.getAttribute("coords").split(",")[0]+"px",e.style.top=e.getAttribute("coords").split(",")[1]+"px",e.addEventListener("click",t=>{this.#t?this.#r||(this.#r=t.target,this._response=this.#o(),this._response=[...this._response,`${this.#t.getAttribute("identifier")} ${this.#r.getAttribute("identifier")}`],this.saveResponse(this.response),this.#t=null,this.#r=null):(this.#t=t.target,this.startCoord={x:parseInt(this.#t.getAttribute("coords").split(",")[0]),y:parseInt(this.#t.getAttribute("coords").split(",")[1])})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.#s)}};d([R()],Xe.prototype,"_correctLines",2),d([R()],Xe.prototype,"startCoord",2),d([R()],Xe.prototype,"mouseCoord",2),d([Un({selector:"img"})],Xe.prototype,"grImage",2),d([R()],Xe.prototype,"_response",2);customElements.define("qti-graphic-associate-interaction",Xe);var Fl=S`
4416
+ <div role="alert" part="message" id="validation-message"></div>`}#s(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),s=r.getAttribute("shape"),a=o.split(",").map(l=>parseInt(l));gt(s,a,t,r)}firstUpdated(){this.#e=this.querySelectorAll("qti-associable-hotspot"),this.addEventListener("mousemove",e=>{let t=this.grImage[0];if(!t)return;let r=t.getBoundingClientRect();this.mouseCoord={x:e.clientX-r.left,y:e.clientY-r.top}}),this.#e.forEach(e=>{e.style.left=e.getAttribute("coords").split(",")[0]+"px",e.style.top=e.getAttribute("coords").split(",")[1]+"px",e.addEventListener("click",t=>{this.#t?this.#r||(this.#r=t.target,this._response=this.#o(),this._response=[...this._response,`${this.#t.getAttribute("identifier")} ${this.#r.getAttribute("identifier")}`],this.saveResponse(this.response),this.#t=null,this.#r=null):(this.#t=t.target,this.startCoord={x:parseInt(this.#t.getAttribute("coords").split(",")[0]),y:parseInt(this.#t.getAttribute("coords").split(",")[1])})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.#s)}};d([R()],Xe.prototype,"_correctLines",2),d([R()],Xe.prototype,"startCoord",2),d([R()],Xe.prototype,"mouseCoord",2),d([Un({selector:"img"})],Xe.prototype,"grImage",2),d([R()],Xe.prototype,"_response",2);customElements.define("qti-graphic-associate-interaction",Xe);var Fl=S`
4417
4417
  :host {
4418
4418
  display: flex;
4419
4419
  align-items: flex-start;
@@ -4470,7 +4470,7 @@ CES.load();
4470
4470
  `;var pd=we($,"qti-gap-img, qti-gap-text","qti-associable-hotspot","slot[part='drags']"),Po=class extends Ce(pd,'[qti-draggable="true"]'){static{this.styles=Fl}render(){return x` <slot name="prompt"></slot>
4471
4471
  <slot part="image"></slot>
4472
4472
  <slot part="drags" name="drags" class="hover-border"></slot>
4473
- <div role="alert" part="message" id="validation-message"></div>`}shouldReturnToInventoryOnInventoryDrop(){return!0}#e(r){let e=r.target,t=e.getAttribute("coords"),i=e.getAttribute("shape"),o=t.split(",").map(n=>parseInt(n));switch(i){case"circle":{let[n,a,l]=o;e.style.left=n-l+"px",e.style.top=a-l+"px",e.style.width=e.style.height=2*l+"px"}break;case"rect":{let[n,a,l,c]=o;e.style.left=n+"px",e.style.top=a+"px",e.style.width=l-n+"px",e.style.height=c-a+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.#e)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.#e)}};customElements.define("qti-graphic-gap-match-interaction",Po);var Bl=S`
4473
+ <div role="alert" part="message" id="validation-message"></div>`}shouldReturnToInventoryOnInventoryDrop(){return!0}#e(i){let e=i.target,t=e.getAttribute("coords"),r=e.getAttribute("shape"),o=t.split(",").map(s=>parseInt(s));switch(r){case"circle":{let[s,a,l]=o;e.style.left=s-l+"px",e.style.top=a-l+"px",e.style.width=e.style.height=2*l+"px"}break;case"rect":{let[s,a,l,c]=o;e.style.left=s+"px",e.style.top=a+"px",e.style.width=l-s+"px",e.style.height=c-a+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.#e)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.#e)}};customElements.define("qti-graphic-gap-match-interaction",Po);var Bl=S`
4474
4474
  slot:not([name='prompt']) {
4475
4475
  position: relative; /* qti-hotspot-choice relative to the slot */
4476
4476
  display: block;
@@ -4485,7 +4485,7 @@ CES.load();
4485
4485
  <slot name="prompt"></slot>
4486
4486
  <slot></slot>
4487
4487
  <div role="alert" part="message" id="validation-message"></div>
4488
- `}#e(e){let{identifier:t}=e.detail,i=this._choiceElements.find(n=>n.getAttribute("identifier")===t);if(!i)return;let o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,i.order==null){let n=this._choiceElements.filter(a=>a.order!=null).length;if(n>=o){this.choiceOrdering=!1;return}i.order=n+1}else{let n=i.order;i.order=null,this._choiceElements.forEach(a=>{a.order!=null&&a.order>n&&a.order--})}this.choiceOrdering=!1}}toggleCorrectResponse(e){let t=this.responseVariable,i=this._choiceElements;for(let o of i)if(e&&t?.correctResponse?.length>0&&Array.isArray(t.correctResponse)){let n=t.correctResponse.findIndex(a=>a===o.identifier);n>=0?o.orderCorrect=n+1:o.orderCorrect=null}else o.orderCorrect=null}#t(e){let t=this.querySelector("img"),i=e.target,o=i.getAttribute("coords"),n=i.getAttribute("shape"),a=o.split(",").map(l=>parseInt(l));gt(n,a,t,i)}connectedCallback(){super.connectedCallback(),this.addEventListener("activate-qti-hotspot-choice",this.#e),this.addEventListener("register-qti-hotspot-choice",this.#t)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("activate-qti-hotspot-choice",this.#e),this.removeEventListener("register-qti-hotspot-choice",this.#t)}};customElements.define("qti-graphic-order-interaction",Do);var Ul=S`
4488
+ `}#e(e){let{identifier:t}=e.detail,r=this._choiceElements.find(s=>s.getAttribute("identifier")===t);if(!r)return;let o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){let s=this._choiceElements.filter(a=>a.order!=null).length;if(s>=o){this.choiceOrdering=!1;return}r.order=s+1}else{let s=r.order;r.order=null,this._choiceElements.forEach(a=>{a.order!=null&&a.order>s&&a.order--})}this.choiceOrdering=!1}}toggleCorrectResponse(e){let t=this.responseVariable,r=this._choiceElements;for(let o of r)if(e&&t?.correctResponse?.length>0&&Array.isArray(t.correctResponse)){let s=t.correctResponse.findIndex(a=>a===o.identifier);s>=0?o.orderCorrect=s+1:o.orderCorrect=null}else o.orderCorrect=null}#t(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),s=r.getAttribute("shape"),a=o.split(",").map(l=>parseInt(l));gt(s,a,t,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("activate-qti-hotspot-choice",this.#e),this.addEventListener("register-qti-hotspot-choice",this.#t)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("activate-qti-hotspot-choice",this.#e),this.removeEventListener("register-qti-hotspot-choice",this.#t)}};customElements.define("qti-graphic-order-interaction",Do);var Ul=S`
4489
4489
  slot:not([name='prompt']) {
4490
4490
  position: relative; /* qti-hotspot-choice relative to the slot */
4491
4491
  display: inline-block;
@@ -4502,8 +4502,8 @@ CES.load();
4502
4502
  `;var $o=class extends ht($,"qti-hotspot-choice"){static{this.styles=Ul}render(){return x`
4503
4503
  <slot name="prompt"></slot>
4504
4504
  <slot></slot>
4505
- `}#e=null;#t(r){return this.#e||(r.naturalWidth>0&&r.naturalHeight>0?this.#e=Promise.resolve(r):this.#e=new Promise(e=>{let t=()=>{r.removeEventListener("load",t),e(r)};r.addEventListener("load",t)})),this.#e}async#r(r){let e=this.querySelector("img"),t=r.target,i=t.getAttribute("coords"),o=t.getAttribute("shape"),n=i.split(",").map(l=>parseInt(l)),a=await this.#t(e);gt(o,n,a,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("register-qti-hotspot-choice",this.#r)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("unregister-qti-hotspot-choice",this.#r)}};customElements.define("qti-hotspot-interaction",$o);var zl=S``;var Ai=class extends ht($,"qti-hottext"){constructor(){super(...arguments);this.class="";this.render=()=>x`<slot></slot>
4506
- <div part="message" role="alert" id="validation-message"></div>`}static{this.styles=zl}get#e(){let e={"qti-input-control-hidden":!0};return this.class&&this.class.split(" ").forEach(t=>{t.trim()&&(e[t.trim()]=!0)}),e}connectedCallback(){super.connectedCallback(),this.#t()}updated(e){super.updated(e),this.#t()}#t(){let e=Object.keys(this.#e).join(" ");this.className=e}};d([b({type:String,reflect:!0})],Ai.prototype,"class",2);customElements.define("qti-hottext-interaction",Ai);var Ii=class extends ke{constructor(r){if(super(r),this.it=N,r.type!==tt.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(r){if(r===N||r==null)return this._t=void 0,this.it=r;if(r===X)return r;if(typeof r!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(r===this.it)return this._t;this.it=r;let e=[r];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};Ii.directiveName="unsafeHTML",Ii.resultType=1;var Ot=ae(Ii);var ud=S`
4505
+ `}#e=null;#t(i){return this.#e||(i.naturalWidth>0&&i.naturalHeight>0?this.#e=Promise.resolve(i):this.#e=new Promise(e=>{let t=()=>{i.removeEventListener("load",t),e(i)};i.addEventListener("load",t)})),this.#e}async#r(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),s=r.split(",").map(l=>parseInt(l)),a=await this.#t(e);gt(o,s,a,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("register-qti-hotspot-choice",this.#r)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("unregister-qti-hotspot-choice",this.#r)}};customElements.define("qti-hotspot-interaction",$o);var zl=S``;var Ai=class extends ht($,"qti-hottext"){constructor(){super(...arguments);this.class="";this.render=()=>x`<slot></slot>
4506
+ <div part="message" role="alert" id="validation-message"></div>`}static{this.styles=zl}get#e(){let e={"qti-input-control-hidden":!0};return this.class&&this.class.split(" ").forEach(t=>{t.trim()&&(e[t.trim()]=!0)}),e}connectedCallback(){super.connectedCallback(),this.#t()}updated(e){super.updated(e),this.#t()}#t(){let e=Object.keys(this.#e).join(" ");this.className=e}};d([b({type:String,reflect:!0})],Ai.prototype,"class",2);customElements.define("qti-hottext-interaction",Ai);var Ii=class extends ke{constructor(i){if(super(i),this.it=N,i.type!==tt.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(i){if(i===N||i==null)return this._t=void 0,this.it=i;if(i===X)return i;if(typeof i!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(i===this.it)return this._t;this.it=i;let e=[i];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};Ii.directiveName="unsafeHTML",Ii.resultType=1;var Ot=ae(Ii);var ud=S`
4507
4507
  :host {
4508
4508
  display: inline-block;
4509
4509
  vertical-align: baseline;
@@ -4559,7 +4559,7 @@ CES.load();
4559
4559
  display: inline-block;
4560
4560
  vertical-align: middle;
4561
4561
  }
4562
- `,jl=ud;var md=0,bt=class extends ${constructor(){super();this.options=[];this.correctOption="";this._dropdownOpen=!1;this._slotObserver=null;this._menuId=`qti-inline-choice-menu-${md++}`;this.#s=e=>{(this.disabled||this.readonly)&&e.preventDefault()};this.#n=e=>{this.disabled||this.readonly||(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.#o(!0))};this.#a=e=>{let i=e.newState==="open";this._dropdownOpen!==i&&(this._dropdownOpen=i)};this.#c=e=>{if(!this._dropdownOpen)return;if(e.key==="Escape"){e.preventDefault(),this.#o(!1),this.#d();return}let t=this.#v(),i=this.renderRoot.activeElement,o=this.#l(),n=i||(o instanceof HTMLElement&&this.#u(o)?o:null),a=t.findIndex(l=>l===n);if(e.key==="ArrowDown"&&(e.preventDefault(),t[Math.min(t.length-1,Math.max(0,a+1))]?.focus()),e.key==="ArrowUp"&&(e.preventDefault(),t[Math.max(0,a-1)]?.focus()),e.key==="Enter"||e.key===" "){if(!n)return;if(e.preventDefault(),n instanceof HTMLButtonElement)n.click();else{let l=n.getAttribute("identifier")??"";this.#i(l)}}};this.#b=()=>{this.#t()};this.#f=e=>{if(this.disabled||this.readonly)return;let i=e.currentTarget.getAttribute("identifier")??"";this.#i(i)};this.internals.role="listbox"}get isInline(){return!0}static get styles(){return[jl]}render(){let e=this.#e();return x`
4562
+ `,jl=ud;var md=0,bt=class extends ${constructor(){super();this.options=[];this.correctOption="";this._dropdownOpen=!1;this._slotObserver=null;this._menuId=`qti-inline-choice-menu-${md++}`;this.#s=e=>{(this.disabled||this.readonly)&&e.preventDefault()};this.#n=e=>{this.disabled||this.readonly||(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.#o(!0))};this.#a=e=>{let r=e.newState==="open";this._dropdownOpen!==r&&(this._dropdownOpen=r)};this.#c=e=>{if(!this._dropdownOpen)return;if(e.key==="Escape"){e.preventDefault(),this.#o(!1),this.#d();return}let t=this.#v(),r=this.renderRoot.activeElement,o=this.#l(),s=r||(o instanceof HTMLElement&&this.#u(o)?o:null),a=t.findIndex(l=>l===s);if(e.key==="ArrowDown"&&(e.preventDefault(),t[Math.min(t.length-1,Math.max(0,a+1))]?.focus()),e.key==="ArrowUp"&&(e.preventDefault(),t[Math.max(0,a-1)]?.focus()),e.key==="Enter"||e.key===" "){if(!s)return;if(e.preventDefault(),s instanceof HTMLButtonElement)s.click();else{let l=s.getAttribute("identifier")??"";this.#i(l)}}};this.#b=()=>{this.#t()};this.#f=e=>{if(this.disabled||this.readonly)return;let r=e.currentTarget.getAttribute("identifier")??"";this.#i(r)};this.internals.role="listbox"}get isInline(){return!0}static get styles(){return[jl]}render(){let e=this.#e();return x`
4563
4563
  <button
4564
4564
  part="trigger"
4565
4565
  type="button"
@@ -4598,7 +4598,7 @@ CES.load();
4598
4598
  <slot @slotchange=${this.#b}></slot>
4599
4599
  </div>
4600
4600
  ${Ot(this.correctOption)}
4601
- `}async connectedCallback(){super.connectedCallback(),this.#t(),this.#g(),await this.updateComplete,this.#r()}disconnectedCallback(){super.disconnectedCallback(),this.#y(),this._slotObserver?.disconnect(),this._slotObserver=null}willUpdate(e){e.has("configContext")&&this.#t()}updated(e){e.has("_dropdownOpen")&&this._dropdownOpen&&(this.#p(),this.#v()[0]?.focus()),(e.has("disabled")||e.has("readonly"))&&this.#p()}#e(){return this.options.find(e=>e.selected)??this.options[0]}#t(){let e=Array.from(this.querySelectorAll("qti-inline-choice")),t=this.dataset.prompt||this.configContext?.inlineChoicePrompt||"select",i=this.options.find(a=>a.selected)?.value??"",o=[{textContent:t,value:"",selected:i===""},...e.map(a=>{let l=a.getAttribute("identifier")??"";return{textContent:a.innerHTML,value:l,selected:l!==""&&l===i}})],n=o.some(a=>a.selected);this.options=n?o:o.map((a,l)=>({...a,selected:l===0})),this.#p(),this.#r()}#r(){let e=this.#h(),t=this.renderRoot.querySelector('button[part="trigger"]');if(!e||!t)return;let i=t.querySelector('span[part~="dropdown-icon"]'),o=i?i.getBoundingClientRect().width:0,n=e.matches(":popover-open"),a=e.style.visibility,l=e.style.display;n||(e.style.visibility="hidden",e.style.display="block",e.showPopover());let c=e.getBoundingClientRect().width,p=Math.max(c,e.scrollWidth);n||(e.hidePopover(),e.style.visibility=a,e.style.display=l),t.style.width=`${p+o}px`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.#o(!1),this.options=this.options.map((e,t)=>({...e,selected:t===0})),this.#p()}set response(e){let t=e??"";this.options=this.options.map(i=>({...i,selected:i.value===t})),this.#p()}get response(){let e=this.options.find(t=>t.selected)?.value??"";return e===""?null:e}toggleInternalCorrectResponse(e){super.toggleInternalCorrectResponse(e);let t=this.correctResponse;if(!e||!t){this.correctOption="";return}let i=this.options.find(o=>t===o.value);if(!i){this.correctOption="";return}this.correctOption=`<span part="correct-option" style="border:1px solid var(--qti-correct); border-radius:4px; padding: 2px 4px; margin: 4px; display:inline-block">${i.textContent}</span>`}#i(e){this.options=this.options.map(t=>({...t,selected:t.value===e})),this.#p(),this.saveResponse(e),this.#o(!1)}#o(e){let t=this.#h();if(t){if(e){t.matches(":popover-open")||t.showPopover();return}t.matches(":popover-open")&&t.hidePopover()}}#s;#n;#a;#c;#d(){this.renderRoot.querySelector('button[part="trigger"]')?.focus()}#l(){let e=document.activeElement;for(;e&&e instanceof HTMLElement&&e.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;return e}#u(e){return e===this||this.contains(e)||this.renderRoot.contains(e)}#h(){return this.renderRoot.querySelector(`#${this._menuId}`)}#g(){this._slotObserver=new MutationObserver(()=>this.#t()),this._slotObserver.observe(this,{childList:!0,subtree:!0})}#b;#f;#y(){let e=Array.from(this.querySelectorAll("qti-inline-choice"));for(let t of e)t.removeEventListener("click",this.#f),t.removeAttribute("tabindex"),t.internals.role=null,t.internals.ariaSelected=null,t.internals.ariaChecked="false",t.internals.states.delete("--checked")}async#p(){await this.updateComplete;let e=this.options.find(i=>i.selected)?.value??"",t=Array.from(this.querySelectorAll("qti-inline-choice"));for(let i of t){let n=(i.getAttribute("identifier")??"")===e;i.removeEventListener("click",this.#f),i.addEventListener("click",this.#f),i.disabled=this.disabled,i.readonly=this.readonly,i.internals.role="option",i.internals.ariaSelected=n?"true":"false",i.internals.ariaChecked=n?"true":"false",i.internals.ariaDisabled=this.disabled?"true":"false",i.internals.ariaReadOnly=this.readonly?"true":"false",i.removeAttribute("aria-disabled"),i.removeAttribute("aria-readonly"),n?i.internals.states.add("--checked"):i.internals.states.delete("--checked"),i.tabIndex=-1}}#v(){let e=this.renderRoot.querySelector('button[part~="option"]'),t=Array.from(this.querySelectorAll("qti-inline-choice"));return[...e?[e]:[],...t]}};d([R()],bt.prototype,"options",2),d([R()],bt.prototype,"correctOption",2),d([R()],bt.prototype,"_dropdownOpen",2),d([P({context:he,subscribe:!0}),b({attribute:!1})],bt.prototype,"configContext",2);customElements.define("qti-inline-choice-interaction",bt);var Wl=S`
4601
+ `}async connectedCallback(){super.connectedCallback(),this.#t(),this.#g(),await this.updateComplete,this.#r()}disconnectedCallback(){super.disconnectedCallback(),this.#y(),this._slotObserver?.disconnect(),this._slotObserver=null}willUpdate(e){e.has("configContext")&&this.#t()}updated(e){e.has("_dropdownOpen")&&this._dropdownOpen&&(this.#p(),this.#v()[0]?.focus()),(e.has("disabled")||e.has("readonly"))&&this.#p()}#e(){return this.options.find(e=>e.selected)??this.options[0]}#t(){let e=Array.from(this.querySelectorAll("qti-inline-choice")),t=this.dataset.prompt||this.configContext?.inlineChoicePrompt||"select",r=this.options.find(a=>a.selected)?.value??"",o=[{textContent:t,value:"",selected:r===""},...e.map(a=>{let l=a.getAttribute("identifier")??"";return{textContent:a.innerHTML,value:l,selected:l!==""&&l===r}})],s=o.some(a=>a.selected);this.options=s?o:o.map((a,l)=>({...a,selected:l===0})),this.#p(),this.#r()}#r(){let e=this.#h(),t=this.renderRoot.querySelector('button[part="trigger"]');if(!e||!t)return;let r=t.querySelector('span[part~="dropdown-icon"]'),o=r?r.getBoundingClientRect().width:0,s=e.matches(":popover-open"),a=e.style.visibility,l=e.style.display;s||(e.style.visibility="hidden",e.style.display="block",e.showPopover());let c=e.getBoundingClientRect().width,p=Math.max(c,e.scrollWidth);s||(e.hidePopover(),e.style.visibility=a,e.style.display=l),t.style.width=`${p+o}px`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.#o(!1),this.options=this.options.map((e,t)=>({...e,selected:t===0})),this.#p()}set response(e){let t=e??"";this.options=this.options.map(r=>({...r,selected:r.value===t})),this.#p()}get response(){let e=this.options.find(t=>t.selected)?.value??"";return e===""?null:e}toggleInternalCorrectResponse(e){super.toggleInternalCorrectResponse(e);let t=this.correctResponse;if(!e||!t){this.correctOption="";return}let r=this.options.find(o=>t===o.value);if(!r){this.correctOption="";return}this.correctOption=`<span part="correct-option" style="border:1px solid var(--qti-correct); border-radius:4px; padding: 2px 4px; margin: 4px; display:inline-block">${r.textContent}</span>`}#i(e){this.options=this.options.map(t=>({...t,selected:t.value===e})),this.#p(),this.saveResponse(e),this.#o(!1)}#o(e){let t=this.#h();if(t){if(e){t.matches(":popover-open")||t.showPopover();return}t.matches(":popover-open")&&t.hidePopover()}}#s;#n;#a;#c;#d(){this.renderRoot.querySelector('button[part="trigger"]')?.focus()}#l(){let e=document.activeElement;for(;e&&e instanceof HTMLElement&&e.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;return e}#u(e){return e===this||this.contains(e)||this.renderRoot.contains(e)}#h(){return this.renderRoot.querySelector(`#${this._menuId}`)}#g(){this._slotObserver=new MutationObserver(()=>this.#t()),this._slotObserver.observe(this,{childList:!0,subtree:!0})}#b;#f;#y(){let e=Array.from(this.querySelectorAll("qti-inline-choice"));for(let t of e)t.removeEventListener("click",this.#f),t.removeAttribute("tabindex"),t.internals.role=null,t.internals.ariaSelected=null,t.internals.ariaChecked="false",t.internals.states.delete("--checked")}async#p(){await this.updateComplete;let e=this.options.find(r=>r.selected)?.value??"",t=Array.from(this.querySelectorAll("qti-inline-choice"));for(let r of t){let s=(r.getAttribute("identifier")??"")===e;r.removeEventListener("click",this.#f),r.addEventListener("click",this.#f),r.disabled=this.disabled,r.readonly=this.readonly,r.internals.role="option",r.internals.ariaSelected=s?"true":"false",r.internals.ariaChecked=s?"true":"false",r.internals.ariaDisabled=this.disabled?"true":"false",r.internals.ariaReadOnly=this.readonly?"true":"false",r.removeAttribute("aria-disabled"),r.removeAttribute("aria-readonly"),s?r.internals.states.add("--checked"):r.internals.states.delete("--checked"),r.tabIndex=-1}}#v(){let e=this.renderRoot.querySelector('button[part~="option"]'),t=Array.from(this.querySelectorAll("qti-inline-choice"));return[...e?[e]:[],...t]}};d([R()],bt.prototype,"options",2),d([R()],bt.prototype,"correctOption",2),d([R()],bt.prototype,"_dropdownOpen",2),d([P({context:he,subscribe:!0}),b({attribute:!1})],bt.prototype,"configContext",2);customElements.define("qti-inline-choice-interaction",bt);var Wl=S`
4602
4602
  slot:not([hidden]) {
4603
4603
  /* slot where the */
4604
4604
  display: flex;
@@ -4624,7 +4624,7 @@ CES.load();
4624
4624
  /* Make sure the drag and drop container slots have the same width */
4625
4625
  flex: 1;
4626
4626
  }
4627
- `;var hd=we($,"qti-simple-match-set:first-of-type qti-simple-associable-choice, qti-simple-match-set:last-of-type > qti-simple-associable-choice > qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice","qti-simple-match-set:first-of-type"),vt=class extends Ce(hd,'[qti-draggable="true"]'){constructor(){super(...arguments);this.lastCheckedRadio=null;this.class="";this._response=[];this.responseIdentifier="";this.correctOptions=null;this.handleRadioClick=e=>{let t=e.target;this.lastCheckedRadio===t?(t.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=t};this.handleRadioChange=e=>{let t=e.target,i=t.value,o=t.name,n=t.type;t.checked?(this.response?this.response.indexOf(i)===-1&&(n==="radio"&&(this.response=(this.response||[]).filter(a=>a.indexOf(o)===-1)),this.response=[...this.response,i]):this.response=[i],this.lastCheckedRadio=t):(this.response=(this.response||[]).filter(a=>a!==i),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.response)?[...this.response]:this.response}}))}}static{this.styles=Wl}get response(){return this.classList.contains("qti-match-tabular")?this._response:super.response}set response(e){this.classList.contains("qti-match-tabular")?this._response=e:super.response=e}async connectedCallback(){super.connectedCallback(),this.sourceChoices=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.targetChoices=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}validate(){return this.class.split(" ").includes("qti-match-tabular")?this.response?.length===this.sourceChoices.length:super.validate()}#e(e){if(!e.correctResponse)return[];let t=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse],i=[];return t&&t.forEach(o=>{let n=o.split(" ");i.push({source:n[0],target:n[1]})}),i}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(!t?.correctResponse){this.querySelectorAll(".correct-option").forEach(o=>o.remove());return}let i=this.#e(t);this.class.split(" ").includes("qti-match-tabular")?e?this.correctOptions=i||[]:this.correctOptions=null:e?(this.querySelectorAll(".correct-option").forEach(o=>o.remove()),this.targetChoices.forEach(o=>{let n=o.getAttribute("identifier"),a=i.find(l=>l.target===n);if(a?.source){let c=this.querySelector(`qti-simple-associable-choice[identifier="${a.source}"]`)?.textContent?.trim();if(c&&!o.previousElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=c,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",o.insertAdjacentElement("beforebegin",p)}}})):this.correctOptions=null}toggleCandidateCorrection(e){let t=this.responseVariable;if(!t?.correctResponse)return;let i=this.#e(t);this.targetChoices.forEach(o=>{let n=o.getAttribute("identifier"),a=i.filter(c=>c.target===n);o.querySelectorAll("qti-simple-associable-choice").forEach(c=>{if(c.internals.states.delete("candidate-correct"),c.internals.states.delete("candidate-incorrect"),!e)return;a.find(h=>h.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}render(){let e=this.class.split(" ").includes("qti-match-tabular"),t=this.correctOptions!==null;return x`
4627
+ `;var hd=we($,"qti-simple-match-set:first-of-type qti-simple-associable-choice, qti-simple-match-set:last-of-type > qti-simple-associable-choice > qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice","qti-simple-match-set:first-of-type"),vt=class extends Ce(hd,'[qti-draggable="true"]'){constructor(){super(...arguments);this.lastCheckedRadio=null;this.class="";this._response=[];this.responseIdentifier="";this.correctOptions=null;this.handleRadioClick=e=>{let t=e.target;this.lastCheckedRadio===t?(t.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=t};this.handleRadioChange=e=>{let t=e.target,r=t.value,o=t.name,s=t.type;t.checked?(this.response?this.response.indexOf(r)===-1&&(s==="radio"&&(this.response=(this.response||[]).filter(a=>a.indexOf(o)===-1)),this.response=[...this.response,r]):this.response=[r],this.lastCheckedRadio=t):(this.response=(this.response||[]).filter(a=>a!==r),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.response)?[...this.response]:this.response}}))}}static{this.styles=Wl}get response(){return this.classList.contains("qti-match-tabular")?this._response:super.response}set response(e){this.classList.contains("qti-match-tabular")?this._response=e:super.response=e}async connectedCallback(){super.connectedCallback(),this.sourceChoices=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.targetChoices=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}validate(){return this.class.split(" ").includes("qti-match-tabular")?this.response?.length===this.sourceChoices.length:super.validate()}#e(e){if(!e.correctResponse)return[];let t=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse],r=[];return t&&t.forEach(o=>{let s=o.split(" ");r.push({source:s[0],target:s[1]})}),r}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(!t?.correctResponse){this.querySelectorAll(".correct-option").forEach(o=>o.remove());return}let r=this.#e(t);this.class.split(" ").includes("qti-match-tabular")?e?this.correctOptions=r||[]:this.correctOptions=null:e?(this.querySelectorAll(".correct-option").forEach(o=>o.remove()),this.targetChoices.forEach(o=>{let s=o.getAttribute("identifier"),a=r.find(l=>l.target===s);if(a?.source){let c=this.querySelector(`qti-simple-associable-choice[identifier="${a.source}"]`)?.textContent?.trim();if(c&&!o.previousElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=c,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",o.insertAdjacentElement("beforebegin",p)}}})):this.correctOptions=null}toggleCandidateCorrection(e){let t=this.responseVariable;if(!t?.correctResponse)return;let r=this.#e(t);this.targetChoices.forEach(o=>{let s=o.getAttribute("identifier"),a=r.filter(c=>c.target===s);o.querySelectorAll("qti-simple-associable-choice").forEach(c=>{if(c.internals.states.delete("candidate-correct"),c.internals.states.delete("candidate-incorrect"),!e)return;a.find(h=>h.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}render(){let e=this.class.split(" ").includes("qti-match-tabular"),t=this.correctOptions!==null;return x`
4628
4628
  <slot name="prompt"></slot>
4629
4629
  <slot ?hidden=${e}></slot>
4630
4630
 
@@ -4632,12 +4632,12 @@ CES.load();
4632
4632
  <table part="table">
4633
4633
  <tr part="r-header">
4634
4634
  <td></td>
4635
- ${this.targetChoices.map(i=>x`<th part="r-header">${Ot(i.innerHTML)}</th>`)}
4635
+ ${this.targetChoices.map(r=>x`<th part="r-header">${Ot(r.innerHTML)}</th>`)}
4636
4636
  </tr>
4637
4637
 
4638
- ${this.sourceChoices.map(i=>x`<tr part="row">
4639
- <td part="c-header">${Ot(i.innerHTML)}</td>
4640
- ${this.targetChoices.map(o=>{let n=i.getAttribute("identifier"),a=o.getAttribute("identifier"),l=`${n} ${a}`,c=(this.response||[]).filter(w=>w.split(" ")[0]===n).length||0,p=this.response?.includes(l)||!1,h=i.matchMax===1?"radio":"checkbox",m=!!this.correctOptions?.find(w=>w.source===n&&w.target===a),y=h==="radio"?`rb ${p?"rb-checked":""} ${t?m?"rb-correct":"rb-incorrect":""}`:`cb ${p?"cb-checked":""} ${t?m?"cb-correct":"cb-incorrect":""}`,v=this.correctOptions?.length>0?!0:i.matchMax===1?!1:i.matchMax!==0&&c>=i.matchMax&&!p;return x`<td part="input-cell">
4638
+ ${this.sourceChoices.map(r=>x`<tr part="row">
4639
+ <td part="c-header">${Ot(r.innerHTML)}</td>
4640
+ ${this.targetChoices.map(o=>{let s=r.getAttribute("identifier"),a=o.getAttribute("identifier"),l=`${s} ${a}`,c=(this.response||[]).filter(w=>w.split(" ")[0]===s).length||0,p=this.response?.includes(l)||!1,h=r.matchMax===1?"radio":"checkbox",m=!!this.correctOptions?.find(w=>w.source===s&&w.target===a),y=h==="radio"?`rb ${p?"rb-checked":""} ${t?m?"rb-correct":"rb-incorrect":""}`:`cb ${p?"cb-checked":""} ${t?m?"cb-correct":"cb-incorrect":""}`,v=this.correctOptions?.length>0?!0:r.matchMax===1?!1:r.matchMax!==0&&c>=r.matchMax&&!p;return x`<td part="input-cell">
4641
4641
  <div
4642
4642
  class="input-container"
4643
4643
  style="position: relative; width: 24px; height: 24px; margin: 0 auto;"
@@ -4645,11 +4645,11 @@ CES.load();
4645
4645
  <input
4646
4646
  type=${h}
4647
4647
  part=${y}
4648
- name=${n}
4648
+ name=${s}
4649
4649
  value=${l}
4650
4650
  .disabled=${v}
4651
4651
  @change=${w=>this.handleRadioChange(w)}
4652
- @click=${w=>i.matchMax===1?this.handleRadioClick(w):null}
4652
+ @click=${w=>r.matchMax===1?this.handleRadioClick(w):null}
4653
4653
  />
4654
4654
  ${h==="checkbox"&&p?x`
4655
4655
  <svg
@@ -4667,8 +4667,8 @@ CES.load();
4667
4667
  `:N}
4668
4668
 
4669
4669
  <div role="alert" part="message" id="validation-message"></div>
4670
- `}};d([b({type:String})],vt.prototype,"class",2),d([R()],vt.prototype,"_response",2),d([b({type:String,attribute:"response-identifier"})],vt.prototype,"responseIdentifier",2),d([R()],vt.prototype,"correctOptions",2);customElements.define("qti-match-interaction",vt);var Gl=S``;var Oo=class extends ${static{this.styles=Gl}#e=null;reset(){this.#e=null}validate(){return!0}get response(){return this.#e?this.#e.toString():null}set response(r){if(r)if(!isNaN(parseInt(r?.toString())))this.#e=parseInt(r.toString());else throw new Error(`Value must be a number ${r}`)}static get properties(){return{...$.properties,step:{type:Number,attribute:"step",default:10}}}render(){return x` <slot name="prompt"></slot>
4671
- <slot></slot>`}constructor(){super()}connectedCallback(){super.connectedCallback();let r=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");r&&r.addEventListener("ended",()=>{this.#e++,this.saveResponse(this.value)})}};customElements.define("qti-media-interaction",Oo);var Xl=S`
4670
+ `}};d([b({type:String})],vt.prototype,"class",2),d([R()],vt.prototype,"_response",2),d([b({type:String,attribute:"response-identifier"})],vt.prototype,"responseIdentifier",2),d([R()],vt.prototype,"correctOptions",2);customElements.define("qti-match-interaction",vt);var Gl=S``;var Oo=class extends ${static{this.styles=Gl}#e=null;reset(){this.#e=null}validate(){return!0}get response(){return this.#e?this.#e.toString():null}set response(i){if(i)if(!isNaN(parseInt(i?.toString())))this.#e=parseInt(i.toString());else throw new Error(`Value must be a number ${i}`)}static get properties(){return{...$.properties,step:{type:Number,attribute:"step",default:10}}}render(){return x` <slot name="prompt"></slot>
4671
+ <slot></slot>`}constructor(){super()}connectedCallback(){super.connectedCallback();let i=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");i&&i.addEventListener("ended",()=>{this.#e++,this.saveResponse(this.value)})}};customElements.define("qti-media-interaction",Oo);var Xl=S`
4672
4672
  [part='drags'] {
4673
4673
  display: flex;
4674
4674
  align-items: flex-start;
@@ -4744,13 +4744,13 @@ CES.load();
4744
4744
  :host(.qti-choices-right) [part='container'] {
4745
4745
  flex-direction: row-reverse;
4746
4746
  }
4747
- `;var fd=we($,"qti-simple-choice","drop-list","slot[part='drags']"),yt=class extends Ce(fd,'[qti-draggable="true"]'){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}static{this.styles=Xl}#e(){let e=this.responseVariable;return e?.correctResponse?(Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse]).map((i,o)=>{let[n,a]=i.split(" "),l=a?.startsWith("droplist")?parseInt(a.replace("droplist",""),10):o,c=Number.isNaN(l)?o:l;return{identifier:n,dropIndex:c}}).filter(i=>!!i.identifier):[]}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),x` <slot name="prompt"> </slot>
4747
+ `;var fd=we($,"qti-simple-choice","drop-list","slot[part='drags']"),yt=class extends Ce(fd,'[qti-draggable="true"]'){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}static{this.styles=Xl}#e(){let e=this.responseVariable;return e?.correctResponse?(Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse]).map((r,o)=>{let[s,a]=r.split(" "),l=a?.startsWith("droplist")?parseInt(a.replace("droplist",""),10):o,c=Number.isNaN(l)?o:l;return{identifier:s,dropIndex:c}}).filter(r=>!!r.identifier):[]}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),x` <slot name="prompt"> </slot>
4748
4748
  <div part="container">
4749
4749
  <slot part="drags"> </slot>
4750
4750
  <div part="drops">
4751
- ${[...Array(this.nrChoices)].map((t,i)=>x`<drop-list role="region" part="drop-list" identifier="droplist${i}"></drop-list>`)}
4751
+ ${[...Array(this.nrChoices)].map((t,r)=>x`<drop-list role="region" part="drop-list" identifier="droplist${r}"></drop-list>`)}
4752
4752
  </div>
4753
- </div>`}toggleCorrectResponse(e){if(this.shadowRoot.querySelectorAll(".correct-option").forEach(t=>t.remove()),e){let t=this.#e(),i=new Map;Array.from(this.querySelectorAll("qti-simple-choice")).forEach(o=>{let n=o.getAttribute("identifier"),a=o.textContent?.trim();n&&a&&i.set(n,a)}),t.forEach(({identifier:o,dropIndex:n})=>{let a=i.get(o);if(!a)return;let l=this.shadowRoot.querySelector(`drop-list[identifier="droplist${n}"]`);if(!l)return;let c=document.createElement("span");c.classList.add("correct-option"),c.textContent=a,c.style.border="1px solid var(--qti-correct)",c.style.borderRadius="4px",c.style.padding="2px 4px",c.style.display="inline-block",c.style.marginTop="4px",l.insertAdjacentElement("afterend",c)})}}toggleCandidateCorrection(e){if(super.toggleCandidateCorrection(e),Array.from(this.shadowRoot.querySelectorAll('drop-list [qti-draggable="true"]')).forEach(a=>{a.internals.states.delete("candidate-correct"),a.internals.states.delete("candidate-incorrect")}),!e)return;let i=this.#e(),o=new Map;i.forEach(a=>o.set(a.dropIndex,a.identifier)),Array.from(this.shadowRoot.querySelectorAll("drop-list")).forEach((a,l)=>{let c=a.querySelector('[qti-draggable="true"]');if(!c)return;let p=o.get(l),h=c.getAttribute("identifier");p&&h===p?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})}getValue(e){return e?.map((t,i)=>`${t} droplist${i}`)||[]}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(i=>{let o=i.querySelectorAll('[qti-draggable="true"]');return[...Array.from(o).map(a=>a.getAttribute("identifier"))].join(" ")})}shouldTreatBlockedMaxAsInvalid(){return!1}async firstUpdated(){super.firstUpdated(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};d([R()],yt.prototype,"nrChoices",2),d([R()],yt.prototype,"correctResponses",2),d([R()],yt.prototype,"showCorrectResponses",2),d([b({type:String})],yt.prototype,"orientation",2);customElements.define("qti-order-interaction",yt);var Ql=S`
4753
+ </div>`}toggleCorrectResponse(e){if(this.shadowRoot.querySelectorAll(".correct-option").forEach(t=>t.remove()),e){let t=this.#e(),r=new Map;Array.from(this.querySelectorAll("qti-simple-choice")).forEach(o=>{let s=o.getAttribute("identifier"),a=o.textContent?.trim();s&&a&&r.set(s,a)}),t.forEach(({identifier:o,dropIndex:s})=>{let a=r.get(o);if(!a)return;let l=this.shadowRoot.querySelector(`drop-list[identifier="droplist${s}"]`);if(!l)return;let c=document.createElement("span");c.classList.add("correct-option"),c.textContent=a,c.style.border="1px solid var(--qti-correct)",c.style.borderRadius="4px",c.style.padding="2px 4px",c.style.display="inline-block",c.style.marginTop="4px",l.insertAdjacentElement("afterend",c)})}}toggleCandidateCorrection(e){if(super.toggleCandidateCorrection(e),Array.from(this.shadowRoot.querySelectorAll('drop-list [qti-draggable="true"]')).forEach(a=>{a.internals.states.delete("candidate-correct"),a.internals.states.delete("candidate-incorrect")}),!e)return;let r=this.#e(),o=new Map;r.forEach(a=>o.set(a.dropIndex,a.identifier)),Array.from(this.shadowRoot.querySelectorAll("drop-list")).forEach((a,l)=>{let c=a.querySelector('[qti-draggable="true"]');if(!c)return;let p=o.get(l),h=c.getAttribute("identifier");p&&h===p?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})}getValue(e){return e?.map((t,r)=>`${t} droplist${r}`)||[]}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(r=>{let o=r.querySelectorAll('[qti-draggable="true"]');return[...Array.from(o).map(a=>a.getAttribute("identifier"))].join(" ")})}shouldTreatBlockedMaxAsInvalid(){return!1}async firstUpdated(){super.firstUpdated(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};d([R()],yt.prototype,"nrChoices",2),d([R()],yt.prototype,"correctResponses",2),d([R()],yt.prototype,"showCorrectResponses",2),d([b({type:String})],yt.prototype,"orientation",2);customElements.define("qti-order-interaction",yt);var Ql=S`
4754
4754
  :host {
4755
4755
  display: block;
4756
4756
  width: 100%;
@@ -4760,14 +4760,14 @@ CES.load();
4760
4760
  ::slotted(qti-interaction-markup) {
4761
4761
  display: none;
4762
4762
  }
4763
- `;var Z=class extends ${constructor(){super(...arguments);this._iframeLoaded=!1;this._pendingMessages=[];this._iframeMessageOrigin=null;this._iframeObjectUrl=null;this.requirePathsJson="";this.requireShimJson="";this.requireJsUrl="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js";this.baseUrl="";this.useDefaultPaths=!1;this._errorMessage=null;this.response=null;this.#t=null;this.#r=null;this.#i=null;this.#o="";this.handleIframeMessage=e=>{let{data:t}=e;if(!(!t||t.source!=="qti-pci-iframe")&&!(!this.iframe?.contentWindow||e.source!==this.iframe.contentWindow)&&!(t.responseIdentifier&&t.responseIdentifier!==this.responseIdentifier)){if(this._iframeMessageOrigin===null)this._iframeMessageOrigin=e.origin;else if(e.origin!==this._iframeMessageOrigin)return;switch(t.method){case"iframeReady":this.#q(),this.#y(),this.dispatchEvent(new CustomEvent("qti-portable-custom-interaction-loaded",{bubbles:!0}));break;case"resize":typeof t.height=="number"&&this.iframe&&(this.iframe.style.height=`${t.height}px`,this.iframe.style.width=`${t.width}px`);break;case"console":this.dispatchEvent(new CustomEvent("qti-pci-console",{detail:{level:t.level,args:t.args},bubbles:!0}));break;case"interactionChanged":{let i=t?.params?.value,o=i&&typeof i=="object"?this.#d(i):null,n=typeof t?.params?.valid=="boolean"?t.params.valid:null,a=typeof t?.params?.customValidity=="string"?t.params.customValidity:null;n!==null&&(this.#i=n,n&&a===null&&(this.#o="")),a!==null&&(this.#o=a);let l=t?.params?.state,c;if(l===void 0)c=void 0;else if(l===null)c=null;else if(typeof l=="string")c=l;else try{c=`__qti_json__::${JSON.stringify(l)}`}catch{c=null}if(o===null){let p=this.responseVariable?.cardinality==="single"?"":[];this.response=p,this.validate(),this.saveResponse(p,c);break}this.response=o,this.validate(),this.saveResponse(o,c);break}case"error":this._errorMessage=t.params.message,console.error("Error from PCI iframe:",t.params.message);break}}};this.#m=null}#e;static{this.styles=[Ql,S`
4763
+ `;var Z=class extends ${constructor(){super(...arguments);this._iframeLoaded=!1;this._pendingMessages=[];this._iframeMessageOrigin=null;this._iframeObjectUrl=null;this.requirePathsJson="";this.requireShimJson="";this.requireJsUrl="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js";this.baseUrl="";this.useDefaultPaths=!1;this._errorMessage=null;this.response=null;this.#t=null;this.#r=null;this.#i=null;this.#o="";this.handleIframeMessage=e=>{let{data:t}=e;if(!(!t||t.source!=="qti-pci-iframe")&&!(!this.iframe?.contentWindow||e.source!==this.iframe.contentWindow)&&!(t.responseIdentifier&&t.responseIdentifier!==this.responseIdentifier)){if(this._iframeMessageOrigin===null)this._iframeMessageOrigin=e.origin;else if(e.origin!==this._iframeMessageOrigin)return;switch(t.method){case"iframeReady":this.#q(),this.#y(),this.dispatchEvent(new CustomEvent("qti-portable-custom-interaction-loaded",{bubbles:!0}));break;case"resize":typeof t.height=="number"&&this.iframe&&(this.iframe.style.height=`${t.height}px`,this.iframe.style.width=`${t.width}px`);break;case"console":this.dispatchEvent(new CustomEvent("qti-pci-console",{detail:{level:t.level,args:t.args},bubbles:!0}));break;case"interactionChanged":{let r=t?.params?.value,o=r&&typeof r=="object"?this.#d(r):null,s=typeof t?.params?.valid=="boolean"?t.params.valid:null,a=typeof t?.params?.customValidity=="string"?t.params.customValidity:null;s!==null&&(this.#i=s,s&&a===null&&(this.#o="")),a!==null&&(this.#o=a);let l=t?.params?.state,c;if(l===void 0)c=void 0;else if(l===null)c=null;else if(typeof l=="string")c=l;else try{c=`__qti_json__::${JSON.stringify(l)}`}catch{c=null}if(o===null){let p=this.responseVariable?.cardinality==="single"?"":[];this.response=p,this.validate(),this.saveResponse(p,c);break}this.response=o,this.validate(),this.saveResponse(o,c);break}case"error":this._errorMessage=t.params.message,console.error("Error from PCI iframe:",t.params.message);break}}};this.#m=null}#e;static{this.styles=[Ql,S`
4764
4764
  :host {
4765
4765
  display: block;
4766
4766
  width: 100%;
4767
4767
  min-height: 50px;
4768
4768
  }
4769
- `]}#t;#r;#i;#o;#s(){if(this.#t===null&&this.requirePathsJson)try{let e=JSON.parse(this.requirePathsJson);if(Array.isArray(e)||!e||typeof e!="object")throw new Error("Require paths must be a JSON object.");this.#t=e}catch(e){console.error("Error parsing require paths JSON:",e),this._errorMessage=`Error parsing require paths JSON: ${e.message}`,this.#t={}}return this.#t||{}}#n(){if(this.#r===null&&this.requireShimJson)try{this.#r=JSON.parse(this.requireShimJson)}catch(e){console.error("Error parsing require shim JSON:",e),this._errorMessage=`Error parsing require shim JSON: ${e.message}`,this.#r={}}return this.#r||{}}#a(){return this.#s()}#c(){return this.#n()}#d(e){for(let t in e)if(e.hasOwnProperty(t)){let i=e[t];if(i){for(let o in i)if(i.hasOwnProperty(o)){let n=i[o];if(Array.isArray(n))return n.map(String);if(n!=null)return String(n)}}}return null}getDirectChildrenByTag(e){let t=e.toLowerCase();return Array.from(this.children).filter(i=>i.tagName.toLowerCase()===t)}coerceBaseValue(e,t){if(e==null)return e;switch(t){case"integer":{if(typeof e=="number")return e;let i=parseInt(String(e),10);return Number.isNaN(i)?e:i}case"float":case"duration":{if(typeof e=="number")return e;let i=parseFloat(String(e));return Number.isNaN(i)?e:i}case"boolean":{if(typeof e=="boolean")return e;if(typeof e=="string"){let i=e.toLowerCase();if(i==="true")return!0;if(i==="false")return!1}return e}default:return String(e)}}normalizeListValue(e){return e==null?[]:Array.isArray(e)?e:[e]}variableToQtiVariableJSON(e,t,i){if(t==="record"||i==="record")return this.recordToQtiVariableJSON(e);if(t!=="single"){let o=this.normalizeListValue(e).map(n=>this.coerceBaseValue(n,i));return{list:{[i]:o}}}return{base:{[i]:this.coerceBaseValue(e,i)}}}recordToQtiVariableJSON(e){if(!e||typeof e!="object")return{record:[]};let t=[];for(let[i,o]of Object.entries(e))t.push(this.recordEntryFromValue(i,o));return{record:t}}recordEntryFromValue(e,t){if(Array.isArray(t)){let i=t.filter(o=>o!=null);if(i.length&&i.every(o=>typeof o=="boolean"))return{name:e,list:{boolean:i}};if(i.length&&i.every(o=>typeof o=="number")){let o=i,n=o.every(a=>Number.isInteger(a));return{name:e,list:{[n?"integer":"float"]:o}}}return{name:e,list:{string:t.map(o=>o==null?"":String(o))}}}if(typeof t=="boolean")return{name:e,base:{boolean:t}};if(typeof t=="number")return Number.isInteger(t)?{name:e,base:{integer:t}}:{name:e,base:{float:t}};if(t==null)return{name:e,base:{string:""}};if(typeof t=="object")try{return{name:e,base:{string:JSON.stringify(t)}}}catch{return{name:e,base:{string:String(t)}}}return{name:e,base:{string:String(t)}}}getQtiContextDefaultsFromItem(){let e=this.closest("qti-assessment-item");if(!e)return{};let t={};return e.querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(o=>{let n=o.querySelector("qti-default-value");if(!n)return;n.querySelectorAll("qti-value[field-identifier]").forEach(l=>{let c=l.getAttribute("field-identifier");if(!c)return;let p=l.getAttribute("base-type")||"string",h=l.textContent?.trim()||"";t[c]=this.coerceBaseValue(h,p)})}),t}getQtiContextRecord(){let e=this.getQtiContextDefaultsFromItem(),t=this.qtiContext?.QTI_CONTEXT||{},i={...e,...t};if(!Object.keys(i).length)return null;let o={candidateIdentifier:i.candidateIdentifier??"",testIdentifier:i.testIdentifier??"",environmentIdentifier:i.environmentIdentifier??"",...i};return this.recordToQtiVariableJSON(o)}getTemplateVariables(){let e={},t=this.getDirectChildrenByTag("qti-template-variable");return t.length&&t.forEach(i=>{let o=i.getAttribute("template-identifier")||i.getAttribute("identifier")||"";if(!o)return;let n=this.context?.variables?.find(c=>c.identifier===o);if(!n)return;let a=n.cardinality||"single",l=n.baseType||"string";e[o]=this.variableToQtiVariableJSON(n.value,a,l)}),e}getContextVariables(){let e={},t=this.getDirectChildrenByTag("qti-context-variable");return t.length&&t.forEach(i=>{let o=i.getAttribute("identifier")||"";if(!o)return;if(o==="QTI_CONTEXT"){let c=this.getQtiContextRecord();c&&(e[o]=c);return}let n=this.context?.variables?.find(c=>c.identifier===o);if(!n)return;let a=n.cardinality||"single",l=n.baseType||"string";e[o]=this.variableToQtiVariableJSON(n.value,a,l)}),e}#l(e){let t={...e};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=i.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`);t[o]=e[i]}return t}#u(e){let t={...e},i=(o,n,a)=>{let l=o;for(let c=0;c<n.length;c+=1){let p=n[c];if(c===n.length-1){l[p]=a;return}(!l[p]||typeof l[p]!="object"||Array.isArray(l[p]))&&(l[p]={}),l=l[p]}};for(let[o,n]of Object.entries(e)){if(!o.includes("__"))continue;let a=o.split("__").filter(Boolean);a.length<2||i(t,a,n)}return t}responseVariablesToQtiVariableJSON(e,t,i){if(t!=="single"){let o={list:{}};return o.list[i]=e,o}else{let o={base:{}};return o.base[i]=e,o}}#h(){return this.response===null||this.response===void 0?!1:Array.isArray(this.response)?this.response.length===0?!1:this.response.some(e=>e!==""&&e!==null&&e!==void 0):this.response!==""}#g(e,t){let i=this.dataset.invalidresponsemessage||"Invalid response.",o=e?"":t&&t.trim().length>0?t:i;this._internals.setValidity(e?{}:{customError:!0},o)}validate(){let e=typeof this.#i=="boolean"?this.#i:this.#h();return this.#g(e,this.#o),e}set value(e){e===null?this.#e=[]:this.#e=Array.isArray(e)?e:e.split(",")}get value(){return this.#e===null||this.#e===void 0?null:Array.isArray(this.#e)?this.#e.join(","):String(this.#e)}set boundTo(e){if(!e||!e[this.responseIdentifier])return;let t=this.#d(e[this.responseIdentifier]);this.#e=t,this.saveResponse(t)}get boundTo(){let e={};if(this.context?.variables?.find(i=>i.identifier===this.responseIdentifier)){let i=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.cardinality||"single",o=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.baseType||"string",n=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.value||null,a=this.responseVariablesToQtiVariableJSON(n,i,o);e[this.responseIdentifier]=a}return e}#b(e){return e&&e.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#x27;/g,"'").replace(/&#x2F;/g,"/").replace(/&#x60;/g,"`").replace(/&#x3D;/g,"=")}#f(e){let t={};for(let[i,o]of Object.entries(e))typeof o=="string"?t[i]=this.#b(o):t[i]=o;return t}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.handleIframeMessage),this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null)}sendMessageToIframe(e,t){let i=this.iframe?.contentWindow;if(!this._iframeLoaded||!i){this._pendingMessages.push({method:e,params:t});return}i.postMessage({source:"qti-portable-custom-interaction",responseIdentifier:this.responseIdentifier,method:e,params:t},"*")}#y(){this._pendingMessages.length&&(this._pendingMessages.forEach(e=>{this.sendMessageToIframe(e.method,e.params)}),this._pendingMessages=[])}createIframe(){this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null),this.iframe=document.createElement("iframe"),this.iframe.id=`pci-iframe-${this.responseIdentifier}`,this.iframe.setAttribute("title","QTI PCI Iframe"),this.iframe.setAttribute("aria-label","QTI PCI Iframe"),this.iframe.setAttribute("aria-hidden","false"),this.iframe.setAttribute("role","application"),this.iframe.style.width="100%",this.iframe.style.border="none",this.iframe.style.display="block",this.iframe.onload=()=>{this._iframeLoaded=!0,this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null),this.#x(),this.#p()};let e=`qti-pci-${this.responseIdentifier}-${Date.now()}`;this.iframe.name=e;let t=this.generateIframeContent();try{let i=new Blob([t],{type:"text/html"});this._iframeObjectUrl=URL.createObjectURL(i),this.iframe.src=this._iframeObjectUrl}catch{let i=encodeURIComponent(t);this.iframe.src=`data:text/html;charset=utf-8,${i}`}this.appendChild(this.iframe)}#p(){let e=this.#l(this.#u(this.#f({...this.dataset}))),t=this.context?.state?.[this.responseIdentifier],i=typeof t=="string"&&t.length>0?t:null,o={module:this.module,customInteractionTypeIdentifier:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl?this.baseUrl.startsWith("http")||this.baseUrl.startsWith("blob")||this.baseUrl.startsWith("base64")?this.baseUrl:Ki(`${window.location.origin}${this.baseUrl}`):window.location.origin,responseIdentifier:this.responseIdentifier,properties:e,contextVariables:this.getContextVariables(),templateVariables:this.getTemplateVariables(),dataAttributes:{...this.dataset},interactionModules:this.#v(),boundTo:i?null:this.boundTo,state:i};this.sendMessageToIframe("initialize",o)}#v(){let e=[],t=this.querySelector("qti-interaction-modules");if(t){let i=t.querySelectorAll("qti-interaction-module");for(let o of i)e.push({id:o.getAttribute("id"),primaryPath:o.getAttribute("primary-path"),fallbackPath:o.getAttribute("fallback-path")})}return e}#x(){let e=this.querySelector("qti-interaction-markup");e&&this.sendMessageToIframe("setMarkup",e.innerHTML);let t=Array.from(this.querySelectorAll("qti-stylesheet"));if(t.length){let o=t.map(n=>n.outerHTML).join(`
4770
- `);this.sendMessageToIframe("setStylesheets",o)}let i=this.querySelector("properties");i&&this.sendMessageToIframe("setProperties",i.innerHTML)}#q(){}connectedCallback(){super.connectedCallback(),this.#i=null,this.#o="",this.response=this.responseVariable?.value??null,window.addEventListener("message",this.handleIframeMessage),this.createIframe()}generateIframeContent(){let e=window.getComputedStyle(document.body),t=JSON.stringify(this.#a()),i=JSON.stringify(this.#c()),o=this.dataset.baseUrl?this.dataset.baseUrl.startsWith("/")?`${window.location.origin}${this.dataset.baseUrl}`:this.dataset.baseUrl:"",n=this.dataset.forwardConsole==="true",a=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1",l=a?`${window.location.origin}/cdn/index.js`:"https://unpkg.com/@citolab/qti-components/cdn",c=a?`${window.location.origin}/dist/item.css`:"https://unpkg.com/@citolab/qti-components@latest/dist/item.css",p=this.dataset.componentsCdnUrl||l,h=this.dataset.componentsCssUrl||c,m=`
4769
+ `]}#t;#r;#i;#o;#s(){if(this.#t===null&&this.requirePathsJson)try{let e=JSON.parse(this.requirePathsJson);if(Array.isArray(e)||!e||typeof e!="object")throw new Error("Require paths must be a JSON object.");this.#t=e}catch(e){console.error("Error parsing require paths JSON:",e),this._errorMessage=`Error parsing require paths JSON: ${e.message}`,this.#t={}}return this.#t||{}}#n(){if(this.#r===null&&this.requireShimJson)try{this.#r=JSON.parse(this.requireShimJson)}catch(e){console.error("Error parsing require shim JSON:",e),this._errorMessage=`Error parsing require shim JSON: ${e.message}`,this.#r={}}return this.#r||{}}#a(){return this.#s()}#c(){return this.#n()}#d(e){for(let t in e)if(e.hasOwnProperty(t)){let r=e[t];if(r){for(let o in r)if(r.hasOwnProperty(o)){let s=r[o];if(Array.isArray(s))return s.map(String);if(s!=null)return String(s)}}}return null}getDirectChildrenByTag(e){let t=e.toLowerCase();return Array.from(this.children).filter(r=>r.tagName.toLowerCase()===t)}coerceBaseValue(e,t){if(e==null)return e;switch(t){case"integer":{if(typeof e=="number")return e;let r=parseInt(String(e),10);return Number.isNaN(r)?e:r}case"float":case"duration":{if(typeof e=="number")return e;let r=parseFloat(String(e));return Number.isNaN(r)?e:r}case"boolean":{if(typeof e=="boolean")return e;if(typeof e=="string"){let r=e.toLowerCase();if(r==="true")return!0;if(r==="false")return!1}return e}default:return String(e)}}normalizeListValue(e){return e==null?[]:Array.isArray(e)?e:[e]}variableToQtiVariableJSON(e,t,r){if(t==="record"||r==="record")return this.recordToQtiVariableJSON(e);if(t!=="single"){let o=this.normalizeListValue(e).map(s=>this.coerceBaseValue(s,r));return{list:{[r]:o}}}return{base:{[r]:this.coerceBaseValue(e,r)}}}recordToQtiVariableJSON(e){if(!e||typeof e!="object")return{record:[]};let t=[];for(let[r,o]of Object.entries(e))t.push(this.recordEntryFromValue(r,o));return{record:t}}recordEntryFromValue(e,t){if(Array.isArray(t)){let r=t.filter(o=>o!=null);if(r.length&&r.every(o=>typeof o=="boolean"))return{name:e,list:{boolean:r}};if(r.length&&r.every(o=>typeof o=="number")){let o=r,s=o.every(a=>Number.isInteger(a));return{name:e,list:{[s?"integer":"float"]:o}}}return{name:e,list:{string:t.map(o=>o==null?"":String(o))}}}if(typeof t=="boolean")return{name:e,base:{boolean:t}};if(typeof t=="number")return Number.isInteger(t)?{name:e,base:{integer:t}}:{name:e,base:{float:t}};if(t==null)return{name:e,base:{string:""}};if(typeof t=="object")try{return{name:e,base:{string:JSON.stringify(t)}}}catch{return{name:e,base:{string:String(t)}}}return{name:e,base:{string:String(t)}}}getQtiContextDefaultsFromItem(){let e=this.closest("qti-assessment-item");if(!e)return{};let t={};return e.querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(o=>{let s=o.querySelector("qti-default-value");if(!s)return;s.querySelectorAll("qti-value[field-identifier]").forEach(l=>{let c=l.getAttribute("field-identifier");if(!c)return;let p=l.getAttribute("base-type")||"string",h=l.textContent?.trim()||"";t[c]=this.coerceBaseValue(h,p)})}),t}getQtiContextRecord(){let e=this.getQtiContextDefaultsFromItem(),t=this.qtiContext?.QTI_CONTEXT||{},r={...e,...t};if(!Object.keys(r).length)return null;let o={candidateIdentifier:r.candidateIdentifier??"",testIdentifier:r.testIdentifier??"",environmentIdentifier:r.environmentIdentifier??"",...r};return this.recordToQtiVariableJSON(o)}getTemplateVariables(){let e={},t=this.getDirectChildrenByTag("qti-template-variable");return t.length&&t.forEach(r=>{let o=r.getAttribute("template-identifier")||r.getAttribute("identifier")||"";if(!o)return;let s=this.context?.variables?.find(c=>c.identifier===o);if(!s)return;let a=s.cardinality||"single",l=s.baseType||"string";e[o]=this.variableToQtiVariableJSON(s.value,a,l)}),e}getContextVariables(){let e={},t=this.getDirectChildrenByTag("qti-context-variable");return t.length&&t.forEach(r=>{let o=r.getAttribute("identifier")||"";if(!o)return;if(o==="QTI_CONTEXT"){let c=this.getQtiContextRecord();c&&(e[o]=c);return}let s=this.context?.variables?.find(c=>c.identifier===o);if(!s)return;let a=s.cardinality||"single",l=s.baseType||"string";e[o]=this.variableToQtiVariableJSON(s.value,a,l)}),e}#l(e){let t={...e};for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let o=r.replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`);t[o]=e[r]}return t}#u(e){let t={...e},r=(o,s,a)=>{let l=o;for(let c=0;c<s.length;c+=1){let p=s[c];if(c===s.length-1){l[p]=a;return}(!l[p]||typeof l[p]!="object"||Array.isArray(l[p]))&&(l[p]={}),l=l[p]}};for(let[o,s]of Object.entries(e)){if(!o.includes("__"))continue;let a=o.split("__").filter(Boolean);a.length<2||r(t,a,s)}return t}responseVariablesToQtiVariableJSON(e,t,r){if(t!=="single"){let o={list:{}};return o.list[r]=e,o}else{let o={base:{}};return o.base[r]=e,o}}#h(){return this.response===null||this.response===void 0?!1:Array.isArray(this.response)?this.response.length===0?!1:this.response.some(e=>e!==""&&e!==null&&e!==void 0):this.response!==""}#g(e,t){let r=this.dataset.invalidresponsemessage||"Invalid response.",o=e?"":t&&t.trim().length>0?t:r;this._internals.setValidity(e?{}:{customError:!0},o)}validate(){let e=typeof this.#i=="boolean"?this.#i:this.#h();return this.#g(e,this.#o),e}set value(e){e===null?this.#e=[]:this.#e=Array.isArray(e)?e:e.split(",")}get value(){return this.#e===null||this.#e===void 0?null:Array.isArray(this.#e)?this.#e.join(","):String(this.#e)}set boundTo(e){if(!e||!e[this.responseIdentifier])return;let t=this.#d(e[this.responseIdentifier]);this.#e=t,this.saveResponse(t)}get boundTo(){let e={};if(this.context?.variables?.find(r=>r.identifier===this.responseIdentifier)){let r=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.cardinality||"single",o=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.baseType||"string",s=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.value||null,a=this.responseVariablesToQtiVariableJSON(s,r,o);e[this.responseIdentifier]=a}return e}#b(e){return e&&e.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#x27;/g,"'").replace(/&#x2F;/g,"/").replace(/&#x60;/g,"`").replace(/&#x3D;/g,"=")}#f(e){let t={};for(let[r,o]of Object.entries(e))typeof o=="string"?t[r]=this.#b(o):t[r]=o;return t}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.handleIframeMessage),this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null)}sendMessageToIframe(e,t){let r=this.iframe?.contentWindow;if(!this._iframeLoaded||!r){this._pendingMessages.push({method:e,params:t});return}r.postMessage({source:"qti-portable-custom-interaction",responseIdentifier:this.responseIdentifier,method:e,params:t},"*")}#y(){this._pendingMessages.length&&(this._pendingMessages.forEach(e=>{this.sendMessageToIframe(e.method,e.params)}),this._pendingMessages=[])}createIframe(){this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null),this.iframe=document.createElement("iframe"),this.iframe.id=`pci-iframe-${this.responseIdentifier}`,this.iframe.setAttribute("title","QTI PCI Iframe"),this.iframe.setAttribute("aria-label","QTI PCI Iframe"),this.iframe.setAttribute("aria-hidden","false"),this.iframe.setAttribute("role","application"),this.iframe.style.width="100%",this.iframe.style.border="none",this.iframe.style.display="block",this.iframe.onload=()=>{this._iframeLoaded=!0,this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null),this.#x(),this.#p()};let e=`qti-pci-${this.responseIdentifier}-${Date.now()}`;this.iframe.name=e;let t=this.generateIframeContent();try{let r=new Blob([t],{type:"text/html"});this._iframeObjectUrl=URL.createObjectURL(r),this.iframe.src=this._iframeObjectUrl}catch{let r=encodeURIComponent(t);this.iframe.src=`data:text/html;charset=utf-8,${r}`}this.appendChild(this.iframe)}#p(){let e=this.#l(this.#u(this.#f({...this.dataset}))),t=this.context?.state?.[this.responseIdentifier],r=typeof t=="string"&&t.length>0?t:null,o={module:this.module,customInteractionTypeIdentifier:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl?this.baseUrl.startsWith("http")||this.baseUrl.startsWith("blob")||this.baseUrl.startsWith("base64")?this.baseUrl:Ki(`${window.location.origin}${this.baseUrl}`):window.location.origin,responseIdentifier:this.responseIdentifier,properties:e,contextVariables:this.getContextVariables(),templateVariables:this.getTemplateVariables(),dataAttributes:{...this.dataset},interactionModules:this.#v(),boundTo:r?null:this.boundTo,state:r};this.sendMessageToIframe("initialize",o)}#v(){let e=[],t=this.querySelector("qti-interaction-modules");if(t){let r=t.querySelectorAll("qti-interaction-module");for(let o of r)e.push({id:o.getAttribute("id"),primaryPath:o.getAttribute("primary-path"),fallbackPath:o.getAttribute("fallback-path")})}return e}#x(){let e=this.querySelector("qti-interaction-markup");e&&this.sendMessageToIframe("setMarkup",e.innerHTML);let t=Array.from(this.querySelectorAll("qti-stylesheet"));if(t.length){let o=t.map(s=>s.outerHTML).join(`
4770
+ `);this.sendMessageToIframe("setStylesheets",o)}let r=this.querySelector("properties");r&&this.sendMessageToIframe("setProperties",r.innerHTML)}#q(){}connectedCallback(){super.connectedCallback(),this.#i=null,this.#o="",this.response=this.responseVariable?.value??null,window.addEventListener("message",this.handleIframeMessage),this.createIframe()}generateIframeContent(){let e=window.getComputedStyle(document.body),t=JSON.stringify(this.#a()),r=JSON.stringify(this.#c()),o=this.dataset.baseUrl?this.dataset.baseUrl.startsWith("/")?`${window.location.origin}${this.dataset.baseUrl}`:this.dataset.baseUrl:"",s=this.dataset.forwardConsole==="true",a=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1",l=a?`${window.location.origin}/cdn/index.js`:"https://unpkg.com/@citolab/qti-components/cdn",c=a?`${window.location.origin}/dist/item.css`:"https://unpkg.com/@citolab/qti-components@latest/dist/item.css",p=this.dataset.componentsCdnUrl||l,h=this.dataset.componentsCssUrl||c,m=`
4771
4771
  font-family: ${e.getPropertyValue("font-family")};
4772
4772
  font-size: ${e.getPropertyValue("font-size")};
4773
4773
  line-height: ${e.getPropertyValue("line-height")};
@@ -4808,7 +4808,7 @@ CES.load();
4808
4808
  <link href="${h}" rel="stylesheet" />
4809
4809
  <script src="${this.requireJsUrl}"></script>
4810
4810
  <script>
4811
- const forwardConsole = ${n?"true":"false"};
4811
+ const forwardConsole = ${s?"true":"false"};
4812
4812
  if (forwardConsole) {
4813
4813
  const originalLog = console.log.bind(console);
4814
4814
  const originalError = console.error.bind(console);
@@ -4851,7 +4851,7 @@ CES.load();
4851
4851
  // Define standard paths and shims
4852
4852
  window.requirePaths = ${t};
4853
4853
 
4854
- window.requireShim = ${i};
4854
+ window.requireShim = ${r};
4855
4855
 
4856
4856
  // Single initial RequireJS configuration with error handling
4857
4857
  window.requirejs.config({
@@ -5652,13 +5652,13 @@ CES.load();
5652
5652
  <body>
5653
5653
  <div id="pci-container"></div>
5654
5654
  </body>
5655
- </html>`}toggleInternalCorrectResponse(e){let t=this.responseVariable;this.correctResponse=e?t?.correctResponse:t.cardinality==="single"?"":[];let i=`correct-response-container-${this.responseIdentifier}`,o=this.parentElement?.querySelectorAll(`#${i}`);if(o&&o.forEach(m=>{m.remove()}),e)this.disable();else{this.enable();return}if(!e||!t?.correctResponse)return;let n=document.createElement("div");n.id=i,n.className="pci-correct-response-container",n.style.position="relative",n.style.marginTop="20px",n.style.border="2px solid green",n.style.padding="16px",n.style.borderRadius="4px",n.style.backgroundColor="rgba(0, 128, 0, 0.05)";let a=document.createElement("div");a.textContent="Correct Response:",a.style.fontWeight="bold",a.style.marginBottom="10px",a.style.color="green",n.appendChild(a);let l=document.createElement("qti-portable-custom-interaction");Array.from(this.attributes).forEach(m=>{m.name!=="id"&&m.name!=="response-identifier"&&l.setAttribute(m.name,m.value)});let c=this.responseIdentifier;l.responseIdentifier=`${c}-correct`,Array.from(this.children).forEach(m=>{let y=m.cloneNode(!0);l.appendChild(y)});let p=t.correctResponse,h=l.connectedCallback;l.connectedCallback=function(){h.call(this);let m=()=>{let y=this.responseVariablesToQtiVariableJSON(p,t.cardinality,t.baseType);this.sendMessageToIframe("setBoundTo",{[c]:y}),this.sendMessageToIframe("setState",{state:"review"})};this._iframeLoaded?m():this.addEventListener("qti-portable-custom-interaction-loaded",m,{once:!0})},l.style.pointerEvents="none",n.appendChild(l),this.after(n)}disable(){if(this.#m={pointerEvents:this.style.pointerEvents,position:this.style.position},this.sendMessageToIframe("setState",{state:"disabled"}),!this.querySelector(".pci-interaction-overlay")){let t=document.createElement("div");t.className="pci-interaction-overlay",t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.width="100%",t.style.height="100%",t.style.backgroundColor="rgba(200, 200, 200, 0.3)",t.style.zIndex="100",t.style.pointerEvents="all",t.style.cursor="not-allowed",getComputedStyle(this).position==="static"&&(this.style.position="relative"),this.appendChild(t)}}enable(){let e=this.querySelector(".pci-interaction-overlay");e&&e.remove(),this.#m&&(this.#m.pointerEvents&&(this.style.pointerEvents=this.#m.pointerEvents),this.#m.position&&(this.style.position=this.#m.position),this.#m=null),this.sendMessageToIframe("setState",{state:"interacting"})}#m;render(){return x`
5655
+ </html>`}toggleInternalCorrectResponse(e){let t=this.responseVariable;this.correctResponse=e?t?.correctResponse:t.cardinality==="single"?"":[];let r=`correct-response-container-${this.responseIdentifier}`,o=this.parentElement?.querySelectorAll(`#${r}`);if(o&&o.forEach(m=>{m.remove()}),e)this.disable();else{this.enable();return}if(!e||!t?.correctResponse)return;let s=document.createElement("div");s.id=r,s.className="pci-correct-response-container",s.style.position="relative",s.style.marginTop="20px",s.style.border="2px solid green",s.style.padding="16px",s.style.borderRadius="4px",s.style.backgroundColor="rgba(0, 128, 0, 0.05)";let a=document.createElement("div");a.textContent="Correct Response:",a.style.fontWeight="bold",a.style.marginBottom="10px",a.style.color="green",s.appendChild(a);let l=document.createElement("qti-portable-custom-interaction");Array.from(this.attributes).forEach(m=>{m.name!=="id"&&m.name!=="response-identifier"&&l.setAttribute(m.name,m.value)});let c=this.responseIdentifier;l.responseIdentifier=`${c}-correct`,Array.from(this.children).forEach(m=>{let y=m.cloneNode(!0);l.appendChild(y)});let p=t.correctResponse,h=l.connectedCallback;l.connectedCallback=function(){h.call(this);let m=()=>{let y=this.responseVariablesToQtiVariableJSON(p,t.cardinality,t.baseType);this.sendMessageToIframe("setBoundTo",{[c]:y}),this.sendMessageToIframe("setState",{state:"review"})};this._iframeLoaded?m():this.addEventListener("qti-portable-custom-interaction-loaded",m,{once:!0})},l.style.pointerEvents="none",s.appendChild(l),this.after(s)}disable(){if(this.#m={pointerEvents:this.style.pointerEvents,position:this.style.position},this.sendMessageToIframe("setState",{state:"disabled"}),!this.querySelector(".pci-interaction-overlay")){let t=document.createElement("div");t.className="pci-interaction-overlay",t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.width="100%",t.style.height="100%",t.style.backgroundColor="rgba(200, 200, 200, 0.3)",t.style.zIndex="100",t.style.pointerEvents="all",t.style.cursor="not-allowed",getComputedStyle(this).position==="static"&&(this.style.position="relative"),this.appendChild(t)}}enable(){let e=this.querySelector(".pci-interaction-overlay");e&&e.remove(),this.#m&&(this.#m.pointerEvents&&(this.style.pointerEvents=this.#m.pointerEvents),this.#m.position&&(this.style.position=this.#m.position),this.#m=null),this.sendMessageToIframe("setState",{state:"interacting"})}#m;render(){return x`
5656
5656
  <slot></slot>
5657
5657
  ${this._errorMessage?x`<div style="color:red">
5658
5658
  <h1>Error</h1>
5659
5659
  ${this._errorMessage}
5660
5660
  </div>`:""}
5661
- `}};d([b({type:String,attribute:"module"})],Z.prototype,"module",2),d([b({type:String,attribute:"custom-interaction-type-identifier"})],Z.prototype,"customInteractionTypeIdentifier",2),d([b({type:String,attribute:"data-require-paths"})],Z.prototype,"requirePathsJson",2),d([b({type:String,attribute:"data-require-shim"})],Z.prototype,"requireShimJson",2),d([b({type:String,attribute:"data-require-js-url"})],Z.prototype,"requireJsUrl",2),d([b({type:String,attribute:"data-base-url"})],Z.prototype,"baseUrl",2),d([b({type:Boolean,attribute:"data-use-default-paths"})],Z.prototype,"useDefaultPaths",2),d([R()],Z.prototype,"_errorMessage",2),d([P({context:G,subscribe:!0}),R()],Z.prototype,"context",2),d([P({context:Xt,subscribe:!0}),R()],Z.prototype,"qtiContext",2),d([R()],Z.prototype,"response",2);var Vo=class extends Z{#e=!1;async getIFrameContent(){return new Promise(r=>{let e=`get-content-${Date.now()}`,t=i=>{let{data:o}=i;o?.source==="qti-pci-iframe"&&(!o?.responseIdentifier||o?.responseIdentifier===this.responseIdentifier)&&o?.method==="getContentResponse"&&o?.messageId===e&&(window.removeEventListener("message",t),r(o.content))};window.addEventListener("message",t),this.sendMessageToIframe("getContent",{messageId:e}),setTimeout(()=>{window.removeEventListener("message",t),r("")},5e3)})}setTestContext(r){this.context=r,this.updateComplete.then(()=>{this.value=r?.variables?.find(e=>e.identifier===this.responseIdentifier).value})}async recreateIframe(){this.#e=!0;try{return this.iframe&&(this._iframeLoaded=!1,this.iframe.remove()),this._pendingMessages=[],this.createIframe(),new Promise(r=>{let e=()=>{this.removeEventListener("qti-portable-custom-interaction-loaded",e),r()};this.addEventListener("qti-portable-custom-interaction-loaded",e),setTimeout(()=>{this.removeEventListener("qti-portable-custom-interaction-loaded",e),r()},5e3)})}finally{this.#e=!1}}disconnectedCallback(){this.#e||super.disconnectedCallback()}async iFrameMouseClick(r,e){return new Promise(t=>{let i=`click-${Date.now()}`,o=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="clickResponse"&&a?.messageId===i&&(window.removeEventListener("message",o),t())};window.addEventListener("message",o),this.sendMessageToIframe("simulateClick",{x:r,y:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",o),t()},5e3)})}async iFrameClickOnElement(r){return new Promise(e=>{let t=`click-selector-${Date.now()}`,i=o=>{let{data:n}=o;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="clickSelectorResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("clickOnSelector",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}async iFrameClickOnElementByText(r){return new Promise(e=>{let t=`click-text-${Date.now()}`,i=o=>{let{data:n}=o;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="clickTextResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("clickOnElementByText",{text:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}async iFrameSetValueElement(r,e){return new Promise(t=>{let i=`set-value-${Date.now()}`,o=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueResponse"&&a?.messageId===i&&(window.removeEventListener("message",o),t(a.success))};window.addEventListener("message",o),this.sendMessageToIframe("setValueElement",{selector:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",o),t(!1)},5e3)})}async iFrameGetBoundingClientRect(r){return new Promise(e=>{let t=`get-bounding-rect-${Date.now()}`,i=o=>{let{data:n}=o;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="getBoundingRectResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.rect??null))};window.addEventListener("message",i),this.sendMessageToIframe("getBoundingRect",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(null)},5e3)})}async iFrameSetValueElementByText(r,e){return new Promise(t=>{let i=`set-value-text-${Date.now()}`,o=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueByTextResponse"&&a?.messageId===i&&(window.removeEventListener("message",o),t(a.success))};window.addEventListener("message",o),this.sendMessageToIframe("setValueElementByText",{text:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",o),t(!1)},5e3)})}async iFrameMousedownOnElement(r){return new Promise(e=>{let t=`mousedown-selector-${Date.now()}`,i=o=>{let{data:n}=o;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="mousedownSelectorResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("mousedownOnSelector",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}generateIframeContent(){let r=super.generateIframeContent(),e=`
5661
+ `}};d([b({type:String,attribute:"module"})],Z.prototype,"module",2),d([b({type:String,attribute:"custom-interaction-type-identifier"})],Z.prototype,"customInteractionTypeIdentifier",2),d([b({type:String,attribute:"data-require-paths"})],Z.prototype,"requirePathsJson",2),d([b({type:String,attribute:"data-require-shim"})],Z.prototype,"requireShimJson",2),d([b({type:String,attribute:"data-require-js-url"})],Z.prototype,"requireJsUrl",2),d([b({type:String,attribute:"data-base-url"})],Z.prototype,"baseUrl",2),d([b({type:Boolean,attribute:"data-use-default-paths"})],Z.prototype,"useDefaultPaths",2),d([R()],Z.prototype,"_errorMessage",2),d([P({context:G,subscribe:!0}),R()],Z.prototype,"context",2),d([P({context:Xt,subscribe:!0}),R()],Z.prototype,"qtiContext",2),d([R()],Z.prototype,"response",2);var Vo=class extends Z{#e=!1;async getIFrameContent(){return new Promise(i=>{let e=`get-content-${Date.now()}`,t=r=>{let{data:o}=r;o?.source==="qti-pci-iframe"&&(!o?.responseIdentifier||o?.responseIdentifier===this.responseIdentifier)&&o?.method==="getContentResponse"&&o?.messageId===e&&(window.removeEventListener("message",t),i(o.content))};window.addEventListener("message",t),this.sendMessageToIframe("getContent",{messageId:e}),setTimeout(()=>{window.removeEventListener("message",t),i("")},5e3)})}setTestContext(i){this.context=i,this.updateComplete.then(()=>{this.value=i?.variables?.find(e=>e.identifier===this.responseIdentifier).value})}async recreateIframe(){this.#e=!0;try{return this.iframe&&(this._iframeLoaded=!1,this.iframe.remove()),this._pendingMessages=[],this.createIframe(),new Promise(i=>{let e=()=>{this.removeEventListener("qti-portable-custom-interaction-loaded",e),i()};this.addEventListener("qti-portable-custom-interaction-loaded",e),setTimeout(()=>{this.removeEventListener("qti-portable-custom-interaction-loaded",e),i()},5e3)})}finally{this.#e=!1}}disconnectedCallback(){this.#e||super.disconnectedCallback()}async iFrameMouseClick(i,e){return new Promise(t=>{let r=`click-${Date.now()}`,o=s=>{let{data:a}=s;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="clickResponse"&&a?.messageId===r&&(window.removeEventListener("message",o),t())};window.addEventListener("message",o),this.sendMessageToIframe("simulateClick",{x:i,y:e,messageId:r}),setTimeout(()=>{window.removeEventListener("message",o),t()},5e3)})}async iFrameClickOnElement(i){return new Promise(e=>{let t=`click-selector-${Date.now()}`,r=o=>{let{data:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="clickSelectorResponse"&&s?.messageId===t&&(window.removeEventListener("message",r),e(s.success))};window.addEventListener("message",r),this.sendMessageToIframe("clickOnSelector",{selector:i,messageId:t}),setTimeout(()=>{window.removeEventListener("message",r),e(!1)},5e3)})}async iFrameClickOnElementByText(i){return new Promise(e=>{let t=`click-text-${Date.now()}`,r=o=>{let{data:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="clickTextResponse"&&s?.messageId===t&&(window.removeEventListener("message",r),e(s.success))};window.addEventListener("message",r),this.sendMessageToIframe("clickOnElementByText",{text:i,messageId:t}),setTimeout(()=>{window.removeEventListener("message",r),e(!1)},5e3)})}async iFrameSetValueElement(i,e){return new Promise(t=>{let r=`set-value-${Date.now()}`,o=s=>{let{data:a}=s;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueResponse"&&a?.messageId===r&&(window.removeEventListener("message",o),t(a.success))};window.addEventListener("message",o),this.sendMessageToIframe("setValueElement",{selector:i,value:e,messageId:r}),setTimeout(()=>{window.removeEventListener("message",o),t(!1)},5e3)})}async iFrameGetBoundingClientRect(i){return new Promise(e=>{let t=`get-bounding-rect-${Date.now()}`,r=o=>{let{data:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="getBoundingRectResponse"&&s?.messageId===t&&(window.removeEventListener("message",r),e(s.rect??null))};window.addEventListener("message",r),this.sendMessageToIframe("getBoundingRect",{selector:i,messageId:t}),setTimeout(()=>{window.removeEventListener("message",r),e(null)},5e3)})}async iFrameSetValueElementByText(i,e){return new Promise(t=>{let r=`set-value-text-${Date.now()}`,o=s=>{let{data:a}=s;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueByTextResponse"&&a?.messageId===r&&(window.removeEventListener("message",o),t(a.success))};window.addEventListener("message",o),this.sendMessageToIframe("setValueElementByText",{text:i,value:e,messageId:r}),setTimeout(()=>{window.removeEventListener("message",o),t(!1)},5e3)})}async iFrameMousedownOnElement(i){return new Promise(e=>{let t=`mousedown-selector-${Date.now()}`,r=o=>{let{data:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="mousedownSelectorResponse"&&s?.messageId===t&&(window.removeEventListener("message",r),e(s.success))};window.addEventListener("message",r),this.sendMessageToIframe("mousedownOnSelector",{selector:i,messageId:t}),setTimeout(()=>{window.removeEventListener("message",r),e(!1)},5e3)})}generateIframeContent(){let i=super.generateIframeContent(),e=`
5662
5662
  // Test helper functions for QtiPortableCustomInteractionTest
5663
5663
  // Base iframe implementation already provides PCIManager.getContent
5664
5664
 
@@ -5851,7 +5851,7 @@ CES.load();
5851
5851
  }
5852
5852
  },
5853
5853
  true
5854
- );`,t=r.lastIndexOf("</script>");return r.substring(0,t)+e+r.substring(t)}};customElements.define("qti-portable-custom-interaction",Z);customElements.define("qti-portable-custom-interaction-test",Vo);var Jl=S`
5854
+ );`,t=i.lastIndexOf("</script>");return i.substring(0,t)+e+i.substring(t)}};customElements.define("qti-portable-custom-interaction",Z);customElements.define("qti-portable-custom-interaction-test",Vo);var Jl=S`
5855
5855
  :host {
5856
5856
  display: block;
5857
5857
  }
@@ -5867,7 +5867,7 @@ CES.load();
5867
5867
  display: inline-block;
5868
5868
  position: relative;
5869
5869
  }
5870
- `;var Ho=class extends C{static{this.styles=Yl}render(){return x`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(r){r.preventDefault();let e=r.clientX-this.startX,t=r.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+t+"px",this.startX=r.clientX,this.startY=r.clientY}firstUpdated(r){super.firstUpdated(r),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};customElements.define("qti-position-object-interaction",No);customElements.define("qti-position-object-stage",Ho);var Kl="important",gd=" !"+Kl,Bs=ae(class extends ke{constructor(s){if(super(s),s.type!==tt.ATTRIBUTE||s.name!=="style"||s.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce(((r,e)=>{let t=s[e];return t==null?r:r+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${t};`}),"")}update(s,[r]){let{style:e}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(r)),this.render(r);for(let t of this.ft)r[t]==null&&(this.ft.delete(t),t.includes("-")?e.removeProperty(t):e[t]=null);for(let t in r){let i=r[t];if(i!=null){this.ft.add(t);let o=typeof i=="string"&&i.endsWith(gd);t.includes("-")||o?e.setProperty(t,o?i.slice(0,-11):i,o?Kl:""):e[t]=i}}return X}});var Zl=S`
5870
+ `;var Ho=class extends C{static{this.styles=Yl}render(){return x`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(i){i.preventDefault();let e=i.clientX-this.startX,t=i.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+t+"px",this.startX=i.clientX,this.startY=i.clientY}firstUpdated(i){super.firstUpdated(i),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};customElements.define("qti-position-object-interaction",No);customElements.define("qti-position-object-stage",Ho);var Kl="important",gd=" !"+Kl,Bs=ae(class extends ke{constructor(n){if(super(n),n.type!==tt.ATTRIBUTE||n.name!=="style"||n.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(n){return Object.keys(n).reduce(((i,e)=>{let t=n[e];return t==null?i:i+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${t};`}),"")}update(n,[i]){let{style:e}=n.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(i)),this.render(i);for(let t of this.ft)i[t]==null&&(this.ft.delete(t),t.includes("-")?e.removeProperty(t):e[t]=null);for(let t in i){let r=i[t];if(r!=null){this.ft.add(t);let o=typeof r=="string"&&r.endsWith(gd);t.includes("-")||o?e.setProperty(t,o?r.slice(0,-11):r,o?Kl:""):e[t]=r}}return X}});var Zl=S`
5871
5871
  :host {
5872
5872
  display: block;
5873
5873
  }
@@ -5882,12 +5882,12 @@ CES.load();
5882
5882
  height: auto;
5883
5883
  display: block;
5884
5884
  }
5885
- `;var Qe=class extends ${constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this.response=null;this._correctAreas=[];this._responseCorrection=[];this.#e=null;this.#t=1;this.#r=1;this.#i=0;this.#o=0;this.#s=e=>{if(this.disabled)return;if(!this.#e){console.warn("No <img> element found in <qti-select-point-interaction>");return}this.#a();let t=this.#e.getBoundingClientRect(),i=(e.clientX-t.left)*this.#t,o=(e.clientY-t.top)*this.#r,n=`${i.toFixed()} ${o.toFixed()}`;this.maxChoices===1?this.response=[n]:(this.maxChoices===0||(this.response||[]).length<this.maxChoices)&&(this.response=[...this.response||[],n]),this.saveResponse(this.response)};this.#n=()=>{this.#a()}}static{this.styles=Zl}#e;#t;#r;#i;#o;#s;connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.#n)}#n;get responsePoints(){return(this.response||[]).filter(e=>e).map(e=>{let[t,i]=e.split(" ").map(Number);return{x:t,y:i}})}toggleCandidateCorrection(e){this._responseCorrection=[],e&&this.responsePoints.forEach(t=>{let i=this.responseVariable.areaMapping.areaMapEntries.some(o=>K.isPointInArea(`${t.x} ${t.y}`,`${o.shape},${o.coords}`,this.responseVariable.baseType));this._responseCorrection.push(i)})}toggleCorrectResponse(e){let t=this.responseVariable;if(!e||!t){this._correctAreas=[];return}let i=t.areaMapping,o=[];if(!i||i.areaMapEntries.length===0)if(t.correctResponse){let n=Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse];if(n.length===0||n.find(a=>a.split(" ").length<2))return console.error("No valid correct responses found for the response variable."),null;console.warn("No area mapping found for the response variable. Using the correct responses to display the correct response but it probably won't score correct."),o=n.map(a=>({shape:"circle",coords:a.split(" ").join(",").concat(",10"),defaultValue:1,mappedValue:1}))}else{console.error("No area mapping found for the response variable.");return}else o=i.areaMapEntries;this._correctAreas=o.map(n=>({coords:n.coords,shape:n.shape}))}updated(e){super.updated(e);let t=this.#e;t&&e.has("_correctAreas")&&this._correctAreas.length>0&&(this.#a(),this.shadowRoot.querySelectorAll("div").forEach(i=>{let o=i.dataset.coord,n=i.dataset.shape;o&&n&&gt(n,o.split(",").map(a=>+a),t,i)}))}render(){return x` <slot name="prompt"></slot>
5885
+ `;var Qe=class extends ${constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this.response=null;this._correctAreas=[];this._responseCorrection=[];this.#e=null;this.#t=1;this.#r=1;this.#i=0;this.#o=0;this.#s=e=>{if(this.disabled)return;if(!this.#e){console.warn("No <img> element found in <qti-select-point-interaction>");return}this.#a();let t=this.#e.getBoundingClientRect(),r=(e.clientX-t.left)*this.#t,o=(e.clientY-t.top)*this.#r,s=`${r.toFixed()} ${o.toFixed()}`;this.maxChoices===1?this.response=[s]:(this.maxChoices===0||(this.response||[]).length<this.maxChoices)&&(this.response=[...this.response||[],s]),this.saveResponse(this.response)};this.#n=()=>{this.#a()}}static{this.styles=Zl}#e;#t;#r;#i;#o;#s;connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.#n)}#n;get responsePoints(){return(this.response||[]).filter(e=>e).map(e=>{let[t,r]=e.split(" ").map(Number);return{x:t,y:r}})}toggleCandidateCorrection(e){this._responseCorrection=[],e&&this.responsePoints.forEach(t=>{let r=this.responseVariable.areaMapping.areaMapEntries.some(o=>K.isPointInArea(`${t.x} ${t.y}`,`${o.shape},${o.coords}`,this.responseVariable.baseType));this._responseCorrection.push(r)})}toggleCorrectResponse(e){let t=this.responseVariable;if(!e||!t){this._correctAreas=[];return}let r=t.areaMapping,o=[];if(!r||r.areaMapEntries.length===0)if(t.correctResponse){let s=Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse];if(s.length===0||s.find(a=>a.split(" ").length<2))return console.error("No valid correct responses found for the response variable."),null;console.warn("No area mapping found for the response variable. Using the correct responses to display the correct response but it probably won't score correct."),o=s.map(a=>({shape:"circle",coords:a.split(" ").join(",").concat(",10"),defaultValue:1,mappedValue:1}))}else{console.error("No area mapping found for the response variable.");return}else o=r.areaMapEntries;this._correctAreas=o.map(s=>({coords:s.coords,shape:s.shape}))}updated(e){super.updated(e);let t=this.#e;t&&e.has("_correctAreas")&&this._correctAreas.length>0&&(this.#a(),this.shadowRoot.querySelectorAll("div").forEach(r=>{let o=r.dataset.coord,s=r.dataset.shape;o&&s&&gt(s,o.split(",").map(a=>+a),t,r)}))}render(){return x` <slot name="prompt"></slot>
5886
5886
  <point-container>
5887
- ${br((this.response||[]).filter(e=>e),e=>e,(e,t)=>{let[i,o]=e.split(" ").map(Number),n=i/(this.#i||1)*100,a=o/(this.#o||1)*100,l=16,c=l/(this.#i||1)*100,p=l/(this.#o||1)*100,h="";return this._responseCorrection[t]===!0?h=" correct":this._responseCorrection[t]===!1&&(h=" incorrect"),x`
5887
+ ${br((this.response||[]).filter(e=>e),e=>e,(e,t)=>{let[r,o]=e.split(" ").map(Number),s=r/(this.#i||1)*100,a=o/(this.#o||1)*100,l=16,c=l/(this.#i||1)*100,p=l/(this.#o||1)*100,h="";return this._responseCorrection[t]===!0?h=" correct":this._responseCorrection[t]===!1&&(h=" incorrect"),x`
5888
5888
  <button
5889
5889
  part="point${h}"
5890
- style=${Bs({pointerEvents:this.maxChoices===1?"none":"auto",position:"absolute",transform:"translate(-50%, -50%)",left:`${n}%`,top:`${a}%`,width:`min(${c}%, 1rem)`,height:`min(${p}%, 1rem)`,minWidth:`min(${c}%, 1rem)`,minHeight:`min(${p}%, 1rem)`,borderRadius:"50%",background:"red"})}
5890
+ style=${Bs({pointerEvents:this.maxChoices===1?"none":"auto",position:"absolute",transform:"translate(-50%, -50%)",left:`${s}%`,top:`${a}%`,width:`min(${c}%, 1rem)`,height:`min(${p}%, 1rem)`,minWidth:`min(${c}%, 1rem)`,minHeight:`min(${p}%, 1rem)`,borderRadius:"50%",background:"red"})}
5891
5891
  aria-label="Remove point at ${e}"
5892
5892
  ?disabled=${this.disabled}
5893
5893
  @click=${m=>{m.stopPropagation(),this.response=(this.response||[]).filter((y,v)=>v!==t),this.saveResponse(this.response)}}
@@ -5980,7 +5980,7 @@ CES.load();
5980
5980
  text-align: center;
5981
5981
  color: #6b7280; /* text-gray-500 */
5982
5982
  }
5983
- `;var xt=class extends ${constructor(){super(...arguments);this.#e=0;this.#t=null;this.min=0;this.max=100;this.step=1}static{this.styles=ec}#e;#t;validate(){return!0}connectedCallback(){super.connectedCallback(),this.#r(this.min),this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}get response(){return this.#e.toString()}set response(e){let t=parseInt(e,10);isNaN(t)||this.#r(t)}toggleCorrectResponse(e){let t=this.responseVariable;if(t?.correctResponse){if(e){this._correctResponse=t.correctResponse.toString();let i=parseFloat(t.correctResponse.toString());if(isNaN(i))this.#t=null;else{this.#t=i;let o=(this.#t-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage-correct",`${o}%`)}}else this.#t=null;this.requestUpdate()}}#r(e){let t=this.#e;if(this.#e=Math.min(this.max,Math.max(this.min,e)),this.#e===t)return;let i=(this.#e-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage",`${i}%`),this._internals.setFormValue(this.value),this.saveResponse(this.response),this.requestUpdate()}render(){return x`
5983
+ `;var xt=class extends ${constructor(){super(...arguments);this.#e=0;this.#t=null;this.min=0;this.max=100;this.step=1}static{this.styles=ec}#e;#t;validate(){return!0}connectedCallback(){super.connectedCallback(),this.#r(this.min),this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}get response(){return this.#e.toString()}set response(e){let t=parseInt(e,10);isNaN(t)||this.#r(t)}toggleCorrectResponse(e){let t=this.responseVariable;if(t?.correctResponse){if(e){this._correctResponse=t.correctResponse.toString();let r=parseFloat(t.correctResponse.toString());if(isNaN(r))this.#t=null;else{this.#t=r;let o=(this.#t-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage-correct",`${o}%`)}}else this.#t=null;this.requestUpdate()}}#r(e){let t=this.#e;if(this.#e=Math.min(this.max,Math.max(this.min,e)),this.#e===t)return;let r=(this.#e-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage",`${r}%`),this._internals.setFormValue(this.value),this.saveResponse(this.response),this.requestUpdate()}render(){return x`
5984
5984
  <slot name="prompt"></slot>
5985
5985
  <div id="slider" part="slider">
5986
5986
  <div id="bounds" part="bounds">
@@ -6002,7 +6002,7 @@ CES.load();
6002
6002
  `:null}
6003
6003
  </div>
6004
6004
  </div>
6005
- `}#i(e){this.#s(e.pageX);let t=o=>this.#n(o.pageX),i=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",i),this.#a()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",i)}#o(e){this.#s(e.touches[0].pageX);let t=o=>this.#n(o.touches[0].pageX),i=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",i),this.#a()};document.addEventListener("touchmove",t,{passive:!1}),document.addEventListener("touchend",i)}#s(e){this.#n(e)}#n(e){let t=this._rail.getBoundingClientRect(),i=e-t.left,o=Math.min(1,Math.max(0,i/t.width)),n=this.min+Math.round(o*(this.max-this.min)/this.step)*this.step;this.#r(n)}#a(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};d([Ht("#rail")],xt.prototype,"_rail",2),d([b({type:Number,attribute:"lower-bound"})],xt.prototype,"min",2),d([b({type:Number,attribute:"upper-bound"})],xt.prototype,"max",2),d([b({type:Number,attribute:"step"})],xt.prototype,"step",2);customElements.define("qti-slider-interaction",xt);var tc=()=>new zs,zs=class{},Us=new WeakMap,rT=ae(class extends it{render(s){return N}update(s,[r]){let e=r!==this.G;return e&&this.G!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=r,this.ht=s.options?.host,this.rt(this.ct=s.element)),N}rt(s){if(this.isConnected||(s=void 0),typeof this.G=="function"){let r=this.ht??globalThis,e=Us.get(r);e===void 0&&(e=new WeakMap,Us.set(r,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,s),s!==void 0&&this.G.call(this.ht,s)}else this.G.value=s}get lt(){return typeof this.G=="function"?Us.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var rc=S`
6005
+ `}#i(e){this.#s(e.pageX);let t=o=>this.#n(o.pageX),r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this.#a()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r)}#o(e){this.#s(e.touches[0].pageX);let t=o=>this.#n(o.touches[0].pageX),r=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r),this.#a()};document.addEventListener("touchmove",t,{passive:!1}),document.addEventListener("touchend",r)}#s(e){this.#n(e)}#n(e){let t=this._rail.getBoundingClientRect(),r=e-t.left,o=Math.min(1,Math.max(0,r/t.width)),s=this.min+Math.round(o*(this.max-this.min)/this.step)*this.step;this.#r(s)}#a(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};d([Ht("#rail")],xt.prototype,"_rail",2),d([b({type:Number,attribute:"lower-bound"})],xt.prototype,"min",2),d([b({type:Number,attribute:"upper-bound"})],xt.prototype,"max",2),d([b({type:Number,attribute:"step"})],xt.prototype,"step",2);customElements.define("qti-slider-interaction",xt);var tc=()=>new zs,zs=class{},Us=new WeakMap,rT=ae(class extends it{render(n){return N}update(n,[i]){let e=i!==this.G;return e&&this.G!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=i,this.ht=n.options?.host,this.rt(this.ct=n.element)),N}rt(n){if(this.isConnected||(n=void 0),typeof this.G=="function"){let i=this.ht??globalThis,e=Us.get(i);e===void 0&&(e=new WeakMap,Us.set(i,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,n),n!==void 0&&this.G.call(this.ht,n)}else this.G.value=n}get lt(){return typeof this.G=="function"?Us.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var rc=S`
6006
6006
  :host {
6007
6007
  display: inline-block;
6008
6008
  }
@@ -6110,7 +6110,7 @@ CES.load();
6110
6110
  bottom: 0;
6111
6111
  }
6112
6112
  }
6113
- `;var Ee=class extends ${constructor(){super(...arguments);this.inputRef=tc();this.response=null;this._handleValueChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=rc}get value(){return this.response||null}set value(e){this.response=e||null}get correctness(){let e=this.responseVariable;if(!e)return null;if(e.value===null)return"incorrect";if(e.mapping){let t=e.mapping.mapEntries.reduce((i,o)=>Math.max(o.mappedValue,i),0);for(let i of e.mapping.mapEntries){let o=i.mapKey,n=e.value;if(i.caseSensitive||(o=o.toLowerCase(),n=n.toLowerCase()),o===n)return i.mappedValue===t?"correct":i.mappedValue<=(e.mapping.defaultValue||0)?"incorrect":"partially-correct"}}return e.correctResponse===e.value?"correct":"incorrect"}get isInline(){return!0}validate(){if(!this._input)return!1;if(this.patternMask&&this.dataPatternmaskMessage)this._internals.setValidity({}),this._input.setCustomValidity(""),this._input.checkValidity()||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),this._input.setCustomValidity(this.dataPatternmaskMessage));else{let e=this._input.checkValidity();this._internals.setValidity(e?{}:{customError:!1})}return this.response!==""&&this._input.checkValidity()}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(e&&t?.correctResponse){let i=t.correctResponse.toString();this._correctResponse=i}else this._correctResponse=null}render(){return x`
6113
+ `;var Ee=class extends ${constructor(){super(...arguments);this.inputRef=tc();this.response=null;this._handleValueChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=rc}get value(){return this.response||null}set value(e){this.response=e||null}get correctness(){let e=this.responseVariable;if(!e)return null;if(e.value===null)return"incorrect";if(e.mapping){let t=e.mapping.mapEntries.reduce((r,o)=>Math.max(o.mappedValue,r),0);for(let r of e.mapping.mapEntries){let o=r.mapKey,s=e.value;if(r.caseSensitive||(o=o.toLowerCase(),s=s.toLowerCase()),o===s)return r.mappedValue===t?"correct":r.mappedValue<=(e.mapping.defaultValue||0)?"incorrect":"partially-correct"}}return e.correctResponse===e.value?"correct":"incorrect"}get isInline(){return!0}validate(){if(!this._input)return!1;if(this.patternMask&&this.dataPatternmaskMessage)this._internals.setValidity({}),this._input.setCustomValidity(""),this._input.checkValidity()||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),this._input.setCustomValidity(this.dataPatternmaskMessage));else{let e=this._input.checkValidity();this._internals.setValidity(e?{}:{customError:!1})}return this.response!==""&&this._input.checkValidity()}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(e&&t?.correctResponse){let r=t.correctResponse.toString();this._correctResponse=r}else this._correctResponse=null}render(){return x`
6114
6114
  <input
6115
6115
  part="input"
6116
6116
  name="${this.responseIdentifier}"
@@ -6138,12 +6138,12 @@ CES.load();
6138
6138
  display: block;
6139
6139
  margin-top: 0.5em;
6140
6140
  }
6141
- `;var Fo=class extends ${static{this.styles=ic}#e=null;#t=null;reset(){this.#e=null,this.#t=null,this.saveResponse(null)}validate(){return this.#t!==null}get response(){return this.#t}set response(r){if(typeof r=="string")this.#t=r,this.saveResponse(r);else if(r===null)this.reset();else throw new Error("Value must be a Base64-encoded string or null")}static get properties(){return{...$.properties}}render(){return x`
6141
+ `;var Fo=class extends ${static{this.styles=ic}#e=null;#t=null;reset(){this.#e=null,this.#t=null,this.saveResponse(null)}validate(){return this.#t!==null}get response(){return this.#t}set response(i){if(typeof i=="string")this.#t=i,this.saveResponse(i);else if(i===null)this.reset();else throw new Error("Value must be a Base64-encoded string or null")}static get properties(){return{...$.properties}}render(){return x`
6142
6142
  <div>
6143
6143
  <slot name="prompt"></slot>
6144
6144
  <input type="file" @change="${this.#r}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" />
6145
6145
  </div>
6146
- `}async#r(r){let e=r.target;e.files&&e.files.length>0&&(this.#e=e.files[0],this.#t=await this.#i(this.#e),this.saveResponse(this.#t),this.dispatchEvent(new CustomEvent("qti-interaction-response",{detail:{response:this.#t}})))}#i(r){return new Promise((e,t)=>{let i=new FileReader;i.onload=()=>e(i.result),i.onerror=()=>t(i.error),i.readAsDataURL(r)})}};customElements.define("qti-upload-interaction",Fo);var sk=async s=>{let r=s.substring(0,s.lastIndexOf("/")),e=await Kn().load(`${s}`).then(a=>a.assessmentTest()),t=await jt().load(`${r}/${e.href}`).then(a=>a.htmlDoc()),i=await jt().load(`${r}/${e.href}`).then(a=>a.items()),o=`${r}/${e.href}`,n=`${r}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:t,testURI:n,testURL:o,items:i,testIdentifier:e.identifier}},nk=async s=>Ae().load(s).then(r=>r.htmlDoc().firstElementChild);var Oe=class extends C{render(){return x`<slot></slot>`}process(){throw new Error("Not implemented")}};Oe=d([k("qti-rule")],Oe);var ki=class extends Oe{get childExpression(){return this.firstElementChild}process(){let r=this.getAttribute("identifier"),e=this.context.variables.find(i=>i.identifier===r)||null,t;return e.interpolationTable&&(t=e.interpolationTable.get(parseFloat(this.childExpression.calculate()))),t==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:Pr(t)}})),t)}};d([b({type:String})],ki.prototype,"identifier",2),d([P({context:G,subscribe:!0}),R()],ki.prototype,"context",2);customElements.define("qti-lookup-outcome-value",ki);var js=class extends Oe{render(){return x`<slot></slot>`}process(){let r=[...this.children];for(let e=0;e<r.length;e++){let t=r[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",js);var Ws=class extends Oe{process(){let r=this.getAttribute("identifier");if(!r){console.warn('QtiSetOutcomeValue: Missing "identifier" attribute.');return}let e=this.firstElementChild;if(!e){console.warn("QtiSetOutcomeValue: No expression found.");return}let i=new Gs(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:r,value:this.#e(i)}}))}#e(r){return Array.isArray(r)?r.map(Pr):r!==null?Pr(r):null}},Gs=class{constructor(r){this.expression=r}process(){let r=this.expression.calculate()??null;return r===null&&console.warn("QtiSetOutcomeValueRule: Evaluated value is null."),Array.isArray(r)?r.map(e=>e.value?e.value:e):r}};customElements.define("qti-set-outcome-value",Ws);var Mi=class extends C{render(){return x`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let r=this.getSubRules();for(let e=0;e<r.length;e++)r[e].process()}};customElements.define("qti-response-else",Mi);var Ri=class extends Mi{calculate(){return this.firstElementChild.calculate()}getSubRules(){let r=[];for(let e=1;e<this.children.length;e++)r.push(this.children[e]);return r}};customElements.define("qti-response-if",Ri);var Xs=class extends Ri{render(){return x`${super.render()}`}};customElements.define("qti-response-else-if",Xs);var Bo=class extends bd(fe){calculate(){return this.calculateChildren(Array.from(this.children))}};Bo=d([k("qti-and")],Bo);function bd(s){return class extends s{calculateChildren(e){return e.map(i=>{let o=i;if(!o.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=o.calculate(),a=!1;if(typeof n=="string")if(n==="true")a=!0;else if(n==="false")a=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof n=="boolean"&&(a=n);return a}).every(i=>typeof i=="boolean"&&i)}}}var Uo=class extends L{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};d([b({type:String,attribute:"base-type"})],Uo.prototype,"baseType",2);customElements.define("qti-base-value",Uo);var Qs=class extends L{getResult(){if(this.children?.length!==1)return console.error("qti-container-size must have exactly one child expression"),0;let r=this.getVariables();if(!r||r?.length===0)return 0;let e=r[0];return e.value===null||e.value===void 0?0:e.cardinality!=="multiple"&&e.cardinality!=="ordered"?(console.error("qti-container-size requires multiple or ordered cardinality"),0):Array.isArray(e.value)?e.value.length:(console.error("qti-container-size: expected array value for multiple/ordered cardinality"),0)}};customElements.define("qti-container-size",Qs);var Js=class extends fe{getResult(){let r=this.getVariables();if(this.children.length===2){let e=r[0],t=r[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let i=e.value,o=t.value;return i.filter(l=>o.includes(l)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let i=e.value;return t.value.includes(i)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",Js);var Ys=class extends L{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let r=this.getAttribute("identifier")||"",e=this.context.variables.find(t=>t.identifier===r)||null;return e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",Ys);var vr=class extends L{constructor(){super(...arguments);this.identifier=""}getResult(){if(!this.identifier)return console.error("qti-default requires an identifier attribute"),null;let e=this.identifier.split("."),t=null,i;if(e.length===2)t=e[0],i=e[1];else if(e.length===1)i=e[0];else return console.error("qti-default: invalid identifier format"),null;if(t){let n=this._testContext.items.find(l=>l.identifier===t);if(console.debug(`itemContext: ${JSON.stringify(n)}`),!this._testContext||!n)return console.warn(`qti-default: item "${t}" not found in test context`),null;let a=this._testContext.items.find(l=>l.identifier===t)?.variables.find(l=>l.identifier===i);return a?a.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item "${t}"`),null)}if(!this.context?.variables)return console.warn("qti-default: no variables found in item context"),null;let o=this.context.variables.find(n=>n.identifier===i);return o?o.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item context`),null)}};d([b({type:String})],vr.prototype,"identifier",2),d([P({context:G,subscribe:!0}),R()],vr.prototype,"context",2),d([R(),P({context:Ie,subscribe:!0})],vr.prototype,"_testContext",2);customElements.define("qti-default",vr);var zo=class extends L{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],i=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(t.value),n=parseFloat(i.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};d([b({type:String})],zo.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",zo);var Ks=class extends L{getResult(){if(this.children.length!==1)return console.error("qti-round must have exactly one child expression"),null;let r=this.getVariables();if(!r||r.length===0)return null;let e=r[0];if(e.cardinality!=="single")return console.error("qti-round requires single cardinality"),null;if(Array.isArray(e.value))return console.error("qti-round unexpected array value for single cardinality"),null;if(e.value===null||e.value===void 0)return null;if(e.baseType!=="integer"&&e.baseType!=="float")return console.error("qti-round requires numerical base-type (integer or float)"),null;let t=parseFloat(e.value);return isNaN(t)?(console.warn("qti-round: NaN input results in NULL"),null):isFinite(t)?Math.floor(t+.5):t===1/0?1/0:t===-1/0?-1/0:null}};customElements.define("qti-round",Ks);var _i=class extends L{constructor(){super(...arguments);this.roundingMode="significantFigures";this.figures=3}getResult(){if(this.children.length!==1)return console.error("qti-round-to must have exactly one child expression"),null;let e=this.getVariables();if(!e||e.length===0)return null;let t=e[0];if(t.cardinality!=="single")return console.error("qti-round-to requires single cardinality"),null;if(Array.isArray(t.value))return console.error("qti-round-to unexpected array value for single cardinality"),null;if(t.value===null||t.value===void 0)return null;if(t.baseType!=="integer"&&t.baseType!=="float")return console.error("qti-round-to requires numerical base-type"),null;let i=parseFloat(t.value);return isNaN(i)?null:isFinite(i)?this.figures<0?(console.error("qti-round-to: figures must be non-negative"),null):this.roundingMode==="significantFigures"&&this.figures<1?(console.error("qti-round-to: figures must be at least 1 for significantFigures mode"),null):this.roundingMode==="decimalPlaces"?this.#e(i,this.figures):this.#t(i,this.figures):i===1/0?1/0:i===-1/0?-1/0:null}#e(e,t){if(e===0)return 0;let i=Math.pow(10,t);return Math.round(e*i)/i}#t(e,t){if(e===0)return 0;let i=Math.floor(Math.log10(Math.abs(e))),o=Math.pow(10,t-i-1);return Math.round(e*o)/o}};d([b({type:String,attribute:"rounding-mode"})],_i.prototype,"roundingMode",2),d([b({type:Number})],_i.prototype,"figures",2);customElements.define("qti-round-to",_i);var jo=class extends L{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],i=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(i.value)?(console.error("unexpected cardinality in qti equal"),!1):K.compareSingleValues(t.value,i.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};d([b({type:String})],jo.prototype,"toleranceMode",2);customElements.define("qti-equal",jo);var Zs=class extends L{getResult(){if(this.children.length===0)return console.error("qti-gcd must have at least one child expression"),null;let r=this.getVariables();if(!r||r.length===0)return null;let e=[];for(let t of r){if(t.baseType!=="integer")return console.error("qti-gcd requires integer base-type"),null;if(t.value===null||t.value===void 0)return null;if(t.cardinality==="single"){if(Array.isArray(t.value))return console.error("qti-gcd unexpected array value for single cardinality"),null;let i=parseInt(t.value,10);if(isNaN(i))return console.error("qti-gcd non-numerical value"),null;e.push(i)}else if(t.cardinality==="multiple"||t.cardinality==="ordered"){if(!Array.isArray(t.value))return console.error("qti-gcd expected array value for multiple/ordered cardinality"),null;for(let i of t.value){if(i==null)return null;let o=parseInt(i,10);if(isNaN(o))return console.error("qti-gcd non-numerical value"),null;e.push(o)}}else return console.error("qti-gcd unsupported cardinality"),null}return e.length===0?null:this.#e(e)}#e(r){if(r.length===0)return 0;if(r.length===1)return Math.abs(r[0]);let e=Math.abs(r[0]);for(let t=1;t<r.length&&(e=this.#t(e,Math.abs(r[t])),e!==1);t++);return e}#t(r,e){if(r===0&&e===0)return 0;if(r===0)return e;if(e===0)return r;for(;e!==0;){let t=e;e=r%e,r=t}return r}};customElements.define("qti-gcd",Zs);var en=class extends L{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",en);var tn=class extends fe{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",tn);var rn=class extends L{getResult(){return null}};customElements.define("qti-null",rn);var on=class extends L{getResult(){if(this.children.length===1){let r=this.getVariables();if(!r)return!0;let e=r[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",on);var sn=class extends L{getResult(){let r=this.getAttribute("field-identifier");if(!r)throw new Error("field-identifier attribute is required");if(Array.from(this.children).length!==1)throw new Error("qti-field-value must have exactly one child expression");let t=this.getVariables()[0];if(t.baseType!=="record"||t.value===null)throw new Error("qti-field-value child expression must return a record");let i=t.value[r];if(i===void 0)throw new Error(`Field "${r}" not found in record`);return i}};customElements.define("qti-field-value",sn);var nn=class extends L{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",nn);var an=class extends fe{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",an);var Wo=class extends L{getResult(){let r=this.context.variables.find(o=>o.identifier===this.identifier);if(!r||!r.mapping)return console.error(`Response ${this.identifier} can not be found`),null;let e=r.mapping,t=Array.isArray(r.value)?r.value:[r.value],i=0;for(let o of t){let n=e.mapEntries.filter(l=>r.baseType==="string"&&!l.caseSensitive?K.compareSingleValues(l.mapKey.toLowerCase(),o.toLowerCase(),r.baseType):K.compareSingleValues(l.mapKey,o,r.baseType)),a=n.reduce((l,c)=>l.mappedValue>c.mappedValue?l:c,n.length>0?n[0]:{mapKey:null,mappedValue:null});a===null||a.mappedValue==null?i+=e.defaultValue:i+=a.mappedValue}return e?.lowerBound!==null&&e?.lowerBound!==void 0&&(i=Math.max(e.lowerBound,i)),e?.upperBound!==null&&e?.upperBound!==void 0&&(i=Math.min(e.upperBound,i)),i}};d([b({type:String})],Wo.prototype,"identifier",2);customElements.define("qti-map-response",Wo);var Go=class extends L{getResult(){let r=this.context.variables.find(n=>n.identifier===this.identifier);if(!r)return console.warn(`Response ${this.identifier} cannot be found`),null;let e=r.areaMapping;if(!e)return console.warn(`Area mapping not found for response ${this.identifier}`),null;let t=Array.isArray(r.value)?r.value:[r.value];if(!t||t.length===0)return console.warn(`No candidate responses for response ${this.identifier}`),null;let i=0,o=new Set;for(let n of t)for(let a of e.areaMapEntries){if(o.has(a.coords))continue;K.isPointInArea(n,`${a.shape},${a.coords}`,r.baseType)&&(i+=a.mappedValue??0,o.add(a.coords))}return o.size<t.length&&(i+=e.defaultValue),e.lowerBound!=null&&(i=Math.max(e.lowerBound,i)),e.upperBound!=null&&(i=Math.min(e.upperBound,i)),i}};d([b({type:String})],Go.prototype,"identifier",2);customElements.define("qti-map-response-point",Go);var Xo=class extends L{constructor(){super(...arguments);this.name=""}getResult(){if(!this.name)return console.error("qti-math-operator requires a name attribute"),null;let e=this.getVariables();if(!e||e.length===0)return null;let t=[];for(let i of e){if(i.cardinality!=="single")return console.error("qti-math-operator requires single cardinality"),null;if(Array.isArray(i.value))return console.error("qti-math-operator unexpected array value for single cardinality"),null;if(i.value===null||i.value===void 0)return null;if(i.baseType!=="integer"&&i.baseType!=="float")return console.error("qti-math-operator requires numerical base-type"),null;let o=parseFloat(i.value);if(isNaN(o))return console.error("qti-math-operator non-numerical value"),null;t.push(o)}return this.#e(this.name,t)}#e(e,t){try{switch(e.toLowerCase()){case"sin":return t.length!==1?null:Math.sin(t[0]);case"cos":return t.length!==1?null:Math.cos(t[0]);case"tan":return t.length!==1?null:Math.tan(t[0]);case"asin":return t.length!==1||t[0]<-1||t[0]>1?null:Math.asin(t[0]);case"acos":return t.length!==1||t[0]<-1||t[0]>1?null:Math.acos(t[0]);case"atan":return t.length!==1?null:Math.atan(t[0]);case"sinh":return t.length!==1?null:Math.sinh(t[0]);case"cosh":return t.length!==1?null:Math.cosh(t[0]);case"tanh":return t.length!==1?null:Math.tanh(t[0]);case"log":return t.length!==1||t[0]<=0?null:Math.log(t[0]);case"ln":return t.length!==1||t[0]<=0?null:Math.log(t[0]);case"log10":return t.length!==1||t[0]<=0?null:Math.log10(t[0]);case"exp":return t.length!==1?null:Math.exp(t[0]);case"abs":return t.length!==1?null:Math.abs(t[0]);case"sqrt":return t.length!==1||t[0]<0?null:Math.sqrt(t[0]);case"signum":return t.length!==1?null:Math.sign(t[0]);case"floor":return t.length!==1?null:Math.floor(t[0]);case"ceil":return t.length!==1?null:Math.ceil(t[0]);case"round":return t.length!==1?null:Math.round(t[0]);case"atan2":return t.length!==2?null:Math.atan2(t[0],t[1]);case"pow":{if(t.length!==2)return null;let i=t[0],o=t[1];return i===0&&o<=0||i<0&&!Number.isInteger(o)?null:Math.pow(i,o)}case"log_base":{if(t.length!==2)return null;let i=t[0],o=t[1];return i<=0||o<=0||o===1?null:Math.log(i)/Math.log(o)}case"mod":return t.length!==2||t[1]===0?null:t[0]%t[1];case"max":return t.length<1?null:Math.max(...t);case"min":return t.length<1?null:Math.min(...t);default:return console.error(`qti-math-operator: unknown operation "${e}"`),null}}catch(i){return console.error(`qti-math-operator: error performing operation "${e}":`,i),null}}};d([b({type:String})],Xo.prototype,"name",2);customElements.define("qti-math-operator",Xo);var ln=class s extends L{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return s.match(e,t)}return console.error("unexpected number of children in match"),null}static match(r,e){if(r.value===null)return!1;switch(e.cardinality){case"single":return Array.isArray(r.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):K.compareSingleValues(r.value?.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(r.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(r.value.length!==e.value.length)return!1;for(let t=0;t<r.value.length;t++)if(!K.compareSingleValues(e.value[t],r.value[t],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(r.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(r.value.length!==e.value.length)return!1;let t=0;for(let i of e.value){let o=null,n=[...r.value];for(let a of n)if(K.compareSingleValues(i,a,e.baseType)){o=a;break}if(o!==null)n.splice(n.indexOf(o),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",ln);var cn=class extends L{getResult(){let r=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,t]=r;if(e.baseType===t.baseType||e.baseType==="integer"&&t.baseType==="float"||e.baseType==="float"&&t.baseType==="integer"||console.warn("Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let i=e.value;return t.value.includes(i)}};customElements.define("qti-member",cn);var dn=class extends L{getResult(){console.debug("qti-multiple getResult called",this.innerHTML);let r=this.getVariables();if(r.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of r)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return r}};customElements.define("qti-multiple",dn);var pn=class extends L{render(){return x`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",pn);var un=class extends fe{getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let i=t.calculate(),o=!1;if(typeof i=="string")if(i==="true")o=!0;else if(i==="false")o=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof i=="boolean"&&(o=i);return o}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",un);var mn=class extends L{getResult(){let r=this.getVariables();if(r.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of r)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return r}};customElements.define("qti-ordered",mn);var hn=class extends L{getResult(){if(this.children.length!==2)return console.error("qti-power must have exactly two child expressions"),null;let r=this.getVariables();if(!r||r.length!==2)return null;let[e,t]=r;if(e.cardinality!=="single"||t.cardinality!=="single")return console.error("qti-power requires single cardinality for both expressions"),null;if(Array.isArray(e.value)||Array.isArray(t.value))return console.error("qti-power unexpected array value for single cardinality"),null;if(e.value===null||e.value===void 0||t.value===null||t.value===void 0)return null;if(e.baseType!=="integer"&&e.baseType!=="float"||t.baseType!=="integer"&&t.baseType!=="float")return console.error("qti-power requires numerical base-types"),null;let i=parseFloat(e.value),o=parseFloat(t.value);if(isNaN(i)||isNaN(o))return console.error("qti-power: non-numerical values encountered"),null;if(i===0&&o<=0||i<0&&!Number.isInteger(o))return null;let n;try{n=Math.pow(i,o)}catch(a){return console.error("qti-power: error calculating power:",a),null}if(isNaN(n))return null;if(n===1/0||n===-1/0)return n;if(!isFinite(n)||Math.abs(n)>Number.MAX_VALUE||n!==0&&Math.abs(n)<Number.MIN_VALUE)return null;if(isFinite(n)&&n!==0){let a=Math.floor(Math.log10(Math.abs(n))),l=Math.max(0,14-a),c=Math.pow(10,l);n=Math.round(n*c)/c}return n}};customElements.define("qti-power",hn);var Li=class extends C{render(){let r=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return r===null?N:x`${JSON.stringify(r,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};d([b({type:String})],Li.prototype,"identifier",2),d([P({context:G,subscribe:!0}),R()],Li.prototype,"context",2);customElements.define("qti-printed-variable",Li);var fn=class extends L{getResult(){return this.getVariables().reduce((t,i)=>{if(i.baseType=="float"||i.baseType=="integer")try{return t*parseFloat(i.value.toString())}catch{console.warn("can not convert to number")}else console.warn(`has another baseType ${i.baseType}`);return t},1)}};customElements.define("qti-product",fn);var Qo=class extends vd(L){getResult(){return this.calculateChildren(Array.from(this.children))}};function vd(s){return class extends s{calculateChildren(e){let t=e.map(i=>{if(!i.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let o=i.calculate();return Number.isNaN(o)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(o)});return t.some(i=>i===null)?(console.error("One or more child expressions returned invalid values"),0):t[0]-t[1]}}}customElements.define("qti-subtract",Qo);var Jo=class extends L{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],i=e[1];if(t.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti string-match"),!1;let o=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),n=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return K.compareSingleValues(o,n,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};d([b({type:String,attribute:"case-sensitive"})],Jo.prototype,"caseSensitive",2);customElements.define("qti-string-match",Jo);var gn=class extends L{getResult(){return new bn(Array.from(this.children)).calculate()}},bn=class{constructor(r){this.expressions=r}calculate(){return this.expressions.filter(t=>t.calculate!==void 0).some(t=>t.calculate()===null)?null:this.expressions.map(t=>{let i=t.calculate();return Number.isNaN(i)?(console.error("unexpected value in qti-sum, expected number"),null):Number(i)}).reduce((t,i)=>t+i,0)}};customElements.define("qti-sum",gn);var vn=class extends L{getResult(){let r=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===r).value}};customElements.define("qti-variable",vn);var yr=class extends L{constructor(){super(...arguments);this.min=0;this.max=10;this.step=1}getResult(){if(this.min>this.max)return console.error("qti-random-integer: min cannot be greater than max"),this.min;if(this.step<=0)return console.error("qti-random-integer: step must be positive"),this.min;let e=[],t=0;for(;;){let o=this.min+this.step*t;if(o>this.max)break;Number.isInteger(o)&&e.push(o),t++}if(e.length===0)return console.warn("qti-random-integer: no valid integer values in range"),Number.isInteger(this.min)?this.min:Math.floor(this.min);let i=Math.floor(Math.random()*e.length);return e[i]}getPossibleValues(){let e=[];if(this.min>this.max||this.step<=0)return[Number.isInteger(this.min)?this.min:Math.floor(this.min)];let t=0;for(;;){let i=this.min+this.step*t;if(i>this.max)break;Number.isInteger(i)&&e.push(i),t++}return e.length>0?e:[Number.isInteger(this.min)?this.min:Math.floor(this.min)]}};d([b({type:Number})],yr.prototype,"min",2),d([b({type:Number})],yr.prototype,"max",2),d([b({type:Number})],yr.prototype,"step",2);customElements.define("qti-random-integer",yr);var yn=class extends L{getResult(){let r=this.getVariables();if(r.length===1){let e=r[0].value;if(Array.isArray(e)){let t=Math.floor(Math.random()*e.length);return e[t]}return e}return console.error("unexpected number of children in match"),null}};customElements.define("qti-random",yn);var xn=class extends L{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return e.cardinality!=="single"||!Array.isArray(t.value)?(console.error("unexpected cardinality in qti equal"),null):r[0].baseType!==r[1].baseType?(console.error("The baseType of the two variables is different"),null):t.value.filter(o=>!e.value.includes(o))}return null}};customElements.define("qti-delete",xn);var Yo,oc,Pi=class extends L{constructor(){super(...arguments);_(this,Yo)}getResult(){if(!this.n)return console.error('qti-index: missing required attribute "n"'),null;if(this.children.length!==1)return console.error("qti-index: must have exactly one child container element"),null;let e=this.getVariables()[0];if(!e)return console.error("qti-index: missing container"),null;let t;if(!isNaN(Number(this.n)))t=Number(this.n);else{let i=D(this,Yo,oc).call(this,this.n);if(i===null)return console.error(`qti-index: variable "${this.n}" is not a valid number`),null;t=Number(i)}if(t<=0||!Number.isInteger(t))return console.error("qti-index: index must be a positive integer"),null;if(e.cardinality==="ordered"){let i=Array.isArray(e.value)?e.value:[e.value];return e.value===null||t>i.length?null:i[t-1]}else return console.error("qti-index: child must have ordered cardinality"),null}};Yo=new WeakSet,oc=function(e){let t=this.context.variables.find(i=>i.identifier===e)?.value;return t===null||isNaN(Number(t))?null:Number(t)},d([b({type:String})],Pi.prototype,"n",2),Pi=d([k("qti-index")],Pi);export{la as Correctness,vs as INITIAL_SESSION_CONTEXT,ys as INITIAL_TEST_CONTEXT,$ as Interaction,qs as IsNullOrUndefined,We as ItemContainer,Pt as ItemCorrectResponseMode,mr as ItemPrintVariables,xe as ItemShowCandidateCorrection,qe as ItemShowCorrectResponse,Bo as QtiAnd,ce as QtiAssessmentItem,Fe as QtiAssessmentItemRef,Be as QtiAssessmentSection,Zt as QtiAssessmentStimulusRef,Ss as QtiAssessmentStimulusRefConnectedEvent,It as QtiAssessmentTest,Co as QtiAssociableHotspot,Si as QtiAssociateInteraction,Uo as QtiBaseValue,Ti as QtiChoiceInteraction,eo as QtiCompanionMaterialsInfo,fe as QtiConditionExpression,Qs as QtiContainerSize,Js as QtiContains,to as QtiContentBody,Mt as QtiContextDeclaration,Ys as QtiCorrect,Ge as QtiCustomInteraction,jr as QtiCustomOperator,vr as QtiDefault,xn as QtiDelete,ft as QtiEndAttemptInteraction,jo as QtiEqual,zo as QtiEqualRounded,L as QtiExpression,me as QtiExtendedTextInteraction,le as QtiFeedback,Gr as QtiFeedbackBlock,Xr as QtiFeedbackInline,sn as QtiFieldValue,yi as QtiGap,xi as QtiGapImg,Lo as QtiGapMatchInteraction,qi as QtiGapText,Zs as QtiGcd,Xe as QtiGraphicAssociateInteraction,Po as QtiGraphicGapMatchInteraction,Do as QtiGraphicOrderInteraction,en as QtiGt,tn as QtiGte,fr as QtiHotspotChoice,$o as QtiHotspotInteraction,Eo as QtiHottext,Ai as QtiHottextInteraction,Pi as QtiIndex,wi as QtiInlineChoice,bt as QtiInlineChoiceInteraction,on as QtiIsNull,hr as QtiItem,Qr as QtiItemBody,ki as QtiLookupOutcomeValue,nn as QtiLt,an as QtiLte,Wo as QtiMapResponse,Go as QtiMapResponsePoint,ln as QtiMatch,vt as QtiMatchInteraction,Xo as QtiMathOperator,Oo as QtiMediaInteraction,cn as QtiMember,kt as QtiModalFeedback,dn as QtiMultiple,pn as QtiNot,rn as QtiNull,un as QtiOr,yt as QtiOrderInteraction,mn as QtiOrdered,_e as QtiOutcomeDeclaration,Z as QtiPortableCustomInteraction,No as QtiPositionObjectInteraction,Ho as QtiPositionObjectStage,hn as QtiPower,Li as QtiPrintedVariable,fn as QtiProduct,So as QtiPrompt,yn as QtiRandom,yr as QtiRandomInteger,js as QtiResponseCondition,ze as QtiResponseDeclaration,Mi as QtiResponseElse,Xs as QtiResponseElseIf,Ri as QtiResponseIf,Yr as QtiResponseProcessing,Ks as QtiRound,_i as QtiRoundTo,Re as QtiRubricBlock,ca as QtiRuleElement,Qe as QtiSelectPointInteraction,Ws as QtiSetOutcomeValue,Gs as QtiSetOutcomeValueRule,Dt as QtiSimpleAssociableChoice,ct as QtiSimpleChoice,xt as QtiSliderInteraction,Jo as QtiStringMatch,ro as QtiStylesheet,Qo as QtiSubtract,gn as QtiSum,bn as QtiSumExpression,Le as QtiTemplateDeclaration,Zi as QtiTest,Kr as QtiTestFeedback,Ue as QtiTestPart,Ee as QtiTextEntryInteraction,Fo as QtiUploadInteraction,vn as QtiVariable,Jt as QtiVariableDeclaration,K as ScoringHelper,mi as TestCheckItem,je as TestContainer,ei as TestEndAttempt,rr as TestItemLink,be as TestNavigation,at as TestNext,ni as TestPagingButtonsStamp,lt as TestPrev,pi as TestPrintContext,sr as TestPrintVariables,Lt as TestScoringButtons,ar as TestScoringFeedback,ci as TestSectionButtonsStamp,nr as TestSectionLink,ye as TestShowCorrectResponse,_t as TestStamp,ie as TestView,ui as TestViewToggle,W as computedContext,Ze as computedItemContext,he as configContext,Pr as convertNumberToUniversalFormat,kc as decimalSeparator,nk as getItemByUri,sk as getManifestInfo,G as itemContext,ta as itemContextVariables,bd as qtiAndMixin,Xt as qtiContext,vd as qtiSubtractMixin,Ae as qtiTransformItem,Kn as qtiTransformManifest,jt as qtiTransformTest,Ki as removeDoubleSlashes,et as sessionContext,Ie as testContext};
6146
+ `}async#r(i){let e=i.target;e.files&&e.files.length>0&&(this.#e=e.files[0],this.#t=await this.#i(this.#e),this.saveResponse(this.#t),this.dispatchEvent(new CustomEvent("qti-interaction-response",{detail:{response:this.#t}})))}#i(i){return new Promise((e,t)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=()=>t(r.error),r.readAsDataURL(i)})}};customElements.define("qti-upload-interaction",Fo);var sk=async n=>{let i=n.substring(0,n.lastIndexOf("/")),e=await Kn().load(`${n}`).then(a=>a.assessmentTest()),t=await jt().load(`${i}/${e.href}`).then(a=>a.htmlDoc()),r=await jt().load(`${i}/${e.href}`).then(a=>a.items()),o=`${i}/${e.href}`,s=`${i}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:t,testURI:s,testURL:o,items:r,testIdentifier:e.identifier}},nk=async n=>Ae().load(n).then(i=>i.htmlDoc().firstElementChild);var Oe=class extends C{render(){return x`<slot></slot>`}process(){throw new Error("Not implemented")}};Oe=d([k("qti-rule")],Oe);var ki=class extends Oe{get childExpression(){return this.firstElementChild}process(){let i=this.getAttribute("identifier"),e=this.context.variables.find(r=>r.identifier===i)||null,t;return e.interpolationTable&&(t=e.interpolationTable.get(parseFloat(this.childExpression.calculate()))),t==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:Pr(t)}})),t)}};d([b({type:String})],ki.prototype,"identifier",2),d([P({context:G,subscribe:!0}),R()],ki.prototype,"context",2);customElements.define("qti-lookup-outcome-value",ki);var js=class extends Oe{render(){return x`<slot></slot>`}process(){let i=[...this.children];for(let e=0;e<i.length;e++){let t=i[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",js);var Ws=class extends Oe{process(){let i=this.getAttribute("identifier");if(!i){console.warn('QtiSetOutcomeValue: Missing "identifier" attribute.');return}let e=this.firstElementChild;if(!e){console.warn("QtiSetOutcomeValue: No expression found.");return}let r=new Gs(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:this.#e(r)}}))}#e(i){return Array.isArray(i)?i.map(Pr):i!==null?Pr(i):null}},Gs=class{constructor(i){this.expression=i}process(){let i=this.expression.calculate()??null;return i===null&&console.warn("QtiSetOutcomeValueRule: Evaluated value is null."),Array.isArray(i)?i.map(e=>e.value?e.value:e):i}};customElements.define("qti-set-outcome-value",Ws);var Mi=class extends C{render(){return x`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let i=this.getSubRules();for(let e=0;e<i.length;e++)i[e].process()}};customElements.define("qti-response-else",Mi);var Ri=class extends Mi{calculate(){return this.firstElementChild.calculate()}getSubRules(){let i=[];for(let e=1;e<this.children.length;e++)i.push(this.children[e]);return i}};customElements.define("qti-response-if",Ri);var Xs=class extends Ri{render(){return x`${super.render()}`}};customElements.define("qti-response-else-if",Xs);var Bo=class extends bd(fe){calculate(){return this.calculateChildren(Array.from(this.children))}};Bo=d([k("qti-and")],Bo);function bd(n){return class extends n{calculateChildren(e){return e.map(r=>{let o=r;if(!o.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let s=o.calculate(),a=!1;if(typeof s=="string")if(s==="true")a=!0;else if(s==="false")a=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof s=="boolean"&&(a=s);return a}).every(r=>typeof r=="boolean"&&r)}}}var Uo=class extends L{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};d([b({type:String,attribute:"base-type"})],Uo.prototype,"baseType",2);customElements.define("qti-base-value",Uo);var Qs=class extends L{getResult(){if(this.children?.length!==1)return console.error("qti-container-size must have exactly one child expression"),0;let i=this.getVariables();if(!i||i?.length===0)return 0;let e=i[0];return e.value===null||e.value===void 0?0:e.cardinality!=="multiple"&&e.cardinality!=="ordered"?(console.error("qti-container-size requires multiple or ordered cardinality"),0):Array.isArray(e.value)?e.value.length:(console.error("qti-container-size: expected array value for multiple/ordered cardinality"),0)}};customElements.define("qti-container-size",Qs);var Js=class extends fe{getResult(){let i=this.getVariables();if(this.children.length===2){let e=i[0],t=i[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let r=e.value,o=t.value;return r.filter(l=>o.includes(l)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let r=e.value;return t.value.includes(r)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",Js);var Ys=class extends L{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let i=this.getAttribute("identifier")||"",e=this.context.variables.find(t=>t.identifier===i)||null;return e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",Ys);var vr=class extends L{constructor(){super(...arguments);this.identifier=""}getResult(){if(!this.identifier)return console.error("qti-default requires an identifier attribute"),null;let e=this.identifier.split("."),t=null,r;if(e.length===2)t=e[0],r=e[1];else if(e.length===1)r=e[0];else return console.error("qti-default: invalid identifier format"),null;if(t){let s=this._testContext.items.find(l=>l.identifier===t);if(console.debug(`itemContext: ${JSON.stringify(s)}`),!this._testContext||!s)return console.warn(`qti-default: item "${t}" not found in test context`),null;let a=this._testContext.items.find(l=>l.identifier===t)?.variables.find(l=>l.identifier===r);return a?a.defaultValue||null:(console.warn(`qti-default: variable "${r}" not found in item "${t}"`),null)}if(!this.context?.variables)return console.warn("qti-default: no variables found in item context"),null;let o=this.context.variables.find(s=>s.identifier===r);return o?o.defaultValue||null:(console.warn(`qti-default: variable "${r}" not found in item context`),null)}};d([b({type:String})],vr.prototype,"identifier",2),d([P({context:G,subscribe:!0}),R()],vr.prototype,"context",2),d([R(),P({context:Ie,subscribe:!0})],vr.prototype,"_testContext",2);customElements.define("qti-default",vr);var zo=class extends L{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(t.value),s=parseFloat(r.value);if(!isNaN(o)&&!isNaN(s))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===s.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(s*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${s}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};d([b({type:String})],zo.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",zo);var Ks=class extends L{getResult(){if(this.children.length!==1)return console.error("qti-round must have exactly one child expression"),null;let i=this.getVariables();if(!i||i.length===0)return null;let e=i[0];if(e.cardinality!=="single")return console.error("qti-round requires single cardinality"),null;if(Array.isArray(e.value))return console.error("qti-round unexpected array value for single cardinality"),null;if(e.value===null||e.value===void 0)return null;if(e.baseType!=="integer"&&e.baseType!=="float")return console.error("qti-round requires numerical base-type (integer or float)"),null;let t=parseFloat(e.value);return isNaN(t)?(console.warn("qti-round: NaN input results in NULL"),null):isFinite(t)?Math.floor(t+.5):t===1/0?1/0:t===-1/0?-1/0:null}};customElements.define("qti-round",Ks);var _i=class extends L{constructor(){super(...arguments);this.roundingMode="significantFigures";this.figures=3}getResult(){if(this.children.length!==1)return console.error("qti-round-to must have exactly one child expression"),null;let e=this.getVariables();if(!e||e.length===0)return null;let t=e[0];if(t.cardinality!=="single")return console.error("qti-round-to requires single cardinality"),null;if(Array.isArray(t.value))return console.error("qti-round-to unexpected array value for single cardinality"),null;if(t.value===null||t.value===void 0)return null;if(t.baseType!=="integer"&&t.baseType!=="float")return console.error("qti-round-to requires numerical base-type"),null;let r=parseFloat(t.value);return isNaN(r)?null:isFinite(r)?this.figures<0?(console.error("qti-round-to: figures must be non-negative"),null):this.roundingMode==="significantFigures"&&this.figures<1?(console.error("qti-round-to: figures must be at least 1 for significantFigures mode"),null):this.roundingMode==="decimalPlaces"?this.#e(r,this.figures):this.#t(r,this.figures):r===1/0?1/0:r===-1/0?-1/0:null}#e(e,t){if(e===0)return 0;let r=Math.pow(10,t);return Math.round(e*r)/r}#t(e,t){if(e===0)return 0;let r=Math.floor(Math.log10(Math.abs(e))),o=Math.pow(10,t-r-1);return Math.round(e*o)/o}};d([b({type:String,attribute:"rounding-mode"})],_i.prototype,"roundingMode",2),d([b({type:Number})],_i.prototype,"figures",2);customElements.define("qti-round-to",_i);var jo=class extends L{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value)?(console.error("unexpected cardinality in qti equal"),!1):K.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};d([b({type:String})],jo.prototype,"toleranceMode",2);customElements.define("qti-equal",jo);var Zs=class extends L{getResult(){if(this.children.length===0)return console.error("qti-gcd must have at least one child expression"),null;let i=this.getVariables();if(!i||i.length===0)return null;let e=[];for(let t of i){if(t.baseType!=="integer")return console.error("qti-gcd requires integer base-type"),null;if(t.value===null||t.value===void 0)return null;if(t.cardinality==="single"){if(Array.isArray(t.value))return console.error("qti-gcd unexpected array value for single cardinality"),null;let r=parseInt(t.value,10);if(isNaN(r))return console.error("qti-gcd non-numerical value"),null;e.push(r)}else if(t.cardinality==="multiple"||t.cardinality==="ordered"){if(!Array.isArray(t.value))return console.error("qti-gcd expected array value for multiple/ordered cardinality"),null;for(let r of t.value){if(r==null)return null;let o=parseInt(r,10);if(isNaN(o))return console.error("qti-gcd non-numerical value"),null;e.push(o)}}else return console.error("qti-gcd unsupported cardinality"),null}return e.length===0?null:this.#e(e)}#e(i){if(i.length===0)return 0;if(i.length===1)return Math.abs(i[0]);let e=Math.abs(i[0]);for(let t=1;t<i.length&&(e=this.#t(e,Math.abs(i[t])),e!==1);t++);return e}#t(i,e){if(i===0&&e===0)return 0;if(i===0)return e;if(e===0)return i;for(;e!==0;){let t=e;e=i%e,i=t}return i}};customElements.define("qti-gcd",Zs);var en=class extends L{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",en);var tn=class extends fe{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",tn);var rn=class extends L{getResult(){return null}};customElements.define("qti-null",rn);var on=class extends L{getResult(){if(this.children.length===1){let i=this.getVariables();if(!i)return!0;let e=i[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",on);var sn=class extends L{getResult(){let i=this.getAttribute("field-identifier");if(!i)throw new Error("field-identifier attribute is required");if(Array.from(this.children).length!==1)throw new Error("qti-field-value must have exactly one child expression");let t=this.getVariables()[0];if(t.baseType!=="record"||t.value===null)throw new Error("qti-field-value child expression must return a record");let r=t.value[i];if(r===void 0)throw new Error(`Field "${i}" not found in record`);return r}};customElements.define("qti-field-value",sn);var nn=class extends L{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",nn);var an=class extends fe{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",an);var Wo=class extends L{getResult(){let i=this.context.variables.find(o=>o.identifier===this.identifier);if(!i||!i.mapping)return console.error(`Response ${this.identifier} can not be found`),null;let e=i.mapping,t=Array.isArray(i.value)?i.value:[i.value],r=0;for(let o of t){let s=e.mapEntries.filter(l=>i.baseType==="string"&&!l.caseSensitive?K.compareSingleValues(l.mapKey.toLowerCase(),o.toLowerCase(),i.baseType):K.compareSingleValues(l.mapKey,o,i.baseType)),a=s.reduce((l,c)=>l.mappedValue>c.mappedValue?l:c,s.length>0?s[0]:{mapKey:null,mappedValue:null});a===null||a.mappedValue==null?r+=e.defaultValue:r+=a.mappedValue}return e?.lowerBound!==null&&e?.lowerBound!==void 0&&(r=Math.max(e.lowerBound,r)),e?.upperBound!==null&&e?.upperBound!==void 0&&(r=Math.min(e.upperBound,r)),r}};d([b({type:String})],Wo.prototype,"identifier",2);customElements.define("qti-map-response",Wo);var Go=class extends L{getResult(){let i=this.context.variables.find(s=>s.identifier===this.identifier);if(!i)return console.warn(`Response ${this.identifier} cannot be found`),null;let e=i.areaMapping;if(!e)return console.warn(`Area mapping not found for response ${this.identifier}`),null;let t=Array.isArray(i.value)?i.value:[i.value];if(!t||t.length===0)return console.warn(`No candidate responses for response ${this.identifier}`),null;let r=0,o=new Set;for(let s of t)for(let a of e.areaMapEntries){if(o.has(a.coords))continue;K.isPointInArea(s,`${a.shape},${a.coords}`,i.baseType)&&(r+=a.mappedValue??0,o.add(a.coords))}return o.size<t.length&&(r+=e.defaultValue),e.lowerBound!=null&&(r=Math.max(e.lowerBound,r)),e.upperBound!=null&&(r=Math.min(e.upperBound,r)),r}};d([b({type:String})],Go.prototype,"identifier",2);customElements.define("qti-map-response-point",Go);var Xo=class extends L{constructor(){super(...arguments);this.name=""}getResult(){if(!this.name)return console.error("qti-math-operator requires a name attribute"),null;let e=this.getVariables();if(!e||e.length===0)return null;let t=[];for(let r of e){if(r.cardinality!=="single")return console.error("qti-math-operator requires single cardinality"),null;if(Array.isArray(r.value))return console.error("qti-math-operator unexpected array value for single cardinality"),null;if(r.value===null||r.value===void 0)return null;if(r.baseType!=="integer"&&r.baseType!=="float")return console.error("qti-math-operator requires numerical base-type"),null;let o=parseFloat(r.value);if(isNaN(o))return console.error("qti-math-operator non-numerical value"),null;t.push(o)}return this.#e(this.name,t)}#e(e,t){try{switch(e.toLowerCase()){case"sin":return t.length!==1?null:Math.sin(t[0]);case"cos":return t.length!==1?null:Math.cos(t[0]);case"tan":return t.length!==1?null:Math.tan(t[0]);case"asin":return t.length!==1||t[0]<-1||t[0]>1?null:Math.asin(t[0]);case"acos":return t.length!==1||t[0]<-1||t[0]>1?null:Math.acos(t[0]);case"atan":return t.length!==1?null:Math.atan(t[0]);case"sinh":return t.length!==1?null:Math.sinh(t[0]);case"cosh":return t.length!==1?null:Math.cosh(t[0]);case"tanh":return t.length!==1?null:Math.tanh(t[0]);case"log":return t.length!==1||t[0]<=0?null:Math.log(t[0]);case"ln":return t.length!==1||t[0]<=0?null:Math.log(t[0]);case"log10":return t.length!==1||t[0]<=0?null:Math.log10(t[0]);case"exp":return t.length!==1?null:Math.exp(t[0]);case"abs":return t.length!==1?null:Math.abs(t[0]);case"sqrt":return t.length!==1||t[0]<0?null:Math.sqrt(t[0]);case"signum":return t.length!==1?null:Math.sign(t[0]);case"floor":return t.length!==1?null:Math.floor(t[0]);case"ceil":return t.length!==1?null:Math.ceil(t[0]);case"round":return t.length!==1?null:Math.round(t[0]);case"atan2":return t.length!==2?null:Math.atan2(t[0],t[1]);case"pow":{if(t.length!==2)return null;let r=t[0],o=t[1];return r===0&&o<=0||r<0&&!Number.isInteger(o)?null:Math.pow(r,o)}case"log_base":{if(t.length!==2)return null;let r=t[0],o=t[1];return r<=0||o<=0||o===1?null:Math.log(r)/Math.log(o)}case"mod":return t.length!==2||t[1]===0?null:t[0]%t[1];case"max":return t.length<1?null:Math.max(...t);case"min":return t.length<1?null:Math.min(...t);default:return console.error(`qti-math-operator: unknown operation "${e}"`),null}}catch(r){return console.error(`qti-math-operator: error performing operation "${e}":`,r),null}}};d([b({type:String})],Xo.prototype,"name",2);customElements.define("qti-math-operator",Xo);var ln=class n extends L{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return n.match(e,t)}return console.error("unexpected number of children in match"),null}static match(i,e){if(i.value===null)return!1;switch(e.cardinality){case"single":return Array.isArray(i.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):K.compareSingleValues(i.value?.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(i.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(i.value.length!==e.value.length)return!1;for(let t=0;t<i.value.length;t++)if(!K.compareSingleValues(e.value[t],i.value[t],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(i.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(i.value.length!==e.value.length)return!1;let t=0;for(let r of e.value){let o=null,s=[...i.value];for(let a of s)if(K.compareSingleValues(r,a,e.baseType)){o=a;break}if(o!==null)s.splice(s.indexOf(o),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",ln);var cn=class extends L{getResult(){let i=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,t]=i;if(e.baseType===t.baseType||e.baseType==="integer"&&t.baseType==="float"||e.baseType==="float"&&t.baseType==="integer"||console.warn("Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let r=e.value;return t.value.includes(r)}};customElements.define("qti-member",cn);var dn=class extends L{getResult(){console.debug("qti-multiple getResult called",this.innerHTML);let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return i}};customElements.define("qti-multiple",dn);var pn=class extends L{render(){return x`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",pn);var un=class extends fe{getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate(),o=!1;if(typeof r=="string")if(r==="true")o=!0;else if(r==="false")o=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof r=="boolean"&&(o=r);return o}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",un);var mn=class extends L{getResult(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",mn);var hn=class extends L{getResult(){if(this.children.length!==2)return console.error("qti-power must have exactly two child expressions"),null;let i=this.getVariables();if(!i||i.length!==2)return null;let[e,t]=i;if(e.cardinality!=="single"||t.cardinality!=="single")return console.error("qti-power requires single cardinality for both expressions"),null;if(Array.isArray(e.value)||Array.isArray(t.value))return console.error("qti-power unexpected array value for single cardinality"),null;if(e.value===null||e.value===void 0||t.value===null||t.value===void 0)return null;if(e.baseType!=="integer"&&e.baseType!=="float"||t.baseType!=="integer"&&t.baseType!=="float")return console.error("qti-power requires numerical base-types"),null;let r=parseFloat(e.value),o=parseFloat(t.value);if(isNaN(r)||isNaN(o))return console.error("qti-power: non-numerical values encountered"),null;if(r===0&&o<=0||r<0&&!Number.isInteger(o))return null;let s;try{s=Math.pow(r,o)}catch(a){return console.error("qti-power: error calculating power:",a),null}if(isNaN(s))return null;if(s===1/0||s===-1/0)return s;if(!isFinite(s)||Math.abs(s)>Number.MAX_VALUE||s!==0&&Math.abs(s)<Number.MIN_VALUE)return null;if(isFinite(s)&&s!==0){let a=Math.floor(Math.log10(Math.abs(s))),l=Math.max(0,14-a),c=Math.pow(10,l);s=Math.round(s*c)/c}return s}};customElements.define("qti-power",hn);var Li=class extends C{render(){let i=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return i===null?N:x`${JSON.stringify(i,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};d([b({type:String})],Li.prototype,"identifier",2),d([P({context:G,subscribe:!0}),R()],Li.prototype,"context",2);customElements.define("qti-printed-variable",Li);var fn=class extends L{getResult(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseFloat(r.value.toString())}catch{console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",fn);var Qo=class extends vd(L){getResult(){return this.calculateChildren(Array.from(this.children))}};function vd(n){return class extends n{calculateChildren(e){let t=e.map(r=>{if(!r.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let o=r.calculate();return Number.isNaN(o)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(o)});return t.some(r=>r===null)?(console.error("One or more child expressions returned invalid values"),0):t[0]-t[1]}}}customElements.define("qti-subtract",Qo);var Jo=class extends L{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti string-match"),!1;let o=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),s=this.caseSensitive==="true"?r.value:r.value.toLowerCase();return K.compareSingleValues(o,s,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};d([b({type:String,attribute:"case-sensitive"})],Jo.prototype,"caseSensitive",2);customElements.define("qti-string-match",Jo);var gn=class extends L{getResult(){return new bn(Array.from(this.children)).calculate()}},bn=class{constructor(i){this.expressions=i}calculate(){return this.expressions.filter(t=>t.calculate!==void 0).some(t=>t.calculate()===null)?null:this.expressions.map(t=>{let r=t.calculate();return Number.isNaN(r)?(console.error("unexpected value in qti-sum, expected number"),null):Number(r)}).reduce((t,r)=>t+r,0)}};customElements.define("qti-sum",gn);var vn=class extends L{getResult(){let i=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===i).value}};customElements.define("qti-variable",vn);var yr=class extends L{constructor(){super(...arguments);this.min=0;this.max=10;this.step=1}getResult(){if(this.min>this.max)return console.error("qti-random-integer: min cannot be greater than max"),this.min;if(this.step<=0)return console.error("qti-random-integer: step must be positive"),this.min;let e=[],t=0;for(;;){let o=this.min+this.step*t;if(o>this.max)break;Number.isInteger(o)&&e.push(o),t++}if(e.length===0)return console.warn("qti-random-integer: no valid integer values in range"),Number.isInteger(this.min)?this.min:Math.floor(this.min);let r=Math.floor(Math.random()*e.length);return e[r]}getPossibleValues(){let e=[];if(this.min>this.max||this.step<=0)return[Number.isInteger(this.min)?this.min:Math.floor(this.min)];let t=0;for(;;){let r=this.min+this.step*t;if(r>this.max)break;Number.isInteger(r)&&e.push(r),t++}return e.length>0?e:[Number.isInteger(this.min)?this.min:Math.floor(this.min)]}};d([b({type:Number})],yr.prototype,"min",2),d([b({type:Number})],yr.prototype,"max",2),d([b({type:Number})],yr.prototype,"step",2);customElements.define("qti-random-integer",yr);var yn=class extends L{getResult(){let i=this.getVariables();if(i.length===1){let e=i[0].value;if(Array.isArray(e)){let t=Math.floor(Math.random()*e.length);return e[t]}return e}return console.error("unexpected number of children in match"),null}};customElements.define("qti-random",yn);var xn=class extends L{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.cardinality!=="single"||!Array.isArray(t.value)?(console.error("unexpected cardinality in qti equal"),null):i[0].baseType!==i[1].baseType?(console.error("The baseType of the two variables is different"),null):t.value.filter(o=>!e.value.includes(o))}return null}};customElements.define("qti-delete",xn);var Yo,oc,Pi=class extends L{constructor(){super(...arguments);_(this,Yo)}getResult(){if(!this.n)return console.error('qti-index: missing required attribute "n"'),null;if(this.children.length!==1)return console.error("qti-index: must have exactly one child container element"),null;let e=this.getVariables()[0];if(!e)return console.error("qti-index: missing container"),null;let t;if(!isNaN(Number(this.n)))t=Number(this.n);else{let r=D(this,Yo,oc).call(this,this.n);if(r===null)return console.error(`qti-index: variable "${this.n}" is not a valid number`),null;t=Number(r)}if(t<=0||!Number.isInteger(t))return console.error("qti-index: index must be a positive integer"),null;if(e.cardinality==="ordered"){let r=Array.isArray(e.value)?e.value:[e.value];return e.value===null||t>r.length?null:r[t-1]}else return console.error("qti-index: child must have ordered cardinality"),null}};Yo=new WeakSet,oc=function(e){let t=this.context.variables.find(r=>r.identifier===e)?.value;return t===null||isNaN(Number(t))?null:Number(t)},d([b({type:String})],Pi.prototype,"n",2),Pi=d([k("qti-index")],Pi);export{la as Correctness,vs as INITIAL_SESSION_CONTEXT,ys as INITIAL_TEST_CONTEXT,$ as Interaction,qs as IsNullOrUndefined,We as ItemContainer,Pt as ItemCorrectResponseMode,mr as ItemPrintVariables,xe as ItemShowCandidateCorrection,qe as ItemShowCorrectResponse,Bo as QtiAnd,ce as QtiAssessmentItem,Fe as QtiAssessmentItemRef,Be as QtiAssessmentSection,Zt as QtiAssessmentStimulusRef,Ss as QtiAssessmentStimulusRefConnectedEvent,It as QtiAssessmentTest,Co as QtiAssociableHotspot,Si as QtiAssociateInteraction,Uo as QtiBaseValue,Ti as QtiChoiceInteraction,eo as QtiCompanionMaterialsInfo,fe as QtiConditionExpression,Qs as QtiContainerSize,Js as QtiContains,to as QtiContentBody,Mt as QtiContextDeclaration,Ys as QtiCorrect,Ge as QtiCustomInteraction,jr as QtiCustomOperator,vr as QtiDefault,xn as QtiDelete,ft as QtiEndAttemptInteraction,jo as QtiEqual,zo as QtiEqualRounded,L as QtiExpression,me as QtiExtendedTextInteraction,le as QtiFeedback,Gr as QtiFeedbackBlock,Xr as QtiFeedbackInline,sn as QtiFieldValue,yi as QtiGap,xi as QtiGapImg,Lo as QtiGapMatchInteraction,qi as QtiGapText,Zs as QtiGcd,Xe as QtiGraphicAssociateInteraction,Po as QtiGraphicGapMatchInteraction,Do as QtiGraphicOrderInteraction,en as QtiGt,tn as QtiGte,fr as QtiHotspotChoice,$o as QtiHotspotInteraction,Eo as QtiHottext,Ai as QtiHottextInteraction,Pi as QtiIndex,wi as QtiInlineChoice,bt as QtiInlineChoiceInteraction,on as QtiIsNull,hr as QtiItem,Qr as QtiItemBody,ki as QtiLookupOutcomeValue,nn as QtiLt,an as QtiLte,Wo as QtiMapResponse,Go as QtiMapResponsePoint,ln as QtiMatch,vt as QtiMatchInteraction,Xo as QtiMathOperator,Oo as QtiMediaInteraction,cn as QtiMember,kt as QtiModalFeedback,dn as QtiMultiple,pn as QtiNot,rn as QtiNull,un as QtiOr,yt as QtiOrderInteraction,mn as QtiOrdered,_e as QtiOutcomeDeclaration,Z as QtiPortableCustomInteraction,No as QtiPositionObjectInteraction,Ho as QtiPositionObjectStage,hn as QtiPower,Li as QtiPrintedVariable,fn as QtiProduct,So as QtiPrompt,yn as QtiRandom,yr as QtiRandomInteger,js as QtiResponseCondition,ze as QtiResponseDeclaration,Mi as QtiResponseElse,Xs as QtiResponseElseIf,Ri as QtiResponseIf,Yr as QtiResponseProcessing,Ks as QtiRound,_i as QtiRoundTo,Re as QtiRubricBlock,ca as QtiRuleElement,Qe as QtiSelectPointInteraction,Ws as QtiSetOutcomeValue,Gs as QtiSetOutcomeValueRule,Dt as QtiSimpleAssociableChoice,ct as QtiSimpleChoice,xt as QtiSliderInteraction,Jo as QtiStringMatch,ro as QtiStylesheet,Qo as QtiSubtract,gn as QtiSum,bn as QtiSumExpression,Le as QtiTemplateDeclaration,Zi as QtiTest,Kr as QtiTestFeedback,Ue as QtiTestPart,Ee as QtiTextEntryInteraction,Fo as QtiUploadInteraction,vn as QtiVariable,Jt as QtiVariableDeclaration,K as ScoringHelper,mi as TestCheckItem,je as TestContainer,ei as TestEndAttempt,rr as TestItemLink,be as TestNavigation,at as TestNext,ni as TestPagingButtonsStamp,lt as TestPrev,pi as TestPrintContext,sr as TestPrintVariables,Lt as TestScoringButtons,ar as TestScoringFeedback,ci as TestSectionButtonsStamp,nr as TestSectionLink,ye as TestShowCorrectResponse,_t as TestStamp,ie as TestView,ui as TestViewToggle,W as computedContext,Ze as computedItemContext,he as configContext,Pr as convertNumberToUniversalFormat,kc as decimalSeparator,nk as getItemByUri,sk as getManifestInfo,G as itemContext,ta as itemContextVariables,bd as qtiAndMixin,Xt as qtiContext,vd as qtiSubtractMixin,Ae as qtiTransformItem,Kn as qtiTransformManifest,jt as qtiTransformTest,Ki as removeDoubleSlashes,et as sessionContext,Ie as testContext};
6147
6147
  /*! Bundled license information:
6148
6148
 
6149
6149
  @lit-labs/ssr-dom-shim/lib/element-internals.js: