@citolab/qti-components 7.27.3 → 7.27.5

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 (49) hide show
  1. package/cdn/index.global.js +1 -1
  2. package/cdn/index.js +169 -162
  3. package/custom-elements.json +4216 -1178
  4. package/dist/base.d.ts +3 -2
  5. package/dist/base.js +1 -1
  6. package/dist/{chunk-D6EHVZG2.js → chunk-47XMSJK3.js} +6 -8
  7. package/dist/chunk-47XMSJK3.js.map +1 -0
  8. package/dist/{chunk-K7HR6ZAY.js → chunk-CEGI6UUL.js} +8 -3
  9. package/dist/chunk-CEGI6UUL.js.map +1 -0
  10. package/dist/{chunk-CSYOTHK2.js → chunk-FK2IVMS3.js} +205 -211
  11. package/dist/chunk-FK2IVMS3.js.map +1 -0
  12. package/dist/{chunk-CVB5ISWF.js → chunk-LQZCSHN5.js} +2 -2
  13. package/dist/{chunk-DGIXWHK3.js → chunk-N7S3GNUP.js} +2 -2
  14. package/dist/{chunk-WMPG7ULB.js → chunk-SNRBEBO7.js} +4 -4
  15. package/dist/{chunk-3XXXAWMZ.js → chunk-SUQA7VZJ.js} +263 -7
  16. package/dist/chunk-SUQA7VZJ.js.map +1 -0
  17. package/dist/{chunk-RXRKP6P7.js → chunk-TELCVV2J.js} +2 -2
  18. package/dist/{chunk-PHCCFYNE.js → chunk-YLIYPNMK.js} +994 -2
  19. package/dist/chunk-YLIYPNMK.js.map +1 -0
  20. package/dist/{chunk-A7HX4462.js → chunk-Z2SUBRH5.js} +14 -2
  21. package/dist/{chunk-A7HX4462.js.map → chunk-Z2SUBRH5.js.map} +1 -1
  22. package/dist/elements.d.ts +67 -2
  23. package/dist/elements.js +10 -6
  24. package/dist/index.d.ts +5 -4
  25. package/dist/index.js +55 -11
  26. package/dist/interactions.d.ts +2 -2
  27. package/dist/interactions.js +3 -3
  28. package/dist/item.js +4 -4
  29. package/dist/loader.d.ts +2 -1
  30. package/dist/loader.js +2 -2
  31. package/dist/processing.d.ts +374 -17
  32. package/dist/processing.js +42 -2
  33. package/dist/qti-components-jsx.d.ts +1446 -389
  34. package/dist/{qti-rule-base-DGhWN-as.d.ts → qti-condition-expression-B1BYmCcq.d.ts} +1 -14
  35. package/dist/{qti-feedback-BZjWNyxP.d.ts → qti-feedback-ChmXhZuf.d.ts} +1 -1
  36. package/dist/qti-rule-base-ajOnfGXY.d.ts +16 -0
  37. package/dist/test.d.ts +2 -1
  38. package/dist/test.js +6 -6
  39. package/dist/transformers.js +1 -1
  40. package/package.json +10 -10
  41. package/dist/chunk-3XXXAWMZ.js.map +0 -1
  42. package/dist/chunk-CSYOTHK2.js.map +0 -1
  43. package/dist/chunk-D6EHVZG2.js.map +0 -1
  44. package/dist/chunk-K7HR6ZAY.js.map +0 -1
  45. package/dist/chunk-PHCCFYNE.js.map +0 -1
  46. /package/dist/{chunk-CVB5ISWF.js.map → chunk-LQZCSHN5.js.map} +0 -0
  47. /package/dist/{chunk-DGIXWHK3.js.map → chunk-N7S3GNUP.js.map} +0 -0
  48. /package/dist/{chunk-WMPG7ULB.js.map → chunk-SNRBEBO7.js.map} +0 -0
  49. /package/dist/{chunk-RXRKP6P7.js.map → chunk-TELCVV2J.js.map} +0 -0
