@citolab/qti-components 7.27.1 → 7.27.3

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.
Files changed (33) hide show
  1. package/LICENSE.md +674 -0
  2. package/cdn/index.global.js +1 -1
  3. package/cdn/index.js +216 -202
  4. package/dist/base.js +1 -1
  5. package/dist/{chunk-QUWFDFGZ.js → chunk-3XXXAWMZ.js} +18 -18
  6. package/dist/{chunk-TORB5UN2.js → chunk-A7HX4462.js} +291 -242
  7. package/dist/chunk-A7HX4462.js.map +1 -0
  8. package/dist/{chunk-KY3II5OX.js → chunk-CSYOTHK2.js} +220 -189
  9. package/dist/chunk-CSYOTHK2.js.map +1 -0
  10. package/dist/{chunk-G5ZUC3OT.js → chunk-CVB5ISWF.js} +23 -23
  11. package/dist/chunk-CVB5ISWF.js.map +1 -0
  12. package/dist/{chunk-TZMDZQFG.js → chunk-D6EHVZG2.js} +467 -217
  13. package/dist/chunk-D6EHVZG2.js.map +1 -0
  14. package/dist/{chunk-DG5TP35K.js → chunk-DGIXWHK3.js} +5 -5
  15. package/dist/{chunk-DG5TP35K.js.map → chunk-DGIXWHK3.js.map} +1 -1
  16. package/dist/{chunk-GG36UR7F.js → chunk-PHCCFYNE.js} +12 -12
  17. package/dist/{chunk-GG36UR7F.js.map → chunk-PHCCFYNE.js.map} +1 -1
  18. package/dist/{chunk-75ME6QG5.js → chunk-WMPG7ULB.js} +17 -17
  19. package/dist/elements.js +3 -3
  20. package/dist/index.js +8 -8
  21. package/dist/interactions.d.ts +8 -7
  22. package/dist/interactions.js +3 -3
  23. package/dist/item.js +3 -3
  24. package/dist/processing.js +2 -2
  25. package/dist/qti-components-jsx.d.ts +756 -756
  26. package/dist/test.js +5 -5
  27. package/package.json +16 -17
  28. package/dist/chunk-G5ZUC3OT.js.map +0 -1
  29. package/dist/chunk-KY3II5OX.js.map +0 -1
  30. package/dist/chunk-TORB5UN2.js.map +0 -1
  31. package/dist/chunk-TZMDZQFG.js.map +0 -1
  32. /package/dist/{chunk-QUWFDFGZ.js.map → chunk-3XXXAWMZ.js.map} +0 -0
  33. /package/dist/{chunk-75ME6QG5.js.map → chunk-WMPG7ULB.js.map} +0 -0