package/cdn/index.js CHANGED
@@ -1,12 +1,12 @@
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`
1
+ var Cd=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var ba=s=>{throw TypeError(s)};var d=(s,r,e,t)=>{for(var i=t>1?void 0:t?Sd(r,e):r,n=s.length-1,o;n>=0;n--)(o=s[n])&&(i=(t?o(r,e,i):o(i))||i);return t&&i&&Cd(r,e,i),i};var _o=(s,r,e)=>r.has(s)||ba("Cannot "+e);var I=(s,r,e)=>(_o(s,r,"read from private field"),e?e.call(s):r.get(s)),L=(s,r,e)=>r.has(s)?ba("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(s):r.set(s,e),U=(s,r,e,t)=>(_o(s,r,"write to private field"),t?t.call(s,e):r.set(s,e),e),P=(s,r,e)=>(_o(s,r,"access private method"),e);var va=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 ke=function(s,r,e,t,i){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof r=="function"?s!==r||!i:!r.has(s))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(s,e):i?i.value=e:r.set(s,e),e},Y=function(s,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?s!==r||!t:!r.has(s))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(s):t?t.value:r.get(s)},Gt,Zi,en,Mr,Lo,_r,tn,St,Lr,Ze,rn,ya,xa=s=>typeof s=="boolean"?s:s?.capture??!1;var $o=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=xa(t)?this.__captureEventListeners:this.__eventListeners,n=i.get(r);if(n===void 0)n=new Map,i.set(r,n);else if(n.has(e))return;let o=typeof t=="object"&&t?t:{};o.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),n.set(e,o??{})}removeEventListener(r,e,t){if(e==null)return;let i=xa(t)?this.__captureEventListeners:this.__eventListeners,n=i.get(r);n!==void 0&&(n.delete(e),n.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,n=!1,o=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 o},...j},composedPath:{value:()=>e,...j},stopPropagation:{value:()=>{i=!0,p.call(r)},...j},stopImmediatePropagation:{value:()=>{n=!0,u.call(r)},...j}});let h=(m,b,q)=>{typeof m=="function"?m(r):typeof m?.handleEvent=="function"&&m.handleEvent(r),b.once&&q.delete(m)},y=()=>(c=null,o=0,!r.defaultPrevented),v=e.slice().reverse();a=!this.__host||!r.composed?this:null;let w=m=>{for(l=this;l.__host&&m.includes(l.__host);)l=l.__host};for(let m of v){!a&&(!l||l===m.__host)&&w(v.slice(v.indexOf(m))),c=m,o=m===r.target?2:1;let b=m.__captureEventListeners.get(r.type);if(b){for(let[q,A]of b)if(h(q,A,b),n)return y()}if(i)return y()}let f=r.bubbles?e:[this];l=null;for(let m of f){!a&&(!l||m===l.__host)&&w(f.slice(0,f.indexOf(m)+1)),c=m,o=m===r.target?2:3;let b=m.__eventListeners.get(r.type);if(b){for(let[q,A]of b)if(h(q,A,b),n)return y()}if(i)return y()}return y()}},Po=$o;var j={__proto__:null};j.enumerable=!0;Object.freeze(j);var Vo=(Ze=class{constructor(r,e={}){if(Gt.set(this,!1),Zi.set(this,!1),en.set(this,!1),Mr.set(this,!1),Lo.set(this,Date.now()),_r.set(this,!1),tn.set(this,void 0),St.set(this,void 0),Lr.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:n}=e;ke(this,Gt,!!i,"f"),ke(this,Zi,!!t,"f"),ke(this,en,!!n,"f"),ke(this,tn,`${r}`,"f"),ke(this,St,null,"f"),ke(this,Lr,!1,"f")}initEvent(r,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){ke(this,Mr,!0,"f")}get target(){return Y(this,St,"f")}get currentTarget(){return Y(this,St,"f")}get srcElement(){return Y(this,St,"f")}get type(){return Y(this,tn,"f")}get cancelable(){return Y(this,Gt,"f")}get defaultPrevented(){return Y(this,Gt,"f")&&Y(this,Mr,"f")}get timeStamp(){return Y(this,Lo,"f")}composedPath(){return Y(this,Lr,"f")?[Y(this,St,"f")]:[]}get returnValue(){return!Y(this,Gt,"f")||!Y(this,Mr,"f")}get bubbles(){return Y(this,Zi,"f")}get composed(){return Y(this,en,"f")}get eventPhase(){return Y(this,Lr,"f")?Ze.AT_TARGET:Ze.NONE}get cancelBubble(){return Y(this,_r,"f")}set cancelBubble(r){r&&ke(this,_r,!0,"f")}stopPropagation(){ke(this,_r,!0,"f")}get isTrusted(){return!1}},Gt=new WeakMap,Zi=new WeakMap,en=new WeakMap,Mr=new WeakMap,Lo=new WeakMap,_r=new WeakMap,tn=new WeakMap,St=new WeakMap,Lr=new WeakMap,Ze.NONE=0,Ze.CAPTURING_PHASE=1,Ze.AT_TARGET=2,Ze.BUBBLING_PHASE=3,Ze);Object.defineProperties(Vo.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 qa=(ya=class extends Vo{constructor(r,e={}){super(r,e),rn.set(this,void 0),ke(this,rn,e?.detail??null,"f")}initCustomEvent(r,e,t,i){throw new Error("Method not implemented.")}get detail(){return Y(this,rn,"f")}},rn=new WeakMap,ya);Object.defineProperties(qa.prototype,{detail:j});var Do=Vo,No=qa;var te;var Wp=(te=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}},te.STYLE_RULE=1,te.CHARSET_RULE=2,te.IMPORT_RULE=3,te.MEDIA_RULE=4,te.FONT_FACE_RULE=5,te.PAGE_RULE=6,te.NAMESPACE_RULE=10,te.KEYFRAMES_RULE=7,te.KEYFRAME_RULE=8,te.SUPPORTS_RULE=12,te.COUNTER_STYLE_RULE=11,te.FONT_FEATURE_VALUES_RULE=14,te);globalThis.Event??=Do;globalThis.CustomEvent??=No;var wa=new WeakMap,$r=s=>{let r=wa.get(s);return r===void 0&&wa.set(s,r=new Map),r},Ad=class extends Po{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 va(this);return this.__internals=r,r}getAttribute(r){return $r(this).get(r)??null}};var Td=class extends Ad{},Ho=Td;globalThis.litServerRoot??=Object.defineProperty(new Ho,"localName",{get(){return"lit-server-root"}});function Id(){let s,r;return{promise:new Promise((t,i)=>{s=t,r=i}),resolve:s,reject:r}}var Oo=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=Id(),this.__pendingWhenDefineds.set(r,t)),t.promise}},Rd=Oo;var Ea=new Rd;var Pr=globalThis,nn=Pr.ShadowRoot&&(Pr.ShadyCSS===void 0||Pr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Fo=Symbol(),Ca=new WeakMap,Vr=class{constructor(r,e,t){if(this._$cssResult$=!0,t!==Fo)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(nn&&r===void 0){let t=e!==void 0&&e.length===1;t&&(r=Ca.get(e)),r===void 0&&((this.o=r=new CSSStyleSheet).replaceSync(this.cssText),t&&Ca.set(e,r))}return r}toString(){return this.cssText}},Sa=s=>new Vr(typeof s=="string"?s:s+"",void 0,Fo),C=(s,...r)=>{let e=s.length===1?s[0]:r.reduce((t,i,n)=>t+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+s[n+1],s[0]);return new Vr(e,s,Fo)},Aa=(s,r)=>{if(nn)s.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of r){let t=document.createElement("style"),i=Pr.litNonce;i!==void 0&&t.setAttribute("nonce",i),t.textContent=e.cssText,s.appendChild(t)}},Uo=nn||Pr.CSSStyleSheet===void 0?s=>s:s=>s instanceof CSSStyleSheet?(r=>{let e="";for(let t of r.cssRules)e+=t.cssText;return Sa(e)})(s):s;var{is:kd,defineProperty:Md,getOwnPropertyDescriptor:_d,getOwnPropertyNames:Ld,getOwnPropertySymbols:$d,getPrototypeOf:Pd}=Object,Or=globalThis;Or.customElements??=Ea;var Ta=Or.trustedTypes,Vd=Ta?Ta.emptyScript:"",Dd=Or.reactiveElementPolyfillSupport,Dr=(s,r)=>s,Nr={toAttribute(s,r){switch(r){case Boolean:s=s?Vd:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,r){let e=s;switch(r){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch{e=null}}return e}},on=(s,r)=>!kd(s,r),Ia={attribute:!0,type:String,converter:Nr,reflect:!1,useDefault:!1,hasChanged:on};Symbol.metadata??=Symbol("metadata"),Or.litPropertyMetadata??=new WeakMap;var Fe=class extends(globalThis.HTMLElement??Ho){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&&Md(this.prototype,r,i)}}static getPropertyDescriptor(r,e,t){let{get:i,set:n}=_d(this.prototype,r)??{get(){return this[e]},set(o){this[e]=o}};return{get:i,set(o){let a=i?.call(this);n?.call(this,o),this.requestUpdate(r,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(r){return this.elementProperties.get(r)??Ia}static _$Ei(){if(this.hasOwnProperty(Dr("elementProperties")))return;let r=Pd(this);r.finalize(),r.l!==void 0&&(this.l=[...r.l]),this.elementProperties=new Map(r.elementProperties)}static finalize(){if(this.hasOwnProperty(Dr("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Dr("properties"))){let e=this.properties,t=[...Ld(e),...$d(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(Uo(i))}else r!==void 0&&e.push(Uo(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 Aa(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 n=(t.converter?.toAttribute!==void 0?t.converter:Nr).toAttribute(e,t.type);this._$Em=r,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(r,e){let t=this.constructor,i=t._$Eh.get(r);if(i!==void 0&&this._$Em!==i){let n=t.getPropertyOptions(i),o=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:Nr;this._$Em=i;let a=o.fromAttribute(e,n.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(r,e,t,i=!1,n){if(r!==void 0){let o=this.constructor;if(i===!1&&(n=this[r]),t??=o.getPropertyOptions(r),!((t.hasChanged??on)(n,e)||t.useDefault&&t.reflect&&n===this._$Ej?.get(r)&&!this.hasAttribute(o._$Eu(r,t))))return;this.C(r,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(r,e,{useDefault:t,reflect:i,wrapped:n},o){t&&!(this._$Ej??=new Map).has(r)&&(this._$Ej.set(r,o??e??this[r]),n!==!0||o!==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,n]of this._$Ep)this[i]=n;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[i,n]of t){let{wrapped:o}=n,a=this[i];o!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,n,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[Dr("elementProperties")]=new Map,Fe[Dr("finalized")]=new Map,Dd?.({ReactiveElement:Fe}),(Or.reactiveElementVersions??=[]).push("2.1.2");var un=globalThis,Ra=s=>s,sn=un.trustedTypes,ka=sn?sn.createPolicy("lit-html",{createHTML:s=>s}):void 0,zo="$lit$",Ue=`lit$${Math.random().toFixed(9).slice(2)}$`,jo="?"+Ue,Nd=`<${jo}>`,It=un.document===void 0?{createTreeWalker:()=>({})}:document,Fr=()=>It.createComment(""),Ur=s=>s===null||typeof s!="object"&&typeof s!="function",Wo=Array.isArray,Va=s=>Wo(s)||typeof s?.[Symbol.iterator]=="function",Bo=`[
3
+ \f\r]`,Hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Ma=/-->/g,_a=/>/g,At=RegExp(`>|${Bo}(?:([^\\s"'>=/]+)(${Bo}*=${Bo}*(?:[^
4
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),La=/'/g,$a=/"/g,Da=/^(?:script|style|textarea|title)$/i,Go=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),x=Go(1),mn=Go(2),gu=Go(3),re=Symbol.for("lit-noChange"),O=Symbol.for("lit-nothing"),Pa=new WeakMap,Tt=It.createTreeWalker(It,129);function Na(s,r){if(!Wo(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return ka!==void 0?ka.createHTML(r):r}var Oa=(s,r)=>{let e=s.length-1,t=[],i,n=r===2?"<svg>":r===3?"<math>":"",o=Hr;for(let a=0;a<e;a++){let l=s[a],c,p,u=-1,h=0;for(;h<l.length&&(o.lastIndex=h,p=o.exec(l),p!==null);)h=o.lastIndex,o===Hr?p[1]==="!--"?o=Ma:p[1]!==void 0?o=_a:p[2]!==void 0?(Da.test(p[2])&&(i=RegExp("</"+p[2],"g")),o=At):p[3]!==void 0&&(o=At):o===At?p[0]===">"?(o=i??Hr,u=-1):p[1]===void 0?u=-2:(u=o.lastIndex-p[2].length,c=p[1],o=p[3]===void 0?At:p[3]==='"'?$a:La):o===$a||o===La?o=At:o===Ma||o===_a?o=Hr:(o=At,i=void 0);let y=o===At&&s[a+1].startsWith("/>")?" ":"";n+=o===Hr?l+Nd:u>=0?(t.push(c),l.slice(0,u)+zo+l.slice(u)+Ue+y):l+Ue+(u===-2?a:y)}return[Na(s,n+(s[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},Br=class s{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let n=0,o=0,a=r.length-1,l=this.parts,[c,p]=Oa(r,e);if(this.el=s.createElement(c,t),Tt.currentNode=this.el.content,e===2||e===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(i=Tt.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let u of i.getAttributeNames())if(u.endsWith(zo)){let h=p[o++],y=i.getAttribute(u).split(Ue),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:n,name:v[2],strings:y,ctor:v[1]==="."?ln:v[1]==="?"?cn:v[1]==="@"?dn:kt}),i.removeAttribute(u)}else u.startsWith(Ue)&&(l.push({type:6,index:n}),i.removeAttribute(u));if(Da.test(i.tagName)){let u=i.textContent.split(Ue),h=u.length-1;if(h>0){i.textContent=sn?sn.emptyScript:"";for(let y=0;y<h;y++)i.append(u[y],Fr()),Tt.nextNode(),l.push({type:2,index:++n});i.append(u[h],Fr())}}}else if(i.nodeType===8)if(i.data===jo)l.push({type:2,index:n});else{let u=-1;for(;(u=i.data.indexOf(Ue,u+1))!==-1;)l.push({type:7,index:n}),u+=Ue.length-1}n++}}static createElement(r,e){let t=It.createElement("template");return t.innerHTML=r,t}};function Rt(s,r,e=s,t){if(r===re)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,n=Ur(r)?void 0:r._$litDirective$;return i?.constructor!==n&&(i?._$AO?.(!1),n===void 0?i=void 0:(i=new n(s),i._$AT(s,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=Rt(s,i._$AS(s,r.values),i,t)),r}var an=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??It).importNode(e,!0);Tt.currentNode=i;let n=Tt.nextNode(),o=0,a=0,l=t[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new Xt(n,n.nextSibling,this,r):l.type===1?c=new l.ctor(n,l.name,l.strings,this,r):l.type===6&&(c=new pn(n,this,r)),this._$AV.push(c),l=t[++a]}o!==l?.index&&(n=Tt.nextNode(),o++)}return Tt.currentNode=It,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 s{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=O,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=Rt(this,r,e),Ur(r)?r===O||r==null||r===""?(this._$AH!==O&&this._$AR(),this._$AH=O):r!==this._$AH&&r!==re&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):Va(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!==O&&Ur(this._$AH)?this._$AA.nextSibling.data=r:this.T(It.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=Br.createElement(Na(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let n=new an(i,this),o=n.u(this.options);n.p(e),this.T(o),this._$AH=n}}_$AC(r){let e=Pa.get(r.strings);return e===void 0&&Pa.set(r.strings,e=new Br(r)),e}k(r){Wo(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let n of r)i===e.length?e.push(t=new s(this.O(Fr()),this.O(Fr()),this,this.options)):t=e[i],t._$AI(n),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=Ra(r).nextSibling;Ra(r).remove(),r=t}}setConnected(r){this._$AM===void 0&&(this._$Cv=r,this._$AP?.(r))}},kt=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,n){this.type=1,this._$AH=O,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=n,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=O}_$AI(r,e=this,t,i){let n=this.strings,o=!1;if(n===void 0)r=Rt(this,r,e,0),o=!Ur(r)||r!==this._$AH&&r!==re,o&&(this._$AH=r);else{let a=r,l,c;for(r=n[0],l=0;l<n.length-1;l++)c=Rt(this,a[t+l],e,l),c===re&&(c=this._$AH[l]),o||=!Ur(c)||c!==this._$AH[l],c===O?r=O:r!==O&&(r+=(c??"")+n[l+1]),this._$AH[l]=c}o&&!i&&this.j(r)}j(r){r===O?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},ln=class extends kt{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===O?void 0:r}},cn=class extends kt{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==O)}},dn=class extends kt{constructor(r,e,t,i,n){super(r,e,t,i,n),this.type=5}_$AI(r,e=this){if((r=Rt(this,r,e,0)??O)===re)return;let t=this._$AH,i=r===O&&t!==O||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,n=r!==O&&(t===O||i);i&&this.element.removeEventListener(this.name,this,t),n&&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)}},pn=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){Rt(this,r)}},Ha={M:zo,P:Ue,A:jo,C:1,L:Oa,R:an,D:Va,V:Rt,I:Xt,H:kt,N:cn,U:dn,B:ln,F:pn},Od=un.litHtmlPolyfillSupport;Od?.(Br,Xt),(un.litHtmlVersions??=[]).push("3.3.2");var Fa=(s,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let n=e?.renderBefore??null;t._$litPart$=i=new Xt(r.insertBefore(Fr(),n),n,void 0,e??{})}return i._$AI(s),i};var Xo=globalThis,E=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=Fa(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return re}};E._$litElement$=!0,E.finalized=!0,Xo.litElementHydrateSupport?.({LitElement:E});var Hd=Xo.litElementPolyfillSupport;Hd?.({LitElement:E});(Xo.litElementVersions??=[]).push("4.2.2");var k=s=>(r,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,r)}):customElements.define(s,r)};var Fd={attribute:!0,type:String,converter:Nr,reflect:!1,hasChanged:on},Ud=(s=Fd,r,e)=>{let{kind:t,metadata:i}=e,n=globalThis.litPropertyMetadata.get(i);if(n===void 0&&globalThis.litPropertyMetadata.set(i,n=new Map),t==="setter"&&((s=Object.create(s)).wrapped=!0),n.set(e.name,s),t==="accessor"){let{name:o}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(o,l,s,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,s,a),a}}}if(t==="setter"){let{name:o}=e;return function(a){let l=this[o];r.call(this,a),this.requestUpdate(o,l,s,!0,a)}}throw Error("Unsupported decorator location: "+t)};function g(s){return(r,e)=>typeof e=="object"?Ud(s,r,e):((t,i,n)=>{let o=i.hasOwnProperty(n);return i.constructor.createProperty(n,t),o?Object.getOwnPropertyDescriptor(i,n):void 0})(s,r,e)}function M(s){return g({...s,state:!0,attribute:!1})}var et=(s,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(s,r,e),e);function Qt(s,r){return(e,t,i)=>{let n=o=>o.renderRoot?.querySelector(s)??null;if(r){let{get:o,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=o.call(this);return l===void 0&&(l=n(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return et(e,t,{get(){return n(this)}})}}function Ua(s){return(r,e)=>{let{slot:t,selector:i}=s??{},n="slot"+(t?`[name=${t}]`:":not([name])");return et(r,e,{get(){let o=this.renderRoot?.querySelector(n),a=o?.assignedElements(s)??[];return i===void 0?a:a.filter(l=>l.matches(i))}})}}function Ba(s,r,e){Array.from(s.getElementsByTagName("*")).filter(n=>n.localName===r||n.localName?.toLowerCase()===r.toLowerCase()).forEach(n=>{let o=`${r}-${e}`,a=ja(n,o);n.replaceWith(a)})}function za(s,r){s.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let n=i.slice(`${r}:`.length),o=`${e.nodeName}-${n}`,a=ja(e,o);e.replaceWith(a)}})})}function ja(s,r){let e=s.ownerDocument.createElement(r);for(let t of s.attributes)e.setAttribute(t.name,t.value);for(;s.firstChild;)e.appendChild(s.firstChild);return e}function Wa(s){let r=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),i=e.getAttribute("href"),n=e.getAttribute("category");r.push({identifier:t,href:i,category:n})}),r}function Yt(s,r){return fetch(s,{signal:r}).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.text()}).then(e=>new DOMParser().parseFromString(e,"text/xml")).catch(e=>{throw e.name==="AbortError"?e:new Error(`Failed to load XML: ${e.message}`)})}function Jt(s){return new DOMParser().parseFromString(s,"text/xml")}function Ga(s,r){if(s.nodeType===Node.ELEMENT_NODE){let e=s,t;!e.namespaceURI||e.namespaceURI.startsWith("http://www.imsglobal.org/xsd/qti/")||e.namespaceURI.startsWith("http://www.imsglobal.org/xsd/imsqti")?t=r.createElement(e.localName):t=r.createElementNS(e.namespaceURI,e.tagName);for(let i=0;i<e.attributes.length;i++){let n=e.attributes[i];t.setAttribute(n.localName,n.value)}for(let i=0;i<e.childNodes.length;i++)t.appendChild(Ga(e.childNodes[i],r));return t}return s.cloneNode(!1)}function Kt(s){let r=document.createDocumentFragment();for(let e=0;e<s.childNodes.length;e++)r.appendChild(Ga(s.childNodes[e],document));return r}function Zt(s,r){r.endsWith("/")||(r+="/"),s.querySelectorAll("*").forEach(t=>{for(let i of["src","href","srcset","poster"]){let n=t.getAttribute(i)?.trim();if(n&&!/^(data:|https?:|blob:)/.test(n)){let o=r+encodeURI(n);t.setAttribute(i,o)}}})}function Xa(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function Qa(s){s.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function Ya(s){switch(s){case"qti-choice-interaction":case"qti-order-interaction":return"qti-simple-choice";case"qti-inline-choice-interaction":return"qti-inline-choice";case"qti-match-interaction":return["qti-simple-match-set:first-of-type qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice"];case"qti-gap-match-interaction":return"qti-gap-text";case"qti-associate-interaction":return"qti-simple-associable-choice";default:return null}}var Me=(s=!1)=>{let r,e="",t={load(i,n){e=i;let o=encodeURI(i);return s&&sessionStorage.getItem(o)?Promise.resolve(t.parse(sessionStorage.getItem(o))):Yt(i,n).then(a=>(r=a,t.shuffleInteractions(),s&&sessionStorage.setItem(o,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 n=["hook","module"],o=i.substring(0,i.lastIndexOf("/"));for(let a of n)r.querySelectorAll("["+a+"]").forEach(c=>{let p=c.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(c.setAttribute("base-url",i),c.setAttribute("module",o+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,n,o="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(o);if(l.length===0)return t;let c=null,p=null,u=async()=>{if(c===null)try{c=await n(i,"/modules/module_resolution.js")}catch{c=null}if(p===null)try{p=await n(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 w=v.getAttribute("primary-configuration");if(w)try{let f=await n(i,`/${w}`),m=Array.from(v.querySelectorAll("qti-interaction-module"));for(let b of m){let q=b.getAttribute("id");if(q&&f.paths&&f.paths[q]){let A=f.paths[q],S=Array.isArray(A)?A[0]:A;if(b.setAttribute("primary-path",S),p&&p.paths&&p.paths[q]){let T=p.paths[q];Array.isArray(T)?b.setAttribute("fallback-path",T[0]):b.setAttribute("fallback-path",T)}}}if(f.paths){for(let b in f.paths)if(!v.querySelector(`qti-interaction-module[id="${b}"]`)){let A=r.createElement("qti-interaction-module");A.setAttribute("id",b);let S=Array.isArray(f.paths[b])?f.paths[b][0]:f.paths[b];if(A.setAttribute("primary-path",S),p&&p.paths&&p.paths[b]){let T=p.paths[b];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: ${w}`,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 w in c.paths){let f=c.paths[w],m="";p&&p.paths&&p.paths[w]&&(m=p.paths[w]);let b=Array.isArray(f)?f:[f],q=Array.isArray(m)?m:[m],A=b.map((S,T)=>{let _=q.length>T?q[T]:"";return{primaryPath:S,fallbackPath:_}});for(let S of q)A.some(T=>T.fallbackPath===S)||A.push({primaryPath:b.length>0?b[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",w),T.setAttribute("primary-path",S.primaryPath),v&&v.appendChild(T)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),n=Array.from(i).filter(o=>o.tagName?.toLowerCase().endsWith("-interaction"));for(let o of n){let a=Ya(o.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let c of l){let p=Array.from(o.querySelectorAll(c)),u=p.map((m,b)=>({element:m,fixed:m.hasAttribute("fixed")&&m.getAttribute("fixed")==="true",originalOrder:b})).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,w=0;for(;!v&&w<20;){w++;for(let m=h.length-1;m>0;m--){let b=Math.floor(Math.random()*(m+1));[h[m],h[b]]=[h[b],h[m]]}v=!h.every((m,b)=>m===y[b])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;o.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,n)=>(Ba(r,i,n),t),extendElementsWithClass:(i="extend")=>(za(r,i),t),customInteraction(i,n){let o=r.querySelector("qti-custom-interaction"),a=o.querySelector("object");return o.setAttribute("data-base-ref",i),o.setAttribute("data-base-item",i+n),o.setAttribute("data",a.getAttribute("data")),o.setAttribute("width",a.getAttribute("width")),o.setAttribute("height",a.getAttribute("height")),o.removeChild(a),t},convertCDATAtoComment(){return Xa(r),t},stripStyleSheets(){return Qa(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 Ja=()=>{let s,r={async load(e,t){return new Promise(i=>{Yt(e,t).then(n=>(s=n,i(r)))})},parse(e){s=Jt(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var er=()=>{let s,r={async load(e,t){return new Promise((i,n)=>{Yt(e,t).then(o=>(s=o,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return s=Jt(e),r},path:e=>(Zt(s,e),r),fn(e){return e(s),r},items(){return Wa(s)},html(){return new XMLSerializer().serializeToString(Kt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmlDoc(){return Kt(s)},xmlDoc(){return s}};return r};var Ka=s=>{class r extends s{constructor(...i){super(...i);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.postLoadTransformCallback=null;this.postLoadTestTransformCallback=null;this._activeController=null;this._loadResults=[];this._navigationId=0;this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1};this._loadedStimulusHrefs=new Set;this._loadingStimulusHrefs=new Set;this._bindEventHandlers()}navigateTo(i,n){let o=n||this._getDefaultNavigationId(i);o&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,id:o},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 n=i.detail;this._loadingState.connectedItems++;let o=n.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=o.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:n,item:o}=i;if(console.info("Stimulus ref connected:",{identifier:n.identifier,href:n.href,item:o.identifier}),this._loadedStimulusHrefs.has(n.href)){console.info("Stimulus already loaded, skipping:",n.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(n.href)){console.info("Stimulus already loading, skipping duplicate:",n.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(n.href),console.info("Starting stimulus load:",n.href);try{await this._loadStimulusRef(n,o),this._loadedStimulusHrefs.add(n.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",n.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${n.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(n.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 n=++this._navigationId,o=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=o,await this._executeNavigation(i.type,i.id,n,o)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===o&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,n,o){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,n,o))}async _executeNavigation(i,n,o,a){i==="item"?await this._navigateToItem(n,o,a):await this._navigateToSection(n,o,a)}async _navigateToItem(i,n,o){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],n,o),await this._waitForLoadingComplete(n,o),!this._isStaleNavigation(n,o)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,n,o){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,n,o),await this._waitForLoadingComplete(n,o),!this._isStaleNavigation(n,o)&&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,n=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;i&&n&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(i,n){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(i,n))return;await new Promise(o=>setTimeout(o,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,n){console.info("Loading stimulus:",i.href);let o=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",o?"has content":"no content"),this._applyStimulusContent(o,i,n)}_applyStimulusContent(i,n,o){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 ${n.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],c=o.querySelector(`[data-stimulus-idref="${n.identifier}"]`);if(c)l.push(c),console.info("Found specific target:",c);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${n.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,n,o){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,n,o)))).filter(Boolean);this._isStaleNavigation(n,o)||(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,n,o){try{let a=await Me(this.cacheTransform).load(i.href,o.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(n,o)?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 n=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);if(!n)throw new Error(`Item with identifier "${i}" not found`);return n}_findSection(i){return this._testElement?.querySelector(`qti-assessment-section[identifier="${i}"]`)||null}_updateSessionContext(i,n){let o=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:o,navSectionId:a,navItemRefId:n}}_getSectionItemIds(i){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${i}"] > qti-assessment-item-ref`)).map(n=>n.identifier).filter(Boolean)}_clearLoadedItems(){let i=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(i||[]).forEach(n=>{n.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(i=>i.innerHTML="")}_isStaleNavigation(i,n){return n.signal.aborted||i!==this._navigationId}_createNavigationError(i,n,o){return{message:i.message||`Failed to load ${n}: ${o}`,details:i,itemId:n==="item"?o:void 0,sectionId:n==="section"?o:void 0}}_dispatchLoadingStarted(i,n){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(i,n){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:i,id:n},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:n})=>({identifier:n?.identifier,element:n})),bubbles:!0,composed:!0}))})}}return d([g({type:String})],r.prototype,"navigate",2),d([g({type:Boolean,attribute:"cache-transform"})],r.prototype,"cacheTransform",2),d([g({type:Number})],r.prototype,"requestTimeout",2),d([g({attribute:!1})],r.prototype,"postLoadTransformCallback",2),d([g({attribute:!1})],r.prototype,"postLoadTestTransformCallback",2),r};var Za=s=>{class r extends s{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",i=>{this.sessionContext={...this.sessionContext,view:i.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",i=>{this._updateElementView(),this._setCorrectResponseVisibility(i.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(o=>{o.classList.toggle("show",o.getAttribute("view")===this.sessionContext.view)});let n=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;n&&n.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=(n,o)=>{this.unsubscribe&&(this.unsubscribe!==o&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,o)),this.unsubscribe=o},this.host=r,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=n.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 hn=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 Qo=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},rr=class extends hn{constructor(r,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=i=>{if(i.context!==this.context)return;let n=i.contextTarget??i.composedPath()[0];n!==this.host&&(i.stopPropagation(),this.addCallback(i.callback,n,i.subscribe))},this.onProviderRequest=i=>{if(i.context!==this.context||(i.contextTarget??i.composedPath()[0])===this.host)return;let n=new Set;for(let[o,{consumerHost:a}]of this.subscriptions)n.has(o)||(n.add(o),a.dispatchEvent(new tt(this.context,a,o,!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 Qo(this.context,this.host))}};function ce({context:s}){return(r,e)=>{let t=new WeakMap;if(typeof e=="object")return{get(){return r.get.call(this)},set(i){return t.get(this).setValue(i),r.set.call(this,i)},init(i){return t.set(this,new rr(this,{context:s,initialValue:i})),i}};{r.constructor.addInitializer((o=>{t.set(o,new rr(o,{context:s}))}));let i=Object.getOwnPropertyDescriptor(r,e),n;if(i===void 0){let o=new WeakMap;n={get(){return o.get(this)},set(a){t.get(this).setValue(a),o.set(this,a)},configurable:!0,enumerable:!0}}else{let o=i.set;n={...i,set(a){t.get(this).setValue(a),o?.call(this,a)}}}return void Object.defineProperty(r,e,n)}}}function $({context:s,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new tr(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new tr(i,{context:s,callback:n=>{i[t]=n},subscribe:r})}))}}var rt=Symbol("computedItemContext");var G=Symbol("computedContext");var ge=Symbol("configContext");var el=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var W=Symbol("item");var ir=Symbol("qtiContext");var Yo={view:"candidate"},it=Symbol("testContext");var Jo={items:[],testOutcomeVariables:[]},_e=Symbol("testContext");function B(s,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{let{update:n}=t,o=Array.isArray(s)?s:[s];t.update=function(a){o.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)}}),n.call(this,a)}}}var nr={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},qe=s=>(...r)=>({_$litDirective$:s,values:r}),nt=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}=Ha,tl=s=>s,il=s=>s===null||typeof s!="object"&&typeof s!="function";var nl=s=>s.strings===void 0,rl=()=>document.createComment(""),or=(s,r,e)=>{let t=s._$AA.parentNode,i=r===void 0?s._$AB:r._$AA;if(e===void 0){let n=t.insertBefore(rl(),i),o=t.insertBefore(rl(),i);e=new Bd(n,o,s,s.options)}else{let n=e._$AB.nextSibling,o=e._$AM,a=o!==s;if(a){let l;e._$AQ?.(s),e._$AM=s,e._$AP!==void 0&&(l=s._$AU)!==o._$AU&&e._$AP(l)}if(n!==i||a){let l=e._$AA;for(;l!==n;){let c=tl(l).nextSibling;tl(t).insertBefore(l,i),l=c}}}return e},ot=(s,r,e=s)=>(s._$AI(r,e),s),zd={},ol=(s,r=zd)=>s._$AH=r,sl=s=>s._$AH,fn=s=>{s._$AR(),s._$AA.remove()};var zr=(s,r)=>{let e=s._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),zr(t,r);return!0},gn=s=>{let r,e;do{if((r=s._$AM)===void 0)break;e=r._$AN,e.delete(s),s=r}while(e?.size===0)},al=s=>{for(let r;r=s._$AM;s=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(s))break;e.add(s),Gd(r)}};function jd(s){this._$AN!==void 0?(gn(this),this._$AM=s,al(this)):this._$AM=s}function Wd(s,r=!1,e=0){let t=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(r)if(Array.isArray(t))for(let n=e;n<t.length;n++)zr(t[n],!1),gn(t[n]);else t!=null&&(zr(t,!1),gn(t));else zr(this,s)}var Gd=s=>{s.type==nr.CHILD&&(s._$AP??=Wd,s._$AQ??=jd)},st=class extends nt{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),al(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(zr(this,r),gn(this))}setValue(r){if(nl(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 Ko=class extends st{constructor(){super(...arguments);this.prevData={}}render(e){return O}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},O}apply(e){let t=this.#e(e),{prevData:i,element:n}=this;for(let o in t){let a=t[o];a!==i[o]&&(a===!0?n.setAttribute(o,""):a===!1?n.removeAttribute(o):a!=null?n.setAttribute(o,String(a)):n.removeAttribute(o))}}groom(e){let{prevData:t,element:i}=this;if(!t)return;let n=e?this.#e(e):{};for(let o in t)(!n||!(o in n))&&i.removeAttribute(o)}#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)))}},Ah=qe(Ko);var ll=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(ll||{}),V=class extends E{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],o=(Array.isArray(t)?t:[t]).filter(c=>c!=="");if(o.length===0)return null;let a=o.filter(c=>i.includes(c)).length,l=o.filter(c=>!i.includes(c)).length;return a===i.length&&l===0&&o.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"),n=this.correctResponse;if(!n)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(n)?[...n]:n}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:W,subscribe:!0})],V.prototype,"_context",2),d([$({context:ge,subscribe:!0})],V.prototype,"configContext",2),d([g({type:String,attribute:"response-identifier"})],V.prototype,"responseIdentifier",2),d([g({reflect:!0,type:Boolean})],V.prototype,"disabled",2),d([g({reflect:!0,type:Boolean})],V.prototype,"readonly",2),d([g({type:String})],V.prototype,"name",2),d([g({type:String,attribute:"correct-response",reflect:!0})],V.prototype,"correctResponseAttr",1),d([g({type:Boolean,attribute:"show-correct-response",reflect:!0})],V.prototype,"showCorrectResponse",2),d([B("showCorrectResponse",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowCorrectResponseChange",2),d([g({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],V.prototype,"showFullCorrectResponse",2),d([B("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowFullCorrectResponseChange",2),d([g({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],V.prototype,"showCandidateCorrection",2),d([B("showCandidateCorrection",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowCandidateCorrectionChange",2),d([M()],V.prototype,"_isFullCorrectResponse",2),d([M()],V.prototype,"_correctResponse",2);var sr=class extends E{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 R=class extends E{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(n=>n.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(n=>n.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(n=>n.value),cardinality:"ordered",type:"response"}:null}case"qti-repeat":{let i=e.getResult();return i?.length>0?i:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",i=this.context?.variables?.find(n=>n.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}}}).flatMap(e=>Array.isArray(e)?e:[e]).filter(e=>e!==null)}static{this.styles=C`
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([$({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`
9
+ <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};d([M()],R.prototype,"result",2),d([$({context:W,subscribe:!0}),M()],R.prototype,"context",2),d([$({context:ir,subscribe:!0}),M()],R.prototype,"qtiContext",2);var be=class extends R{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Xd=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),we=s=>{if(typeof s=="string")return s;let r=Xd();return r==="."?s.toLocaleString():s.toString().replace(".","").replace(r,".")};function Zo(s){return s==null}function bn(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var de=class extends E{constructor(){super(...arguments);this.showHide="show"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e){let t=this._context.variables.find(n=>n.identifier===e)||null;if(this.outcomeIdentifier!==e||!t)return;let i=!1;Array.isArray(t.value)?i=t.value.includes(this.identifier):i=!Zo(this.identifier)&&!Zo(t?.value)&&this.identifier===t.value||!1,this.#e(i)}#e(e){this.showStatus=e&&this.showHide==="show"||!e&&this.showHide==="hide"?"on":"off"}};d([g({type:String,attribute:"show-hide"})],de.prototype,"showHide",2),d([g({type:String,attribute:"outcome-identifier"})],de.prototype,"outcomeIdentifier",2),d([g({type:String})],de.prototype,"identifier",2),d([g({type:String,attribute:!1})],de.prototype,"showStatus",2),d([$({context:W,subscribe:!0}),M()],de.prototype,"_context",2);var cl=class extends E{};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,n]=r.split(" ").map(Number),[o,...a]=e.split(","),l=a.map(Number);switch(o.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+(n-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&&n>=p&&n<=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=(n-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:n},c)}default:return console.warn(`Unsupported shape type: ${o}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,n=e.length-1;i<e.length;n=i++){let o=e[i].x,a=e[i].y,l=e[n].x,c=e[n].y;a>r.y!=c>r.y&&r.x<(l-o)*(r.y-a)/(c-a)+o&&(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),n=parseInt(e,10);if(!isNaN(i)&&!isNaN(n))return i===n;console.error(`Cannot convert ${r} and/or ${e} to int.`);break}case"float":{let i=parseFloat(r),n=parseFloat(e);if(!isNaN(i)&&!isNaN(n))return i===n;console.error(`couldn't convert ${r} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=r.split(" ").sort(),n=e.split(" ").sort();if(i.length===2&&n.length===2)return t==="pair"&&(i.sort(),n.sort()),i.join(" ")===n.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${r} 2: ${e}`);break}}return!1}};var es=s=>{class r extends s{constructor(...i){super(...i);this.testContext=Jo;this.sessionContext=Yo;this._updateItemInTestContext=i=>{let n=i._context,o=n.identifier,a=n.variables,l=this.testContext.items.find(c=>c?.identifier===o);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${o} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(o,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,n){let o=this.testContext.items.find(l=>l.identifier===i);o&&(o.variables=o.variables.map(l=>{let c=n.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=n)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=Jo,this.sessionContext=Yo,this.testContext&&this.testContext.items.length>0)return;this._testElement=i.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(o=>({href:o.href,identifier:o.identifier,category:o.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",i=>{let n=i.detail,o=n.closest("qti-assessment-item-ref")?.identifier;o&&(n.assessmentItemRefId=o),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,n,o){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==i?a:{...a,variables:n.map(l=>{let c=a.variables.find(p=>p.identifier===l.identifier);return c?{...c,...l}:l}),...o!==void 0?{state:o?{...o}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return d([g({attribute:!1,type:Object}),ce({context:_e})],r.prototype,"testContext",2),d([g({attribute:!1,type:Object}),ce({context:it})],r.prototype,"sessionContext",2),r},dl=class extends es(E){};var pl=s=>{class r extends s{constructor(...t){super(...t),this.addEventListener("qti-register-variable",i=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],i.detail.variable]},i.stopPropagation()}),this.addEventListener("qti-set-outcome-value",i=>{let{outcomeIdentifier:n,value:o}=i.detail;this.updateOutcomeVariable(n,o),i.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,i){let n=this.getOutcome(t);if(!n){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(o=>o.identifier!==t?o:{...o,value:n.cardinality==="single"?i:[...o.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var vn=class extends Ka(Za(pl(es(E)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return x`<slot></slot>`}};vn=d([k("qti-test")],vn);var ul={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},Be=class extends E{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([g({type:String})],Be.prototype,"category",2),d([g({type:String})],Be.prototype,"identifier",2),d([g({type:Boolean,converter:ul})],Be.prototype,"required",2),d([g({type:Boolean,converter:ul})],Be.prototype,"fixed",2),d([g({type:String})],Be.prototype,"href",2),d([g({type:Object,attribute:!1})],Be.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Be);var ts={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},ze=class extends E{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([g({type:String})],ze.prototype,"identifier",2),d([g({type:String})],ze.prototype,"required",2),d([g({type:Boolean,converter:ts})],ze.prototype,"fixed",2),d([g({type:Boolean,converter:ts})],ze.prototype,"visible",2),d([g({type:Boolean,converter:ts,attribute:"keep-together"})],ze.prototype,"keepTogether",2),d([$({context:_e,subscribe:!0})],ze.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",ze);var jr,_t=class extends E{constructor(){super(...arguments);L(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 CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};jr=new WeakMap,d([g({type:String})],_t.prototype,"identifier",2),d([g({type:String})],_t.prototype,"title",1),d([$({context:_e,subscribe:!0})],_t.prototype,"_testContext",2),_t=d([k("qti-assessment-test")],_t);var Wr,je=class extends E{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";L(this,Wr,"")}get title(){return I(this,Wr)}set title(e){U(this,Wr,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>`}};Wr=new WeakMap,d([g({type:String})],je.prototype,"identifier",2),d([g({type:String})],je.prototype,"class",2),d([g({type:String,attribute:"navigation-mode"})],je.prototype,"navigationMode",2),d([g({type:String,attribute:"submission-mode"})],je.prototype,"submissionMode",2),je=d([k("qti-test-part")],je);customElements.get("qti-test-part")||customElements.define("qti-test-part",je);var Gr,ar,lr,cr,ve,ue,ml,hl,Xr,Qr,Yr,Jr,Kr,Zr,ei,ti,fl,rs,gl,pe=class extends E{constructor(){super(...arguments);L(this,ue);L(this,Gr);L(this,ar,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:el};L(this,lr,{...this._context,variables:this._context.variables});L(this,cr,[]);L(this,ve,[]);L(this,Xr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},U(this,lr,this._context),e.stopPropagation()});L(this,Qr,e=>{e.stopImmediatePropagation();let t=e.detail;I(this,cr).push(t),(Number(this._context.variables.find(n=>n.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});L(this,Yr,e=>{e.stopImmediatePropagation(),I(this,ve).push(e.detail.interactionElement)});L(this,Jr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});L(this,Kr,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:i}=e.detail;this.updateOutcomeVariable(t,i),e.stopPropagation()});L(this,Zr,e=>{e.stopImmediatePropagation();let{templateIdentifier:t,value:i}=e.detail;this.updateTemplateVariable(t,i??void 0),e.stopPropagation()});L(this,ei,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,value:i}=e.detail;this.updateCorrectResponse(t,i??void 0),e.stopPropagation()});L(this,ti,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:i,state:n}=e.detail;this.updateResponseVariable(t,i),n!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:n}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return I(this,Gr)}set title(e){U(this,Gr,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(n=>n.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(n=>n.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&I(this,cr).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 n=I(this,ve).find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);n&&(n.response=t.response)}}render(){return x`<slot></slot>`}connectedCallback(){P(this,ue,ml).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),P(this,ue,fl).call(this)})}disconnectedCallback(){P(this,ue,hl).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(o=>o.identifier==="numAttempts")?.value+1).toString()),this.adaptive==="false"&&P(this,ue,gl).call(this);let i=this.querySelector("qti-response-processing"),n=!!(i&&typeof i.process=="function");return n&&i.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",P(this,ue,rs).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),n}resetResponses(){this._context=I(this,lr)}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,rs).call(this))}updateTemplateVariable(e,t){let i=this._context.variables.find(o=>o.identifier===e&&o.type==="template");if(!i){console.warn(`Can not set qti-template-identifier: ${e}, it is not available`);return}let n=i.cardinality==="single"?Array.isArray(t)?t[0]:t??null:t==null?null:Array.isArray(t)?t:[t];this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,value:n})},this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateCorrectResponse(e,t){let i=this.getResponse(e);if(!i){console.warn(`Can not set correct response for identifier: ${e}, it is not available`);return}let n=i.cardinality==="single"?Array.isArray(t)?t[0]:t??null:t==null?null:Array.isArray(t)?t:[t];this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,correctResponse:n})},this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}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(n=>n.identifier!==e?n:{...n,value:i.cardinality==="single"||Array.isArray(t)?t:[t]})},I(this,cr).forEach(n=>n.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(n=>n.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()}};Gr=new WeakMap,ar=new WeakMap,lr=new WeakMap,cr=new WeakMap,ve=new WeakMap,ue=new WeakSet,ml=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-set-template-value",I(this,Zr)),this.addEventListener("qti-set-correct-response",I(this,ei)),this.addEventListener("qti-interaction-response",I(this,ti))},hl=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-set-template-value",I(this,Zr)),this.removeEventListener("qti-set-correct-response",I(this,ei)),this.removeEventListener("qti-interaction-response",I(this,ti))},Xr=new WeakMap,Qr=new WeakMap,Yr=new WeakMap,Jr=new WeakMap,Kr=new WeakMap,Zr=new WeakMap,ei=new WeakMap,ti=new WeakMap,fl=async function(){let e=Array.from(this.querySelectorAll("qti-template-declaration"));e.length>0&&(await Promise.all(e.map(t=>t.updateComplete)),await Promise.resolve()),U(this,ar,this.querySelector("qti-template-processing")),I(this,ar)&&(I(this,ar).process(),U(this,lr,{...this._context,variables:this._context.variables}))},rs=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},gl=function(){this._context={...this._context,variables:this._context.variables.map(e=>{if(e.type!=="outcome")return e;let n=("defaultValue"in e?e.defaultValue:null)??null;return n==null&&(e.baseType==="integer"||e.baseType==="float")&&(n="0"),{...e,value:n}})}},d([g({type:String})],pe.prototype,"identifier",2),d([g({type:String})],pe.prototype,"adaptive",2),d([g({type:String})],pe.prototype,"timeDependent",2),d([g({type:String})],pe.prototype,"title",1),d([g({type:Boolean})],pe.prototype,"disabled",2),d([B("disabled",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleDisabledChange",2),d([g({type:Boolean})],pe.prototype,"readonly",2),d([B("readonly",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleReadonlyChange",2),d([ce({context:W})],pe.prototype,"_context",2),pe=d([k("qti-assessment-item")],pe);var is=class s extends Event{constructor(e,t){super(s.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},dr=class extends E{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new is(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([g({type:String})],dr.prototype,"identifier",2),d([g({type:String})],dr.prototype,"href",2),dr=d([k("qti-assessment-stimulus-ref")],dr);var yn=class extends E{};yn=d([k("qti-companion-materials-info")],yn);var ii,ri=class extends E{constructor(){super(...arguments);L(this,ii)}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,ii,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(n=>n.identifier===i)?.value??"",correct:i=>this._context?.variables.find(n=>n.identifier===i)?.correctResponse??""},t={getVariable:i=>this._context?.variables.find(n=>n.identifier===i),updateOutcomeVariable:(i,n)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:n}}))},updateResponseVariable:(i,n)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:i,response:n}}))}};return I(this,ii).call(this,this._context,e,t)}};ii=new WeakMap,d([$({context:W,subscribe:!0}),M()],ri.prototype,"_context",2),ri=d([k("qti-custom-operator")],ri);var ni=class extends de{render(){return x` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};ni.styles=C`
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
- `,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`
19
+ `,ni=d([k("qti-feedback-block")],ni);var Le=s=>s??O;var oi=class extends de{constructor(){super(...arguments);this.render=()=>x` <slot part="feedback" class="${Le(this.showStatus)}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};oi.styles=C`
20
20
  .on {
21
21
  display: inline-block;
22
22
  }
23
23
  .off {
24
24
  display: none;
25
25
  }
26
- `,ii=d([M("qti-feedback-inline")],ii);var _t=class extends de{render(){return x`
26
+ `,oi=d([k("qti-feedback-inline")],oi);var Lt=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 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`
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())}};Lt.styles=C`
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
- `,_t=d([M("qti-modal-feedback")],_t);var Wa=E`
72
+ `,Lt=d([k("qti-modal-feedback")],Lt);var bl=C`
73
73
  :host {
74
74
  display: block;
75
75
  }
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`
76
+ `;var si=class extends E{render(){return x`<slot part="qti-rubric-blocks" name="qti-rubric-block"></slot><slot></slot>`}};si.styles=bl,si=d([k("qti-item-body")],si);var at,xn,vl,ai=class extends E{constructor(){super(...arguments);L(this,at)}render(){return x`<slot @slotchange=${P(this,at,xn)}></slot>`}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>P(this,at,xn).call(this))}updated(e){e.has("context")&&P(this,at,xn).call(this)}};at=new WeakSet,xn=function(){let e=new Map,t=(this.context?.variables??[]).filter(n=>n.type==="template");for(let n of t){let o=n;o.mathVariable!==!0||o.value===null||o.value===void 0||e.set(o.identifier,P(this,at,vl).call(this,o.value))}if(e.size===0)return;let i=Array.from(this.querySelectorAll("*")).filter(n=>n.localName.toLowerCase()==="mi"||n.localName.toLowerCase()==="mn");for(let n of i){let o=n.getAttribute("data-qti-math-variable-source")??n.textContent?.trim()??"",a=e.get(o);if(!a)continue;if(n.localName.toLowerCase()==="mn"){n.textContent=a,n.setAttribute("data-qti-math-variable-source",o);continue}let l=document.createElement("mn");l.textContent=a,l.setAttribute("data-qti-math-variable-source",o),n.replaceWith(l)}},vl=function(e){return Array.isArray(e)?e.join(" "):e?.toString()??""},d([$({context:W,subscribe:!0}),M()],ai.prototype,"context",2),ai=d([k("qti-content-body")],ai);var $e=class extends E{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>`}};$e.styles=C`
77
77
  :host {
78
78
  display: block;
79
79
  }
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`
80
+ `,d([g({type:String})],$e.prototype,"id",2),d([g({type:String})],$e.prototype,"use",2),d([g({type:String})],$e.prototype,"view",2),d([g({type:String,attribute:"class"})],$e.prototype,"classNames",2),d([B("classNames",{waitUntilFirstUpdate:!0})],$e.prototype,"handleclassNamesChange",1),$e=d([k("qti-rubric-block")],$e);var me,li,ns,qn=class extends E{constructor(){super(...arguments);L(this,li);L(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 n=P(this,li,ns).call(this,i);U(this,me,document.createElement("style")),I(this,me).media="screen",I(this,me).textContent=`@scope {${n}}`,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,li,ns).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,li=new WeakSet,ns=function(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()},qn=d([k("qti-stylesheet")],qn);var lt,yl,xl,ql,We=class extends sr{constructor(){super(...arguments);L(this,lt)}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,lt,yl),cardinality:this.cardinality||"single",mapping:I(this,lt,xl),defaultValue:e,areaMapping:I(this,lt,ql),value:null,type:"response",candidateResponse:null};t.value=e,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};lt=new WeakSet,yl=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 n=0;n<i.length;n++)e.push(i[n].textContent.trim()),i[n].remove()}}return e},xl=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(o=>({mapKey:o.getAttribute("map-key")||"",mappedValue:Number(o.getAttribute("mapped-value"))||0,caseSensitive:o.hasAttribute("case-sensitive")?o.getAttribute("case-sensitive")!=="false":!1}))}},ql=function(){let e=this.querySelector("qti-area-mapping"),t=Number(e?.getAttribute("default-value"))||0,i=parseFloat(e?.getAttribute("lower-bound")),n=parseFloat(e?.getAttribute("upper-bound")),o=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(n)?null:n,areaMapEntries:o}},We.styles=[C`
81
81
  :host {
82
82
  display: none;
83
83
  }
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`
84
+ `],d([g({type:String,attribute:"base-type"})],We.prototype,"baseType",2),d([g({type:String})],We.prototype,"identifier",2),d([g({type:String})],We.prototype,"cardinality",2),d([$({context:W,subscribe:!0}),M()],We.prototype,"itemContext",2),We=d([k("qti-response-declaration")],We);var Pe=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 n=parseFloat(i.getAttribute("source-value")),o=parseFloat(i.getAttribute("target-value"));(isNaN(n)||isNaN(o))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(n,o)}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}}))}};Pe.styles=[C`
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([$({context:G,subscribe:!0}),R()],$e.prototype,"itemContext",2),$e=d([M("qti-outcome-declaration")],$e);var Ya=`<qti-response-processing>
88
+ `],d([g({type:String,attribute:"base-type"})],Pe.prototype,"baseType",2),d([g({type:String,attribute:"external-scored"})],Pe.prototype,"externalScored",2),d([g({type:String})],Pe.prototype,"identifier",2),d([g({type:String})],Pe.prototype,"cardinality",2),d([$({context:W,subscribe:!0}),M()],Pe.prototype,"itemContext",2),Pe=d([k("qti-outcome-declaration")],Pe);var wl=`<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>`,Ja=`<qti-response-processing>
105
+ </qti-response-processing>`,El=`<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>`,Ka=`<qti-response-processing>
121
+ </qti-response-processing>`,Cl=`<qti-response-processing>
122
122
  <qti-response-condition>
123
123
  <qti-response-if>
124
124
  <qti-is-null>
@@ -134,53 +134,57 @@ 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 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`
137
+ </qti-response-processing>`;var pr,wn,ci=class extends E{constructor(){super(...arguments);L(this,pr)}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,pr,wn).call(this,El).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(P(this,pr,wn).call(this,Cl).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(P(this,pr,wn).call(this,wl).firstElementChild.firstElementChild);break}}}};pr=new WeakSet,wn=function(e){return document.createRange().createContextualFragment(e)},ci.styles=[C`
138
138
  :host {
139
139
  display: none;
140
140
  }
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`
141
+ `],ci=d([k("qti-response-processing")],ci);var ct,dt,Sl,Al,Tl,Ve=class extends E{constructor(){super(...arguments);L(this,dt);this.identifier="";this.cardinality="single";this.baseType="string";this.mathVariable=!1;this.paramVariable=!1;L(this,ct,null)}render(){return x`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{P(this,dt,Sl).call(this),P(this,dt,Tl).call(this)})}getTemplateVariable(){return{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,value:I(this,ct),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable}}};ct=new WeakMap,dt=new WeakSet,Sl=function(){let e=this.querySelector("qti-default-value");if(!e)return;let t=e.textContent?.trim()||"";U(this,ct,P(this,dt,Al).call(this,t))},Al=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,ct),value:I(this,ct),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable},value:I(this,ct)?.toString()||""};this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))},Ve.styles=[C`
142
142
  :host {
143
143
  display: none;
144
144
  }
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`
145
+ `],d([g({type:String})],Ve.prototype,"identifier",2),d([g({type:String})],Ve.prototype,"cardinality",2),d([g({type:String,attribute:"base-type"})],Ve.prototype,"baseType",2),d([g({type:Boolean,attribute:"math-variable"})],Ve.prototype,"mathVariable",2),d([g({type:Boolean,attribute:"param-variable"})],Ve.prototype,"paramVariable",2),Ve=d([k("qti-template-declaration")],Ve);var En,di=class extends E{constructor(){super(...arguments);L(this,En,100)}render(){return x`<slot></slot>`}process(){if(!this.closest("qti-assessment-item")){console.warn("qti-template-processing must be inside qti-assessment-item");return}let t=0,i=!1;do{if(i=!1,t++,t>I(this,En)){console.error("Template processing exceeded maximum iterations. Possible infinite loop.");break}try{let n=[...this.children];for(let o of n)if(o.tagName.toLowerCase()==="qti-template-constraint"){if(o.calculate()===!1){i=!0;break}}else o.process()}catch(n){console.error("Error during template processing:",n);break}}while(i);this.dispatchEvent(new CustomEvent("qti-template-processing-complete",{bubbles:!0,composed:!0,detail:{iterations:t}}))}firstUpdated(e){this.getAttribute("template")&&console.info("Template processing with external template not yet implemented")}};En=new WeakMap,di.styles=[C`
146
146
  :host {
147
147
  display: none;
148
148
  }
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`
149
+ `],di=d([k("qti-template-processing")],di);var Cn=class extends E{render(){return x`<slot></slot>`}calculate(){let r=[...this.children];if(r.length!==1)return console.error("qti-template-constraint must have exactly one child expression"),!0;try{return!!r[0].calculate()}catch(e){return console.error("Error evaluating template constraint:",e),!0}}getSubRules(){return[]}process(){let r=this.calculate();return r||console.debug("Template constraint not satisfied, restarting template processing"),r}};Cn=d([k("qti-template-constraint")],Cn);var $t=class extends E{constructor(){super(...arguments);this.identifier="";this.cardinality="record"}render(){return x`<slot></slot>`}};$t.styles=[C`
150
+ :host {
151
+ display: none;
152
+ }
153
+ `],d([g({type:String})],$t.prototype,"identifier",2),d([g({type:String})],$t.prototype,"cardinality",2),$t=d([k("qti-context-declaration")],$t);var pi=class extends Lt{render(){return x``}};pi.styles=C`
150
154
  :host {
151
155
  color: gray;
152
156
  }
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`
157
+ `,pi=d([k("qti-test-feedback")],pi);var he,Q,Il,Rl,kl,Ml,_l,Ll,$l,Pl,ye=class extends E{constructor(){super();L(this,Q);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;L(this,he);this.addEventListener("qti-assessment-test-connected",P(this,Q,Ll).bind(this)),this.addEventListener("qti-assessment-item-connected",P(this,Q,Pl).bind(this)),this.addEventListener("qti-interaction-changed",P(this,Q,_l).bind(this)),this.addEventListener("test-end-attempt",P(this,Q,Il).bind(this)),this.addEventListener("test-show-correct-response",P(this,Q,Rl).bind(this)),this.addEventListener("test-show-candidate-correction",P(this,Q,kl).bind(this)),this.addEventListener("test-update-outcome-variable",P(this,Q,Ml).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(n=>({...n,active:this._sessionContext?.navSectionId===n.identifier||!1,completed:n.items.every(o=>this._testContext.items.find(a=>a.identifier===o.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:n.items.map(o=>{let a=this._testContext?.items.find(b=>b.identifier===o.identifier),l={...o,...a,...this.initContext?.find(b=>b.identifier===o.identifier)},c=l.variables?.find(b=>b.identifier=="SCORE")?.value,p=c==null?null:parseFloat(c?.toString()),u=l.variables?.find(b=>b.identifier==="completionStatus")?.value,h=l.variables?.find(b=>b.identifier==="RESPONSE")?.value||"",y=l.variables?.find(b=>b.identifier==="numAttempts")?.value||0,v=this._sessionContext?.navItemRefId===l.identifier||!1,w=o.categories.includes(this.configContext?.infoItemCategory)?null:t++,f=o.variables?.find(b=>b.identifier=="MAXSCORE")?.value,m=f==null?null:parseFloat(f?.toString());return{...l,completionStatus:u,numAttempts:y,score:p,response:h,index:w,active:v,maxScore:m}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};he=new WeakMap,Q=new WeakSet,Il=function(e){let i=I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,n=this.configContext?.reportValidityAfterScoring===!0;i.processResponse(!0,n)},Rl=function(e){let i=I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;i&&i.showCorrectResponse(e.detail)},kl=function(e){I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},Ml=function(e){I(this,he).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},_l=function(e){if(this.autoScoreItems){let t=e.composedPath()[0].closest("qti-assessment-item"),i=t.variables.find(n=>n.identifier==="SCORE");if(i&&i.externalScored===null&&t.adaptive==="false"){let n=this.configContext?.reportValidityAfterScoring===!0;t.processResponse(!0,n)}}},Ll=function(e){if(U(this,he,e.detail),!this.qtiContext.QTI_CONTEXT?.testIdentifier){let n=this.qtiContext.QTI_CONTEXT||{testIdentifier:"",candidateIdentifier:"not set",environmentIdentifier:"default"};this.qtiContext={QTI_CONTEXT:{...n,testIdentifier:I(this,he).identifier,environmentIdentifier:n.environmentIdentifier||"default"}}}I(this,he).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(n=>{let o=P(this,Q,$l).call(this,n);Object.keys(o).length>0&&(this.qtiContext={QTI_CONTEXT:{...o,...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(n=>{let o=[...n.querySelectorAll("qti-assessment-section")];return{active:!1,identifier:n.identifier,navigationMode:n.navigationMode,submissionMode:n.submissionMode,sections:o.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:[]}))}})}})}},$l=function(e){let t={},i=e.querySelector("qti-default-value");return i&&i.querySelectorAll("qti-value[field-identifier]").forEach(o=>{let a=o.getAttribute("field-identifier"),l=o.getAttribute("base-type")||"string",c=o.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},Pl=function(e){let t=e.detail;this.computedContext={...this.computedContext,testParts:this.computedContext.testParts.map(i=>({...i,sections:i.sections.map(n=>({...n,items:n.items.map(o=>{if(o.identifier!==t.parentElement.getAttribute("identifier"))return o;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 w=v.querySelector("qti-mapping"),f=v.querySelector("qti-area-mapping");return w?.querySelector("qti-map-entry")||f?.querySelector("qti-area-map-entry")}),h=p||u,y=!!t.querySelector("qti-response-processing");return{...o,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([g({type:String})],ye.prototype,"identifier",2),d([M()],ye.prototype,"initContext",2),d([M(),ce({context:ir})],ye.prototype,"qtiContext",2),d([M(),ce({context:ge})],ye.prototype,"configContext",2),d([M(),$({context:_e,subscribe:!0})],ye.prototype,"_testContext",2),d([M(),$({context:it,subscribe:!0})],ye.prototype,"_sessionContext",2),d([M(),ce({context:G})],ye.prototype,"computedContext",2),d([g({type:Boolean,attribute:"auto-score-items"})],ye.prototype,"autoScoreItems",2),ye=d([k("test-navigation")],ye);var Vl=C`
154
158
  display: inline-flex;
155
159
  align-items: center;
156
160
  cursor: pointer;
157
161
  padding: 0.5rem 1rem;
158
162
  border-radius: 0.25rem;
159
163
  user-select: none;
160
- `,ie=E`
164
+ `,ie=C`
161
165
  background-color: lightgray;
162
- ${dl};
163
- `,oe=E`
166
+ ${Vl};
167
+ `,ne=C`
164
168
  cursor: not-allowed;
165
169
  opacity: 0.8;
166
- `,ov=E`
167
- ${dl};
170
+ `,Uv=C`
171
+ ${Vl};
168
172
  border: 1px solid gray;
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`
173
+ `;var ur,pt=class extends E{constructor(){super();this._internalDisabled=!0;L(this,ur);U(this,ur,this.attachInternals()),I(this,ur).role="button",I(this,ur).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>`}};ur=new WeakMap,pt.styles=C`
170
174
  :host {
171
175
  ${ie};
172
176
  }
173
177
  :host([disabled]) {
174
- ${oe};
178
+ ${ne};
175
179
  }
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`
180
+ `,d([g({type:Boolean,reflect:!0,attribute:"disabled"})],pt.prototype,"_internalDisabled",2),d([$({context:G,subscribe:!0})],pt.prototype,"computedContext",2),d([B("computedContext")],pt.prototype,"_handleTestElementChange",1),pt=d([k("test-next")],pt);var ut=class extends E{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>`}};ut.styles=C`
177
181
  :host {
178
182
  ${ie};
179
183
  }
180
184
  :host([disabled]) {
181
- ${oe};
185
+ ${ne};
182
186
  }
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`
187
+ `,d([g({type:Boolean,reflect:!0,attribute:"disabled"})],ut.prototype,"_internalDisabled",2),d([$({context:G,subscribe:!0})],ut.prototype,"computedContext",2),d([B("computedContext")],ut.prototype,"_handleTestElementChange",1),ut=d([k("test-prev")],ut);var ui,os,oe=class extends E{constructor(){super(...arguments);L(this,ui);this.label="view";this._handleViewOptionsChange=()=>{P(this,ui,os).call(this)};this._viewOptions=oe.DEFAULT_VIEW_OPTIONS}connectedCallback(){super.connectedCallback(),P(this,ui,os).call(this)}_switchView(e){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:e}))}render(){return x`
184
188
  <label part="label" for="viewSelect">${this.label}</label>
185
189
  <select
186
190
  part="select"
@@ -189,31 +193,31 @@ Make sure to test your application with a production build as repeat registratio
189
193
  >
190
194
  ${this._viewOptions.map(e=>x`<option value="${e}" ?selected=${e===this.sessionContext.view}>${e}</option>`)}
191
195
  </select>
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`
196
+ `}};ui=new WeakSet,os=function(){if(this.viewOptions){let e=this.viewOptions.split(",").map(t=>t.trim());this._viewOptions=e.filter(t=>oe.DEFAULT_VIEW_OPTIONS.includes(t))}else this._viewOptions=oe.DEFAULT_VIEW_OPTIONS},oe.DEFAULT_VIEW_OPTIONS=["author","candidate","proctor","scorer","testConstructor","tutor"],d([$({context:it,subscribe:!0})],oe.prototype,"sessionContext",2),d([g({type:String})],oe.prototype,"label",2),d([g({type:String,attribute:"view-options"})],oe.prototype,"viewOptions",2),d([B("viewOptions",{waitUntilFirstUpdate:!0})],oe.prototype,"_handleViewOptionsChange",2),d([M()],oe.prototype,"_viewOptions",2),oe=d([k("test-view")],oe);var mr=class extends E{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> `}};mr.styles=C`
193
197
  :host {
194
198
  ${ie};
195
199
  }
196
200
  :host([disabled]) {
197
- ${oe};
201
+ ${ne};
198
202
  }
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`
203
+ `,d([g({type:String,attribute:"item-id"})],mr.prototype,"itemId",2),mr=d([k("test-item-link")],mr);var mi=class extends E{constructor(){super(),this.addEventListener("click",()=>this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})))}render(){return x` <slot></slot> `}};mi.styles=C`
200
204
  :host {
201
205
  ${ie};
202
206
  }
203
207
  :host([disabled]) {
204
- ${oe};
208
+ ${ne};
205
209
  }
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`
210
+ `,mi=d([k("test-end-attempt")],mi);var hi,hr,Dl,Nl,Ee=class extends E{constructor(){super(...arguments);L(this,hr);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";L(this,hi)}willUpdate(e){let t=this.computedContext?.testParts.flatMap(i=>i.sections.flatMap(n=>n.items)).find(i=>i.active);if(I(this,hi)!==t&&(this.shown=!1,U(this,hi,t)),t){let i=!!t?.variables?.some(o=>o.correctResponse),n=!!t?.variables?.some(o=>o.mapping?.mapEntries?.length>0||o.areaMapping?.areaMapEntries?.length>0);this.disabled=!i&&!n}else this.disabled=!0}render(){return x` <div @click="${P(this,hr,Dl)}">${P(this,hr,Nl).call(this)}</div> `}};hi=new WeakMap,hr=new WeakSet,Dl=function(){this.disabled||(this.shown=!this.shown,this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:this.shown,bubbles:!0})))},Nl=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},Ee.styles=C`
207
211
  :host {
208
212
  ${ie};
209
213
  }
210
214
  :host([disabled]) {
211
- ${oe};
215
+ ${ne};
212
216
  }
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;
217
+ `,d([$({context:G,subscribe:!0})],Ee.prototype,"computedContext",2),d([g({type:Boolean,reflect:!0})],Ee.prototype,"shown",2),d([g({type:Boolean,reflect:!0})],Ee.prototype,"disabled",2),d([g({type:String})],Ee.prototype,"showCorrectText",2),d([g({type:String})],Ee.prototype,"hideCorrectText",2),d([g({type:String})],Ee.prototype,"noCorrectResponseText",2),Ee=d([k("test-show-correct-response")],Ee);var _n=globalThis,Sn=_n.trustedTypes,Ol=Sn?Sn.createPolicy("lit-html",{createHTML:s=>s}):void 0,as="$lit$",Ge=`lit$${Math.random().toFixed(9).slice(2)}$`,ls="?"+Ge,Qd=`<${ls}>`,Nt=_n.document===void 0?{createTreeWalker:()=>({})}:document,An=()=>Nt.createComment(""),gi=s=>s===null||typeof s!="object"&&typeof s!="function",cs=Array.isArray,jl=s=>cs(s)||typeof s?.[Symbol.iterator]=="function",ss=`[
218
+ \f\r]`,fi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Hl=/-->/g,Fl=/>/g,Vt=RegExp(`>|${ss}(?:([^\\s"'>=/]+)(${ss}*=${ss}*(?:[^
219
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Ul=/'/g,Bl=/"/g,Wl=/^(?:script|style|textarea|title)$/i,ds=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),Cy=ds(1),Sy=ds(2),Ay=ds(3),Ot=Symbol.for("lit-noChange"),X=Symbol.for("lit-nothing"),zl=new WeakMap,Dt=Nt.createTreeWalker(Nt,129);function Gl(s,r){if(!cs(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ol!==void 0?Ol.createHTML(r):r}var Xl=(s,r)=>{let e=s.length-1,t=[],i,n=r===2?"<svg>":r===3?"<math>":"",o=fi;for(let a=0;a<e;a++){let l=s[a],c,p,u=-1,h=0;for(;h<l.length&&(o.lastIndex=h,p=o.exec(l),p!==null);)h=o.lastIndex,o===fi?p[1]==="!--"?o=Hl:p[1]!==void 0?o=Fl:p[2]!==void 0?(Wl.test(p[2])&&(i=RegExp("</"+p[2],"g")),o=Vt):p[3]!==void 0&&(o=Vt):o===Vt?p[0]===">"?(o=i??fi,u=-1):p[1]===void 0?u=-2:(u=o.lastIndex-p[2].length,c=p[1],o=p[3]===void 0?Vt:p[3]==='"'?Bl:Ul):o===Bl||o===Ul?o=Vt:o===Hl||o===Fl?o=fi:(o=Vt,i=void 0);let y=o===Vt&&s[a+1].startsWith("/>")?" ":"";n+=o===fi?l+Qd:u>=0?(t.push(c),l.slice(0,u)+as+l.slice(u)+Ge+y):l+Ge+(u===-2?a:y)}return[Gl(s,n+(s[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},bi=class s{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let n=0,o=0,a=r.length-1,l=this.parts,[c,p]=Xl(r,e);if(this.el=s.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(as)){let h=p[o++],y=i.getAttribute(u).split(Ge),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:n,name:v[2],strings:y,ctor:v[1]==="."?In:v[1]==="?"?Rn:v[1]==="@"?kn:Ft}),i.removeAttribute(u)}else u.startsWith(Ge)&&(l.push({type:6,index:n}),i.removeAttribute(u));if(Wl.test(i.tagName)){let u=i.textContent.split(Ge),h=u.length-1;if(h>0){i.textContent=Sn?Sn.emptyScript:"";for(let y=0;y<h;y++)i.append(u[y],An()),Dt.nextNode(),l.push({type:2,index:++n});i.append(u[h],An())}}}else if(i.nodeType===8)if(i.data===ls)l.push({type:2,index:n});else{let u=-1;for(;(u=i.data.indexOf(Ge,u+1))!==-1;)l.push({type:7,index:n}),u+=Ge.length-1}n++}}static createElement(r,e){let t=Nt.createElement("template");return t.innerHTML=r,t}};function Ht(s,r,e=s,t){if(r===Ot)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,n=gi(r)?void 0:r._$litDirective$;return i?.constructor!==n&&(i?._$AO?.(!1),n===void 0?i=void 0:(i=new n(s),i._$AT(s,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=Ht(s,i._$AS(s,r.values),i,t)),r}var Tn=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??Nt).importNode(e,!0);Dt.currentNode=i;let n=Dt.nextNode(),o=0,a=0,l=t[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new vi(n,n.nextSibling,this,r):l.type===1?c=new l.ctor(n,l.name,l.strings,this,r):l.type===6&&(c=new Mn(n,this,r)),this._$AV.push(c),l=t[++a]}o!==l?.index&&(n=Dt.nextNode(),o++)}return Dt.currentNode=Nt,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++}},vi=class s{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=Ht(this,r,e),gi(r)?r===X||r==null||r===""?(this._$AH!==X&&this._$AR(),this._$AH=X):r!==this._$AH&&r!==Ot&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):jl(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&&gi(this._$AH)?this._$AA.nextSibling.data=r:this.T(Nt.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=bi.createElement(Gl(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let n=new Tn(i,this),o=n.u(this.options);n.p(e),this.T(o),this._$AH=n}}_$AC(r){let e=zl.get(r.strings);return e===void 0&&zl.set(r.strings,e=new bi(r)),e}k(r){cs(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let n of r)i===e.length?e.push(t=new s(this.O(An()),this.O(An()),this,this.options)):t=e[i],t._$AI(n),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))}},Ft=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,n){this.type=1,this._$AH=X,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=n,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 n=this.strings,o=!1;if(n===void 0)r=Ht(this,r,e,0),o=!gi(r)||r!==this._$AH&&r!==Ot,o&&(this._$AH=r);else{let a=r,l,c;for(r=n[0],l=0;l<n.length-1;l++)c=Ht(this,a[t+l],e,l),c===Ot&&(c=this._$AH[l]),o||=!gi(c)||c!==this._$AH[l],c===X?r=X:r!==X&&(r+=(c??"")+n[l+1]),this._$AH[l]=c}o&&!i&&this.j(r)}j(r){r===X?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},In=class extends Ft{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===X?void 0:r}},Rn=class extends Ft{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==X)}},kn=class extends Ft{constructor(r,e,t,i,n){super(r,e,t,i,n),this.type=5}_$AI(r,e=this){if((r=Ht(this,r,e,0)??X)===Ot)return;let t=this._$AH,i=r===X&&t!==X||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,n=r!==X&&(t===X||i);i&&this.element.removeEventListener(this.name,this,t),n&&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)}},Mn=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){Ht(this,r)}},ee={M:as,P:Ge,A:ls,C:1,L:Xl,R:Tn,D:jl,V:Ht,I:vi,H:Ft,N:Rn,U:kn,B:In,F:Mn},Yd=_n.litHtmlPolyfillSupport;Yd?.(bi,vi),(_n.litHtmlVersions??=[]).push("3.3.1");var Ln=["this"],Ql=["+","-","!"],Yl=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],ps={"!":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},$n=13;var Jd=["==","!=","<=",">=","||","&&","??","|>"],Kd=["===","!=="],D;(function(s){s[s.STRING=1]="STRING",s[s.IDENTIFIER=2]="IDENTIFIER",s[s.DOT=3]="DOT",s[s.COMMA=4]="COMMA",s[s.COLON=5]="COLON",s[s.INTEGER=6]="INTEGER",s[s.DECIMAL=7]="DECIMAL",s[s.OPERATOR=8]="OPERATOR",s[s.GROUPER=9]="GROUPER",s[s.KEYWORD=10]="KEYWORD",s[s.ARROW=11]="ARROW"})(D||(D={}));var De=(s,r,e=0)=>({kind:s,value:r,precedence:e}),Zd=s=>s===9||s===10||s===13||s===32,Jl=s=>s===95||s===36||(s&=-33,65<=s&&s<=90),ep=s=>Jl(s)||yi(s),tp=s=>Ln.indexOf(s)!==-1,rp=s=>s===34||s===39,yi=s=>48<=s&&s<=57,ip=s=>s===43||s===45||s===42||s===47||s===33||s===38||s===37||s===60||s===61||s===62||s===63||s===94||s===124,np=s=>s===40||s===41||s===91||s===93||s===123||s===125,op=s=>s.replace(/\\(.)/g,(r,e)=>{switch(e){case"n":return`
220
+ `;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),Pn=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#n()}nextToken(){for(;Zd(this.#i);)this.#n(!0);if(rp(this.#i))return this.#a();if(Jl(this.#i))return this.#c();if(yi(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(ip(this.#i))return this.#b();if(np(this.#i))return this.#f();if(this.#n(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#n(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}#o(r=0){let e=this.#e.substring(this.#r,this.#t+r);return r===0&&this.#s(),e}#s(){this.#r=this.#t}#a(){let r="unterminated string",e=this.#i;for(this.#n(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(r);if(this.#i===92&&(this.#n(),this.#i===void 0))throw new Error(r);this.#n()}let t=De(D.STRING,op(this.#o()));return this.#n(),t}#c(){do this.#n();while(ep(this.#i));let r=this.#o(),e=tp(r)?D.KEYWORD:D.IDENTIFIER;return De(e,r)}#d(){do this.#n();while(yi(this.#i));return this.#i===46?this.#l():De(D.INTEGER,this.#o())}#l(){return this.#n(),yi(this.#i)?this.#g():(this.#s(),De(D.DOT,".",$n))}#u(){return this.#n(!0),De(D.COMMA,",")}#h(){return this.#n(!0),De(D.COLON,":")}#g(){do this.#n();while(yi(this.#i));return De(D.DECIMAL,this.#o())}#b(){this.#n();let r=this.#o(2);if(Kd.indexOf(r)!==-1)this.#n(),this.#n();else{if(r=this.#o(1),r==="=>")return this.#n(),De(D.ARROW,r);Jd.indexOf(r)!==-1&&this.#n()}return r=this.#o(),De(D.OPERATOR,r,ps[r])}#f(){let r=String.fromCharCode(this.#i),e=De(D.GROUPER,r,ps[r]);return this.#n(!0),e}};var us=(s,r)=>new xi(s,r).parse(),xi=class{#e;#t;#r;#i;#n;constructor(r,e){this.#t=new Pn(r),this.#r=e}parse(){return this.#o(),this.#s()}#o(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.#n=t?.value}_matches(r,e){return!(r&&this.#e!==r||e&&this.#n!==e)}#s(){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(D.GROUPER,"(")){let t=this.#p();r=this.#r.invoke(r,void 0,t)}else if(this._matches(D.GROUPER,"[")){let t=this.#v();r=this.#r.index(r,t)}else if(this._matches(D.DOT)){this.#o();let t=this.#l();r=this.#c(r,t)}else{if(this._matches(D.KEYWORD))break;if(this._matches(D.OPERATOR)&&this.#i.precedence>=e)r=this.#n==="?"?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(Yl.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#o();let t=this.#l();for(;(this.#e===D.OPERATOR||this.#e===D.DOT||this.#e===D.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(D.OPERATOR)){let r=this.#n;if(this.#o(),r==="+"||r==="-"){if(this._matches(D.INTEGER))return this.#m(r);if(this._matches(D.DECIMAL))return this.#w(r)}if(Ql.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#h(),$n);return this.#r.unary(r,e)}return this.#h()}#u(r){this.#o(D.OPERATOR,"?");let e=this.#s();this.#o(D.COLON);let t=this.#s();return this.#r.ternary(r,e,t)}#h(){switch(this.#e){case D.KEYWORD:let r=this.#n;if(r==="this")return this.#o(),this.#r.id(r);throw Ln.indexOf(r)!==-1?new Error(`unexpected keyword: ${r}`):new Error(`unrecognized keyword: ${r}`);case D.IDENTIFIER:return this.#f();case D.STRING:return this.#q();case D.INTEGER:return this.#m();case D.DECIMAL:return this.#w();case D.GROUPER:return this.#n==="("?this.#x():this.#n==="{"?this.#b():this.#n==="["?this.#g():void 0;case D.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let r=[];do{if(this.#o(),this._matches(D.GROUPER,"]"))break;r.push(this.#s())}while(this._matches(D.COMMA));return this.#o(D.GROUPER,"]"),this.#r.list(r)}#b(){let r={};do{if(this.#o(),this._matches(D.GROUPER,"}"))break;let e=this.#n;(this._matches(D.STRING)||this._matches(D.IDENTIFIER))&&this.#o(),this.#o(D.COLON),r[e]=this.#s()}while(this._matches(D.COMMA));return this.#o(D.GROUPER,"}"),this.#r.map(r)}#f(){let r=this.#n;if(r==="true")return this.#o(),this.#r.literal(!0);if(r==="false")return this.#o(),this.#r.literal(!1);if(r==="null")return this.#o(),this.#r.literal(null);if(r==="undefined")return this.#o(),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(D.IDENTIFIER))throw new Error(`expected identifier: ${this.#n}`);let r=this.#n;return this.#o(),this.#r.id(r)}#p(){if(!this._matches(D.GROUPER,"("))return;let r=[];do{if(this.#o(),this._matches(D.GROUPER,")"))break;let e=this.#s();r.push(e)}while(this._matches(D.COMMA));return this.#o(D.GROUPER,")"),r}#v(){this.#o();let r=this.#s();return this.#o(D.GROUPER,"]"),r}#x(){let r=this.#p();if(this._matches(D.ARROW)){this.#o();let e=this.#s(),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.#n);return this.#o(),r}#m(r=""){let e=this.#r.literal(parseInt(`${r}${this.#n}`,10));return this.#o(),e}#w(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#n}`));return this.#o(),e}};var{hasOwn:Kl,fromEntries:sp}=Object,ap={"+":(s,r)=>s+r,"-":(s,r)=>s-r,"*":(s,r)=>s*r,"/":(s,r)=>s/r,"%":(s,r)=>s%r,"==":(s,r)=>s==r,"!=":(s,r)=>s!=r,"===":(s,r)=>s===r,"!==":(s,r)=>s!==r,">":(s,r)=>s>r,">=":(s,r)=>s>=r,"<":(s,r)=>s<r,"<=":(s,r)=>s<=r,"||":(s,r)=>s||r,"&&":(s,r)=>s&&r,"??":(s,r)=>s??r,"|":(s,r)=>r(s),"|>":(s,r)=>r(s)},lp={"+":s=>s,"-":s=>-s,"!":s=>!s},Vn=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=lp[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=ap[e];return{type:"Binary",operator:e,left:r,right:t,evaluate(n){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 o=this.right.evaluate(n),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(n),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(n),l=this.left.argument.evaluate(n)):this.left.type==="ID"&&(a=n,l=this.left.value),a===void 0?void 0:a[l]=o}return i(this.left.evaluate(n),this.right.evaluate(n))},getIds(n){return this.left.getIds(n),this.right.getIds(n),n}}}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 n=this.receiver.evaluate(i),o=this.method?n:i?.this??i,a=this.method?n?.[e]:n,c=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(o,c)},getIds(i){return this.receiver.getIds(i),this.arguments?.forEach(n=>n?.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 n=this.entries[i];n&&(t[i]=n.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,n=this.body;return function(...o){let a=sp(i.map((c,p)=>[c,o[p]])),l=new Proxy(t??{},{set(c,p,u){return Kl(a,p)&&(a[p]=u),c[p]=u},get(c,p){return Kl(a,p)?a[p]:c[p]}});return n.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var ms=null,Zl={boundAttributeSuffix:ee.M,marker:ee.P,markerMatch:ee.A,HTML_RESULT:ee.C,getTemplateHtml:ee.L,overrideDirectiveResolve:(s,r)=>class extends s{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(s,r)=>{if(s.prototype._$AS.name!==r.name){ms??=s.prototype._$AS.name;for(let e=s.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(ms))return void(e[ms]=r);throw Error("Internal error: It is possible that both dev mode and production mode Lit was mixed together during SSR. Please comment on the issue: https://github.com/lit/lit/issues/4527")}},setDirectiveClass(s,r){s._$litDirective$=r},getAttributePartCommittedValue:(s,r,e)=>{let t=Ot;return s.j=i=>t=i,s._$AI(r,s,e),t},connectedDisconnectable:s=>({...s,_$AU:!0}),resolveDirective:ee.V,AttributePart:ee.H,PropertyPart:ee.B,BooleanAttributePart:ee.N,EventPart:ee.U,ElementPart:ee.F,TemplateInstance:ee.R,isIterable:ee.D,ChildPart:ee.I};var{AttributePart:cp,PropertyPart:dp,BooleanAttributePart:pp,EventPart:up}=Zl,fs=new Vn,hs=new Map,ec=s=>s.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),Dn=(s,r)=>{let e=hs.get(s);if(e===void 0){if(hs.has(s))return;if(s=s.trim(),s.startsWith("{{")&&s.endsWith("}}")){let t=s.substring(2,s.length-2).trim();e=new xi(t,fs).parse(),hs.set(s,e)}}return e?.evaluate(r)},mp=(s,r,e,t)=>{let i=s.getAttribute("if");if(i!==null&&Dn(i,r))return Nn(s,r,e,t)},tc=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,rc=s=>/(?:\\{{)|(?:\\}})/g.test(s),qi=s=>s.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),hp=(s,r,e,t)=>{let i=s.getAttribute("repeat");if(i!==null){let n=Dn(i,r);if(!n[Symbol.iterator])return X;let o=wi(s),a=-1,l=[];for(let c of n){a++;let p=Object.create(r);p.item=c,p.index=a,p.this=r.this??r;let u=[];for(let y of o.parts){let v=y.update(p,e,t);y.type===1?u.push(...v):u.push(v)}let h={_$litType$:o,values:u};l.push(h)}return l}},nc={if:mp,repeat:hp},Ne=(s,r=nc,e={},t)=>{let n=wi(s).renderers;if(t){let a=wi(t).renderers,l=n.super;l!==void 0?e={...n,...e,super:(c,p,u)=>(u={...a,...u,super:(h,y,v)=>Nn(t,h,y,v)},l(c,p,u))}:(e={...a,...n,...e},s=t)}else e={...n,...e};return o=>Nn(s,o,r,e)};var Nn=(s,r,e=nc,t={})=>{let i=wi(s),n=[];for(let a of i.parts){let l=a.update(r,e,t);a.type===1?n.push(...l):n.push(l)}return{_$litType$:i,values:n}},ic=new Map,wi=s=>{let r=ic.get(s);return r===void 0&&ic.set(s,r=fp(s)),r},fp=s=>{let r={h:void 0,el:s.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(r.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,i=-1,n=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)i++;else if(t.nodeType===Node.ELEMENT_NODE){i++;let o=t;if(o.tagName==="TEMPLATE"){let l=o.getAttribute("type"),c=o.getAttribute("name"),p=o.getAttribute("call");if(p!==null||l!==null||c!==null){o.parentNode.insertBefore(document.createComment(""),o),n.push(o);let u;if(p!==null){let h=p.trim(),y=h.startsWith("{{")&&h.endsWith("}}");u=(v,w,f)=>{let m=o.getAttribute("data"),b=m===null?void 0:Dn(m,v);return(y?Dn(h,v):f[p])?.(b,w,f)}}else l!==null?u=(h,y,v)=>{let w=y[l];return w?.(o,h,y,v)}:(c==="super"?r.renderers.super=(h,y,v)=>{let w=v.super,f=wi(o);return v={...v,...f.renderers},w(h,y,v)}:r.renderers[c]=(h,y,v)=>Nn(o,h,y,v),u=(h,y,v)=>{let w=v[c];return w?.(h,y,v)});r.parts.push({type:2,index:i,update:u});continue}}let a=o.getAttributeNames();for(let l of a){let c=o.getAttribute(l),p=c.split(tc);if(p.length===1){rc(c)&&o.setAttribute(l,qi(c));continue}o.removeAttribute(l);let u=l,h=cp,y=l[0];y==="."?(u=ec(l.substring(1)),h=dp):y==="?"?(u=l.substring(1),h=pp):y==="@"&&(u=ec(l.substring(1)),h=up);let v=[qi(p[0])],w=[];for(let f=1;f<p.length;f+=2){let m=p[f];w.push(us(m,fs)),v.push(qi(p[f+1]))}r.parts.push({type:1,index:i,name:u,strings:v,ctor:h,update:(f,m,b)=>w.map(q=>q.evaluate(f))})}}else if(t.nodeType===Node.TEXT_NODE){let o=t,a=o.textContent,l=a.split(tc);l.length>1?o.textContent=qi(l[0]):rc(a)&&(o.textContent=qi(a));for(let c=1;c<l.length;c+=2){let p=l[c],u=us(p,fs);r.parts.push({type:2,index:++i,update:(y,v)=>u.evaluate(y)});let h=new Text(l[c+1].replace("\\{{","{{"));o.parentNode.insertBefore(h,o.nextSibling),o.parentNode.insertBefore(document.createComment(""),o.nextSibling),o=h,e.currentNode=h}}for(let o of n)o.remove();return r};var Ci,Ei=class extends E{constructor(){super();L(this,Ci);U(this,Ci,this.attachInternals()),I(this,Ci).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ne(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}))} `}};Ci=new WeakMap,d([$({context:G,subscribe:!0})],Ei.prototype,"computedContext",2),Ei=d([k("test-paging-buttons-stamp")],Ei);var On=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},Hn=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 oc=s=>!il(s)&&typeof s.then=="function",sc=1073741823,gs=class extends st{constructor(){super(...arguments),this._$Cwt=sc,this._$Cbt=[],this._$CK=new On(this),this._$CX=new Hn}render(...r){return r.find(e=>!oc(e))??re}update(r,e){let t=this._$Cbt,i=t.length;this._$Cbt=e;let n=this._$CK,o=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!oc(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=sc,i=0,Promise.resolve(l).then(async c=>{for(;o.get();)await o.get();let p=n.deref();if(p!==void 0){let u=p._$Cbt.indexOf(l);u>-1&&u<p._$Cwt&&(p._$Cwt=u,p.setValue(c))}}))}return re}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},Fn=qe(gs);var Un=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
217
221
 
218
222
  /* https://www.imsglobal.org/sites/default/files/spec/qti/v3/guide/img/qti3p0.css */
219
223
 
@@ -3786,12 +3790,12 @@ div.full-correct-response-inline {
3786
3790
  margin-right: var(--qti-padding-horizontal);
3787
3791
  padding: 0.2rem;
3788
3792
  }
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)}
3793
+ `;var Si,fr,ac,lc,Xe=class extends E{constructor(){super(...arguments);L(this,fr);this.testURL=null;this.testDoc=null;this.testXML=null;L(this,Si,null)}async handleTestURLChange(){if(this.testURL)try{let e=await er().load(this.testURL),t=this.closest("qti-test");if(t?.postLoadTestTransformCallback){let n=e.htmlDoc().querySelector("qti-assessment-test");n&&(e=await t.postLoadTestTransformCallback(e,n))}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,fr,ac).call(this),P(this,fr,lc).call(this),this.testURL&&this.handleTestURLChange(),this.testXML&&this.handleTestXMLChange()}render(){return x`
3794
+ ${I(this,Si)}
3791
3795
  <slot></slot>
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`
3794
- <h3>${s}</h3>
3796
+ ${Fn(this.testDoc,x`<span>Loading...</span>`)}
3797
+ `}};Si=new WeakMap,fr=new WeakSet,ac=function(){let e=this.querySelector("template");U(this,Si,e?e.content:x``)},lc=function(){let e=new CSSStyleSheet;e.replaceSync(Un),this.shadowRoot.adoptedStyleSheets=[e]},d([g({type:String,attribute:"test-url"})],Xe.prototype,"testURL",2),d([M()],Xe.prototype,"testDoc",2),d([M()],Xe.prototype,"testXML",2),d([B("testURL",{waitUntilFirstUpdate:!0})],Xe.prototype,"handleTestURLChange",1),d([B("testXML",{waitUntilFirstUpdate:!0})],Xe.prototype,"handleTestXMLChange",1),Xe=d([k("test-container")],Xe);var gr=class extends E{render(){let r=this.computedContext?.testParts.flatMap(n=>n.sections.flatMap(o=>o.items)).find(n=>n.active);if(!r||!r.variables)return x``;let e=r.variables.filter(n=>n.type==="response"),t=r.variables.filter(n=>n.type==="outcome"),i=(n,o)=>x`
3798
+ <h3>${o}</h3>
3795
3799
  <table>
3796
3800
  <thead>
3797
3801
  <tr>
@@ -3803,7 +3807,7 @@ div.full-correct-response-inline {
3803
3807
  </tr>
3804
3808
  </thead>
3805
3809
  <tbody>
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`
3810
+ ${n.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`
3807
3811
  <tr>
3808
3812
  <td>${a.identifier}</td>
3809
3813
  <td>${Array.isArray(a.value)?a.value.join(", "):a.value}</td>
@@ -3816,7 +3820,7 @@ div.full-correct-response-inline {
3816
3820
  </table>
3817
3821
  `;return x`
3818
3822
  ${i(e,"Response Variables")} ${i(t,"Outcome Variables")}
3819
- `}};hr.styles=E`
3823
+ `}};gr.styles=C`
3820
3824
  table {
3821
3825
  width: 100%;
3822
3826
  border-collapse: collapse;
@@ -3837,68 +3841,68 @@ div.full-correct-response-inline {
3837
3841
  margin-top: 20px;
3838
3842
  font-size: 16px;
3839
3843
  }
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`
3844
+ `,d([$({context:G,subscribe:!0})],gr.prototype,"computedContext",2),gr=d([k("test-print-item-variables")],gr);var Ti,Ai=class extends E{constructor(){super();L(this,Ti);U(this,Ti,this.attachInternals()),I(this,Ti).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ne(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}))} `}};Ti=new WeakMap,d([$({context:G,subscribe:!0})],Ai.prototype,"computedContext",2),Ai=d([k("test-section-buttons-stamp")],Ai);var Bn,cc,br=class extends E{constructor(){super();L(this,Bn);this.sectionId=null;this.addEventListener("click",()=>P(this,Bn,cc).call(this,this.sectionId))}render(){return x` <slot></slot> `}};Bn=new WeakSet,cc=function(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"section",id:e}}))},br.styles=C`
3841
3845
  :host {
3842
3846
  ${ie};
3843
3847
  }
3844
3848
  :host([disabled]) {
3845
- ${oe};
3849
+ ${ne};
3846
3850
  }
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`
3851
+ `,d([g({type:String,attribute:"section-id"})],br.prototype,"sectionId",2),br=d([k("test-section-link")],br);var Ii=class extends E{render(){return x` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};d([M(),$({context:G,subscribe:!0})],Ii.prototype,"computedContext",2),Ii=d([k("test-print-context")],Ii);var Ut=class extends E{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=Ne(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(h=>h.active),i=t?.sections.find(h=>h.active),n=i?.items.find(h=>h.active),{variables:o,...a}=n||{};if(!t||!i||!n)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>`:O}
3852
+ ${this.myTemplate?this.myTemplate(this.stampContext):O}`}};d([g({type:Boolean,reflect:!0})],Ut.prototype,"debug",2),d([M(),$({context:G,subscribe:!0})],Ut.prototype,"computedContext",2),d([M()],Ut.prototype,"stampContext",2),Ut=d([k("test-stamp")],Ut);var zn,dc,Bt=class extends E{constructor(){super();L(this,zn);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,zn,dc).call(this,i)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Ne(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"),n=i?.value,o=i?.externalScored!=="human";if(!t||!i)return O;let a=[...Array(Number(t)+1).keys()];return x`${this.myTemplate?this.myTemplate({scores:a,score:n,disabled:o}):O}`}};zn=new WeakSet,dc=function(e){let n=(this.computedContext?.testParts.find(o=>o.active)).sections.flatMap(o=>o.items).find(o=>o.active)?.identifier;this.dispatchEvent(new CustomEvent("test-update-outcome-variable",{detail:{assessmentItemRefId:n,outcomeVariableId:"SCORE",value:e},bubbles:!0}))},d([g({type:String,attribute:"view"})],Bt.prototype,"view",2),d([g({type:Boolean})],Bt.prototype,"disabled",2),d([$({context:G,subscribe:!0})],Bt.prototype,"computedContext",2),Bt=d([k("test-scoring-buttons")],Bt);var Ri=class extends E{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let r=this.querySelector("template");if(!r){this.myTemplate=null;return}this.myTemplate=Ne(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}):O}`}};d([$({context:it,subscribe:!0})],Ri.prototype,"sessionContext",2),Ri=d([k("test-view-toggle")],Ri);var vr=class extends E{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"),n=parseFloat(i?.value),o=e.externalScored;return x`<div>${t!=="completed"?this.dataset.textNoResponse:!o&&n!==void 0&&!Number.isNaN(n)?n>0?this.dataset.textCorrect:this.dataset.textIncorrect:o==="externalMachine"?Number.isNaN(n)||n===void 0?this.dataset.scoreUnknown:`We hebben je antwoord ${n===0?"geen punten":n==1?"\xE9\xE9n punt":`${n} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`:o==="human"?Number.isNaN(n)?"":"Deze score heb je zelf toegekend.":this.dataset.inProgress}</div>`}};d([$({context:G,subscribe:!0})],vr.prototype,"computedContext",2),d([g({type:String,attribute:"view"})],vr.prototype,"view",2),vr=d([k("test-scoring-feedback")],vr);var ki=class extends E{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> `}};ki.styles=C`
3849
3853
  :host {
3850
3854
  ${ie};
3851
3855
  }
3852
3856
  :host([disabled]) {
3853
- ${oe};
3857
+ ${ne};
3854
3858
  }
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)}
3859
+ `,ki=d([k("test-check-item")],ki);var Mi,yr,pc,uc,Qe=class extends E{constructor(){super(...arguments);L(this,yr);this.itemURL=null;this.itemDoc=null;this.itemXML=null;L(this,Mi,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,yr,pc).call(this),P(this,yr,uc).call(this),this.itemURL&&this.handleItemURLChange(),this.itemXML&&this.handleItemXMLChange()}render(){return x`
3860
+ ${I(this,Mi)}
3857
3861
  <slot></slot>
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`
3862
+ ${Fn(this.itemDoc,x`<span>Loading...</span>`)}
3863
+ `}};Mi=new WeakMap,yr=new WeakSet,pc=function(){let e=this.querySelector("template");U(this,Mi,e?e.content:x``)},uc=function(){let e=new CSSStyleSheet;e.replaceSync(Un),this.shadowRoot.adoptedStyleSheets=[e]},d([g({type:String,attribute:"item-url"})],Qe.prototype,"itemURL",2),d([M()],Qe.prototype,"itemDoc",2),d([M()],Qe.prototype,"itemXML",2),d([B("itemURL",{waitUntilFirstUpdate:!0})],Qe.prototype,"handleItemURLChange",1),d([B("itemXML",{waitUntilFirstUpdate:!0})],Qe.prototype,"handleItemXMLChange",1),Qe=d([k("item-container")],Qe);var jn,mc,zt=class extends E{constructor(){super(...arguments);L(this,jn);this.label="Correct response mode";this._options={internal:"Internal",full:"Full (copy)"}}render(){return x`
3860
3864
  <label part="label" for="modeSelect">${this.label}</label>
3861
3865
  <select
3862
3866
  part="select"
3863
3867
  id="modeSelect"
3864
- @change=${e=>{let t=e.target;P(this,Vo,Fl).call(this,t.value)}}
3868
+ @change=${e=>{let t=e.target;P(this,jn,mc).call(this,t.value)}}
3865
3869
  >
3866
3870
  ${Object.keys(this._options).map(e=>x`<option value="${e}" ?selected=${e===this.itemContext?.correctResponseMode}>
3867
3871
  ${this._options[e]}
3868
3872
  </option>`)}
3869
3873
  </select>
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`
3874
+ `}};jn=new WeakSet,mc=function(e){this.dispatchEvent(new CustomEvent("item-switch-correct-response-mode",{detail:e,bubbles:!0}))},d([$({context:ge,subscribe:!0})],zt.prototype,"itemContext",2),d([g({type:String})],zt.prototype,"label",2),d([M()],zt.prototype,"_options",2),zt=d([k("item-correct-response-mode")],zt);var hc=C`
3871
3875
  display: inline-flex;
3872
3876
  align-items: center;
3873
3877
  cursor: pointer;
3874
3878
  padding: 0.5rem 1rem;
3875
3879
  border-radius: 0.25rem;
3876
3880
  user-select: none;
3877
- `,No=E`
3881
+ `,Wn=C`
3878
3882
  background-color: lightgray;
3879
- ${Ul};
3880
- `,Ho=E`
3883
+ ${hc};
3884
+ `,Gn=C`
3881
3885
  cursor: not-allowed;
3882
3886
  opacity: 0.8;
3883
- `,Eq=E`
3884
- ${Ul};
3887
+ `,lw=C`
3888
+ ${hc};
3885
3889
  border: 1px solid gray;
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`
3890
+ `;var xr,_i,qr,gc,bc,Ce=class extends E{constructor(){super();L(this,qr);this.shown=!1;this.disabled=!1;this.showCandidateCorrectionText="Show candidate correction";this.hideCandidateCorrectionText="Hide candidate correction";this.noCorrectResponseText="No correct response specified";L(this,xr,!1);L(this,_i,"")}updated(){if(!I(this,xr)||I(this,_i)!==this.computedContext?.identifier){U(this,_i,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,gc)}">${P(this,qr,bc).call(this)}</div> `}};xr=new WeakMap,_i=new WeakMap,qr=new WeakSet,gc=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-candidate-correction",{detail:!this.shown,bubbles:!0}))},bc=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCandidateCorrectionText:this.showCandidateCorrectionText},Ce.styles=C`
3887
3891
  :host {
3888
- ${No};
3892
+ ${Wn};
3889
3893
  }
3890
3894
  :host([disabled]) {
3891
- ${Ho};
3895
+ ${Gn};
3892
3896
  }
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`
3897
+ `,d([$({context:rt,subscribe:!0})],Ce.prototype,"computedContext",2),d([g({type:Boolean,reflect:!0})],Ce.prototype,"shown",2),d([g({type:Boolean,reflect:!0})],Ce.prototype,"disabled",2),d([g({type:String})],Ce.prototype,"showCandidateCorrectionText",2),d([g({type:String})],Ce.prototype,"hideCandidateCorrectionText",2),d([g({type:String})],Ce.prototype,"noCorrectResponseText",2),Ce=d([k("item-show-candidate-correction")],Ce);var wr,Li,Er,vc,yc,Se=class extends E{constructor(){super(...arguments);L(this,Er);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";L(this,wr,!1);L(this,Li,"")}updated(){if(!I(this,wr)||I(this,Li)!==this.computedContext?.identifier){U(this,Li,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,wr,e||t)}this.disabled=!I(this,wr)}render(){return x` <div @click="${P(this,Er,vc)}">${P(this,Er,yc).call(this)}</div> `}};wr=new WeakMap,Li=new WeakMap,Er=new WeakSet,vc=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-correct-response",{detail:!this.shown,bubbles:!0}))},yc=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},Se.styles=C`
3894
3898
  :host {
3895
- ${No};
3899
+ ${Wn};
3896
3900
  }
3897
3901
  :host([disabled]) {
3898
- ${Ho};
3902
+ ${Gn};
3899
3903
  }
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`
3901
- <h3>${s}</h3>
3904
+ `,d([$({context:rt,subscribe:!0})],Se.prototype,"computedContext",2),d([g({type:Boolean,reflect:!0})],Se.prototype,"shown",2),d([g({type:Boolean,reflect:!0})],Se.prototype,"disabled",2),d([g({type:String})],Se.prototype,"showCorrectText",2),d([g({type:String})],Se.prototype,"hideCorrectText",2),d([g({type:String})],Se.prototype,"noCorrectResponseText",2),Se=d([k("item-show-correct-response")],Se);var Cr=class extends E{render(){let r=this.computedContext;if(!r||!r.variables)return x``;let e=r.variables.filter(n=>n.type==="response"),t=r.variables.filter(n=>n.type==="outcome"),i=(n,o)=>x`
3905
+ <h3>${o}</h3>
3902
3906
  <table>
3903
3907
  <thead>
3904
3908
  <tr>
@@ -3910,7 +3914,7 @@ div.full-correct-response-inline {
3910
3914
  </tr>
3911
3915
  </thead>
3912
3916
  <tbody>
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`
3917
+ ${n.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`
3914
3918
  <tr>
3915
3919
  <td>${a.identifier}</td>
3916
3920
  <td>${Array.isArray(a.value)?a.value.join(", "):a.value}</td>
@@ -3923,7 +3927,7 @@ div.full-correct-response-inline {
3923
3927
  </table>
3924
3928
  `;return x`
3925
3929
  ${i(e,"Response Variables")} ${i(t,"Outcome Variables")}
3926
- `}};Cr.styles=E`
3930
+ `}};Cr.styles=C`
3927
3931
  table {
3928
3932
  width: 100%;
3929
3933
  border-collapse: collapse;
@@ -3944,40 +3948,40 @@ div.full-correct-response-inline {
3944
3948
  margin-top: 20px;
3945
3949
  font-size: 16px;
3946
3950
  }
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`
3951
+ `,d([$({context:rt,subscribe:!0})],Cr.prototype,"computedContext",2),Cr=d([k("item-print-variables")],Cr);var se,$i,Pi,Xn,Qn,Yn,Z,xc,qc,bs,wc,Ec,vs,Sr=class extends E{constructor(){super();L(this,Z);L(this,se);this.configContext={};L(this,$i,P(this,Z,xc).bind(this));L(this,Pi,P(this,Z,qc).bind(this));L(this,Xn,P(this,Z,bs).bind(this));L(this,Qn,P(this,Z,wc).bind(this));L(this,Yn,P(this,Z,Ec).bind(this));this.addEventListener("qti-item-context-updated",I(this,$i)),this.addEventListener("qti-assessment-item-connected",I(this,Pi)),this.addEventListener("item-show-correct-response",I(this,Xn)),this.addEventListener("item-show-candidate-correction",I(this,Qn)),this.addEventListener("item-switch-correct-response-mode",I(this,Yn))}render(){return x`<slot></slot>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-item-context-changed",I(this,$i)),this.removeEventListener("qti-assessment-item-connected",I(this,Pi))}};se=new WeakMap,$i=new WeakMap,Pi=new WeakMap,Xn=new WeakMap,Qn=new WeakMap,Yn=new WeakMap,Z=new WeakSet,xc=function(e){P(this,Z,vs).call(this,e.detail.itemContext.identifier,e.detail?.itemContext?.variables||[])},qc=function(e){let t=e.detail._context.variables;U(this,se,e.detail),this.computedContext=this.computedContext?.identifier===I(this,se).identifier?{...this.computedContext,title:I(this,se).title}:{identifier:I(this,se).identifier,title:I(this,se).title,adaptive:I(this,se).getAttribute("adaptive")?.toLowerCase()==="true"||!1,variables:t,correctResponseMode:"internal"},P(this,Z,vs).call(this,I(this,se).identifier,t||[])},bs=function(e){I(this,se)&&I(this,se).showCorrectResponse(e.detail)},wc=function(e){I(this,se)&&I(this,se).showCandidateCorrection(e.detail)},Ec=function(e){P(this,Z,bs).call(this,new CustomEvent("item-show-correct-response",{detail:!1,bubbles:!0})),this.configContext={...this.configContext,correctResponseMode:e.detail}},vs=function(e,t){let i=t?.find(p=>p.identifier=="SCORE")?.value,n=parseFloat(i?.toString()),o=t?.find(p=>p.identifier==="completionStatus")?.value,a=n!==void 0&&!isNaN(n)&&n>0,l=n!==void 0&&!isNaN(n)&&n<=0,c=o==="completed";this.computedContext={...this.computedContext,identifier:e,correct:a,incorrect:l,completed:c,variables:t}},d([M(),ce({context:rt})],Sr.prototype,"computedContext",2),d([M(),ce({context:ge})],Sr.prototype,"configContext",2),Sr=d([k("qti-item")],Sr);var Cc=C`
3948
3952
  :host {
3949
3953
  display: flex;
3950
3954
  user-select: none;
3951
3955
  position: absolute;
3952
3956
  }
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`
3957
+ `;var Jn=class extends E{static{this.styles=Cc}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",Jn);var Sc=C`
3954
3958
  :host {
3955
3959
  display: flex;
3956
3960
  user-select: none;
3957
3961
  }
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`
3962
+ `;var Vi=class extends E{constructor(){super(...arguments);this.tabindex=0}static{this.styles=Sc}render(){return x` <slot name="drags"></slot>`}};d([g({type:Number,reflect:!0})],Vi.prototype,"tabindex",2);customElements.define("qti-gap",Vi);var Ac=C`
3959
3963
  :host {
3960
3964
  display: flex;
3961
3965
  user-select: none;
3962
3966
  }
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`
3967
+ `;var Di=class extends E{constructor(){super(...arguments);this.tabindex=0}static{this.styles=Ac}connectedCallback(){this.setAttribute("slot","drags")}};d([g({type:Number,reflect:!0})],Di.prototype,"tabindex",2);customElements.define("qti-gap-img",Di);var Tc={toAttribute:s=>s?"true":"false",fromAttribute:s=>s==="true"};function xe(s,r){class e extends s{constructor(...n){super(...n);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this.internals=this.attachInternals()}handleDisabledChange(n,o){this.tabIndex=o?-1:0,o&&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(n){n.altKey||(n.code==="Space"||n.code==="Enter")&&(n.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([g({type:String})],e.prototype,"identifier",2),d([g({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),d([g({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:Tc})],e.prototype,"disabled",2),d([g({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:Tc})],e.prototype,"readonly",2),d([B("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}var Ic=C`
3964
3968
  :host {
3965
3969
  display: inline-flex;
3966
3970
  user-select: none;
3967
3971
  }
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`
3972
+ `;var Ni=class extends xe(E,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}static{this.styles=Ic}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","drags")}render(){return x`<slot></slot>`}};d([g({type:Number,reflect:!0})],Ni.prototype,"tabindex",2);customElements.define("qti-gap-text",Ni);var Rc=C`
3969
3973
  :host {
3970
3974
  display: flex;
3971
3975
  user-select: none;
3972
3976
  position: absolute;
3973
3977
  }
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`
3978
+ `;var Ar=class extends xe(E,"qti-hotspot-choice"){static{this.styles=Rc}};d([g({attribute:"aria-ordervalue",type:Number,reflect:!0})],Ar.prototype,"order",2),d([g({attribute:"aria-ordercorrectvalue",type:Number,reflect:!0})],Ar.prototype,"orderCorrect",2);customElements.define("qti-hotspot-choice",Ar);var kc=C`
3975
3979
  :host {
3976
3980
  display: flex;
3977
3981
  user-select: none;
3978
3982
  }
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`
3983
+ `;var Kn=class extends xe(E,"qti-hottext"){static{this.styles=kc}render(){return x`<div part="ch"><div part="cha"></div></div>
3984
+ <slot></slot> `}};customElements.define("qti-hottext",Kn);var bp=C`
3981
3985
  :host {
3982
3986
  display: block;
3983
3987
  box-sizing: border-box;
@@ -3986,11 +3990,11 @@ div.full-correct-response-inline {
3986
3990
  slot {
3987
3991
  display: inline;
3988
3992
  }
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`
3993
+ `,Mc=bp;var Oi=class extends xe(E,"qti-inline-choice"){static{this.styles=Mc}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([g({type:String})],Oi.prototype,"identifier",2);customElements.define("qti-inline-choice",Oi);var _c=C`
3990
3994
  :host {
3991
3995
  display: block;
3992
3996
  }
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`
3997
+ `;var Zn=class extends E{static{this.styles=_c}render(){return x`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Zn);var Lc=C`
3994
3998
  :host {
3995
3999
  display: flex;
3996
4000
  user-select: none;
@@ -4002,10 +4006,10 @@ div.full-correct-response-inline {
4002
4006
  slot[name='qti-simple-associable-choice'] {
4003
4007
  width: auto;
4004
4008
  }
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`
4009
+ `;var jt=class extends xe(E,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}static{this.styles=Lc}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return x`
4006
4010
  <slot part="slot"></slot>
4007
4011
  <slot part="dropslot" name="qti-simple-associable-choice"></slot>
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`
4012
+ `}};d([g({type:Number,attribute:"match-min"})],jt.prototype,"matchMin",2),d([g({type:Number,attribute:"match-max"})],jt.prototype,"matchMax",2),d([g({type:String,attribute:"fixed",converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],jt.prototype,"fixed",2);customElements.define("qti-simple-associable-choice",jt);var $c=C`
4009
4013
  :host {
4010
4014
  display: flex;
4011
4015
  align-items: center;
@@ -4022,11 +4026,11 @@ div.full-correct-response-inline {
4022
4026
  align-items: center;
4023
4027
  justify-content: center;
4024
4028
  }
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">
4029
+ `;var mt=class extends xe(E,"qti-simple-choice"){constructor(){super(...arguments);this.templateIdentifier=null;this.showHide="show";this.fixed=!1}static{this.styles=$c}get checked(){return this.internals.states.has("--checked")}render(){return x`<div part="ch">
4026
4030
  <div part="cha"></div>
4027
4031
  </div>
4028
- ${this.marker?x`<div id="label">${this.marker}</div>`:N}
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`
4032
+ ${this.marker?x`<div id="label">${this.marker}</div>`:O}
4033
+ <slot part="slot"></slot>`}};d([g({type:String,attribute:"template-identifier"})],mt.prototype,"templateIdentifier",2),d([g({type:String,attribute:"show-hide"})],mt.prototype,"showHide",2),d([g({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],mt.prototype,"fixed",2),d([g({type:String,attribute:!1})],mt.prototype,"marker",2);customElements.define("qti-simple-choice",mt);var{AbortController:Oe,AbortSignal:ys,WeakMap:vp,WeakRef:yp,Window:Pc,reportError:eo=console.log}=globalThis,ht=s=>s&&s.defaultView!==null&&s.defaultView.document===s&&(s.defaultView.top===s.defaultView||ht(s.defaultView.parent.document)),Wt=()=>!!Pc&&globalThis instanceof Pc,xs=Symbol("unset"),[Vc,xp]=(()=>{function s(w,f,m=!0){Object.defineProperty(w,f,{...Object.getOwnPropertyDescriptor(w,f),enumerable:m})}let r="try"in Promise?Promise.try.bind(Promise):(w,...f)=>new Promise(m=>m(w(...f))),e="withResolvers"in Promise?Promise.withResolvers.bind(Promise):()=>{let w,f;return{promise:new Promise((b,q)=>(w=b,f=q)),resolve:w,reject:f}};function t(w,f){let m=f.call(w);if(m===null||typeof m!="object")throw new TypeError("Iterator is not an object");return m}let i=new vp,n={next(...w){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.next called on invalid object");let{syncIteratorRecord:b}=m;return r(()=>b.next(...w))},return(...w){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.return called on invalid object");let{syncIteratorRecord:b}=m;return r(()=>b.return?b.return(...w):{value:void 0,done:!0})},throw(...w){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.throw called on invalid object");let{syncIteratorRecord:b}=m;return r(()=>{if(!b.throw)throw b.return(),new TypeError("no throw method");return b.throw(...w)})}};function o(w){let f=Object.create(n);return i.set(f,{syncIteratorRecord:w}),f}function a(w,f){let m;if(f){if(m=w[Symbol.asyncIterator],m==null){if(m=w[Symbol.iterator],m==null)throw new TypeError("Object is not async iterable");let b=t(w,m);return o(b)}}else m=w[Symbol.iterator];if(m==null)throw new TypeError("Object is not iterable");return t(w,m)}let l="any"in ys?ys.any.bind(ys):w=>{let f=new Oe;for(let m of w)if(m.aborted)return f.abort(m.reason),f.signal;for(let m of w)m.addEventListener("abort",()=>{f.abort(m.reason)},{signal:f.signal});return f.signal},c=w=>l(w.filter(Boolean));class p{constructor({next:f,error:m,complete:b}={}){i.set(this,{next:f,error:m,complete:b})}next(f){let{next:m}=i.get(this)||{};m&&m(f)}error(f){let{error:m}=i.get(this)||{};m?m(f):eo(f)}complete(){let{complete:f}=i.get(this)||{};f&&f()}}function u(w,f){let m=i.get(w);if(m?.active){m.active=!1,m.subscriptionController.abort(f);for(let b of m.teardowns.reverse()){if(Wt()&&!ht(document))return;try{b()}catch(q){eo(q)}}}}function h(w,f,m={}){if(Wt()&&!ht(document))return;let b;typeof f=="function"?b=new p({next:f}):f&&!(f instanceof p)?b=new p(f):b=f||new p;let q=i.get(w),A=q.weakSubscriber?.deref();if(A?.active){let T=A,_=i.get(T);_.observers.add(b),m.signal&&(m.signal.aborted?_.observers.delete(b):m.signal.addEventListener("abort",()=>{let N=i.get(T);N?.active&&(N.observers.delete(b),N.observers.size==0&&u(T,m.signal.reason))}));return}let S=new y(b);if(q.weakSubscriber=new yp(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(b),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 Oe})}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||Wt()&&!ht(document))return;let b=new Set(m.observers);for(let q of b)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){eo(f);return}if(Wt()&&!ht(document))return;u(this,f);let b=new Set(m.observers);for(let q of b)q.error(f)}complete(){if(!(this instanceof y))throw new TypeError("illegal invocation");let f=i.get(this);if(!f?.active||Wt()&&!ht(document))return;u(this);let m=new Set(f.observers);for(let b of m)b.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(Wt()&&!ht(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 Oe;return f.abort(),f.signal}return i.get(this).subscriptionController.signal}}s(y.prototype,"next"),s(y.prototype,"error"),s(y.prototype,"complete"),s(y.prototype,"addTeardown"),s(y.prototype,"active"),s(y.prototype,"signal");class v{get[Symbol.toStringTag](){return"Observable"}constructor(f){if(!f)throw new TypeError("1 argument required but 0 present");i.set(this,{weakSubscriber:null,subscribeCallback:f})}static from(f){if(f===null||typeof f!="object")throw new TypeError("Observable.from only accepts objects");if(f instanceof v)return f;if(typeof(Symbol.asyncIterator in f&&f[Symbol.asyncIterator])=="function"){let A=function(S,T){if(S.signal.aborted)return;let _;try{let N=T.next();_=Promise.resolve(N)}catch(N){_=Promise.reject(N)}_.then(N=>{if(N===null||typeof N!="object"){S.error(new TypeError("Not an IteratorResult."));return}try{({done:q}=N)}catch(z){S.error(z);return}if(q){S.complete();return}let H;try{H=N.value}catch(z){S.error(z);return}S.next(H),A(S,T)},N=>{S.error(N)})},q=!1;return new v(S=>{if(S.signal.aborted)return;let T;try{T=a(f,!0)}catch(N){S.error(N);return}let _=T;S.signal.aborted||(S.signal.addEventListener("abort",()=>{if(typeof _.return!="function"||q)return;r(()=>_.return(S.signal.reason)).then(H=>{if(H===null||typeof H!="object")throw new TypeError("Iterator .return() must return an Object")})}),A(S,_))})}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(_){q.error(_);return}let S=!1,T=A;if(!q.signal.aborted)for(q.signal.addEventListener("abort",()=>{if(typeof T.return!="function"||S)return;let _=T.return();if(_===null||typeof _!="object")throw new TypeError("Iterator .return() must return an Object")});;)try{let _=T.next();if({done:S}=_,S){q.complete();return}if(q.next(_.value),q.signal.aborted)break}catch(_){q.error(_);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,b=v.from(f);return new v(q=>{let A=new p({next(){q.complete()},error(){q.complete()}}),S={signal:q.signal};if(h(b,A,S),!q.active)return;let T=new p({next(_){q.next(_)},error(_){q.error(_)},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(b=>{let q=0,A=new p({next(T){let _;try{_=f(T,q)}catch(N){b.error(N);return}q+=1,b.next(_)},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}inspect(f={}){let m=null,b=null,q=null,A=null,S=null;typeof f=="function"?b=f:f&&typeof f=="object"&&("subscribe"in f&&(m=f.subscribe),"next"in f&&(b=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(_=>{if(m!==null)try{m()}catch(F){_.error(F);return}let N=()=>{try{S!==null&&S(_.signal.reason)}catch(F){eo(F)}};_.signal.addEventListener("abort",N,{once:!0});let H=new p({next(F){if(b!==null)try{b(F)}catch(le){_.signal.removeEventListener("abort",N),_.error(le);return}_.next(F)},error(F){if(_.signal.removeEventListener("abort",N),q!==null)try{q(F)}catch(le){_.error(le);return}_.error(F)},complete(){if(_.signal.removeEventListener("abort",N),A!==null)try{A()}catch(F){_.error(F);return}_.complete()}}),z={signal:_.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(b=>{let q=0,A=new p({next(T){let _=!1;try{_=f(T,q)}catch(N){b.error(N);return}q+=1,_&&b.next(T)},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}take(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this;return new v(b=>{let q=f;if(q==0)return b.complete();let A=new p({next(T){b.next(T),q-=1,q==0&&b.complete()},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}drop(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this;return new v(b=>{let q=f,A=new p({next(T){if(q>0)return q-=1;q==0&&b.next(T)},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.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(b=>{let q=0,A=!1,S=[];function T(z){let F;try{F=f(z,q)}catch(He){return b.error(He)}q+=1;let le;try{le=v.from(F)}catch(He){return b.error(He)}let Mo=new p({next(He){b.next(He)},error(He){b.error(He)},complete(){if(S.length){let He=S.shift();T(He)}else _=!1,A&&b.complete()}}),Re={signal:b.signal};h(le,Mo,Re)}let _=!1,N=new p({next(z){_?S.push(z):(_=!0,T(z))},error(z){b.error(z)},complete(){A=!0,!_&&!S.length&&b.complete()}}),H={signal:b.signal};h(m,N,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(b=>{let q=0,A=!1,S=null;function T(H){let z;try{z=f(H,q)}catch(Re){return b.error(Re)}q+=1;let F;try{F=v.from(z)}catch(Re){return b.error(Re)}let le=new p({next(Re){b.next(Re)},error(Re){b.error(Re)},complete(Re){A?b.complete():S=null}}),Mo={signal:c([S.signal,b.signal])};h(F,le,Mo)}let _=new p({next(H){S&&S.abort(),S=new Oe,T(H)},error(H){b.error(H)},complete(){A=!0,S||b.complete()}}),N={signal:b.signal};h(m,_,N)})}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 _;try{_=f(T)}catch(F){q.error(F);return}let N;try{N=v.from(_)}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(N,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(b=>{b.addTeardown(f);let q=new p({next(S){b.next(S)},error(S){b.error(S)},complete(){b.complete()}}),A={signal:b.signal};h(m,q,A)})}toArray(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:b,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(){b(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:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){try{f(H,_)}catch(z){A(z),S.abort(z)}_+=1},error(H){A(H)},complete(){q()}});return h(this,N,T),b}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:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z||(q(!1),S.abort())},error(H){A(H)},complete(){q(!0)}});return h(this,N,T),b}first(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:b,reject:q}=e(),A=new Oe,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(_){b(_),A.abort()},error(_){q(_)},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:b,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(_){S=!0,A=_},error(_){q(_)},complete(){S?b(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:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z&&(q(H),S.abort())},error(H){A(H)},complete(){q()}});return h(this,N,T),b}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:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z&&(q(!0),S.abort())},error(H){A(H)},complete(){q(!1)}});return h(this,N,T),b}reduce(f,m,b={}){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 Oe,_={signal:c([T.signal,b.signal])};if(_.signal.aborted)return S(_.signal.reason),q;_.signal.addEventListener("abort",()=>{S(_.signal.reason)},{once:!0});let N=0,H=arguments.length>1?m:xs,z=new p({next(F){if(H===xs){H=F,N++;return}try{let le=f(H,F,N);N++,H=le}catch(le){S(le),T.abort(le);return}},error(F){S(F)},complete(){H!==xs?A(H):S(new TypeError("no initial value provided and no values emitted"))}});return h(this,z,_),q}}return s(v.prototype,"subscribe"),[v,y]})();function Dc(){return typeof globalThis.Observable=="function"}function Nc(){Object.defineProperties(globalThis,{Observable:{value:Vc,configurable:!0,writable:!0},Subscriber:{value:xp,configurable:!0,writable:!0}}),EventTarget.prototype.when=function(s,r={}){if(Wt()&&!ht(document))return;let e=this;return new Vc(t=>{if(!e||t.signal.aborted)return;let i=n=>{t.next(n)};e.addEventListener(s,i,{capture:r.capture||!1,passive:r.passive,once:!1,signal:t.signal})})}}function qs(s,r,e){let t=s.filter(i=>!i.hasAttribute("disabled"));for(let i of t){let n=i.getBoundingClientRect();if(r>=n.left&&r<=n.right&&e>=n.top&&e<=n.bottom)return i}return null}function Oc(s,r,e,t){if(!t)return null;let i=s.filter(o=>!o.hasAttribute("disabled")),n=t.getBoundingClientRect();for(let o of i){let a=o.getBoundingClientRect();if(!(n.right<a.left||n.left>a.right||n.bottom<a.top||n.top>a.bottom))return o}return null}function Hc(s,r,e,t){let i=s.filter(c=>!c.hasAttribute("disabled"));if(i.length===0)return null;let n,o;if(t){let c=t.getBoundingClientRect();n=c.left+c.width/2,o=c.top+c.height/2}else n=r,o=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(n-u,2)+Math.pow(o-h,2));y<l&&(l=y,a=c)}return a}function Fc(s,r,e,t){let i=s.filter(l=>!l.hasAttribute("disabled"));if(i.length===0)return null;let n;if(t){let l=t.getBoundingClientRect();n=[{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 n=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let o=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 n)for(let w of p){let f=Math.sqrt(Math.pow(v.x-w.x,2)+Math.pow(v.y-w.y,2));u+=f,h++}let y=u/h;y<a&&(a=y,o=l)}return o}function qp(s,r,e,t,i){let n=i&&i.length>0?s.filter(m=>i.includes(m)):s.filter(m=>m.tagName==="SLOT"&&m.hasAttribute("part")&&m.getAttribute("part")?.includes("drags")),a=s.filter(m=>!n.includes(m));if(n.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 b=m.getBoundingClientRect(),q=[{x:b.left,y:b.top},{x:b.right,y:b.top},{x:b.left,y:b.bottom},{x:b.right,y:b.bottom}],A=0,S=0;for(let T of l)for(let _ of q){let N=Math.sqrt(Math.pow(T.x-_.x,2)+Math.pow(T.y-_.y,2));A+=N,S++}return A/S},p=null,u=1/0;for(let m of n){let b=c(m);b<u&&(u=b,p=m)}let h=null,y=1/0;for(let m of a){let b=c(m);b<y&&(y=b,h=m)}if(p&&t){let m=t.getBoundingClientRect(),b=p.getBoundingClientRect(),q=m.left+m.width/2,A=m.top+m.height/2;if(q>=b.left&&q<=b.right&&A>=b.top&&A<=b.bottom)return p}let w=t?.getAttribute("data-drag-origin")==="droppable"?.85:1.5;return p&&h?u<=y*w?p:h:p||h}function Uc(s){switch(s){case"pointerWithin":return qs;case"rectangleIntersection":return Oc;case"closestCenter":return Hc;case"closestCorners":return Fc;case"closestCornersWithInventoryPriority":return qp;default:return qs}}function Tr(s,r,e,t,i="pointerWithin",n){return Uc(i)(s,r,e,t,n)}function ft(s,r){let e=s.composedPath?s.composedPath():[s.target];for(let t of e)if(t instanceof HTMLElement&&t.tagName!=="SLOT"){if(t.matches(r)||t.hasAttribute("qti-draggable"))return t;let i=t.closest(r)||t.closest('[qti-draggable="true"]');if(i)return i}return null}function to(s,r){let e=[];return s.forEach(t=>{let i=[];t.tagName.toLowerCase()==="slot"?i=t.assignedElements({flatten:!0}).filter(a=>a.getAttribute("identifier")===r):i=Array.from(t.querySelectorAll(`[identifier="${r}"]`)),e.push(...i)}),e}function Bc(s,r){let e=s.find(i=>i.getAttribute("identifier")===r);if(!e)return 1;let t=e.getAttribute("match-max");return t?parseInt(t,10)||0:1}function zc(s,r){let e=parseInt(s.getAttribute("match-max")||"1",10),t=Number.isNaN(e)?1:e;if(t===0)return!1;let i=s.querySelectorAll(r),n=s.querySelectorAll('[qti-draggable="true"]');return Math.max(i.length,n.length)>=t}function Hi(s,r){return s.reduce((e,t)=>{let i=t.querySelectorAll(r).length,n=t.querySelectorAll('[qti-draggable="true"]').length;return e+Math.max(i,n)},0)}function ro(s,r){return s.map(e=>{let i=Array.from(e.querySelectorAll(r)).map(o=>o.getAttribute("identifier")).filter(o=>!!o),n=e.getAttribute("identifier");return i.map(o=>`${o} ${n}`)}).flat()}function jc(s,r,e,t=typeof window<"u"?window:null){if(!s.length||!r.length||!t)return;let i=0,n=0;s.forEach(c=>{let p=c.getBoundingClientRect();i=Math.max(i,p.height),n=Math.max(n,p.width)});let o=r[0].parentElement,a=r[0].tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE",l=r[0].tagName==="QTI-GAP";if(a&&o){let c;if(o.clientWidth>0){let p=t.getComputedStyle(o),u=parseFloat(p.paddingLeft),h=parseFloat(p.paddingRight);c=o.clientWidth-u-h}else c=Math.min(t.innerWidth*.8,600);o.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${c}px, ${n}px + 2 * var(--qti-dropzone-padding, 0.5rem))), 1fr))`}r.forEach(c=>{c.style.minHeight=`${i}px`,(a||l)&&(c.style.minWidth=`${n}px`);let p=c.shadowRoot?.querySelector('slot[part="dropslot"]');p&&(p.style.minHeight=`${i}px`)}),e.forEach(c=>{c.style.minHeight=`${i}px`})}Dc()||Nc();var Wc=new WeakSet;function wp(s){!s||Wc.has(s)||(s.addEventListener("touchmove",()=>{},{capture:!1,passive:!1}),Wc.add(s))}var io=(s,r,e,t='slot[part="drags"]',i="pointerWithin")=>{class n extends s{constructor(){super(...arguments);this.trackedDraggables=[];this.trackedDroppables=[];this.trackedDragContainers=[];this.allDropzones=[];this.collisionDetectionAlgorithm=i;this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null};this.subscriptions=[];this.dragSubscriptions=[];this.lastPointerDownAt=0;this.lastTouchStartAt=0}connectedCallback(){super.connectedCallback(),wp(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,b)=>Array.from(b?.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 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(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 w=ft(v,r),f=this.disabled||this.readonly,m=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",b=Date.now()-this.lastTouchStartAt<50;return w&&v.isPrimary!==!1&&v.button===0&&!f&&!m&&!b}).subscribe(v=>{this.lastPointerDownAt=Date.now();let w=ft(v,r);if(!w){console.warn("\u26A0\uFE0F [Observable DnD] No draggable target found");return}v.pointerType==="touch"&&(v.preventDefault(),v.stopPropagation());let f=v.isTrusted?v.pointerType==="touch"?100:10:0;if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),f===0){this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted);return}let 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(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted)},f)}),p=l.when("mousedown").filter(v=>{let w=ft(v,r),f=this.disabled||this.readonly,m=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",b=v.button===0,q=Date.now()-this.lastPointerDownAt<50;return w&&b&&!f&&!m&&!q}).subscribe(v=>{let w=ft(v,r);!w||this.dragState.dragging||(v.preventDefault(),this.initiateDrag(w,v.clientX,v.clientY,"mouse","mouse",void 0,v.isTrusted))}),u=l.when("touchstart").filter(v=>{let w=ft(v,r),f=this.disabled||this.readonly,m=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",b=!!(v.touches?.[0]||v.changedTouches?.[0]),q=Date.now()-this.lastPointerDownAt<50;return w&&b&&!f&&!m&&!q}).subscribe(v=>{let w=ft(v,r),f=v.touches?.[0]||v.changedTouches?.[0];!w||!f||this.dragState.dragging||(this.lastTouchStartAt=Date.now(),v.preventDefault(),v.stopPropagation(),this.initiateDrag(w,f.clientX,f.clientY,"touch","touch",void 0,v.isTrusted))}),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null},y=l.when("keydown").subscribe(v=>{let w=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=ft(v,r),b=this.disabled||this.readonly,q=m?.hasAttribute("disabled")||m?.getAttribute("aria-disabled")==="true";m&&["Space","Enter"].includes(v.code)&&!b&&!q&&(v.preventDefault(),m.setAttribute("data-keyboard-dragging","true"),h={dragging:!0,dragElement:m,dragIndex:w.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 w=this.trackedDroppables.some(b=>b.contains(l)),f=this.trackedDroppables.find(b=>b.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}},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(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 b=A=>{A.cancelable&&(A.preventDefault(),c==="pointer"&&A.stopPropagation())};document.addEventListener("touchmove",b,{passive:!1,capture:!0}),document.addEventListener("touchstart",b,{passive:!1,capture:!0}),document.addEventListener("touchend",b,{passive:!1,capture:!0}),document.addEventListener("gesturestart",b,{passive:!1}),document.addEventListener("gesturechange",b,{passive:!1}),document.addEventListener("gestureend",b,{passive:!1});let q=()=>{if(document.removeEventListener("touchmove",b,{capture:!0}),document.removeEventListener("touchstart",b,{capture:!0}),document.removeEventListener("touchend",b,{capture:!0}),document.removeEventListener("gesturestart",b),document.removeEventListener("gesturechange",b),document.removeEventListener("gestureend",b),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=b=>{let q=this.dragState.startedFromTrustedEvent;return q===void 0||b.isTrusted===q},y=document.when(p).takeUntil(document.when(u)).subscribe({next:b=>{if(h(b)){if(b.preventDefault(),b.stopPropagation(),c==="touch"){let q=b.touches?.[0]||b.changedTouches?.[0];if(!q)return;this.handleDragMove(q.clientX,q.clientY);return}if(c==="mouse"){let q=b;if(typeof q.buttons=="number"&&(q.buttons&1)!==1)return}this.handleDragMove(b.clientX,b.clientY)}}}),v=document.when(u).subscribe({next:b=>{h(b)&&(b.preventDefault(),b.stopPropagation(),this.handleDragEnd())}}),w=c==="touch"?document.when("touchcancel").subscribe({next:b=>{h(b)&&this.handleDragEnd()}}):c==="mouse"?null:document.when("pointercancel").subscribe({next:b=>{h(b)&&this.handleDragEnd()}}),f=document.when("keydown").filter(b=>b.key==="Escape").subscribe({next:b=>{h(b)&&this.handleDragEnd()}}),m=[y,v,f];w&&m.push(w),this.dragSubscriptions.push(...m)}handleDragMove(l,c){if(!this.dragState.dragging||!this.dragState.dragClone)return;this.updateClonePosition(l,c);let p=Tr(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,b=this.dragState.initialCoordinates?.y??f.top+f.height/2;h=Tr(this.allDropzones,m,b,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 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),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 n};var Gc={duration:250,easing:"ease",fill:"both"};function ws(s){let r=s.getBoundingClientRect();return{left:r.left,top:r.top,width:r.width,height:r.height}}function gt(s){let r=new Map;return s.forEach(e=>{r.set(e,ws(e))}),r}function Xc(s,r){return{deltaX:s.left-r.left,deltaY:s.top-r.top,deltaW:s.width/r.width,deltaH:s.height/r.height}}function Qc(s,r,e={}){let t=ws(s),{deltaX:i,deltaY:n,deltaW:o,deltaH:a}=Xc(r,t);if(i===0&&n===0&&o===1&&a===1)return null;let{duration:l,easing:c,fill:p}={...Gc,...e};return s.animate([{transformOrigin:"top left",transform:`translate(${i}px, ${n}px) scale(${o}, ${a})`},{transformOrigin:"top left",transform:"none"}],{duration:l,easing:c,fill:p})}function bt(s,r={}){let e=new Map;return s.forEach((t,i)=>{if(!(i instanceof HTMLElement))return;let n=Qc(i,t,r);n&&e.set(i,n)}),e}var Ae=(s,r,e,t='slot[part="drags"]',i="closestCornersWithInventoryPriority")=>{let n=io(s,r,e,t,i);class o extends n{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(),ro(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(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(),ro(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=Hi(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=Hi(this.trackedDroppables,r),w=this.maxAssociations>0&&v>=this.maxAssociations,f=!!u&&u.hasAttribute("disabled")&&!u.hasAttribute("data-drag-source");this._dropBlockedDueToMax=f&&w,this.validate(),this.reportValidity()}updateMinDimensionsForDropZones(){this.trackedDraggables.length!==0&&jc(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 w=to(this.trackedDragContainers,y).at(0)||this.trackedDraggables.find(f=>f.getAttribute("identifier")===y);w&&this.dropDraggableInDroppable(w,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,w=v===0||v>1,f=Array.from(p.querySelectorAll('[qti-draggable="true"]')),m=this.enableFlipAnimations&&f.length>0?gt(f):null;if(!w){let A=p.querySelector(r)||p.querySelector('[qti-draggable="true"]');if(A){let S=A.getAttribute("identifier");A.remove(),S&&this.restoreOriginalInInventory(S)}}let b=c.cloneNode(!0);b.removeAttribute("style"),b.removeAttribute("data-keyboard-dragging"),b.setAttribute("qti-draggable","true"),b.setAttribute("tabindex","0"),p.tagName==="SLOT"?b.setAttribute("slot",p.getAttribute("name")||""):p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"?(b.setAttribute("slot","qti-simple-associable-choice"),p.appendChild(b),p.setAttribute("data-has-drop","true")):p.appendChild(b),m&&this.enableFlipAnimations&&bt(m,this.flipAnimationConfig),u&&this.enableFlipAnimations&&requestAnimationFrame(()=>{let A=b.getBoundingClientRect(),S=u.left-A.left,T=u.top-A.top;(S!==0||T!==0)&&b.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=to(this.trackedDragContainers,c),u=[];this.trackedDragContainers.forEach(y=>{u.push(...Array.from(y.querySelectorAll('[qti-draggable="true"]')))});let h=this.enableFlipAnimations&&u.length>0?gt(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&&bt(h,this.flipAnimationConfig)}updateInventoryBasedOnMatchMax(c){let p=to(this.trackedDragContainers,c),u=Bc(this.trackedDraggables,c),h=this.trackedDroppables.reduce((y,v)=>{let w=v.querySelectorAll(`[identifier="${c}"]`);return y+w.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=Hi(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations;this.trackedDroppables.forEach(u=>{let h=u.hasAttribute("data-drag-source"),y=zc(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(),ro(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=Hi(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 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([g({attribute:!1,type:Object})],o.prototype,"configuration",2),d([g({type:Number,reflect:!0,attribute:"min-associations"})],o.prototype,"minAssociations",2),d([g({type:Number,reflect:!0,attribute:"max-associations"})],o.prototype,"maxAssociations",1),d([g({type:Boolean,attribute:"disable-animations"})],o.prototype,"disableAnimations",1),d([g({type:Boolean,attribute:"auto-size-dropzones"})],o.prototype,"autoSizeDropzones",2),o};var no=class{getInsertPosition(r,e,t,i,n){let o=r.indexOf(t);if(o===-1)return null;let a=t.getBoundingClientRect(),l=(n-a.top)/a.height,p=Math.min(1,Math.max(0,l))>.5;return{index:o,placeAfter:p}}};var Yc=new no;var Ep={borderStyle:"2px dashed",borderColor:"var(--qti-drop-placeholder, #c1c1c1)",background:"transparent",transitionDuration:150};function Fi(){return{placeholder:null,lastHoverTarget:null,lastPlacement:null,sortContainer:null}}function oo(s){s.placeholder?.remove(),s.placeholder=null,s.lastHoverTarget=null,s.lastPlacement=null,s.sortContainer=null}function so(s,r,e={}){let t={...Ep,...e},i=document.createElement("div");return i.setAttribute("data-drop-placeholder","true"),i.style.width=`${r.width}px`,i.style.height=`${r.height}px`,i.style.margin=window.getComputedStyle(s).margin,i.style.boxSizing="border-box",i.style.border=`${t.borderStyle} ${t.borderColor}`,i.style.borderRadius=getComputedStyle(s).borderRadius,i.style.background=t.background,i.style.transition=`transform ${t.transitionDuration}ms ease`,i.style.pointerEvents="none",i}function Es(s,r){for(let e of r)if(e.contains(s)&&e!==s)return e;return null}var Te=(s,r='[qti-draggable="true"]')=>{class e extends s{constructor(){super(...arguments);this.#e=null;this.#t=Fi();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(n){return Es(n,this.trackedDroppables)}#n(n){return n.querySelector(r)}#o(n){let o=this.#s(n);return o===0||o>1}#s(n){let o=parseInt(n.getAttribute("match-max")||"1",10);return Number.isNaN(o)?1:o}#a(n){return n.querySelectorAll(r).length}#c(n){let o=this.#s(n);return o===0?!1:this.#a(n)>=o}#d(){this.#r={hoveredSlot:null,originalPositions:new Map}}#l(n){if(!this.#e||n===this.#e){this.#u();return}if(this.#r.hoveredSlot===n)return;this.#u();let o=this.#n(n);if(!o){this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n;return}if(this.#o(n)){if(this.#c(n)){this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),this.#r.hoveredSlot=null;return}this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n;return}let l=gt([o]);this.#r.originalPositions.set(o,n),this.#t.placeholder&&this.#t.placeholder.parentElement&&this.#t.placeholder.remove(),this.#e.appendChild(o),this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n,bt(l,this.sortableAnimationConfig)}#u(){if(this.#r.originalPositions.size===0&&this.#r.hoveredSlot===null)return;let n=Array.from(this.#r.originalPositions.keys()),o=n.length>0?gt(n):null;for(let[a,l]of this.#r.originalPositions)l.appendChild(a);this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),o&&bt(o,this.sortableAnimationConfig),this.#r.originalPositions.clear(),this.#r.hoveredSlot=null}initiateDrag(n,o,a,l,...c){this.#e=null,this.#t=Fi(),this.#d();let p=this.findContainingDroppable(n);if(p&&this.allowReorder){this.#e=p,this.#t.sortContainer=p;let h=n.getBoundingClientRect();this.#t.placeholder=so(n,h,this.sortablePlaceholderConfig);let y=n.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.#o(v)&&this.#c(v))return;v.removeAttribute("disabled"),this.#i.add(v)}})}let[u]=c;super.initiateDrag(n,o,a,l,u)}cleanupSortableState(n=!0){if(n)for(let[o,a]of this.#r.originalPositions)a.appendChild(o);this.#t.placeholder&&this.#t.placeholder.remove(),oo(this.#t),this.#i.clear(),this.#e=null,this.#d()}onSortableDragMove(n,o){if(!this.isDraggingFromSlot)return;let a=Tr(this.trackedDroppables,n,o,this.dragState.dragClone,this.collisionDetectionAlgorithm);a?this.#l(a):this.#u()}handleDragMove(n,o){Object.getPrototypeOf(e.prototype).handleDragMove?.call(this,n,o),this.onSortableDragMove(n,o)}allowDrop(n,o){return this.isDraggingFromSlot&&this.trackedDroppables.includes(o)?this.#o(o)?!this.#c(o):!0:this.isDraggingFromSlot&&this.trackedDragContainers.includes(o)?!0:super.allowDrop(n,o)}handleDrop(n,o){super.handleDrop(n,o),this.cleanupSortableState(!1)}handleInvalidDrop(n){this.cleanupSortableState(),super.handleInvalidDrop(n)}}return e};var Jc=C`
4030
4034
  :host {
4031
4035
  display: block; /* necessary to calculate scaling position */
4032
4036
  }
@@ -4074,7 +4078,7 @@ div.full-correct-response-inline {
4074
4078
  rgb(0 0 0 / 0%) calc(50% + 1px)
4075
4079
  );
4076
4080
  }
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>
4081
+ `;var Rp=Ae(V,"qti-simple-associable-choice",".dl","slot[name='qti-simple-associable-choice']","pointerWithin"),Ui=class extends Te(Rp,'[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=Jc}_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 n=this.shadowRoot?.querySelector(`.dl[identifier="droplist${i}_left"]`),o=this.shadowRoot?.querySelector(`.dl[identifier="droplist${i}_right"]`),a=n?.querySelector('[qti-draggable="true"]')?.getAttribute("identifier"),l=o?.querySelector('[qti-draggable="true"]')?.getAttribute("identifier");a&&l&&t.push(`${a} ${l}`)}return t}getValue(e){return e?.flatMap((t,i)=>{let n=t.split(" ");return n.length!==2?[]:[`${n[0]} droplist${i}_left`,`${n[1]} droplist${i}_right`]})??[]}render(){return x` <slot name="prompt"></slot>
4078
4082
  <slot name="qti-simple-associable-choice"></slot>
4079
4083
  <div part="drop-container">
4080
4084
  ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>x`<div part="associables-container">
@@ -4083,7 +4087,7 @@ div.full-correct-response-inline {
4083
4087
  </div>`)}
4084
4088
 
4085
4089
  <div role="alert" part="message" id="validation-message"></div>
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`
4090
+ </div>`}updated(e){super.updated(e),e.has("_childrenMap")&&this.cacheInteractiveElements()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};d([M()],Ui.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",Ui);var vt=(s,r)=>{class e extends s{constructor(){super(...arguments);this._choiceElements=[];this._mutationObserver=null;this._validationMessageShown=!1;this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(n,o)=>{this._choiceElements.forEach(a=>a.disabled=o)};this._handleReadonlyChange=(n,o)=>{this._choiceElements.forEach(a=>a.readonly=o)};this.response="";this._handleValueChange=()=>{this._internals.setFormValue(this.value),this._updateChoiceSelection()}}_handleMaxChoicesChange(n,o){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(n){this.maxChoices>1&&(typeof n=="string"||n===null)?this.response=n?n.toString().split(","):[]:this.response=n||""}toggleInternalCorrectResponse(n){let o=this.correctResponse;if(o){let a=Array.isArray(o)?o:[o];this._choiceElements.forEach(l=>{l.internals.states.delete("correct-response"),l.internals.states.delete("incorrect-response"),n&&a.length>0&&(a.includes(l.identifier)?l.internals.states.add("correct-response"):l.internals.states.add("incorrect-response"))})}}toggleCandidateCorrection(n){let o=this.correctResponse;if(!o)return;let a=Array.isArray(o)?o:[o],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"),n&&c.includes(p.identifier)&&(a.includes(p.identifier)?p.internals.states.add("candidate-correct"):p.internals.states.add("candidate-incorrect"))}),super.toggleCandidateCorrection(n)}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 n=new Set(this._choiceElements);this._choiceElements=Array.from(this.querySelectorAll(r)),this._choiceElements.forEach(a=>{n.has(a)||(this.disabled&&(a.disabled=!0),a.readonly=this.readonly,a.internals&&!a.internals.ariaChecked&&(a.internals.ariaChecked="false"),this._setInputType(a))});let o=new Set(this._choiceElements.map(a=>a.identifier));if(Array.isArray(this.response)){let a=this.response.filter(l=>o.has(l));a.length!==this.response.length&&(this.response=a)}else this.response&&!o.has(this.response)&&(this.response="");this._updateChoiceSelection()}validate(){let o=this._choiceElements.filter(p=>this._getChoiceChecked(p)).length,a=!0,l="";this.maxChoices!==0&&o>this.maxChoices?(a=!1,l=this.dataset.maxSelectionsMessage||`Please select no more than ${this.maxChoices} ${this.maxChoices===1?"option":"options"}.`):o<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(n=>{this._setInputType(n)})}async _setInputType(n){if(this._internals.role=this.maxChoices===1?"radiogroup":null,n.internals){let o=this.maxChoices===1?"radio":"checkbox";n.internals.role=o,n.internals.states.delete(o==="radio"?"checkbox":"radio"),n.internals.states.add(o)}}_choiceElementSelectedHandler(n){this._toggleChoiceChecked(n.target),this.maxChoices===1?this._choiceElements.forEach(o=>{o.identifier!==n.detail.identifier&&this._setChoiceChecked(o,!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(n,o){n.internals?.states&&(o?(n.internals.states.add("--checked"),n.internals.ariaChecked="true"):(n.internals.states.delete("--checked"),n.internals.ariaChecked="false"))}_getChoiceChecked(n){return n.internals.states.has("--checked")}_toggleChoiceChecked(n){let o=this._getChoiceChecked(n);this._setChoiceChecked(n,!o)}_handleChoiceSelection(){let o=this._choiceElements.filter(a=>this._getChoiceChecked(a)).map(a=>a.identifier);this.response=this.maxChoices===1?o[0]||"":o,this.validate(),this._validationMessageShown&&(this.reportValidity(),this._internals.validity.valid&&(this._validationMessageShown=!1)),this.saveResponse(this.response)}_updateChoiceSelection(){let n=Array.isArray(this.response)?this.response:[this.response];this._choiceElements.forEach(o=>{let a=n.includes(o.identifier);this._setChoiceChecked(o,a)})}}return d([Qt("#validation-message")],e.prototype,"_validationMessageElement",2),d([g({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),d([g({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([M()],e.prototype,"response",2),d([B("response",{waitUntilFirstUpdate:!0})],e.prototype,"_handleValueChange",2),d([M(),$({context:ge,subscribe:!0})],e.prototype,"_configContext",2),e};var Kc=(s,r)=>{class e extends s{#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.#n(i),this.#o()}get class(){return this.#e.join(" ")}attributeChangedCallback(i,n,o){super.attributeChangedCallback(i,n,o),i==="class"&&n!==o&&(this.class=o??"")}updated(i){super.updated(i),this.#o()}connectedCallback(){super.connectedCallback(),this.class=this.getAttribute("class")??"",this.#i=new MutationObserver(i=>{i.some(n=>n.type==="childList"||n.type==="attributes"&&n.attributeName==="style")&&this.#o()}),this.#i.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]})}disconnectedCallback(){super.disconnectedCallback(),this.#i?.disconnect(),this.#i=null}#n(i){return i?i.split(/\s+/).map(n=>n.trim()).filter(Boolean).filter((n,o,a)=>a.indexOf(n)===o):[]}#o(){let i=Array.from(this.querySelectorAll("qti-simple-choice")).map(l=>l),n=this.#s(i),o=this.#a(),a=this.#c();n.forEach((l,c)=>{l.marker=this.#d(c+1,o,a)})}#s(i){return i.map((n,o)=>{let a=Number(n.style.order);return{el:n,order:Number.isFinite(a)?a:o+1,index:o}}).sort((n,o)=>n.order-o.order||n.index-o.index).map(n=>n.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,n,o){let a=n;if(!a&&o&&o!=="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 o==="qti-labels-suffix-period"?`${l}.`:o==="qti-labels-suffix-parenthesis"?`${l})`:l}#l(i,n){let o=i,a="",l=n==="lower"?97:65;for(;o>0;)o-=1,a=String.fromCharCode(l+o%26)+a,o=Math.floor(o/26);return a}}return d([g({type:String,attribute:"class"})],e.prototype,"class",1),e};var Zc=C`
4087
4091
  :host {
4088
4092
  display: block;
4089
4093
  }
@@ -4153,11 +4157,11 @@ div.full-correct-response-inline {
4153
4157
  :host(.qti-orientation-vertical) ::slotted(qti-simple-choice:nth-child(even)) {
4154
4158
  grid-row: auto;
4155
4159
  }
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`
4160
+ `;var Bi=class extends Kc(vt(V,"qti-simple-choice"),"qti-simple-choice"){constructor(){super(...arguments);this.orientation="vertical"}static{this.styles=Zc}#e(){let e=this.querySelectorAll("qti-simple-choice");this.style.setProperty("--item-count",e.length.toString())}render(){return x`
4157
4161
  <slot part="prompt" name="prompt"></slot>
4158
4162
  <slot part="slot" @slotchange=${this.#e}></slot>
4159
4163
  <div part="message" role="alert" id="validation-message"></div>
4160
- `}};d([b({type:String})],Ni.prototype,"orientation",2);customElements.define("qti-choice-interaction",Ni);var Ic=E``;var mn=`
4164
+ `}};d([g({type:String})],Bi.prototype,"orientation",2);customElements.define("qti-choice-interaction",Bi);var ed=C``;var Cs=`
4161
4165
  const postToParentWindows = (type, data) => {
4162
4166
  window.top.postMessage(data ? { type, data } : { type }, '*');
4163
4167
  let w = window.parent;
@@ -4224,7 +4228,7 @@ window.CES = {
4224
4228
  },
4225
4229
  };
4226
4230
  CES.load();
4227
- `,op=`
4231
+ `,kp=`
4228
4232
  (function() {
4229
4233
  var blobUrlReceived = null;
4230
4234
 
@@ -4268,7 +4272,7 @@ CES.load();
4268
4272
  requestBlobUrl();
4269
4273
  }
4270
4274
  })();
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=`
4275
+ `,Ye=class extends V{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=ed}#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let i=this.querySelector("object[data]");if(i){e=i.getAttribute("data");let n=i.getAttribute("width"),o=i.getAttribute("height");n&&this.setAttribute("width",n),o&&this.setAttribute("height",o)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:bn((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],n=this.#a(),o=await this.#l(i,n),a=o.url;if(o.baseUrl&&!this.#r&&(this.#r=o.baseUrl),!0){let u="";if(this.manifest.media&&this.manifest.media.length>0){let h=this.manifest.media[0],y=await this.#l(h,n,{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>"+Cs+"</script>",b=v.indexOf("<head>");b!==-1?v=v.slice(0,b+6)+m+v.slice(b+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",w=await this.#l(v,n,{returnText:!0});if(u=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>"+Cs+"</script>",A=f.indexOf("<head>");A!==-1?f=f.slice(0,A+6)+q+f.slice(A+6):f=q+f}let b=new Blob([f],{type:"text/html"});this.#i=URL.createObjectURL(b)}}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>"+Cs+"</script>",m=y.indexOf("<head>");m!==-1?y=y.slice(0,m+6)+f+y.slice(m+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: ${h.status}`)}catch(h){console.error(`Error fetching index.html: ${h}`)}}let c=`<script>${kp}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
4272
4276
  <!DOCTYPE html>
4273
4277
  <html>
4274
4278
  <head>
@@ -4277,7 +4281,7 @@ CES.load();
4277
4281
  </head>
4278
4282
  <body></body>
4279
4283
  </html>
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
4284
+ `;e.srcdoc=p}#n(){let e=this.shadowRoot.querySelectorAll("iframe"),t=this.querySelectorAll("iframe"),i=[...e,...t];for(let n of i){let o=n.src;if(new URL(o,window.location.href).origin===window.location.origin)try{let l=n.contentDocument||n.contentWindow.document;l&&this.#o(l,i)}catch(l){console.error("Error accessing nested iframe:",l)}}return i.forEach((n,o)=>{i.indexOf(n)!==o&&i.splice(o,1)}),i}#o(e,t=[]){return e.querySelectorAll("iframe").forEach(n=>{t.push(n);let o=n.src;if(new URL(o,window.location.href).origin===window.location.origin)try{let l=n.contentDocument||n.contentWindow.document;this.#o(l,t)}catch(l){console.error("Error accessing nested iframe:",l)}else console.warn("Skipped cross-origin iframe:",o)}),t}#s(e,t){window.postMessage({type:e,data:t},"*");let i=this.#n();for(let n of i)n.contentWindow&&n.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.#s("responseData",this.#e);break}case"getBlobUrl":{this.#i&&(this.#s("blobUrl",this.#i),e.source&&e.source!==window&&e.source.postMessage({type:"blobUrl",data:this.#i},"*"));break}case"getMedia":{let n=this.#a(),o=this.manifest.media.map(a=>{if(a.startsWith("http")||a.startsWith("blob"))return a;let l=this.#r||n[0];return l?new URL(a,l.endsWith("/")?l:`${l}/`).toString():a});this.#s("mediaData",o);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
4281
4285
  width=${this.getAttribute("width")}
4282
4286
  height=${this.getAttribute("height")}
4283
4287
  frameborder="0"
@@ -4288,7 +4292,7 @@ CES.load();
4288
4292
  ${this._errorMessage&&x`<div style="color:red">
4289
4293
  <h1>Error</h1>
4290
4294
  ${this._errorMessage}
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`
4295
+ </div>`}`}#a(){let t=[this.#r,this.baseRefUrl,this.baseItemUrl,this.#c()].filter(Boolean).map(n=>new URL(n,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 n of t){let o=new URL(n,window.location.href).toString(),a=new URL(e,o.endsWith("/")?o:`${o}/`).toString();try{let l=await fetch(a);if(l.ok){if(i.returnText){let c=await l.text();return{url:a,baseUrl:o,text:c}}return{url:a,baseUrl:o}}}catch{}}return{url:"",baseUrl:null}}};d([g({type:String,attribute:"data"})],Ye.prototype,"data",2),d([g({type:String,attribute:"data-base-item"})],Ye.prototype,"baseItemUrl",2),d([g({type:String,attribute:"data-base-ref"})],Ye.prototype,"baseRefUrl",2),d([g({type:String,attribute:"id"})],Ye.prototype,"id",2),d([M()],Ye.prototype,"_errorMessage",2);customElements.define("qti-custom-interaction",Ye);var td=C``;var yt=class extends E{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}static{this.styles=td}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([g({type:String,attribute:"response-identifier"})],yt.prototype,"responseIdentifier",2),d([g({reflect:!0,type:Boolean})],yt.prototype,"disabled",2),d([g({type:String,attribute:"count-attempt"})],yt.prototype,"countAttempt",2),d([g({type:String})],yt.prototype,"title",2);customElements.define("qti-end-attempt-interaction",yt);var rd=C`
4292
4296
  /* PK: display host as block, else design will be collapsed */
4293
4297
  :host {
4294
4298
  display: block;
@@ -4299,7 +4303,7 @@ CES.load();
4299
4303
  height: 100%;
4300
4304
  border: 0;
4301
4305
  }
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
4306
+ `;var fe=class extends V{constructor(){super(...arguments);this._rows=5;this.response=null;this._handleResponseChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=rd}handleclassNamesChange(e,t){let i=t.split(" "),n=!1;if(i.forEach(o=>{if(o.startsWith("qti-height-lines-")){let a=o.replace("qti-height-lines-","");this._rows=parseInt(a),n=!0}}),!n&&this.expectedLength){let o=Math.ceil(this.expectedLength/50);this._rows=o}}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
4303
4307
  ><textarea
4304
4308
  part="textarea"
4305
4309
  name="${this.responseIdentifier}"
@@ -4310,12 +4314,12 @@ CES.load();
4310
4314
  @keyup="${this.textChanged}"
4311
4315
  @change="${this.textChanged}"
4312
4316
  @blur="${e=>{this.reportValidity()}}"
4313
- placeholder="${_e(this.placeholderText?this.placeholderText:void 0)}"
4317
+ placeholder="${Le(this.placeholderText?this.placeholderText:void 0)}"
4314
4318
  rows="${this._rows}"
4315
4319
  ?disabled="${this.disabled}"
4316
4320
  ?readonly="${this.readonly}"
4317
4321
  .value=${this.response}
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`
4322
+ ></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([M()],fe.prototype,"_rows",2),d([g({type:Number,attribute:"expected-length"})],fe.prototype,"expectedLength",2),d([g({type:String,attribute:"pattern-mask"})],fe.prototype,"patternMask",2),d([g({type:String,attribute:"placeholder-text"})],fe.prototype,"placeholderText",2),d([g({type:String,attribute:"data-patternmask-message"})],fe.prototype,"dataPatternmaskMessage",2),d([g({type:String,attribute:"class"})],fe.prototype,"classNames",2),d([B("classNames")],fe.prototype,"handleclassNamesChange",1),d([M()],fe.prototype,"response",2),d([B("response",{waitUntilFirstUpdate:!0})],fe.prototype,"_handleResponseChange",2);customElements.define("qti-extended-text-interaction",fe);var id=C`
4319
4323
  :host {
4320
4324
  display: flex;
4321
4325
  align-items: flex-start;
@@ -4349,10 +4353,10 @@ CES.load();
4349
4353
  border-radius: 0.3rem;
4350
4354
  gap: 0.5rem;
4351
4355
  }
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>
4356
+ `;var Mp=Ae(V,"qti-gap-text","qti-gap","slot[part='drags']"),ao=class extends Te(Mp,'[qti-draggable="true"]'){static{this.styles=id}render(){return x`<slot name="prompt"> </slot>
4353
4357
  <slot part="drags" name="drags"></slot>
4354
4358
  <slot part="drops"></slot>
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`
4359
+ <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(o=>{let a=o.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(o=>{let a=o.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,c=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&c){if(!o.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",o.insertAdjacentElement("afterend",p)}}else o.nextElementSibling?.classList.contains("correct-option")&&o.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 n=i.split(" ");t.push({source:n[0],target:n[1]})}),t}toggleCandidateCorrection(r){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(n=>{let o=n.getAttribute("identifier"),a=t.filter(c=>c.target===o);n.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",ao);var nd=(s,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(s[i],i);return t},Ir=qe(class extends nt{constructor(s){if(super(s),s.type!==nr.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],n=[],o=0;for(let a of s)i[o]=t?t(a,o):o,n[o]=e(a,o),o++;return{values:n,keys:i}}render(s,r,e){return this.dt(s,r,e).values}update(s,[r,e,t]){let i=sl(s),{values:n,keys:o}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=o,n;let a=this.ut??=[],l=[],c,p,u=0,h=i.length-1,y=0,v=n.length-1;for(;u<=h&&y<=v;)if(i[u]===null)u++;else if(i[h]===null)h--;else if(a[u]===o[y])l[y]=ot(i[u],n[y]),u++,y++;else if(a[h]===o[v])l[v]=ot(i[h],n[v]),h--,v--;else if(a[u]===o[v])l[v]=ot(i[u],n[v]),or(s,l[v+1],i[u]),u++,v--;else if(a[h]===o[y])l[y]=ot(i[h],n[y]),or(s,i[u],i[h]),h--,y++;else if(c===void 0&&(c=nd(o,y,v),p=nd(a,u,h)),c.has(a[u]))if(c.has(a[h])){let w=p.get(o[y]),f=w!==void 0?i[w]:null;if(f===null){let m=or(s,i[u]);ot(m,n[y]),l[y]=m}else l[y]=ot(f,n[y]),or(s,i[u],f),i[w]=null;y++}else fn(i[h]),h--;else fn(i[u]),u++;for(;y<=v;){let w=or(s,l[v+1]);ot(w,n[y]),l[y++]=w}for(;u<=h;){let w=i[u++];w!==null&&fn(w)}return this.ut=o,ol(s,l),re}});function xt(s,r,e,t){let i=e.getAttribute("width")?parseFloat(e.getAttribute("width")):e.naturalWidth,n=e.getAttribute("height")?parseFloat(e.getAttribute("height")):e.naturalHeight;switch(s){case"circle":{if(r.length!==3){console.error("Invalid circle coordinates:",r);return}let[o,a,l]=r,c=o/i*100,p=a/n*100,u=l/i*100,h=l/n*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[o,a,l,c]=r,p=o/i*100,u=a/n*100,h=l/i*100,y=c/n*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[o,a,l,c]=r,p=o/i*100,u=a/n*100,h=l/i*100,y=c/n*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 o=[];for(let m=0;m<r.length;m+=2)o.push({x:r[m],y:r[m+1]});let a=Math.min(...o.map(m=>m.x)),l=Math.max(...o.map(m=>m.x)),c=Math.min(...o.map(m=>m.y)),p=Math.max(...o.map(m=>m.y)),u=a/i*100,h=c/n*100,y=l/i*100,v=p/n*100;t.style.left=u+"%",t.style.top=h+"%",t.style.width=y-u+"%",t.style.height=v-h+"%";let f=o.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: ${s}`);break}}var od=C`
4356
4360
  slot:not([name='prompt']) {
4357
4361
  // position: relative; /* qti-hotspot-choice relative to the slot */
4358
4362
  display: block;
@@ -4376,14 +4380,14 @@ CES.load();
4376
4380
  top: 0px;
4377
4381
  left: 0px;
4378
4382
  }
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>
4383
+ `;var Je=class extends V{constructor(){super();this.#t=null;this.#r=null;this._correctLines=[];this._response=[];this.addEventListener("qti-register-hotspot",this.#o)}static{this.styles=od}#e;#t;#r;reset(){this._response=[],this._correctLines=[]}validate(){return this.#n().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]}#n(){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>
4380
4384
  <line-container>
4381
4385
  <svg
4382
- width=${_e(this.grImage[0]?.width)}
4383
- height=${_e(this.grImage[0]?.height)}
4386
+ width=${Le(this.grImage[0]?.width)}
4387
+ height=${Le(this.grImage[0]?.height)}
4384
4388
  viewbox="0 0 ${this.grImage[0]?.width} ${this.grImage[0]?.height}"
4385
4389
  >
4386
- ${Ar(this.#o(),e=>e,(e,t)=>ao`
4390
+ ${Ir(this.#n(),e=>e,(e,t)=>mn`
4387
4391
  <line
4388
4392
  part="line"
4389
4393
  x1=${parseInt(this.querySelector(`[identifier=${e.split(" ")[0]}]`).style.left)}
@@ -4392,10 +4396,10 @@ CES.load();
4392
4396
  y2=${parseInt(this.querySelector(`[identifier=${e.split(" ")[1]}]`).style.top)}
4393
4397
  stroke="red"
4394
4398
  stroke-width="3"
4395
- @click=${i=>{i.stopPropagation(),this._response=this._response.filter((o,s)=>s!==t),this.saveResponse(this.response)}}
4399
+ @click=${i=>{i.stopPropagation(),this._response=this._response.filter((n,o)=>o!==t),this.saveResponse(this.response)}}
4396
4400
  />
4397
4401
  `)}
4398
- ${Ar(this._correctLines||[],e=>e,(e,t)=>ao`
4402
+ ${Ir(this._correctLines||[],e=>e,(e,t)=>mn`
4399
4403
  <line
4400
4404
  part="correct-line"
4401
4405
  x1=${parseInt(this.querySelector(`[identifier=${e.split(" ")[0]}]`).style.left)}
@@ -4407,7 +4411,7 @@ CES.load();
4407
4411
  stroke-dasharray="5,5"
4408
4412
  />
4409
4413
  `)}
4410
- ${this.#t&&ao`<line
4414
+ ${this.#t&&mn`<line
4411
4415
  part="point"
4412
4416
  x1=${this.startCoord.x}
4413
4417
  y1=${this.startCoord.y}
@@ -4419,7 +4423,7 @@ CES.load();
4419
4423
  </svg>
4420
4424
  <slot></slot>
4421
4425
  </line-container>
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`
4426
+ <div role="alert" part="message" id="validation-message"></div>`}#o(e){let t=this.querySelector("img"),i=e.target,n=i.getAttribute("coords"),o=i.getAttribute("shape"),a=n.split(",").map(l=>parseInt(l));xt(o,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.#n(),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.#o)}};d([M()],Je.prototype,"_correctLines",2),d([M()],Je.prototype,"startCoord",2),d([M()],Je.prototype,"mouseCoord",2),d([Ua({selector:"img"})],Je.prototype,"grImage",2),d([M()],Je.prototype,"_response",2);customElements.define("qti-graphic-associate-interaction",Je);var sd=C`
4423
4427
  :host {
4424
4428
  display: flex;
4425
4429
  align-items: flex-start;
@@ -4473,10 +4477,10 @@ CES.load();
4473
4477
  user-select: none;
4474
4478
  pointer-events: none;
4475
4479
  }
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>
4480
+ `;var _p=Ae(V,"qti-gap-img, qti-gap-text","qti-associable-hotspot","slot[part='drags']"),lo=class extends Te(_p,'[qti-draggable="true"]'){static{this.styles=sd}render(){return x` <slot name="prompt"></slot>
4477
4481
  <slot part="image"></slot>
4478
4482
  <slot part="drags" name="drags" class="hover-border"></slot>
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`
4483
+ <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"),n=t.split(",").map(o=>parseInt(o));switch(i){case"circle":{let[o,a,l]=n;e.style.left=o-l+"px",e.style.top=a-l+"px",e.style.width=e.style.height=2*l+"px"}break;case"rect":{let[o,a,l,c]=n;e.style.left=o+"px",e.style.top=a+"px",e.style.width=l-o+"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",lo);var ad=C`
4480
4484
  slot:not([name='prompt']) {
4481
4485
  position: relative; /* qti-hotspot-choice relative to the slot */
4482
4486
  display: block;
@@ -4487,11 +4491,11 @@ CES.load();
4487
4491
  pointer-events: none;
4488
4492
  user-select: none;
4489
4493
  }
4490
- `;var rs=class extends bt(D,"qti-hotspot-choice"){constructor(){super(...arguments);this._choiceElements=[]}static{this.styles=Pc}render(){return x`
4494
+ `;var co=class extends vt(V,"qti-hotspot-choice"){constructor(){super(...arguments);this._choiceElements=[]}static{this.styles=ad}render(){return x`
4491
4495
  <slot name="prompt"></slot>
4492
4496
  <slot></slot>
4493
4497
  <div role="alert" part="message" id="validation-message"></div>
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`
4498
+ `}#e(e){let{identifier:t}=e.detail,i=this._choiceElements.find(o=>o.getAttribute("identifier")===t);if(!i)return;let n=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,i.order==null){let o=this._choiceElements.filter(a=>a.order!=null).length;if(o>=n){this.choiceOrdering=!1;return}i.order=o+1}else{let o=i.order;i.order=null,this._choiceElements.forEach(a=>{a.order!=null&&a.order>o&&a.order--})}this.choiceOrdering=!1}}toggleCorrectResponse(e){let t=this.responseVariable,i=this._choiceElements;for(let n of i)if(e&&t?.correctResponse?.length>0&&Array.isArray(t.correctResponse)){let o=t.correctResponse.findIndex(a=>a===n.identifier);o>=0?n.orderCorrect=o+1:n.orderCorrect=null}else n.orderCorrect=null}#t(e){let t=this.querySelector("img"),i=e.target,n=i.getAttribute("coords"),o=i.getAttribute("shape"),a=n.split(",").map(l=>parseInt(l));xt(o,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",co);var ld=C`
4495
4499
  slot:not([name='prompt']) {
4496
4500
  position: relative; /* qti-hotspot-choice relative to the slot */
4497
4501
  display: inline-block;
@@ -4505,11 +4509,11 @@ CES.load();
4505
4509
  user-select: none;
4506
4510
  /* width:100%; */
4507
4511
  }
4508
- `;var is=class extends bt(D,"qti-hotspot-choice"){static{this.styles=Dc}render(){return x`
4512
+ `;var po=class extends vt(V,"qti-hotspot-choice"){static{this.styles=ld}render(){return x`
4509
4513
  <slot name="prompt"></slot>
4510
4514
  <slot></slot>
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`
4515
+ `}#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"),n=t.getAttribute("shape"),o=i.split(",").map(l=>parseInt(l)),a=await this.#t(e);xt(n,o,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",po);var cd=C``;var zi=class extends vt(V,"qti-hottext"){constructor(){super(...arguments);this.class="";this.render=()=>x`<slot></slot>
4516
+ <div part="message" role="alert" id="validation-message"></div>`}static{this.styles=cd}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([g({type:String,reflect:!0})],zi.prototype,"class",2);customElements.define("qti-hottext-interaction",zi);var Lp=C`
4513
4517
  :host {
4514
4518
  display: inline-block;
4515
4519
  vertical-align: baseline;
@@ -4565,12 +4569,12 @@ CES.load();
4565
4569
  display: inline-block;
4566
4570
  vertical-align: middle;
4567
4571
  }
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`
4572
+ `,dd=Lp;var $p=0,qt=class extends V{constructor(){super();this.options=[];this.correctOption=O;this._dropdownOpen=!1;this._slotObserver=null;this._menuId=`qti-inline-choice-menu-${$p++}`;this.#o=e=>{(this.disabled||this.readonly)&&e.preventDefault()};this.#s=e=>{this.disabled||this.readonly||(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.#n(!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.#n(!1),this.#d();return}let t=this.#v(),i=this.renderRoot.activeElement,n=this.#l(),o=i||(n instanceof HTMLElement&&this.#u(n)?n:null),a=t.findIndex(l=>l===o);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(!o)return;if(e.preventDefault(),o instanceof HTMLButtonElement)o.click();else{let l=o.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[dd]}render(){let e=this.#e();return x`
4569
4573
  <button
4570
4574
  part="trigger"
4571
4575
  type="button"
4572
- @click=${this.#s}
4573
- @keydown=${this.#n}
4576
+ @click=${this.#o}
4577
+ @keydown=${this.#s}
4574
4578
  aria-haspopup="listbox"
4575
4579
  aria-expanded="${this._dropdownOpen?"true":"false"}"
4576
4580
  aria-controls="${this._menuId}"
@@ -4579,7 +4583,7 @@ CES.load();
4579
4583
  ?disabled="${this.disabled}"
4580
4584
  data-readonly="${this.readonly?"true":"false"}"
4581
4585
  >
4582
- <span part="value">${Wt(e?.textContent??"")}</span>
4586
+ <span part="value">${e?.content}</span>
4583
4587
  <span part="${this._dropdownOpen?"dropdown-icon dropdown-icon-open":"dropdown-icon"}" aria-hidden="true"
4584
4588
  >▾</span
4585
4589
  >
@@ -4599,12 +4603,16 @@ CES.load();
4599
4603
  aria-selected="${this.options[0]?.selected?"true":"false"}"
4600
4604
  @click=${()=>this.#i("")}
4601
4605
  >
4602
- <span part="option-content">${Wt(this.options[0]?.textContent??"")}</span>
4606
+ <span part="option-content">${this.options[0]?.content}</span>
4603
4607
  </button>
4604
4608
  <slot @slotchange=${this.#b}></slot>
4605
4609
  </div>
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`
4610
+ ${this.correctOption}
4611
+ `}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??"",n=[{content:t,value:"",selected:i===""},...e.map(a=>{let l=a.getAttribute("identifier")??"";return{content:Array.from(a.childNodes).map(c=>c.cloneNode(!0)),value:l,selected:l!==""&&l===i}})],o=n.some(a=>a.selected);this.options=o?n:n.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"]'),n=i?i.getBoundingClientRect().width:0,o=e.matches(":popover-open"),a=e.style.visibility,l=e.style.display;o||(e.style.visibility="hidden",e.style.display="block",e.showPopover());let c=e.getBoundingClientRect().width,p=Math.max(c,e.scrollWidth);o||(e.hidePopover(),e.style.visibility=a,e.style.display=l),t.style.width=`${p+n}px`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.#n(!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=O;return}let i=this.options.find(n=>t===n.value);if(!i){this.correctOption=O;return}this.correctOption=x`<span
4612
+ part="correct-option"
4613
+ style="border:1px solid var(--qti-correct); border-radius:4px; padding: 2px 4px; margin: 4px; display:inline-block"
4614
+ >${i.content}</span
4615
+ >`}#i(e){this.options=this.options.map(t=>({...t,selected:t.value===e})),this.#p(),this.saveResponse(e),this.#n(!1)}#n(e){let t=this.#h();if(t){if(e){t.matches(":popover-open")||t.showPopover();return}t.matches(":popover-open")&&t.hidePopover()}}#o;#s;#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 o=(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=o?"true":"false",i.internals.ariaChecked=o?"true":"false",i.internals.ariaDisabled=this.disabled?"true":"false",i.internals.ariaReadOnly=this.readonly?"true":"false",i.removeAttribute("aria-disabled"),i.removeAttribute("aria-readonly"),o?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([M()],qt.prototype,"options",2),d([M()],qt.prototype,"correctOption",2),d([M()],qt.prototype,"_dropdownOpen",2),d([$({context:ge,subscribe:!0}),g({attribute:!1})],qt.prototype,"configContext",2);customElements.define("qti-inline-choice-interaction",qt);var pd=C`
4608
4616
  slot:not([hidden]) {
4609
4617
  /* slot where the */
4610
4618
  display: flex;
@@ -4630,7 +4638,7 @@ CES.load();
4630
4638
  /* Make sure the drag and drop container slots have the same width */
4631
4639
  flex: 1;
4632
4640
  }
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`
4641
+ `;var Pp=Ae(V,"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"),wt=class extends Te(Pp,'[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,n=t.name,o=t.type;t.checked?(this.response?this.response.indexOf(i)===-1&&(o==="radio"&&(this.response=(this.response||[]).filter(a=>a.indexOf(n)===-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=pd}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(n=>{let o=n.split(" ");i.push({source:o[0],target:o[1]})}),i}toggleInternalCorrectResponse(e){let t=this.responseVariable;if(!t?.correctResponse){this.querySelectorAll(".correct-option").forEach(n=>n.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(n=>n.remove()),this.targetChoices.forEach(n=>{let o=n.getAttribute("identifier"),a=i.find(l=>l.target===o);if(a?.source){let l=this.querySelector(`qti-simple-associable-choice[identifier="${a.source}"]`),c=Array.from(l?.childNodes||[]).map(p=>p.cloneNode(!0));if(c.length>0&&!n.previousElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),c.forEach(u=>p.appendChild(u)),p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",n.insertAdjacentElement("beforebegin",p)}}})):this.correctOptions=null}toggleCandidateCorrection(e){let t=this.responseVariable;if(!t?.correctResponse)return;let i=this.#e(t);this.targetChoices.forEach(n=>{let o=n.getAttribute("identifier"),a=i.filter(c=>c.target===o);n.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`
4634
4642
  <slot name="prompt"></slot>
4635
4643
  <slot ?hidden=${e}></slot>
4636
4644
 
@@ -4638,12 +4646,12 @@ CES.load();
4638
4646
  <table part="table">
4639
4647
  <tr part="r-header">
4640
4648
  <td></td>
4641
- ${this.targetChoices.map(i=>x`<th part="r-header">${Wt(i.innerHTML)}</th>`)}
4649
+ ${this.targetChoices.map(i=>x`<th part="r-header">${Array.from(i.childNodes).map(n=>n.cloneNode(!0))}</th>`)}
4642
4650
  </tr>
4643
4651
 
4644
4652
  ${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">
4653
+ <td part="c-header">${Array.from(i.childNodes).map(n=>n.cloneNode(!0))}</td>
4654
+ ${this.targetChoices.map(n=>{let o=i.getAttribute("identifier"),a=n.getAttribute("identifier"),l=`${o} ${a}`,c=(this.response||[]).filter(w=>w.split(" ")[0]===o).length||0,p=this.response?.includes(l)||!1,u=i.matchMax===1?"radio":"checkbox",h=!!this.correctOptions?.find(w=>w.source===o&&w.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">
4647
4655
  <div
4648
4656
  class="input-container"
4649
4657
  style="position: relative; width: 24px; height: 24px; margin: 0 auto;"
@@ -4651,11 +4659,11 @@ CES.load();
4651
4659
  <input
4652
4660
  type=${u}
4653
4661
  part=${y}
4654
- name=${s}
4662
+ name=${o}
4655
4663
  value=${l}
4656
4664
  .disabled=${v}
4657
- @change=${C=>this.handleRadioChange(C)}
4658
- @click=${C=>i.matchMax===1?this.handleRadioClick(C):null}
4665
+ @change=${w=>this.handleRadioChange(w)}
4666
+ @click=${w=>i.matchMax===1?this.handleRadioClick(w):null}
4659
4667
  />
4660
4668
  ${u==="checkbox"&&p?x`
4661
4669
  <svg
@@ -4670,11 +4678,11 @@ CES.load();
4670
4678
  </td>`})}
4671
4679
  </tr>`)}
4672
4680
  </table>
4673
- `:N}
4681
+ `:O}
4674
4682
 
4675
4683
  <div role="alert" part="message" id="validation-message"></div>
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`
4684
+ `}};d([g({type:String})],wt.prototype,"class",2),d([M()],wt.prototype,"_response",2),d([g({type:String,attribute:"response-identifier"})],wt.prototype,"responseIdentifier",2),d([M()],wt.prototype,"correctOptions",2);customElements.define("qti-match-interaction",wt);var ud=C``;var uo=class extends V{static{this.styles=ud}#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{...V.properties,step:{type:Number,attribute:"step",default:10}}}render(){return x` <slot name="prompt"></slot>
4685
+ <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",uo);var md=C`
4678
4686
  [part='drags'] {
4679
4687
  display: flex;
4680
4688
  align-items: flex-start;
@@ -4750,13 +4758,13 @@ CES.load();
4750
4758
  :host(.qti-choices-right) [part='container'] {
4751
4759
  flex-direction: row-reverse;
4752
4760
  }
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>
4761
+ `;var Vp=Ae(V,"qti-simple-choice","drop-list","slot[part='drags']"),Et=class extends Te(Vp,'[qti-draggable="true"]'){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}static{this.styles=md}#e(){let e=this.responseVariable;return e?.correctResponse?(Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse]).map((i,n)=>{let[o,a]=i.split(" "),l=a?.startsWith("droplist")?parseInt(a.replace("droplist",""),10):n,c=Number.isNaN(l)?n:l;return{identifier:o,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>
4754
4762
  <div part="container">
4755
4763
  <slot part="drags"> </slot>
4756
4764
  <div part="drops">
4757
4765
  ${[...Array(this.nrChoices)].map((t,i)=>x`<drop-list role="region" part="drop-list" identifier="droplist${i}"></drop-list>`)}
4758
4766
  </div>
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`
4767
+ </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(n=>{let o=n.getAttribute("identifier"),a=n.textContent?.trim();o&&a&&i.set(o,a)}),t.forEach(({identifier:n,dropIndex:o})=>{let a=i.get(n);if(!a)return;let l=this.shadowRoot.querySelector(`drop-list[identifier="droplist${o}"]`);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(),n=new Map;i.forEach(a=>n.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=n.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 n=i.querySelectorAll('[qti-draggable="true"]');return[...Array.from(n).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([M()],Et.prototype,"nrChoices",2),d([M()],Et.prototype,"correctResponses",2),d([M()],Et.prototype,"showCorrectResponses",2),d([g({type:String})],Et.prototype,"orientation",2);customElements.define("qti-order-interaction",Et);var hd=C`
4760
4768
  :host {
4761
4769
  display: block;
4762
4770
  width: 100%;
@@ -4766,14 +4774,14 @@ CES.load();
4766
4774
  ::slotted(qti-interaction-markup) {
4767
4775
  display: none;
4768
4776
  }
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`
4777
+ `;var K=class extends V{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.#n="";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,n=i&&typeof i=="object"?this.#d(i):null,o=typeof t?.params?.valid=="boolean"?t.params.valid:null,a=typeof t?.params?.customValidity=="string"?t.params.customValidity:null;o!==null&&(this.#i=o,o&&a===null&&(this.#n="")),a!==null&&(this.#n=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(n===null){let p=this.responseVariable?.cardinality==="single"?"":[];this.response=p,this.validate(),this.saveResponse(p,c);break}this.response=n,this.validate(),this.saveResponse(n,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=[hd,C`
4770
4778
  :host {
4771
4779
  display: block;
4772
4780
  width: 100%;
4773
4781
  min-height: 50px;
4774
4782
  }
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=`
4783
+ `]}#t;#r;#i;#n;#o(){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||{}}#s(){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.#o()}#c(){return this.#s()}#d(e){for(let t in e)if(e.hasOwnProperty(t)){let i=e[t];if(i){for(let n in i)if(i.hasOwnProperty(n)){let o=i[n];if(Array.isArray(o))return o.map(String);if(o!=null)return String(o)}}}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 n=this.normalizeListValue(e).map(o=>this.coerceBaseValue(o,i));return{list:{[i]:n}}}return{base:{[i]:this.coerceBaseValue(e,i)}}}recordToQtiVariableJSON(e){if(!e||typeof e!="object")return{record:[]};let t=[];for(let[i,n]of Object.entries(e))t.push(this.recordEntryFromValue(i,n));return{record:t}}recordEntryFromValue(e,t){if(Array.isArray(t)){let i=t.filter(n=>n!=null);if(i.length&&i.every(n=>typeof n=="boolean"))return{name:e,list:{boolean:i}};if(i.length&&i.every(n=>typeof n=="number")){let n=i,o=n.every(a=>Number.isInteger(a));return{name:e,list:{[o?"integer":"float"]:n}}}return{name:e,list:{string:t.map(n=>n==null?"":String(n))}}}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(n=>{let o=n.querySelector("qti-default-value");if(!o)return;o.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 n={candidateIdentifier:i.candidateIdentifier??"",testIdentifier:i.testIdentifier??"",environmentIdentifier:i.environmentIdentifier??"",...i};return this.recordToQtiVariableJSON(n)}getTemplateVariables(){let e={},t=this.getDirectChildrenByTag("qti-template-variable");return t.length&&t.forEach(i=>{let n=i.getAttribute("template-identifier")||i.getAttribute("identifier")||"";if(!n)return;let o=this.context?.variables?.find(c=>c.identifier===n);if(!o)return;let a=o.cardinality||"single",l=o.baseType||"string";e[n]=this.variableToQtiVariableJSON(o.value,a,l)}),e}getContextVariables(){let e={},t=this.getDirectChildrenByTag("qti-context-variable");return t.length&&t.forEach(i=>{let n=i.getAttribute("identifier")||"";if(!n)return;if(n==="QTI_CONTEXT"){let c=this.getQtiContextRecord();c&&(e[n]=c);return}let o=this.context?.variables?.find(c=>c.identifier===n);if(!o)return;let a=o.cardinality||"single",l=o.baseType||"string";e[n]=this.variableToQtiVariableJSON(o.value,a,l)}),e}#l(e){let t={...e};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let n=i.replace(/[A-Z]/g,o=>`-${o.toLowerCase()}`);t[n]=e[i]}return t}#u(e){let t={...e},i=(n,o,a)=>{let l=n;for(let c=0;c<o.length;c+=1){let p=o[c];if(c===o.length-1){l[p]=a;return}(!l[p]||typeof l[p]!="object"||Array.isArray(l[p]))&&(l[p]={}),l=l[p]}};for(let[n,o]of Object.entries(e)){if(!n.includes("__"))continue;let a=n.split("__").filter(Boolean);a.length<2||i(t,a,o)}return t}responseVariablesToQtiVariableJSON(e,t,i){if(t!=="single"){let n={list:{}};return n.list[i]=e,n}else{let n={base:{}};return n.base[i]=e,n}}#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.",n=e?"":t&&t.trim().length>0?t:i;this._internals.setValidity(e?{}:{customError:!0},n)}validate(){let e=typeof this.#i=="boolean"?this.#i:this.#h();return this.#g(e,this.#n),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",n=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.baseType||"string",o=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.value||null,a=this.responseVariablesToQtiVariableJSON(o,i,n);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,n]of Object.entries(e))typeof n=="string"?t[i]=this.#b(n):t[i]=n;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,n={module:this.module,customInteractionTypeIdentifier:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl?this.baseUrl.startsWith("http")||this.baseUrl.startsWith("blob")||this.baseUrl.startsWith("base64")?this.baseUrl:bn(`${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",n)}#v(){let e=[],t=this.querySelector("qti-interaction-modules");if(t){let i=t.querySelectorAll("qti-interaction-module");for(let n of i)e.push({id:n.getAttribute("id"),primaryPath:n.getAttribute("primary-path"),fallbackPath:n.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 n=t.map(o=>o.outerHTML).join(`
4784
+ `);this.sendMessageToIframe("setStylesheets",n)}let i=this.querySelector("properties");i&&this.sendMessageToIframe("setProperties",i.innerHTML)}#q(){}connectedCallback(){super.connectedCallback(),this.#i=null,this.#n="",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()),n=this.dataset.baseUrl?this.dataset.baseUrl.startsWith("/")?`${window.location.origin}${this.dataset.baseUrl}`:this.dataset.baseUrl:"",o=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=`
4777
4785
  font-family: ${e.getPropertyValue("font-family")};
4778
4786
  font-size: ${e.getPropertyValue("font-size")};
4779
4787
  line-height: ${e.getPropertyValue("line-height")};
@@ -4814,7 +4822,7 @@ CES.load();
4814
4822
  <link href="${u}" rel="stylesheet" />
4815
4823
  <script src="${this.requireJsUrl}"></script>
4816
4824
  <script>
4817
- const forwardConsole = ${s?"true":"false"};
4825
+ const forwardConsole = ${o?"true":"false"};
4818
4826
  if (forwardConsole) {
4819
4827
  const originalLog = console.log.bind(console);
4820
4828
  const originalError = console.error.bind(console);
@@ -4864,7 +4872,7 @@ CES.load();
4864
4872
  catchError: true,
4865
4873
  waitSeconds: 30,
4866
4874
  paths: window.requirePaths,
4867
- baseUrl: '${o}',
4875
+ baseUrl: '${n}',
4868
4876
  shim: window.requireShim,
4869
4877
  onNodeCreated: function (node, config, moduleName, url) {
4870
4878
  // Add error handler to script node
@@ -5658,13 +5666,13 @@ CES.load();
5658
5666
  <body>
5659
5667
  <div id="pci-container"></div>
5660
5668
  </body>
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`
5669
+ </html>`}toggleInternalCorrectResponse(e){let t=this.responseVariable;this.correctResponse=e?t?.correctResponse:t.cardinality==="single"?"":[];let i=`correct-response-container-${this.responseIdentifier}`,n=this.parentElement?.querySelectorAll(`#${i}`);if(n&&n.forEach(h=>{h.remove()}),e)this.disable();else{this.enable();return}if(!e||!t?.correctResponse)return;let o=document.createElement("div");o.id=i,o.className="pci-correct-response-container",o.style.position="relative",o.style.marginTop="20px",o.style.border="2px solid green",o.style.padding="16px",o.style.borderRadius="4px",o.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",o.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",o.appendChild(l),this.after(o)}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`
5662
5670
  <slot></slot>
5663
5671
  ${this._errorMessage?x`<div style="color:red">
5664
5672
  <h1>Error</h1>
5665
5673
  ${this._errorMessage}
5666
5674
  </div>`:""}
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=`
5675
+ `}};d([g({type:String,attribute:"module"})],K.prototype,"module",2),d([g({type:String,attribute:"custom-interaction-type-identifier"})],K.prototype,"customInteractionTypeIdentifier",2),d([g({type:String,attribute:"data-require-paths"})],K.prototype,"requirePathsJson",2),d([g({type:String,attribute:"data-require-shim"})],K.prototype,"requireShimJson",2),d([g({type:String,attribute:"data-require-js-url"})],K.prototype,"requireJsUrl",2),d([g({type:String,attribute:"data-base-url"})],K.prototype,"baseUrl",2),d([g({type:Boolean,attribute:"data-use-default-paths"})],K.prototype,"useDefaultPaths",2),d([M()],K.prototype,"_errorMessage",2),d([$({context:W,subscribe:!0}),M()],K.prototype,"context",2),d([$({context:ir,subscribe:!0}),M()],K.prototype,"qtiContext",2),d([M()],K.prototype,"response",2);var mo=class extends K{#e=!1;async getIFrameContent(){return new Promise(r=>{let e=`get-content-${Date.now()}`,t=i=>{let{data:n}=i;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="getContentResponse"&&n?.messageId===e&&(window.removeEventListener("message",t),r(n.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()}`,n=o=>{let{data:a}=o;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="clickResponse"&&a?.messageId===i&&(window.removeEventListener("message",n),t())};window.addEventListener("message",n),this.sendMessageToIframe("simulateClick",{x:r,y:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",n),t()},5e3)})}async iFrameClickOnElement(r){return new Promise(e=>{let t=`click-selector-${Date.now()}`,i=n=>{let{data:o}=n;o?.source==="qti-pci-iframe"&&(!o?.responseIdentifier||o?.responseIdentifier===this.responseIdentifier)&&o?.method==="clickSelectorResponse"&&o?.messageId===t&&(window.removeEventListener("message",i),e(o.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=n=>{let{data:o}=n;o?.source==="qti-pci-iframe"&&(!o?.responseIdentifier||o?.responseIdentifier===this.responseIdentifier)&&o?.method==="clickTextResponse"&&o?.messageId===t&&(window.removeEventListener("message",i),e(o.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()}`,n=o=>{let{data:a}=o;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueResponse"&&a?.messageId===i&&(window.removeEventListener("message",n),t(a.success))};window.addEventListener("message",n),this.sendMessageToIframe("setValueElement",{selector:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",n),t(!1)},5e3)})}async iFrameGetBoundingClientRect(r){return new Promise(e=>{let t=`get-bounding-rect-${Date.now()}`,i=n=>{let{data:o}=n;o?.source==="qti-pci-iframe"&&(!o?.responseIdentifier||o?.responseIdentifier===this.responseIdentifier)&&o?.method==="getBoundingRectResponse"&&o?.messageId===t&&(window.removeEventListener("message",i),e(o.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()}`,n=o=>{let{data:a}=o;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueByTextResponse"&&a?.messageId===i&&(window.removeEventListener("message",n),t(a.success))};window.addEventListener("message",n),this.sendMessageToIframe("setValueElementByText",{text:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",n),t(!1)},5e3)})}async iFrameMousedownOnElement(r){return new Promise(e=>{let t=`mousedown-selector-${Date.now()}`,i=n=>{let{data:o}=n;o?.source==="qti-pci-iframe"&&(!o?.responseIdentifier||o?.responseIdentifier===this.responseIdentifier)&&o?.method==="mousedownSelectorResponse"&&o?.messageId===t&&(window.removeEventListener("message",i),e(o.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=`
5668
5676
  // Test helper functions for QtiPortableCustomInteractionTest
5669
5677
  // Base iframe implementation already provides PCIManager.getContent
5670
5678
 
@@ -5857,7 +5865,7 @@ CES.load();
5857
5865
  }
5858
5866
  },
5859
5867
  true
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`
5868
+ );`,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",mo);var fd=C`
5861
5869
  :host {
5862
5870
  display: block;
5863
5871
  }
@@ -5868,12 +5876,12 @@ CES.load();
5868
5876
  left: 50%;
5869
5877
  transform: translateX(-50%);
5870
5878
  }
5871
- `;var ns=class extends w{static{this.styles=Bc}render(){return x`<slot></slot>`}};var zc=E`
5879
+ `;var ho=class extends E{static{this.styles=fd}render(){return x`<slot></slot>`}};var gd=C`
5872
5880
  :host {
5873
5881
  display: inline-block;
5874
5882
  position: relative;
5875
5883
  }
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`
5884
+ `;var fo=class extends E{static{this.styles=gd}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",ho);customElements.define("qti-position-object-stage",fo);var bd="important",Dp=" !"+bd,Ss=qe(class extends nt{constructor(s){if(super(s),s.type!==nr.ATTRIBUTE||s.name!=="style"||s.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce((r,e)=>{let t=s[e];return t==null?r:r+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${t};`},"")}update(s,[r]){let{style:e}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(r)),this.render(r);for(let t of this.ft)r[t]==null&&(this.ft.delete(t),t.includes("-")?e.removeProperty(t):e[t]=null);for(let t in r){let i=r[t];if(i!=null){this.ft.add(t);let n=typeof i=="string"&&i.endsWith(Dp);t.includes("-")||n?e.setProperty(t,n?i.slice(0,-11):i,n?bd:""):e[t]=i}}return re}});var vd=C`
5877
5885
  :host {
5878
5886
  display: block;
5879
5887
  }
@@ -5888,25 +5896,25 @@ CES.load();
5888
5896
  height: auto;
5889
5897
  display: block;
5890
5898
  }
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>
5899
+ `;var Ke=class extends V{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.#n=0;this.#o=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,n=(e.clientY-t.top)*this.#r,o=`${i.toFixed()} ${n.toFixed()}`;this.maxChoices===1?this.response=[o]:(this.maxChoices===0||(this.response||[]).length<this.maxChoices)&&(this.response=[...this.response||[],o]),this.saveResponse(this.response)};this.#s=()=>{this.#a()}}static{this.styles=vd}#e;#t;#r;#i;#n;#o;connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.#s)}#s;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(n=>J.isPointInArea(`${t.x} ${t.y}`,`${n.shape},${n.coords}`,this.responseVariable.baseType));this._responseCorrection.push(i)})}toggleCorrectResponse(e){let t=this.responseVariable;if(!e||!t){this._correctAreas=[];return}let i=t.areaMapping,n=[];if(!i||i.areaMapEntries.length===0)if(t.correctResponse){let o=Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse];if(o.length===0||o.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."),n=o.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 n=i.areaMapEntries;this._correctAreas=n.map(o=>({coords:o.coords,shape:o.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 n=i.dataset.coord,o=i.dataset.shape;n&&o&&xt(o,n.split(",").map(a=>+a),t,i)}))}render(){return x` <slot name="prompt"></slot>
5892
5900
  <point-container>
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`
5901
+ ${Ir((this.response||[]).filter(e=>e),e=>e,(e,t)=>{let[i,n]=e.split(" ").map(Number),o=i/(this.#i||1)*100,a=n/(this.#n||1)*100,l=16,c=l/(this.#i||1)*100,p=l/(this.#n||1)*100,u="";return this._responseCorrection[t]===!0?u=" correct":this._responseCorrection[t]===!1&&(u=" incorrect"),x`
5894
5902
  <button
5895
5903
  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"})}
5904
+ style=${Ss({pointerEvents:this.maxChoices===1?"none":"auto",position:"absolute",transform:"translate(-50%, -50%)",left:`${o}%`,top:`${a}%`,width:`min(${c}%, 1rem)`,height:`min(${p}%, 1rem)`,minWidth:`min(${c}%, 1rem)`,minHeight:`min(${p}%, 1rem)`,borderRadius:"50%",background:"red"})}
5897
5905
  aria-label="Remove point at ${e}"
5898
5906
  ?disabled=${this.disabled}
5899
5907
  @click=${h=>{h.stopPropagation(),this.response=(this.response||[]).filter((y,v)=>v!==t),this.saveResponse(this.response)}}
5900
5908
  ></button>
5901
5909
  `})}
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"})}
5910
+ ${Ir(this._correctAreas?.filter(e=>e)||[],e=>e,(e,t)=>x`<div
5911
+ style=${Ss({position:"absolute",pointerEvents:"none",backgroundColor:"var(--qti-correct)",opacity:"0.5"})}
5904
5912
  data-coord="${e.coords}"
5905
5913
  alt=${`correct-response-${t+1}`}
5906
5914
  data-shape="${e.shape}"
5907
5915
  ></div>`)}
5908
5916
  <slot></slot>
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`
5917
+ </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.#n=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.#n/e.height}firstUpdated(){this.#e=this.querySelector("img"),this.#e?(this.#a(),this.#e.addEventListener("click",this.#o)):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.#s),this.#e&&this.#e.removeEventListener("click",this.#o)}};d([g({type:Number,attribute:"max-choices"})],Ke.prototype,"maxChoices",2),d([g({type:Number,attribute:"min-choices"})],Ke.prototype,"minChoices",2),d([M()],Ke.prototype,"response",2),d([M()],Ke.prototype,"_correctAreas",2),d([M()],Ke.prototype,"_responseCorrection",2);customElements.define("qti-select-point-interaction",Ke);var yd=C`
5910
5918
  :host {
5911
5919
  display: block;
5912
5920
  --show-bounds: true;
@@ -5986,7 +5994,7 @@ CES.load();
5986
5994
  text-align: center;
5987
5995
  color: #6b7280; /* text-gray-500 */
5988
5996
  }
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`
5997
+ `;var Ct=class extends V{constructor(){super(...arguments);this.#e=0;this.#t=null;this.min=0;this.max=100;this.step=1}static{this.styles=yd}#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 n=(this.#t-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage-correct",`${n}%`)}}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`
5990
5998
  <slot name="prompt"></slot>
5991
5999
  <div id="slider" part="slider">
5992
6000
  <div id="bounds" part="bounds">
@@ -5996,7 +6004,7 @@ CES.load();
5996
6004
 
5997
6005
  <div id="ticks" part="ticks"></div>
5998
6006
 
5999
- <div id="rail" part="rail" @mousedown=${this.#i} @touchstart=${this.#o}>
6007
+ <div id="rail" part="rail" @mousedown=${this.#i} @touchstart=${this.#n}>
6000
6008
  <div id="knob" part="knob">
6001
6009
  <div id="value" part="value">${this.response}</div>
6002
6010
  </div>
@@ -6008,7 +6016,7 @@ CES.load();
6008
6016
  `:null}
6009
6017
  </div>
6010
6018
  </div>
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`
6019
+ `}#i(e){this.#o(e.pageX);let t=n=>this.#s(n.pageX),i=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",i),this.#a()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",i)}#n(e){this.#o(e.touches[0].pageX);let t=n=>this.#s(n.touches[0].pageX),i=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",i),this.#a()};document.addEventListener("touchmove",t,{passive:!1}),document.addEventListener("touchend",i)}#o(e){this.#s(e)}#s(e){let t=this._rail.getBoundingClientRect(),i=e-t.left,n=Math.min(1,Math.max(0,i/t.width)),o=this.min+Math.round(n*(this.max-this.min)/this.step)*this.step;this.#r(o)}#a(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};d([Qt("#rail")],Ct.prototype,"_rail",2),d([g({type:Number,attribute:"lower-bound"})],Ct.prototype,"min",2),d([g({type:Number,attribute:"upper-bound"})],Ct.prototype,"max",2),d([g({type:Number,attribute:"step"})],Ct.prototype,"step",2);customElements.define("qti-slider-interaction",Ct);var xd=()=>new Ts,Ts=class{},As=new WeakMap,uI=qe(class extends st{render(s){return O}update(s,[r]){let e=r!==this.G;return e&&this.G!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=r,this.ht=s.options?.host,this.rt(this.ct=s.element)),O}rt(s){if(this.isConnected||(s=void 0),typeof this.G=="function"){let r=this.ht??globalThis,e=As.get(r);e===void 0&&(e=new WeakMap,As.set(r,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,s),s!==void 0&&this.G.call(this.ht,s)}else this.G.value=s}get lt(){return typeof this.G=="function"?As.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 qd=C`
6012
6020
  :host {
6013
6021
  display: inline-block;
6014
6022
  }
@@ -6116,7 +6124,7 @@ CES.load();
6116
6124
  bottom: 0;
6117
6125
  }
6118
6126
  }
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`
6127
+ `;var Ie=class extends V{constructor(){super(...arguments);this.inputRef=xd();this.response=null;this._handleValueChange=()=>{this._internals.setFormValue(this.value),this.validate()}}static{this.styles=qd}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,n)=>Math.max(n.mappedValue,i),0);for(let i of e.mapping.mapEntries){let n=i.mapKey,o=e.value;if(i.caseSensitive||(n=n.toLowerCase(),o=o.toLowerCase()),n===o)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`
6120
6128
  <input
6121
6129
  part="input"
6122
6130
  name="${this.responseIdentifier}"
@@ -6127,15 +6135,15 @@ CES.load();
6127
6135
  @keyup="${this.textChanged}"
6128
6136
  @change="${this.textChanged}"
6129
6137
  type="${this.patternMask=="[0-9]*"?"number":"text"}"
6130
- placeholder="${_e(this.placeholderText?this.placeholderText:void 0)}"
6138
+ placeholder="${Le(this.placeholderText?this.placeholderText:void 0)}"
6131
6139
  .value="${this.response}"
6132
- pattern="${_e(this.patternMask?this.patternMask:void 0)}"
6140
+ pattern="${Le(this.patternMask?this.patternMask:void 0)}"
6133
6141
  maxlength=${1e3}
6134
6142
  ?disabled="${this.disabled}"
6135
6143
  ?readonly="${this.readonly}"
6136
6144
  />
6137
- ${this._correctResponse?x`<div part="correct">${this._correctResponse}</div>`:N}
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`
6145
+ ${this._correctResponse?x`<div part="correct">${this._correctResponse}</div>`:O}
6146
+ `}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([g({type:Number,attribute:"expected-length"})],Ie.prototype,"expectedLength",2),d([g({type:String,attribute:"pattern-mask"})],Ie.prototype,"patternMask",2),d([g({type:String,attribute:"placeholder-text"})],Ie.prototype,"placeholderText",2),d([g({type:String,attribute:"data-patternmask-message"})],Ie.prototype,"dataPatternmaskMessage",2),d([M()],Ie.prototype,"response",2),d([Qt("input")],Ie.prototype,"_input",2),d([B("response",{waitUntilFirstUpdate:!0})],Ie.prototype,"_handleValueChange",2);customElements.define("qti-text-entry-interaction",Ie);var wd=C`
6139
6147
  :host {
6140
6148
  display: block;
6141
6149
  margin: 1em 0;
@@ -6144,12 +6152,12 @@ CES.load();
6144
6152
  display: block;
6145
6153
  margin-top: 0.5em;
6146
6154
  }
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`
6155
+ `;var go=class extends V{static{this.styles=wd}#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{...V.properties}}render(){return x`
6148
6156
  <div>
6149
6157
  <slot name="prompt"></slot>
6150
6158
  <input type="file" @change="${this.#r}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" />
6151
6159
  </div>
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};
6160
+ `}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",go);var fM=async s=>{let r=s.substring(0,s.lastIndexOf("/")),e=await Ja().load(`${s}`).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()),n=`${r}/${e.href}`,o=`${r}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:t,testURI:o,testURL:n,items:i,testIdentifier:e.identifier}},gM=async s=>Me().load(s).then(r=>r.htmlDoc().firstElementChild);var ae=class extends E{render(){return x`<slot></slot>`}process(){throw new Error("Not implemented")}};ae=d([k("qti-rule")],ae);var ji=class extends ae{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:we(t)}})),t)}};d([g({type:String})],ji.prototype,"identifier",2),d([$({context:W,subscribe:!0}),M()],ji.prototype,"context",2);customElements.define("qti-lookup-outcome-value",ji);var Is=class extends ae{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",Is);var Rs=class extends ae{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 ks(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(we):r!==null?we(r):null}},ks=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",Rs);var Wi=class extends E{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",Wi);var Gi=class extends Wi{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",Gi);var Ms=class extends Gi{render(){return x`${super.render()}`}};customElements.define("qti-response-else-if",Ms);var bo=class extends Np(be){calculate(){return this.calculateChildren(Array.from(this.children))}};bo=d([k("qti-and")],bo);function Np(s){return class extends s{calculateChildren(e){return e.map(i=>{let n=i;if(!n.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let o=n.calculate(),a=!1;if(typeof o=="string")if(o==="true")a=!0;else if(o==="false")a=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof o=="boolean"&&(a=o);return a}).every(i=>typeof i=="boolean"&&i)}}}var Xi=class extends R{constructor(){super(...arguments);this.min=0;this.max=1/0}getResult(){let e=this.getVariables();if(!e||e.length===0)return console.error("qti-any-n requires at least one child expression"),null;if(this.min<0||this.max<this.min)return console.error("qti-any-n requires 0 <= min <= max"),null;let t=0;for(let i of e){if(i.cardinality!=="single"||Array.isArray(i.value))return console.error("qti-any-n requires single cardinality boolean expressions"),null;if(i.baseType!=="boolean")return console.error("qti-any-n requires boolean base-type"),null;if(i.value===null||i.value===void 0)return null;i.value==="true"&&t++}return t>=this.min&&t<=this.max}};d([g({type:Number})],Xi.prototype,"min",2),d([g({type:Number})],Xi.prototype,"max",2);customElements.define("qti-any-n",Xi);var vo=class extends R{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};d([g({type:String,attribute:"base-type"})],vo.prototype,"baseType",2);customElements.define("qti-base-value",vo);var _s=class extends R{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",_s);var Ls=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,n=t.value;return i.filter(l=>n.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",Ls);var $s=class extends R{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",$s);var Rr=class extends R{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 o=this._testContext.items.find(l=>l.identifier===t);if(console.debug(`itemContext: ${JSON.stringify(o)}`),!this._testContext||!o)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 n=this.context.variables.find(o=>o.identifier===i);return n?n.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item context`),null)}};d([g({type:String})],Rr.prototype,"identifier",2),d([$({context:W,subscribe:!0}),M()],Rr.prototype,"context",2),d([M(),$({context:_e,subscribe:!0})],Rr.prototype,"_testContext",2);customElements.define("qti-default",Rr);var yo=class extends R{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 n=parseFloat(t.value),o=parseFloat(i.value);if(!isNaN(n)&&!isNaN(o))return this.roundingMode==="significantFigures"?n.toPrecision(this.figures)===o.toPrecision(this.figures):Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${n}, ${o}`);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([g({type:String})],yo.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",yo);var Ps=class extends R{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",Ps);var Qi=class extends R{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))),n=Math.pow(10,t-i-1);return Math.round(e*n)/n}};d([g({type:String,attribute:"rounding-mode"})],Qi.prototype,"roundingMode",2),d([g({type:Number})],Qi.prototype,"figures",2);customElements.define("qti-round-to",Qi);var xo=class extends R{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],i=e[1];return!t||!i?null: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):t.value===null||i.value===null||t.value===void 0||i.value===void 0?null:J.compareSingleValues(t.value,i.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};d([g({type:String})],xo.prototype,"toleranceMode",2);customElements.define("qti-equal",xo);var Vs=class extends R{getResult(){let r=this.#e(this.getVariables());return r.length!==2?(console.warn("qti-divide: expected exactly 2 numeric values"),null):r[1]===0?(console.warn("qti-divide: division by zero"),null):r[0]/r[1]}#e(r){let e=[];for(let t of r){if(!t)continue;let i=n=>{if(n==null)return;let o=parseFloat(n.toString());if(Number.isNaN(o)){console.warn("qti-divide: non-numeric value encountered");return}e.push(o)};if(Array.isArray(t.value)){t.value.forEach(n=>i(n));continue}i(t.value)}return e}};customElements.define("qti-divide",Vs);var Ds=class extends R{getResult(){let r=this.#e();return r?r[0]>=r[1]:null}#e(){let r=this.getVariables();if(r.length!==2)return console.error("qti-duration-gte requires exactly 2 duration expressions"),null;let e=r.map(t=>this.#t(t));return e.some(t=>t===null)?null:e}#t(r){if(r.cardinality!=="single"||Array.isArray(r.value))return console.error("qti-duration-gte requires single cardinality"),null;if(r.baseType!=="duration")return console.error("qti-duration-gte requires duration base-type"),null;if(r.value===null||r.value===void 0)return null;let e=Number.parseFloat(r.value.toString());return Number.isNaN(e)?(console.error(`qti-duration-gte requires duration values expressed in seconds, got "${r.value.toString()}"`),null):e}};customElements.define("qti-duration-gte",Ds);var Ns=class extends R{getResult(){let r=this.#e();return r?r[0]<r[1]:null}#e(){let r=this.getVariables();if(r.length!==2)return console.error("qti-duration-lt requires exactly 2 duration expressions"),null;let e=r.map(t=>this.#t(t));return e.some(t=>t===null)?null:e}#t(r){if(r.cardinality!=="single"||Array.isArray(r.value))return console.error("qti-duration-lt requires single cardinality"),null;if(r.baseType!=="duration")return console.error("qti-duration-lt requires duration base-type"),null;if(r.value===null||r.value===void 0)return null;let e=Number.parseFloat(r.value.toString());return Number.isNaN(e)?(console.error(`qti-duration-lt requires duration values expressed in seconds, got "${r.value.toString()}"`),null):e}};customElements.define("qti-duration-lt",Ns);var Os=class extends R{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 n=parseInt(i,10);if(isNaN(n))return console.error("qti-gcd non-numerical value"),null;e.push(n)}}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",Os);var Hs=class extends R{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",Hs);var Fs=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",Fs);var Yi=class extends R{constructor(){super(...arguments);this.shape="";this.coords=""}getResult(){let e=this.getVariables();if(e.length!==1)return console.error("qti-inside requires exactly one point expression"),null;let t=e[0];if(t.cardinality!=="single"||Array.isArray(t.value))return console.error("qti-inside requires single cardinality"),null;if(t.value===null||t.value===void 0)return null;if(!this.shape||!this.coords)return console.error("qti-inside requires shape and coords attributes"),null;let i=this.#e(t.value.toString()),n=this.#t(this.coords);if(!i||n.length===0)return null;switch(this.shape.toLowerCase()){case"circle":return this.#r(i,n);case"rect":return this.#i(i,n);case"ellipse":return this.#n(i,n);case"poly":case"polygon":return this.#o(i,n);default:return console.error(`qti-inside does not support shape "${this.shape}"`),null}}#e(e){let t=e.split(/[,\s]+/).map(o=>o.trim()).filter(Boolean);if(t.length!==2)return console.error('qti-inside requires a point value formatted as "x y" or "x,y"'),null;let i=Number.parseFloat(t[0]),n=Number.parseFloat(t[1]);return Number.isNaN(i)||Number.isNaN(n)?(console.error("qti-inside requires numeric point coordinates"),null):{x:i,y:n}}#t(e){let t=e.split(",").map(i=>i.trim()).filter(Boolean).map(i=>Number.parseFloat(i));return t.some(i=>Number.isNaN(i))?(console.error("qti-inside requires numeric coords"),[]):t}#r(e,t){if(t.length!==3)return console.error("qti-inside circle requires x,y,r"),null;let[i,n,o]=t;return(e.x-i)**2+(e.y-n)**2<=o**2}#i(e,t){if(t.length!==4)return console.error("qti-inside rect requires left,top,right,bottom"),null;let[i,n,o,a]=t,l=Math.min(i,o),c=Math.max(i,o),p=Math.min(n,a),u=Math.max(n,a);return e.x>=l&&e.x<=c&&e.y>=p&&e.y<=u}#n(e,t){if(t.length!==4)return console.error("qti-inside ellipse requires centerX,centerY,radiusX,radiusY"),null;let[i,n,o,a]=t;return o===0||a===0?!1:(e.x-i)**2/o**2+(e.y-n)**2/a**2<=1}#o(e,t){if(t.length<6||t.length%2!==0)return console.error("qti-inside polygon requires at least 3 coordinate pairs"),null;let i=!1;for(let n=0,o=t.length-2;n<t.length;n+=2){let a=t[n],l=t[n+1],c=t[o],p=t[o+1];l>e.y!=p>e.y&&e.x<(c-a)*(e.y-l)/(p-l||Number.EPSILON)+a&&(i=!i),o=n}return i}};d([g({type:String})],Yi.prototype,"shape",2),d([g({type:String})],Yi.prototype,"coords",2);customElements.define("qti-inside",Yi);var Us=class extends R{getResult(){let r=this.#e(this.getVariables());return r.length!==2?(console.error("qti-integer-divide requires exactly 2 integer values"),null):r[1]===0?(console.error("qti-integer-divide: division by zero"),null):Math.floor(r[0]/r[1])}#e(r){let e=[];for(let t of r){if(t.baseType!=="integer")return console.error("qti-integer-divide requires integer base-type"),[];if(t.cardinality!=="single"||Array.isArray(t.value))return console.error("qti-integer-divide requires single cardinality"),[];if(t.value===null||t.value===void 0)return[];let i=Number.parseInt(t.value,10);if(Number.isNaN(i))return console.error("qti-integer-divide requires integer values"),[];e.push(i)}return e}};customElements.define("qti-integer-divide",Us);var Bs=class extends R{getResult(){let r=this.#e(this.getVariables());return r.length!==2?(console.error("qti-integer-modulus requires exactly 2 integer values"),null):r[1]===0?(console.error("qti-integer-modulus: division by zero"),null):r[0]%r[1]}#e(r){let e=[];for(let t of r){if(t.baseType!=="integer")return console.error("qti-integer-modulus requires integer base-type"),[];if(t.cardinality!=="single"||Array.isArray(t.value))return console.error("qti-integer-modulus requires single cardinality"),[];if(t.value===null||t.value===void 0)return[];let i=Number.parseInt(t.value,10);if(Number.isNaN(i))return console.error("qti-integer-modulus requires integer values"),[];e.push(i)}return e}};customElements.define("qti-integer-modulus",Bs);var zs=class extends R{getResult(){let r=this.getVariables();if(r.length!==1)return console.error("qti-integer-to-float requires exactly one child expression"),null;let e=r[0];if(e.baseType!=="integer")return console.error("qti-integer-to-float requires integer base-type"),null;if(e.cardinality!=="single"||Array.isArray(e.value))return console.error("qti-integer-to-float requires single cardinality"),null;if(e.value===null||e.value===void 0)return null;let t=Number.parseInt(e.value,10);return Number.isNaN(t)?(console.error("qti-integer-to-float requires an integer value"),null):t}};customElements.define("qti-integer-to-float",zs);var js=class extends R{getResult(){let r=this.#e(this.getVariables());return r.length===0?(console.error("qti-lcm requires at least one integer value"),null):r.reduce((e,t)=>this.#r(e,t))}#e(r){let e=[];for(let t of r){if(t.baseType!=="integer")return console.error("qti-lcm requires integer base-type"),[];if(t.value===null||t.value===void 0)return[];if(t.cardinality==="single"){if(Array.isArray(t.value))return console.error("qti-lcm unexpected array value for single cardinality"),[];let i=Number.parseInt(t.value,10);if(Number.isNaN(i))return console.error("qti-lcm requires integer values"),[];e.push(i);continue}if(t.cardinality!=="multiple"&&t.cardinality!=="ordered")return console.error("qti-lcm unsupported cardinality"),[];if(!Array.isArray(t.value))return console.error("qti-lcm expected array value for container cardinality"),[];for(let i of t.value){let n=Number.parseInt(i,10);if(Number.isNaN(n))return console.error("qti-lcm requires integer values"),[];e.push(n)}}return e}#t(r,e){let t=Math.abs(r),i=Math.abs(e);for(;i!==0;){let n=t%i;t=i,i=n}return t}#r(r,e){return r===0||e===0?0:Math.abs(r*e/this.#t(r,e))}};customElements.define("qti-lcm",js);var Ws=class extends R{getResult(){return null}};customElements.define("qti-null",Ws);var Gs=class extends R{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",Gs);var Xs=class extends R{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",Xs);var Qs=class extends R{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",Qs);var Ys=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",Ys);var qo=class extends R{getResult(){let r=this.context.variables.find(n=>n.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 n of t){let o=e.mapEntries.filter(l=>r.baseType==="string"&&!l.caseSensitive?J.compareSingleValues(l.mapKey.toLowerCase(),n.toLowerCase(),r.baseType):J.compareSingleValues(l.mapKey,n,r.baseType)),a=o.reduce((l,c)=>l.mappedValue>c.mappedValue?l:c,o.length>0?o[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([g({type:String})],qo.prototype,"identifier",2);customElements.define("qti-map-response",qo);var wo=class extends R{getResult(){let r=this.context.variables.find(o=>o.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,n=new Set;for(let o of t)for(let a of e.areaMapEntries){if(n.has(a.coords))continue;J.isPointInArea(o,`${a.shape},${a.coords}`,r.baseType)&&(i+=a.mappedValue??0,n.add(a.coords))}return n.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([g({type:String})],wo.prototype,"identifier",2);customElements.define("qti-map-response-point",wo);var Eo=class extends R{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 n=parseFloat(i.value);if(isNaN(n))return console.error("qti-math-operator non-numerical value"),null;t.push(n)}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],n=t[1];return i===0&&n<=0||i<0&&!Number.isInteger(n)?null:Math.pow(i,n)}case"log_base":{if(t.length!==2)return null;let i=t[0],n=t[1];return i<=0||n<=0||n===1?null:Math.log(i)/Math.log(n)}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([g({type:String})],Eo.prototype,"name",2);customElements.define("qti-math-operator",Eo);var Js=class s extends R{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return s.match(e,t)}return console.error("unexpected number of children in match"),null}static match(r,e){if(r.value===null)return!1;switch(e.cardinality){case"single":return Array.isArray(r.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):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 n=null,o=[...r.value];for(let a of o)if(J.compareSingleValues(i,a,e.baseType)){n=a;break}if(n!==null)o.splice(o.indexOf(n),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",Js);var Ks=class extends R{getResult(){let r=this.#e(this.getVariables());return r.length===0?(console.warn("qti-max: no numeric values provided"),null):Math.max(...r)}#e(r){let e=[];for(let t of r){if(!t)continue;let i=n=>{if(n==null)return;let o=parseFloat(n.toString());if(Number.isNaN(o)){console.warn("qti-max: non-numeric value encountered");return}e.push(o)};if(Array.isArray(t.value)){t.value.forEach(n=>i(n));continue}i(t.value)}return e}};customElements.define("qti-max",Ks);var Zs=class extends R{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",Zs);var ea=class extends R{getResult(){let r=this.#e(this.getVariables());return r.length===0?(console.warn("qti-min: no numeric values provided"),null):Math.min(...r)}#e(r){let e=[];for(let t of r){if(!t)continue;let i=n=>{if(n==null)return;let o=parseFloat(n.toString());if(Number.isNaN(o)){console.warn("qti-min: non-numeric value encountered");return}e.push(o)};if(Array.isArray(t.value)){t.value.forEach(n=>i(n));continue}i(t.value)}return e}};customElements.define("qti-min",ea);var ta=class extends R{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",ta);var ra=class extends R{render(){return x`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",ra);var ia=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(),n=!1;if(typeof i=="string")if(i==="true")n=!0;else if(i==="false")n=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof i=="boolean"&&(n=i);return n}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",ia);var na=class extends R{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",na);var oa=class extends R{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),n=parseFloat(t.value);if(isNaN(i)||isNaN(n))return console.error("qti-power: non-numerical values encountered"),null;if(i===0&&n<=0||i<0&&!Number.isInteger(n))return null;let o;try{o=Math.pow(i,n)}catch(a){return console.error("qti-power: error calculating power:",a),null}if(isNaN(o))return null;if(o===1/0||o===-1/0)return o;if(!isFinite(o)||Math.abs(o)>Number.MAX_VALUE||o!==0&&Math.abs(o)<Number.MIN_VALUE)return null;if(isFinite(o)&&o!==0){let a=Math.floor(Math.log10(Math.abs(o))),l=Math.max(0,14-a),c=Math.pow(10,l);o=Math.round(o*c)/c}return o}};customElements.define("qti-power",oa);var Co=class extends R{constructor(){super(...arguments);this.pattern=""}getResult(){let e=this.getVariables();if(e.length!==1)return console.error("qti-pattern-match requires exactly one child expression"),null;if(!this.pattern)return console.error("qti-pattern-match requires a pattern attribute"),null;let t=e[0];if(t.cardinality!=="single"||Array.isArray(t.value))return console.error("qti-pattern-match requires single cardinality"),null;if(t.value===null||t.value===void 0)return null;try{return new RegExp(this.pattern).test(t.value.toString())}catch(i){return console.error("qti-pattern-match requires a valid regular expression",i),null}}};d([g({type:String})],Co.prototype,"pattern",2);customElements.define("qti-pattern-match",Co);var Ji=class extends E{render(){let r=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return r===null?O:x`${JSON.stringify(r,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};d([g({type:String})],Ji.prototype,"identifier",2),d([$({context:W,subscribe:!0}),M()],Ji.prototype,"context",2);customElements.define("qti-printed-variable",Ji);var sa=class extends R{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",sa);var So=class extends R{constructor(){super(...arguments);this.numberRepeats=""}getResult(){let e=this.#e();if(e<=0)return[];let t=this.firstElementChild;if(!t)return console.warn("qti-repeat: missing child expression"),[];let i=[];for(let n=0;n<e;n++){let o=t.calculate(),a=this.#t(o);a&&i.push(a)}return i}#e(){if(!this.numberRepeats)return console.warn("qti-repeat: missing number-repeats attribute"),0;let e=parseInt(this.numberRepeats,10);if(!Number.isNaN(e))return e;let t=this.numberRepeats,i=this.context?.variables?.find(a=>a.identifier===t);if(!i)return console.warn(`qti-repeat: unknown identifier "${t}"`),0;let n=Array.isArray(i.value)?i.value[0]:i.value,o=parseInt(n?.toString()??"",10);return Number.isNaN(o)?(console.warn(`qti-repeat: invalid repeat count from "${t}"`),0):o}#t(e){if(e==null)return null;if(typeof e=="number")return{identifier:"",cardinality:"single",baseType:Number.isInteger(e)?"integer":"float",value:e.toString(),type:"response"};if(typeof e=="string"){let t=parseFloat(e);if(!Number.isNaN(t))return{identifier:"",cardinality:"single",baseType:Number.isInteger(t)?"integer":"float",value:e.toString(),type:"response"}}if(e&&typeof e=="object"&&"value"in e){let t=e.value;return{identifier:"",cardinality:"single",baseType:e.baseType??"string",value:t!=null?t.toString():null,type:"response"}}return{identifier:"",cardinality:"single",baseType:"string",value:e.toString(),type:"response"}}};d([g({type:String,attribute:"number-repeats"})],So.prototype,"numberRepeats",2);customElements.define("qti-repeat",So);var aa=class extends ae{process(){let r=this.getAttribute("identifier");if(!r){console.warn('QtiSetCorrectResponse: Missing "identifier" attribute.');return}let e=this.firstElementChild;if(!e){console.warn("QtiSetCorrectResponse: No expression found.");return}let i=new la(e).process();this.dispatchEvent(new CustomEvent("qti-set-correct-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:r,value:this.#e(i)}}))}#e(r){return r==null?null:Array.isArray(r)?r.map(e=>we(this.#t(e))):we(this.#t(r))}#t(r){if(r&&typeof r=="object"&&"value"in r){let e=r.value;return e!=null?e.toString():""}return r?.toString()??""}},la=class{constructor(r){this.expression=r}process(){let r=this.expression.calculate()??null;return r===null&&console.warn("QtiSetCorrectResponseRule: Evaluated value is null."),Array.isArray(r)?r.map(e=>this.#e(e)):this.#e(r)}#e(r){return r&&typeof r=="object"&&"value"in r?r.value:r}};customElements.define("qti-set-correct-response",aa);var ca=class extends ae{process(){let r=this.getAttribute("identifier");if(!r){console.warn('QtiSetTemplateValue: Missing "identifier" attribute.');return}let e=this.firstElementChild;if(!e){console.warn("QtiSetTemplateValue: No expression found.");return}let i=new da(e).process();this.dispatchEvent(new CustomEvent("qti-set-template-value",{bubbles:!0,composed:!0,detail:{templateIdentifier:r,value:this.#e(i)}}))}#e(r){return r==null?null:Array.isArray(r)?r.map(e=>we(this.#t(e))):we(this.#t(r))}#t(r){if(r&&typeof r=="object"&&"value"in r){let e=r.value;return e!=null?e.toString():""}return r?.toString()??""}},da=class{constructor(r){this.expression=r}process(){let r=this.expression.calculate()??null;return r===null&&console.warn("QtiSetTemplateValueRule: Evaluated value is null."),Array.isArray(r)?r.map(e=>this.#e(e)):this.#e(r)}#e(r){return r&&typeof r=="object"&&"value"in r?r.value:r}};customElements.define("qti-set-template-value",ca);var Ao=class extends R{constructor(){super(...arguments);this.name=""}getResult(){if(!this.name)return console.warn("qti-stats-operator: missing name attribute"),null;let e=this.#t(this.getVariables());if(e.length===0)return console.warn("qti-stats-operator: no numeric values provided"),null;switch(this.name.toLowerCase()){case"mean":return e.reduce((t,i)=>t+i,0)/e.length;case"popsd":return this.#e(e);default:return console.warn(`qti-stats-operator: unsupported operator "${this.name}"`),null}}#e(e){let t=e.reduce((n,o)=>n+o,0)/e.length,i=e.reduce((n,o)=>n+Math.pow(o-t,2),0)/e.length;return Math.sqrt(i)}#t(e){let t=[];for(let i of e){if(!i)continue;let n=o=>{if(o==null)return;let a=parseFloat(o.toString());if(Number.isNaN(a)){console.warn("qti-stats-operator: non-numeric value encountered");return}t.push(a)};if(Array.isArray(i.value)){i.value.forEach(o=>n(o));continue}n(i.value)}return t}};d([g({type:String})],Ao.prototype,"name",2);customElements.define("qti-stats-operator",Ao);var To=class extends Op(R){getResult(){return this.calculateChildren(Array.from(this.children))}};function Op(s){return class extends s{calculateChildren(e){let t=e.map(i=>{if(!i.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=i.calculate();return Number.isNaN(n)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(n)});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",To);var Io=class extends R{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){let e=this.getVariables();if(e.length!==2)return console.error("qti-substring requires exactly 2 child expressions"),null;let[t,i]=e;if(t.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(i.value))return console.error("qti-substring requires single cardinality"),null;if(t.value===null||i.value===null||t.value===void 0||i.value===void 0)return null;let n=t.value.toString(),o=i.value.toString();return this.caseSensitive!=="true"?o.toLowerCase().includes(n.toLowerCase()):o.includes(n)}};d([g({type:String,attribute:"case-sensitive"})],Io.prototype,"caseSensitive",2);customElements.define("qti-substring",Io);var Ro=class extends R{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 n=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),o=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return J.compareSingleValues(n,o,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};d([g({type:String,attribute:"case-sensitive"})],Ro.prototype,"caseSensitive",2);customElements.define("qti-string-match",Ro);var pa=class extends R{getResult(){return new ua(Array.from(this.children)).calculate()}},ua=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",pa);var ma=class extends R{getResult(){let r=this.getVariables();if(r.length!==1)return console.error("qti-truncate requires exactly one child expression"),null;let e=r[0];if(e.cardinality!=="single"||Array.isArray(e.value))return console.error("qti-truncate requires single cardinality"),null;if(e.baseType!=="integer"&&e.baseType!=="float")return console.error("qti-truncate requires numerical base-type"),null;if(e.value===null||e.value===void 0)return null;let t=Number.parseFloat(e.value);return Number.isNaN(t)?(console.error("qti-truncate requires a numerical value"),null):Math.trunc(t)}};customElements.define("qti-truncate",ma);var ha=class extends R{getResult(){let r=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===r).value}};customElements.define("qti-variable",ha);var kr=class extends R{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 n=this.min+this.step*t;if(n>this.max)break;Number.isInteger(n)&&e.push(n),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([g({type:Number})],kr.prototype,"min",2),d([g({type:Number})],kr.prototype,"max",2),d([g({type:Number})],kr.prototype,"step",2);customElements.define("qti-random-integer",kr);var fa=class extends R{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",fa);var ga=class extends R{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(n=>!e.value.includes(n))}return null}};customElements.define("qti-delete",ga);var ko,Ed,Ki=class extends R{constructor(){super(...arguments);L(this,ko)}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,ko,Ed).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}};ko=new WeakSet,Ed=function(e){let t=this.context.variables.find(i=>i.identifier===e)?.value;return t===null||isNaN(Number(t))?null:Number(t)},d([g({type:String})],Ki.prototype,"n",2),Ki=d([k("qti-index")],Ki);export{ll as Correctness,Yo as INITIAL_SESSION_CONTEXT,Jo as INITIAL_TEST_CONTEXT,V as Interaction,Zo as IsNullOrUndefined,Qe as ItemContainer,zt as ItemCorrectResponseMode,Cr as ItemPrintVariables,Ce as ItemShowCandidateCorrection,Se as ItemShowCorrectResponse,bo as QtiAnd,Xi as QtiAnyN,pe as QtiAssessmentItem,Be as QtiAssessmentItemRef,ze as QtiAssessmentSection,dr as QtiAssessmentStimulusRef,is as QtiAssessmentStimulusRefConnectedEvent,_t as QtiAssessmentTest,Jn as QtiAssociableHotspot,Ui as QtiAssociateInteraction,vo as QtiBaseValue,Bi as QtiChoiceInteraction,yn as QtiCompanionMaterialsInfo,be as QtiConditionExpression,_s as QtiContainerSize,Ls as QtiContains,ai as QtiContentBody,$t as QtiContextDeclaration,$s as QtiCorrect,Ye as QtiCustomInteraction,ri as QtiCustomOperator,Rr as QtiDefault,ga as QtiDelete,Vs as QtiDivide,Ds as QtiDurationGte,Ns as QtiDurationLt,yt as QtiEndAttemptInteraction,xo as QtiEqual,yo as QtiEqualRounded,R as QtiExpression,fe as QtiExtendedTextInteraction,de as QtiFeedback,ni as QtiFeedbackBlock,oi as QtiFeedbackInline,Xs as QtiFieldValue,Vi as QtiGap,Di as QtiGapImg,ao as QtiGapMatchInteraction,Ni as QtiGapText,Os as QtiGcd,Je as QtiGraphicAssociateInteraction,lo as QtiGraphicGapMatchInteraction,co as QtiGraphicOrderInteraction,Hs as QtiGt,Fs as QtiGte,Ar as QtiHotspotChoice,po as QtiHotspotInteraction,Kn as QtiHottext,zi as QtiHottextInteraction,Ki as QtiIndex,Oi as QtiInlineChoice,qt as QtiInlineChoiceInteraction,Yi as QtiInside,Us as QtiIntegerDivide,Bs as QtiIntegerModulus,zs as QtiIntegerToFloat,Gs as QtiIsNull,Sr as QtiItem,si as QtiItemBody,js as QtiLcm,ji as QtiLookupOutcomeValue,Qs as QtiLt,Ys as QtiLte,qo as QtiMapResponse,wo as QtiMapResponsePoint,Js as QtiMatch,wt as QtiMatchInteraction,Eo as QtiMathOperator,Ks as QtiMax,uo as QtiMediaInteraction,Zs as QtiMember,ea as QtiMin,Lt as QtiModalFeedback,ta as QtiMultiple,ra as QtiNot,Ws as QtiNull,ia as QtiOr,Et as QtiOrderInteraction,na as QtiOrdered,Pe as QtiOutcomeDeclaration,Co as QtiPatternMatch,K as QtiPortableCustomInteraction,ho as QtiPositionObjectInteraction,fo as QtiPositionObjectStage,oa as QtiPower,Ji as QtiPrintedVariable,sa as QtiProduct,Zn as QtiPrompt,fa as QtiRandom,kr as QtiRandomInteger,So as QtiRepeat,Is as QtiResponseCondition,We as QtiResponseDeclaration,Wi as QtiResponseElse,Ms as QtiResponseElseIf,Gi as QtiResponseIf,ci as QtiResponseProcessing,Ps as QtiRound,Qi as QtiRoundTo,$e as QtiRubricBlock,cl as QtiRuleElement,Ke as QtiSelectPointInteraction,aa as QtiSetCorrectResponse,la as QtiSetCorrectResponseRule,Rs as QtiSetOutcomeValue,ks as QtiSetOutcomeValueRule,ca as QtiSetTemplateValue,da as QtiSetTemplateValueRule,jt as QtiSimpleAssociableChoice,mt as QtiSimpleChoice,Ct as QtiSliderInteraction,Ao as QtiStatsOperator,Ro as QtiStringMatch,qn as QtiStylesheet,Io as QtiSubstring,To as QtiSubtract,pa as QtiSum,ua as QtiSumExpression,Cn as QtiTemplateConstraint,Ve as QtiTemplateDeclaration,di as QtiTemplateProcessing,vn as QtiTest,pi as QtiTestFeedback,je as QtiTestPart,Ie as QtiTextEntryInteraction,ma as QtiTruncate,go as QtiUploadInteraction,ha as QtiVariable,sr as QtiVariableDeclaration,J as ScoringHelper,ki as TestCheckItem,Xe as TestContainer,mi as TestEndAttempt,mr as TestItemLink,ye as TestNavigation,pt as TestNext,Ei as TestPagingButtonsStamp,ut as TestPrev,Ii as TestPrintContext,gr as TestPrintVariables,Bt as TestScoringButtons,vr as TestScoringFeedback,Ai as TestSectionButtonsStamp,br as TestSectionLink,Ee as TestShowCorrectResponse,Ut as TestStamp,oe as TestView,Ri as TestViewToggle,G as computedContext,rt as computedItemContext,ge as configContext,we as convertNumberToUniversalFormat,Xd as decimalSeparator,gM as getItemByUri,fM as getManifestInfo,W as itemContext,el as itemContextVariables,Np as qtiAndMixin,ir as qtiContext,Op as qtiSubtractMixin,Me as qtiTransformItem,Ja as qtiTransformManifest,er as qtiTransformTest,bn as removeDoubleSlashes,it as sessionContext,_e as testContext};
6153
6161
  /*! Bundled license information:
6154
6162
 
6155
6163
  @lit-labs/ssr-dom-shim/lib/element-internals.js:
@@ -6193,7 +6201,6 @@ lit-html/node/async-directive.js:
6193
6201
  lit-html/node/lit-html.js:
6194
6202
  lit-html/node/directives/until.js:
6195
6203
  lit-html/node/directives/repeat.js:
6196
- lit-html/node/directives/unsafe-html.js:
6197
6204
  (**
6198
6205
  * @license
6199
6206
  * Copyright 2017 Google LLC