package/cdn/index.js CHANGED
@@ -1,12 +1,12 @@
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
- \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=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`
1
+ var Kc=Object.defineProperty;var Zc=Object.getOwnPropertyDescriptor;var Wn=n=>{throw TypeError(n)};var d=(n,r,e,t)=>{for(var i=t>1?void 0:t?Zc(r,e):r,o=n.length-1,s;o>=0;o--)(s=n[o])&&(i=(t?s(r,e,i):s(i))||i);return t&&i&&Kc(r,e,i),i};var xs=(n,r,e)=>r.has(n)||Wn("Cannot "+e);var I=(n,r,e)=>(xs(n,r,"read from private field"),e?e.call(n):r.get(n)),_=(n,r,e)=>r.has(n)?Wn("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(n):r.set(n,e),U=(n,r,e,t)=>(xs(n,r,"write to private field"),t?t.call(n,e):r.set(n,e),e),P=(n,r,e)=>(xs(n,r,"access private method"),e);var Gn=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(r){this.ariaActiveDescendantElement=null,this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColIndexText="",this.ariaColSpan="",this.ariaControlsElements=null,this.ariaCurrent="",this.ariaDescribedByElements=null,this.ariaDescription="",this.ariaDetailsElements=null,this.ariaDisabled="",this.ariaErrorMessageElements=null,this.ariaExpanded="",this.ariaFlowToElements=null,this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLabelledByElements=null,this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaOwnsElements=null,this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRelevant="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowIndexText="",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 Ie=function(n,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"?n!==r||!i:!r.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(n,e):i?i.value=e:r.set(n,e),e},Y=function(n,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?n!==r||!t:!r.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:r.get(n)},Gt,Xi,Qi,Mr,qs,kr,Yi,Et,Rr,Ze,Ji,Xn,Qn=n=>typeof n=="boolean"?n:n?.capture??!1;var Cs=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=Qn(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 s=typeof t=="object"&&t?t:{};s.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),o.set(e,s??{})}removeEventListener(r,e,t){if(e==null)return;let i=Qn(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,s=0,a=null,l=null,c=null,p=r.stopPropagation,u=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 s},...j},composedPath:{value:()=>e,...j},stopPropagation:{value:()=>{i=!0,p.call(r)},...j},stopImmediatePropagation:{value:()=>{o=!0,u.call(r)},...j}});let h=(m,g,q)=>{typeof m=="function"?m(r):typeof m?.handleEvent=="function"&&m.handleEvent(r),g.once&&q.delete(m)},y=()=>(c=null,s=0,!r.defaultPrevented),v=e.slice().reverse();a=!this.__host||!r.composed?this:null;let C=m=>{for(l=this;l.__host&&m.includes(l.__host);)l=l.__host};for(let m of v){!a&&(!l||l===m.__host)&&C(v.slice(v.indexOf(m))),c=m,s=m===r.target?2:1;let g=m.__captureEventListeners.get(r.type);if(g){for(let[q,A]of g)if(h(q,A,g),o)return y()}if(i)return y()}let f=r.bubbles?e:[this];l=null;for(let m of f){!a&&(!l||m===l.__host)&&C(f.slice(0,f.indexOf(m)+1)),c=m,s=m===r.target?2:3;let g=m.__eventListeners.get(r.type);if(g){for(let[q,A]of g)if(h(q,A,g),o)return y()}if(i)return y()}return y()}},ws=Cs;var j={__proto__:null};j.enumerable=!0;Object.freeze(j);var Es=(Ze=class{constructor(r,e={}){if(Gt.set(this,!1),Xi.set(this,!1),Qi.set(this,!1),Mr.set(this,!1),qs.set(this,Date.now()),kr.set(this,!1),Yi.set(this,void 0),Et.set(this,void 0),Rr.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;Ie(this,Gt,!!i,"f"),Ie(this,Xi,!!t,"f"),Ie(this,Qi,!!o,"f"),Ie(this,Yi,`${r}`,"f"),Ie(this,Et,null,"f"),Ie(this,Rr,!1,"f")}initEvent(r,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){Ie(this,Mr,!0,"f")}get target(){return Y(this,Et,"f")}get currentTarget(){return Y(this,Et,"f")}get srcElement(){return Y(this,Et,"f")}get type(){return Y(this,Yi,"f")}get cancelable(){return Y(this,Gt,"f")}get defaultPrevented(){return Y(this,Gt,"f")&&Y(this,Mr,"f")}get timeStamp(){return Y(this,qs,"f")}composedPath(){return Y(this,Rr,"f")?[Y(this,Et,"f")]:[]}get returnValue(){return!Y(this,Gt,"f")||!Y(this,Mr,"f")}get bubbles(){return Y(this,Xi,"f")}get composed(){return Y(this,Qi,"f")}get eventPhase(){return Y(this,Rr,"f")?Ze.AT_TARGET:Ze.NONE}get cancelBubble(){return Y(this,kr,"f")}set cancelBubble(r){r&&Ie(this,kr,!0,"f")}stopPropagation(){Ie(this,kr,!0,"f")}get isTrusted(){return!1}},Gt=new WeakMap,Xi=new WeakMap,Qi=new WeakMap,Mr=new WeakMap,qs=new WeakMap,kr=new WeakMap,Yi=new WeakMap,Et=new WeakMap,Rr=new WeakMap,Ze.NONE=0,Ze.CAPTURING_PHASE=1,Ze.AT_TARGET=2,Ze.BUBBLING_PHASE=3,Ze);Object.defineProperties(Es.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 Yn=(Xn=class extends Es{constructor(r,e={}){super(r,e),Ji.set(this,void 0),Ie(this,Ji,e?.detail??null,"f")}initCustomEvent(r,e,t,i){throw new Error("Method not implemented.")}get detail(){return Y(this,Ji,"f")}},Ji=new WeakMap,Xn);Object.defineProperties(Yn.prototype,{detail:j});var Ss=Es,As=Yn;var re;var xp=(re=class{constructor(){this.STYLE_RULE=1,this.CHARSET_RULE=2,this.IMPORT_RULE=3,this.MEDIA_RULE=4,this.FONT_FACE_RULE=5,this.PAGE_RULE=6,this.NAMESPACE_RULE=10,this.KEYFRAMES_RULE=7,this.KEYFRAME_RULE=8,this.SUPPORTS_RULE=12,this.COUNTER_STYLE_RULE=11,this.FONT_FEATURE_VALUES_RULE=14,this.__parentStyleSheet=null,this.cssText=""}get parentRule(){return null}get parentStyleSheet(){return this.__parentStyleSheet}get type(){return 0}},re.STYLE_RULE=1,re.CHARSET_RULE=2,re.IMPORT_RULE=3,re.MEDIA_RULE=4,re.FONT_FACE_RULE=5,re.PAGE_RULE=6,re.NAMESPACE_RULE=10,re.KEYFRAMES_RULE=7,re.KEYFRAME_RULE=8,re.SUPPORTS_RULE=12,re.COUNTER_STYLE_RULE=11,re.FONT_FEATURE_VALUES_RULE=14,re);globalThis.Event??=Ss;globalThis.CustomEvent??=As;var Jn=new WeakMap,_r=n=>{let r=Jn.get(n);return r===void 0&&Jn.set(n,r=new Map),r},ed=class extends ws{constructor(){super(...arguments),this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(_r(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){_r(this).set(r,String(e))}removeAttribute(r){_r(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 _r(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 Gn(this);return this.__internals=r,r}getAttribute(r){return _r(this).get(r)??null}};var td=class extends ed{},Is=td;globalThis.litServerRoot??=Object.defineProperty(new Is,"localName",{get(){return"lit-server-root"}});function rd(){let n,r;return{promise:new Promise((t,i)=>{n=t,r=i}),resolve:n,reject:r}}var Ts=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=rd(),this.__pendingWhenDefineds.set(r,t)),t.promise}},id=Ts;var Kn=new id;var Lr=globalThis,Ki=Lr.ShadowRoot&&(Lr.ShadyCSS===void 0||Lr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Ms=Symbol(),Zn=new WeakMap,$r=class{constructor(r,e,t){if(this._$cssResult$=!0,t!==Ms)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(Ki&&r===void 0){let t=e!==void 0&&e.length===1;t&&(r=Zn.get(e)),r===void 0&&((this.o=r=new CSSStyleSheet).replaceSync(this.cssText),t&&Zn.set(e,r))}return r}toString(){return this.cssText}},ea=n=>new $r(typeof n=="string"?n:n+"",void 0,Ms),E=(n,...r)=>{let e=n.length===1?n[0]:r.reduce((t,i,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.")})(i)+n[o+1],n[0]);return new $r(e,n,Ms)},ta=(n,r)=>{if(Ki)n.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of r){let t=document.createElement("style"),i=Lr.litNonce;i!==void 0&&t.setAttribute("nonce",i),t.textContent=e.cssText,n.appendChild(t)}},ks=Ki||Lr.CSSStyleSheet===void 0?n=>n:n=>n instanceof CSSStyleSheet?(r=>{let e="";for(let t of r.cssRules)e+=t.cssText;return ea(e)})(n):n;var{is:od,defineProperty:sd,getOwnPropertyDescriptor:nd,getOwnPropertyNames:ad,getOwnPropertySymbols:ld,getPrototypeOf:cd}=Object,Or=globalThis;Or.customElements??=Kn;var ra=Or.trustedTypes,dd=ra?ra.emptyScript:"",pd=Or.reactiveElementPolyfillSupport,Pr=(n,r)=>n,Dr={toAttribute(n,r){switch(r){case Boolean:n=n?dd:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,r){let e=n;switch(r){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}},Zi=(n,r)=>!od(n,r),ia={attribute:!0,type:String,converter:Dr,reflect:!1,useDefault:!1,hasChanged:Zi};Symbol.metadata??=Symbol("metadata"),Or.litPropertyMetadata??=new WeakMap;var Fe=class extends(globalThis.HTMLElement??Is){static addInitializer(r){this._$Ei(),(this.l??=[]).push(r)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(r,e=ia){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&&sd(this.prototype,r,i)}}static getPropertyDescriptor(r,e,t){let{get:i,set:o}=nd(this.prototype,r)??{get(){return this[e]},set(s){this[e]=s}};return{get:i,set(s){let a=i?.call(this);o?.call(this,s),this.requestUpdate(r,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(r){return this.elementProperties.get(r)??ia}static _$Ei(){if(this.hasOwnProperty(Pr("elementProperties")))return;let r=cd(this);r.finalize(),r.l!==void 0&&(this.l=[...r.l]),this.elementProperties=new Map(r.elementProperties)}static finalize(){if(this.hasOwnProperty(Pr("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Pr("properties"))){let e=this.properties,t=[...ad(e),...ld(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(ks(i))}else r!==void 0&&e.push(ks(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 ta(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:Dr).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),s=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:Dr;this._$Em=i;let a=s.fromAttribute(e,o.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(r,e,t,i=!1,o){if(r!==void 0){let s=this.constructor;if(i===!1&&(o=this[r]),t??=s.getPropertyOptions(r),!((t.hasChanged??Zi)(o,e)||t.useDefault&&t.reflect&&o===this._$Ej?.get(r)&&!this.hasAttribute(s._$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},s){t&&!(this._$Ej??=new Map).has(r)&&(this._$Ej.set(r,s??e??this[r]),o!==!0||s!==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:s}=o,a=this[i];s!==!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){}};Fe.elementStyles=[],Fe.shadowRootOptions={mode:"open"},Fe[Pr("elementProperties")]=new Map,Fe[Pr("finalized")]=new Map,pd?.({ReactiveElement:Fe}),(Or.reactiveElementVersions??=[]).push("2.1.2");var no=globalThis,oa=n=>n,eo=no.trustedTypes,sa=eo?eo.createPolicy("lit-html",{createHTML:n=>n}):void 0,_s="$lit$",Ue=`lit$${Math.random().toFixed(9).slice(2)}$`,Ls="?"+Ue,ud=`<${Ls}>`,Tt=no.document===void 0?{createTreeWalker:()=>({})}:document,Nr=()=>Tt.createComment(""),Hr=n=>n===null||typeof n!="object"&&typeof n!="function",$s=Array.isArray,pa=n=>$s(n)||typeof n?.[Symbol.iterator]=="function",Rs=`[
3
+ \f\r]`,Vr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,na=/-->/g,aa=/>/g,St=RegExp(`>|${Rs}(?:([^\\s"'>=/]+)(${Rs}*=${Rs}*(?:[^
4
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),la=/'/g,ca=/"/g,ua=/^(?:script|style|textarea|title)$/i,Ps=n=>(r,...e)=>({_$litType$:n,strings:r,values:e}),x=Ps(1),ao=Ps(2),zp=Ps(3),Z=Symbol.for("lit-noChange"),N=Symbol.for("lit-nothing"),da=new WeakMap,At=Tt.createTreeWalker(Tt,129);function ma(n,r){if(!$s(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return sa!==void 0?sa.createHTML(r):r}var ha=(n,r)=>{let e=n.length-1,t=[],i,o=r===2?"<svg>":r===3?"<math>":"",s=Vr;for(let a=0;a<e;a++){let l=n[a],c,p,u=-1,h=0;for(;h<l.length&&(s.lastIndex=h,p=s.exec(l),p!==null);)h=s.lastIndex,s===Vr?p[1]==="!--"?s=na:p[1]!==void 0?s=aa:p[2]!==void 0?(ua.test(p[2])&&(i=RegExp("</"+p[2],"g")),s=St):p[3]!==void 0&&(s=St):s===St?p[0]===">"?(s=i??Vr,u=-1):p[1]===void 0?u=-2:(u=s.lastIndex-p[2].length,c=p[1],s=p[3]===void 0?St:p[3]==='"'?ca:la):s===ca||s===la?s=St:s===na||s===aa?s=Vr:(s=St,i=void 0);let y=s===St&&n[a+1].startsWith("/>")?" ":"";o+=s===Vr?l+ud:u>=0?(t.push(c),l.slice(0,u)+_s+l.slice(u)+Ue+y):l+Ue+(u===-2?a:y)}return[ma(n,o+(n[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},Fr=class n{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let o=0,s=0,a=r.length-1,l=this.parts,[c,p]=ha(r,e);if(this.el=n.createElement(c,t),At.currentNode=this.el.content,e===2||e===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(i=At.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let u of i.getAttributeNames())if(u.endsWith(_s)){let h=p[s++],y=i.getAttribute(u).split(Ue),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:o,name:v[2],strings:y,ctor:v[1]==="."?ro:v[1]==="?"?io:v[1]==="@"?oo:Mt}),i.removeAttribute(u)}else u.startsWith(Ue)&&(l.push({type:6,index:o}),i.removeAttribute(u));if(ua.test(i.tagName)){let u=i.textContent.split(Ue),h=u.length-1;if(h>0){i.textContent=eo?eo.emptyScript:"";for(let y=0;y<h;y++)i.append(u[y],Nr()),At.nextNode(),l.push({type:2,index:++o});i.append(u[h],Nr())}}}else if(i.nodeType===8)if(i.data===Ls)l.push({type:2,index:o});else{let u=-1;for(;(u=i.data.indexOf(Ue,u+1))!==-1;)l.push({type:7,index:o}),u+=Ue.length-1}o++}}static createElement(r,e){let t=Tt.createElement("template");return t.innerHTML=r,t}};function It(n,r,e=n,t){if(r===Z)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,o=Hr(r)?void 0:r._$litDirective$;return i?.constructor!==o&&(i?._$AO?.(!1),o===void 0?i=void 0:(i=new o(n),i._$AT(n,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=It(n,i._$AS(n,r.values),i,t)),r}var to=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??Tt).importNode(e,!0);At.currentNode=i;let o=At.nextNode(),s=0,a=0,l=t[0];for(;l!==void 0;){if(s===l.index){let c;l.type===2?c=new Xt(o,o.nextSibling,this,r):l.type===1?c=new l.ctor(o,l.name,l.strings,this,r):l.type===6&&(c=new so(o,this,r)),this._$AV.push(c),l=t[++a]}s!==l?.index&&(o=At.nextNode(),s++)}return At.currentNode=Tt,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++}},Xt=class n{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=It(this,r,e),Hr(r)?r===N||r==null||r===""?(this._$AH!==N&&this._$AR(),this._$AH=N):r!==this._$AH&&r!==Z&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):pa(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&&Hr(this._$AH)?this._$AA.nextSibling.data=r:this.T(Tt.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=Fr.createElement(ma(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let o=new to(i,this),s=o.u(this.options);o.p(e),this.T(s),this._$AH=o}}_$AC(r){let e=da.get(r.strings);return e===void 0&&da.set(r.strings,e=new Fr(r)),e}k(r){$s(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 n(this.O(Nr()),this.O(Nr()),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=oa(r).nextSibling;oa(r).remove(),r=t}}setConnected(r){this._$AM===void 0&&(this._$Cv=r,this._$AP?.(r))}},Mt=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,s=!1;if(o===void 0)r=It(this,r,e,0),s=!Hr(r)||r!==this._$AH&&r!==Z,s&&(this._$AH=r);else{let a=r,l,c;for(r=o[0],l=0;l<o.length-1;l++)c=It(this,a[t+l],e,l),c===Z&&(c=this._$AH[l]),s||=!Hr(c)||c!==this._$AH[l],c===N?r=N:r!==N&&(r+=(c??"")+o[l+1]),this._$AH[l]=c}s&&!i&&this.j(r)}j(r){r===N?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},ro=class extends Mt{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===N?void 0:r}},io=class extends Mt{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==N)}},oo=class extends Mt{constructor(r,e,t,i,o){super(r,e,t,i,o),this.type=5}_$AI(r,e=this){if((r=It(this,r,e,0)??N)===Z)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)}},so=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){It(this,r)}},fa={M:_s,P:Ue,A:Ls,C:1,L:ha,R:to,D:pa,V:It,I:Xt,H:Mt,N:io,U:oo,B:ro,F:so},md=no.litHtmlPolyfillSupport;md?.(Fr,Xt),(no.litHtmlVersions??=[]).push("3.3.2");var ga=(n,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let o=e?.renderBefore??null;t._$litPart$=i=new Xt(r.insertBefore(Nr(),o),o,void 0,e??{})}return i._$AI(n),i};var Ds=globalThis,w=class extends Fe{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=ga(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Z}};w._$litElement$=!0,w.finalized=!0,Ds.litElementHydrateSupport?.({LitElement:w});var hd=Ds.litElementPolyfillSupport;hd?.({LitElement:w});(Ds.litElementVersions??=[]).push("4.2.2");var M=n=>(r,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(n,r)}):customElements.define(n,r)};var fd={attribute:!0,type:String,converter:Dr,reflect:!1,hasChanged:Zi},gd=(n=fd,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"&&((n=Object.create(n)).wrapped=!0),o.set(e.name,n),t==="accessor"){let{name:s}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(s,l,n,!0,a)},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];r.call(this,a),this.requestUpdate(s,l,n,!0,a)}}throw Error("Unsupported decorator location: "+t)};function b(n){return(r,e)=>typeof e=="object"?gd(n,r,e):((t,i,o)=>{let s=i.hasOwnProperty(o);return i.constructor.createProperty(o,t),s?Object.getOwnPropertyDescriptor(i,o):void 0})(n,r,e)}function R(n){return b({...n,state:!0,attribute:!1})}var et=(n,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(n,r,e),e);function Qt(n,r){return(e,t,i)=>{let o=s=>s.renderRoot?.querySelector(n)??null;if(r){let{get:s,set:a}=typeof t=="object"?e:i??(()=>{let l=Symbol();return{get(){return this[l]},set(c){this[l]=c}}})();return et(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 et(e,t,{get(){return o(this)}})}}function ba(n){return(r,e)=>{let{slot:t,selector:i}=n??{},o="slot"+(t?`[name=${t}]`:":not([name])");return et(r,e,{get(){let s=this.renderRoot?.querySelector(o),a=s?.assignedElements(n)??[];return i===void 0?a:a.filter(l=>l.matches(i))}})}}function va(n,r,e){Array.from(n.getElementsByTagName("*")).filter(o=>o.localName===r||o.localName?.toLowerCase()===r.toLowerCase()).forEach(o=>{let s=`${r}-${e}`,a=xa(o,s);o.replaceWith(a)})}function ya(n,r){n.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let o=i.slice(`${r}:`.length),s=`${e.nodeName}-${o}`,a=xa(e,s);e.replaceWith(a)}})})}function xa(n,r){let e=n.ownerDocument.createElement(r);for(let t of n.attributes)e.setAttribute(t.name,t.value);for(;n.firstChild;)e.appendChild(n.firstChild);return e}function qa(n){let r=[];return n.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 Yt(n,r){return fetch(n,{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 Jt(n){return new DOMParser().parseFromString(n,"text/xml")}function Ca(n,r){if(n.nodeType===Node.ELEMENT_NODE){let e=n,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(Ca(e.childNodes[i],r));return t}return n.cloneNode(!1)}function Kt(n){let r=document.createDocumentFragment();for(let e=0;e<n.childNodes.length;e++)r.appendChild(Ca(n.childNodes[e],document));return r}function Zt(n,r){r.endsWith("/")||(r+="/"),n.querySelectorAll("*").forEach(t=>{for(let i of["src","href"]){let o=t.getAttribute(i)?.trim();if(o&&!/^(data:|https?:|blob:)/.test(o)){let s=r+encodeURI(o);t.setAttribute(i,s)}}})}function wa(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 Ea(n){n.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function Sa(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 Me=(n=!1)=>{let r,e="",t={load(i,o){e=i;let s=encodeURI(i);return n&&sessionStorage.getItem(s)?Promise.resolve(t.parse(sessionStorage.getItem(s))):Yt(i,o).then(a=>(r=a,t.shuffleInteractions(),n&&sessionStorage.setItem(s,new XMLSerializer().serializeToString(r)),t))},parse(i){return r=Jt(i),t},path:i=>(Zt(r,i),e=null,t),fn(i){return i(r),t},pciHooks(i){let o=["hook","module"],s=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",s+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,o,s="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(s);if(l.length===0)return t;let c=null,p=null,u=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 h of Array.from(l)){h.setAttribute("data-base-url",i);let y=h.getAttribute("custom-interaction-type-identifier");y&&a.includes(y)&&(y=y+a.length,h.setAttribute("custom-interaction-type-identifier",y),a.push(y)),y&&a.push(y);let v=h.querySelector("qti-interaction-modules");if(v&&v.getAttribute("primary-configuration")){await u();let C=v.getAttribute("primary-configuration");if(C)try{let f=await o(i,`/${C}`),m=Array.from(v.querySelectorAll("qti-interaction-module"));for(let g of m){let q=g.getAttribute("id");if(q&&f.paths&&f.paths[q]){let A=f.paths[q],S=Array.isArray(A)?A[0]:A;if(g.setAttribute("primary-path",S),p&&p.paths&&p.paths[q]){let T=p.paths[q];Array.isArray(T)?g.setAttribute("fallback-path",T[0]):g.setAttribute("fallback-path",T)}}}if(f.paths){for(let g in f.paths)if(!v.querySelector(`qti-interaction-module[id="${g}"]`)){let A=r.createElement("qti-interaction-module");A.setAttribute("id",g);let S=Array.isArray(f.paths[g])?f.paths[g][0]:f.paths[g];if(A.setAttribute("primary-path",S),p&&p.paths&&p.paths[g]){let T=p.paths[g];Array.isArray(T)?A.setAttribute("fallback-path",T[0]):A.setAttribute("fallback-path",T)}v.appendChild(A)}}f.urlArgs&&v.setAttribute("url-args",f.urlArgs)}catch(f){console.warn(`Failed to load primary configuration: ${C}`,f)}}else if(await u(),c){h.querySelector("qti-interaction-modules")===null?(v=r.createElement("qti-interaction-modules"),h.appendChild(v)):v=h.querySelector("qti-interaction-modules");for(let C in c.paths){let f=c.paths[C],m="";p&&p.paths&&p.paths[C]&&(m=p.paths[C]);let g=Array.isArray(f)?f:[f],q=Array.isArray(m)?m:[m],A=g.map((S,T)=>{let k=q.length>T?q[T]:"";return{primaryPath:S,fallbackPath:k}});for(let S of q)A.some(T=>T.fallbackPath===S)||A.push({primaryPath:g.length>0?g[0]:S,fallbackPath:S});for(let S of A){let T=r.createElement("qti-interaction-module");S.fallbackPath&&T.setAttribute("fallback-path",S.fallbackPath),T.setAttribute("id",C),T.setAttribute("primary-path",S.primaryPath),v&&v.appendChild(T)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),o=Array.from(i).filter(s=>s.tagName?.toLowerCase().endsWith("-interaction"));for(let s of o){let a=Sa(s.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let c of l){let p=Array.from(s.querySelectorAll(c)),u=p.map((m,g)=>({element:m,fixed:m.hasAttribute("fixed")&&m.getAttribute("fixed")==="true",originalOrder:g})).filter(m=>m.fixed),h=p.filter(m=>!m.hasAttribute("fixed")||m.getAttribute("fixed")!=="true");if(h.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;let y=[...h],v=!1,C=0;for(;!v&&C<20;){C++;for(let m=h.length-1;m>0;m--){let g=Math.floor(Math.random()*(m+1));[h[m],h[g]]=[h[g],h[m]]}v=!h.every((m,g)=>m===y[g])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;s.removeAttribute("shuffle");let f=0;for(let m of h)m.parentElement.insertBefore(m,u[f]?.element),f++;for(let m of u)m.element.parentElement.insertBefore(m.element,h[m.originalOrder])}}return t},extendElementName:(i,o)=>(va(r,i,o),t),extendElementsWithClass:(i="extend")=>(ya(r,i),t),customInteraction(i,o){let s=r.querySelector("qti-custom-interaction"),a=s.querySelector("object");return s.setAttribute("data-base-ref",i),s.setAttribute("data-base-item",i+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 wa(r),t},stripStyleSheets(){return Ea(r),t},html(){return e!==null&&Zt(r,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(Kt(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return e!==null&&Zt(r,e.substring(0,e.lastIndexOf("/"))),Kt(r)},xmlDoc(){return r}};return t};var Aa=()=>{let n,r={async load(e,t){return new Promise(i=>{Yt(e,t).then(o=>(n=o,i(r)))})},parse(e){n=Jt(e)},assessmentTest(){let e=n.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var er=()=>{let n,r={async load(e,t){return new Promise((i,o)=>{Yt(e,t).then(s=>(n=s,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return n=Jt(e),r},path:e=>(Zt(n,e),r),fn(e){return e(n),r},items(){return qa(n)},html(){return new XMLSerializer().serializeToString(Kt(n))},xml(){return new XMLSerializer().serializeToString(n)},htmlDoc(){return Kt(n)},xmlDoc(){return n}};return r};var Ta=n=>{class r extends n{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 s=o||this._getDefaultNavigationId(i);s&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,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(i){this._testElement=i.detail,this._initializeNavigation()}_handleItemConnected(i){let o=i.detail;this._loadingState.connectedItems++;let s=o.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=s.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:o,item:s}=i;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(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,s=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=s,await this._executeNavigation(i.type,i.id,o,s)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===s&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,o,s){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,o,s))}async _executeNavigation(i,o,s,a){i==="item"?await this._navigateToItem(o,s,a):await this._navigateToSection(o,s,a)}async _navigateToItem(i,o,s){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],o,s),await this._waitForLoadingComplete(o,s),!this._isStaleNavigation(o,s)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,o,s){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,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 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(s=>setTimeout(s,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,o){console.info("Loading stimulus:",i.href);let s=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",s?"has content":"no content"),this._applyStimulusContent(s,i,o)}_applyStimulusContent(i,o,s){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="${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 u=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=u,console.info("Using fallback targets:",u.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,u)=>{p.innerHTML="";let h=Array.from(a).map(y=>y.cloneNode(!0));p.append(...h),console.info(`Applied stimulus content to target ${u+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,s){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,s)))).filter(Boolean);this._isStaleNavigation(o,s)||(c.forEach(({itemRef:p,doc:u})=>{p&&u&&(p.xmlDoc=u)}),c.forEach(({itemRef:p})=>{let u=p?.identifier;if(!p||!u)return;let h=this.testContext.items.find(y=>y.identifier===u)?.state;h!==void 0&&p.updateComplete.then(()=>{let y=p.assessmentItem;y&&(y.state=h)})}),this._loadResults=c)}async _loadSingleItem(i,o,s){try{let a=await Me(this.cacheTransform).load(i.href,s.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(o,s)?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 Me().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 s=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:s,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,s){return{message:i.message||`Failed to load ${o}: ${s}`,details:i,itemId:o==="item"?s:void 0,sectionId:o==="section"?s: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 Ia=n=>{class r extends n{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(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 r};var tt=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 tr=class{constructor(r,e,t,i){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=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 tt(this.context,this.host,this.t,this.subscribe))}};var lo=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 Os=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},rr=class extends lo{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[s,{consumerHost:a}]of this.subscriptions)o.has(s)||(o.add(s),a.dispatchEvent(new tt(this.context,a,s,!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 Os(this.context,this.host))}};function le({context:n}){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 rr(this,{context:n,initialValue:i})),i}};{r.constructor.addInitializer((s=>{t.set(s,new rr(s,{context:n}))}));let i=Object.getOwnPropertyDescriptor(r,e),o;if(i===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=i.set;o={...i,set(a){t.get(this).setValue(a),s?.call(this,a)}}}return void Object.defineProperty(r,e,o)}}}function $({context:n,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new tr(this,{context:n,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new tr(i,{context:n,callback:o=>{i[t]=o},subscribe:r})}))}}var rt=Symbol("computedItemContext");var W=Symbol("computedContext");var ge=Symbol("configContext");var Ma=[{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 ir=Symbol("qtiContext");var Vs={view:"candidate"},it=Symbol("testContext");var Ns={items:[],testOutcomeVariables:[]},ke=Symbol("testContext");function B(n,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{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),u=this[c];p!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](p,u)}}),o.call(this,a)}}}var ot={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},ce=n=>(...r)=>({_$litDirective$:n,values:r}),Re=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:bd}=fa,ka=n=>n,_a=n=>n===null||typeof n!="object"&&typeof n!="function";var La=n=>n.strings===void 0,Ra=()=>document.createComment(""),or=(n,r,e)=>{let t=n._$AA.parentNode,i=r===void 0?n._$AB:r._$AA;if(e===void 0){let o=t.insertBefore(Ra(),i),s=t.insertBefore(Ra(),i);e=new bd(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!==i||a){let l=e._$AA;for(;l!==o;){let c=ka(l).nextSibling;ka(t).insertBefore(l,i),l=c}}}return e},st=(n,r,e=n)=>(n._$AI(r,e),n),vd={},$a=(n,r=vd)=>n._$AH=r,Pa=n=>n._$AH,co=n=>{n._$AR(),n._$AA.remove()};var Ur=(n,r)=>{let e=n._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),Ur(t,r);return!0},po=n=>{let r,e;do{if((r=n._$AM)===void 0)break;e=r._$AN,e.delete(n),n=r}while(e?.size===0)},Da=n=>{for(let r;r=n._$AM;n=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(n))break;e.add(n),qd(r)}};function yd(n){this._$AN!==void 0?(po(this),this._$AM=n,Da(this)):this._$AM=n}function xd(n,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++)Ur(t[o],!1),po(t[o]);else t!=null&&(Ur(t,!1),po(t));else Ur(this,n)}var qd=n=>{n.type==ot.CHILD&&(n._$AP??=xd,n._$AQ??=yd)},nt=class extends Re{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),Da(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(Ur(this,r),po(this))}setValue(r){if(La(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 Hs=class extends nt{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 s in t){let a=t[s];a!==i[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:i}=this;if(!t)return;let o=e?this.#e(e):{};for(let s in t)(!o||!(s in o))&&i.removeAttribute(s)}#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)))}},eh=ce(Hs);var Oa=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(Oa||{}),D=class extends w{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],s=(Array.isArray(t)?t:[t]).filter(c=>c!=="");if(s.length===0)return null;let a=s.filter(c=>i.includes(c)).length,l=s.filter(c=>!i.includes(c)).length;return a===i.length&&l===0&&s.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([$({context:G,subscribe:!0})],D.prototype,"_context",2),d([$({context:ge,subscribe:!0})],D.prototype,"configContext",2),d([b({type:String,attribute:"response-identifier"})],D.prototype,"responseIdentifier",2),d([b({reflect:!0,type:Boolean})],D.prototype,"disabled",2),d([b({reflect:!0,type:Boolean})],D.prototype,"readonly",2),d([b({type:String})],D.prototype,"name",2),d([b({type:String,attribute:"correct-response",reflect:!0})],D.prototype,"correctResponseAttr",1),d([b({type:Boolean,attribute:"show-correct-response",reflect:!0})],D.prototype,"showCorrectResponse",2),d([B("showCorrectResponse",{waitUntilFirstUpdate:!0})],D.prototype,"_handleShowCorrectResponseChange",2),d([b({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],D.prototype,"showFullCorrectResponse",2),d([B("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],D.prototype,"_handleShowFullCorrectResponseChange",2),d([b({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],D.prototype,"showCandidateCorrection",2),d([B("showCandidateCorrection",{waitUntilFirstUpdate:!0})],D.prototype,"_handleShowCandidateCorrectionChange",2),d([R()],D.prototype,"_isFullCorrectResponse",2),d([R()],D.prototype,"_correctResponse",2);var sr=class extends w{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 w{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=E`
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=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`
9
+ <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};d([R()],L.prototype,"result",2),d([$({context:G,subscribe:!0}),R()],L.prototype,"context",2),d([$({context:ir,subscribe:!0}),R()],L.prototype,"qtiContext",2);var be=class extends L{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Cd=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Br=n=>{if(typeof n=="string")return n;let r=Cd();return r==="."?n.toLocaleString():n.toString().replace(".","").replace(r,".")};function Fs(n){return n==null}function uo(n){return n.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var de=class extends w{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=!Fs(this.identifier)&&!Fs(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"})],de.prototype,"showHide",2),d([b({type:String,attribute:"outcome-identifier"})],de.prototype,"outcomeIdentifier",2),d([b({type:String})],de.prototype,"identifier",2),d([b({type:String,attribute:!1})],de.prototype,"showStatus",2),d([$({context:G,subscribe:!0}),R()],de.prototype,"_context",2);var Va=class extends w{};var J=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),[s,...a]=e.split(","),l=a.map(Number);switch(s.toLowerCase()){case"circle":case"default":{let[c,p,u]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((i-c)**2+(o-p)**2)<=u}case"rect":{let[c,p,u,h]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):i>=c&&i<=u&&o>=p&&o<=h}case"ellipse":{let[c,p,u,h]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let y=(i-c)**2/u**2,v=(o-p)**2/h**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: ${s}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,o=e.length-1;i<e.length;o=i++){let s=e[i].x,a=e[i].y,l=e[o].x,c=e[o].y;a>r.y!=c>r.y&&r.x<(l-s)*(r.y-a)/(c-a)+s&&(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 Us=n=>{class r extends n{constructor(...i){super(...i);this.testContext=Ns;this.sessionContext=Vs;this._updateItemInTestContext=i=>{let o=i._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=[...i.variables];for(let p of l.variables){let u=c.find(h=>h.identifier===p.identifier);u?u.value=p.value:c.push(p)}i.variables=c}};this._initializeEventListeners()}updateItemVariables(i,o){let s=this.testContext.items.find(l=>l.identifier===i);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="${i}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=o)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=Ns,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(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",i=>{let o=i.detail,s=o.closest("qti-assessment-item-ref")?.identifier;s&&(o.assessmentItemRefId=s),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,s){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}),...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}),le({context:ke})],r.prototype,"testContext",2),d([b({attribute:!1,type:Object}),le({context:it})],r.prototype,"sessionContext",2),r},Na=class extends Us(w){};var Ha=n=>{class r extends n{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:s}=i.detail;this.updateOutcomeVariable(o,s),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(s=>s.identifier!==t?s:{...s,value:o.cardinality==="single"?i:[...s.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var mo=class extends Ta(Ia(Ha(Us(w)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return x`<slot></slot>`}};mo=d([M("qti-test")],mo);var Fa={fromAttribute(n){return n==="true"},toAttribute(n){return n?"true":"false"}},Be=class extends w{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})],Be.prototype,"category",2),d([b({type:String})],Be.prototype,"identifier",2),d([b({type:Boolean,converter:Fa})],Be.prototype,"required",2),d([b({type:Boolean,converter:Fa})],Be.prototype,"fixed",2),d([b({type:String})],Be.prototype,"href",2),d([b({type:Object,attribute:!1})],Be.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Be);var Bs={fromAttribute(n){return n==="true"},toAttribute(n){return n?"true":"false"}},ze=class extends w{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})],ze.prototype,"identifier",2),d([b({type:String})],ze.prototype,"required",2),d([b({type:Boolean,converter:Bs})],ze.prototype,"fixed",2),d([b({type:Boolean,converter:Bs})],ze.prototype,"visible",2),d([b({type:Boolean,converter:Bs,attribute:"keep-together"})],ze.prototype,"keepTogether",2),d([$({context:ke,subscribe:!0})],ze.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",ze);var zr,Rt=class extends w{constructor(){super(...arguments);_(this,zr,"")}get title(){return I(this,zr)}set title(e){U(this,zr,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>`}};zr=new WeakMap,d([b({type:String})],Rt.prototype,"identifier",2),d([b({type:String})],Rt.prototype,"title",1),d([$({context:ke,subscribe:!0})],Rt.prototype,"_testContext",2),Rt=d([M("qti-assessment-test")],Rt);var jr,je=class extends w{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";_(this,jr,"")}get title(){return I(this,jr)}set title(e){U(this,jr,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>`}};jr=new WeakMap,d([b({type:String})],je.prototype,"identifier",2),d([b({type:String})],je.prototype,"class",2),d([b({type:String,attribute:"navigation-mode"})],je.prototype,"navigationMode",2),d([b({type:String,attribute:"submission-mode"})],je.prototype,"submissionMode",2),je=d([M("qti-test-part")],je);customElements.get("qti-test-part")||customElements.define("qti-test-part",je);var Wr,nr,Gr,ar,ve,ue,Ua,Ba,Xr,Qr,Yr,Jr,Kr,Zr,za,zs,ja,pe=class extends w{constructor(){super(...arguments);_(this,ue);_(this,Wr);_(this,nr,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{I(this,ve).forEach(i=>i.disabled=t)};this._handleReadonlyChange=(e,t)=>I(this,ve).forEach(i=>i.readonly=t);this._context={variables:Ma};_(this,Gr,{...this._context,variables:this._context.variables});_(this,ar,[]);_(this,ve,[]);_(this,Xr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},U(this,Gr,this._context),e.stopPropagation()});_(this,Qr,e=>{e.stopImmediatePropagation();let t=e.detail;I(this,ar).push(t),(Number(this._context.variables.find(o=>o.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});_(this,Yr,e=>{e.stopImmediatePropagation(),I(this,ve).push(e.detail.interactionElement)});_(this,Jr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});_(this,Kr,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,Wr)}set title(e){U(this,Wr,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,ve).find(o=>o.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&I(this,ar).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,ve).find(s=>s.getAttribute("response-identifier")===t.responseIdentifier);o&&(o.response=t.response)}}render(){return x`<slot></slot>`}connectedCallback(){P(this,ue,Ua).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),P(this,ue,za).call(this)})}disconnectedCallback(){P(this,ue,Ba).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of I(this,ve))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of I(this,ve))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"&&P(this,ue,ja).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",P(this,ue,zs).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),o}resetResponses(){this._context=I(this,Gr)}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",P(this,ue,zs).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,ar).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,ve).every(i=>i.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of I(this,ve))e.reportValidity()}};Wr=new WeakMap,nr=new WeakMap,Gr=new WeakMap,ar=new WeakMap,ve=new WeakMap,ue=new WeakSet,Ua=function(){this.addEventListener("qti-register-variable",I(this,Xr)),this.addEventListener("qti-register-feedback",I(this,Qr)),this.addEventListener("qti-register-interaction",I(this,Yr)),this.addEventListener("end-attempt",I(this,Jr)),this.addEventListener("qti-set-outcome-value",I(this,Kr)),this.addEventListener("qti-interaction-response",I(this,Zr))},Ba=function(){this.removeEventListener("qti-register-variable",I(this,Xr)),this.removeEventListener("qti-register-feedback",I(this,Qr)),this.removeEventListener("qti-register-interaction",I(this,Yr)),this.removeEventListener("end-attempt",I(this,Jr)),this.removeEventListener("qti-set-outcome-value",I(this,Kr)),this.removeEventListener("qti-interaction-response",I(this,Zr))},Xr=new WeakMap,Qr=new WeakMap,Yr=new WeakMap,Jr=new WeakMap,Kr=new WeakMap,Zr=new WeakMap,za=function(){U(this,nr,this.querySelector("qti-template-processing")),I(this,nr)&&I(this,nr).process()},zs=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},ja=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})],pe.prototype,"identifier",2),d([b({type:String})],pe.prototype,"adaptive",2),d([b({type:String})],pe.prototype,"timeDependent",2),d([b({type:String})],pe.prototype,"title",1),d([b({type:Boolean})],pe.prototype,"disabled",2),d([B("disabled",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleDisabledChange",2),d([b({type:Boolean})],pe.prototype,"readonly",2),d([B("readonly",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleReadonlyChange",2),d([le({context:G})],pe.prototype,"_context",2),pe=d([M("qti-assessment-item")],pe);var js=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"}},lr=class extends w{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new js(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 Me().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})],lr.prototype,"identifier",2),d([b({type:String})],lr.prototype,"href",2),lr=d([M("qti-assessment-stimulus-ref")],lr);var ho=class extends w{};ho=d([M("qti-companion-materials-info")],ho);var ti,ei=class extends w{constructor(){super(...arguments);_(this,ti)}render(){return x`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{U(this,ti,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,ti).call(this,this._context,e,t)}};ti=new WeakMap,d([$({context:G,subscribe:!0}),R()],ei.prototype,"_context",2),ei=d([M("qti-custom-operator")],ei);var ri=class extends de{render(){return x` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};ri.styles=E`
10
10
  :host {
11
11
  display: block;
12
12
  }
@@ -16,21 +16,21 @@ 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=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`
19
+ `,ri=d([M("qti-feedback-block")],ri);var _e=n=>n??N;var ii=class extends de{constructor(){super(...arguments);this.render=()=>x` <slot part="feedback" class="${_e(this.showStatus)}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};ii.styles=E`
20
20
  .on {
21
21
  display: inline-block;
22
22
  }
23
23
  .off {
24
24
  display: none;
25
25
  }
26
- `,Xr=d([k("qti-feedback-inline")],Xr);var kt=class extends le{render(){return x`
26
+ `,ii=d([M("qti-feedback-inline")],ii);var _t=class extends de{render(){return x`
27
27
  <dialog class="qti-dialog" part="feedback" ?open="${this.showStatus==="on"}">
28
28
  <slot></slot>
29
29
  <div style="margin-top: var(--qti-gap-size); text-align: center;">
30
30
  <button class="button close-button" @click="${this.closeFeedback}">Close</button>
31
31
  </div>
32
32
  </dialog>
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`
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())}};_t.styles=E`
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);
@@ -69,23 +69,23 @@ Make sure to test your application with a production build as repeat registratio
69
69
  .button:focus {
70
70
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
71
71
  }
72
- `,kt=d([k("qti-modal-feedback")],kt);var ba=S`
72
+ `,_t=d([M("qti-modal-feedback")],_t);var Wa=E`
73
73
  :host {
74
74
  display: block;
75
75
  }
76
- `;var Qr=class extends C{render(){return x`<slot part="qti-rubric-blocks" name="qti-rubric-block"></slot><slot></slot>`}};Qr.styles=ba,Qr=d([k("qti-item-body")],Qr);var to=class extends C{render(){return x`<slot></slot>`}};to=d([k("qti-content-body")],to);var Re=class extends C{handleclassNamesChange(){this.classNames.split(" ").forEach(e=>{switch(e){case"qti-rubric-discretionary-placement":{let t=new CustomEvent("qti-rubric:discretionary-placement",{detail:{className:e,element:this},bubbles:!0,composed:!0,cancelable:!0});if(!this.dispatchEvent(t))return;this.setAttribute("slot","qti-rubric-block")}break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return x`<slot></slot>`}};Re.styles=S`
76
+ `;var oi=class extends w{render(){return x`<slot part="qti-rubric-blocks" name="qti-rubric-block"></slot><slot></slot>`}};oi.styles=Wa,oi=d([M("qti-item-body")],oi);var fo=class extends w{render(){return x`<slot></slot>`}};fo=d([M("qti-content-body")],fo);var Le=class extends w{handleclassNamesChange(){this.classNames.split(" ").forEach(e=>{switch(e){case"qti-rubric-discretionary-placement":{let t=new CustomEvent("qti-rubric:discretionary-placement",{detail:{className:e,element:this},bubbles:!0,composed:!0,cancelable:!0});if(!this.dispatchEvent(t))return;this.setAttribute("slot","qti-rubric-block")}break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return x`<slot></slot>`}};Le.styles=E`
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(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`
80
+ `,d([b({type:String})],Le.prototype,"id",2),d([b({type:String})],Le.prototype,"use",2),d([b({type:String})],Le.prototype,"view",2),d([b({type:String,attribute:"class"})],Le.prototype,"classNames",2),d([B("classNames",{waitUntilFirstUpdate:!0})],Le.prototype,"handleclassNamesChange",1),Le=d([M("qti-rubric-block")],Le);var me,si,Ws,go=class extends w{constructor(){super(...arguments);_(this,si);_(this,me,null)}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(i=>i.text()).then(i=>{let o=P(this,si,Ws).call(this,i);U(this,me,document.createElement("style")),I(this,me).media="screen",I(this,me).textContent=`@scope {${o}}`,this.parentElement?this.parentElement.appendChild(I(this,me)):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=P(this,si,Ws).call(this,this.textContent);U(this,me,document.createElement("style")),I(this,me).media="screen",I(this,me).textContent=`@scope {${i}}`,this.parentElement?this.parentElement.appendChild(I(this,me)):console.warn("No parent element to append the scoped stylesheet to.")}}disconnectedCallback(){if(I(this,me))try{I(this,me).remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};me=new WeakMap,si=new WeakSet,Ws=function(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()},go=d([M("qti-stylesheet")],go);var at,Ga,Xa,Qa,We=class extends sr{constructor(){super(...arguments);_(this,at)}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,at,Ga),cardinality:this.cardinality||"single",mapping:I(this,at,Xa),defaultValue:e,areaMapping:I(this,at,Qa),value:null,type:"response",candidateResponse:null};t.value=e,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};at=new WeakSet,Ga=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},Xa=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(s=>({mapKey:s.getAttribute("map-key")||"",mappedValue:Number(s.getAttribute("mapped-value"))||0,caseSensitive:s.hasAttribute("case-sensitive")?s.getAttribute("case-sensitive")!=="false":!1}))}},Qa=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")),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(i)?null:i,upperBound:isNaN(o)?null:o,areaMapEntries:s}},We.styles=[E`
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 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`
84
+ `],d([b({type:String,attribute:"base-type"})],We.prototype,"baseType",2),d([b({type:String})],We.prototype,"identifier",2),d([b({type:String})],We.prototype,"cardinality",2),d([$({context:G,subscribe:!0}),R()],We.prototype,"itemContext",2),We=d([M("qti-response-declaration")],We);var $e=class extends sr{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")),s=parseFloat(i.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=[E`
85
85
  :host {
86
86
  display: none;
87
87
  }
88
- `],d([b({type:String,attribute:"base-type"})],_e.prototype,"baseType",2),d([b({type:String,attribute:"external-scored"})],_e.prototype,"externalScored",2),d([b({type:String})],_e.prototype,"identifier",2),d([b({type:String})],_e.prototype,"cardinality",2),d([P({context:G,subscribe:!0}),R()],_e.prototype,"itemContext",2),_e=d([k("qti-outcome-declaration")],_e);var qa=`<qti-response-processing>
88
+ `],d([b({type:String,attribute:"base-type"})],$e.prototype,"baseType",2),d([b({type:String,attribute:"external-scored"})],$e.prototype,"externalScored",2),d([b({type:String})],$e.prototype,"identifier",2),d([b({type:String})],$e.prototype,"cardinality",2),d([$({context:G,subscribe:!0}),R()],$e.prototype,"itemContext",2),$e=d([M("qti-outcome-declaration")],$e);var Ya=`<qti-response-processing>
89
89
  <qti-response-condition>
90
90
  <qti-response-if>
91
91
  <qti-match>
@@ -102,7 +102,7 @@ Make sure to test your application with a production build as repeat registratio
102
102
  </qti-set-outcome-value>
103
103
  </qti-response-else>
104
104
  </qti-response-condition>
105
- </qti-response-processing>`,wa=`<qti-response-processing>
105
+ </qti-response-processing>`,Ja=`<qti-response-processing>
106
106
  <qti-response-condition>
107
107
  <qti-response-if>
108
108
  <qti-is-null>
@@ -118,7 +118,7 @@ Make sure to test your application with a production build as repeat registratio
118
118
  </qti-set-outcome-value>
119
119
  </qti-response-else>
120
120
  </qti-response-condition>
121
- </qti-response-processing>`,Ca=`<qti-response-processing>
121
+ </qti-response-processing>`,Ka=`<qti-response-processing>
122
122
  <qti-response-condition>
123
123
  <qti-response-if>
124
124
  <qti-is-null>
@@ -134,53 +134,53 @@ 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 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`
137
+ </qti-response-processing>`;var cr,bo,ni=class extends w{constructor(){super(...arguments);_(this,cr)}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(P(this,cr,bo).call(this,Ja).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(P(this,cr,bo).call(this,Ka).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(P(this,cr,bo).call(this,Ya).firstElementChild.firstElementChild);break}}}};cr=new WeakSet,bo=function(e){return document.createRange().createContextualFragment(e)},ni.styles=[E`
138
138
  :host {
139
139
  display: none;
140
140
  }
141
- `],Yr=d([k("qti-response-processing")],Yr);var st,nt,Ea,Sa,Ta,Le=class extends C{constructor(){super(...arguments);_(this,nt);this.identifier="";this.cardinality="single";this.baseType="string";this.mathVariable=!1;this.paramVariable=!1;_(this,st,null)}render(){return x`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{D(this,nt,Ea).call(this),D(this,nt,Ta).call(this)})}getTemplateVariable(){return{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,value:I(this,st),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable}}};st=new WeakMap,nt=new WeakSet,Ea=function(){let e=this.querySelector("qti-default-value");if(!e)return;let t=e.textContent?.trim()||"";B(this,st,D(this,nt,Sa).call(this,t))},Sa=function(e){if(!e)return null;switch(this.baseType){case"integer":return parseInt(e,10);case"float":case"duration":return parseFloat(e);case"boolean":return e.toLowerCase()==="true";default:return e}},Ta=function(){let t={...{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:I(this,st),value:I(this,st),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable},value:I(this,st)?.toString()||""};this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))},Le.styles=[S`
141
+ `],ni=d([M("qti-response-processing")],ni);var lt,ct,Za,el,tl,Pe=class extends w{constructor(){super(...arguments);_(this,ct);this.identifier="";this.cardinality="single";this.baseType="string";this.mathVariable=!1;this.paramVariable=!1;_(this,lt,null)}render(){return x`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{P(this,ct,Za).call(this),P(this,ct,tl).call(this)})}getTemplateVariable(){return{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,value:I(this,lt),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable}}};lt=new WeakMap,ct=new WeakSet,Za=function(){let e=this.querySelector("qti-default-value");if(!e)return;let t=e.textContent?.trim()||"";U(this,lt,P(this,ct,el).call(this,t))},el=function(e){if(!e)return null;switch(this.baseType){case"integer":return parseInt(e,10);case"float":case"duration":return parseFloat(e);case"boolean":return e.toLowerCase()==="true";default:return e}},tl=function(){let t={...{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:I(this,lt),value:I(this,lt),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable},value:I(this,lt)?.toString()||""};this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))},Pe.styles=[E`
142
142
  :host {
143
143
  display: none;
144
144
  }
145
- `],d([b({type:String})],Le.prototype,"identifier",2),d([b({type:String})],Le.prototype,"cardinality",2),d([b({type:String,attribute:"base-type"})],Le.prototype,"baseType",2),d([b({type:Boolean,attribute:"math-variable"})],Le.prototype,"mathVariable",2),d([b({type:Boolean,attribute:"param-variable"})],Le.prototype,"paramVariable",2),Le=d([k("qti-template-declaration")],Le);var Mt=class extends C{constructor(){super(...arguments);this.identifier="";this.cardinality="record"}render(){return x`<slot></slot>`}};Mt.styles=[S`
145
+ `],d([b({type:String})],Pe.prototype,"identifier",2),d([b({type:String})],Pe.prototype,"cardinality",2),d([b({type:String,attribute:"base-type"})],Pe.prototype,"baseType",2),d([b({type:Boolean,attribute:"math-variable"})],Pe.prototype,"mathVariable",2),d([b({type:Boolean,attribute:"param-variable"})],Pe.prototype,"paramVariable",2),Pe=d([M("qti-template-declaration")],Pe);var Lt=class extends w{constructor(){super(...arguments);this.identifier="";this.cardinality="record"}render(){return x`<slot></slot>`}};Lt.styles=[E`
146
146
  :host {
147
147
  display: none;
148
148
  }
149
- `],d([b({type:String})],Mt.prototype,"identifier",2),d([b({type:String})],Mt.prototype,"cardinality",2),Mt=d([k("qti-context-declaration")],Mt);var Kr=class extends kt{render(){return x``}};Kr.styles=S`
149
+ `],d([b({type:String})],Lt.prototype,"identifier",2),d([b({type:String})],Lt.prototype,"cardinality",2),Lt=d([M("qti-context-declaration")],Lt);var ai=class extends _t{render(){return x``}};ai.styles=E`
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(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`
153
+ `,ai=d([M("qti-test-feedback")],ai);var he,Q,rl,il,ol,sl,nl,al,ll,cl,ye=class extends w{constructor(){super();_(this,Q);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;_(this,he);this.addEventListener("qti-assessment-test-connected",P(this,Q,al).bind(this)),this.addEventListener("qti-assessment-item-connected",P(this,Q,cl).bind(this)),this.addEventListener("qti-interaction-changed",P(this,Q,nl).bind(this)),this.addEventListener("test-end-attempt",P(this,Q,rl).bind(this)),this.addEventListener("test-show-correct-response",P(this,Q,il).bind(this)),this.addEventListener("test-show-candidate-correction",P(this,Q,ol).bind(this)),this.addEventListener("test-update-outcome-variable",P(this,Q,sl).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(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()),u=l.variables?.find(g=>g.identifier==="completionStatus")?.value,h=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,C=s.categories.includes(this.configContext?.infoItemCategory)?null:t++,f=s.variables?.find(g=>g.identifier=="MAXSCORE")?.value,m=f==null?null:parseFloat(f?.toString());return{...l,completionStatus:u,numAttempts:y,score:p,response:h,index:C,active:v,maxScore:m}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};he=new WeakMap,Q=new WeakSet,rl=function(e){let i=I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,o=this.configContext?.reportValidityAfterScoring===!0;i.processResponse(!0,o)},il=function(e){let i=I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;i&&i.showCorrectResponse(e.detail)},ol=function(e){I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},sl=function(e){I(this,he).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},nl=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)}}},al=function(e){if(U(this,he,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,he).identifier,environmentIdentifier:o.environmentIdentifier||"default"}}}I(this,he).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(o=>{let s=P(this,Q,ll).call(this,o);Object.keys(s).length>0&&(this.qtiContext={QTI_CONTEXT:{...s,...this.qtiContext.QTI_CONTEXT}})});let i=Array.from(I(this,he)?.querySelectorAll("qti-test-part")||[]);this.computedContext={identifier:I(this,he).identifier,title:I(this,he).title,view:this._sessionContext?.view,testParts:i.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:[]}))}})}})}},ll=function(e){let t={},i=e.querySelector("qti-default-value");return i&&i.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},cl=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(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")),u=Array.from(c).some(v=>{let C=v.querySelector("qti-mapping"),f=v.querySelector("qti-area-mapping");return C?.querySelector("qti-map-entry")||f?.querySelector("qti-area-map-entry")}),h=p||u,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:h,hasResponseProcessing:y}})}))}))}},d([b({type:String})],ye.prototype,"identifier",2),d([R()],ye.prototype,"initContext",2),d([R(),le({context:ir})],ye.prototype,"qtiContext",2),d([R(),le({context:ge})],ye.prototype,"configContext",2),d([R(),$({context:ke,subscribe:!0})],ye.prototype,"_testContext",2),d([R(),$({context:it,subscribe:!0})],ye.prototype,"_sessionContext",2),d([R(),le({context:W})],ye.prototype,"computedContext",2),d([b({type:Boolean,attribute:"auto-score-items"})],ye.prototype,"autoScoreItems",2),ye=d([M("test-navigation")],ye);var dl=E`
154
154
  display: inline-flex;
155
155
  align-items: center;
156
156
  cursor: pointer;
157
157
  padding: 0.5rem 1rem;
158
158
  border-radius: 0.25rem;
159
159
  user-select: none;
160
- `,te=S`
160
+ `,ie=E`
161
161
  background-color: lightgray;
162
- ${Da};
163
- `,re=S`
162
+ ${dl};
163
+ `,oe=E`
164
164
  cursor: not-allowed;
165
165
  opacity: 0.8;
166
- `,eb=S`
167
- ${Da};
166
+ `,ov=E`
167
+ ${dl};
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(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`
169
+ `;var dr,dt=class extends w{constructor(){super();this._internalDisabled=!0;_(this,dr);U(this,dr,this.attachInternals()),I(this,dr).role="button",I(this,dr).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>`}};dr=new WeakMap,dt.styles=E`
170
170
  :host {
171
- ${te};
171
+ ${ie};
172
172
  }
173
173
  :host([disabled]) {
174
- ${re};
174
+ ${oe};
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(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`
176
+ `,d([b({type:Boolean,reflect:!0,attribute:"disabled"})],dt.prototype,"_internalDisabled",2),d([$({context:W,subscribe:!0})],dt.prototype,"computedContext",2),d([B("computedContext")],dt.prototype,"_handleTestElementChange",1),dt=d([M("test-next")],dt);var pt=class extends w{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>`}};pt.styles=E`
177
177
  :host {
178
- ${te};
178
+ ${ie};
179
179
  }
180
180
  :host([disabled]) {
181
- ${re};
181
+ ${oe};
182
182
  }
183
- `,d([b({type:Boolean,reflect:!0,attribute:"disabled"})],lt.prototype,"_internalDisabled",2),d([P({context:W,subscribe:!0})],lt.prototype,"computedContext",2),d([U("computedContext")],lt.prototype,"_handleTestElementChange",1),lt=d([k("test-prev")],lt);var Zr,As,ie=class extends C{constructor(){super(...arguments);_(this,Zr);this.label="view";this._handleViewOptionsChange=()=>{D(this,Zr,As).call(this)};this._viewOptions=ie.DEFAULT_VIEW_OPTIONS}connectedCallback(){super.connectedCallback(),D(this,Zr,As).call(this)}_switchView(e){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:e}))}render(){return x`
183
+ `,d([b({type:Boolean,reflect:!0,attribute:"disabled"})],pt.prototype,"_internalDisabled",2),d([$({context:W,subscribe:!0})],pt.prototype,"computedContext",2),d([B("computedContext")],pt.prototype,"_handleTestElementChange",1),pt=d([M("test-prev")],pt);var li,Gs,se=class extends w{constructor(){super(...arguments);_(this,li);this.label="view";this._handleViewOptionsChange=()=>{P(this,li,Gs).call(this)};this._viewOptions=se.DEFAULT_VIEW_OPTIONS}connectedCallback(){super.connectedCallback(),P(this,li,Gs).call(this)}_switchView(e){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:e}))}render(){return x`
184
184
  <label part="label" for="viewSelect">${this.label}</label>
185
185
  <select
186
186
  part="select"
@@ -189,29 +189,31 @@ Make sure to test your application with a production build as repeat registratio
189
189
  >
190
190
  ${this._viewOptions.map(e=>x`<option value="${e}" ?selected=${e===this.sessionContext.view}>${e}</option>`)}
191
191
  </select>
192
- `}};Zr=new WeakSet,As=function(){if(this.viewOptions){let e=this.viewOptions.split(",").map(t=>t.trim());this._viewOptions=e.filter(t=>ie.DEFAULT_VIEW_OPTIONS.includes(t))}else this._viewOptions=ie.DEFAULT_VIEW_OPTIONS},ie.DEFAULT_VIEW_OPTIONS=["author","candidate","proctor","scorer","testConstructor","tutor"],d([P({context:et,subscribe:!0})],ie.prototype,"sessionContext",2),d([b({type:String})],ie.prototype,"label",2),d([b({type:String,attribute:"view-options"})],ie.prototype,"viewOptions",2),d([U("viewOptions",{waitUntilFirstUpdate:!0})],ie.prototype,"_handleViewOptionsChange",2),d([R()],ie.prototype,"_viewOptions",2),ie=d([k("test-view")],ie);var rr=class extends C{constructor(){super();this.itemId=null;this.addEventListener("click",()=>this._requestItem(this.itemId))}_requestItem(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"item",id:e}}))}render(){return x` <slot></slot> `}};rr.styles=S`
192
+ `}};li=new WeakSet,Gs=function(){if(this.viewOptions){let e=this.viewOptions.split(",").map(t=>t.trim());this._viewOptions=e.filter(t=>se.DEFAULT_VIEW_OPTIONS.includes(t))}else this._viewOptions=se.DEFAULT_VIEW_OPTIONS},se.DEFAULT_VIEW_OPTIONS=["author","candidate","proctor","scorer","testConstructor","tutor"],d([$({context:it,subscribe:!0})],se.prototype,"sessionContext",2),d([b({type:String})],se.prototype,"label",2),d([b({type:String,attribute:"view-options"})],se.prototype,"viewOptions",2),d([B("viewOptions",{waitUntilFirstUpdate:!0})],se.prototype,"_handleViewOptionsChange",2),d([R()],se.prototype,"_viewOptions",2),se=d([M("test-view")],se);var pr=class extends w{constructor(){super();this.itemId=null;this.addEventListener("click",()=>this._requestItem(this.itemId))}_requestItem(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"item",id:e}}))}render(){return x` <slot></slot> `}};pr.styles=E`
193
193
  :host {
194
- ${te};
194
+ ${ie};
195
195
  }
196
196
  :host([disabled]) {
197
- ${re};
197
+ ${oe};
198
198
  }
199
- `,d([b({type:String,attribute:"item-id"})],rr.prototype,"itemId",2),rr=d([k("test-item-link")],rr);var ei=class extends C{constructor(){super(),this.addEventListener("click",()=>this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})))}render(){return x` <slot></slot> `}};ei.styles=S`
199
+ `,d([b({type:String,attribute:"item-id"})],pr.prototype,"itemId",2),pr=d([M("test-item-link")],pr);var ci=class extends w{constructor(){super(),this.addEventListener("click",()=>this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})))}render(){return x` <slot></slot> `}};ci.styles=E`
200
200
  :host {
201
- ${te};
201
+ ${ie};
202
202
  }
203
203
  :host([disabled]) {
204
- ${re};
204
+ ${oe};
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(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`
206
+ `,ci=d([M("test-end-attempt")],ci);var di,ur,pl,ul,qe=class extends w{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,di)}willUpdate(e){let t=this.computedContext?.testParts.flatMap(i=>i.sections.flatMap(o=>o.items)).find(i=>i.active);if(I(this,di)!==t&&(this.shown=!1,U(this,di,t)),t){let i=!!t?.variables?.some(s=>s.correctResponse),o=!!t?.variables?.some(s=>s.mapping?.mapEntries?.length>0||s.areaMapping?.areaMapEntries?.length>0);this.disabled=!i&&!o}else this.disabled=!0}render(){return x` <div @click="${P(this,ur,pl)}">${P(this,ur,ul).call(this)}</div> `}};di=new WeakMap,ur=new WeakSet,pl=function(){this.disabled||(this.shown=!this.shown,this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:this.shown,bubbles:!0})))},ul=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},qe.styles=E`
207
207
  :host {
208
- ${te};
208
+ ${ie};
209
209
  }
210
210
  :host([disabled]) {
211
- ${re};
211
+ ${oe};
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(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;
213
+ `,d([$({context:W,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([M("test-show-correct-response")],qe);var So=globalThis,vo=So.trustedTypes,ml=vo?vo.createPolicy("lit-html",{createHTML:n=>n}):void 0,Qs="$lit$",Ge=`lit$${Math.random().toFixed(9).slice(2)}$`,Ys="?"+Ge,wd=`<${Ys}>`,Ot=So.document===void 0?{createTreeWalker:()=>({})}:document,yo=()=>Ot.createComment(""),ui=n=>n===null||typeof n!="object"&&typeof n!="function",Js=Array.isArray,yl=n=>Js(n)||typeof n?.[Symbol.iterator]=="function",Xs=`[
214
+ \f\r]`,pi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,hl=/-->/g,fl=/>/g,Pt=RegExp(`>|${Xs}(?:([^\\s"'>=/]+)(${Xs}*=${Xs}*(?:[^
215
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),gl=/'/g,bl=/"/g,xl=/^(?:script|style|textarea|title)$/i,Ks=n=>(r,...e)=>({_$litType$:n,strings:r,values:e}),Hv=Ks(1),Fv=Ks(2),Uv=Ks(3),Vt=Symbol.for("lit-noChange"),X=Symbol.for("lit-nothing"),vl=new WeakMap,Dt=Ot.createTreeWalker(Ot,129);function ql(n,r){if(!Js(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return ml!==void 0?ml.createHTML(r):r}var Cl=(n,r)=>{let e=n.length-1,t=[],i,o=r===2?"<svg>":r===3?"<math>":"",s=pi;for(let a=0;a<e;a++){let l=n[a],c,p,u=-1,h=0;for(;h<l.length&&(s.lastIndex=h,p=s.exec(l),p!==null);)h=s.lastIndex,s===pi?p[1]==="!--"?s=hl:p[1]!==void 0?s=fl:p[2]!==void 0?(xl.test(p[2])&&(i=RegExp("</"+p[2],"g")),s=Pt):p[3]!==void 0&&(s=Pt):s===Pt?p[0]===">"?(s=i??pi,u=-1):p[1]===void 0?u=-2:(u=s.lastIndex-p[2].length,c=p[1],s=p[3]===void 0?Pt:p[3]==='"'?bl:gl):s===bl||s===gl?s=Pt:s===hl||s===fl?s=pi:(s=Pt,i=void 0);let y=s===Pt&&n[a+1].startsWith("/>")?" ":"";o+=s===pi?l+wd:u>=0?(t.push(c),l.slice(0,u)+Qs+l.slice(u)+Ge+y):l+Ge+(u===-2?a:y)}return[ql(n,o+(n[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},mi=class n{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let o=0,s=0,a=r.length-1,l=this.parts,[c,p]=Cl(r,e);if(this.el=n.createElement(c,t),Dt.currentNode=this.el.content,e===2||e===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(i=Dt.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let u of i.getAttributeNames())if(u.endsWith(Qs)){let h=p[s++],y=i.getAttribute(u).split(Ge),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:o,name:v[2],strings:y,ctor:v[1]==="."?qo:v[1]==="?"?Co:v[1]==="@"?wo:Ht}),i.removeAttribute(u)}else u.startsWith(Ge)&&(l.push({type:6,index:o}),i.removeAttribute(u));if(xl.test(i.tagName)){let u=i.textContent.split(Ge),h=u.length-1;if(h>0){i.textContent=vo?vo.emptyScript:"";for(let y=0;y<h;y++)i.append(u[y],yo()),Dt.nextNode(),l.push({type:2,index:++o});i.append(u[h],yo())}}}else if(i.nodeType===8)if(i.data===Ys)l.push({type:2,index:o});else{let u=-1;for(;(u=i.data.indexOf(Ge,u+1))!==-1;)l.push({type:7,index:o}),u+=Ge.length-1}o++}}static createElement(r,e){let t=Ot.createElement("template");return t.innerHTML=r,t}};function Nt(n,r,e=n,t){if(r===Vt)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,o=ui(r)?void 0:r._$litDirective$;return i?.constructor!==o&&(i?._$AO?.(!1),o===void 0?i=void 0:(i=new o(n),i._$AT(n,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=Nt(n,i._$AS(n,r.values),i,t)),r}var xo=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??Ot).importNode(e,!0);Dt.currentNode=i;let o=Dt.nextNode(),s=0,a=0,l=t[0];for(;l!==void 0;){if(s===l.index){let c;l.type===2?c=new hi(o,o.nextSibling,this,r):l.type===1?c=new l.ctor(o,l.name,l.strings,this,r):l.type===6&&(c=new Eo(o,this,r)),this._$AV.push(c),l=t[++a]}s!==l?.index&&(o=Dt.nextNode(),s++)}return Dt.currentNode=Ot,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++}},hi=class n{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=X,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=Nt(this,r,e),ui(r)?r===X||r==null||r===""?(this._$AH!==X&&this._$AR(),this._$AH=X):r!==this._$AH&&r!==Vt&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):yl(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!==X&&ui(this._$AH)?this._$AA.nextSibling.data=r:this.T(Ot.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=mi.createElement(ql(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let o=new xo(i,this),s=o.u(this.options);o.p(e),this.T(s),this._$AH=o}}_$AC(r){let e=vl.get(r.strings);return e===void 0&&vl.set(r.strings,e=new mi(r)),e}k(r){Js(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 n(this.O(yo()),this.O(yo()),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))}},Ht=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,o){this.type=1,this._$AH=X,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=X}_$AI(r,e=this,t,i){let o=this.strings,s=!1;if(o===void 0)r=Nt(this,r,e,0),s=!ui(r)||r!==this._$AH&&r!==Vt,s&&(this._$AH=r);else{let a=r,l,c;for(r=o[0],l=0;l<o.length-1;l++)c=Nt(this,a[t+l],e,l),c===Vt&&(c=this._$AH[l]),s||=!ui(c)||c!==this._$AH[l],c===X?r=X:r!==X&&(r+=(c??"")+o[l+1]),this._$AH[l]=c}s&&!i&&this.j(r)}j(r){r===X?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},qo=class extends Ht{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===X?void 0:r}},Co=class extends Ht{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==X)}},wo=class extends Ht{constructor(r,e,t,i,o){super(r,e,t,i,o),this.type=5}_$AI(r,e=this){if((r=Nt(this,r,e,0)??X)===Vt)return;let t=this._$AH,i=r===X&&t!==X||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,o=r!==X&&(t===X||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)}},Eo=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){Nt(this,r)}},te={M:Qs,P:Ge,A:Ys,C:1,L:Cl,R:xo,D:yl,V:Nt,I:hi,H:Ht,N:Co,U:wo,B:qo,F:Eo},Ed=So.litHtmlPolyfillSupport;Ed?.(mi,hi),(So.litHtmlVersions??=[]).push("3.3.1");var Ao=["this"],wl=["+","-","!"],El=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],Zs={"!":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},To=13;var Sd=["==","!=","<=",">=","||","&&","??","|>"],Ad=["===","!=="],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 De=(n,r,e=0)=>({kind:n,value:r,precedence:e}),Td=n=>n===9||n===10||n===13||n===32,Sl=n=>n===95||n===36||(n&=-33,65<=n&&n<=90),Id=n=>Sl(n)||fi(n),Md=n=>Ao.indexOf(n)!==-1,kd=n=>n===34||n===39,fi=n=>48<=n&&n<=57,Rd=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,_d=n=>n===40||n===41||n===91||n===93||n===123||n===125,Ld=n=>n.replace(/\\(.)/g,(r,e)=>{switch(e){case"n":return`
216
+ `;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),Io=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#o()}nextToken(){for(;Td(this.#i);)this.#o(!0);if(kd(this.#i))return this.#a();if(Sl(this.#i))return this.#c();if(fi(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(Rd(this.#i))return this.#b();if(_d(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=De(O.STRING,Ld(this.#s()));return this.#o(),t}#c(){do this.#o();while(Id(this.#i));let r=this.#s(),e=Md(r)?O.KEYWORD:O.IDENTIFIER;return De(e,r)}#d(){do this.#o();while(fi(this.#i));return this.#i===46?this.#l():De(O.INTEGER,this.#s())}#l(){return this.#o(),fi(this.#i)?this.#g():(this.#n(),De(O.DOT,".",To))}#u(){return this.#o(!0),De(O.COMMA,",")}#h(){return this.#o(!0),De(O.COLON,":")}#g(){do this.#o();while(fi(this.#i));return De(O.DECIMAL,this.#s())}#b(){this.#o();let r=this.#s(2);if(Ad.indexOf(r)!==-1)this.#o(),this.#o();else{if(r=this.#s(1),r==="=>")return this.#o(),De(O.ARROW,r);Sd.indexOf(r)!==-1&&this.#o()}return r=this.#s(),De(O.OPERATOR,r,Zs[r])}#f(){let r=String.fromCharCode(this.#i),e=De(O.GROUPER,r,Zs[r]);return this.#o(!0),e}};var en=(n,r)=>new gi(n,r).parse(),gi=class{#e;#t;#r;#i;#o;constructor(r,e){this.#t=new Io(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(El.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.#C(r)}if(wl.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#h(),To);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 Ao.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.#C();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}#C(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#o}`));return this.#s(),e}};var{hasOwn:Al,fromEntries:$d}=Object,Pd={"+":(n,r)=>n+r,"-":(n,r)=>n-r,"*":(n,r)=>n*r,"/":(n,r)=>n/r,"%":(n,r)=>n%r,"==":(n,r)=>n==r,"!=":(n,r)=>n!=r,"===":(n,r)=>n===r,"!==":(n,r)=>n!==r,">":(n,r)=>n>r,">=":(n,r)=>n>=r,"<":(n,r)=>n<r,"<=":(n,r)=>n<=r,"||":(n,r)=>n||r,"&&":(n,r)=>n&&r,"??":(n,r)=>n??r,"|":(n,r)=>r(n),"|>":(n,r)=>r(n)},Dd={"+":n=>n,"-":n=>-n,"!":n=>!n},Mo=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=Dd[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=Pd[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 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 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),s=this.method?o:i?.this??i,a=this.method?o?.[e]:o,c=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(s,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(...s){let a=$d(i.map((c,p)=>[c,s[p]])),l=new Proxy(t??{},{set(c,p,u){return Al(a,p)&&(a[p]=u),c[p]=u},get(c,p){return Al(a,p)?a[p]:c[p]}});return o.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var tn=null,Tl={boundAttributeSuffix:te.M,marker:te.P,markerMatch:te.A,HTML_RESULT:te.C,getTemplateHtml:te.L,overrideDirectiveResolve:(n,r)=>class extends n{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(n,r)=>{if(n.prototype._$AS.name!==r.name){tn??=n.prototype._$AS.name;for(let e=n.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(tn))return void(e[tn]=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(n,r){n._$litDirective$=r},getAttributePartCommittedValue:(n,r,e)=>{let t=Vt;return n.j=i=>t=i,n._$AI(r,n,e),t},connectedDisconnectable:n=>({...n,_$AU:!0}),resolveDirective:te.V,AttributePart:te.H,PropertyPart:te.B,BooleanAttributePart:te.N,EventPart:te.U,ElementPart:te.F,TemplateInstance:te.R,isIterable:te.D,ChildPart:te.I};var{AttributePart:Od,PropertyPart:Vd,BooleanAttributePart:Nd,EventPart:Hd}=Tl,on=new Mo,rn=new Map,Il=n=>n.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),ko=(n,r)=>{let e=rn.get(n);if(e===void 0){if(rn.has(n))return;if(n=n.trim(),n.startsWith("{{")&&n.endsWith("}}")){let t=n.substring(2,n.length-2).trim();e=new gi(t,on).parse(),rn.set(n,e)}}return e?.evaluate(r)},Fd=(n,r,e,t)=>{let i=n.getAttribute("if");if(i!==null&&ko(i,r))return Ro(n,r,e,t)},Ml=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,kl=n=>/(?:\\{{)|(?:\\}})/g.test(n),bi=n=>n.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),Ud=(n,r,e,t)=>{let i=n.getAttribute("repeat");if(i!==null){let o=ko(i,r);if(!o[Symbol.iterator])return X;let s=vi(n),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 u=[];for(let y of s.parts){let v=y.update(p,e,t);y.type===1?u.push(...v):u.push(v)}let h={_$litType$:s,values:u};l.push(h)}return l}},_l={if:Fd,repeat:Ud},Oe=(n,r=_l,e={},t)=>{let o=vi(n).renderers;if(t){let a=vi(t).renderers,l=o.super;l!==void 0?e={...o,...e,super:(c,p,u)=>(u={...a,...u,super:(h,y,v)=>Ro(t,h,y,v)},l(c,p,u))}:(e={...a,...o,...e},n=t)}else e={...o,...e};return s=>Ro(n,s,r,e)};var Ro=(n,r,e=_l,t={})=>{let i=vi(n),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}},Rl=new Map,vi=n=>{let r=Rl.get(n);return r===void 0&&Rl.set(n,r=Bd(n)),r},Bd=n=>{let r={h:void 0,el:n.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 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 u;if(p!==null){let h=p.trim(),y=h.startsWith("{{")&&h.endsWith("}}");u=(v,C,f)=>{let m=s.getAttribute("data"),g=m===null?void 0:ko(m,v);return(y?ko(h,v):f[p])?.(g,C,f)}}else l!==null?u=(h,y,v)=>{let C=y[l];return C?.(s,h,y,v)}:(c==="super"?r.renderers.super=(h,y,v)=>{let C=v.super,f=vi(s);return v={...v,...f.renderers},C(h,y,v)}:r.renderers[c]=(h,y,v)=>Ro(s,h,y,v),u=(h,y,v)=>{let C=v[c];return C?.(h,y,v)});r.parts.push({type:2,index:i,update:u});continue}}let a=s.getAttributeNames();for(let l of a){let c=s.getAttribute(l),p=c.split(Ml);if(p.length===1){kl(c)&&s.setAttribute(l,bi(c));continue}s.removeAttribute(l);let u=l,h=Od,y=l[0];y==="."?(u=Il(l.substring(1)),h=Vd):y==="?"?(u=l.substring(1),h=Nd):y==="@"&&(u=Il(l.substring(1)),h=Hd);let v=[bi(p[0])],C=[];for(let f=1;f<p.length;f+=2){let m=p[f];C.push(en(m,on)),v.push(bi(p[f+1]))}r.parts.push({type:1,index:i,name:u,strings:v,ctor:h,update:(f,m,g)=>C.map(q=>q.evaluate(f))})}}else if(t.nodeType===Node.TEXT_NODE){let s=t,a=s.textContent,l=a.split(Ml);l.length>1?s.textContent=bi(l[0]):kl(a)&&(s.textContent=bi(a));for(let c=1;c<l.length;c+=2){let p=l[c],u=en(p,on);r.parts.push({type:2,index:++i,update:(y,v)=>u.evaluate(y)});let h=new Text(l[c+1].replace("\\{{","{{"));s.parentNode.insertBefore(h,s.nextSibling),s.parentNode.insertBefore(document.createComment(""),s.nextSibling),s=h,e.currentNode=h}}for(let s of o)s.remove();return r};var xi,yi=class extends w{constructor(){super();_(this,xi);U(this,xi,this.attachInternals()),I(this,xi).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Oe(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}))} `}};xi=new WeakMap,d([$({context:W,subscribe:!0})],yi.prototype,"computedContext",2),yi=d([M("test-paging-buttons-stamp")],yi);var _o=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},Lo=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 Ll=n=>!_a(n)&&typeof n.then=="function",$l=1073741823,sn=class extends nt{constructor(){super(...arguments),this._$Cwt=$l,this._$Cbt=[],this._$CK=new _o(this),this._$CX=new Lo}render(...r){return r.find(e=>!Ll(e))??Z}update(r,e){let t=this._$Cbt,i=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(!Ll(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=$l,i=0,Promise.resolve(l).then(async c=>{for(;s.get();)await s.get();let p=o.deref();if(p!==void 0){let u=p._$Cbt.indexOf(l);u>-1&&u<p._$Cwt&&(p._$Cwt=u,p.setValue(c))}}))}return Z}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},$o=ce(sn);var Po=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
215
217
 
216
218
  /* https://www.imsglobal.org/sites/default/files/spec/qti/v3/guide/img/qti3p0.css */
217
219
 
@@ -3784,11 +3786,11 @@ div.full-correct-response-inline {
3784
3786
  margin-right: var(--qti-padding-horizontal);
3785
3787
  padding: 0.2rem;
3786
3788
  }
3787
- `;var li,or,Ja,Ya,je=class extends C{constructor(){super(...arguments);_(this,or);this.testURL=null;this.testDoc=null;this.testXML=null;_(this,li,null)}async handleTestURLChange(){if(this.testURL)try{let e=await jt().load(this.testURL),t=this.closest("qti-test");if(t?.postLoadTestTransformCallback){let o=e.htmlDoc().querySelector("qti-assessment-test");o&&(e=await t.postLoadTestTransformCallback(e,o))}this.testDoc=e.htmlDoc()}catch(e){console.error("Error loading or parsing XML:",e)}}handleTestXMLChange(){if(this.testXML)try{this.testDoc=jt().parse(this.testXML).htmlDoc()}catch(e){console.error("Error parsing XML:",e)}}async connectedCallback(){super.connectedCallback(),D(this,or,Ja).call(this),D(this,or,Ya).call(this),this.testURL&&this.handleTestURLChange(),this.testXML&&this.handleTestXMLChange()}render(){return x`
3788
- ${I(this,li)}
3789
+ `;var qi,mr,Pl,Dl,Xe=class extends w{constructor(){super(...arguments);_(this,mr);this.testURL=null;this.testDoc=null;this.testXML=null;_(this,qi,null)}async handleTestURLChange(){if(this.testURL)try{let e=await er().load(this.testURL),t=this.closest("qti-test");if(t?.postLoadTestTransformCallback){let o=e.htmlDoc().querySelector("qti-assessment-test");o&&(e=await t.postLoadTestTransformCallback(e,o))}this.testDoc=e.htmlDoc()}catch(e){console.error("Error loading or parsing XML:",e)}}handleTestXMLChange(){if(this.testXML)try{this.testDoc=er().parse(this.testXML).htmlDoc()}catch(e){console.error("Error parsing XML:",e)}}async connectedCallback(){super.connectedCallback(),P(this,mr,Pl).call(this),P(this,mr,Dl).call(this),this.testURL&&this.handleTestURLChange(),this.testXML&&this.handleTestXMLChange()}render(){return x`
3790
+ ${I(this,qi)}
3789
3791
  <slot></slot>
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 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
+ ${$o(this.testDoc,x`<span>Loading...</span>`)}
3793
+ `}};qi=new WeakMap,mr=new WeakSet,Pl=function(){let e=this.querySelector("template");U(this,qi,e?e.content:x``)},Dl=function(){let e=new CSSStyleSheet;e.replaceSync(Po),this.shadowRoot.adoptedStyleSheets=[e]},d([b({type:String,attribute:"test-url"})],Xe.prototype,"testURL",2),d([R()],Xe.prototype,"testDoc",2),d([R()],Xe.prototype,"testXML",2),d([B("testURL",{waitUntilFirstUpdate:!0})],Xe.prototype,"handleTestURLChange",1),d([B("testXML",{waitUntilFirstUpdate:!0})],Xe.prototype,"handleTestXMLChange",1),Xe=d([M("test-container")],Xe);var hr=class extends w{render(){let r=this.computedContext?.testParts.flatMap(o=>o.sections.flatMap(s=>s.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,s)=>x`
3792
3794
  <h3>${s}</h3>
3793
3795
  <table>
3794
3796
  <thead>
@@ -3801,7 +3803,7 @@ div.full-correct-response-inline {
3801
3803
  </tr>
3802
3804
  </thead>
3803
3805
  <tbody>
3804
- ${o.map(a=>{let l=a.correctResponse?Array.isArray(a.correctResponse)?a.correctResponse.join(", "):a.correctResponse:"",c=a.mapping?.mapEntries?.map(h=>`${h.mapKey}=${h.mappedValue}pt`).join(", ")||"",p=a.areaMapping?.areaMapEntries?.map(h=>`${h.shape}(${h.coords})=${h.mappedValue}pt`).join(", ")||"";return x`
3806
+ ${o.map(a=>{let l=a.correctResponse?Array.isArray(a.correctResponse)?a.correctResponse.join(", "):a.correctResponse:"",c=a.mapping?.mapEntries?.map(u=>`${u.mapKey}=${u.mappedValue}pt`).join(", ")||"",p=a.areaMapping?.areaMapEntries?.map(u=>`${u.shape}(${u.coords})=${u.mappedValue}pt`).join(", ")||"";return x`
3805
3807
  <tr>
3806
3808
  <td>${a.identifier}</td>
3807
3809
  <td>${Array.isArray(a.value)?a.value.join(", "):a.value}</td>
@@ -3813,8 +3815,8 @@ div.full-correct-response-inline {
3813
3815
  </tbody>
3814
3816
  </table>
3815
3817
  `;return x`
3816
- ${r(e,"Response Variables")} ${r(t,"Outcome Variables")}
3817
- `}};sr.styles=S`
3818
+ ${i(e,"Response Variables")} ${i(t,"Outcome Variables")}
3819
+ `}};hr.styles=E`
3818
3820
  table {
3819
3821
  width: 100%;
3820
3822
  border-collapse: collapse;
@@ -3835,67 +3837,67 @@ div.full-correct-response-inline {
3835
3837
  margin-top: 20px;
3836
3838
  font-size: 16px;
3837
3839
  }
3838
- `,d([P({context:W,subscribe:!0})],sr.prototype,"computedContext",2),sr=d([k("test-print-item-variables")],sr);var di,ci=class extends C{constructor(){super();_(this,di);B(this,di,this.attachInternals()),I(this,di).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);return x` ${e.map(t=>this.myTemplate({item:t}))} `}};di=new WeakMap,d([P({context:W,subscribe:!0})],ci.prototype,"computedContext",2),ci=d([k("test-section-buttons-stamp")],ci);var fo,Ka,nr=class extends C{constructor(){super();_(this,fo);this.sectionId=null;this.addEventListener("click",()=>D(this,fo,Ka).call(this,this.sectionId))}render(){return x` <slot></slot> `}};fo=new WeakSet,Ka=function(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"section",id:e}}))},nr.styles=S`
3840
+ `,d([$({context:W,subscribe:!0})],hr.prototype,"computedContext",2),hr=d([M("test-print-item-variables")],hr);var wi,Ci=class extends w{constructor(){super();_(this,wi);U(this,wi,this.attachInternals()),I(this,wi).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Oe(e)}render(){if(!this.computedContext)return x``;let e=this.computedContext.testParts.flatMap(t=>t.sections);return x` ${e.map(t=>this.myTemplate({item:t}))} `}};wi=new WeakMap,d([$({context:W,subscribe:!0})],Ci.prototype,"computedContext",2),Ci=d([M("test-section-buttons-stamp")],Ci);var Do,Ol,fr=class extends w{constructor(){super();_(this,Do);this.sectionId=null;this.addEventListener("click",()=>P(this,Do,Ol).call(this,this.sectionId))}render(){return x` <slot></slot> `}};Do=new WeakSet,Ol=function(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"section",id:e}}))},fr.styles=E`
3839
3841
  :host {
3840
- ${te};
3842
+ ${ie};
3841
3843
  }
3842
3844
  :host([disabled]) {
3843
- ${re};
3845
+ ${oe};
3844
3846
  }
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
+ `,d([b({type:String,attribute:"section-id"})],fr.prototype,"sectionId",2),fr=d([M("test-section-link")],fr);var Ei=class extends w{render(){return x` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};d([R(),$({context:W,subscribe:!0})],Ei.prototype,"computedContext",2),Ei=d([M("test-print-context")],Ei);var Ft=class extends w{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=Oe(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(h=>h.active),i=t?.sections.find(h=>h.active),o=i?.items.find(h=>h.active),{variables:s,...a}=o||{};if(!t||!i||!o)return;let l={...t,items:t.sections.flatMap(h=>h.items.map(({variables:y,...v})=>v)),sections:t.sections.map(h=>({...h,items:h.items.map(({variables:y,...v})=>v)}))},c={...i,items:i.items.map(({variables:h,...y})=>y)},{testParts:p,...u}=this.computedContext;this.stampContext={view:this.computedContext.view,activeItem:a,activeSection:c,activeTestpart:l,test:u},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}
3848
+ ${this.myTemplate?this.myTemplate(this.stampContext):N}`}};d([b({type:Boolean,reflect:!0})],Ft.prototype,"debug",2),d([R(),$({context:W,subscribe:!0})],Ft.prototype,"computedContext",2),d([R()],Ft.prototype,"stampContext",2),Ft=d([M("test-stamp")],Ft);var Oo,Vl,Ut=class extends w{constructor(){super();_(this,Oo);this.view="";this.disabled=!1;this.myTemplate=null;this.addEventListener("click",e=>{let t=e.target,i=parseFloat(t.value);t.tagName==="INPUT"&&P(this,Oo,Vl).call(this,i)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Oe(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,s=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:s}):N}`}};Oo=new WeakSet,Vl=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"})],Ut.prototype,"view",2),d([b({type:Boolean})],Ut.prototype,"disabled",2),d([$({context:W,subscribe:!0})],Ut.prototype,"computedContext",2),Ut=d([M("test-scoring-buttons")],Ut);var Si=class extends w{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let r=this.querySelector("template");if(!r){this.myTemplate=null;return}this.myTemplate=Oe(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([$({context:it,subscribe:!0})],Si.prototype,"sessionContext",2),Si=d([M("test-view-toggle")],Si);var gr=class extends w{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),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([$({context:W,subscribe:!0})],gr.prototype,"computedContext",2),d([b({type:String,attribute:"view"})],gr.prototype,"view",2),gr=d([M("test-scoring-feedback")],gr);var Ai=class extends w{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> `}};Ai.styles=E`
3847
3849
  :host {
3848
- ${te};
3850
+ ${ie};
3849
3851
  }
3850
3852
  :host([disabled]) {
3851
- ${re};
3853
+ ${oe};
3852
3854
  }
3853
- `,mi=d([k("test-check-item")],mi);var hi,lr,el,tl,We=class extends C{constructor(){super(...arguments);_(this,lr);this.itemURL=null;this.itemDoc=null;this.itemXML=null;_(this,hi,null)}async handleItemURLChange(){if(this.itemURL)try{let e=await Ae().load(this.itemURL);this.itemDoc=e.htmlDoc()}catch(e){console.error("Error loading or parsing XML:",e)}}handleItemXMLChange(){if(this.itemXML)try{this.itemDoc=Ae().parse(this.itemXML).htmlDoc()}catch(e){console.error("Error parsing XML:",e)}}async connectedCallback(){super.connectedCallback(),D(this,lr,el).call(this),D(this,lr,tl).call(this),this.itemURL&&this.handleItemURLChange(),this.itemXML&&this.handleItemXMLChange()}render(){return x`
3854
- ${I(this,hi)}
3855
+ `,Ai=d([M("test-check-item")],Ai);var Ti,br,Nl,Hl,Qe=class extends w{constructor(){super(...arguments);_(this,br);this.itemURL=null;this.itemDoc=null;this.itemXML=null;_(this,Ti,null)}async handleItemURLChange(){if(this.itemURL)try{let e=await Me().load(this.itemURL);this.itemDoc=e.htmlDoc()}catch(e){console.error("Error loading or parsing XML:",e)}}handleItemXMLChange(){if(this.itemXML)try{this.itemDoc=Me().parse(this.itemXML).htmlDoc()}catch(e){console.error("Error parsing XML:",e)}}async connectedCallback(){super.connectedCallback(),P(this,br,Nl).call(this),P(this,br,Hl).call(this),this.itemURL&&this.handleItemURLChange(),this.itemXML&&this.handleItemXMLChange()}render(){return x`
3856
+ ${I(this,Ti)}
3855
3857
  <slot></slot>
3856
- ${mo(this.itemDoc,x`<span>Loading...</span>`)}
3857
- `}};hi=new WeakMap,lr=new WeakSet,el=function(){let e=this.querySelector("template");B(this,hi,e?e.content:x``)},tl=function(){let e=new CSSStyleSheet;e.replaceSync(ho),this.shadowRoot.adoptedStyleSheets=[e]},d([b({type:String,attribute:"item-url"})],We.prototype,"itemURL",2),d([R()],We.prototype,"itemDoc",2),d([R()],We.prototype,"itemXML",2),d([U("itemURL",{waitUntilFirstUpdate:!0})],We.prototype,"handleItemURLChange",1),d([U("itemXML",{waitUntilFirstUpdate:!0})],We.prototype,"handleItemXMLChange",1),We=d([k("item-container")],We);var bo,rl,Pt=class extends C{constructor(){super(...arguments);_(this,bo);this.label="Correct response mode";this._options={internal:"Internal",full:"Full (copy)"}}render(){return x`
3858
+ ${$o(this.itemDoc,x`<span>Loading...</span>`)}
3859
+ `}};Ti=new WeakMap,br=new WeakSet,Nl=function(){let e=this.querySelector("template");U(this,Ti,e?e.content:x``)},Hl=function(){let e=new CSSStyleSheet;e.replaceSync(Po),this.shadowRoot.adoptedStyleSheets=[e]},d([b({type:String,attribute:"item-url"})],Qe.prototype,"itemURL",2),d([R()],Qe.prototype,"itemDoc",2),d([R()],Qe.prototype,"itemXML",2),d([B("itemURL",{waitUntilFirstUpdate:!0})],Qe.prototype,"handleItemURLChange",1),d([B("itemXML",{waitUntilFirstUpdate:!0})],Qe.prototype,"handleItemXMLChange",1),Qe=d([M("item-container")],Qe);var Vo,Fl,Bt=class extends w{constructor(){super(...arguments);_(this,Vo);this.label="Correct response mode";this._options={internal:"Internal",full:"Full (copy)"}}render(){return x`
3858
3860
  <label part="label" for="modeSelect">${this.label}</label>
3859
3861
  <select
3860
3862
  part="select"
3861
3863
  id="modeSelect"
3862
- @change=${e=>{let t=e.target;D(this,bo,rl).call(this,t.value)}}
3864
+ @change=${e=>{let t=e.target;P(this,Vo,Fl).call(this,t.value)}}
3863
3865
  >
3864
3866
  ${Object.keys(this._options).map(e=>x`<option value="${e}" ?selected=${e===this.itemContext?.correctResponseMode}>
3865
3867
  ${this._options[e]}
3866
3868
  </option>`)}
3867
3869
  </select>
3868
- `}};bo=new WeakSet,rl=function(e){this.dispatchEvent(new CustomEvent("item-switch-correct-response-mode",{detail:e,bubbles:!0}))},d([P({context:he,subscribe:!0})],Pt.prototype,"itemContext",2),d([b({type:String})],Pt.prototype,"label",2),d([R()],Pt.prototype,"_options",2),Pt=d([k("item-correct-response-mode")],Pt);var il=S`
3870
+ `}};Vo=new WeakSet,Fl=function(e){this.dispatchEvent(new CustomEvent("item-switch-correct-response-mode",{detail:e,bubbles:!0}))},d([$({context:ge,subscribe:!0})],Bt.prototype,"itemContext",2),d([b({type:String})],Bt.prototype,"label",2),d([R()],Bt.prototype,"_options",2),Bt=d([M("item-correct-response-mode")],Bt);var Ul=E`
3869
3871
  display: inline-flex;
3870
3872
  align-items: center;
3871
3873
  cursor: pointer;
3872
3874
  padding: 0.5rem 1rem;
3873
3875
  border-radius: 0.25rem;
3874
3876
  user-select: none;
3875
- `,vo=S`
3877
+ `,No=E`
3876
3878
  background-color: lightgray;
3877
- ${il};
3878
- `,yo=S`
3879
+ ${Ul};
3880
+ `,Ho=E`
3879
3881
  cursor: not-allowed;
3880
3882
  opacity: 0.8;
3881
- `,fx=S`
3882
- ${il};
3883
+ `,Eq=E`
3884
+ ${Ul};
3883
3885
  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(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`
3886
+ `;var vr,Ii,yr,zl,jl,Ce=class extends w{constructor(){super();_(this,yr);this.shown=!1;this.disabled=!1;this.showCandidateCorrectionText="Show candidate correction";this.hideCandidateCorrectionText="Hide candidate correction";this.noCorrectResponseText="No correct response specified";_(this,vr,!1);_(this,Ii,"")}updated(){if(!I(this,vr)||I(this,Ii)!==this.computedContext?.identifier){U(this,Ii,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);U(this,vr,e||t)}this.disabled=!I(this,vr)}render(){return x` <div @click="${P(this,yr,zl)}">${P(this,yr,jl).call(this)}</div> `}};vr=new WeakMap,Ii=new WeakMap,yr=new WeakSet,zl=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-candidate-correction",{detail:!this.shown,bubbles:!0}))},jl=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCandidateCorrectionText:this.showCandidateCorrectionText},Ce.styles=E`
3885
3887
  :host {
3886
- ${vo};
3888
+ ${No};
3887
3889
  }
3888
3890
  :host([disabled]) {
3889
- ${yo};
3891
+ ${Ho};
3890
3892
  }
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`
3893
+ `,d([$({context:rt,subscribe:!0})],Ce.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],Ce.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],Ce.prototype,"disabled",2),d([b({type:String})],Ce.prototype,"showCandidateCorrectionText",2),d([b({type:String})],Ce.prototype,"hideCandidateCorrectionText",2),d([b({type:String})],Ce.prototype,"noCorrectResponseText",2),Ce=d([M("item-show-candidate-correction")],Ce);var xr,Mi,qr,Wl,Gl,we=class extends w{constructor(){super(...arguments);_(this,qr);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";_(this,xr,!1);_(this,Mi,"")}updated(){if(!I(this,xr)||I(this,Mi)!==this.computedContext?.identifier){U(this,Mi,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);U(this,xr,e||t)}this.disabled=!I(this,xr)}render(){return x` <div @click="${P(this,qr,Wl)}">${P(this,qr,Gl).call(this)}</div> `}};xr=new WeakMap,Mi=new WeakMap,qr=new WeakSet,Wl=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-correct-response",{detail:!this.shown,bubbles:!0}))},Gl=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},we.styles=E`
3892
3894
  :host {
3893
- ${vo};
3895
+ ${No};
3894
3896
  }
3895
3897
  :host([disabled]) {
3896
- ${yo};
3898
+ ${Ho};
3897
3899
  }
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`
3900
+ `,d([$({context:rt,subscribe:!0})],we.prototype,"computedContext",2),d([b({type:Boolean,reflect:!0})],we.prototype,"shown",2),d([b({type:Boolean,reflect:!0})],we.prototype,"disabled",2),d([b({type:String})],we.prototype,"showCorrectText",2),d([b({type:String})],we.prototype,"hideCorrectText",2),d([b({type:String})],we.prototype,"noCorrectResponseText",2),we=d([M("item-show-correct-response")],we);var Cr=class extends w{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,s)=>x`
3899
3901
  <h3>${s}</h3>
3900
3902
  <table>
3901
3903
  <thead>
@@ -3908,7 +3910,7 @@ div.full-correct-response-inline {
3908
3910
  </tr>
3909
3911
  </thead>
3910
3912
  <tbody>
3911
- ${o.map(a=>{let l=a.correctResponse?Array.isArray(a.correctResponse)?a.correctResponse.join(", "):a.correctResponse:"",c=a.mapping?.mapEntries?.map(h=>`${h.mapKey}=${h.mappedValue}pt`).join(", ")||"",p=a.areaMapping?.areaMapEntries?.map(h=>`${h.shape}(${h.coords})=${h.mappedValue}pt`).join(", ")||"";return x`
3913
+ ${o.map(a=>{let l=a.correctResponse?Array.isArray(a.correctResponse)?a.correctResponse.join(", "):a.correctResponse:"",c=a.mapping?.mapEntries?.map(u=>`${u.mapKey}=${u.mappedValue}pt`).join(", ")||"",p=a.areaMapping?.areaMapEntries?.map(u=>`${u.shape}(${u.coords})=${u.mappedValue}pt`).join(", ")||"";return x`
3912
3914
  <tr>
3913
3915
  <td>${a.identifier}</td>
3914
3916
  <td>${Array.isArray(a.value)?a.value.join(", "):a.value}</td>
@@ -3920,8 +3922,8 @@ div.full-correct-response-inline {
3920
3922
  </tbody>
3921
3923
  </table>
3922
3924
  `;return x`
3923
- ${r(e,"Response Variables")} ${r(t,"Outcome Variables")}
3924
- `}};mr.styles=S`
3925
+ ${i(e,"Response Variables")} ${i(t,"Outcome Variables")}
3926
+ `}};Cr.styles=E`
3925
3927
  table {
3926
3928
  width: 100%;
3927
3929
  border-collapse: collapse;
@@ -3942,40 +3944,40 @@ div.full-correct-response-inline {
3942
3944
  margin-top: 20px;
3943
3945
  font-size: 16px;
3944
3946
  }
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
- :host {
3947
- display: flex;
3948
- user-select: none;
3949
- position: absolute;
3950
- }
3951
- `}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,composed:!0,cancelable:!1}))}render(){return x` <slot name="drags"></slot> `}};customElements.define("qti-associable-hotspot",Co);var yi=class extends C{constructor(){super(...arguments);this.tabindex=0}static{this.styles=S`
3952
- :host {
3953
- display: flex;
3954
- user-select: none;
3955
- }
3956
- `}render(){return x` <slot name="drags"></slot>`}};d([b({type:Number,reflect:!0})],yi.prototype,"tabindex",2);customElements.define("qti-gap",yi);var xi=class extends C{constructor(){super(...arguments);this.tabindex=0}static{this.styles=S`
3957
- :host {
3958
- display: flex;
3959
- user-select: none;
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: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
- :host {
3963
- display: inline-flex;
3964
- user-select: none;
3965
- }
3966
- `}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","drags")}render(){return x`<slot></slot>`}};d([b({type:Number,reflect:!0})],qi.prototype,"tabindex",2);customElements.define("qti-gap-text",qi);var fr=class extends ve(C,"qti-hotspot-choice"){static{this.styles=S`
3967
- :host {
3968
- display: flex;
3969
- user-select: none;
3970
- position: absolute;
3971
- }
3972
- `}};d([b({attribute:"aria-ordervalue",type:Number,reflect:!0})],fr.prototype,"order",2),d([b({attribute:"aria-ordercorrectvalue",type:Number,reflect:!0})],fr.prototype,"orderCorrect",2);customElements.define("qti-hotspot-choice",fr);var Eo=class extends ve(C,"qti-hottext"){static{this.styles=S`
3973
- :host {
3974
- display: flex;
3975
- user-select: none;
3976
- }
3977
- `}render(){return x`<div part="ch"><div part="cha"></div></div>
3978
- <slot></slot> `}};customElements.define("qti-hottext",Eo);var Jc=S`
3947
+ `,d([$({context:rt,subscribe:!0})],Cr.prototype,"computedContext",2),Cr=d([M("item-print-variables")],Cr);var ne,ki,Ri,Fo,Uo,Bo,ee,Xl,Ql,nn,Yl,Jl,an,wr=class extends w{constructor(){super();_(this,ee);_(this,ne);this.configContext={};_(this,ki,P(this,ee,Xl).bind(this));_(this,Ri,P(this,ee,Ql).bind(this));_(this,Fo,P(this,ee,nn).bind(this));_(this,Uo,P(this,ee,Yl).bind(this));_(this,Bo,P(this,ee,Jl).bind(this));this.addEventListener("qti-item-context-updated",I(this,ki)),this.addEventListener("qti-assessment-item-connected",I(this,Ri)),this.addEventListener("item-show-correct-response",I(this,Fo)),this.addEventListener("item-show-candidate-correction",I(this,Uo)),this.addEventListener("item-switch-correct-response-mode",I(this,Bo))}render(){return x`<slot></slot>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-item-context-changed",I(this,ki)),this.removeEventListener("qti-assessment-item-connected",I(this,Ri))}};ne=new WeakMap,ki=new WeakMap,Ri=new WeakMap,Fo=new WeakMap,Uo=new WeakMap,Bo=new WeakMap,ee=new WeakSet,Xl=function(e){P(this,ee,an).call(this,e.detail.itemContext.identifier,e.detail?.itemContext?.variables||[])},Ql=function(e){let t=e.detail._context.variables;U(this,ne,e.detail),this.computedContext=this.computedContext?.identifier===I(this,ne).identifier?{...this.computedContext,title:I(this,ne).title}:{identifier:I(this,ne).identifier,title:I(this,ne).title,adaptive:I(this,ne).getAttribute("adaptive")?.toLowerCase()==="true"||!1,variables:t,correctResponseMode:"internal"},P(this,ee,an).call(this,I(this,ne).identifier,t||[])},nn=function(e){I(this,ne)&&I(this,ne).showCorrectResponse(e.detail)},Yl=function(e){I(this,ne)&&I(this,ne).showCandidateCorrection(e.detail)},Jl=function(e){P(this,ee,nn).call(this,new CustomEvent("item-show-correct-response",{detail:!1,bubbles:!0})),this.configContext={...this.configContext,correctResponseMode:e.detail}},an=function(e,t){let i=t?.find(p=>p.identifier=="SCORE")?.value,o=parseFloat(i?.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(),le({context:rt})],wr.prototype,"computedContext",2),d([R(),le({context:ge})],wr.prototype,"configContext",2),wr=d([M("qti-item")],wr);var Kl=E`
3948
+ :host {
3949
+ display: flex;
3950
+ user-select: none;
3951
+ position: absolute;
3952
+ }
3953
+ `;var zo=class extends w{static{this.styles=Kl}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,composed:!0,cancelable:!1}))}render(){return x` <slot name="drags"></slot> `}};customElements.define("qti-associable-hotspot",zo);var Zl=E`
3954
+ :host {
3955
+ display: flex;
3956
+ user-select: none;
3957
+ }
3958
+ `;var _i=class extends w{constructor(){super(...arguments);this.tabindex=0}static{this.styles=Zl}render(){return x` <slot name="drags"></slot>`}};d([b({type:Number,reflect:!0})],_i.prototype,"tabindex",2);customElements.define("qti-gap",_i);var ec=E`
3959
+ :host {
3960
+ display: flex;
3961
+ user-select: none;
3962
+ }
3963
+ `;var Li=class extends w{constructor(){super(...arguments);this.tabindex=0}static{this.styles=ec}connectedCallback(){this.setAttribute("slot","drags")}};d([b({type:Number,reflect:!0})],Li.prototype,"tabindex",2);customElements.define("qti-gap-img",Li);var tc={toAttribute:n=>n?"true":"false",fromAttribute:n=>n==="true"};function xe(n,r){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-${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:tc})],e.prototype,"disabled",2),d([b({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:tc})],e.prototype,"readonly",2),d([B("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}var rc=E`
3964
+ :host {
3965
+ display: inline-flex;
3966
+ user-select: none;
3967
+ }
3968
+ `;var $i=class extends xe(w,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}static{this.styles=rc}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","drags")}render(){return x`<slot></slot>`}};d([b({type:Number,reflect:!0})],$i.prototype,"tabindex",2);customElements.define("qti-gap-text",$i);var ic=E`
3969
+ :host {
3970
+ display: flex;
3971
+ user-select: none;
3972
+ position: absolute;
3973
+ }
3974
+ `;var Er=class extends xe(w,"qti-hotspot-choice"){static{this.styles=ic}};d([b({attribute:"aria-ordervalue",type:Number,reflect:!0})],Er.prototype,"order",2),d([b({attribute:"aria-ordercorrectvalue",type:Number,reflect:!0})],Er.prototype,"orderCorrect",2);customElements.define("qti-hotspot-choice",Er);var oc=E`
3975
+ :host {
3976
+ display: flex;
3977
+ user-select: none;
3978
+ }
3979
+ `;var jo=class extends xe(w,"qti-hottext"){static{this.styles=oc}render(){return x`<div part="ch"><div part="cha"></div></div>
3980
+ <slot></slot> `}};customElements.define("qti-hottext",jo);var jd=E`
3979
3981
  :host {
3980
3982
  display: block;
3981
3983
  box-sizing: border-box;
@@ -3984,22 +3986,26 @@ div.full-correct-response-inline {
3984
3986
  slot {
3985
3987
  display: inline;
3986
3988
  }
3987
- `,hl=Jc;var wi=class extends ve(C,"qti-inline-choice"){static{this.styles=hl}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.#e),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,composed:!0,cancelable:!1}))}disconnectedCallback(){this.removeEventListener("click",this.#e)}render(){return x` <slot></slot> `}#e(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};d([b({type:String})],wi.prototype,"identifier",2);customElements.define("qti-inline-choice",wi);var So=class extends C{render(){return x`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",So);var Dt=class extends ve(C,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}static{this.styles=S`
3988
- :host {
3989
- display: flex;
3990
- user-select: none;
3991
- }
3992
- slot {
3993
- width: 100%;
3994
- display: block;
3995
- }
3996
- slot[name='qti-simple-associable-choice'] {
3997
- width: auto;
3998
- }
3999
- `}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return x`
3989
+ `,sc=jd;var Pi=class extends xe(w,"qti-inline-choice"){static{this.styles=sc}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.#e),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,composed:!0,cancelable:!1}))}disconnectedCallback(){this.removeEventListener("click",this.#e)}render(){return x` <slot></slot> `}#e(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};d([b({type:String})],Pi.prototype,"identifier",2);customElements.define("qti-inline-choice",Pi);var nc=E`
3990
+ :host {
3991
+ display: block;
3992
+ }
3993
+ `;var Wo=class extends w{static{this.styles=nc}render(){return x`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Wo);var ac=E`
3994
+ :host {
3995
+ display: flex;
3996
+ user-select: none;
3997
+ }
3998
+ slot {
3999
+ width: 100%;
4000
+ display: block;
4001
+ }
4002
+ slot[name='qti-simple-associable-choice'] {
4003
+ width: auto;
4004
+ }
4005
+ `;var zt=class extends xe(w,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}static{this.styles=ac}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return x`
4000
4006
  <slot part="slot"></slot>
4001
4007
  <slot part="dropslot" name="qti-simple-associable-choice"></slot>
4002
- `}};d([b({type:Number,attribute:"match-min"})],Dt.prototype,"matchMin",2),d([b({type:Number,attribute:"match-max"})],Dt.prototype,"matchMax",2),d([b({type:String,attribute:"fixed",converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],Dt.prototype,"fixed",2);customElements.define("qti-simple-associable-choice",Dt);var fl=S`
4008
+ `}};d([b({type:Number,attribute:"match-min"})],zt.prototype,"matchMin",2),d([b({type:Number,attribute:"match-max"})],zt.prototype,"matchMax",2),d([b({type:String,attribute:"fixed",converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],zt.prototype,"fixed",2);customElements.define("qti-simple-associable-choice",zt);var lc=E`
4003
4009
  :host {
4004
4010
  display: flex;
4005
4011
  align-items: center;
@@ -4016,11 +4022,11 @@ div.full-correct-response-inline {
4016
4022
  align-items: center;
4017
4023
  justify-content: center;
4018
4024
  }
4019
- `;var ct=class extends ve(C,"qti-simple-choice"){constructor(){super(...arguments);this.templateIdentifier=null;this.showHide="show";this.fixed=!1}static{this.styles=fl}get checked(){return this.internals.states.has("--checked")}render(){return x`<div part="ch">
4025
+ `;var ut=class extends xe(w,"qti-simple-choice"){constructor(){super(...arguments);this.templateIdentifier=null;this.showHide="show";this.fixed=!1}static{this.styles=lc}get checked(){return this.internals.states.has("--checked")}render(){return x`<div part="ch">
4020
4026
  <div part="cha"></div>
4021
4027
  </div>
4022
4028
  ${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=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`
4029
+ <slot part="slot"></slot>`}};d([b({type:String,attribute:"template-identifier"})],ut.prototype,"templateIdentifier",2),d([b({type:String,attribute:"show-hide"})],ut.prototype,"showHide",2),d([b({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],ut.prototype,"fixed",2),d([b({type:String,attribute:!1})],ut.prototype,"marker",2);customElements.define("qti-simple-choice",ut);var{AbortController:Ve,AbortSignal:ln,WeakMap:Wd,WeakRef:Gd,Window:cc,reportError:Go=console.log}=globalThis,mt=n=>n&&n.defaultView!==null&&n.defaultView.document===n&&(n.defaultView.top===n.defaultView||mt(n.defaultView.parent.document)),jt=()=>!!cc&&globalThis instanceof cc,cn=Symbol("unset"),[dc,Xd]=(()=>{function n(C,f,m=!0){Object.defineProperty(C,f,{...Object.getOwnPropertyDescriptor(C,f),enumerable:m})}let r="try"in Promise?Promise.try.bind(Promise):(C,...f)=>new Promise(m=>m(C(...f))),e="withResolvers"in Promise?Promise.withResolvers.bind(Promise):()=>{let C,f;return{promise:new Promise((g,q)=>(C=g,f=q)),resolve:C,reject:f}};function t(C,f){let m=f.call(C);if(m===null||typeof m!="object")throw new TypeError("Iterator is not an object");return m}let i=new Wd,o={next(...C){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.next called on invalid object");let{syncIteratorRecord:g}=m;return r(()=>g.next(...C))},return(...C){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.return called on invalid object");let{syncIteratorRecord:g}=m;return r(()=>g.return?g.return(...C):{value:void 0,done:!0})},throw(...C){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.throw called on invalid object");let{syncIteratorRecord:g}=m;return r(()=>{if(!g.throw)throw g.return(),new TypeError("no throw method");return g.throw(...C)})}};function s(C){let f=Object.create(o);return i.set(f,{syncIteratorRecord:C}),f}function a(C,f){let m;if(f){if(m=C[Symbol.asyncIterator],m==null){if(m=C[Symbol.iterator],m==null)throw new TypeError("Object is not async iterable");let g=t(C,m);return s(g)}}else m=C[Symbol.iterator];if(m==null)throw new TypeError("Object is not iterable");return t(C,m)}let l="any"in ln?ln.any.bind(ln):C=>{let f=new Ve;for(let m of C)if(m.aborted)return f.abort(m.reason),f.signal;for(let m of C)m.addEventListener("abort",()=>{f.abort(m.reason)},{signal:f.signal});return f.signal},c=C=>l(C.filter(Boolean));class p{constructor({next:f,error:m,complete:g}={}){i.set(this,{next:f,error:m,complete:g})}next(f){let{next:m}=i.get(this)||{};m&&m(f)}error(f){let{error:m}=i.get(this)||{};m?m(f):Go(f)}complete(){let{complete:f}=i.get(this)||{};f&&f()}}function u(C,f){let m=i.get(C);if(m?.active){m.active=!1,m.subscriptionController.abort(f);for(let g of m.teardowns.reverse()){if(jt()&&!mt(document))return;try{g()}catch(q){Go(q)}}}}function h(C,f,m={}){if(jt()&&!mt(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(C),A=q.weakSubscriber?.deref();if(A?.active){let T=A,k=i.get(T);k.observers.add(g),m.signal&&(m.signal.aborted?k.observers.delete(g):m.signal.addEventListener("abort",()=>{let V=i.get(T);V?.active&&(V.observers.delete(g),V.observers.size==0&&u(T,m.signal.reason))}));return}let S=new y(g);if(q.weakSubscriber=new Gd(S),"signal"in m&&(m.signal.aborted?u(S,m.signal.reason):m.signal.addEventListener("abort",()=>{let T=i.get(S);T?.active&&(T.observers.delete(g),T.observers.size==0&&u(S,m.signal.reason))})),q.subscribeCallback)try{q.subscribeCallback(S)}catch(T){S.error(T)}}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 Ve})}next(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let m=i.get(this);if(!m?.active||jt()&&!mt(document))return;let g=new Set(m.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 m=i.get(this);if(!m?.active){Go(f);return}if(jt()&&!mt(document))return;u(this,f);let g=new Set(m.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||jt()&&!mt(document))return;u(this);let m=new Set(f.observers);for(let g of m)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(jt()&&!mt(document))return;let m=i.get(this);m?.active?m.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 Ve;return f.abort(),f.signal}return i.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");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 A=function(S,T){if(S.signal.aborted)return;let k;try{let V=T.next();k=Promise.resolve(V)}catch(V){k=Promise.reject(V)}k.then(V=>{if(V===null||typeof V!="object"){S.error(new TypeError("Not an IteratorResult."));return}try{({done:q}=V)}catch(z){S.error(z);return}if(q){S.complete();return}let H;try{H=V.value}catch(z){S.error(z);return}S.next(H),A(S,T)},V=>{S.error(V)})},q=!1;return new v(S=>{if(S.signal.aborted)return;let T;try{T=a(f,!0)}catch(V){S.error(V);return}let k=T;S.signal.aborted||(S.signal.addEventListener("abort",()=>{if(typeof k.return!="function"||q)return;r(()=>k.return(S.signal.reason)).then(H=>{if(H===null||typeof H!="object")throw new TypeError("Iterator .return() must return an Object")})}),A(S,k))})}if(typeof(Symbol.iterator in f&&f[Symbol.iterator])=="function")return new v(q=>{if(q.signal.aborted)return;let A;try{A=a(f,!1)}catch(k){q.error(k);return}let S=!1,T=A;if(!q.signal.aborted)for(q.signal.addEventListener("abort",()=>{if(typeof T.return!="function"||S)return;let k=T.return();if(k===null||typeof k!="object")throw new TypeError("Iterator .return() must return an Object")});;)try{let k=T.next();if({done:S}=k,S){q.complete();return}if(q.next(k.value),q.signal.aborted)break}catch(k){q.error(k);break}});if(f instanceof Promise||typeof f.then=="function")return new v(q=>{f.then(A=>{q.next(A),q.complete()},A=>{q.error(A)})});throw new TypeError("Could not convert value to Observable")}subscribe(f=null,m={}){if(!(this instanceof v))throw new TypeError("illegal invocation");h(this,f,m)}takeUntil(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this,g=v.from(f);return new v(q=>{let A=new p({next(){q.complete()},error(){q.complete()}}),S={signal:q.signal};if(h(g,A,S),!q.active)return;let T=new p({next(k){q.next(k)},error(k){q.error(k)},complete(){q.complete()}});h(m,T,S)})}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 m=this;return new v(g=>{let q=0,A=new p({next(T){let k;try{k=f(T,q)}catch(V){g.error(V);return}q+=1,g.next(k)},error(T){g.error(T)},complete(){g.complete()}}),S={signal:g.signal};h(m,A,S)})}inspect(f={}){let m=null,g=null,q=null,A=null,S=null;typeof f=="function"?g=f:f&&typeof f=="object"&&("subscribe"in f&&(m=f.subscribe),"next"in f&&(g=f.next),"error"in f&&(q=f.error),"complete"in f&&(A=f.complete),"abort"in f&&(S=f.abort));let T=this;return new v(k=>{if(m!==null)try{m()}catch(F){k.error(F);return}let V=()=>{try{S!==null&&S(k.signal.reason)}catch(F){Go(F)}};k.signal.addEventListener("abort",V,{once:!0});let H=new p({next(F){if(g!==null)try{g(F)}catch(ae){k.signal.removeEventListener("abort",V),k.error(ae);return}k.next(F)},error(F){if(k.signal.removeEventListener("abort",V),q!==null)try{q(F)}catch(ae){k.error(ae);return}k.error(F)},complete(){if(k.signal.removeEventListener("abort",V),A!==null)try{A()}catch(F){k.error(F);return}k.complete()}}),z={signal:k.signal};h(T,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 m=this;return new v(g=>{let q=0,A=new p({next(T){let k=!1;try{k=f(T,q)}catch(V){g.error(V);return}q+=1,k&&g.next(T)},error(T){g.error(T)},complete(){g.complete()}}),S={signal:g.signal};h(m,A,S)})}take(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this;return new v(g=>{let q=f;if(q==0)return g.complete();let A=new p({next(T){g.next(T),q-=1,q==0&&g.complete()},error(T){g.error(T)},complete(){g.complete()}}),S={signal:g.signal};h(m,A,S)})}drop(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this;return new v(g=>{let q=f,A=new p({next(T){if(q>0)return q-=1;q==0&&g.next(T)},error(T){g.error(T)},complete(){g.complete()}}),S={signal:g.signal};h(m,A,S)})}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 m=this;return new v(g=>{let q=0,A=!1,S=[];function T(z){let F;try{F=f(z,q)}catch(He){return g.error(He)}q+=1;let ae;try{ae=v.from(F)}catch(He){return g.error(He)}let ys=new p({next(He){g.next(He)},error(He){g.error(He)},complete(){if(S.length){let He=S.shift();T(He)}else k=!1,A&&g.complete()}}),Te={signal:g.signal};h(ae,ys,Te)}let k=!1,V=new p({next(z){k?S.push(z):(k=!0,T(z))},error(z){g.error(z)},complete(){A=!0,!k&&!S.length&&g.complete()}}),H={signal:g.signal};h(m,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 m=this;return new v(g=>{let q=0,A=!1,S=null;function T(H){let z;try{z=f(H,q)}catch(Te){return g.error(Te)}q+=1;let F;try{F=v.from(z)}catch(Te){return g.error(Te)}let ae=new p({next(Te){g.next(Te)},error(Te){g.error(Te)},complete(Te){A?g.complete():S=null}}),ys={signal:c([S.signal,g.signal])};h(F,ae,ys)}let k=new p({next(H){S&&S.abort(),S=new Ve,T(H)},error(H){g.error(H)},complete(){A=!0,S||g.complete()}}),V={signal:g.signal};h(m,k,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 m=this;return new v(q=>{let A=new p({next(T){q.next(T)},error(T){let k;try{k=f(T)}catch(F){q.error(F);return}let V;try{V=v.from(k)}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};h(V,H,z)},complete(){q.complete()}}),S={signal:q.signal};h(m,A,S)})}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 m=this;return new v(g=>{g.addTeardown(f);let q=new p({next(S){g.next(S)},error(S){g.error(S)},complete(){g.complete()}}),A={signal:g.signal};h(m,q,A)})}toArray(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,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 A=[],S=new p({next(T){A.push(T)},error(T){q(T)},complete(){g(A)}});return h(this,S,f),m}forEach(f,m={}){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:A}=e(),S=new Ve,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),g;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let k=0,V=new p({next(H){try{f(H,k)}catch(z){A(z),S.abort(z)}k+=1},error(H){A(H)},complete(){q()}});return h(this,V,T),g}every(f,m={}){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:A}=e(),S=new Ve,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),g;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let k=0,V=new p({next(H){let z=!1;try{z=f(H,k)}catch(F){A(F),S.abort(F)}k+=1,z||(q(!1),S.abort())},error(H){A(H)},complete(){q(!0)}});return h(this,V,T),g}first(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:g,reject:q}=e(),A=new Ve,S={signal:c([A.signal,f.signal])};if(S.signal.aborted)return q(S.signal.reason),m;S.signal.addEventListener("abort",()=>{q(S.signal.reason)});let T=new p({next(k){g(k),A.abort()},error(k){q(k)},complete(){q(new RangeError("No values in Observable"))}});return h(this,T,S),m}last(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:g,reject:q}=e();if(f.signal){if(f.signal.aborted)return q(f.signal.reason),m;f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let A=null,S=!1,T=new p({next(k){S=!0,A=k},error(k){q(k)},complete(){S?g(A):q(new RangeError("No values in Observable"))}});return h(this,T,f),m}find(f,m={}){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:A}=e(),S=new Ve,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),g;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let k=0,V=new p({next(H){let z=!1;try{z=f(H,k)}catch(F){A(F),S.abort(F)}k+=1,z&&(q(H),S.abort())},error(H){A(H)},complete(){q()}});return h(this,V,T),g}some(f,m={}){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:A}=e(),S=new Ve,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),g;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let k=0,V=new p({next(H){let z=!1;try{z=f(H,k)}catch(F){A(F),S.abort(F)}k+=1,z&&(q(!0),S.abort())},error(H){A(H)},complete(){q(!1)}});return h(this,V,T),g}reduce(f,m,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:A,reject:S}=e(),T=new Ve,k={signal:c([T.signal,g.signal])};if(k.signal.aborted)return S(k.signal.reason),q;k.signal.addEventListener("abort",()=>{S(k.signal.reason)},{once:!0});let V=0,H=arguments.length>1?m:cn,z=new p({next(F){if(H===cn){H=F,V++;return}try{let ae=f(H,F,V);V++,H=ae}catch(ae){S(ae),T.abort(ae);return}},error(F){S(F)},complete(){H!==cn?A(H):S(new TypeError("no initial value provided and no values emitted"))}});return h(this,z,k),q}}return n(v.prototype,"subscribe"),[v,y]})();function pc(){return typeof globalThis.Observable=="function"}function uc(){Object.defineProperties(globalThis,{Observable:{value:dc,configurable:!0,writable:!0},Subscriber:{value:Xd,configurable:!0,writable:!0}}),EventTarget.prototype.when=function(n,r={}){if(jt()&&!mt(document))return;let e=this;return new dc(t=>{if(!e||t.signal.aborted)return;let i=o=>{t.next(o)};e.addEventListener(n,i,{capture:r.capture||!1,passive:r.passive,once:!1,signal:t.signal})})}}function dn(n,r,e){let t=n.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 mc(n,r,e,t){if(!t)return null;let i=n.filter(s=>!s.hasAttribute("disabled")),o=t.getBoundingClientRect();for(let s of i){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 hc(n,r,e,t){let i=n.filter(c=>!c.hasAttribute("disabled"));if(i.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=r,s=e;let a=null,l=1/0;for(let c of i){let p=c.getBoundingClientRect(),u=p.left+p.width/2,h=p.top+p.height/2,y=Math.sqrt(Math.pow(o-u,2)+Math.pow(s-h,2));y<l&&(l=y,a=c)}return a}function fc(n,r,e,t){let i=n.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 s=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}],u=0,h=0;for(let v of o)for(let C of p){let f=Math.sqrt(Math.pow(v.x-C.x,2)+Math.pow(v.y-C.y,2));u+=f,h++}let y=u/h;y<a&&(a=y,s=l)}return s}function Qd(n,r,e,t,i){let o=i&&i.length>0?n.filter(m=>i.includes(m)):n.filter(m=>m.tagName==="SLOT"&&m.hasAttribute("part")&&m.getAttribute("part")?.includes("drags")),a=n.filter(m=>!o.includes(m));if(o.length===0&&a.length===0)return null;let l;if(t){let m=t.getBoundingClientRect();l=[{x:m.left,y:m.top},{x:m.right,y:m.top},{x:m.left,y:m.bottom},{x:m.right,y:m.bottom}]}else l=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let c=m=>{let g=m.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}],A=0,S=0;for(let T of l)for(let k of q){let V=Math.sqrt(Math.pow(T.x-k.x,2)+Math.pow(T.y-k.y,2));A+=V,S++}return A/S},p=null,u=1/0;for(let m of o){let g=c(m);g<u&&(u=g,p=m)}let h=null,y=1/0;for(let m of a){let g=c(m);g<y&&(y=g,h=m)}if(p&&t){let m=t.getBoundingClientRect(),g=p.getBoundingClientRect(),q=m.left+m.width/2,A=m.top+m.height/2;if(q>=g.left&&q<=g.right&&A>=g.top&&A<=g.bottom)return p}let C=t?.getAttribute("data-drag-origin")==="droppable"?.85:1.5;return p&&h?u<=y*C?p:h:p||h}function gc(n){switch(n){case"pointerWithin":return dn;case"rectangleIntersection":return mc;case"closestCenter":return hc;case"closestCorners":return fc;case"closestCornersWithInventoryPriority":return Qd;default:return dn}}function Sr(n,r,e,t,i="pointerWithin",o){return gc(i)(n,r,e,t,o)}function ht(n,r){let e=n.composedPath?n.composedPath():[n.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 Xo(n,r){let e=[];return n.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 bc(n,r){let e=n.find(i=>i.getAttribute("identifier")===r);if(!e)return 1;let t=e.getAttribute("match-max");return t?parseInt(t,10)||0:1}function vc(n,r){let e=parseInt(n.getAttribute("match-max")||"1",10),t=Number.isNaN(e)?1:e;if(t===0)return!1;let i=n.querySelectorAll(r),o=n.querySelectorAll('[qti-draggable="true"]');return Math.max(i.length,o.length)>=t}function Di(n,r){return n.reduce((e,t)=>{let i=t.querySelectorAll(r).length,o=t.querySelectorAll('[qti-draggable="true"]').length;return e+Math.max(i,o)},0)}function Qo(n,r){return n.map(e=>{let i=Array.from(e.querySelectorAll(r)).map(s=>s.getAttribute("identifier")).filter(s=>!!s),o=e.getAttribute("identifier");return i.map(s=>`${s} ${o}`)}).flat()}function yc(n,r,e,t=typeof window<"u"?window:null){if(!n.length||!r.length||!t)return;let i=0,o=0;n.forEach(c=>{let p=c.getBoundingClientRect();i=Math.max(i,p.height),o=Math.max(o,p.width)});let s=r[0].parentElement,a=r[0].tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE",l=r[0].tagName==="QTI-GAP";if(a&&s){let c;if(s.clientWidth>0){let p=t.getComputedStyle(s),u=parseFloat(p.paddingLeft),h=parseFloat(p.paddingRight);c=s.clientWidth-u-h}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))`}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`})}pc()||uc();var xc=new WeakSet;function Yd(n){!n||xc.has(n)||(n.addEventListener("touchmove",()=>{},{capture:!1,passive:!1}),xc.add(n))}var Yo=(n,r,e,t='slot[part="drags"]',i="pointerWithin")=>{class o extends n{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(),Yd(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=(m,g)=>Array.from(g?.querySelectorAll(m)??[]),c=l(r,this),p=l(r,this.shadowRoot),u=l('[qti-draggable="true"]:not([data-drag-clone])',this),h=l('[qti-draggable="true"]:not([data-drag-clone])',this.shadowRoot);this.trackedDraggables=Array.from(new Set([...c,...p,...u,...h]));let y=l(e,this),v=l(e,this.shadowRoot);this.trackedDroppables=Array.from(new Set([...y,...v]));let C=l(t,this),f=l(t,this.shadowRoot);this.trackedDragContainers=Array.from(new Set([...C,...f])),this.allDropzones=[...this.trackedDroppables,...this.trackedDragContainers],this.trackedDraggables.forEach(m=>{m.style.cursor="grab",m.style.userSelect="none",m.style.touchAction="none",m.style.webkitUserSelect="none",m.style.webkitTouchCallout="none",m.setAttribute("qti-draggable","true"),m.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 C=ht(v,r),f=this.disabled||this.readonly,m=C?.hasAttribute("disabled")||C?.getAttribute("aria-disabled")==="true",g=Date.now()-this.lastTouchStartAt<50;return C&&v.isPrimary!==!1&&v.button===0&&!f&&!m&&!g}).subscribe(v=>{this.lastPointerDownAt=Date.now();let C=ht(v,r);if(!C){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(C,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted);return}let m=()=>{this.dragState.activationTimeout&&(clearTimeout(this.dragState.activationTimeout),this.dragState.activationTimeout=void 0),document.removeEventListener("pointerup",m,!0),document.removeEventListener("pointercancel",m,!0)};document.addEventListener("pointerup",m,{once:!0,capture:!0}),document.addEventListener("pointercancel",m,{once:!0,capture:!0}),this.dragState.activationTimeout=window.setTimeout(()=>{this.dragState.activationTimeout=void 0,document.removeEventListener("pointerup",m,!0),document.removeEventListener("pointercancel",m,!0),this.dragState.dragging||this.initiateDrag(C,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted)},f)}),p=l.when("mousedown").filter(v=>{let C=ht(v,r),f=this.disabled||this.readonly,m=C?.hasAttribute("disabled")||C?.getAttribute("aria-disabled")==="true",g=v.button===0,q=Date.now()-this.lastPointerDownAt<50;return C&&g&&!f&&!m&&!q}).subscribe(v=>{let C=ht(v,r);!C||this.dragState.dragging||(v.preventDefault(),this.initiateDrag(C,v.clientX,v.clientY,"mouse","mouse",void 0,v.isTrusted))}),u=l.when("touchstart").filter(v=>{let C=ht(v,r),f=this.disabled||this.readonly,m=C?.hasAttribute("disabled")||C?.getAttribute("aria-disabled")==="true",g=!!(v.touches?.[0]||v.changedTouches?.[0]),q=Date.now()-this.lastPointerDownAt<50;return C&&g&&!f&&!m&&!q}).subscribe(v=>{let C=ht(v,r),f=v.touches?.[0]||v.changedTouches?.[0];!C||!f||this.dragState.dragging||(this.lastTouchStartAt=Date.now(),v.preventDefault(),v.stopPropagation(),this.initiateDrag(C,f.clientX,f.clientY,"touch","touch",void 0,v.isTrusted))}),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null},y=l.when("keydown").subscribe(v=>{let C=this.trackedDraggables.filter(m=>m.style.opacity!=="0"),f=[...this.trackedDroppables,...this.trackedDragContainers];if(h.dragging)switch(v.code){case"ArrowRight":case"ArrowDown":{v.preventDefault();let m=(h.dropIndex+1)%f.length;h={...h,dropIndex:m,dropElement:f[m]};break}case"ArrowLeft":case"ArrowUp":{v.preventDefault();let m=(h.dropIndex-1+f.length)%f.length;h={...h,dropIndex:m,dropElement:f[m]};break}case"Space":case"Enter":case"Tab":{v.preventDefault(),h.dragElement&&h.dropElement&&(this.allowDrop(h.dragElement,h.dropElement)||this.trackedDragContainers.includes(h.dropElement)?this.handleDrop(h.dragElement,h.dropElement):this.handleInvalidDrop(h.dragElement)),this.trackedDraggables.forEach(m=>m.removeAttribute("data-keyboard-dragging")),this.saveResponse(),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}case"Escape":{v.preventDefault(),this.trackedDraggables.forEach(m=>m.removeAttribute("data-keyboard-dragging")),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}}else{let m=ht(v,r),g=this.disabled||this.readonly,q=m?.hasAttribute("disabled")||m?.getAttribute("aria-disabled")==="true";m&&["Space","Enter"].includes(v.code)&&!g&&!q&&(v.preventDefault(),m.setAttribute("data-keyboard-dragging","true"),h={dragging:!0,dragElement:m,dragIndex:C.indexOf(m),dropIndex:0,dropElement:f[0]})}this.allDropzones.forEach(m=>m.removeAttribute("hover")),h.dragging&&h.dropElement&&(h.dropElement.setAttribute("hover",""),h.dropElement.hasAttribute("tabindex")&&h.dropElement.getAttribute("tabindex")!=="-1"&&h.dropElement.focus())});this.subscriptions.push(c,p,u,y)}initiateDrag(l,c,p,u,h="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 C=this.trackedDroppables.some(g=>g.contains(l)),f=this.trackedDroppables.find(g=>g.contains(l))||null,m=l.getBoundingClientRect();this.dragState={dragging:!0,dragSource:l,dragClone:this.createDragClone(l,m),startOffset:{x:c-m.left,y:p-m.top},currentTarget:null,sourceDroppable:f,inputType:u,pointerId:y,startedFromTrustedEvent:v,initialCoordinates:{x:c,y:p}},C?(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(u,h)}setupMoveObservables(l,c="pointer"){if(l==="touch"){if(c==="pointer")try{let A=this.dragState.dragSource,S=this.dragState.pointerId;A&&S!==void 0&&A.setPointerCapture&&A.setPointerCapture(S)}catch{}let g=A=>{A.cancelable&&(A.preventDefault(),c==="pointer"&&A.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 A=this.dragState.dragSource,S=this.dragState.pointerId;A&&S!==void 0&&A.releasePointerCapture&&A.releasePointerCapture(S)}catch{}};this.dragState.touchCleanup=q}let p=c==="mouse"?"mousemove":c==="touch"?"touchmove":"pointermove",u=c==="mouse"?"mouseup":c==="touch"?"touchend":"pointerup",h=g=>{let q=this.dragState.startedFromTrustedEvent;return q===void 0||g.isTrusted===q},y=document.when(p).takeUntil(document.when(u)).subscribe({next:g=>{if(h(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(u).subscribe({next:g=>{h(g)&&(g.preventDefault(),g.stopPropagation(),this.handleDragEnd())}}),C=c==="touch"?document.when("touchcancel").subscribe({next:g=>{h(g)&&this.handleDragEnd()}}):c==="mouse"?null:document.when("pointercancel").subscribe({next:g=>{h(g)&&this.handleDragEnd()}}),f=document.when("keydown").filter(g=>g.key==="Escape").subscribe({next:g=>{h(g)&&this.handleDragEnd()}}),m=[y,v,f];C&&m.push(C),this.dragSubscriptions.push(...m)}handleDragMove(l,c){if(!this.dragState.dragging||!this.dragState.dragClone)return;this.updateClonePosition(l,c);let p=Sr(this.allDropzones,l,c,this.dragState.dragClone,this.collisionDetectionAlgorithm,this.trackedDragContainers),u=Date.now(),h=u-(this.dragState.lastTargetChangeTime||0);p!==this.dragState.currentTarget&&(p===null||h>=50)&&(this.allDropzones.forEach(v=>v.removeAttribute("hover")),p&&p.setAttribute("hover",""),this.dragState.currentTarget=p,this.dragState.lastTargetChangeTime=u)}handleDragEnd(){if(!this.dragState.dragging)return;let{dragSource:l,dragClone:c,currentTarget:p,sourceDroppable:u}=this.dragState,h=p;if(!h&&c){let f=c.getBoundingClientRect(),m=this.dragState.initialCoordinates?.x??f.left+f.width/2,g=this.dragState.initialCoordinates?.y??f.top+f.height/2;h=Sr(this.allDropzones,m,g,c,this.collisionDetectionAlgorithm,this.trackedDragContainers)}let y=h?.hasAttribute("disabled")&&h.hasAttribute("data-drag-source");!!l&&!!h&&this.allowDrop(l,h)&&(!h.hasAttribute("disabled")||y)&&l&&h?this.handleDrop(l,h):this.handleInvalidDrop(l),c&&c.remove(),this.dragState.touchCleanup&&this.dragState.touchCleanup(),this.resetDragState(),this.deactivateAllDroppables(),this.saveResponse(),u&&u.removeAttribute("data-drag-source"),this.cacheInteractiveElements();let C=this.checkAllMaxAssociations;typeof C=="function"&&C.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),u=window.getComputedStyle(l);for(let h=0;h<u.length;h++){let y=u[h];p.style.setProperty(y,u.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,u=l-p.x,h=c-p.y;this.dragState.dragClone.style.left=`${u}px`,this.dragState.dragClone.style.top=`${h}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 qc={duration:250,easing:"ease",fill:"both"};function pn(n){let r=n.getBoundingClientRect();return{left:r.left,top:r.top,width:r.width,height:r.height}}function ft(n){let r=new Map;return n.forEach(e=>{r.set(e,pn(e))}),r}function Cc(n,r){return{deltaX:n.left-r.left,deltaY:n.top-r.top,deltaW:n.width/r.width,deltaH:n.height/r.height}}function wc(n,r,e={}){let t=pn(n),{deltaX:i,deltaY:o,deltaW:s,deltaH:a}=Cc(r,t);if(i===0&&o===0&&s===1&&a===1)return null;let{duration:l,easing:c,fill:p}={...qc,...e};return n.animate([{transformOrigin:"top left",transform:`translate(${i}px, ${o}px) scale(${s}, ${a})`},{transformOrigin:"top left",transform:"none"}],{duration:l,easing:c,fill:p})}function gt(n,r={}){let e=new Map;return n.forEach((t,i)=>{if(!(i instanceof HTMLElement))return;let o=wc(i,t,r);o&&e.set(i,o)}),e}var Ee=(n,r,e,t='slot[part="drags"]',i="closestCornersWithInventoryPriority")=>{let o=Yo(n,r,e,t,i);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(),Qo(this.trackedDroppables,r))).join(",")}set response(c){if(Array.isArray(c)){let p=this.getValue,u=typeof p=="function"?p.call(this,c):c,h=Array.isArray(u)?u:typeof u=="string"&&u.length>0?[u]:[];this.reset(!1),h.forEach(C=>this.placeResponse(C));let y=this.getResponse,v=typeof y=="function"?y.call(this):void 0;this._response=Array.isArray(v)?v:(this.cacheInteractiveElements(),Qo(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 u of c){let h=this.getAttribute(u);if(h&&h.trim().length>0)return h}let p=c.map(u=>u.toLowerCase());for(let u of Array.from(this.attributes))if(p.includes(u.name.toLowerCase())&&u.value.trim().length>0)return u.value;return null}allowDrop(c,p){if(this.trackedDragContainers.includes(p))return!0;let u=this.trackedDroppables.includes(p),h=p.hasAttribute("disabled"),y=p.hasAttribute("data-drag-source");return u&&(!h||y)}handleDrop(c,p){let u=this.dragState.dragClone?.getBoundingClientRect();this.dropDraggableInDroppable(c,p,u);let h=c.getAttribute("identifier");h&&this.updateInventoryBasedOnMatchMax(h);let y=Di(this.trackedDroppables,r);this.maxAssociations>0&&y>this.maxAssociations&&(this._dropBlockedDueToMax=!0,this.validate(),this.reportValidity())}handleInvalidDrop(c){let p=this.dragState.sourceDroppable,u=this.dragState.currentTarget,h=!u,y=this.trackedDragContainers[0]||null;if(!c)return;p&&h&&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=Di(this.trackedDroppables,r),C=this.maxAssociations>0&&v>=this.maxAssociations,f=!!u&&u.hasAttribute("disabled")&&!u.hasAttribute("data-drag-source");this._dropBlockedDueToMax=f&&C,this.validate(),this.reportValidity()}updateMinDimensionsForDropZones(){this.trackedDraggables.length!==0&&yc(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,...u]=c.split(" ").reverse(),h=this.trackedDroppables.find(y=>y.getAttribute("identifier")===p);h&&u.forEach(y=>{if(!y)return;let C=Xo(this.trackedDragContainers,y).at(0)||this.trackedDraggables.find(f=>f.getAttribute("identifier")===y);C&&this.dropDraggableInDroppable(C,h)})}dropDraggableInDroppable(c,p,u){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 A=c.getAttribute("identifier");c.remove(),A&&this.restoreOriginalInInventory(A),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,C=v===0||v>1,f=Array.from(p.querySelectorAll('[qti-draggable="true"]')),m=this.enableFlipAnimations&&f.length>0?ft(f):null;if(!C){let A=p.querySelector(r)||p.querySelector('[qti-draggable="true"]');if(A){let S=A.getAttribute("identifier");A.remove(),S&&this.restoreOriginalInInventory(S)}}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),m&&this.enableFlipAnimations&&gt(m,this.flipAnimationConfig),u&&this.enableFlipAnimations&&requestAnimationFrame(()=>{let A=g.getBoundingClientRect(),S=u.left-A.left,T=u.top-A.top;(S!==0||T!==0)&&g.animate([{transform:`translate(${S}px, ${T}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(u=>{Array.from(u.querySelectorAll(`[identifier="${p}"][qti-draggable="true"]`)).forEach(y=>{y.remove(),u.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&u.removeAttribute("data-has-drop")})}),this.restoreOriginalInInventory(p)),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}restoreOriginalInInventory(c){let p=Xo(this.trackedDragContainers,c),u=[];this.trackedDragContainers.forEach(y=>{u.push(...Array.from(y.querySelectorAll('[qti-draggable="true"]')))});let h=this.enableFlipAnimations&&u.length>0?ft(u):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")}),h&&this.enableFlipAnimations&&gt(h,this.flipAnimationConfig)}updateInventoryBasedOnMatchMax(c){let p=Xo(this.trackedDragContainers,c),u=bc(this.trackedDraggables,c),h=this.trackedDroppables.reduce((y,v)=>{let C=v.querySelectorAll(`[identifier="${c}"]`);return y+C.length},0);p.forEach(y=>{u!==0&&h>=u?(y.style.opacity="0.0",y.style.pointerEvents="none"):(y.style.opacity="1.0",y.style.pointerEvents="auto")})}checkAllMaxAssociations(){let c=Di(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations;this.trackedDroppables.forEach(u=>{let h=u.hasAttribute("data-drag-source"),y=vc(u,r);(p||y)&&!h?u.setAttribute("disabled",""):u.removeAttribute("disabled")})}saveResponse(c){let p=this.getResponse,u=c??(typeof p=="function"?p.call(this):void 0),h=Array.isArray(u)?u:typeof u=="string"?[u]:(this.cacheInteractiveElements(),Qo(this.trackedDroppables,r));this._response=h,this._internals.setFormValue(JSON.stringify(this._response)),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:h}})),this.requestUpdate()}reset(c=!0){this.trackedDroppables.forEach(p=>{Array.from(p.querySelectorAll(r)).forEach(h=>h.remove()),p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&p.removeAttribute("data-has-drop")}),this.trackedDraggables.forEach(p=>{let u=p.getAttribute("identifier");u&&this.restoreOriginalInInventory(u)}),this.resetDragState(),this.cacheInteractiveElements(),this._response=[],this._internals.setFormValue(JSON.stringify(this._response)),c&&this.saveResponse()}validate(){let c=Di(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations,u=this.maxAssociations>0&&c>this.maxAssociations,h=this.minAssociations>0&&c<this.minAssociations,y="",v=!0;u?(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):h?(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 C=this.trackedDroppables[0]??this.trackedDraggables[0]??this;return this._internals.setValidity(v?{}:{customError:!0},y,C),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 Jo=class{getInsertPosition(r,e,t,i,o){let s=r.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 Ec=new Jo;var Jd={borderStyle:"2px dashed",borderColor:"var(--qti-drop-placeholder, #c1c1c1)",background:"transparent",transitionDuration:150};function Oi(){return{placeholder:null,lastHoverTarget:null,lastPlacement:null,sortContainer:null}}function Ko(n){n.placeholder?.remove(),n.placeholder=null,n.lastHoverTarget=null,n.lastPlacement=null,n.sortContainer=null}function Zo(n,r,e={}){let t={...Jd,...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(n).margin,i.style.boxSizing="border-box",i.style.border=`${t.borderStyle} ${t.borderColor}`,i.style.borderRadius=getComputedStyle(n).borderRadius,i.style.background=t.background,i.style.transition=`transform ${t.transitionDuration}ms ease`,i.style.pointerEvents="none",i}function un(n,r){for(let e of r)if(e.contains(n)&&e!==n)return e;return null}var Se=(n,r='[qti-draggable="true"]')=>{class e extends n{constructor(){super(...arguments);this.#e=null;this.#t=Oi();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 un(o,this.trackedDroppables)}#o(o){return o.querySelector(r)}#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(r).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=ft([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,gt(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?ft(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&&gt(s,this.sortableAnimationConfig),this.#r.originalPositions.clear(),this.#r.hoveredSlot=null}initiateDrag(o,s,a,l,...c){this.#e=null,this.#t=Oi(),this.#d();let p=this.findContainingDroppable(o);if(p&&this.allowReorder){this.#e=p,this.#t.sortContainer=p;let h=o.getBoundingClientRect();this.#t.placeholder=Zo(o,h,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[u]=c;super.initiateDrag(o,s,a,l,u)}cleanupSortableState(o=!0){if(o)for(let[s,a]of this.#r.originalPositions)a.appendChild(s);this.#t.placeholder&&this.#t.placeholder.remove(),Ko(this.#t),this.#i.clear(),this.#e=null,this.#d()}onSortableDragMove(o,s){if(!this.isDraggingFromSlot)return;let a=Sr(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 Sc=E`
4024
4030
  :host {
4025
4031
  display: block; /* necessary to calculate scaling position */
4026
4032
  }
@@ -4068,7 +4074,7 @@ div.full-correct-response-inline {
4068
4074
  rgb(0 0 0 / 0%) calc(50% + 1px)
4069
4075
  );
4070
4076
  }
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>
4077
+ `;var ip=Ee(D,"qti-simple-associable-choice",".dl","slot[name='qti-simple-associable-choice']","pointerWithin"),Vi=class extends Se(ip,'[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=Sc}_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"]`),s=this.shadowRoot?.querySelector(`.dl[identifier="droplist${i}_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,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>
4072
4078
  <slot name="qti-simple-associable-choice"></slot>
4073
4079
  <div part="drop-container">
4074
4080
  ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>x`<div part="associables-container">
@@ -4077,7 +4083,7 @@ div.full-correct-response-inline {
4077
4083
  </div>`)}
4078
4084
 
4079
4085
  <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=(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`
4086
+ </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()],Vi.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",Vi);var bt=(n,r)=>{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-${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 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([Qt("#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([B("maxChoices")],e.prototype,"_handleMaxChoicesChange",1),d([B("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),d([B("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),d([R()],e.prototype,"response",2),d([B("response",{waitUntilFirstUpdate:!0})],e.prototype,"_handleValueChange",2),d([R(),$({context:ge,subscribe:!0})],e.prototype,"_configContext",2),e};var Ac=(n,r)=>{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(i){this.#e=this.#o(i),this.#s()}get class(){return this.#e.join(" ")}attributeChangedCallback(i,o,s){super.attributeChangedCallback(i,o,s),i==="class"&&o!==s&&(this.class=s??"")}updated(i){super.updated(i),this.#s()}connectedCallback(){super.connectedCallback(),this.class=this.getAttribute("class")??"",this.#i=new MutationObserver(i=>{i.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(i){return i?i.split(/\s+/).map(o=>o.trim()).filter(Boolean).filter((o,s,a)=>a.indexOf(o)===s):[]}#s(){let i=Array.from(this.querySelectorAll("qti-simple-choice")).map(l=>l),o=this.#n(i),s=this.#a(),a=this.#c();o.forEach((l,c)=>{l.marker=this.#d(c+1,s,a)})}#n(i){return i.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(i=>this.#t.includes(i)).pop()??null}#c(){return this.#e.filter(i=>this.#r.includes(i)).pop()??null}#d(i,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=`${i}`;break;case"qti-labels-lower-alpha":l=this.#l(i,"lower");break;case"qti-labels-upper-alpha":l=this.#l(i,"upper");break}return s==="qti-labels-suffix-period"?`${l}.`:s==="qti-labels-suffix-parenthesis"?`${l})`:l}#l(i,o){let s=i,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 Tc=E`
4081
4087
  :host {
4082
4088
  display: block;
4083
4089
  }
@@ -4147,11 +4153,11 @@ div.full-correct-response-inline {
4147
4153
  :host(.qti-orientation-vertical) ::slotted(qti-simple-choice:nth-child(even)) {
4148
4154
  grid-row: auto;
4149
4155
  }
4150
- `;var Ti=class extends Ll(ht($,"qti-simple-choice"),"qti-simple-choice"){constructor(){super(...arguments);this.orientation="vertical"}static{this.styles=Pl}#e(){let e=this.querySelectorAll("qti-simple-choice");this.style.setProperty("--item-count",e.length.toString())}render(){return x`
4156
+ `;var Ni=class extends Ac(bt(D,"qti-simple-choice"),"qti-simple-choice"){constructor(){super(...arguments);this.orientation="vertical"}static{this.styles=Tc}#e(){let e=this.querySelectorAll("qti-simple-choice");this.style.setProperty("--item-count",e.length.toString())}render(){return x`
4151
4157
  <slot part="prompt" name="prompt"></slot>
4152
4158
  <slot part="slot" @slotchange=${this.#e}></slot>
4153
4159
  <div part="message" role="alert" id="validation-message"></div>
4154
- `}};d([b({type:String})],Ti.prototype,"orientation",2);customElements.define("qti-choice-interaction",Ti);var Dl=S``;var Fs=`
4160
+ `}};d([b({type:String})],Ni.prototype,"orientation",2);customElements.define("qti-choice-interaction",Ni);var Ic=E``;var mn=`
4155
4161
  const postToParentWindows = (type, data) => {
4156
4162
  window.top.postMessage(data ? { type, data } : { type }, '*');
4157
4163
  let w = window.parent;
@@ -4218,7 +4224,7 @@ window.CES = {
4218
4224
  },
4219
4225
  };
4220
4226
  CES.load();
4221
- `,cd=`
4227
+ `,op=`
4222
4228
  (function() {
4223
4229
  var blobUrlReceived = null;
4224
4230
 
@@ -4262,7 +4268,7 @@ CES.load();
4262
4268
  requestBlobUrl();
4263
4269
  }
4264
4270
  })();
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=`
4271
+ `,Ye=class extends D{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=Ic}#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"),s=i.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:uo((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(u=>e.addEventListener("load",()=>u(),{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(),s=await this.#l(i,o),a=s.url;if(s.baseUrl&&!this.#r&&(this.#r=s.baseUrl),!0){let u="";if(this.manifest.media&&this.manifest.media.length>0){let h=this.manifest.media[0],y=await this.#l(h,o,{returnText:!0});if(u=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 m="<script>"+mn+"</script>",g=v.indexOf("<head>");g!==-1?v=v.slice(0,g+6)+m+v.slice(g+6):v=m+v}let f=new Blob([v],{type:"text/html"});this.#i=URL.createObjectURL(f)}}else{let h=this.data||"manifest.json",y=h.includes("/")?h.substring(0,h.lastIndexOf("/")):"",v=y?`${y}/index.html`:"index.html",C=await this.#l(v,o,{returnText:!0});if(u=C.url,C.baseUrl&&!this.#r&&(this.#r=C.baseUrl),C.text){let f=C.text;if(!(f.includes("postToParentWindows")||f.includes("window.CES"))){let q="<script>"+mn+"</script>",A=f.indexOf("<head>");A!==-1?f=f.slice(0,A+6)+q+f.slice(A+6):f=q+f}let g=new Blob([f],{type:"text/html"});this.#i=URL.createObjectURL(g)}}if(u&&!this.#i)try{let h=await fetch(u);if(h.ok){let y=await h.text();if(!(y.includes("postToParentWindows")||y.includes("window.CES"))){let f="<script>"+mn+"</script>",m=y.indexOf("<head>");m!==-1?y=y.slice(0,m+6)+f+y.slice(m+6):y=f+y}let C=new Blob([y],{type:"text/html"});this.#i=URL.createObjectURL(C)}else console.error(`Failed to fetch index.html: ${h.status}`)}catch(h){console.error(`Error fetching index.html: ${h}`)}}let c=`<script>${op}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
4266
4272
  <!DOCTYPE html>
4267
4273
  <html>
4268
4274
  <head>
@@ -4271,7 +4277,7 @@ CES.load();
4271
4277
  </head>
4272
4278
  <body></body>
4273
4279
  </html>
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
4280
+ `;e.srcdoc=p}#o(){let e=this.shadowRoot.querySelectorAll("iframe"),t=this.querySelectorAll("iframe"),i=[...e,...t];for(let o of i){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,i)}catch(l){console.error("Error accessing nested iframe:",l)}}return i.forEach((o,s)=>{i.indexOf(o)!==s&&i.splice(s,1)}),i}#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 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(),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
4281
  width=${this.getAttribute("width")}
4276
4282
  height=${this.getAttribute("height")}
4277
4283
  frameborder="0"
@@ -4282,7 +4288,7 @@ CES.load();
4282
4288
  ${this._errorMessage&&x`<div style="color:red">
4283
4289
  <h1>Error</h1>
4284
4290
  ${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()),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`
4291
+ </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 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(i.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"})],Ye.prototype,"data",2),d([b({type:String,attribute:"data-base-item"})],Ye.prototype,"baseItemUrl",2),d([b({type:String,attribute:"data-base-ref"})],Ye.prototype,"baseRefUrl",2),d([b({type:String,attribute:"id"})],Ye.prototype,"id",2),d([R()],Ye.prototype,"_errorMessage",2);customElements.define("qti-custom-interaction",Ye);var Mc=E``;var vt=class extends w{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}static{this.styles=Mc}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"})],vt.prototype,"responseIdentifier",2),d([b({reflect:!0,type:Boolean})],vt.prototype,"disabled",2),d([b({type:String,attribute:"count-attempt"})],vt.prototype,"countAttempt",2),d([b({type:String})],vt.prototype,"title",2);customElements.define("qti-end-attempt-interaction",vt);var kc=E`
4286
4292
  /* PK: display host as block, else design will be collapsed */
4287
4293
  :host {
4288
4294
  display: block;
@@ -4293,7 +4299,7 @@ CES.load();
4293
4299
  height: 100%;
4294
4300
  border: 0;
4295
4301
  }
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
4302
+ `;var fe=class extends D{constructor(){super(...arguments);this._rows=5;this.response=null;this._handleResponseChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=kc}handleclassNamesChange(e,t){let i=t.split(" "),o=!1;if(i.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}$`,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
4297
4303
  ><textarea
4298
4304
  part="textarea"
4299
4305
  name="${this.responseIdentifier}"
@@ -4304,12 +4310,12 @@ CES.load();
4304
4310
  @keyup="${this.textChanged}"
4305
4311
  @change="${this.textChanged}"
4306
4312
  @blur="${e=>{this.reportValidity()}}"
4307
- placeholder="${Me(this.placeholderText?this.placeholderText:void 0)}"
4313
+ placeholder="${_e(this.placeholderText?this.placeholderText:void 0)}"
4308
4314
  rows="${this._rows}"
4309
4315
  ?disabled="${this.disabled}"
4310
4316
  ?readonly="${this.readonly}"
4311
4317
  .value=${this.response}
4312
- ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this.response!==t.value&&(this.value=t.value,this.saveResponse(t.value))}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};d([R()],me.prototype,"_rows",2),d([b({type:Number,attribute:"expected-length"})],me.prototype,"expectedLength",2),d([b({type:String,attribute:"pattern-mask"})],me.prototype,"patternMask",2),d([b({type:String,attribute:"placeholder-text"})],me.prototype,"placeholderText",2),d([b({type:String,attribute:"data-patternmask-message"})],me.prototype,"dataPatternmaskMessage",2),d([b({type:String,attribute:"class"})],me.prototype,"classNames",2),d([U("classNames")],me.prototype,"handleclassNamesChange",1),d([R()],me.prototype,"response",2),d([U("response",{waitUntilFirstUpdate:!0})],me.prototype,"_handleResponseChange",2);customElements.define("qti-extended-text-interaction",me);var Vl=S`
4318
+ ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this.response!==t.value&&(this.value=t.value,this.saveResponse(t.value))}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};d([R()],fe.prototype,"_rows",2),d([b({type:Number,attribute:"expected-length"})],fe.prototype,"expectedLength",2),d([b({type:String,attribute:"pattern-mask"})],fe.prototype,"patternMask",2),d([b({type:String,attribute:"placeholder-text"})],fe.prototype,"placeholderText",2),d([b({type:String,attribute:"data-patternmask-message"})],fe.prototype,"dataPatternmaskMessage",2),d([b({type:String,attribute:"class"})],fe.prototype,"classNames",2),d([B("classNames")],fe.prototype,"handleclassNamesChange",1),d([R()],fe.prototype,"response",2),d([B("response",{waitUntilFirstUpdate:!0})],fe.prototype,"_handleResponseChange",2);customElements.define("qti-extended-text-interaction",fe);var Rc=E`
4313
4319
  :host {
4314
4320
  display: flex;
4315
4321
  align-items: flex-start;
@@ -4343,10 +4349,10 @@ CES.load();
4343
4349
  border-radius: 0.3rem;
4344
4350
  gap: 0.5rem;
4345
4351
  }
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>
4352
+ `;var sp=Ee(D,"qti-gap-text","qti-gap","slot[part='drags']"),es=class extends Se(sp,'[qti-draggable="true"]'){static{this.styles=Rc}render(){return x`<slot name="prompt"> </slot>
4347
4353
  <slot part="drags" name="drags"></slot>
4348
4354
  <slot part="drops"></slot>
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`
4355
+ <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(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(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 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"),!r)return;a.find(u=>u.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",es);var _c=(n,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(n[i],i);return t},Ar=ce(class extends Re{constructor(n){if(super(n),n.type!==ot.CHILD)throw Error("repeat() can only be used in text expressions")}dt(n,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],o=[],s=0;for(let a of n)i[s]=t?t(a,s):s,o[s]=e(a,s),s++;return{values:o,keys:i}}render(n,r,e){return this.dt(n,r,e).values}update(n,[r,e,t]){let i=Pa(n),{values:o,keys:s}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=s,o;let a=this.ut??=[],l=[],c,p,u=0,h=i.length-1,y=0,v=o.length-1;for(;u<=h&&y<=v;)if(i[u]===null)u++;else if(i[h]===null)h--;else if(a[u]===s[y])l[y]=st(i[u],o[y]),u++,y++;else if(a[h]===s[v])l[v]=st(i[h],o[v]),h--,v--;else if(a[u]===s[v])l[v]=st(i[u],o[v]),or(n,l[v+1],i[u]),u++,v--;else if(a[h]===s[y])l[y]=st(i[h],o[y]),or(n,i[u],i[h]),h--,y++;else if(c===void 0&&(c=_c(s,y,v),p=_c(a,u,h)),c.has(a[u]))if(c.has(a[h])){let C=p.get(s[y]),f=C!==void 0?i[C]:null;if(f===null){let m=or(n,i[u]);st(m,o[y]),l[y]=m}else l[y]=st(f,o[y]),or(n,i[u],f),i[C]=null;y++}else co(i[h]),h--;else co(i[u]),u++;for(;y<=v;){let C=or(n,l[v+1]);st(C,o[y]),l[y++]=C}for(;u<=h;){let C=i[u++];C!==null&&co(C)}return this.ut=s,$a(n,l),Z}});function yt(n,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(n){case"circle":{if(r.length!==3){console.error("Invalid circle coordinates:",r);return}let[s,a,l]=r,c=s/i*100,p=a/o*100,u=l/i*100,h=l/o*100;t.style.left=c-u+"%",t.style.top=p-h+"%",t.style.width=2*u+"%",t.style.height=2*h+"%",t.style.borderRadius="50%"}break;case"rect":{if(r.length!==4){console.error("Invalid rectangle coordinates:",r);return}let[s,a,l,c]=r,p=s/i*100,u=a/o*100,h=l/i*100,y=c/o*100;t.style.left=p+"%",t.style.top=u+"%",t.style.width=h-p+"%",t.style.height=y-u+"%"}break;case"ellipse":{if(r.length!==4){console.error("Invalid ellipse coordinates:",r);return}let[s,a,l,c]=r,p=s/i*100,u=a/o*100,h=l/i*100,y=c/o*100;t.style.left=p-h+"%",t.style.top=u-y+"%",t.style.width=2*h+"%",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 s=[];for(let m=0;m<r.length;m+=2)s.push({x:r[m],y:r[m+1]});let a=Math.min(...s.map(m=>m.x)),l=Math.max(...s.map(m=>m.x)),c=Math.min(...s.map(m=>m.y)),p=Math.max(...s.map(m=>m.y)),u=a/i*100,h=c/o*100,y=l/i*100,v=p/o*100;t.style.left=u+"%",t.style.top=h+"%",t.style.width=y-u+"%",t.style.height=v-h+"%";let f=s.map(m=>({x:(m.x-a)/(l-a)*100,y:(m.y-c)/(p-c)*100})).map(m=>`${m.x}% ${m.y}%`).join(",");t.style.clipPath=`polygon(${f})`}break;default:console.error(`Unsupported shape: ${n}`);break}}var Lc=E`
4350
4356
  slot:not([name='prompt']) {
4351
4357
  // position: relative; /* qti-hotspot-choice relative to the slot */
4352
4358
  display: block;
@@ -4370,14 +4376,14 @@ CES.load();
4370
4376
  top: 0px;
4371
4377
  left: 0px;
4372
4378
  }
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>
4379
+ `;var Je=class extends D{constructor(){super();this.#t=null;this.#r=null;this._correctLines=[];this._response=[];this.addEventListener("qti-register-hotspot",this.#s)}static{this.styles=Lc}#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>
4374
4380
  <line-container>
4375
4381
  <svg
4376
- width=${Me(this.grImage[0]?.width)}
4377
- height=${Me(this.grImage[0]?.height)}
4382
+ width=${_e(this.grImage[0]?.width)}
4383
+ height=${_e(this.grImage[0]?.height)}
4378
4384
  viewbox="0 0 ${this.grImage[0]?.width} ${this.grImage[0]?.height}"
4379
4385
  >
4380
- ${br(this.#o(),e=>e,(e,t)=>Xi`
4386
+ ${Ar(this.#o(),e=>e,(e,t)=>ao`
4381
4387
  <line
4382
4388
  part="line"
4383
4389
  x1=${parseInt(this.querySelector(`[identifier=${e.split(" ")[0]}]`).style.left)}
@@ -4386,10 +4392,10 @@ CES.load();
4386
4392
  y2=${parseInt(this.querySelector(`[identifier=${e.split(" ")[1]}]`).style.top)}
4387
4393
  stroke="red"
4388
4394
  stroke-width="3"
4389
- @click=${r=>{r.stopPropagation(),this._response=this._response.filter((o,s)=>s!==t),this.saveResponse(this.response)}}
4395
+ @click=${i=>{i.stopPropagation(),this._response=this._response.filter((o,s)=>s!==t),this.saveResponse(this.response)}}
4390
4396
  />
4391
4397
  `)}
4392
- ${br(this._correctLines||[],e=>e,(e,t)=>Xi`
4398
+ ${Ar(this._correctLines||[],e=>e,(e,t)=>ao`
4393
4399
  <line
4394
4400
  part="correct-line"
4395
4401
  x1=${parseInt(this.querySelector(`[identifier=${e.split(" ")[0]}]`).style.left)}
@@ -4401,7 +4407,7 @@ CES.load();
4401
4407
  stroke-dasharray="5,5"
4402
4408
  />
4403
4409
  `)}
4404
- ${this.#t&&Xi`<line
4410
+ ${this.#t&&ao`<line
4405
4411
  part="point"
4406
4412
  x1=${this.startCoord.x}
4407
4413
  y1=${this.startCoord.y}
@@ -4413,7 +4419,7 @@ CES.load();
4413
4419
  </svg>
4414
4420
  <slot></slot>
4415
4421
  </line-container>
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`
4422
+ <div role="alert" part="message" id="validation-message"></div>`}#s(e){let t=this.querySelector("img"),i=e.target,o=i.getAttribute("coords"),s=i.getAttribute("shape"),a=o.split(",").map(l=>parseInt(l));yt(s,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()],Je.prototype,"_correctLines",2),d([R()],Je.prototype,"startCoord",2),d([R()],Je.prototype,"mouseCoord",2),d([ba({selector:"img"})],Je.prototype,"grImage",2),d([R()],Je.prototype,"_response",2);customElements.define("qti-graphic-associate-interaction",Je);var $c=E`
4417
4423
  :host {
4418
4424
  display: flex;
4419
4425
  align-items: flex-start;
@@ -4467,10 +4473,10 @@ CES.load();
4467
4473
  user-select: none;
4468
4474
  pointer-events: none;
4469
4475
  }
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>
4476
+ `;var np=Ee(D,"qti-gap-img, qti-gap-text","qti-associable-hotspot","slot[part='drags']"),ts=class extends Se(np,'[qti-draggable="true"]'){static{this.styles=$c}render(){return x` <slot name="prompt"></slot>
4471
4477
  <slot part="image"></slot>
4472
4478
  <slot part="drags" name="drags" class="hover-border"></slot>
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`
4479
+ <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(s=>parseInt(s));switch(i){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",ts);var Pc=E`
4474
4480
  slot:not([name='prompt']) {
4475
4481
  position: relative; /* qti-hotspot-choice relative to the slot */
4476
4482
  display: block;
@@ -4481,11 +4487,11 @@ CES.load();
4481
4487
  pointer-events: none;
4482
4488
  user-select: none;
4483
4489
  }
4484
- `;var Do=class extends ht($,"qti-hotspot-choice"){constructor(){super(...arguments);this._choiceElements=[]}static{this.styles=Bl}render(){return x`
4490
+ `;var rs=class extends bt(D,"qti-hotspot-choice"){constructor(){super(...arguments);this._choiceElements=[]}static{this.styles=Pc}render(){return x`
4485
4491
  <slot name="prompt"></slot>
4486
4492
  <slot></slot>
4487
4493
  <div role="alert" part="message" id="validation-message"></div>
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`
4494
+ `}#e(e){let{identifier:t}=e.detail,i=this._choiceElements.find(s=>s.getAttribute("identifier")===t);if(!i)return;let o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,i.order==null){let s=this._choiceElements.filter(a=>a.order!=null).length;if(s>=o){this.choiceOrdering=!1;return}i.order=s+1}else{let s=i.order;i.order=null,this._choiceElements.forEach(a=>{a.order!=null&&a.order>s&&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 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"),i=e.target,o=i.getAttribute("coords"),s=i.getAttribute("shape"),a=o.split(",").map(l=>parseInt(l));yt(s,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",rs);var Dc=E`
4489
4495
  slot:not([name='prompt']) {
4490
4496
  position: relative; /* qti-hotspot-choice relative to the slot */
4491
4497
  display: inline-block;
@@ -4499,11 +4505,11 @@ CES.load();
4499
4505
  user-select: none;
4500
4506
  /* width:100%; */
4501
4507
  }
4502
- `;var $o=class extends ht($,"qti-hotspot-choice"){static{this.styles=Ul}render(){return x`
4508
+ `;var is=class extends bt(D,"qti-hotspot-choice"){static{this.styles=Dc}render(){return x`
4503
4509
  <slot name="prompt"></slot>
4504
4510
  <slot></slot>
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`
4511
+ `}#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"),s=i.split(",").map(l=>parseInt(l)),a=await this.#t(e);yt(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",is);var Oc=E``;var Hi=class extends bt(D,"qti-hottext"){constructor(){super(...arguments);this.class="";this.render=()=>x`<slot></slot>
4512
+ <div part="message" role="alert" id="validation-message"></div>`}static{this.styles=Oc}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})],Hi.prototype,"class",2);customElements.define("qti-hottext-interaction",Hi);var Fi=class extends Re{constructor(r){if(super(r),this.it=N,r.type!==ot.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===Z)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:[]}}};Fi.directiveName="unsafeHTML",Fi.resultType=1;var Wt=ce(Fi);var ap=E`
4507
4513
  :host {
4508
4514
  display: inline-block;
4509
4515
  vertical-align: baseline;
@@ -4559,7 +4565,7 @@ CES.load();
4559
4565
  display: inline-block;
4560
4566
  vertical-align: middle;
4561
4567
  }
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`
4568
+ `,Vc=ap;var lp=0,xt=class extends D{constructor(){super();this.options=[];this.correctOption="";this._dropdownOpen=!1;this._slotObserver=null;this._menuId=`qti-inline-choice-menu-${lp++}`;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(),s=i||(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 i=e.currentTarget.getAttribute("identifier")??"";this.#i(i)};this.internals.role="listbox"}get isInline(){return!0}static get styles(){return[Vc]}render(){let e=this.#e();return x`
4563
4569
  <button
4564
4570
  part="trigger"
4565
4571
  type="button"
@@ -4573,7 +4579,7 @@ CES.load();
4573
4579
  ?disabled="${this.disabled}"
4574
4580
  data-readonly="${this.readonly?"true":"false"}"
4575
4581
  >
4576
- <span part="value">${Ot(e?.textContent??"")}</span>
4582
+ <span part="value">${Wt(e?.textContent??"")}</span>
4577
4583
  <span part="${this._dropdownOpen?"dropdown-icon dropdown-icon-open":"dropdown-icon"}" aria-hidden="true"
4578
4584
  >▾</span
4579
4585
  >
@@ -4593,12 +4599,12 @@ CES.load();
4593
4599
  aria-selected="${this.options[0]?.selected?"true":"false"}"
4594
4600
  @click=${()=>this.#i("")}
4595
4601
  >
4596
- <span part="option-content">${Ot(this.options[0]?.textContent??"")}</span>
4602
+ <span part="option-content">${Wt(this.options[0]?.textContent??"")}</span>
4597
4603
  </button>
4598
4604
  <slot @slotchange=${this.#b}></slot>
4599
4605
  </div>
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",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`
4606
+ ${Wt(this.correctOption)}
4607
+ `}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}})],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 i=t.querySelector('span[part~="dropdown-icon"]'),o=i?i.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(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 s=(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=s?"true":"false",i.internals.ariaChecked=s?"true":"false",i.internals.ariaDisabled=this.disabled?"true":"false",i.internals.ariaReadOnly=this.readonly?"true":"false",i.removeAttribute("aria-disabled"),i.removeAttribute("aria-readonly"),s?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()],xt.prototype,"options",2),d([R()],xt.prototype,"correctOption",2),d([R()],xt.prototype,"_dropdownOpen",2),d([$({context:ge,subscribe:!0}),b({attribute:!1})],xt.prototype,"configContext",2);customElements.define("qti-inline-choice-interaction",xt);var Nc=E`
4602
4608
  slot:not([hidden]) {
4603
4609
  /* slot where the */
4604
4610
  display: flex;
@@ -4624,7 +4630,7 @@ CES.load();
4624
4630
  /* Make sure the drag and drop container slots have the same width */
4625
4631
  flex: 1;
4626
4632
  }
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`
4633
+ `;var cp=Ee(D,"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"),qt=class extends Se(cp,'[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,s=t.type;t.checked?(this.response?this.response.indexOf(i)===-1&&(s==="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=Nc}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 s=o.split(" ");i.push({source:s[0],target:s[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 s=o.getAttribute("identifier"),a=i.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 i=this.#e(t);this.targetChoices.forEach(o=>{let s=o.getAttribute("identifier"),a=i.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(u=>u.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
4634
  <slot name="prompt"></slot>
4629
4635
  <slot ?hidden=${e}></slot>
4630
4636
 
@@ -4632,26 +4638,26 @@ CES.load();
4632
4638
  <table part="table">
4633
4639
  <tr part="r-header">
4634
4640
  <td></td>
4635
- ${this.targetChoices.map(r=>x`<th part="r-header">${Ot(r.innerHTML)}</th>`)}
4641
+ ${this.targetChoices.map(i=>x`<th part="r-header">${Wt(i.innerHTML)}</th>`)}
4636
4642
  </tr>
4637
4643
 
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">
4644
+ ${this.sourceChoices.map(i=>x`<tr part="row">
4645
+ <td part="c-header">${Wt(i.innerHTML)}</td>
4646
+ ${this.targetChoices.map(o=>{let s=i.getAttribute("identifier"),a=o.getAttribute("identifier"),l=`${s} ${a}`,c=(this.response||[]).filter(C=>C.split(" ")[0]===s).length||0,p=this.response?.includes(l)||!1,u=i.matchMax===1?"radio":"checkbox",h=!!this.correctOptions?.find(C=>C.source===s&&C.target===a),y=u==="radio"?`rb ${p?"rb-checked":""} ${t?h?"rb-correct":"rb-incorrect":""}`:`cb ${p?"cb-checked":""} ${t?h?"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">
4641
4647
  <div
4642
4648
  class="input-container"
4643
4649
  style="position: relative; width: 24px; height: 24px; margin: 0 auto;"
4644
4650
  >
4645
4651
  <input
4646
- type=${h}
4652
+ type=${u}
4647
4653
  part=${y}
4648
4654
  name=${s}
4649
4655
  value=${l}
4650
4656
  .disabled=${v}
4651
- @change=${w=>this.handleRadioChange(w)}
4652
- @click=${w=>r.matchMax===1?this.handleRadioClick(w):null}
4657
+ @change=${C=>this.handleRadioChange(C)}
4658
+ @click=${C=>i.matchMax===1?this.handleRadioClick(C):null}
4653
4659
  />
4654
- ${h==="checkbox"&&p?x`
4660
+ ${u==="checkbox"&&p?x`
4655
4661
  <svg
4656
4662
  part="checkmark"
4657
4663
  viewBox="0 0 24 24"
@@ -4667,8 +4673,8 @@ CES.load();
4667
4673
  `:N}
4668
4674
 
4669
4675
  <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(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`
4676
+ `}};d([b({type:String})],qt.prototype,"class",2),d([R()],qt.prototype,"_response",2),d([b({type:String,attribute:"response-identifier"})],qt.prototype,"responseIdentifier",2),d([R()],qt.prototype,"correctOptions",2);customElements.define("qti-match-interaction",qt);var Hc=E``;var os=class extends D{static{this.styles=Hc}#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{...D.properties,step:{type:Number,attribute:"step",default:10}}}render(){return x` <slot name="prompt"></slot>
4677
+ <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",os);var Fc=E`
4672
4678
  [part='drags'] {
4673
4679
  display: flex;
4674
4680
  align-items: flex-start;
@@ -4744,13 +4750,13 @@ CES.load();
4744
4750
  :host(.qti-choices-right) [part='container'] {
4745
4751
  flex-direction: row-reverse;
4746
4752
  }
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>
4753
+ `;var dp=Ee(D,"qti-simple-choice","drop-list","slot[part='drags']"),Ct=class extends Se(dp,'[qti-draggable="true"]'){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}static{this.styles=Fc}#e(){let e=this.responseVariable;return e?.correctResponse?(Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse]).map((i,o)=>{let[s,a]=i.split(" "),l=a?.startsWith("droplist")?parseInt(a.replace("droplist",""),10):o,c=Number.isNaN(l)?o:l;return{identifier:s,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>
4748
4754
  <div part="container">
4749
4755
  <slot part="drags"> </slot>
4750
4756
  <div part="drops">
4751
- ${[...Array(this.nrChoices)].map((t,r)=>x`<drop-list role="region" part="drop-list" identifier="droplist${r}"></drop-list>`)}
4757
+ ${[...Array(this.nrChoices)].map((t,i)=>x`<drop-list role="region" part="drop-list" identifier="droplist${i}"></drop-list>`)}
4752
4758
  </div>
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`
4759
+ </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 s=o.getAttribute("identifier"),a=o.textContent?.trim();s&&a&&i.set(s,a)}),t.forEach(({identifier:o,dropIndex:s})=>{let a=i.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 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),u=c.getAttribute("identifier");p&&u===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()],Ct.prototype,"nrChoices",2),d([R()],Ct.prototype,"correctResponses",2),d([R()],Ct.prototype,"showCorrectResponses",2),d([b({type:String})],Ct.prototype,"orientation",2);customElements.define("qti-order-interaction",Ct);var Uc=E`
4754
4760
  :host {
4755
4761
  display: block;
4756
4762
  width: 100%;
@@ -4760,14 +4766,14 @@ CES.load();
4760
4766
  ::slotted(qti-interaction-markup) {
4761
4767
  display: none;
4762
4768
  }
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`
4769
+ `;var K=class extends D{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,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=[Uc,E`
4764
4770
  :host {
4765
4771
  display: block;
4766
4772
  width: 100%;
4767
4773
  min-height: 50px;
4768
4774
  }
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=`
4775
+ `]}#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 s=i[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(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(s=>this.coerceBaseValue(s,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,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",u=l.textContent?.trim()||"";t[c]=this.coerceBaseValue(u,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 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(i=>{let o=i.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 i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=i.replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`);t[o]=e[i]}return t}#u(e){let t={...e},i=(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||i(t,a,s)}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",s=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.value||null,a=this.responseVariablesToQtiVariableJSON(s,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:uo(`${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(s=>s.outerHTML).join(`
4776
+ `);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:"",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,u=this.dataset.componentsCssUrl||c,h=`
4771
4777
  font-family: ${e.getPropertyValue("font-family")};
4772
4778
  font-size: ${e.getPropertyValue("font-size")};
4773
4779
  line-height: ${e.getPropertyValue("line-height")};
@@ -4790,7 +4796,7 @@ CES.load();
4790
4796
  height: auto;
4791
4797
  overflow: hidden;
4792
4798
  /* Add the extracted font styles here */
4793
- ${m}
4799
+ ${h}
4794
4800
  };
4795
4801
  .qti-customInteraction {
4796
4802
  width: 100%;
@@ -4805,7 +4811,7 @@ CES.load();
4805
4811
  min-height: 50px;
4806
4812
  }
4807
4813
  </style>
4808
- <link href="${h}" rel="stylesheet" />
4814
+ <link href="${u}" rel="stylesheet" />
4809
4815
  <script src="${this.requireJsUrl}"></script>
4810
4816
  <script>
4811
4817
  const forwardConsole = ${s?"true":"false"};
@@ -4851,7 +4857,7 @@ CES.load();
4851
4857
  // Define standard paths and shims
4852
4858
  window.requirePaths = ${t};
4853
4859
 
4854
- window.requireShim = ${r};
4860
+ window.requireShim = ${i};
4855
4861
 
4856
4862
  // Single initial RequireJS configuration with error handling
4857
4863
  window.requirejs.config({
@@ -5652,13 +5658,13 @@ CES.load();
5652
5658
  <body>
5653
5659
  <div id="pci-container"></div>
5654
5660
  </body>
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`
5661
+ </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(h=>{h.remove()}),e)this.disable();else{this.enable();return}if(!e||!t?.correctResponse)return;let s=document.createElement("div");s.id=i,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(h=>{h.name!=="id"&&h.name!=="response-identifier"&&l.setAttribute(h.name,h.value)});let c=this.responseIdentifier;l.responseIdentifier=`${c}-correct`,Array.from(this.children).forEach(h=>{let y=h.cloneNode(!0);l.appendChild(y)});let p=t.correctResponse,u=l.connectedCallback;l.connectedCallback=function(){u.call(this);let h=()=>{let y=this.responseVariablesToQtiVariableJSON(p,t.cardinality,t.baseType);this.sendMessageToIframe("setBoundTo",{[c]:y}),this.sendMessageToIframe("setState",{state:"review"})};this._iframeLoaded?h():this.addEventListener("qti-portable-custom-interaction-loaded",h,{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
5662
  <slot></slot>
5657
5663
  ${this._errorMessage?x`<div style="color:red">
5658
5664
  <h1>Error</h1>
5659
5665
  ${this._errorMessage}
5660
5666
  </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(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=`
5667
+ `}};d([b({type:String,attribute:"module"})],K.prototype,"module",2),d([b({type:String,attribute:"custom-interaction-type-identifier"})],K.prototype,"customInteractionTypeIdentifier",2),d([b({type:String,attribute:"data-require-paths"})],K.prototype,"requirePathsJson",2),d([b({type:String,attribute:"data-require-shim"})],K.prototype,"requireShimJson",2),d([b({type:String,attribute:"data-require-js-url"})],K.prototype,"requireJsUrl",2),d([b({type:String,attribute:"data-base-url"})],K.prototype,"baseUrl",2),d([b({type:Boolean,attribute:"data-use-default-paths"})],K.prototype,"useDefaultPaths",2),d([R()],K.prototype,"_errorMessage",2),d([$({context:G,subscribe:!0}),R()],K.prototype,"context",2),d([$({context:ir,subscribe:!0}),R()],K.prototype,"qtiContext",2),d([R()],K.prototype,"response",2);var ss=class extends K{#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=s=>{let{data:a}=s;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:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="clickSelectorResponse"&&s?.messageId===t&&(window.removeEventListener("message",i),e(s.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:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="clickTextResponse"&&s?.messageId===t&&(window.removeEventListener("message",i),e(s.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=s=>{let{data:a}=s;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:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="getBoundingRectResponse"&&s?.messageId===t&&(window.removeEventListener("message",i),e(s.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=s=>{let{data:a}=s;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:s}=o;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="mousedownSelectorResponse"&&s?.messageId===t&&(window.removeEventListener("message",i),e(s.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=`
5662
5668
  // Test helper functions for QtiPortableCustomInteractionTest
5663
5669
  // Base iframe implementation already provides PCIManager.getContent
5664
5670
 
@@ -5851,7 +5857,7 @@ CES.load();
5851
5857
  }
5852
5858
  },
5853
5859
  true
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`
5860
+ );`,t=r.lastIndexOf("</script>");return r.substring(0,t)+e+r.substring(t)}};customElements.define("qti-portable-custom-interaction",K);customElements.define("qti-portable-custom-interaction-test",ss);var Bc=E`
5855
5861
  :host {
5856
5862
  display: block;
5857
5863
  }
@@ -5862,12 +5868,12 @@ CES.load();
5862
5868
  left: 50%;
5863
5869
  transform: translateX(-50%);
5864
5870
  }
5865
- `;var No=class extends C{static{this.styles=Jl}render(){return x`<slot></slot>`}};var Yl=S`
5871
+ `;var ns=class extends w{static{this.styles=Bc}render(){return x`<slot></slot>`}};var zc=E`
5866
5872
  :host {
5867
5873
  display: inline-block;
5868
5874
  position: relative;
5869
5875
  }
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`
5876
+ `;var as=class extends w{static{this.styles=zc}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",ns);customElements.define("qti-position-object-stage",as);var jc="important",pp=" !"+jc,hn=ce(class extends Re{constructor(n){if(super(n),n.type!==ot.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((r,e)=>{let t=n[e];return t==null?r:r+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${t};`},"")}update(n,[r]){let{style:e}=n.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(pp);t.includes("-")||o?e.setProperty(t,o?i.slice(0,-11):i,o?jc:""):e[t]=i}}return Z}});var Wc=E`
5871
5877
  :host {
5872
5878
  display: block;
5873
5879
  }
@@ -5882,25 +5888,25 @@ CES.load();
5882
5888
  height: auto;
5883
5889
  display: block;
5884
5890
  }
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>
5891
+ `;var Ke=class extends D{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,s=`${i.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=Wc}#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=>J.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 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=i.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(i=>{let o=i.dataset.coord,s=i.dataset.shape;o&&s&&yt(s,o.split(",").map(a=>+a),t,i)}))}render(){return x` <slot name="prompt"></slot>
5886
5892
  <point-container>
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`
5893
+ ${Ar((this.response||[]).filter(e=>e),e=>e,(e,t)=>{let[i,o]=e.split(" ").map(Number),s=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,u="";return this._responseCorrection[t]===!0?u=" correct":this._responseCorrection[t]===!1&&(u=" incorrect"),x`
5888
5894
  <button
5889
- part="point${h}"
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"})}
5895
+ part="point${u}"
5896
+ style=${hn({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
5897
  aria-label="Remove point at ${e}"
5892
5898
  ?disabled=${this.disabled}
5893
- @click=${m=>{m.stopPropagation(),this.response=(this.response||[]).filter((y,v)=>v!==t),this.saveResponse(this.response)}}
5899
+ @click=${h=>{h.stopPropagation(),this.response=(this.response||[]).filter((y,v)=>v!==t),this.saveResponse(this.response)}}
5894
5900
  ></button>
5895
5901
  `})}
5896
- ${br(this._correctAreas?.filter(e=>e)||[],e=>e,(e,t)=>x`<div
5897
- style=${Bs({position:"absolute",pointerEvents:"none",backgroundColor:"var(--qti-correct)",opacity:"0.5"})}
5902
+ ${Ar(this._correctAreas?.filter(e=>e)||[],e=>e,(e,t)=>x`<div
5903
+ style=${hn({position:"absolute",pointerEvents:"none",backgroundColor:"var(--qti-correct)",opacity:"0.5"})}
5898
5904
  data-coord="${e.coords}"
5899
5905
  alt=${`correct-response-${t+1}`}
5900
5906
  data-shape="${e.shape}"
5901
5907
  ></div>`)}
5902
5908
  <slot></slot>
5903
- </point-container>`}validate(){return this.response!==null&&this.response.length>=this.minChoices&&this.response.length<=this.maxChoices}#a(){this.#i=this.#e.getAttribute("width")?parseFloat(this.#e.getAttribute("width")):this.#e.naturalWidth,this.#o=this.#e.getAttribute("height")?parseFloat(this.#e.getAttribute("height")):this.#e.naturalHeight;let e=this.#e.getBoundingClientRect();this.#t=e.width===0?1:this.#i/e.width,this.#r=e.height===0?1:this.#o/e.height}firstUpdated(){this.#e=this.querySelector("img"),this.#e?(this.#a(),this.#e.addEventListener("click",this.#s)):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.#n),this.#e&&this.#e.removeEventListener("click",this.#s)}};d([b({type:Number,attribute:"max-choices"})],Qe.prototype,"maxChoices",2),d([b({type:Number,attribute:"min-choices"})],Qe.prototype,"minChoices",2),d([R()],Qe.prototype,"response",2),d([R()],Qe.prototype,"_correctAreas",2),d([R()],Qe.prototype,"_responseCorrection",2);customElements.define("qti-select-point-interaction",Qe);var ec=S`
5909
+ </point-container>`}validate(){return this.response!==null&&this.response.length>=this.minChoices&&this.response.length<=this.maxChoices}#a(){this.#i=this.#e.getAttribute("width")?parseFloat(this.#e.getAttribute("width")):this.#e.naturalWidth,this.#o=this.#e.getAttribute("height")?parseFloat(this.#e.getAttribute("height")):this.#e.naturalHeight;let e=this.#e.getBoundingClientRect();this.#t=e.width===0?1:this.#i/e.width,this.#r=e.height===0?1:this.#o/e.height}firstUpdated(){this.#e=this.querySelector("img"),this.#e?(this.#a(),this.#e.addEventListener("click",this.#s)):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.#n),this.#e&&this.#e.removeEventListener("click",this.#s)}};d([b({type:Number,attribute:"max-choices"})],Ke.prototype,"maxChoices",2),d([b({type:Number,attribute:"min-choices"})],Ke.prototype,"minChoices",2),d([R()],Ke.prototype,"response",2),d([R()],Ke.prototype,"_correctAreas",2),d([R()],Ke.prototype,"_responseCorrection",2);customElements.define("qti-select-point-interaction",Ke);var Gc=E`
5904
5910
  :host {
5905
5911
  display: block;
5906
5912
  --show-bounds: true;
@@ -5980,7 +5986,7 @@ CES.load();
5980
5986
  text-align: center;
5981
5987
  color: #6b7280; /* text-gray-500 */
5982
5988
  }
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`
5989
+ `;var wt=class extends D{constructor(){super(...arguments);this.#e=0;this.#t=null;this.min=0;this.max=100;this.step=1}static{this.styles=Gc}#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`
5984
5990
  <slot name="prompt"></slot>
5985
5991
  <div id="slider" part="slider">
5986
5992
  <div id="bounds" part="bounds">
@@ -6002,7 +6008,7 @@ CES.load();
6002
6008
  `:null}
6003
6009
  </div>
6004
6010
  </div>
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`
6011
+ `}#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)),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([Qt("#rail")],wt.prototype,"_rail",2),d([b({type:Number,attribute:"lower-bound"})],wt.prototype,"min",2),d([b({type:Number,attribute:"upper-bound"})],wt.prototype,"max",2),d([b({type:Number,attribute:"step"})],wt.prototype,"step",2);customElements.define("qti-slider-interaction",wt);var Xc=()=>new gn,gn=class{},fn=new WeakMap,PT=ce(class extends nt{render(n){return N}update(n,[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=n.options?.host,this.rt(this.ct=n.element)),N}rt(n){if(this.isConnected||(n=void 0),typeof this.G=="function"){let r=this.ht??globalThis,e=fn.get(r);e===void 0&&(e=new WeakMap,fn.set(r,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"?fn.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 Qc=E`
6006
6012
  :host {
6007
6013
  display: inline-block;
6008
6014
  }
@@ -6110,7 +6116,7 @@ CES.load();
6110
6116
  bottom: 0;
6111
6117
  }
6112
6118
  }
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`
6119
+ `;var Ae=class extends D{constructor(){super(...arguments);this.inputRef=Xc();this.response=null;this._handleValueChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=Qc}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,s=e.value;if(i.caseSensitive||(o=o.toLowerCase(),s=s.toLowerCase()),o===s)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`
6114
6120
  <input
6115
6121
  part="input"
6116
6122
  name="${this.responseIdentifier}"
@@ -6121,15 +6127,15 @@ CES.load();
6121
6127
  @keyup="${this.textChanged}"
6122
6128
  @change="${this.textChanged}"
6123
6129
  type="${this.patternMask=="[0-9]*"?"number":"text"}"
6124
- placeholder="${Me(this.placeholderText?this.placeholderText:void 0)}"
6130
+ placeholder="${_e(this.placeholderText?this.placeholderText:void 0)}"
6125
6131
  .value="${this.response}"
6126
- pattern="${Me(this.patternMask?this.patternMask:void 0)}"
6132
+ pattern="${_e(this.patternMask?this.patternMask:void 0)}"
6127
6133
  maxlength=${1e3}
6128
6134
  ?disabled="${this.disabled}"
6129
6135
  ?readonly="${this.readonly}"
6130
6136
  />
6131
6137
  ${this._correctResponse?x`<div part="correct">${this._correctResponse}</div>`:N}
6132
- `}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.#e(t.value),this.response!==t.value&&(this.value=t.value,this.saveResponse(t.value))}reportValidity(){let e=this.shadowRoot.querySelector("input");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}reset(){this.response=""}#e(e){this.setAttribute("empty",e===""?"true":"false")}};d([b({type:Number,attribute:"expected-length"})],Ee.prototype,"expectedLength",2),d([b({type:String,attribute:"pattern-mask"})],Ee.prototype,"patternMask",2),d([b({type:String,attribute:"placeholder-text"})],Ee.prototype,"placeholderText",2),d([b({type:String,attribute:"data-patternmask-message"})],Ee.prototype,"dataPatternmaskMessage",2),d([R()],Ee.prototype,"response",2),d([Ht("input")],Ee.prototype,"_input",2),d([U("response",{waitUntilFirstUpdate:!0})],Ee.prototype,"_handleValueChange",2);customElements.define("qti-text-entry-interaction",Ee);var ic=S`
6138
+ `}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.#e(t.value),this.response!==t.value&&(this.value=t.value,this.saveResponse(t.value))}reportValidity(){let e=this.shadowRoot.querySelector("input");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}reset(){this.response=""}#e(e){this.setAttribute("empty",e===""?"true":"false")}};d([b({type:Number,attribute:"expected-length"})],Ae.prototype,"expectedLength",2),d([b({type:String,attribute:"pattern-mask"})],Ae.prototype,"patternMask",2),d([b({type:String,attribute:"placeholder-text"})],Ae.prototype,"placeholderText",2),d([b({type:String,attribute:"data-patternmask-message"})],Ae.prototype,"dataPatternmaskMessage",2),d([R()],Ae.prototype,"response",2),d([Qt("input")],Ae.prototype,"_input",2),d([B("response",{waitUntilFirstUpdate:!0})],Ae.prototype,"_handleValueChange",2);customElements.define("qti-text-entry-interaction",Ae);var Yc=E`
6133
6139
  :host {
6134
6140
  display: block;
6135
6141
  margin: 1em 0;
@@ -6138,12 +6144,12 @@ CES.load();
6138
6144
  display: block;
6139
6145
  margin-top: 0.5em;
6140
6146
  }
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`
6147
+ `;var ls=class extends D{static{this.styles=Yc}#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{...D.properties}}render(){return x`
6142
6148
  <div>
6143
6149
  <slot name="prompt"></slot>
6144
6150
  <input type="file" @change="${this.#r}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" />
6145
6151
  </div>
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};
6152
+ `}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",ls);var Vk=async n=>{let r=n.substring(0,n.lastIndexOf("/")),e=await Aa().load(`${n}`).then(a=>a.assessmentTest()),t=await er().load(`${r}/${e.href}`).then(a=>a.htmlDoc()),i=await er().load(`${r}/${e.href}`).then(a=>a.items()),o=`${r}/${e.href}`,s=`${r}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:t,testURI:s,testURL:o,items:i,testIdentifier:e.identifier}},Nk=async n=>Me().load(n).then(r=>r.htmlDoc().firstElementChild);var Ne=class extends w{render(){return x`<slot></slot>`}process(){throw new Error("Not implemented")}};Ne=d([M("qti-rule")],Ne);var Ui=class extends Ne{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:Br(t)}})),t)}};d([b({type:String})],Ui.prototype,"identifier",2),d([$({context:G,subscribe:!0}),R()],Ui.prototype,"context",2);customElements.define("qti-lookup-outcome-value",Ui);var bn=class extends Ne{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",bn);var vn=class extends Ne{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 yn(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(Br):r!==null?Br(r):null}},yn=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",vn);var Bi=class extends w{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",Bi);var zi=class extends Bi{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",zi);var xn=class extends zi{render(){return x`${super.render()}`}};customElements.define("qti-response-else-if",xn);var cs=class extends up(be){calculate(){return this.calculateChildren(Array.from(this.children))}};cs=d([M("qti-and")],cs);function up(n){return class extends n{calculateChildren(e){return e.map(i=>{let o=i;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(i=>typeof i=="boolean"&&i)}}}var ds=class extends L{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};d([b({type:String,attribute:"base-type"})],ds.prototype,"baseType",2);customElements.define("qti-base-value",ds);var qn=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",qn);var Cn=class extends be{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",Cn);var wn=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",wn);var Tr=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 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===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(s=>s.identifier===i);return o?o.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item context`),null)}};d([b({type:String})],Tr.prototype,"identifier",2),d([$({context:G,subscribe:!0}),R()],Tr.prototype,"context",2),d([R(),$({context:ke,subscribe:!0})],Tr.prototype,"_testContext",2);customElements.define("qti-default",Tr);var ps=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),s=parseFloat(i.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})],ps.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",ps);var En=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",En);var ji=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"})],ji.prototype,"roundingMode",2),d([b({type:Number})],ji.prototype,"figures",2);customElements.define("qti-round-to",ji);var us=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):J.compareSingleValues(t.value,i.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};d([b({type:String})],us.prototype,"toleranceMode",2);customElements.define("qti-equal",us);var Sn=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",Sn);var An=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",An);var Tn=class extends be{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 In=class extends L{getResult(){return null}};customElements.define("qti-null",In);var Mn=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",Mn);var kn=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",kn);var Rn=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",Rn);var _n=class extends be{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",_n);var ms=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 s=e.mapEntries.filter(l=>r.baseType==="string"&&!l.caseSensitive?J.compareSingleValues(l.mapKey.toLowerCase(),o.toLowerCase(),r.baseType):J.compareSingleValues(l.mapKey,o,r.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?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})],ms.prototype,"identifier",2);customElements.define("qti-map-response",ms);var hs=class extends L{getResult(){let r=this.context.variables.find(s=>s.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 s of t)for(let a of e.areaMapEntries){if(o.has(a.coords))continue;J.isPointInArea(s,`${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})],hs.prototype,"identifier",2);customElements.define("qti-map-response-point",hs);var fs=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})],fs.prototype,"name",2);customElements.define("qti-math-operator",fs);var Ln=class n extends L{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return n.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):J.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(!J.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,s=[...r.value];for(let a of s)if(J.compareSingleValues(i,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 $n=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",$n);var Pn=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",Pn);var Dn=class extends L{render(){return x`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Dn);var On=class extends be{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",On);var Vn=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",Vn);var Nn=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 s;try{s=Math.pow(i,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",Nn);var Wi=class extends w{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})],Wi.prototype,"identifier",2),d([$({context:G,subscribe:!0}),R()],Wi.prototype,"context",2);customElements.define("qti-printed-variable",Wi);var Hn=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",Hn);var gs=class extends mp(L){getResult(){return this.calculateChildren(Array.from(this.children))}};function mp(n){return class extends n{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",gs);var bs=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(),s=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return J.compareSingleValues(o,s,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};d([b({type:String,attribute:"case-sensitive"})],bs.prototype,"caseSensitive",2);customElements.define("qti-string-match",bs);var Fn=class extends L{getResult(){return new Un(Array.from(this.children)).calculate()}},Un=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",Fn);var Bn=class extends L{getResult(){let r=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===r).value}};customElements.define("qti-variable",Bn);var Ir=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})],Ir.prototype,"min",2),d([b({type:Number})],Ir.prototype,"max",2),d([b({type:Number})],Ir.prototype,"step",2);customElements.define("qti-random-integer",Ir);var zn=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",zn);var jn=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",jn);var vs,Jc,Gi=class extends L{constructor(){super(...arguments);_(this,vs)}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=P(this,vs,Jc).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}};vs=new WeakSet,Jc=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})],Gi.prototype,"n",2),Gi=d([M("qti-index")],Gi);export{Oa as Correctness,Vs as INITIAL_SESSION_CONTEXT,Ns as INITIAL_TEST_CONTEXT,D as Interaction,Fs as IsNullOrUndefined,Qe as ItemContainer,Bt as ItemCorrectResponseMode,Cr as ItemPrintVariables,Ce as ItemShowCandidateCorrection,we as ItemShowCorrectResponse,cs as QtiAnd,pe as QtiAssessmentItem,Be as QtiAssessmentItemRef,ze as QtiAssessmentSection,lr as QtiAssessmentStimulusRef,js as QtiAssessmentStimulusRefConnectedEvent,Rt as QtiAssessmentTest,zo as QtiAssociableHotspot,Vi as QtiAssociateInteraction,ds as QtiBaseValue,Ni as QtiChoiceInteraction,ho as QtiCompanionMaterialsInfo,be as QtiConditionExpression,qn as QtiContainerSize,Cn as QtiContains,fo as QtiContentBody,Lt as QtiContextDeclaration,wn as QtiCorrect,Ye as QtiCustomInteraction,ei as QtiCustomOperator,Tr as QtiDefault,jn as QtiDelete,vt as QtiEndAttemptInteraction,us as QtiEqual,ps as QtiEqualRounded,L as QtiExpression,fe as QtiExtendedTextInteraction,de as QtiFeedback,ri as QtiFeedbackBlock,ii as QtiFeedbackInline,kn as QtiFieldValue,_i as QtiGap,Li as QtiGapImg,es as QtiGapMatchInteraction,$i as QtiGapText,Sn as QtiGcd,Je as QtiGraphicAssociateInteraction,ts as QtiGraphicGapMatchInteraction,rs as QtiGraphicOrderInteraction,An as QtiGt,Tn as QtiGte,Er as QtiHotspotChoice,is as QtiHotspotInteraction,jo as QtiHottext,Hi as QtiHottextInteraction,Gi as QtiIndex,Pi as QtiInlineChoice,xt as QtiInlineChoiceInteraction,Mn as QtiIsNull,wr as QtiItem,oi as QtiItemBody,Ui as QtiLookupOutcomeValue,Rn as QtiLt,_n as QtiLte,ms as QtiMapResponse,hs as QtiMapResponsePoint,Ln as QtiMatch,qt as QtiMatchInteraction,fs as QtiMathOperator,os as QtiMediaInteraction,$n as QtiMember,_t as QtiModalFeedback,Pn as QtiMultiple,Dn as QtiNot,In as QtiNull,On as QtiOr,Ct as QtiOrderInteraction,Vn as QtiOrdered,$e as QtiOutcomeDeclaration,K as QtiPortableCustomInteraction,ns as QtiPositionObjectInteraction,as as QtiPositionObjectStage,Nn as QtiPower,Wi as QtiPrintedVariable,Hn as QtiProduct,Wo as QtiPrompt,zn as QtiRandom,Ir as QtiRandomInteger,bn as QtiResponseCondition,We as QtiResponseDeclaration,Bi as QtiResponseElse,xn as QtiResponseElseIf,zi as QtiResponseIf,ni as QtiResponseProcessing,En as QtiRound,ji as QtiRoundTo,Le as QtiRubricBlock,Va as QtiRuleElement,Ke as QtiSelectPointInteraction,vn as QtiSetOutcomeValue,yn as QtiSetOutcomeValueRule,zt as QtiSimpleAssociableChoice,ut as QtiSimpleChoice,wt as QtiSliderInteraction,bs as QtiStringMatch,go as QtiStylesheet,gs as QtiSubtract,Fn as QtiSum,Un as QtiSumExpression,Pe as QtiTemplateDeclaration,mo as QtiTest,ai as QtiTestFeedback,je as QtiTestPart,Ae as QtiTextEntryInteraction,ls as QtiUploadInteraction,Bn as QtiVariable,sr as QtiVariableDeclaration,J as ScoringHelper,Ai as TestCheckItem,Xe as TestContainer,ci as TestEndAttempt,pr as TestItemLink,ye as TestNavigation,dt as TestNext,yi as TestPagingButtonsStamp,pt as TestPrev,Ei as TestPrintContext,hr as TestPrintVariables,Ut as TestScoringButtons,gr as TestScoringFeedback,Ci as TestSectionButtonsStamp,fr as TestSectionLink,qe as TestShowCorrectResponse,Ft as TestStamp,se as TestView,Si as TestViewToggle,W as computedContext,rt as computedItemContext,ge as configContext,Br as convertNumberToUniversalFormat,Cd as decimalSeparator,Nk as getItemByUri,Vk as getManifestInfo,G as itemContext,Ma as itemContextVariables,up as qtiAndMixin,ir as qtiContext,mp as qtiSubtractMixin,Me as qtiTransformItem,Aa as qtiTransformManifest,er as qtiTransformTest,uo as removeDoubleSlashes,it as sessionContext,ke as testContext};
6147
6153
  /*! Bundled license information:
6148
6154
 
6149
6155
  @lit-labs/ssr-dom-shim/lib/element-internals.js:
@@ -6154,6 +6160,13 @@ CES.load();
6154
6160
  * SPDX-License-Identifier: BSD-3-Clause
6155
6161
  *)
6156
6162
 
6163
+ @lit-labs/ssr-dom-shim/lib/css.js:
6164
+ (**
6165
+ * @license
6166
+ * Copyright 2024 Google LLC
6167
+ * SPDX-License-Identifier: BSD-3-Clause
6168
+ *)
6169
+
6157
6170
  @lit-labs/ssr-dom-shim/index.js:
6158
6171
  @lit/reactive-element/node/css-tag.js:
6159
6172
  lit-html/node/private-ssr-support.js:
@@ -6177,6 +6190,7 @@ lit-element/lit-element.js:
6177
6190
  @lit/context/lib/decorators/provide.js:
6178
6191
  lit-html/node/directive.js:
6179
6192
  lit-html/node/async-directive.js:
6193
+ lit-html/node/lit-html.js:
6180
6194
  lit-html/node/directives/until.js:
6181
6195
  lit-html/node/directives/repeat.js:
6182
6196
  lit-html/node/directives/unsafe-html.js: