@citolab/qti-components 7.23.0 → 7.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cdn/index.js CHANGED
@@ -1,12 +1,12 @@
1
- var nl=Object.defineProperty;var al=Object.getOwnPropertyDescriptor;var Fo=o=>{throw TypeError(o)};var c=(o,r,e,t)=>{for(var i=t>1?void 0:t?al(r,e):r,s=o.length-1,n;s>=0;s--)(n=o[s])&&(i=(t?n(r,e,i):n(i))||i);return t&&i&&nl(r,e,i),i};var Ss=(o,r,e)=>r.has(o)||Fo("Cannot "+e);var x=(o,r,e)=>(Ss(o,r,"read from private field"),e?e.call(o):r.get(o)),T=(o,r,e)=>r.has(o)?Fo("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(o):r.set(o,e),$=(o,r,e,t)=>(Ss(o,r,"write to private field"),t?t.call(o,e):r.set(o,e),e),I=(o,r,e)=>(Ss(o,r,"access private method"),e);var jo=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(r){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=r}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var be=function(o,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"?o!==r||!i:!r.has(o))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(o,e):i?i.value=e:r.set(o,e),e},j=function(o,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?o!==r||!t:!r.has(o))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(o):t?t.value:r.get(o)},Ct,bi,vi,sr,ks,or,yi,at,nr,He,xi,Wo,Xo=o=>typeof o=="boolean"?o:o?.capture??!1;var Ms=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=Xo(t)?this.__captureEventListeners:this.__eventListeners,s=i.get(r);if(s===void 0)s=new Map,i.set(r,s);else if(s.has(e))return;let n=typeof t=="object"&&t?t:{};n.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),s.set(e,n??{})}removeEventListener(r,e,t){if(e==null)return;let i=Xo(t)?this.__captureEventListeners:this.__eventListeners,s=i.get(r);s!==void 0&&(s.delete(e),s.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,s=!1,n=0,a=null,l=null,d=null,p=r.stopPropagation,m=r.stopImmediatePropagation;Object.defineProperties(r,{target:{get(){return a??l},...V},srcElement:{get(){return r.target},...V},currentTarget:{get(){return d},...V},eventPhase:{get(){return n},...V},composedPath:{value:()=>e,...V},stopPropagation:{value:()=>{i=!0,p.call(r)},...V},stopImmediatePropagation:{value:()=>{s=!0,m.call(r)},...V}});let h=(q,M,P)=>{typeof q=="function"?q(r):typeof q?.handleEvent=="function"&&q.handleEvent(r),M.once&&P.delete(q)},g=()=>(d=null,n=0,!r.defaultPrevented),v=e.slice().reverse();a=!this.__host||!r.composed?this:null;let E=q=>{for(l=this;l.__host&&q.includes(l.__host);)l=l.__host};for(let q of v){!a&&(!l||l===q.__host)&&E(v.slice(v.indexOf(q))),d=q,n=q===r.target?2:1;let M=q.__captureEventListeners.get(r.type);if(M){for(let[P,H]of M)if(h(P,H,M),s)return g()}if(i)return g()}let A=r.bubbles?e:[this];l=null;for(let q of A){!a&&(!l||q===l.__host)&&E(A.slice(0,A.indexOf(q)+1)),d=q,n=q===r.target?2:3;let M=q.__eventListeners.get(r.type);if(M){for(let[P,H]of M)if(h(P,H,M),s)return g()}if(i)return g()}return g()}},Is=Ms;var V={__proto__:null};V.enumerable=!0;Object.freeze(V);var Rs=(He=class{constructor(r,e={}){if(Ct.set(this,!1),bi.set(this,!1),vi.set(this,!1),sr.set(this,!1),ks.set(this,Date.now()),or.set(this,!1),yi.set(this,void 0),at.set(this,void 0),nr.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:s}=e;be(this,Ct,!!i,"f"),be(this,bi,!!t,"f"),be(this,vi,!!s,"f"),be(this,yi,`${r}`,"f"),be(this,at,null,"f"),be(this,nr,!1,"f")}initEvent(r,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){be(this,sr,!0,"f")}get target(){return j(this,at,"f")}get currentTarget(){return j(this,at,"f")}get srcElement(){return j(this,at,"f")}get type(){return j(this,yi,"f")}get cancelable(){return j(this,Ct,"f")}get defaultPrevented(){return j(this,Ct,"f")&&j(this,sr,"f")}get timeStamp(){return j(this,ks,"f")}composedPath(){return j(this,nr,"f")?[j(this,at,"f")]:[]}get returnValue(){return!j(this,Ct,"f")||!j(this,sr,"f")}get bubbles(){return j(this,bi,"f")}get composed(){return j(this,vi,"f")}get eventPhase(){return j(this,nr,"f")?He.AT_TARGET:He.NONE}get cancelBubble(){return j(this,or,"f")}set cancelBubble(r){r&&be(this,or,!0,"f")}stopPropagation(){be(this,or,!0,"f")}get isTrusted(){return!1}},Ct=new WeakMap,bi=new WeakMap,vi=new WeakMap,sr=new WeakMap,ks=new WeakMap,or=new WeakMap,yi=new WeakMap,at=new WeakMap,nr=new WeakMap,He.NONE=0,He.CAPTURING_PHASE=1,He.AT_TARGET=2,He.BUBBLING_PHASE=3,He);Object.defineProperties(Rs.prototype,{initEvent:V,stopImmediatePropagation:V,preventDefault:V,target:V,currentTarget:V,srcElement:V,type:V,cancelable:V,defaultPrevented:V,timeStamp:V,composedPath:V,returnValue:V,bubbles:V,composed:V,eventPhase:V,cancelBubble:V,stopPropagation:V,isTrusted:V});var Go=(Wo=class extends Rs{constructor(r,e={}){super(r,e),xi.set(this,void 0),be(this,xi,e?.detail??null,"f")}initCustomEvent(r,e,t,i){throw new Error("Method not implemented.")}get detail(){return j(this,xi,"f")}},xi=new WeakMap,Wo);Object.defineProperties(Go.prototype,{detail:V});var _s=Rs,Ls=Go;globalThis.Event??=_s;globalThis.CustomEvent??=Ls;var Qo=new WeakMap,ar=o=>{let r=Qo.get(o);return r===void 0&&Qo.set(o,r=new Map),r},ll=class extends Is{constructor(){super(...arguments),this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(ar(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){ar(this).set(r,String(e))}removeAttribute(r){ar(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 ar(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 jo(this);return this.__internals=r,r}getAttribute(r){return ar(this).get(r)??null}};var cl=class extends ll{},Os=cl;globalThis.litServerRoot??=Object.defineProperty(new Os,"localName",{get(){return"lit-server-root"}});function dl(){let o,r;return{promise:new Promise((t,i)=>{o=t,r=i}),resolve:o,reject:r}}var $s=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=dl(),this.__pendingWhenDefineds.set(r,t)),t.promise}},pl=$s;var Yo=new pl;var lr=globalThis,qi=lr.ShadowRoot&&(lr.ShadyCSS===void 0||lr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Ps=Symbol(),Jo=new WeakMap,cr=class{constructor(r,e,t){if(this._$cssResult$=!0,t!==Ps)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(qi&&r===void 0){let t=e!==void 0&&e.length===1;t&&(r=Jo.get(e)),r===void 0&&((this.o=r=new CSSStyleSheet).replaceSync(this.cssText),t&&Jo.set(e,r))}return r}toString(){return this.cssText}},Ko=o=>new cr(typeof o=="string"?o:o+"",void 0,Ps),y=(o,...r)=>{let e=o.length===1?o[0]:r.reduce(((t,i,s)=>t+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+o[s+1]),o[0]);return new cr(e,o,Ps)},Zo=(o,r)=>{if(qi)o.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,o.appendChild(t)}},Vs=qi||lr.CSSStyleSheet===void 0?o=>o:o=>o instanceof CSSStyleSheet?(r=>{let e="";for(let t of r.cssRules)e+=t.cssText;return Ko(e)})(o):o;var{is:ul,defineProperty:ml,getOwnPropertyDescriptor:hl,getOwnPropertyNames:fl,getOwnPropertySymbols:gl,getPrototypeOf:bl}=Object,ur=globalThis;ur.customElements??=Yo;var en=ur.trustedTypes,vl=en?en.emptyScript:"",yl=ur.reactiveElementPolyfillSupport,dr=(o,r)=>o,pr={toAttribute(o,r){switch(r){case Boolean:o=o?vl:null;break;case Object:case Array:o=o==null?o:JSON.stringify(o)}return o},fromAttribute(o,r){let e=o;switch(r){case Boolean:e=o!==null;break;case Number:e=o===null?null:Number(o);break;case Object:case Array:try{e=JSON.parse(o)}catch{e=null}}return e}},wi=(o,r)=>!ul(o,r),tn={attribute:!0,type:String,converter:pr,reflect:!1,useDefault:!1,hasChanged:wi};Symbol.metadata??=Symbol("metadata"),ur.litPropertyMetadata??=new WeakMap;var Me=class extends(globalThis.HTMLElement??Os){static addInitializer(r){this._$Ei(),(this.l??=[]).push(r)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(r,e=tn){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&&ml(this.prototype,r,i)}}static getPropertyDescriptor(r,e,t){let{get:i,set:s}=hl(this.prototype,r)??{get(){return this[e]},set(n){this[e]=n}};return{get:i,set(n){let a=i?.call(this);s?.call(this,n),this.requestUpdate(r,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(r){return this.elementProperties.get(r)??tn}static _$Ei(){if(this.hasOwnProperty(dr("elementProperties")))return;let r=bl(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=[...fl(e),...gl(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(Vs(i))}else r!==void 0&&e.push(Vs(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 Zo(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 s=(t.converter?.toAttribute!==void 0?t.converter:pr).toAttribute(e,t.type);this._$Em=r,s==null?this.removeAttribute(i):this.setAttribute(i,s),this._$Em=null}}_$AK(r,e){let t=this.constructor,i=t._$Eh.get(r);if(i!==void 0&&this._$Em!==i){let s=t.getPropertyOptions(i),n=typeof s.converter=="function"?{fromAttribute:s.converter}:s.converter?.fromAttribute!==void 0?s.converter:pr;this._$Em=i;let a=n.fromAttribute(e,s.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(r,e,t){if(r!==void 0){let i=this.constructor,s=this[r];if(t??=i.getPropertyOptions(r),!((t.hasChanged??wi)(s,e)||t.useDefault&&t.reflect&&s===this._$Ej?.get(r)&&!this.hasAttribute(i._$Eu(r,t))))return;this.C(r,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(r,e,{useDefault:t,reflect:i,wrapped:s},n){t&&!(this._$Ej??=new Map).has(r)&&(this._$Ej.set(r,n??e??this[r]),s!==!0||n!==void 0)||(this._$AL.has(r)||(this.hasUpdated||t||(e=void 0),this._$AL.set(r,e)),i===!0&&this._$Em!==r&&(this._$Eq??=new Set).add(r))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let r=this.scheduleUpdate();return r!=null&&await r,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[i,s]of this._$Ep)this[i]=s;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[i,s]of t){let{wrapped:n}=s,a=this[i];n!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,s,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){}};Me.elementStyles=[],Me.shadowRootOptions={mode:"open"},Me[dr("elementProperties")]=new Map,Me[dr("finalized")]=new Map,yl?.({ReactiveElement:Me}),(ur.reactiveElementVersions??=[]).push("2.1.1");var Mi=globalThis,Ci=Mi.trustedTypes,rn=Ci?Ci.createPolicy("lit-html",{createHTML:o=>o}):void 0,Ds="$lit$",Ie=`lit$${Math.random().toFixed(9).slice(2)}$`,Hs="?"+Ie,xl=`<${Hs}>`,dt=Mi.document===void 0?{createTreeWalker:()=>({})}:document,hr=()=>dt.createComment(""),fr=o=>o===null||typeof o!="object"&&typeof o!="function",zs=Array.isArray,cn=o=>zs(o)||typeof o?.[Symbol.iterator]=="function",Ns=`[
1
+ var nl=Object.defineProperty;var al=Object.getOwnPropertyDescriptor;var Fo=o=>{throw TypeError(o)};var c=(o,r,e,t)=>{for(var i=t>1?void 0:t?al(r,e):r,s=o.length-1,n;s>=0;s--)(n=o[s])&&(i=(t?n(r,e,i):n(i))||i);return t&&i&&nl(r,e,i),i};var Ss=(o,r,e)=>r.has(o)||Fo("Cannot "+e);var x=(o,r,e)=>(Ss(o,r,"read from private field"),e?e.call(o):r.get(o)),T=(o,r,e)=>r.has(o)?Fo("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(o):r.set(o,e),$=(o,r,e,t)=>(Ss(o,r,"write to private field"),t?t.call(o,e):r.set(o,e),e),I=(o,r,e)=>(Ss(o,r,"access private method"),e);var jo=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(r){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=r}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var be=function(o,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"?o!==r||!i:!r.has(o))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(o,e):i?i.value=e:r.set(o,e),e},j=function(o,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?o!==r||!t:!r.has(o))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(o):t?t.value:r.get(o)},wt,bi,vi,sr,Ms,or,yi,at,nr,He,xi,Wo,Xo=o=>typeof o=="boolean"?o:o?.capture??!1;var ks=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=Xo(t)?this.__captureEventListeners:this.__eventListeners,s=i.get(r);if(s===void 0)s=new Map,i.set(r,s);else if(s.has(e))return;let n=typeof t=="object"&&t?t:{};n.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),s.set(e,n??{})}removeEventListener(r,e,t){if(e==null)return;let i=Xo(t)?this.__captureEventListeners:this.__eventListeners,s=i.get(r);s!==void 0&&(s.delete(e),s.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,s=!1,n=0,a=null,l=null,d=null,p=r.stopPropagation,m=r.stopImmediatePropagation;Object.defineProperties(r,{target:{get(){return a??l},...V},srcElement:{get(){return r.target},...V},currentTarget:{get(){return d},...V},eventPhase:{get(){return n},...V},composedPath:{value:()=>e,...V},stopPropagation:{value:()=>{i=!0,p.call(r)},...V},stopImmediatePropagation:{value:()=>{s=!0,m.call(r)},...V}});let h=(q,k,P)=>{typeof q=="function"?q(r):typeof q?.handleEvent=="function"&&q.handleEvent(r),k.once&&P.delete(q)},g=()=>(d=null,n=0,!r.defaultPrevented),v=e.slice().reverse();a=!this.__host||!r.composed?this:null;let E=q=>{for(l=this;l.__host&&q.includes(l.__host);)l=l.__host};for(let q of v){!a&&(!l||l===q.__host)&&E(v.slice(v.indexOf(q))),d=q,n=q===r.target?2:1;let k=q.__captureEventListeners.get(r.type);if(k){for(let[P,H]of k)if(h(P,H,k),s)return g()}if(i)return g()}let A=r.bubbles?e:[this];l=null;for(let q of A){!a&&(!l||q===l.__host)&&E(A.slice(0,A.indexOf(q)+1)),d=q,n=q===r.target?2:3;let k=q.__eventListeners.get(r.type);if(k){for(let[P,H]of k)if(h(P,H,k),s)return g()}if(i)return g()}return g()}},Is=ks;var V={__proto__:null};V.enumerable=!0;Object.freeze(V);var Rs=(He=class{constructor(r,e={}){if(wt.set(this,!1),bi.set(this,!1),vi.set(this,!1),sr.set(this,!1),Ms.set(this,Date.now()),or.set(this,!1),yi.set(this,void 0),at.set(this,void 0),nr.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:s}=e;be(this,wt,!!i,"f"),be(this,bi,!!t,"f"),be(this,vi,!!s,"f"),be(this,yi,`${r}`,"f"),be(this,at,null,"f"),be(this,nr,!1,"f")}initEvent(r,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){be(this,sr,!0,"f")}get target(){return j(this,at,"f")}get currentTarget(){return j(this,at,"f")}get srcElement(){return j(this,at,"f")}get type(){return j(this,yi,"f")}get cancelable(){return j(this,wt,"f")}get defaultPrevented(){return j(this,wt,"f")&&j(this,sr,"f")}get timeStamp(){return j(this,Ms,"f")}composedPath(){return j(this,nr,"f")?[j(this,at,"f")]:[]}get returnValue(){return!j(this,wt,"f")||!j(this,sr,"f")}get bubbles(){return j(this,bi,"f")}get composed(){return j(this,vi,"f")}get eventPhase(){return j(this,nr,"f")?He.AT_TARGET:He.NONE}get cancelBubble(){return j(this,or,"f")}set cancelBubble(r){r&&be(this,or,!0,"f")}stopPropagation(){be(this,or,!0,"f")}get isTrusted(){return!1}},wt=new WeakMap,bi=new WeakMap,vi=new WeakMap,sr=new WeakMap,Ms=new WeakMap,or=new WeakMap,yi=new WeakMap,at=new WeakMap,nr=new WeakMap,He.NONE=0,He.CAPTURING_PHASE=1,He.AT_TARGET=2,He.BUBBLING_PHASE=3,He);Object.defineProperties(Rs.prototype,{initEvent:V,stopImmediatePropagation:V,preventDefault:V,target:V,currentTarget:V,srcElement:V,type:V,cancelable:V,defaultPrevented:V,timeStamp:V,composedPath:V,returnValue:V,bubbles:V,composed:V,eventPhase:V,cancelBubble:V,stopPropagation:V,isTrusted:V});var Go=(Wo=class extends Rs{constructor(r,e={}){super(r,e),xi.set(this,void 0),be(this,xi,e?.detail??null,"f")}initCustomEvent(r,e,t,i){throw new Error("Method not implemented.")}get detail(){return j(this,xi,"f")}},xi=new WeakMap,Wo);Object.defineProperties(Go.prototype,{detail:V});var _s=Rs,Ls=Go;globalThis.Event??=_s;globalThis.CustomEvent??=Ls;var Qo=new WeakMap,ar=o=>{let r=Qo.get(o);return r===void 0&&Qo.set(o,r=new Map),r},ll=class extends Is{constructor(){super(...arguments),this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(ar(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){ar(this).set(r,String(e))}removeAttribute(r){ar(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 ar(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 jo(this);return this.__internals=r,r}getAttribute(r){return ar(this).get(r)??null}};var cl=class extends ll{},Os=cl;globalThis.litServerRoot??=Object.defineProperty(new Os,"localName",{get(){return"lit-server-root"}});function dl(){let o,r;return{promise:new Promise((t,i)=>{o=t,r=i}),resolve:o,reject:r}}var $s=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=dl(),this.__pendingWhenDefineds.set(r,t)),t.promise}},pl=$s;var Yo=new pl;var lr=globalThis,qi=lr.ShadowRoot&&(lr.ShadyCSS===void 0||lr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Ps=Symbol(),Jo=new WeakMap,cr=class{constructor(r,e,t){if(this._$cssResult$=!0,t!==Ps)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(qi&&r===void 0){let t=e!==void 0&&e.length===1;t&&(r=Jo.get(e)),r===void 0&&((this.o=r=new CSSStyleSheet).replaceSync(this.cssText),t&&Jo.set(e,r))}return r}toString(){return this.cssText}},Ko=o=>new cr(typeof o=="string"?o:o+"",void 0,Ps),y=(o,...r)=>{let e=o.length===1?o[0]:r.reduce(((t,i,s)=>t+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+o[s+1]),o[0]);return new cr(e,o,Ps)},Zo=(o,r)=>{if(qi)o.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,o.appendChild(t)}},Vs=qi||lr.CSSStyleSheet===void 0?o=>o:o=>o instanceof CSSStyleSheet?(r=>{let e="";for(let t of r.cssRules)e+=t.cssText;return Ko(e)})(o):o;var{is:ul,defineProperty:ml,getOwnPropertyDescriptor:hl,getOwnPropertyNames:fl,getOwnPropertySymbols:gl,getPrototypeOf:bl}=Object,ur=globalThis;ur.customElements??=Yo;var en=ur.trustedTypes,vl=en?en.emptyScript:"",yl=ur.reactiveElementPolyfillSupport,dr=(o,r)=>o,pr={toAttribute(o,r){switch(r){case Boolean:o=o?vl:null;break;case Object:case Array:o=o==null?o:JSON.stringify(o)}return o},fromAttribute(o,r){let e=o;switch(r){case Boolean:e=o!==null;break;case Number:e=o===null?null:Number(o);break;case Object:case Array:try{e=JSON.parse(o)}catch{e=null}}return e}},Ci=(o,r)=>!ul(o,r),tn={attribute:!0,type:String,converter:pr,reflect:!1,useDefault:!1,hasChanged:Ci};Symbol.metadata??=Symbol("metadata"),ur.litPropertyMetadata??=new WeakMap;var ke=class extends(globalThis.HTMLElement??Os){static addInitializer(r){this._$Ei(),(this.l??=[]).push(r)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(r,e=tn){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&&ml(this.prototype,r,i)}}static getPropertyDescriptor(r,e,t){let{get:i,set:s}=hl(this.prototype,r)??{get(){return this[e]},set(n){this[e]=n}};return{get:i,set(n){let a=i?.call(this);s?.call(this,n),this.requestUpdate(r,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(r){return this.elementProperties.get(r)??tn}static _$Ei(){if(this.hasOwnProperty(dr("elementProperties")))return;let r=bl(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=[...fl(e),...gl(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(Vs(i))}else r!==void 0&&e.push(Vs(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 Zo(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 s=(t.converter?.toAttribute!==void 0?t.converter:pr).toAttribute(e,t.type);this._$Em=r,s==null?this.removeAttribute(i):this.setAttribute(i,s),this._$Em=null}}_$AK(r,e){let t=this.constructor,i=t._$Eh.get(r);if(i!==void 0&&this._$Em!==i){let s=t.getPropertyOptions(i),n=typeof s.converter=="function"?{fromAttribute:s.converter}:s.converter?.fromAttribute!==void 0?s.converter:pr;this._$Em=i;let a=n.fromAttribute(e,s.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(r,e,t){if(r!==void 0){let i=this.constructor,s=this[r];if(t??=i.getPropertyOptions(r),!((t.hasChanged??Ci)(s,e)||t.useDefault&&t.reflect&&s===this._$Ej?.get(r)&&!this.hasAttribute(i._$Eu(r,t))))return;this.C(r,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(r,e,{useDefault:t,reflect:i,wrapped:s},n){t&&!(this._$Ej??=new Map).has(r)&&(this._$Ej.set(r,n??e??this[r]),s!==!0||n!==void 0)||(this._$AL.has(r)||(this.hasUpdated||t||(e=void 0),this._$AL.set(r,e)),i===!0&&this._$Em!==r&&(this._$Eq??=new Set).add(r))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let r=this.scheduleUpdate();return r!=null&&await r,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[i,s]of this._$Ep)this[i]=s;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[i,s]of t){let{wrapped:n}=s,a=this[i];n!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,s,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){}};ke.elementStyles=[],ke.shadowRootOptions={mode:"open"},ke[dr("elementProperties")]=new Map,ke[dr("finalized")]=new Map,yl?.({ReactiveElement:ke}),(ur.reactiveElementVersions??=[]).push("2.1.1");var ki=globalThis,wi=ki.trustedTypes,rn=wi?wi.createPolicy("lit-html",{createHTML:o=>o}):void 0,Ds="$lit$",Ie=`lit$${Math.random().toFixed(9).slice(2)}$`,Hs="?"+Ie,xl=`<${Hs}>`,dt=ki.document===void 0?{createTreeWalker:()=>({})}:document,hr=()=>dt.createComment(""),fr=o=>o===null||typeof o!="object"&&typeof o!="function",zs=Array.isArray,cn=o=>zs(o)||typeof o?.[Symbol.iterator]=="function",Ns=`[
3
3
  \f\r]`,mr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,sn=/-->/g,on=/>/g,lt=RegExp(`>|${Ns}(?:([^\\s"'>=/]+)(${Ns}*=${Ns}*(?:[^
4
- \f\r"'\`<>=]|("|')|))|$)`,"g"),nn=/'/g,an=/"/g,dn=/^(?:script|style|textarea|title)$/i,Us=o=>(r,...e)=>({_$litType$:o,strings:r,values:e}),f=Us(1),Ii=Us(2),Tc=Us(3),z=Symbol.for("lit-noChange"),L=Symbol.for("lit-nothing"),ln=new WeakMap,ct=dt.createTreeWalker(dt,129);function pn(o,r){if(!zs(o)||!o.hasOwnProperty("raw"))throw Error("invalid template strings array");return rn!==void 0?rn.createHTML(r):r}var un=(o,r)=>{let e=o.length-1,t=[],i,s=r===2?"<svg>":r===3?"<math>":"",n=mr;for(let a=0;a<e;a++){let l=o[a],d,p,m=-1,h=0;for(;h<l.length&&(n.lastIndex=h,p=n.exec(l),p!==null);)h=n.lastIndex,n===mr?p[1]==="!--"?n=sn:p[1]!==void 0?n=on:p[2]!==void 0?(dn.test(p[2])&&(i=RegExp("</"+p[2],"g")),n=lt):p[3]!==void 0&&(n=lt):n===lt?p[0]===">"?(n=i??mr,m=-1):p[1]===void 0?m=-2:(m=n.lastIndex-p[2].length,d=p[1],n=p[3]===void 0?lt:p[3]==='"'?an:nn):n===an||n===nn?n=lt:n===sn||n===on?n=mr:(n=lt,i=void 0);let g=n===lt&&o[a+1].startsWith("/>")?" ":"";s+=n===mr?l+xl:m>=0?(t.push(d),l.slice(0,m)+Ds+l.slice(m)+Ie+g):l+Ie+(m===-2?a:g)}return[pn(o,s+(o[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},gr=class o{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let s=0,n=0,a=r.length-1,l=this.parts,[d,p]=un(r,e);if(this.el=o.createElement(d,t),ct.currentNode=this.el.content,e===2||e===3){let m=this.el.content.firstChild;m.replaceWith(...m.childNodes)}for(;(i=ct.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let m of i.getAttributeNames())if(m.endsWith(Ds)){let h=p[n++],g=i.getAttribute(m).split(Ie),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:s,name:v[2],strings:g,ctor:v[1]==="."?Ti:v[1]==="?"?Ai:v[1]==="@"?Si:ut}),i.removeAttribute(m)}else m.startsWith(Ie)&&(l.push({type:6,index:s}),i.removeAttribute(m));if(dn.test(i.tagName)){let m=i.textContent.split(Ie),h=m.length-1;if(h>0){i.textContent=Ci?Ci.emptyScript:"";for(let g=0;g<h;g++)i.append(m[g],hr()),ct.nextNode(),l.push({type:2,index:++s});i.append(m[h],hr())}}}else if(i.nodeType===8)if(i.data===Hs)l.push({type:2,index:s});else{let m=-1;for(;(m=i.data.indexOf(Ie,m+1))!==-1;)l.push({type:7,index:s}),m+=Ie.length-1}s++}}static createElement(r,e){let t=dt.createElement("template");return t.innerHTML=r,t}};function pt(o,r,e=o,t){if(r===z)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,s=fr(r)?void 0:r._$litDirective$;return i?.constructor!==s&&(i?._$AO?.(!1),s===void 0?i=void 0:(i=new s(o),i._$AT(o,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=pt(o,i._$AS(o,r.values),i,t)),r}var Ei=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??dt).importNode(e,!0);ct.currentNode=i;let s=ct.nextNode(),n=0,a=0,l=t[0];for(;l!==void 0;){if(n===l.index){let d;l.type===2?d=new Et(s,s.nextSibling,this,r):l.type===1?d=new l.ctor(s,l.name,l.strings,this,r):l.type===6&&(d=new ki(s,this,r)),this._$AV.push(d),l=t[++a]}n!==l?.index&&(s=ct.nextNode(),n++)}return ct.currentNode=dt,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++}},Et=class o{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=L,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=pt(this,r,e),fr(r)?r===L||r==null||r===""?(this._$AH!==L&&this._$AR(),this._$AH=L):r!==this._$AH&&r!==z&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):cn(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!==L&&fr(this._$AH)?this._$AA.nextSibling.data=r:this.T(dt.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=gr.createElement(pn(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let s=new Ei(i,this),n=s.u(this.options);s.p(e),this.T(n),this._$AH=s}}_$AC(r){let e=ln.get(r.strings);return e===void 0&&ln.set(r.strings,e=new gr(r)),e}k(r){zs(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let s of r)i===e.length?e.push(t=new o(this.O(hr()),this.O(hr()),this,this.options)):t=e[i],t._$AI(s),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))}},ut=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,s){this.type=1,this._$AH=L,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=s,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=L}_$AI(r,e=this,t,i){let s=this.strings,n=!1;if(s===void 0)r=pt(this,r,e,0),n=!fr(r)||r!==this._$AH&&r!==z,n&&(this._$AH=r);else{let a=r,l,d;for(r=s[0],l=0;l<s.length-1;l++)d=pt(this,a[t+l],e,l),d===z&&(d=this._$AH[l]),n||=!fr(d)||d!==this._$AH[l],d===L?r=L:r!==L&&(r+=(d??"")+s[l+1]),this._$AH[l]=d}n&&!i&&this.j(r)}j(r){r===L?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},Ti=class extends ut{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===L?void 0:r}},Ai=class extends ut{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==L)}},Si=class extends ut{constructor(r,e,t,i,s){super(r,e,t,i,s),this.type=5}_$AI(r,e=this){if((r=pt(this,r,e,0)??L)===z)return;let t=this._$AH,i=r===L&&t!==L||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,s=r!==L&&(t===L||i);i&&this.element.removeEventListener(this.name,this,t),s&&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)}},ki=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){pt(this,r)}},W={M:Ds,P:Ie,A:Hs,C:1,L:un,R:Ei,D:cn,V:pt,I:Et,H:ut,N:Ai,U:Si,B:Ti,F:ki},ql=Mi.litHtmlPolyfillSupport;ql?.(gr,Et),(Mi.litHtmlVersions??=[]).push("3.3.1");var Bs=(o,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let s=e?.renderBefore??null;t._$litPart$=i=new Et(r.insertBefore(hr(),s),s,void 0,e??{})}return i._$AI(o),i};var Fs=globalThis,b=class extends Me{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=Bs(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return z}};b._$litElement$=!0,b.finalized=!0,Fs.litElementHydrateSupport?.({LitElement:b});var wl=Fs.litElementPolyfillSupport;wl?.({LitElement:b});(Fs.litElementVersions??=[]).push("4.2.1");var w=o=>(r,e)=>{e!==void 0?e.addInitializer((()=>{customElements.define(o,r)})):customElements.define(o,r)};var Cl={attribute:!0,type:String,converter:pr,reflect:!1,hasChanged:wi},El=(o=Cl,r,e)=>{let{kind:t,metadata:i}=e,s=globalThis.litPropertyMetadata.get(i);if(s===void 0&&globalThis.litPropertyMetadata.set(i,s=new Map),t==="setter"&&((o=Object.create(o)).wrapped=!0),s.set(e.name,o),t==="accessor"){let{name:n}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(n,l,o)},init(a){return a!==void 0&&this.C(n,void 0,o,a),a}}}if(t==="setter"){let{name:n}=e;return function(a){let l=this[n];r.call(this,a),this.requestUpdate(n,l,o)}}throw Error("Unsupported decorator location: "+t)};function u(o){return(r,e)=>typeof e=="object"?El(o,r,e):((t,i,s)=>{let n=i.hasOwnProperty(s);return i.constructor.createProperty(s,t),n?Object.getOwnPropertyDescriptor(i,s):void 0})(o,r,e)}function C(o){return u({...o,state:!0,attribute:!1})}var ze=(o,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(o,r,e),e);function Tt(o,r){return(e,t,i)=>{let s=n=>n.renderRoot?.querySelector(o)??null;if(r){let{get:n,set:a}=typeof t=="object"?e:i??(()=>{let l=Symbol();return{get(){return this[l]},set(d){this[l]=d}}})();return ze(e,t,{get(){let l=n.call(this);return l===void 0&&(l=s(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return ze(e,t,{get(){return s(this)}})}}function mn(o){return(r,e)=>{let{slot:t,selector:i}=o??{},s="slot"+(t?`[name=${t}]`:":not([name])");return ze(r,e,{get(){let n=this.renderRoot?.querySelector(s),a=n?.assignedElements(o)??[];return i===void 0?a:a.filter((l=>l.matches(i)))}})}}function hn(o,r,e){Array.from(o.getElementsByTagName("*")).filter(s=>s.localName===r||s.localName?.toLowerCase()===r.toLowerCase()).forEach(s=>{let n=`${r}-${e}`,a=gn(s,n);s.replaceWith(a)})}function fn(o,r){o.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let s=i.slice(`${r}:`.length),n=`${e.nodeName}-${s}`,a=gn(e,n);e.replaceWith(a)}})})}function gn(o,r){let e=o.ownerDocument.createElement(r);for(let t of o.attributes)e.setAttribute(t.name,t.value);for(;o.firstChild;)e.appendChild(o.firstChild);return e}function bn(o){let r=[];return o.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),i=e.getAttribute("href"),s=e.getAttribute("category");r.push({identifier:t,href:i,category:s})}),r}function At(o,r){return fetch(o,{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 St(o){return new DOMParser().parseFromString(o,"text/xml")}function vn(o,r){if(o.nodeType===Node.ELEMENT_NODE){let e=o,t=r.createElement(e.localName);for(let i=0;i<e.attributes.length;i++){let s=e.attributes[i];t.setAttribute(s.localName,s.value)}for(let i=0;i<e.childNodes.length;i++)t.appendChild(vn(e.childNodes[i],r));return t}return o.cloneNode(!1)}function kt(o){let r=document.createDocumentFragment();for(let e=0;e<o.childNodes.length;e++)r.appendChild(vn(o.childNodes[e],document));return r}function Mt(o,r){r.endsWith("/")||(r+="/"),o.querySelectorAll("*").forEach(t=>{for(let i of["src","href"]){let s=t.getAttribute(i)?.trim();if(s&&!/^(data:|https?:|blob:)/.test(s)){let n=r+encodeURI(s);t.setAttribute(i,n)}}})}function yn(o){o.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function xn(o){o.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function qn(o){switch(o){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 ve=(o=!1)=>{let r,e="",t={load(i,s){e=i;let n=encodeURI(i);return o&&sessionStorage.getItem(n)?Promise.resolve(t.parse(sessionStorage.getItem(n))):At(i,s).then(a=>(r=a,t.shuffleInteractions(),o&&sessionStorage.setItem(n,new XMLSerializer().serializeToString(r)),t))},parse(i){return r=St(i),t},path:i=>(Mt(r,i),e=null,t),fn(i){return i(r),t},pciHooks(i){let s=["hook","module"],n=i.substring(0,i.lastIndexOf("/"));for(let a of s)r.querySelectorAll("["+a+"]").forEach(d=>{let p=d.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(d.setAttribute("base-url",i),d.setAttribute("module",n+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,s,n="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(n);if(l.length===0)return t;let d=null,p=null,m=async()=>{if(d===null)try{d=await s(i,"/modules/module_resolution.js")}catch{d=null}if(p===null)try{p=await s(i,"/modules/fallback_module_resolution.js")}catch{p=null}};for(let h of Array.from(l)){h.setAttribute("data-base-url",i);let g=h.getAttribute("custom-interaction-type-identifier");g&&a.includes(g)&&(g=g+a.length,h.setAttribute("custom-interaction-type-identifier",g),a.push(g)),g&&a.push(g);let v=h.querySelector("qti-interaction-modules");if(v&&v.getAttribute("primary-configuration")){await m();let E=v.getAttribute("primary-configuration");if(E)try{let A=await s(i,`/${E}`),q=Array.from(v.querySelectorAll("qti-interaction-module"));for(let M of q){let P=M.getAttribute("id");if(P&&A.paths&&A.paths[P]){let H=A.paths[P],Z=Array.isArray(H)?H[0]:H;if(M.setAttribute("primary-path",Z),p&&p.paths&&p.paths[P]){let F=p.paths[P];Array.isArray(F)?M.setAttribute("fallback-path",F[0]):M.setAttribute("fallback-path",F)}}}if(A.paths){for(let M in A.paths)if(!v.querySelector(`qti-interaction-module[id="${M}"]`)){let H=r.createElement("qti-interaction-module");H.setAttribute("id",M);let Z=Array.isArray(A.paths[M])?A.paths[M][0]:A.paths[M];if(H.setAttribute("primary-path",Z),p&&p.paths&&p.paths[M]){let F=p.paths[M];Array.isArray(F)?H.setAttribute("fallback-path",F[0]):H.setAttribute("fallback-path",F)}v.appendChild(H)}}A.urlArgs&&v.setAttribute("url-args",A.urlArgs)}catch(A){console.warn(`Failed to load primary configuration: ${E}`,A)}}else if(await m(),d){h.querySelector("qti-interaction-modules")===null?(v=r.createElement("qti-interaction-modules"),h.appendChild(v)):v=h.querySelector("qti-interaction-modules");for(let E in d.paths){let A=d.paths[E],q="";p&&p.paths&&p.paths[E]&&(q=p.paths[E]);let M=Array.isArray(A)?A:[A],P=Array.isArray(q)?q:[q],H=M.map((Z,F)=>{let ol=P.length>F?P[F]:"";return{primaryPath:Z,fallbackPath:ol}});for(let Z of P)H.some(F=>F.fallbackPath===Z)||H.push({primaryPath:M.length>0?M[0]:Z,fallbackPath:Z});for(let Z of H){let F=r.createElement("qti-interaction-module");Z.fallbackPath&&F.setAttribute("fallback-path",Z.fallbackPath),F.setAttribute("id",E),F.setAttribute("primary-path",Z.primaryPath),v&&v.appendChild(F)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),s=Array.from(i).filter(n=>n.tagName?.toLowerCase().endsWith("-interaction"));for(let n of s){let a=qn(n.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let d of l){let p=Array.from(n.querySelectorAll(d)),m=p.map((q,M)=>({element:q,fixed:q.hasAttribute("fixed")&&q.getAttribute("fixed")==="true",originalOrder:M})).filter(q=>q.fixed),h=p.filter(q=>!q.hasAttribute("fixed")||q.getAttribute("fixed")!=="true");if(h.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;let g=[...h],v=!1,E=0;for(;!v&&E<20;){E++;for(let q=h.length-1;q>0;q--){let M=Math.floor(Math.random()*(q+1));[h[q],h[M]]=[h[M],h[q]]}v=!h.every((q,M)=>q===g[M])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;n.removeAttribute("shuffle");let A=0;for(let q of h)q.parentElement.insertBefore(q,m[A]?.element),A++;for(let q of m)q.element.parentElement.insertBefore(q.element,h[q.originalOrder])}}return t},extendElementName:(i,s)=>(hn(r,i,s),t),extendElementsWithClass:(i="extend")=>(fn(r,i),t),customInteraction(i,s){let n=r.querySelector("qti-custom-interaction"),a=n.querySelector("object");return n.setAttribute("data-base-ref",i),n.setAttribute("data-base-item",i+s),n.setAttribute("data",a.getAttribute("data")),n.setAttribute("width",a.getAttribute("width")),n.setAttribute("height",a.getAttribute("height")),n.removeChild(a),t},convertCDATAtoComment(){return yn(r),t},stripStyleSheets(){return xn(r),t},html(){return e!==null&&Mt(r,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(kt(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return e!==null&&Mt(r,e.substring(0,e.lastIndexOf("/"))),kt(r)},xmlDoc(){return r}};return t};var wn=()=>{let o,r={async load(e,t){return new Promise(i=>{At(e,t).then(s=>(o=s,i(r)))})},parse(e){o=St(e)},assessmentTest(){let e=o.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var It=()=>{let o,r={async load(e,t){return new Promise((i,s)=>{At(e,t).then(n=>(o=n,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return o=St(e),r},path:e=>(Mt(o,e),r),fn(e){return e(o),r},items(){return bn(o)},html(){return new XMLSerializer().serializeToString(kt(o))},xml(){return new XMLSerializer().serializeToString(o)},htmlDoc(){return kt(o)},xmlDoc(){return o}};return r};var Cn=o=>{class r extends o{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,s){let n=s||this._getDefaultNavigationId(i);n&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_bindEventHandlers(){this.addEventListener("qti-request-navigation",this._handleNavigationRequest.bind(this)),this.addEventListener("qti-assessment-test-connected",this._handleTestConnected.bind(this)),this.addEventListener("qti-assessment-item-connected",this._handleItemConnected.bind(this)),this.addEventListener("qti-assessment-stimulus-ref-connected",this._handleStimulusRefConnected.bind(this))}_handleTestConnected(i){this._testElement=i.detail,this._initializeNavigation()}_handleItemConnected(i){let s=i.detail;this._loadingState.connectedItems++;let n=s.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=n.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:s,item:n}=i;if(console.info("Stimulus ref connected:",{identifier:s.identifier,href:s.href,item:n.identifier}),this._loadedStimulusHrefs.has(s.href)){console.info("Stimulus already loaded, skipping:",s.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(s.href)){console.info("Stimulus already loading, skipping duplicate:",s.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(s.href),console.info("Starting stimulus load:",s.href);try{await this._loadStimulusRef(s,n),this._loadedStimulusHrefs.add(s.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",s.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${s.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(s.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 s=++this._navigationId,n=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=n,await this._executeNavigation(i.type,i.id,s,n)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===n&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,s,n){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,s,n))}async _executeNavigation(i,s,n,a){i==="item"?await this._navigateToItem(s,n,a):await this._navigateToSection(s,n,a)}async _navigateToItem(i,s,n){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],s,n),await this._waitForLoadingComplete(s,n),!this._isStaleNavigation(s,n)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,s,n){let l=this._findSection(i)?.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:l,navSectionId:i,navItemRefId:null};let d=this._getSectionItemIds(i);this._resetLoadingState(),this._loadingState.expectedItems=d.length,await this._loadItems(d,s,n),await this._waitForLoadingComplete(s,n),!this._isStaleNavigation(s,n)&&this._dispatchTestLoaded(this._loadResults)}_resetLoadingState(){this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1},this._loadedStimulusHrefs.clear(),this._loadingStimulusHrefs.clear()}_checkLoadingComplete(){let i=this._loadingState.connectedItems>=this._loadingState.expectedItems,s=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;i&&s&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(i,s){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(i,s))return;await new Promise(n=>setTimeout(n,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,s){console.info("Loading stimulus:",i.href);let n=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",n?"has content":"no content"),this._applyStimulusContent(n,i,s)}_applyStimulusContent(i,s,n){if(!i){console.warn("No stimulus content to apply");return}let a=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");if(console.info(`Found ${a.length} stimulus elements to apply for ${s.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],d=document.querySelector(`qti-assessment-item[identifier="${n.identifier}"] [data-stimulus-idref="${s.identifier}"]`);if(d)l.push(d),console.info("Found specific target:",d);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${s.identifier}"]`));if(p.length>0)l=p,console.info("Found targets by identifier:",p.length);else{let m=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=m,console.info("Using fallback targets:",m.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,m)=>{p.innerHTML="";let h=Array.from(a).map(g=>g.cloneNode(!0));p.append(...h),console.info(`Applied stimulus content to target ${m+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,s,n){if(!this._testElement||i.length===0)return;let a=i.map(p=>this._findItemRef(p));this._clearLoadedItems(),this._clearStimulusRef();let d=(await Promise.all(a.map(p=>this._loadSingleItem(p,s,n)))).filter(Boolean);this._isStaleNavigation(s,n)||(d.forEach(({itemRef:p,doc:m})=>{p&&m&&(p.xmlDoc=m)}),d.forEach(({itemRef:p})=>{let m=p?.identifier;if(!p||!m)return;let h=this.testContext.items.find(g=>g.identifier===m)?.state;h!==void 0&&p.updateComplete.then(()=>{let g=p.assessmentItem;g&&(g.state=h)})}),this._loadResults=d)}async _loadSingleItem(i,s,n){try{let a=await ve(this.cacheTransform).load(i.href,n.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(s,n)?null:{itemRef:i,doc:a.htmlDoc()}}catch(a){if(a.name==="AbortError")throw console.info(`Item load for ${i.identifier} was aborted`),a;return console.warn(`Failed to load item ${i.identifier}:`,a),null}}async _loadStimulus(i){return(await ve().load(i,this._activeController?.signal)).htmlDoc()}_findItemRef(i){let s=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);if(!s)throw new Error(`Item with identifier "${i}" not found`);return s}_findSection(i){return this._testElement?.querySelector(`qti-assessment-section[identifier="${i}"]`)||null}_updateSessionContext(i,s){let n=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:n,navSectionId:a,navItemRefId:s}}_getSectionItemIds(i){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${i}"] > qti-assessment-item-ref`)).map(s=>s.identifier).filter(Boolean)}_clearLoadedItems(){let i=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(i||[]).forEach(s=>{s.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(i=>i.innerHTML="")}_isStaleNavigation(i,s){return s.signal.aborted||i!==this._navigationId}_createNavigationError(i,s,n){return{message:i.message||`Failed to load ${s}: ${n}`,details:i,itemId:s==="item"?n:void 0,sectionId:s==="section"?n:void 0}}_dispatchLoadingStarted(i,s){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:i,id:s},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(i,s){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:i,id:s},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:s})=>({identifier:s?.identifier,element:s})),bubbles:!0,composed:!0}))})}}return c([u({type:String})],r.prototype,"navigate",2),c([u({type:Boolean,attribute:"cache-transform"})],r.prototype,"cacheTransform",2),c([u({type:Number})],r.prototype,"requestTimeout",2),c([u({attribute:!1})],r.prototype,"postLoadTransformCallback",2),c([u({attribute:!1})],r.prototype,"postLoadTestTransformCallback",2),r};var En=o=>{class r extends o{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",i=>{this.sessionContext={...this.sessionContext,view:i.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",i=>{this._updateElementView(),this._setCorrectResponseVisibility(i.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(n=>{n.classList.toggle("show",n.getAttribute("view")===this.sessionContext.view)});let s=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;s&&s.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this.sessionContext.view==="scorer")}}return r};var Ue=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 Rt=class{constructor(r,e,t,i){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(s,n)=>{this.unsubscribe&&(this.unsubscribe!==n&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=s,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(s,n)),this.unsubscribe=n},this.host=r,e.context!==void 0){let s=e;this.context=s.context,this.callback=s.callback,this.subscribe=s.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 Ue(this.context,this.host,this.t,this.subscribe))}};var Ri=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 js=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},_t=class extends Ri{constructor(r,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=i=>{if(i.context!==this.context)return;let s=i.contextTarget??i.composedPath()[0];s!==this.host&&(i.stopPropagation(),this.addCallback(i.callback,s,i.subscribe))},this.onProviderRequest=i=>{if(i.context!==this.context||(i.contextTarget??i.composedPath()[0])===this.host)return;let s=new Set;for(let[n,{consumerHost:a}]of this.subscriptions)s.has(n)||(s.add(n),a.dispatchEvent(new Ue(this.context,a,n,!0)));i.stopPropagation()},this.host=r,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new js(this.context,this.host))}};function ee({context:o}){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 _t(this,{context:o,initialValue:i})),i}};{r.constructor.addInitializer((n=>{t.set(n,new _t(n,{context:o}))}));let i=Object.getOwnPropertyDescriptor(r,e),s;if(i===void 0){let n=new WeakMap;s={get(){return n.get(this)},set(a){t.get(this).setValue(a),n.set(this,a)},configurable:!0,enumerable:!0}}else{let n=i.set;s={...i,set(a){t.get(this).setValue(a),n?.call(this,a)}}}return void Object.defineProperty(r,e,s)}}}function k({context:o,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new Rt(this,{context:o,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new Rt(i,{context:o,callback:s=>{i[t]=s},subscribe:r})}))}}var Be=Symbol("computedItemContext");var N=Symbol("computedContext");var ae=Symbol("configContext");var Tn=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var D=Symbol("item");var Lt=Symbol("qtiContext");var Ws={view:"candidate"},Fe=Symbol("testContext");var Xs={items:[],testOutcomeVariables:[]},ye=Symbol("testContext");function _i(o,r){return(e,t)=>{let{connectedCallback:i,disconnectedCallback:s}=e;e.connectedCallback=function(){i.call(this);let n=this[t],a=m=>{let h=[],g=[];for(let q of m)q.type==="childList"&&(q.addedNodes.forEach(M=>{if(M.nodeType!==1)return;let P=M;P.matches?.(o)&&h.push(P),h.push(...P.querySelectorAll?.(o)??[])}),q.removedNodes.forEach(M=>{if(M.nodeType!==1)return;let P=M;P.matches?.(o)&&g.push(P),g.push(...P.querySelectorAll?.(o)??[])}));let v=q=>Array.from(new Set(q)),E=v(h),A=v(g);(E.length||A.length)&&n.call(this,E,A)},l=new MutationObserver(a);l.observe(this,{childList:!0,subtree:!0});let d=this.shadowRoot?new MutationObserver(a):null;d?.observe(this.shadowRoot,{childList:!0,subtree:!0}),this.__lqObservers=[l,d].filter(m=>!!m),(async()=>{r?.waitUntilFirstUpdate&&"updateComplete"in this&&await this.updateComplete;let m=[...this.querySelectorAll(o),...this.shadowRoot?.querySelectorAll(o)??[]];m.length&&n.call(this,m,[])})()},e.disconnectedCallback=function(){s.call(this),this.__lqObservers?.forEach(n=>n.disconnect()),this.__lqObservers=void 0}}}function O(o,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{let{update:s}=t,n=Array.isArray(o)?o:[o];t.update=function(a){n.forEach(l=>{let d=l;if(a.has(d)){let p=a.get(d),m=this[d];p!==m&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](p,m)}}),s.call(this,a)}}}var je={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},te=o=>(...r)=>({_$litDirective$:o,values:r}),xe=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:Tl}=W,Sn=o=>o===null||typeof o!="object"&&typeof o!="function";var kn=o=>o.strings===void 0,An=()=>document.createComment(""),$t=(o,r,e)=>{let t=o._$AA.parentNode,i=r===void 0?o._$AB:r._$AA;if(e===void 0){let s=t.insertBefore(An(),i),n=t.insertBefore(An(),i);e=new Tl(s,n,o,o.options)}else{let s=e._$AB.nextSibling,n=e._$AM,a=n!==o;if(a){let l;e._$AQ?.(o),e._$AM=o,e._$AP!==void 0&&(l=o._$AU)!==n._$AU&&e._$AP(l)}if(s!==i||a){let l=e._$AA;for(;l!==s;){let d=l.nextSibling;t.insertBefore(l,i),l=d}}}return e},We=(o,r,e=o)=>(o._$AI(r,e),o),Al={},Mn=(o,r=Al)=>o._$AH=r,In=o=>o._$AH,Li=o=>{o._$AR(),o._$AA.remove()};var br=(o,r)=>{let e=o._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),br(t,r);return!0},$i=o=>{let r,e;do{if((r=o._$AM)===void 0)break;e=r._$AN,e.delete(o),o=r}while(e?.size===0)},Rn=o=>{for(let r;r=o._$AM;o=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(o))break;e.add(o),Ml(r)}};function Sl(o){this._$AN!==void 0?($i(this),this._$AM=o,Rn(this)):this._$AM=o}function kl(o,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 s=e;s<t.length;s++)br(t[s],!1),$i(t[s]);else t!=null&&(br(t,!1),$i(t));else br(this,o)}var Ml=o=>{o.type==je.CHILD&&(o._$AP??=kl,o._$AQ??=Sl)},Xe=class extends xe{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),Rn(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(br(this,r),$i(this))}setValue(r){if(kn(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 Gs=class extends Xe{constructor(){super(...arguments);this.prevData={}}render(e){return L}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},L}apply(e){let t=this.#e(e),{prevData:i,element:s}=this;for(let n in t){let a=t[n];a!==i[n]&&(a===!0?s.setAttribute(n,""):a===!1?s.removeAttribute(n):a!=null?s.setAttribute(n,String(a)):s.removeAttribute(n))}}groom(e){let{prevData:t,element:i}=this;if(!t)return;let s=e?this.#e(e):{};for(let n in t)(!s||!(n in s))&&i.removeAttribute(n)}#e(e){return Object.fromEntries(Object.entries(e).filter(([t,i])=>typeof i=="function"?!1:t==="max-choices"&&i===0?!0:!(i===""||i===null||i===void 0)))}},Op=te(Gs);var _n=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(_n||{}),R=class extends b{constructor(){super();this.disabled=!1;this.readonly=!1;this.showCorrectResponse=!1;this._handleShowCorrectResponseChange=(e,t)=>{this.toggleInternalCorrectResponse(t)};this.showFullCorrectResponse=!1;this._handleShowFullCorrectResponseChange=(e,t)=>{this.toggleFullCorrectResponse(t)};this.showCandidateCorrection=!1;this._handleShowCandidateCorrectionChange=(e,t)=>{this.toggleCandidateCorrection(t)};this._correctResponse=null;this._internals=this.attachInternals()}static{this.formAssociated=!0}get internals(){return this._internals}set correctResponseAttr(e){e===null?this._correctResponse=null:e.includes(",")?this._correctResponse=e.split(",").map(t=>t.trim()):this._correctResponse=e}get correctResponseAttr(){return this._correctResponse===null||this._correctResponse===void 0?null:Array.isArray(this._correctResponse)?this._correctResponse.join(","):this._correctResponse}get isFullCorrectResponse(){return this._isFullCorrectResponse}set isFullCorrectResponse(e){this._isFullCorrectResponse=e,e&&(this.disabled=!0,this.setAttribute("inert",""),this.setAttribute("response-identifier",this.responseIdentifier+"_cr"))}get correctResponse(){let e=this.responseVariable;return e?.correctResponse?e.correctResponse:this._correctResponse}set correctResponse(e){let t=this._correctResponse;this._correctResponse=e,e==null?this.removeAttribute("correct-response"):this.setAttribute("correct-response",Array.isArray(e)?e.join(","):e),this.requestUpdate("_correctResponse",t)}get correctness(){let e=this.correctResponse;if(!e)return null;let t=this.response;if(t==null||t===""||Array.isArray(t)&&t.length===0)return null;let i=Array.isArray(e)?e:[e],n=(Array.isArray(t)?t:[t]).filter(d=>d!=="");if(n.length===0)return null;let a=n.filter(d=>i.includes(d)).length,l=n.filter(d=>!i.includes(d)).length;return a===i.length&&l===0&&n.length===i.length?"correct":a>0&&(a<i.length||l>0)?"partially-correct":"incorrect"}get isInline(){return!1}get responseVariable(){if(!this._context?.variables)return;let e=this._context.variables.filter(i=>i.type==="response"),t=this.getAttribute("response-identifier");return e.find(i=>i.identifier===t)}toggleCorrectResponse(e){(this?.configContext?.correctResponseMode||"internal")==="full"?this.toggleFullCorrectResponse(e):this.toggleInternalCorrectResponse(e)}async toggleFullCorrectResponse(e){let t=this.nextSibling,i=t instanceof HTMLDivElement&&t?.classList.contains("full-correct-response"),s=this.correctResponse;if(!s)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(s)?[...s]:s}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}:{}}}))}};c([k({context:D,subscribe:!0})],R.prototype,"_context",2),c([k({context:ae,subscribe:!0})],R.prototype,"configContext",2),c([u({type:String,attribute:"response-identifier"})],R.prototype,"responseIdentifier",2),c([u({reflect:!0,type:Boolean})],R.prototype,"disabled",2),c([u({reflect:!0,type:Boolean})],R.prototype,"readonly",2),c([u({type:String})],R.prototype,"name",2),c([u({type:String,attribute:"correct-response",reflect:!0})],R.prototype,"correctResponseAttr",1),c([u({type:Boolean,attribute:"show-correct-response",reflect:!0})],R.prototype,"showCorrectResponse",2),c([O("showCorrectResponse",{waitUntilFirstUpdate:!0})],R.prototype,"_handleShowCorrectResponseChange",2),c([u({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],R.prototype,"showFullCorrectResponse",2),c([O("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],R.prototype,"_handleShowFullCorrectResponseChange",2),c([u({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],R.prototype,"showCandidateCorrection",2),c([O("showCandidateCorrection",{waitUntilFirstUpdate:!0})],R.prototype,"_handleShowCandidateCorrectionChange",2),c([C()],R.prototype,"_isFullCorrectResponse",2),c([C()],R.prototype,"_correctResponse",2);var Ot=class extends b{render(){return f`<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 S=class extends b{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(s=>s.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(s=>s.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(s=>s.value),cardinality:"ordered",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",i=this.context?.variables?.find(s=>s.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=y`
4
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),nn=/'/g,an=/"/g,dn=/^(?:script|style|textarea|title)$/i,Us=o=>(r,...e)=>({_$litType$:o,strings:r,values:e}),f=Us(1),Ii=Us(2),Tc=Us(3),z=Symbol.for("lit-noChange"),L=Symbol.for("lit-nothing"),ln=new WeakMap,ct=dt.createTreeWalker(dt,129);function pn(o,r){if(!zs(o)||!o.hasOwnProperty("raw"))throw Error("invalid template strings array");return rn!==void 0?rn.createHTML(r):r}var un=(o,r)=>{let e=o.length-1,t=[],i,s=r===2?"<svg>":r===3?"<math>":"",n=mr;for(let a=0;a<e;a++){let l=o[a],d,p,m=-1,h=0;for(;h<l.length&&(n.lastIndex=h,p=n.exec(l),p!==null);)h=n.lastIndex,n===mr?p[1]==="!--"?n=sn:p[1]!==void 0?n=on:p[2]!==void 0?(dn.test(p[2])&&(i=RegExp("</"+p[2],"g")),n=lt):p[3]!==void 0&&(n=lt):n===lt?p[0]===">"?(n=i??mr,m=-1):p[1]===void 0?m=-2:(m=n.lastIndex-p[2].length,d=p[1],n=p[3]===void 0?lt:p[3]==='"'?an:nn):n===an||n===nn?n=lt:n===sn||n===on?n=mr:(n=lt,i=void 0);let g=n===lt&&o[a+1].startsWith("/>")?" ":"";s+=n===mr?l+xl:m>=0?(t.push(d),l.slice(0,m)+Ds+l.slice(m)+Ie+g):l+Ie+(m===-2?a:g)}return[pn(o,s+(o[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},gr=class o{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let s=0,n=0,a=r.length-1,l=this.parts,[d,p]=un(r,e);if(this.el=o.createElement(d,t),ct.currentNode=this.el.content,e===2||e===3){let m=this.el.content.firstChild;m.replaceWith(...m.childNodes)}for(;(i=ct.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let m of i.getAttributeNames())if(m.endsWith(Ds)){let h=p[n++],g=i.getAttribute(m).split(Ie),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:s,name:v[2],strings:g,ctor:v[1]==="."?Ti:v[1]==="?"?Ai:v[1]==="@"?Si:ut}),i.removeAttribute(m)}else m.startsWith(Ie)&&(l.push({type:6,index:s}),i.removeAttribute(m));if(dn.test(i.tagName)){let m=i.textContent.split(Ie),h=m.length-1;if(h>0){i.textContent=wi?wi.emptyScript:"";for(let g=0;g<h;g++)i.append(m[g],hr()),ct.nextNode(),l.push({type:2,index:++s});i.append(m[h],hr())}}}else if(i.nodeType===8)if(i.data===Hs)l.push({type:2,index:s});else{let m=-1;for(;(m=i.data.indexOf(Ie,m+1))!==-1;)l.push({type:7,index:s}),m+=Ie.length-1}s++}}static createElement(r,e){let t=dt.createElement("template");return t.innerHTML=r,t}};function pt(o,r,e=o,t){if(r===z)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,s=fr(r)?void 0:r._$litDirective$;return i?.constructor!==s&&(i?._$AO?.(!1),s===void 0?i=void 0:(i=new s(o),i._$AT(o,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=pt(o,i._$AS(o,r.values),i,t)),r}var Ei=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??dt).importNode(e,!0);ct.currentNode=i;let s=ct.nextNode(),n=0,a=0,l=t[0];for(;l!==void 0;){if(n===l.index){let d;l.type===2?d=new Et(s,s.nextSibling,this,r):l.type===1?d=new l.ctor(s,l.name,l.strings,this,r):l.type===6&&(d=new Mi(s,this,r)),this._$AV.push(d),l=t[++a]}n!==l?.index&&(s=ct.nextNode(),n++)}return ct.currentNode=dt,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++}},Et=class o{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=L,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=pt(this,r,e),fr(r)?r===L||r==null||r===""?(this._$AH!==L&&this._$AR(),this._$AH=L):r!==this._$AH&&r!==z&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):cn(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!==L&&fr(this._$AH)?this._$AA.nextSibling.data=r:this.T(dt.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=gr.createElement(pn(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let s=new Ei(i,this),n=s.u(this.options);s.p(e),this.T(n),this._$AH=s}}_$AC(r){let e=ln.get(r.strings);return e===void 0&&ln.set(r.strings,e=new gr(r)),e}k(r){zs(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let s of r)i===e.length?e.push(t=new o(this.O(hr()),this.O(hr()),this,this.options)):t=e[i],t._$AI(s),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))}},ut=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,s){this.type=1,this._$AH=L,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=s,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=L}_$AI(r,e=this,t,i){let s=this.strings,n=!1;if(s===void 0)r=pt(this,r,e,0),n=!fr(r)||r!==this._$AH&&r!==z,n&&(this._$AH=r);else{let a=r,l,d;for(r=s[0],l=0;l<s.length-1;l++)d=pt(this,a[t+l],e,l),d===z&&(d=this._$AH[l]),n||=!fr(d)||d!==this._$AH[l],d===L?r=L:r!==L&&(r+=(d??"")+s[l+1]),this._$AH[l]=d}n&&!i&&this.j(r)}j(r){r===L?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},Ti=class extends ut{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===L?void 0:r}},Ai=class extends ut{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==L)}},Si=class extends ut{constructor(r,e,t,i,s){super(r,e,t,i,s),this.type=5}_$AI(r,e=this){if((r=pt(this,r,e,0)??L)===z)return;let t=this._$AH,i=r===L&&t!==L||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,s=r!==L&&(t===L||i);i&&this.element.removeEventListener(this.name,this,t),s&&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)}},Mi=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){pt(this,r)}},W={M:Ds,P:Ie,A:Hs,C:1,L:un,R:Ei,D:cn,V:pt,I:Et,H:ut,N:Ai,U:Si,B:Ti,F:Mi},ql=ki.litHtmlPolyfillSupport;ql?.(gr,Et),(ki.litHtmlVersions??=[]).push("3.3.1");var Bs=(o,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let s=e?.renderBefore??null;t._$litPart$=i=new Et(r.insertBefore(hr(),s),s,void 0,e??{})}return i._$AI(o),i};var Fs=globalThis,b=class extends ke{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=Bs(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return z}};b._$litElement$=!0,b.finalized=!0,Fs.litElementHydrateSupport?.({LitElement:b});var Cl=Fs.litElementPolyfillSupport;Cl?.({LitElement:b});(Fs.litElementVersions??=[]).push("4.2.1");var C=o=>(r,e)=>{e!==void 0?e.addInitializer((()=>{customElements.define(o,r)})):customElements.define(o,r)};var wl={attribute:!0,type:String,converter:pr,reflect:!1,hasChanged:Ci},El=(o=wl,r,e)=>{let{kind:t,metadata:i}=e,s=globalThis.litPropertyMetadata.get(i);if(s===void 0&&globalThis.litPropertyMetadata.set(i,s=new Map),t==="setter"&&((o=Object.create(o)).wrapped=!0),s.set(e.name,o),t==="accessor"){let{name:n}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(n,l,o)},init(a){return a!==void 0&&this.C(n,void 0,o,a),a}}}if(t==="setter"){let{name:n}=e;return function(a){let l=this[n];r.call(this,a),this.requestUpdate(n,l,o)}}throw Error("Unsupported decorator location: "+t)};function u(o){return(r,e)=>typeof e=="object"?El(o,r,e):((t,i,s)=>{let n=i.hasOwnProperty(s);return i.constructor.createProperty(s,t),n?Object.getOwnPropertyDescriptor(i,s):void 0})(o,r,e)}function w(o){return u({...o,state:!0,attribute:!1})}var ze=(o,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(o,r,e),e);function Tt(o,r){return(e,t,i)=>{let s=n=>n.renderRoot?.querySelector(o)??null;if(r){let{get:n,set:a}=typeof t=="object"?e:i??(()=>{let l=Symbol();return{get(){return this[l]},set(d){this[l]=d}}})();return ze(e,t,{get(){let l=n.call(this);return l===void 0&&(l=s(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return ze(e,t,{get(){return s(this)}})}}function mn(o){return(r,e)=>{let{slot:t,selector:i}=o??{},s="slot"+(t?`[name=${t}]`:":not([name])");return ze(r,e,{get(){let n=this.renderRoot?.querySelector(s),a=n?.assignedElements(o)??[];return i===void 0?a:a.filter((l=>l.matches(i)))}})}}function hn(o,r,e){Array.from(o.getElementsByTagName("*")).filter(s=>s.localName===r||s.localName?.toLowerCase()===r.toLowerCase()).forEach(s=>{let n=`${r}-${e}`,a=gn(s,n);s.replaceWith(a)})}function fn(o,r){o.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let s=i.slice(`${r}:`.length),n=`${e.nodeName}-${s}`,a=gn(e,n);e.replaceWith(a)}})})}function gn(o,r){let e=o.ownerDocument.createElement(r);for(let t of o.attributes)e.setAttribute(t.name,t.value);for(;o.firstChild;)e.appendChild(o.firstChild);return e}function bn(o){let r=[];return o.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),i=e.getAttribute("href"),s=e.getAttribute("category");r.push({identifier:t,href:i,category:s})}),r}function At(o,r){return fetch(o,{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 St(o){return new DOMParser().parseFromString(o,"text/xml")}function vn(o,r){if(o.nodeType===Node.ELEMENT_NODE){let e=o,t=r.createElement(e.localName);for(let i=0;i<e.attributes.length;i++){let s=e.attributes[i];t.setAttribute(s.localName,s.value)}for(let i=0;i<e.childNodes.length;i++)t.appendChild(vn(e.childNodes[i],r));return t}return o.cloneNode(!1)}function Mt(o){let r=document.createDocumentFragment();for(let e=0;e<o.childNodes.length;e++)r.appendChild(vn(o.childNodes[e],document));return r}function kt(o,r){r.endsWith("/")||(r+="/"),o.querySelectorAll("*").forEach(t=>{for(let i of["src","href"]){let s=t.getAttribute(i)?.trim();if(s&&!/^(data:|https?:|blob:)/.test(s)){let n=r+encodeURI(s);t.setAttribute(i,n)}}})}function yn(o){o.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function xn(o){o.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function qn(o){switch(o){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 ve=(o=!1)=>{let r,e="",t={load(i,s){e=i;let n=encodeURI(i);return o&&sessionStorage.getItem(n)?Promise.resolve(t.parse(sessionStorage.getItem(n))):At(i,s).then(a=>(r=a,t.shuffleInteractions(),o&&sessionStorage.setItem(n,new XMLSerializer().serializeToString(r)),t))},parse(i){return r=St(i),t},path:i=>(kt(r,i),e=null,t),fn(i){return i(r),t},pciHooks(i){let s=["hook","module"],n=i.substring(0,i.lastIndexOf("/"));for(let a of s)r.querySelectorAll("["+a+"]").forEach(d=>{let p=d.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(d.setAttribute("base-url",i),d.setAttribute("module",n+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,s,n="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(n);if(l.length===0)return t;let d=null,p=null,m=async()=>{if(d===null)try{d=await s(i,"/modules/module_resolution.js")}catch{d=null}if(p===null)try{p=await s(i,"/modules/fallback_module_resolution.js")}catch{p=null}};for(let h of Array.from(l)){h.setAttribute("data-base-url",i);let g=h.getAttribute("custom-interaction-type-identifier");g&&a.includes(g)&&(g=g+a.length,h.setAttribute("custom-interaction-type-identifier",g),a.push(g)),g&&a.push(g);let v=h.querySelector("qti-interaction-modules");if(v&&v.getAttribute("primary-configuration")){await m();let E=v.getAttribute("primary-configuration");if(E)try{let A=await s(i,`/${E}`),q=Array.from(v.querySelectorAll("qti-interaction-module"));for(let k of q){let P=k.getAttribute("id");if(P&&A.paths&&A.paths[P]){let H=A.paths[P],Z=Array.isArray(H)?H[0]:H;if(k.setAttribute("primary-path",Z),p&&p.paths&&p.paths[P]){let F=p.paths[P];Array.isArray(F)?k.setAttribute("fallback-path",F[0]):k.setAttribute("fallback-path",F)}}}if(A.paths){for(let k in A.paths)if(!v.querySelector(`qti-interaction-module[id="${k}"]`)){let H=r.createElement("qti-interaction-module");H.setAttribute("id",k);let Z=Array.isArray(A.paths[k])?A.paths[k][0]:A.paths[k];if(H.setAttribute("primary-path",Z),p&&p.paths&&p.paths[k]){let F=p.paths[k];Array.isArray(F)?H.setAttribute("fallback-path",F[0]):H.setAttribute("fallback-path",F)}v.appendChild(H)}}A.urlArgs&&v.setAttribute("url-args",A.urlArgs)}catch(A){console.warn(`Failed to load primary configuration: ${E}`,A)}}else if(await m(),d){h.querySelector("qti-interaction-modules")===null?(v=r.createElement("qti-interaction-modules"),h.appendChild(v)):v=h.querySelector("qti-interaction-modules");for(let E in d.paths){let A=d.paths[E],q="";p&&p.paths&&p.paths[E]&&(q=p.paths[E]);let k=Array.isArray(A)?A:[A],P=Array.isArray(q)?q:[q],H=k.map((Z,F)=>{let ol=P.length>F?P[F]:"";return{primaryPath:Z,fallbackPath:ol}});for(let Z of P)H.some(F=>F.fallbackPath===Z)||H.push({primaryPath:k.length>0?k[0]:Z,fallbackPath:Z});for(let Z of H){let F=r.createElement("qti-interaction-module");Z.fallbackPath&&F.setAttribute("fallback-path",Z.fallbackPath),F.setAttribute("id",E),F.setAttribute("primary-path",Z.primaryPath),v&&v.appendChild(F)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),s=Array.from(i).filter(n=>n.tagName?.toLowerCase().endsWith("-interaction"));for(let n of s){let a=qn(n.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let d of l){let p=Array.from(n.querySelectorAll(d)),m=p.map((q,k)=>({element:q,fixed:q.hasAttribute("fixed")&&q.getAttribute("fixed")==="true",originalOrder:k})).filter(q=>q.fixed),h=p.filter(q=>!q.hasAttribute("fixed")||q.getAttribute("fixed")!=="true");if(h.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;let g=[...h],v=!1,E=0;for(;!v&&E<20;){E++;for(let q=h.length-1;q>0;q--){let k=Math.floor(Math.random()*(q+1));[h[q],h[k]]=[h[k],h[q]]}v=!h.every((q,k)=>q===g[k])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;n.removeAttribute("shuffle");let A=0;for(let q of h)q.parentElement.insertBefore(q,m[A]?.element),A++;for(let q of m)q.element.parentElement.insertBefore(q.element,h[q.originalOrder])}}return t},extendElementName:(i,s)=>(hn(r,i,s),t),extendElementsWithClass:(i="extend")=>(fn(r,i),t),customInteraction(i,s){let n=r.querySelector("qti-custom-interaction"),a=n.querySelector("object");return n.setAttribute("data-base-ref",i),n.setAttribute("data-base-item",i+s),n.setAttribute("data",a.getAttribute("data")),n.setAttribute("width",a.getAttribute("width")),n.setAttribute("height",a.getAttribute("height")),n.removeChild(a),t},convertCDATAtoComment(){return yn(r),t},stripStyleSheets(){return xn(r),t},html(){return e!==null&&kt(r,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(Mt(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return e!==null&&kt(r,e.substring(0,e.lastIndexOf("/"))),Mt(r)},xmlDoc(){return r}};return t};var Cn=()=>{let o,r={async load(e,t){return new Promise(i=>{At(e,t).then(s=>(o=s,i(r)))})},parse(e){o=St(e)},assessmentTest(){let e=o.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var It=()=>{let o,r={async load(e,t){return new Promise((i,s)=>{At(e,t).then(n=>(o=n,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return o=St(e),r},path:e=>(kt(o,e),r),fn(e){return e(o),r},items(){return bn(o)},html(){return new XMLSerializer().serializeToString(Mt(o))},xml(){return new XMLSerializer().serializeToString(o)},htmlDoc(){return Mt(o)},xmlDoc(){return o}};return r};var wn=o=>{class r extends o{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,s){let n=s||this._getDefaultNavigationId(i);n&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_bindEventHandlers(){this.addEventListener("qti-request-navigation",this._handleNavigationRequest.bind(this)),this.addEventListener("qti-assessment-test-connected",this._handleTestConnected.bind(this)),this.addEventListener("qti-assessment-item-connected",this._handleItemConnected.bind(this)),this.addEventListener("qti-assessment-stimulus-ref-connected",this._handleStimulusRefConnected.bind(this))}_handleTestConnected(i){this._testElement=i.detail,this._initializeNavigation()}_handleItemConnected(i){let s=i.detail;this._loadingState.connectedItems++;let n=s.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=n.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:s,item:n}=i;if(console.info("Stimulus ref connected:",{identifier:s.identifier,href:s.href,item:n.identifier}),this._loadedStimulusHrefs.has(s.href)){console.info("Stimulus already loaded, skipping:",s.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(s.href)){console.info("Stimulus already loading, skipping duplicate:",s.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(s.href),console.info("Starting stimulus load:",s.href);try{await this._loadStimulusRef(s,n),this._loadedStimulusHrefs.add(s.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",s.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${s.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(s.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 s=++this._navigationId,n=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=n,await this._executeNavigation(i.type,i.id,s,n)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===n&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,s,n){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,s,n))}async _executeNavigation(i,s,n,a){i==="item"?await this._navigateToItem(s,n,a):await this._navigateToSection(s,n,a)}async _navigateToItem(i,s,n){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],s,n),await this._waitForLoadingComplete(s,n),!this._isStaleNavigation(s,n)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,s,n){let l=this._findSection(i)?.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:l,navSectionId:i,navItemRefId:null};let d=this._getSectionItemIds(i);this._resetLoadingState(),this._loadingState.expectedItems=d.length,await this._loadItems(d,s,n),await this._waitForLoadingComplete(s,n),!this._isStaleNavigation(s,n)&&this._dispatchTestLoaded(this._loadResults)}_resetLoadingState(){this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1},this._loadedStimulusHrefs.clear(),this._loadingStimulusHrefs.clear()}_checkLoadingComplete(){let i=this._loadingState.connectedItems>=this._loadingState.expectedItems,s=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;i&&s&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(i,s){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(i,s))return;await new Promise(n=>setTimeout(n,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,s){console.info("Loading stimulus:",i.href);let n=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",n?"has content":"no content"),this._applyStimulusContent(n,i,s)}_applyStimulusContent(i,s,n){if(!i){console.warn("No stimulus content to apply");return}let a=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");if(console.info(`Found ${a.length} stimulus elements to apply for ${s.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],d=document.querySelector(`qti-assessment-item[identifier="${n.identifier}"] [data-stimulus-idref="${s.identifier}"]`);if(d)l.push(d),console.info("Found specific target:",d);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${s.identifier}"]`));if(p.length>0)l=p,console.info("Found targets by identifier:",p.length);else{let m=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=m,console.info("Using fallback targets:",m.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,m)=>{p.innerHTML="";let h=Array.from(a).map(g=>g.cloneNode(!0));p.append(...h),console.info(`Applied stimulus content to target ${m+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,s,n){if(!this._testElement||i.length===0)return;let a=i.map(p=>this._findItemRef(p));this._clearLoadedItems(),this._clearStimulusRef();let d=(await Promise.all(a.map(p=>this._loadSingleItem(p,s,n)))).filter(Boolean);this._isStaleNavigation(s,n)||(d.forEach(({itemRef:p,doc:m})=>{p&&m&&(p.xmlDoc=m)}),d.forEach(({itemRef:p})=>{let m=p?.identifier;if(!p||!m)return;let h=this.testContext.items.find(g=>g.identifier===m)?.state;h!==void 0&&p.updateComplete.then(()=>{let g=p.assessmentItem;g&&(g.state=h)})}),this._loadResults=d)}async _loadSingleItem(i,s,n){try{let a=await ve(this.cacheTransform).load(i.href,n.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(s,n)?null:{itemRef:i,doc:a.htmlDoc()}}catch(a){if(a.name==="AbortError")throw console.info(`Item load for ${i.identifier} was aborted`),a;return console.warn(`Failed to load item ${i.identifier}:`,a),null}}async _loadStimulus(i){return(await ve().load(i,this._activeController?.signal)).htmlDoc()}_findItemRef(i){let s=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);if(!s)throw new Error(`Item with identifier "${i}" not found`);return s}_findSection(i){return this._testElement?.querySelector(`qti-assessment-section[identifier="${i}"]`)||null}_updateSessionContext(i,s){let n=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:n,navSectionId:a,navItemRefId:s}}_getSectionItemIds(i){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${i}"] > qti-assessment-item-ref`)).map(s=>s.identifier).filter(Boolean)}_clearLoadedItems(){let i=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(i||[]).forEach(s=>{s.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(i=>i.innerHTML="")}_isStaleNavigation(i,s){return s.signal.aborted||i!==this._navigationId}_createNavigationError(i,s,n){return{message:i.message||`Failed to load ${s}: ${n}`,details:i,itemId:s==="item"?n:void 0,sectionId:s==="section"?n:void 0}}_dispatchLoadingStarted(i,s){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:i,id:s},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(i,s){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:i,id:s},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:s})=>({identifier:s?.identifier,element:s})),bubbles:!0,composed:!0}))})}}return c([u({type:String})],r.prototype,"navigate",2),c([u({type:Boolean,attribute:"cache-transform"})],r.prototype,"cacheTransform",2),c([u({type:Number})],r.prototype,"requestTimeout",2),c([u({attribute:!1})],r.prototype,"postLoadTransformCallback",2),c([u({attribute:!1})],r.prototype,"postLoadTestTransformCallback",2),r};var En=o=>{class r extends o{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",i=>{this.sessionContext={...this.sessionContext,view:i.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",i=>{this._updateElementView(),this._setCorrectResponseVisibility(i.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(n=>{n.classList.toggle("show",n.getAttribute("view")===this.sessionContext.view)});let s=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;s&&s.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this.sessionContext.view==="scorer")}}return r};var Ue=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 Rt=class{constructor(r,e,t,i){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(s,n)=>{this.unsubscribe&&(this.unsubscribe!==n&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=s,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(s,n)),this.unsubscribe=n},this.host=r,e.context!==void 0){let s=e;this.context=s.context,this.callback=s.callback,this.subscribe=s.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 Ue(this.context,this.host,this.t,this.subscribe))}};var Ri=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 js=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},_t=class extends Ri{constructor(r,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=i=>{if(i.context!==this.context)return;let s=i.contextTarget??i.composedPath()[0];s!==this.host&&(i.stopPropagation(),this.addCallback(i.callback,s,i.subscribe))},this.onProviderRequest=i=>{if(i.context!==this.context||(i.contextTarget??i.composedPath()[0])===this.host)return;let s=new Set;for(let[n,{consumerHost:a}]of this.subscriptions)s.has(n)||(s.add(n),a.dispatchEvent(new Ue(this.context,a,n,!0)));i.stopPropagation()},this.host=r,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new js(this.context,this.host))}};function ee({context:o}){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 _t(this,{context:o,initialValue:i})),i}};{r.constructor.addInitializer((n=>{t.set(n,new _t(n,{context:o}))}));let i=Object.getOwnPropertyDescriptor(r,e),s;if(i===void 0){let n=new WeakMap;s={get(){return n.get(this)},set(a){t.get(this).setValue(a),n.set(this,a)},configurable:!0,enumerable:!0}}else{let n=i.set;s={...i,set(a){t.get(this).setValue(a),n?.call(this,a)}}}return void Object.defineProperty(r,e,s)}}}function M({context:o,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new Rt(this,{context:o,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new Rt(i,{context:o,callback:s=>{i[t]=s},subscribe:r})}))}}var Be=Symbol("computedItemContext");var N=Symbol("computedContext");var ae=Symbol("configContext");var Tn=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var D=Symbol("item");var Lt=Symbol("qtiContext");var Ws={view:"candidate"},Fe=Symbol("testContext");var Xs={items:[],testOutcomeVariables:[]},ye=Symbol("testContext");function _i(o,r){return(e,t)=>{let{connectedCallback:i,disconnectedCallback:s}=e;e.connectedCallback=function(){i.call(this);let n=this[t],a=m=>{let h=[],g=[];for(let q of m)q.type==="childList"&&(q.addedNodes.forEach(k=>{if(k.nodeType!==1)return;let P=k;P.matches?.(o)&&h.push(P),h.push(...P.querySelectorAll?.(o)??[])}),q.removedNodes.forEach(k=>{if(k.nodeType!==1)return;let P=k;P.matches?.(o)&&g.push(P),g.push(...P.querySelectorAll?.(o)??[])}));let v=q=>Array.from(new Set(q)),E=v(h),A=v(g);(E.length||A.length)&&n.call(this,E,A)},l=new MutationObserver(a);l.observe(this,{childList:!0,subtree:!0});let d=this.shadowRoot?new MutationObserver(a):null;d?.observe(this.shadowRoot,{childList:!0,subtree:!0}),this.__lqObservers=[l,d].filter(m=>!!m),(async()=>{r?.waitUntilFirstUpdate&&"updateComplete"in this&&await this.updateComplete;let m=[...this.querySelectorAll(o),...this.shadowRoot?.querySelectorAll(o)??[]];m.length&&n.call(this,m,[])})()},e.disconnectedCallback=function(){s.call(this),this.__lqObservers?.forEach(n=>n.disconnect()),this.__lqObservers=void 0}}}function O(o,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{let{update:s}=t,n=Array.isArray(o)?o:[o];t.update=function(a){n.forEach(l=>{let d=l;if(a.has(d)){let p=a.get(d),m=this[d];p!==m&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](p,m)}}),s.call(this,a)}}}var je={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},te=o=>(...r)=>({_$litDirective$:o,values:r}),xe=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:Tl}=W,Sn=o=>o===null||typeof o!="object"&&typeof o!="function";var Mn=o=>o.strings===void 0,An=()=>document.createComment(""),$t=(o,r,e)=>{let t=o._$AA.parentNode,i=r===void 0?o._$AB:r._$AA;if(e===void 0){let s=t.insertBefore(An(),i),n=t.insertBefore(An(),i);e=new Tl(s,n,o,o.options)}else{let s=e._$AB.nextSibling,n=e._$AM,a=n!==o;if(a){let l;e._$AQ?.(o),e._$AM=o,e._$AP!==void 0&&(l=o._$AU)!==n._$AU&&e._$AP(l)}if(s!==i||a){let l=e._$AA;for(;l!==s;){let d=l.nextSibling;t.insertBefore(l,i),l=d}}}return e},We=(o,r,e=o)=>(o._$AI(r,e),o),Al={},kn=(o,r=Al)=>o._$AH=r,In=o=>o._$AH,Li=o=>{o._$AR(),o._$AA.remove()};var br=(o,r)=>{let e=o._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),br(t,r);return!0},$i=o=>{let r,e;do{if((r=o._$AM)===void 0)break;e=r._$AN,e.delete(o),o=r}while(e?.size===0)},Rn=o=>{for(let r;r=o._$AM;o=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(o))break;e.add(o),kl(r)}};function Sl(o){this._$AN!==void 0?($i(this),this._$AM=o,Rn(this)):this._$AM=o}function Ml(o,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 s=e;s<t.length;s++)br(t[s],!1),$i(t[s]);else t!=null&&(br(t,!1),$i(t));else br(this,o)}var kl=o=>{o.type==je.CHILD&&(o._$AP??=Ml,o._$AQ??=Sl)},Xe=class extends xe{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),Rn(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(br(this,r),$i(this))}setValue(r){if(Mn(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 Gs=class extends Xe{constructor(){super(...arguments);this.prevData={}}render(e){return L}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},L}apply(e){let t=this.#e(e),{prevData:i,element:s}=this;for(let n in t){let a=t[n];a!==i[n]&&(a===!0?s.setAttribute(n,""):a===!1?s.removeAttribute(n):a!=null?s.setAttribute(n,String(a)):s.removeAttribute(n))}}groom(e){let{prevData:t,element:i}=this;if(!t)return;let s=e?this.#e(e):{};for(let n in t)(!s||!(n in s))&&i.removeAttribute(n)}#e(e){return Object.fromEntries(Object.entries(e).filter(([t,i])=>typeof i=="function"?!1:t==="max-choices"&&i===0?!0:!(i===""||i===null||i===void 0)))}},Op=te(Gs);var _n=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(_n||{}),R=class extends b{constructor(){super();this.disabled=!1;this.readonly=!1;this.showCorrectResponse=!1;this._handleShowCorrectResponseChange=(e,t)=>{this.toggleInternalCorrectResponse(t)};this.showFullCorrectResponse=!1;this._handleShowFullCorrectResponseChange=(e,t)=>{this.toggleFullCorrectResponse(t)};this.showCandidateCorrection=!1;this._handleShowCandidateCorrectionChange=(e,t)=>{this.toggleCandidateCorrection(t)};this._correctResponse=null;this._internals=this.attachInternals()}static{this.formAssociated=!0}get internals(){return this._internals}set correctResponseAttr(e){e===null?this._correctResponse=null:e.includes(",")?this._correctResponse=e.split(",").map(t=>t.trim()):this._correctResponse=e}get correctResponseAttr(){return this._correctResponse===null||this._correctResponse===void 0?null:Array.isArray(this._correctResponse)?this._correctResponse.join(","):this._correctResponse}get isFullCorrectResponse(){return this._isFullCorrectResponse}set isFullCorrectResponse(e){this._isFullCorrectResponse=e,e&&(this.disabled=!0,this.setAttribute("inert",""),this.setAttribute("response-identifier",this.responseIdentifier+"_cr"))}get correctResponse(){let e=this.responseVariable;return e?.correctResponse?e.correctResponse:this._correctResponse}set correctResponse(e){let t=this._correctResponse;this._correctResponse=e,e==null?this.removeAttribute("correct-response"):this.setAttribute("correct-response",Array.isArray(e)?e.join(","):e),this.requestUpdate("_correctResponse",t)}get correctness(){let e=this.correctResponse;if(!e)return null;let t=this.response;if(t==null||t===""||Array.isArray(t)&&t.length===0)return null;let i=Array.isArray(e)?e:[e],n=(Array.isArray(t)?t:[t]).filter(d=>d!=="");if(n.length===0)return null;let a=n.filter(d=>i.includes(d)).length,l=n.filter(d=>!i.includes(d)).length;return a===i.length&&l===0&&n.length===i.length?"correct":a>0&&(a<i.length||l>0)?"partially-correct":"incorrect"}get isInline(){return!1}get responseVariable(){if(!this._context?.variables)return;let e=this._context.variables.filter(i=>i.type==="response"),t=this.getAttribute("response-identifier");return e.find(i=>i.identifier===t)}toggleCorrectResponse(e){(this?.configContext?.correctResponseMode||"internal")==="full"?this.toggleFullCorrectResponse(e):this.toggleInternalCorrectResponse(e)}async toggleFullCorrectResponse(e){let t=this.nextSibling,i=t instanceof HTMLDivElement&&t?.classList.contains("full-correct-response"),s=this.correctResponse;if(!s)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(s)?[...s]:s}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}:{}}}))}};c([M({context:D,subscribe:!0})],R.prototype,"_context",2),c([M({context:ae,subscribe:!0})],R.prototype,"configContext",2),c([u({type:String,attribute:"response-identifier"})],R.prototype,"responseIdentifier",2),c([u({reflect:!0,type:Boolean})],R.prototype,"disabled",2),c([u({reflect:!0,type:Boolean})],R.prototype,"readonly",2),c([u({type:String})],R.prototype,"name",2),c([u({type:String,attribute:"correct-response",reflect:!0})],R.prototype,"correctResponseAttr",1),c([u({type:Boolean,attribute:"show-correct-response",reflect:!0})],R.prototype,"showCorrectResponse",2),c([O("showCorrectResponse",{waitUntilFirstUpdate:!0})],R.prototype,"_handleShowCorrectResponseChange",2),c([u({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],R.prototype,"showFullCorrectResponse",2),c([O("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],R.prototype,"_handleShowFullCorrectResponseChange",2),c([u({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],R.prototype,"showCandidateCorrection",2),c([O("showCandidateCorrection",{waitUntilFirstUpdate:!0})],R.prototype,"_handleShowCandidateCorrectionChange",2),c([w()],R.prototype,"_isFullCorrectResponse",2),c([w()],R.prototype,"_correctResponse",2);var Ot=class extends b{render(){return f`<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 S=class extends b{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(s=>s.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(s=>s.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(s=>s.value),cardinality:"ordered",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",i=this.context?.variables?.find(s=>s.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=y`
5
5
  slot {
6
6
  display: none;
7
7
  }
8
8
  `}render(){return f`<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")}};c([C()],S.prototype,"result",2),c([k({context:D,subscribe:!0}),C()],S.prototype,"context",2),c([k({context:Lt,subscribe:!0}),C()],S.prototype,"qtiContext",2);var le=class extends S{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Il=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),vr=o=>{if(typeof o=="string")return o;let r=Il();return r==="."?o.toLocaleString():o.toString().replace(".","").replace(r,".")};function Qs(o){return o==null}function Oi(o){return o.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var re=class extends b{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(r){let e=this._context.variables.find(i=>i.identifier===r)||null;if(this.outcomeIdentifier!==r||!e)return;let t=!1;Array.isArray(e.value)?t=e.value.includes(this.identifier):t=!Qs(this.identifier)&&!Qs(e?.value)&&this.identifier===e.value||!1,this.#e(t)}#e(r){this.showStatus=r&&this.showHide==="show"||!r&&this.showHide==="hide"?"on":"off"}};c([u({type:String,attribute:"show-hide"})],re.prototype,"showHide",2),c([u({type:String,attribute:"outcome-identifier"})],re.prototype,"outcomeIdentifier",2),c([u({type:String})],re.prototype,"identifier",2),c([u({type:String,attribute:!1})],re.prototype,"showStatus",2),c([k({context:D,subscribe:!0}),C()],re.prototype,"_context",2);var Ln=class extends b{};var X=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,s]=r.split(" ").map(Number),[n,...a]=e.split(","),l=a.map(Number);switch(n.toLowerCase()){case"circle":case"default":{let[d,p,m]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((i-d)**2+(s-p)**2)<=m}case"rect":{let[d,p,m,h]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):i>=d&&i<=m&&s>=p&&s<=h}case"ellipse":{let[d,p,m,h]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let g=(i-d)**2/m**2,v=(s-p)**2/h**2;return g+v<=1}case"poly":{if(l.length<6||l.length%2!==0)return console.warn(`Invalid polygon definition: ${e}`),!1;let d=[];for(let p=0;p<l.length;p+=2)d.push({x:l[p],y:l[p+1]});return this.isPointInPolygon({x:i,y:s},d)}default:return console.warn(`Unsupported shape type: ${n}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,s=e.length-1;i<e.length;s=i++){let n=e[i].x,a=e[i].y,l=e[s].x,d=e[s].y;a>r.y!=d>r.y&&r.x<(l-n)*(r.y-a)/(d-a)+n&&(t=!t)}return t}static compareSingleValues(r,e,t){switch(t){case"identifier":case"string":return r===e;case"integer":{let i=parseInt(r,10),s=parseInt(e,10);if(!isNaN(i)&&!isNaN(s))return i===s;console.error(`Cannot convert ${r} and/or ${e} to int.`);break}case"float":{let i=parseFloat(r),s=parseFloat(e);if(!isNaN(i)&&!isNaN(s))return i===s;console.error(`couldn't convert ${r} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=r.split(" ").sort(),s=e.split(" ").sort();if(i.length===2&&s.length===2)return t==="pair"&&(i.sort(),s.sort()),i.join(" ")===s.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${r} 2: ${e}`);break}}return!1}};var Ys=o=>{class r extends o{constructor(...i){super(...i);this.testContext=Xs;this.sessionContext=Ws;this._updateItemInTestContext=i=>{let s=i._context,n=s.identifier,a=s.variables,l=this.testContext.items.find(d=>d?.identifier===n);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${n} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(n,a);else{let d=[...i.variables];for(let p of l.variables){let m=d.find(h=>h.identifier===p.identifier);m?m.value=p.value:d.push(p)}i.variables=d}};this._initializeEventListeners()}updateItemVariables(i,s){let n=this.testContext.items.find(l=>l.identifier===i);n&&(n.variables=n.variables.map(l=>{let d=s.find(p=>p.identifier===l.identifier);return d?{...l,...d}:l}));let a=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=s)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=Xs,this.sessionContext=Ws,this.testContext&&this.testContext.items.length>0)return;this._testElement=i.detail;let s=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(n=>({href:n.href,identifier:n.identifier,category:n.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:s}}),this.addEventListener("qti-assessment-item-connected",i=>{let s=i.detail,n=s.closest("qti-assessment-item-ref")?.identifier;n&&(s.assessmentItemRefId=n),this._updateItemInTestContext(i.detail)}),this.addEventListener("qti-item-context-updated",i=>{this._updateItemVariablesInTestContext(i.detail.itemContext.identifier,i.detail.itemContext.variables,i.detail.itemContext.state)})}_updateItemVariablesInTestContext(i,s,n){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==i?a:{...a,variables:s.map(l=>{let d=a.variables.find(p=>p.identifier===l.identifier);return d?{...d,...l}:l}),...n!==void 0?{state:n?{...n}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return c([u({attribute:!1,type:Object}),ee({context:ye})],r.prototype,"testContext",2),c([u({attribute:!1,type:Object}),ee({context:Fe})],r.prototype,"sessionContext",2),r},$n=class extends Ys(b){};var On=o=>{class r extends o{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:s,value:n}=i.detail;this.updateOutcomeVariable(s,n),i.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,i){let s=this.getOutcome(t);if(!s){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(n=>n.identifier!==t?n:{...n,value:s.cardinality==="single"?i:[...n.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var Pi=class extends Cn(En(On(Ys(b)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return f`<slot></slot>`}};Pi=c([w("qti-test")],Pi);var Pn={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},Re=class extends b{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}};c([u({type:String})],Re.prototype,"category",2),c([u({type:String})],Re.prototype,"identifier",2),c([u({type:Boolean,converter:Pn})],Re.prototype,"required",2),c([u({type:Boolean,converter:Pn})],Re.prototype,"fixed",2),c([u({type:String})],Re.prototype,"href",2),c([u({type:Object,attribute:!1})],Re.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Re);var Js={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},_e=class extends b{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 f`<slot name="qti-rubric-block"></slot><slot></slot>`}};c([u({type:String})],_e.prototype,"identifier",2),c([u({type:String})],_e.prototype,"required",2),c([u({type:Boolean,converter:Js})],_e.prototype,"fixed",2),c([u({type:Boolean,converter:Js})],_e.prototype,"visible",2),c([u({type:Boolean,converter:Js,attribute:"keep-together"})],_e.prototype,"keepTogether",2),c([k({context:ye,subscribe:!0})],_e.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",_e);var yr,ht=class extends b{constructor(){super(...arguments);T(this,yr,"")}get title(){return x(this,yr)}set title(e){$(this,yr,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 f` <slot></slot>`}};yr=new WeakMap,c([u({type:String})],ht.prototype,"identifier",2),c([u({type:String})],ht.prototype,"title",1),c([k({context:ye,subscribe:!0})],ht.prototype,"_testContext",2),ht=c([w("qti-assessment-test")],ht);var xr,Le=class extends b{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";T(this,xr,"")}get title(){return x(this,xr)}set title(e){$(this,xr,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 f` <slot></slot>`}};xr=new WeakMap,c([u({type:String})],Le.prototype,"identifier",2),c([u({type:String})],Le.prototype,"class",2),c([u({type:String,attribute:"navigation-mode"})],Le.prototype,"navigationMode",2),c([u({type:String,attribute:"submission-mode"})],Le.prototype,"submissionMode",2),Le=c([w("qti-test-part")],Le);customElements.get("qti-test-part")||customElements.define("qti-test-part",Le);var qr,Pt,wr,Vt,ce,ue,Vn,Nn,Cr,Er,Tr,Ar,Sr,kr,Dn,Ks,ie=class extends b{constructor(){super(...arguments);T(this,ue);T(this,qr);T(this,Pt,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{x(this,ce).forEach(i=>i.disabled=t)};this._handleReadonlyChange=(e,t)=>x(this,ce).forEach(i=>i.readonly=t);this._context={variables:Tn};T(this,wr,{...this._context,variables:this._context.variables});T(this,Vt,[]);T(this,ce,[]);T(this,Cr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},$(this,wr,this._context),e.stopPropagation()});T(this,Er,e=>{e.stopImmediatePropagation();let t=e.detail;x(this,Vt).push(t),(Number(this._context.variables.find(s=>s.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});T(this,Tr,e=>{e.stopImmediatePropagation(),x(this,ce).push(e.detail.interactionElement)});T(this,Ar,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});T(this,Sr,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:i}=e.detail;this.updateOutcomeVariable(t,i),e.stopPropagation()});T(this,kr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:i,state:s}=e.detail;this.updateResponseVariable(t,i),s!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:s}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return x(this,qr)}set title(e){$(this,qr,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(s=>s.identifier===t.identifier);return i?{...t,...i,interpolationTable:t.interpolationTable}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let i=x(this,ce).find(s=>s.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&x(this,Vt).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 s=x(this,ce).find(n=>n.getAttribute("response-identifier")===t.responseIdentifier);s&&(s.response=t.response)}}render(){return f`<slot></slot>`}connectedCallback(){I(this,ue,Vn).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),I(this,ue,Dn).call(this)})}disconnectedCallback(){I(this,ue,Nn).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of x(this,ce))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of x(this,ce))t.toggleCandidateCorrection(e);document.querySelectorAll("item-show-candidate-correction").forEach(t=>{t.shown=e})}processResponse(e=!0,t=!0){this.validate(t),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(n=>n.identifier==="numAttempts")?.value+1).toString());let i=this.querySelector("qti-response-processing"),s=!!(i&&typeof i.process=="function");return s&&i.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",I(this,ue,Ks).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),s}resetResponses(){this._context=x(this,wr)}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",I(this,ue,Ks).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(s=>s.identifier!==e?s:{...s,value:i.cardinality==="single"||Array.isArray(t)?t:[t]})},x(this,Vt).forEach(s=>s.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(s=>s.identifier===e)?.value}}))}validate(e=!0){let t=x(this,ce).every(i=>i.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of x(this,ce))e.reportValidity()}};qr=new WeakMap,Pt=new WeakMap,wr=new WeakMap,Vt=new WeakMap,ce=new WeakMap,ue=new WeakSet,Vn=function(){this.addEventListener("qti-register-variable",x(this,Cr)),this.addEventListener("qti-register-feedback",x(this,Er)),this.addEventListener("qti-register-interaction",x(this,Tr)),this.addEventListener("end-attempt",x(this,Ar)),this.addEventListener("qti-set-outcome-value",x(this,Sr)),this.addEventListener("qti-interaction-response",x(this,kr))},Nn=function(){this.removeEventListener("qti-register-variable",x(this,Cr)),this.removeEventListener("qti-register-feedback",x(this,Er)),this.removeEventListener("qti-register-interaction",x(this,Tr)),this.removeEventListener("end-attempt",x(this,Ar)),this.removeEventListener("qti-set-outcome-value",x(this,Sr)),this.removeEventListener("qti-interaction-response",x(this,kr))},Cr=new WeakMap,Er=new WeakMap,Tr=new WeakMap,Ar=new WeakMap,Sr=new WeakMap,kr=new WeakMap,Dn=function(){$(this,Pt,this.querySelector("qti-template-processing")),x(this,Pt)&&x(this,Pt).process()},Ks=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},c([u({type:String})],ie.prototype,"identifier",2),c([u({type:String})],ie.prototype,"adaptive",2),c([u({type:String})],ie.prototype,"timeDependent",2),c([u({type:String})],ie.prototype,"title",1),c([u({type:Boolean})],ie.prototype,"disabled",2),c([O("disabled",{waitUntilFirstUpdate:!0})],ie.prototype,"_handleDisabledChange",2),c([u({type:Boolean})],ie.prototype,"readonly",2),c([O("readonly",{waitUntilFirstUpdate:!0})],ie.prototype,"_handleReadonlyChange",2),c([ee({context:D})],ie.prototype,"_context",2),ie=c([w("qti-assessment-item")],ie);var Zs=class o extends Event{constructor(e,t){super(o.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},Nt=class extends b{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new Zs(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 ve().load(this.href).then(i=>i.htmlDoc());if(t){let i=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...i)}}};c([u({type:String})],Nt.prototype,"identifier",2),c([u({type:String})],Nt.prototype,"href",2),Nt=c([w("qti-assessment-stimulus-ref")],Nt);var Vi=class extends b{};Vi=c([w("qti-companion-materials-info")],Vi);var Ir,Mr=class extends b{constructor(){super(...arguments);T(this,Ir)}render(){return f`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{$(this,Ir,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(s=>s.identifier===i)?.value??"",correct:i=>this._context?.variables.find(s=>s.identifier===i)?.correctResponse??""},t={getVariable:i=>this._context?.variables.find(s=>s.identifier===i),updateOutcomeVariable:(i,s)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:s}}))},updateResponseVariable:(i,s)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:i,response:s}}))}};return x(this,Ir).call(this,this._context,e,t)}};Ir=new WeakMap,c([k({context:D,subscribe:!0}),C()],Mr.prototype,"_context",2),Mr=c([w("qti-custom-operator")],Mr);var Rr=class extends re{render(){return f` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};Rr.styles=y`
9
+ <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};c([w()],S.prototype,"result",2),c([M({context:D,subscribe:!0}),w()],S.prototype,"context",2),c([M({context:Lt,subscribe:!0}),w()],S.prototype,"qtiContext",2);var le=class extends S{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Il=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),vr=o=>{if(typeof o=="string")return o;let r=Il();return r==="."?o.toLocaleString():o.toString().replace(".","").replace(r,".")};function Qs(o){return o==null}function Oi(o){return o.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var re=class extends b{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(r){let e=this._context.variables.find(i=>i.identifier===r)||null;if(this.outcomeIdentifier!==r||!e)return;let t=!1;Array.isArray(e.value)?t=e.value.includes(this.identifier):t=!Qs(this.identifier)&&!Qs(e?.value)&&this.identifier===e.value||!1,this.#e(t)}#e(r){this.showStatus=r&&this.showHide==="show"||!r&&this.showHide==="hide"?"on":"off"}};c([u({type:String,attribute:"show-hide"})],re.prototype,"showHide",2),c([u({type:String,attribute:"outcome-identifier"})],re.prototype,"outcomeIdentifier",2),c([u({type:String})],re.prototype,"identifier",2),c([u({type:String,attribute:!1})],re.prototype,"showStatus",2),c([M({context:D,subscribe:!0}),w()],re.prototype,"_context",2);var Ln=class extends b{};var X=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,s]=r.split(" ").map(Number),[n,...a]=e.split(","),l=a.map(Number);switch(n.toLowerCase()){case"circle":case"default":{let[d,p,m]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((i-d)**2+(s-p)**2)<=m}case"rect":{let[d,p,m,h]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):i>=d&&i<=m&&s>=p&&s<=h}case"ellipse":{let[d,p,m,h]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let g=(i-d)**2/m**2,v=(s-p)**2/h**2;return g+v<=1}case"poly":{if(l.length<6||l.length%2!==0)return console.warn(`Invalid polygon definition: ${e}`),!1;let d=[];for(let p=0;p<l.length;p+=2)d.push({x:l[p],y:l[p+1]});return this.isPointInPolygon({x:i,y:s},d)}default:return console.warn(`Unsupported shape type: ${n}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,s=e.length-1;i<e.length;s=i++){let n=e[i].x,a=e[i].y,l=e[s].x,d=e[s].y;a>r.y!=d>r.y&&r.x<(l-n)*(r.y-a)/(d-a)+n&&(t=!t)}return t}static compareSingleValues(r,e,t){switch(t){case"identifier":case"string":return r===e;case"integer":{let i=parseInt(r,10),s=parseInt(e,10);if(!isNaN(i)&&!isNaN(s))return i===s;console.error(`Cannot convert ${r} and/or ${e} to int.`);break}case"float":{let i=parseFloat(r),s=parseFloat(e);if(!isNaN(i)&&!isNaN(s))return i===s;console.error(`couldn't convert ${r} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=r.split(" ").sort(),s=e.split(" ").sort();if(i.length===2&&s.length===2)return t==="pair"&&(i.sort(),s.sort()),i.join(" ")===s.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${r} 2: ${e}`);break}}return!1}};var Ys=o=>{class r extends o{constructor(...i){super(...i);this.testContext=Xs;this.sessionContext=Ws;this._updateItemInTestContext=i=>{let s=i._context,n=s.identifier,a=s.variables,l=this.testContext.items.find(d=>d?.identifier===n);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${n} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(n,a);else{let d=[...i.variables];for(let p of l.variables){let m=d.find(h=>h.identifier===p.identifier);m?m.value=p.value:d.push(p)}i.variables=d}};this._initializeEventListeners()}updateItemVariables(i,s){let n=this.testContext.items.find(l=>l.identifier===i);n&&(n.variables=n.variables.map(l=>{let d=s.find(p=>p.identifier===l.identifier);return d?{...l,...d}:l}));let a=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=s)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=Xs,this.sessionContext=Ws,this.testContext&&this.testContext.items.length>0)return;this._testElement=i.detail;let s=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(n=>({href:n.href,identifier:n.identifier,category:n.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:s}}),this.addEventListener("qti-assessment-item-connected",i=>{let s=i.detail,n=s.closest("qti-assessment-item-ref")?.identifier;n&&(s.assessmentItemRefId=n),this._updateItemInTestContext(i.detail)}),this.addEventListener("qti-item-context-updated",i=>{this._updateItemVariablesInTestContext(i.detail.itemContext.identifier,i.detail.itemContext.variables,i.detail.itemContext.state)})}_updateItemVariablesInTestContext(i,s,n){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==i?a:{...a,variables:s.map(l=>{let d=a.variables.find(p=>p.identifier===l.identifier);return d?{...d,...l}:l}),...n!==void 0?{state:n?{...n}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return c([u({attribute:!1,type:Object}),ee({context:ye})],r.prototype,"testContext",2),c([u({attribute:!1,type:Object}),ee({context:Fe})],r.prototype,"sessionContext",2),r},$n=class extends Ys(b){};var On=o=>{class r extends o{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:s,value:n}=i.detail;this.updateOutcomeVariable(s,n),i.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,i){let s=this.getOutcome(t);if(!s){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(n=>n.identifier!==t?n:{...n,value:s.cardinality==="single"?i:[...n.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var Pi=class extends wn(En(On(Ys(b)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return f`<slot></slot>`}};Pi=c([C("qti-test")],Pi);var Pn={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},Re=class extends b{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}};c([u({type:String})],Re.prototype,"category",2),c([u({type:String})],Re.prototype,"identifier",2),c([u({type:Boolean,converter:Pn})],Re.prototype,"required",2),c([u({type:Boolean,converter:Pn})],Re.prototype,"fixed",2),c([u({type:String})],Re.prototype,"href",2),c([u({type:Object,attribute:!1})],Re.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Re);var Js={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},_e=class extends b{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 f`<slot name="qti-rubric-block"></slot><slot></slot>`}};c([u({type:String})],_e.prototype,"identifier",2),c([u({type:String})],_e.prototype,"required",2),c([u({type:Boolean,converter:Js})],_e.prototype,"fixed",2),c([u({type:Boolean,converter:Js})],_e.prototype,"visible",2),c([u({type:Boolean,converter:Js,attribute:"keep-together"})],_e.prototype,"keepTogether",2),c([M({context:ye,subscribe:!0})],_e.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",_e);var yr,ht=class extends b{constructor(){super(...arguments);T(this,yr,"")}get title(){return x(this,yr)}set title(e){$(this,yr,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 f` <slot></slot>`}};yr=new WeakMap,c([u({type:String})],ht.prototype,"identifier",2),c([u({type:String})],ht.prototype,"title",1),c([M({context:ye,subscribe:!0})],ht.prototype,"_testContext",2),ht=c([C("qti-assessment-test")],ht);var xr,Le=class extends b{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";T(this,xr,"")}get title(){return x(this,xr)}set title(e){$(this,xr,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 f` <slot></slot>`}};xr=new WeakMap,c([u({type:String})],Le.prototype,"identifier",2),c([u({type:String})],Le.prototype,"class",2),c([u({type:String,attribute:"navigation-mode"})],Le.prototype,"navigationMode",2),c([u({type:String,attribute:"submission-mode"})],Le.prototype,"submissionMode",2),Le=c([C("qti-test-part")],Le);customElements.get("qti-test-part")||customElements.define("qti-test-part",Le);var qr,Pt,Cr,Vt,ce,ue,Vn,Nn,wr,Er,Tr,Ar,Sr,Mr,Dn,Ks,ie=class extends b{constructor(){super(...arguments);T(this,ue);T(this,qr);T(this,Pt,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{x(this,ce).forEach(i=>i.disabled=t)};this._handleReadonlyChange=(e,t)=>x(this,ce).forEach(i=>i.readonly=t);this._context={variables:Tn};T(this,Cr,{...this._context,variables:this._context.variables});T(this,Vt,[]);T(this,ce,[]);T(this,wr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},$(this,Cr,this._context),e.stopPropagation()});T(this,Er,e=>{e.stopImmediatePropagation();let t=e.detail;x(this,Vt).push(t),(Number(this._context.variables.find(s=>s.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});T(this,Tr,e=>{e.stopImmediatePropagation(),x(this,ce).push(e.detail.interactionElement)});T(this,Ar,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});T(this,Sr,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:i}=e.detail;this.updateOutcomeVariable(t,i),e.stopPropagation()});T(this,Mr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:i,state:s}=e.detail;this.updateResponseVariable(t,i),s!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:s}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return x(this,qr)}set title(e){$(this,qr,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(s=>s.identifier===t.identifier);return i?{...t,...i,interpolationTable:t.interpolationTable}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let i=x(this,ce).find(s=>s.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&x(this,Vt).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 s=x(this,ce).find(n=>n.getAttribute("response-identifier")===t.responseIdentifier);s&&(s.response=t.response)}}render(){return f`<slot></slot>`}connectedCallback(){I(this,ue,Vn).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),I(this,ue,Dn).call(this)})}disconnectedCallback(){I(this,ue,Nn).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of x(this,ce))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of x(this,ce))t.toggleCandidateCorrection(e);document.querySelectorAll("item-show-candidate-correction").forEach(t=>{t.shown=e})}processResponse(e=!0,t=!0){this.validate(t),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(n=>n.identifier==="numAttempts")?.value+1).toString());let i=this.querySelector("qti-response-processing"),s=!!(i&&typeof i.process=="function");return s&&i.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",I(this,ue,Ks).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),s}resetResponses(){this._context=x(this,Cr)}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",I(this,ue,Ks).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(s=>s.identifier!==e?s:{...s,value:i.cardinality==="single"||Array.isArray(t)?t:[t]})},x(this,Vt).forEach(s=>s.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(s=>s.identifier===e)?.value}}))}validate(e=!0){let t=x(this,ce).every(i=>i.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of x(this,ce))e.reportValidity()}};qr=new WeakMap,Pt=new WeakMap,Cr=new WeakMap,Vt=new WeakMap,ce=new WeakMap,ue=new WeakSet,Vn=function(){this.addEventListener("qti-register-variable",x(this,wr)),this.addEventListener("qti-register-feedback",x(this,Er)),this.addEventListener("qti-register-interaction",x(this,Tr)),this.addEventListener("end-attempt",x(this,Ar)),this.addEventListener("qti-set-outcome-value",x(this,Sr)),this.addEventListener("qti-interaction-response",x(this,Mr))},Nn=function(){this.removeEventListener("qti-register-variable",x(this,wr)),this.removeEventListener("qti-register-feedback",x(this,Er)),this.removeEventListener("qti-register-interaction",x(this,Tr)),this.removeEventListener("end-attempt",x(this,Ar)),this.removeEventListener("qti-set-outcome-value",x(this,Sr)),this.removeEventListener("qti-interaction-response",x(this,Mr))},wr=new WeakMap,Er=new WeakMap,Tr=new WeakMap,Ar=new WeakMap,Sr=new WeakMap,Mr=new WeakMap,Dn=function(){$(this,Pt,this.querySelector("qti-template-processing")),x(this,Pt)&&x(this,Pt).process()},Ks=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},c([u({type:String})],ie.prototype,"identifier",2),c([u({type:String})],ie.prototype,"adaptive",2),c([u({type:String})],ie.prototype,"timeDependent",2),c([u({type:String})],ie.prototype,"title",1),c([u({type:Boolean})],ie.prototype,"disabled",2),c([O("disabled",{waitUntilFirstUpdate:!0})],ie.prototype,"_handleDisabledChange",2),c([u({type:Boolean})],ie.prototype,"readonly",2),c([O("readonly",{waitUntilFirstUpdate:!0})],ie.prototype,"_handleReadonlyChange",2),c([ee({context:D})],ie.prototype,"_context",2),ie=c([C("qti-assessment-item")],ie);var Zs=class o extends Event{constructor(e,t){super(o.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},Nt=class extends b{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new Zs(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 ve().load(this.href).then(i=>i.htmlDoc());if(t){let i=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...i)}}};c([u({type:String})],Nt.prototype,"identifier",2),c([u({type:String})],Nt.prototype,"href",2),Nt=c([C("qti-assessment-stimulus-ref")],Nt);var Vi=class extends b{};Vi=c([C("qti-companion-materials-info")],Vi);var Ir,kr=class extends b{constructor(){super(...arguments);T(this,Ir)}render(){return f`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{$(this,Ir,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(s=>s.identifier===i)?.value??"",correct:i=>this._context?.variables.find(s=>s.identifier===i)?.correctResponse??""},t={getVariable:i=>this._context?.variables.find(s=>s.identifier===i),updateOutcomeVariable:(i,s)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:s}}))},updateResponseVariable:(i,s)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:i,response:s}}))}};return x(this,Ir).call(this,this._context,e,t)}};Ir=new WeakMap,c([M({context:D,subscribe:!0}),w()],kr.prototype,"_context",2),kr=c([C("qti-custom-operator")],kr);var Rr=class extends re{render(){return f` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};Rr.styles=y`
10
10
  :host {
11
11
  display: block;
12
12
  }
@@ -16,14 +16,14 @@ Make sure to test your application with a production build as repeat registratio
16
16
  .off {
17
17
  display: none;
18
18
  }
19
- `,Rr=c([w("qti-feedback-block")],Rr);var qe=o=>o??L;var _r=class extends re{constructor(){super(...arguments);this.render=()=>f` <slot part="feedback" class="${qe(this.showStatus)}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};_r.styles=y`
19
+ `,Rr=c([C("qti-feedback-block")],Rr);var qe=o=>o??L;var _r=class extends re{constructor(){super(...arguments);this.render=()=>f` <slot part="feedback" class="${qe(this.showStatus)}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};_r.styles=y`
20
20
  .on {
21
21
  display: inline-block;
22
22
  }
23
23
  .off {
24
24
  display: none;
25
25
  }
26
- `,_r=c([w("qti-feedback-inline")],_r);var ft=class extends re{render(){return f`
26
+ `,_r=c([C("qti-feedback-inline")],_r);var ft=class extends re{render(){return f`
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;">
@@ -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
- `,ft=c([w("qti-modal-feedback")],ft);var Hn=y`
72
+ `,ft=c([C("qti-modal-feedback")],ft);var Hn=y`
73
73
  :host {
74
74
  display: block;
75
75
  }
76
- `;var Lr=class extends b{render(){return f`<slot part="qti-rubric-blocks" name="qti-rubric-block"></slot><slot></slot>`}};Lr.styles=Hn,Lr=c([w("qti-item-body")],Lr);var Ni=class extends b{render(){return f`<slot></slot>`}};Ni=c([w("qti-content-body")],Ni);var we=class extends b{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 f`<slot></slot>`}};we.styles=y`
76
+ `;var Lr=class extends b{render(){return f`<slot part="qti-rubric-blocks" name="qti-rubric-block"></slot><slot></slot>`}};Lr.styles=Hn,Lr=c([C("qti-item-body")],Lr);var Ni=class extends b{render(){return f`<slot></slot>`}};Ni=c([C("qti-content-body")],Ni);var Ce=class extends b{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 f`<slot></slot>`}};Ce.styles=y`
77
77
  :host {
78
78
  display: block;
79
79
  }
80
- `,c([u({type:String})],we.prototype,"id",2),c([u({type:String})],we.prototype,"use",2),c([u({type:String})],we.prototype,"view",2),c([u({type:String,attribute:"class"})],we.prototype,"classNames",2),c([O("classNames",{waitUntilFirstUpdate:!0})],we.prototype,"handleclassNamesChange",1),we=c([w("qti-rubric-block")],we);var se,$r,eo,Di=class extends b{constructor(){super(...arguments);T(this,$r);T(this,se,null)}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(i=>i.text()).then(i=>{let s=I(this,$r,eo).call(this,i);$(this,se,document.createElement("style")),x(this,se).media="screen",x(this,se).textContent=`@scope {${s}}`,this.parentElement?this.parentElement.appendChild(x(this,se)):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=I(this,$r,eo).call(this,this.textContent);$(this,se,document.createElement("style")),x(this,se).media="screen",x(this,se).textContent=`@scope {${i}}`,this.parentElement?this.parentElement.appendChild(x(this,se)):console.warn("No parent element to append the scoped stylesheet to.")}}disconnectedCallback(){if(x(this,se))try{x(this,se).remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};se=new WeakMap,$r=new WeakSet,eo=function(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()},Di=c([w("qti-stylesheet")],Di);var Ge,zn,Un,Bn,$e=class extends Ot{constructor(){super(...arguments);T(this,Ge)}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return f`${JSON.stringify(e,null,2)}`}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={baseType:this.baseType,identifier:this.identifier,correctResponse:x(this,Ge,zn),cardinality:this.cardinality||"single",mapping:x(this,Ge,Un),defaultValue:e,areaMapping:x(this,Ge,Bn),value:null,type:"response",candidateResponse:null};t.value=e,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};Ge=new WeakSet,zn=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 s=0;s<i.length;s++)e.push(i[s].textContent.trim()),i[s].remove()}}return e},Un=function(){let e=this.querySelector("qti-mapping"),t=parseFloat(e?.getAttribute("lower-bound")),i=parseFloat(e?.getAttribute("upper-bound"));return{defaultValue:Number(e?.getAttribute("default-value"))||0,lowerBound:isNaN(t)?null:t,upperBound:isNaN(i)?null:i,mapEntries:Array.from(e?.querySelectorAll("qti-map-entry")||[]).map(n=>({mapKey:n.getAttribute("map-key")||"",mappedValue:Number(n.getAttribute("mapped-value"))||0,caseSensitive:n.hasAttribute("case-sensitive")?n.getAttribute("case-sensitive")!=="false":!1}))}},Bn=function(){let e=this.querySelector("qti-area-mapping"),t=Number(e?.getAttribute("default-value"))||0,i=parseFloat(e?.getAttribute("lower-bound")),s=parseFloat(e?.getAttribute("upper-bound")),n=Array.from(e?.querySelectorAll("qti-area-map-entry")||[]).map(a=>({shape:a.getAttribute("shape")||"default",coords:a.getAttribute("coords")||"",mappedValue:Number(a.getAttribute("mapped-value"))||0,defaultValue:Number(a.getAttribute("default-value"))||0}));return{defaultValue:t,lowerBound:isNaN(i)?null:i,upperBound:isNaN(s)?null:s,areaMapEntries:n}},$e.styles=[y`
80
+ `,c([u({type:String})],Ce.prototype,"id",2),c([u({type:String})],Ce.prototype,"use",2),c([u({type:String})],Ce.prototype,"view",2),c([u({type:String,attribute:"class"})],Ce.prototype,"classNames",2),c([O("classNames",{waitUntilFirstUpdate:!0})],Ce.prototype,"handleclassNamesChange",1),Ce=c([C("qti-rubric-block")],Ce);var se,$r,eo,Di=class extends b{constructor(){super(...arguments);T(this,$r);T(this,se,null)}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(i=>i.text()).then(i=>{let s=I(this,$r,eo).call(this,i);$(this,se,document.createElement("style")),x(this,se).media="screen",x(this,se).textContent=`@scope {${s}}`,this.parentElement?this.parentElement.appendChild(x(this,se)):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=I(this,$r,eo).call(this,this.textContent);$(this,se,document.createElement("style")),x(this,se).media="screen",x(this,se).textContent=`@scope {${i}}`,this.parentElement?this.parentElement.appendChild(x(this,se)):console.warn("No parent element to append the scoped stylesheet to.")}}disconnectedCallback(){if(x(this,se))try{x(this,se).remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};se=new WeakMap,$r=new WeakSet,eo=function(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()},Di=c([C("qti-stylesheet")],Di);var Ge,zn,Un,Bn,$e=class extends Ot{constructor(){super(...arguments);T(this,Ge)}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return f`${JSON.stringify(e,null,2)}`}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={baseType:this.baseType,identifier:this.identifier,correctResponse:x(this,Ge,zn),cardinality:this.cardinality||"single",mapping:x(this,Ge,Un),defaultValue:e,areaMapping:x(this,Ge,Bn),value:null,type:"response",candidateResponse:null};t.value=e,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};Ge=new WeakSet,zn=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 s=0;s<i.length;s++)e.push(i[s].textContent.trim()),i[s].remove()}}return e},Un=function(){let e=this.querySelector("qti-mapping"),t=parseFloat(e?.getAttribute("lower-bound")),i=parseFloat(e?.getAttribute("upper-bound"));return{defaultValue:Number(e?.getAttribute("default-value"))||0,lowerBound:isNaN(t)?null:t,upperBound:isNaN(i)?null:i,mapEntries:Array.from(e?.querySelectorAll("qti-map-entry")||[]).map(n=>({mapKey:n.getAttribute("map-key")||"",mappedValue:Number(n.getAttribute("mapped-value"))||0,caseSensitive:n.hasAttribute("case-sensitive")?n.getAttribute("case-sensitive")!=="false":!1}))}},Bn=function(){let e=this.querySelector("qti-area-mapping"),t=Number(e?.getAttribute("default-value"))||0,i=parseFloat(e?.getAttribute("lower-bound")),s=parseFloat(e?.getAttribute("upper-bound")),n=Array.from(e?.querySelectorAll("qti-area-map-entry")||[]).map(a=>({shape:a.getAttribute("shape")||"default",coords:a.getAttribute("coords")||"",mappedValue:Number(a.getAttribute("mapped-value"))||0,defaultValue:Number(a.getAttribute("default-value"))||0}));return{defaultValue:t,lowerBound:isNaN(i)?null:i,upperBound:isNaN(s)?null:s,areaMapEntries:n}},$e.styles=[y`
81
81
  :host {
82
82
  display: none;
83
83
  }
84
- `],c([u({type:String,attribute:"base-type"})],$e.prototype,"baseType",2),c([u({type:String})],$e.prototype,"identifier",2),c([u({type:String})],$e.prototype,"cardinality",2),c([k({context:D,subscribe:!0}),C()],$e.prototype,"itemContext",2),$e=c([w("qti-response-declaration")],$e);var Ce=class extends Ot{constructor(){super(...arguments);this.externalScored=null}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return f`${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 s=parseFloat(i.getAttribute("source-value")),n=parseFloat(i.getAttribute("target-value"));(isNaN(s)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(s,n)}return t}return null}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:e,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};t.value=e,(t.value===null||t.value==null)&&(t.baseType==="integer"||t.baseType==="float")&&(t.value="0"),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};Ce.styles=[y`
84
+ `],c([u({type:String,attribute:"base-type"})],$e.prototype,"baseType",2),c([u({type:String})],$e.prototype,"identifier",2),c([u({type:String})],$e.prototype,"cardinality",2),c([M({context:D,subscribe:!0}),w()],$e.prototype,"itemContext",2),$e=c([C("qti-response-declaration")],$e);var we=class extends Ot{constructor(){super(...arguments);this.externalScored=null}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return f`${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 s=parseFloat(i.getAttribute("source-value")),n=parseFloat(i.getAttribute("target-value"));(isNaN(s)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(s,n)}return t}return null}connectedCallback(){super.connectedCallback();let e=this.defaultValues(this.cardinality),t={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:e,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};t.value=e,(t.value===null||t.value==null)&&(t.baseType==="integer"||t.baseType==="float")&&(t.value="0"),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}};we.styles=[y`
85
85
  :host {
86
86
  display: none;
87
87
  }
88
- `],c([u({type:String,attribute:"base-type"})],Ce.prototype,"baseType",2),c([u({type:String,attribute:"external-scored"})],Ce.prototype,"externalScored",2),c([u({type:String})],Ce.prototype,"identifier",2),c([u({type:String})],Ce.prototype,"cardinality",2),c([k({context:D,subscribe:!0}),C()],Ce.prototype,"itemContext",2),Ce=c([w("qti-outcome-declaration")],Ce);var Fn=`<qti-response-processing>
88
+ `],c([u({type:String,attribute:"base-type"})],we.prototype,"baseType",2),c([u({type:String,attribute:"external-scored"})],we.prototype,"externalScored",2),c([u({type:String})],we.prototype,"identifier",2),c([u({type:String})],we.prototype,"cardinality",2),c([M({context:D,subscribe:!0}),w()],we.prototype,"itemContext",2),we=c([C("qti-outcome-declaration")],we);var Fn=`<qti-response-processing>
89
89
  <qti-response-condition>
90
90
  <qti-response-if>
91
91
  <qti-match>
@@ -138,19 +138,19 @@ Make sure to test your application with a production build as repeat registratio
138
138
  :host {
139
139
  display: none;
140
140
  }
141
- `],Or=c([w("qti-response-processing")],Or);var Qe,Ye,Xn,Gn,Qn,Ee=class extends b{constructor(){super(...arguments);T(this,Ye);this.identifier="";this.cardinality="single";this.baseType="string";this.mathVariable=!1;this.paramVariable=!1;T(this,Qe,null)}render(){return f`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{I(this,Ye,Xn).call(this),I(this,Ye,Qn).call(this)})}getTemplateVariable(){return{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,value:x(this,Qe),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable}}};Qe=new WeakMap,Ye=new WeakSet,Xn=function(){let e=this.querySelector("qti-default-value");if(!e)return;let t=e.textContent?.trim()||"";$(this,Qe,I(this,Ye,Gn).call(this,t))},Gn=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}},Qn=function(){let t={...{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:x(this,Qe),value:x(this,Qe),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable},value:x(this,Qe)?.toString()||""};this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))},Ee.styles=[y`
141
+ `],Or=c([C("qti-response-processing")],Or);var Qe,Ye,Xn,Gn,Qn,Ee=class extends b{constructor(){super(...arguments);T(this,Ye);this.identifier="";this.cardinality="single";this.baseType="string";this.mathVariable=!1;this.paramVariable=!1;T(this,Qe,null)}render(){return f`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{I(this,Ye,Xn).call(this),I(this,Ye,Qn).call(this)})}getTemplateVariable(){return{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,value:x(this,Qe),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable}}};Qe=new WeakMap,Ye=new WeakSet,Xn=function(){let e=this.querySelector("qti-default-value");if(!e)return;let t=e.textContent?.trim()||"";$(this,Qe,I(this,Ye,Gn).call(this,t))},Gn=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}},Qn=function(){let t={...{identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,defaultValue:x(this,Qe),value:x(this,Qe),type:"template",mathVariable:this.mathVariable,paramVariable:this.paramVariable},value:x(this,Qe)?.toString()||""};this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))},Ee.styles=[y`
142
142
  :host {
143
143
  display: none;
144
144
  }
145
- `],c([u({type:String})],Ee.prototype,"identifier",2),c([u({type:String})],Ee.prototype,"cardinality",2),c([u({type:String,attribute:"base-type"})],Ee.prototype,"baseType",2),c([u({type:Boolean,attribute:"math-variable"})],Ee.prototype,"mathVariable",2),c([u({type:Boolean,attribute:"param-variable"})],Ee.prototype,"paramVariable",2),Ee=c([w("qti-template-declaration")],Ee);var gt=class extends b{constructor(){super(...arguments);this.identifier="";this.cardinality="record"}render(){return f`<slot></slot>`}};gt.styles=[y`
145
+ `],c([u({type:String})],Ee.prototype,"identifier",2),c([u({type:String})],Ee.prototype,"cardinality",2),c([u({type:String,attribute:"base-type"})],Ee.prototype,"baseType",2),c([u({type:Boolean,attribute:"math-variable"})],Ee.prototype,"mathVariable",2),c([u({type:Boolean,attribute:"param-variable"})],Ee.prototype,"paramVariable",2),Ee=c([C("qti-template-declaration")],Ee);var gt=class extends b{constructor(){super(...arguments);this.identifier="";this.cardinality="record"}render(){return f`<slot></slot>`}};gt.styles=[y`
146
146
  :host {
147
147
  display: none;
148
148
  }
149
- `],c([u({type:String})],gt.prototype,"identifier",2),c([u({type:String})],gt.prototype,"cardinality",2),gt=c([w("qti-context-declaration")],gt);var Pr=class extends ft{render(){return f``}};Pr.styles=y`
149
+ `],c([u({type:String})],gt.prototype,"identifier",2),c([u({type:String})],gt.prototype,"cardinality",2),gt=c([C("qti-context-declaration")],gt);var Pr=class extends ft{render(){return f``}};Pr.styles=y`
150
150
  :host {
151
151
  color: gray;
152
152
  }
153
- `,Pr=c([w("qti-test-feedback")],Pr);var oe,U,Yn,Jn,Kn,Zn,ea,ta,ra,ia,de=class extends b{constructor(){super();T(this,U);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;T(this,oe);this.addEventListener("qti-assessment-test-connected",I(this,U,ta).bind(this)),this.addEventListener("qti-assessment-item-connected",I(this,U,ia).bind(this)),this.addEventListener("qti-interaction-changed",I(this,U,ea).bind(this)),this.addEventListener("test-end-attempt",I(this,U,Yn).bind(this)),this.addEventListener("test-show-correct-response",I(this,U,Jn).bind(this)),this.addEventListener("test-show-candidate-correction",I(this,U,Kn).bind(this)),this.addEventListener("test-update-outcome-variable",I(this,U,Zn).bind(this))}render(){return f`<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(s=>({...s,active:this._sessionContext?.navSectionId===s.identifier||!1,completed:s.items.every(n=>this._testContext.items.find(a=>a.identifier===n.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:s.items.map(n=>{let a=this._testContext?.items.find(M=>M.identifier===n.identifier),l={...n,...a,...this.initContext?.find(M=>M.identifier===n.identifier)},d=l.variables?.find(M=>M.identifier=="SCORE")?.value,p=d==null?null:parseFloat(d?.toString()),m=l.variables?.find(M=>M.identifier==="completionStatus")?.value,h=l.variables?.find(M=>M.identifier==="RESPONSE")?.value||"",g=l.variables?.find(M=>M.identifier==="numAttempts")?.value||0,v=this._sessionContext?.navItemRefId===l.identifier||!1,E=n.categories.includes(this.configContext?.infoItemCategory)?null:t++,A=n.variables?.find(M=>M.identifier=="MAXSCORE")?.value,q=A==null?null:parseFloat(A?.toString());return{...l,completionStatus:m,numAttempts:g,score:p,response:h,index:E,active:v,maxScore:q}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};oe=new WeakMap,U=new WeakSet,Yn=function(e){let i=x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,s=this.configContext?.reportValidityAfterScoring===!0;i.processResponse(!0,s)},Jn=function(e){let i=x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;i&&i.showCorrectResponse(e.detail)},Kn=function(e){x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},Zn=function(e){x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},ea=function(e){if(this.autoScoreItems){let t=e.composedPath()[0].closest("qti-assessment-item"),i=t.variables.find(s=>s.identifier==="SCORE");if(i&&i.externalScored===null&&t.adaptive==="false"){let s=this.configContext?.reportValidityAfterScoring===!0;t.processResponse(!0,s)}}},ta=function(e){if($(this,oe,e.detail),!this.qtiContext.QTI_CONTEXT?.testIdentifier){let s=this.qtiContext.QTI_CONTEXT||{testIdentifier:"",candidateIdentifier:"not set",environmentIdentifier:"default"};this.qtiContext={QTI_CONTEXT:{...s,testIdentifier:x(this,oe).identifier,environmentIdentifier:s.environmentIdentifier||"default"}}}x(this,oe).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(s=>{let n=I(this,U,ra).call(this,s);Object.keys(n).length>0&&(this.qtiContext={QTI_CONTEXT:{...n,...this.qtiContext.QTI_CONTEXT}})});let i=Array.from(x(this,oe)?.querySelectorAll("qti-test-part")||[]);this.computedContext={identifier:x(this,oe).identifier,title:x(this,oe).title,view:this._sessionContext?.view,testParts:i.map(s=>{let n=[...s.querySelectorAll("qti-assessment-section")];return{active:!1,identifier:s.identifier,navigationMode:s.navigationMode,submissionMode:s.submissionMode,sections:n.map(a=>{let l=[...a.querySelectorAll("qti-assessment-item-ref")];return{active:!1,identifier:a.identifier,title:a.title,items:l.map(d=>({...this.initContext?.find(p=>p.identifier===d.identifier),active:!1,identifier:d.identifier,categories:d.category?d.category?.split(" "):[],href:d.href,variables:[]}))}})}})}},ra=function(e){let t={},i=e.querySelector("qti-default-value");return i&&i.querySelectorAll("qti-value[field-identifier]").forEach(n=>{let a=n.getAttribute("field-identifier"),l=n.getAttribute("base-type")||"string",d=n.textContent?.trim()||"";if(a){let p=d;switch(l){case"integer":p=parseInt(d,10);break;case"float":case"duration":p=parseFloat(d);break;case"boolean":p=d.toLowerCase()==="true";break;default:p=d;break}t[a]=p}}),t},ia=function(e){let t=e.detail;this.computedContext={...this.computedContext,testParts:this.computedContext.testParts.map(i=>({...i,sections:i.sections.map(s=>({...s,items:s.items.map(n=>{if(n.identifier!==t.parentElement.getAttribute("identifier"))return n;let l=t.querySelector("qti-outcome-declaration[identifier='SCORE']")?.getAttribute("externalScored"),d=t.querySelectorAll("qti-response-declaration"),p=Array.from(d).some(v=>v.querySelector("qti-correct-response")),m=Array.from(d).some(v=>{let E=v.querySelector("qti-mapping"),A=v.querySelector("qti-area-mapping");return E?.querySelector("qti-map-entry")||A?.querySelector("qti-area-map-entry")}),h=p||m,g=!!t.querySelector("qti-response-processing");return{...n,assessmentItemIdentifier:t.getAttribute("identifier"),label:t.getAttribute("label"),title:t.title,externalScored:l,adaptive:t.adaptive=="true"||!1,timeDependent:t.timeDependent=="true"||!1,variables:t.variables,hasCorrectResponse:h,hasResponseProcessing:g}})}))}))}},c([u({type:String})],de.prototype,"identifier",2),c([C()],de.prototype,"initContext",2),c([C(),ee({context:Lt})],de.prototype,"qtiContext",2),c([C(),ee({context:ae})],de.prototype,"configContext",2),c([C(),k({context:ye,subscribe:!0})],de.prototype,"_testContext",2),c([C(),k({context:Fe,subscribe:!0})],de.prototype,"_sessionContext",2),c([C(),ee({context:N})],de.prototype,"computedContext",2),c([u({type:Boolean,attribute:"auto-score-items"})],de.prototype,"autoScoreItems",2),de=c([w("test-navigation")],de);var sa=y`
153
+ `,Pr=c([C("qti-test-feedback")],Pr);var oe,U,Yn,Jn,Kn,Zn,ea,ta,ra,ia,de=class extends b{constructor(){super();T(this,U);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;T(this,oe);this.addEventListener("qti-assessment-test-connected",I(this,U,ta).bind(this)),this.addEventListener("qti-assessment-item-connected",I(this,U,ia).bind(this)),this.addEventListener("qti-interaction-changed",I(this,U,ea).bind(this)),this.addEventListener("test-end-attempt",I(this,U,Yn).bind(this)),this.addEventListener("test-show-correct-response",I(this,U,Jn).bind(this)),this.addEventListener("test-show-candidate-correction",I(this,U,Kn).bind(this)),this.addEventListener("test-update-outcome-variable",I(this,U,Zn).bind(this))}render(){return f`<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(s=>({...s,active:this._sessionContext?.navSectionId===s.identifier||!1,completed:s.items.every(n=>this._testContext.items.find(a=>a.identifier===n.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:s.items.map(n=>{let a=this._testContext?.items.find(k=>k.identifier===n.identifier),l={...n,...a,...this.initContext?.find(k=>k.identifier===n.identifier)},d=l.variables?.find(k=>k.identifier=="SCORE")?.value,p=d==null?null:parseFloat(d?.toString()),m=l.variables?.find(k=>k.identifier==="completionStatus")?.value,h=l.variables?.find(k=>k.identifier==="RESPONSE")?.value||"",g=l.variables?.find(k=>k.identifier==="numAttempts")?.value||0,v=this._sessionContext?.navItemRefId===l.identifier||!1,E=n.categories.includes(this.configContext?.infoItemCategory)?null:t++,A=n.variables?.find(k=>k.identifier=="MAXSCORE")?.value,q=A==null?null:parseFloat(A?.toString());return{...l,completionStatus:m,numAttempts:g,score:p,response:h,index:E,active:v,maxScore:q}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};oe=new WeakMap,U=new WeakSet,Yn=function(e){let i=x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,s=this.configContext?.reportValidityAfterScoring===!0;i.processResponse(!0,s)},Jn=function(e){let i=x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;i&&i.showCorrectResponse(e.detail)},Kn=function(e){x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},Zn=function(e){x(this,oe).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},ea=function(e){if(this.autoScoreItems){let t=e.composedPath()[0].closest("qti-assessment-item"),i=t.variables.find(s=>s.identifier==="SCORE");if(i&&i.externalScored===null&&t.adaptive==="false"){let s=this.configContext?.reportValidityAfterScoring===!0;t.processResponse(!0,s)}}},ta=function(e){if($(this,oe,e.detail),!this.qtiContext.QTI_CONTEXT?.testIdentifier){let s=this.qtiContext.QTI_CONTEXT||{testIdentifier:"",candidateIdentifier:"not set",environmentIdentifier:"default"};this.qtiContext={QTI_CONTEXT:{...s,testIdentifier:x(this,oe).identifier,environmentIdentifier:s.environmentIdentifier||"default"}}}x(this,oe).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(s=>{let n=I(this,U,ra).call(this,s);Object.keys(n).length>0&&(this.qtiContext={QTI_CONTEXT:{...n,...this.qtiContext.QTI_CONTEXT}})});let i=Array.from(x(this,oe)?.querySelectorAll("qti-test-part")||[]);this.computedContext={identifier:x(this,oe).identifier,title:x(this,oe).title,view:this._sessionContext?.view,testParts:i.map(s=>{let n=[...s.querySelectorAll("qti-assessment-section")];return{active:!1,identifier:s.identifier,navigationMode:s.navigationMode,submissionMode:s.submissionMode,sections:n.map(a=>{let l=[...a.querySelectorAll("qti-assessment-item-ref")];return{active:!1,identifier:a.identifier,title:a.title,items:l.map(d=>({...this.initContext?.find(p=>p.identifier===d.identifier),active:!1,identifier:d.identifier,categories:d.category?d.category?.split(" "):[],href:d.href,variables:[]}))}})}})}},ra=function(e){let t={},i=e.querySelector("qti-default-value");return i&&i.querySelectorAll("qti-value[field-identifier]").forEach(n=>{let a=n.getAttribute("field-identifier"),l=n.getAttribute("base-type")||"string",d=n.textContent?.trim()||"";if(a){let p=d;switch(l){case"integer":p=parseInt(d,10);break;case"float":case"duration":p=parseFloat(d);break;case"boolean":p=d.toLowerCase()==="true";break;default:p=d;break}t[a]=p}}),t},ia=function(e){let t=e.detail;this.computedContext={...this.computedContext,testParts:this.computedContext.testParts.map(i=>({...i,sections:i.sections.map(s=>({...s,items:s.items.map(n=>{if(n.identifier!==t.parentElement.getAttribute("identifier"))return n;let l=t.querySelector("qti-outcome-declaration[identifier='SCORE']")?.getAttribute("externalScored"),d=t.querySelectorAll("qti-response-declaration"),p=Array.from(d).some(v=>v.querySelector("qti-correct-response")),m=Array.from(d).some(v=>{let E=v.querySelector("qti-mapping"),A=v.querySelector("qti-area-mapping");return E?.querySelector("qti-map-entry")||A?.querySelector("qti-area-map-entry")}),h=p||m,g=!!t.querySelector("qti-response-processing");return{...n,assessmentItemIdentifier:t.getAttribute("identifier"),label:t.getAttribute("label"),title:t.title,externalScored:l,adaptive:t.adaptive=="true"||!1,timeDependent:t.timeDependent=="true"||!1,variables:t.variables,hasCorrectResponse:h,hasResponseProcessing:g}})}))}))}},c([u({type:String})],de.prototype,"identifier",2),c([w()],de.prototype,"initContext",2),c([w(),ee({context:Lt})],de.prototype,"qtiContext",2),c([w(),ee({context:ae})],de.prototype,"configContext",2),c([w(),M({context:ye,subscribe:!0})],de.prototype,"_testContext",2),c([w(),M({context:Fe,subscribe:!0})],de.prototype,"_sessionContext",2),c([w(),ee({context:N})],de.prototype,"computedContext",2),c([u({type:Boolean,attribute:"auto-score-items"})],de.prototype,"autoScoreItems",2),de=c([C("test-navigation")],de);var sa=y`
154
154
  display: inline-flex;
155
155
  align-items: center;
156
156
  cursor: pointer;
@@ -173,14 +173,14 @@ Make sure to test your application with a production build as repeat registratio
173
173
  :host([disabled]) {
174
174
  ${Y};
175
175
  }
176
- `,c([u({type:Boolean,reflect:!0,attribute:"disabled"})],Je.prototype,"_internalDisabled",2),c([k({context:N,subscribe:!0})],Je.prototype,"computedContext",2),c([O("computedContext")],Je.prototype,"_handleTestElementChange",1),Je=c([w("test-next")],Je);var Ke=class extends b{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 f`<slot></slot>`}};Ke.styles=y`
176
+ `,c([u({type:Boolean,reflect:!0,attribute:"disabled"})],Je.prototype,"_internalDisabled",2),c([M({context:N,subscribe:!0})],Je.prototype,"computedContext",2),c([O("computedContext")],Je.prototype,"_handleTestElementChange",1),Je=c([C("test-next")],Je);var Ke=class extends b{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 f`<slot></slot>`}};Ke.styles=y`
177
177
  :host {
178
178
  ${Q};
179
179
  }
180
180
  :host([disabled]) {
181
181
  ${Y};
182
182
  }
183
- `,c([u({type:Boolean,reflect:!0,attribute:"disabled"})],Ke.prototype,"_internalDisabled",2),c([k({context:N,subscribe:!0})],Ke.prototype,"computedContext",2),c([O("computedContext")],Ke.prototype,"_handleTestElementChange",1),Ke=c([w("test-prev")],Ke);var Vr,to,J=class extends b{constructor(){super(...arguments);T(this,Vr);this.label="view";this._handleViewOptionsChange=()=>{I(this,Vr,to).call(this)};this._viewOptions=J.DEFAULT_VIEW_OPTIONS}connectedCallback(){super.connectedCallback(),I(this,Vr,to).call(this)}_switchView(e){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:e}))}render(){return f`
183
+ `,c([u({type:Boolean,reflect:!0,attribute:"disabled"})],Ke.prototype,"_internalDisabled",2),c([M({context:N,subscribe:!0})],Ke.prototype,"computedContext",2),c([O("computedContext")],Ke.prototype,"_handleTestElementChange",1),Ke=c([C("test-prev")],Ke);var Vr,to,J=class extends b{constructor(){super(...arguments);T(this,Vr);this.label="view";this._handleViewOptionsChange=()=>{I(this,Vr,to).call(this)};this._viewOptions=J.DEFAULT_VIEW_OPTIONS}connectedCallback(){super.connectedCallback(),I(this,Vr,to).call(this)}_switchView(e){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:e}))}render(){return f`
184
184
  <label part="label" for="viewSelect">${this.label}</label>
185
185
  <select
186
186
  part="select"
@@ -189,29 +189,29 @@ Make sure to test your application with a production build as repeat registratio
189
189
  >
190
190
  ${this._viewOptions.map(e=>f`<option value="${e}" ?selected=${e===this.sessionContext.view}>${e}</option>`)}
191
191
  </select>
192
- `}};Vr=new WeakSet,to=function(){if(this.viewOptions){let e=this.viewOptions.split(",").map(t=>t.trim());this._viewOptions=e.filter(t=>J.DEFAULT_VIEW_OPTIONS.includes(t))}else this._viewOptions=J.DEFAULT_VIEW_OPTIONS},J.DEFAULT_VIEW_OPTIONS=["author","candidate","proctor","scorer","testConstructor","tutor"],c([k({context:Fe,subscribe:!0})],J.prototype,"sessionContext",2),c([u({type:String})],J.prototype,"label",2),c([u({type:String,attribute:"view-options"})],J.prototype,"viewOptions",2),c([O("viewOptions",{waitUntilFirstUpdate:!0})],J.prototype,"_handleViewOptionsChange",2),c([C()],J.prototype,"_viewOptions",2),J=c([w("test-view")],J);var zt=class extends b{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 f` <slot></slot> `}};zt.styles=y`
192
+ `}};Vr=new WeakSet,to=function(){if(this.viewOptions){let e=this.viewOptions.split(",").map(t=>t.trim());this._viewOptions=e.filter(t=>J.DEFAULT_VIEW_OPTIONS.includes(t))}else this._viewOptions=J.DEFAULT_VIEW_OPTIONS},J.DEFAULT_VIEW_OPTIONS=["author","candidate","proctor","scorer","testConstructor","tutor"],c([M({context:Fe,subscribe:!0})],J.prototype,"sessionContext",2),c([u({type:String})],J.prototype,"label",2),c([u({type:String,attribute:"view-options"})],J.prototype,"viewOptions",2),c([O("viewOptions",{waitUntilFirstUpdate:!0})],J.prototype,"_handleViewOptionsChange",2),c([w()],J.prototype,"_viewOptions",2),J=c([C("test-view")],J);var zt=class extends b{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 f` <slot></slot> `}};zt.styles=y`
193
193
  :host {
194
194
  ${Q};
195
195
  }
196
196
  :host([disabled]) {
197
197
  ${Y};
198
198
  }
199
- `,c([u({type:String,attribute:"item-id"})],zt.prototype,"itemId",2),zt=c([w("test-item-link")],zt);var Nr=class extends b{constructor(){super(),this.addEventListener("click",()=>this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})))}render(){return f` <slot></slot> `}};Nr.styles=y`
199
+ `,c([u({type:String,attribute:"item-id"})],zt.prototype,"itemId",2),zt=c([C("test-item-link")],zt);var Nr=class extends b{constructor(){super(),this.addEventListener("click",()=>this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})))}render(){return f` <slot></slot> `}};Nr.styles=y`
200
200
  :host {
201
201
  ${Q};
202
202
  }
203
203
  :host([disabled]) {
204
204
  ${Y};
205
205
  }
206
- `,Nr=c([w("test-end-attempt")],Nr);var Dr,Ut,oa,na,me=class extends b{constructor(){super(...arguments);T(this,Ut);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";T(this,Dr)}willUpdate(e){let t=this.computedContext?.testParts.flatMap(i=>i.sections.flatMap(s=>s.items)).find(i=>i.active);if(x(this,Dr)!==t&&(this.shown=!1,$(this,Dr,t)),t){let i=!!t?.variables?.some(n=>n.correctResponse),s=!!t?.variables?.some(n=>n.mapping?.mapEntries?.length>0||n.areaMapping?.areaMapEntries?.length>0);this.disabled=!i&&!s}else this.disabled=!0}render(){return f` <div @click="${I(this,Ut,oa)}">${I(this,Ut,na).call(this)}</div> `}};Dr=new WeakMap,Ut=new WeakSet,oa=function(){this.disabled||(this.shown=!this.shown,this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:this.shown,bubbles:!0})))},na=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},me.styles=y`
206
+ `,Nr=c([C("test-end-attempt")],Nr);var Dr,Ut,oa,na,me=class extends b{constructor(){super(...arguments);T(this,Ut);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";T(this,Dr)}willUpdate(e){let t=this.computedContext?.testParts.flatMap(i=>i.sections.flatMap(s=>s.items)).find(i=>i.active);if(x(this,Dr)!==t&&(this.shown=!1,$(this,Dr,t)),t){let i=!!t?.variables?.some(n=>n.correctResponse),s=!!t?.variables?.some(n=>n.mapping?.mapEntries?.length>0||n.areaMapping?.areaMapEntries?.length>0);this.disabled=!i&&!s}else this.disabled=!0}render(){return f` <div @click="${I(this,Ut,oa)}">${I(this,Ut,na).call(this)}</div> `}};Dr=new WeakMap,Ut=new WeakSet,oa=function(){this.disabled||(this.shown=!this.shown,this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:this.shown,bubbles:!0})))},na=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},me.styles=y`
207
207
  :host {
208
208
  ${Q};
209
209
  }
210
210
  :host([disabled]) {
211
211
  ${Y};
212
212
  }
213
- `,c([k({context:N,subscribe:!0})],me.prototype,"computedContext",2),c([u({type:Boolean,reflect:!0})],me.prototype,"shown",2),c([u({type:Boolean,reflect:!0})],me.prototype,"disabled",2),c([u({type:String})],me.prototype,"showCorrectText",2),c([u({type:String})],me.prototype,"hideCorrectText",2),c([u({type:String})],me.prototype,"noCorrectResponseText",2),me=c([w("test-show-correct-response")],me);var zi=["this"],aa=["+","-","!"],la=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],ro={"!":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},Ui=13;var Rl=["==","!=","<=",">=","||","&&","??","|>"],_l=["===","!=="],_;(function(o){o[o.STRING=1]="STRING",o[o.IDENTIFIER=2]="IDENTIFIER",o[o.DOT=3]="DOT",o[o.COMMA=4]="COMMA",o[o.COLON=5]="COLON",o[o.INTEGER=6]="INTEGER",o[o.DECIMAL=7]="DECIMAL",o[o.OPERATOR=8]="OPERATOR",o[o.GROUPER=9]="GROUPER",o[o.KEYWORD=10]="KEYWORD",o[o.ARROW=11]="ARROW"})(_||(_={}));var Te=(o,r,e=0)=>({kind:o,value:r,precedence:e}),Ll=o=>o===9||o===10||o===13||o===32,ca=o=>o===95||o===36||(o&=-33,65<=o&&o<=90),$l=o=>ca(o)||Hr(o),Ol=o=>zi.indexOf(o)!==-1,Pl=o=>o===34||o===39,Hr=o=>48<=o&&o<=57,Vl=o=>o===43||o===45||o===42||o===47||o===33||o===38||o===37||o===60||o===61||o===62||o===63||o===94||o===124,Nl=o=>o===40||o===41||o===91||o===93||o===123||o===125,Dl=o=>o.replace(/\\(.)/g,(r,e)=>{switch(e){case"n":return`
214
- `;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),Bi=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#s()}nextToken(){for(;Ll(this.#i);)this.#s(!0);if(Pl(this.#i))return this.#a();if(ca(this.#i))return this.#u();if(Hr(this.#i))return this.#p();if(this.#i===46)return this.#l();if(this.#i===44)return this.#f();if(this.#i===58)return this.#m();if(Vl(this.#i))return this.#b();if(Nl(this.#i))return this.#h();if(this.#s(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#s(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.#n(),e}#n(){this.#r=this.#t}#a(){let r="unterminated string",e=this.#i;for(this.#s(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(r);if(this.#i===92&&(this.#s(),this.#i===void 0))throw new Error(r);this.#s()}let t=Te(_.STRING,Dl(this.#o()));return this.#s(),t}#u(){do this.#s();while($l(this.#i));let r=this.#o(),e=Ol(r)?_.KEYWORD:_.IDENTIFIER;return Te(e,r)}#p(){do this.#s();while(Hr(this.#i));return this.#i===46?this.#l():Te(_.INTEGER,this.#o())}#l(){return this.#s(),Hr(this.#i)?this.#g():(this.#n(),Te(_.DOT,".",Ui))}#f(){return this.#s(!0),Te(_.COMMA,",")}#m(){return this.#s(!0),Te(_.COLON,":")}#g(){do this.#s();while(Hr(this.#i));return Te(_.DECIMAL,this.#o())}#b(){this.#s();let r=this.#o(2);if(_l.indexOf(r)!==-1)this.#s(),this.#s();else{if(r=this.#o(1),r==="=>")return this.#s(),Te(_.ARROW,r);Rl.indexOf(r)!==-1&&this.#s()}return r=this.#o(),Te(_.OPERATOR,r,ro[r])}#h(){let r=String.fromCharCode(this.#i),e=Te(_.GROUPER,r,ro[r]);return this.#s(!0),e}};var io=(o,r)=>new zr(o,r).parse(),zr=class{#e;#t;#r;#i;#s;constructor(r,e){this.#t=new Bi(r),this.#r=e}parse(){return this.#o(),this.#n()}#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.#s=t?.value}_matches(r,e){return!(r&&this.#e!==r||e&&this.#s!==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(_.GROUPER,"(")){let t=this.#c();r=this.#r.invoke(r,void 0,t)}else if(this._matches(_.GROUPER,"[")){let t=this.#d();r=this.#r.index(r,t)}else if(this._matches(_.DOT)){this.#o();let t=this.#l();r=this.#u(r,t)}else{if(this._matches(_.KEYWORD))break;if(this._matches(_.OPERATOR)&&this.#i.precedence>=e)r=this.#s==="?"?this.#f(r):this.#p(r,this.#i);else break}return r}#u(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}`)}#p(r,e){if(la.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#o();let t=this.#l();for(;(this.#e===_.OPERATOR||this.#e===_.DOT||this.#e===_.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(_.OPERATOR)){let r=this.#s;if(this.#o(),r==="+"||r==="-"){if(this._matches(_.INTEGER))return this.#y(r);if(this._matches(_.DECIMAL))return this.#x(r)}if(aa.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#m(),Ui);return this.#r.unary(r,e)}return this.#m()}#f(r){this.#o(_.OPERATOR,"?");let e=this.#n();this.#o(_.COLON);let t=this.#n();return this.#r.ternary(r,e,t)}#m(){switch(this.#e){case _.KEYWORD:let r=this.#s;if(r==="this")return this.#o(),this.#r.id(r);throw zi.indexOf(r)!==-1?new Error(`unexpected keyword: ${r}`):new Error(`unrecognized keyword: ${r}`);case _.IDENTIFIER:return this.#h();case _.STRING:return this.#w();case _.INTEGER:return this.#y();case _.DECIMAL:return this.#x();case _.GROUPER:return this.#s==="("?this.#q():this.#s==="{"?this.#b():this.#s==="["?this.#g():void 0;case _.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let r=[];do{if(this.#o(),this._matches(_.GROUPER,"]"))break;r.push(this.#n())}while(this._matches(_.COMMA));return this.#o(_.GROUPER,"]"),this.#r.list(r)}#b(){let r={};do{if(this.#o(),this._matches(_.GROUPER,"}"))break;let e=this.#s;(this._matches(_.STRING)||this._matches(_.IDENTIFIER))&&this.#o(),this.#o(_.COLON),r[e]=this.#n()}while(this._matches(_.COMMA));return this.#o(_.GROUPER,"}"),this.#r.map(r)}#h(){let r=this.#s;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.#v(),t=this.#c();return t?this.#r.invoke(e,void 0,t):e}#v(){if(!this._matches(_.IDENTIFIER))throw new Error(`expected identifier: ${this.#s}`);let r=this.#s;return this.#o(),this.#r.id(r)}#c(){if(!this._matches(_.GROUPER,"("))return;let r=[];do{if(this.#o(),this._matches(_.GROUPER,")"))break;let e=this.#n();r.push(e)}while(this._matches(_.COMMA));return this.#o(_.GROUPER,")"),r}#d(){this.#o();let r=this.#n();return this.#o(_.GROUPER,"]"),r}#q(){let r=this.#c();if(this._matches(_.ARROW)){this.#o();let e=this.#n(),t=r?.map(i=>i.value)??[];return this.#r.arrowFunction(t,e)}else return this.#r.paren(r[0])}#w(){let r=this.#r.literal(this.#s);return this.#o(),r}#y(r=""){let e=this.#r.literal(parseInt(`${r}${this.#s}`,10));return this.#o(),e}#x(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#s}`));return this.#o(),e}};var{hasOwn:da,fromEntries:Hl}=Object,zl={"+":(o,r)=>o+r,"-":(o,r)=>o-r,"*":(o,r)=>o*r,"/":(o,r)=>o/r,"%":(o,r)=>o%r,"==":(o,r)=>o==r,"!=":(o,r)=>o!=r,"===":(o,r)=>o===r,"!==":(o,r)=>o!==r,">":(o,r)=>o>r,">=":(o,r)=>o>=r,"<":(o,r)=>o<r,"<=":(o,r)=>o<=r,"||":(o,r)=>o||r,"&&":(o,r)=>o&&r,"??":(o,r)=>o??r,"|":(o,r)=>r(o),"|>":(o,r)=>r(o)},Ul={"+":o=>o,"-":o=>-o,"!":o=>!o},Fi=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=Ul[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=zl[e];return{type:"Binary",operator:e,left:r,right:t,evaluate(s){if(this.operator==="="){if(this.left.type!=="ID"&&this.left.type!=="Getter"&&this.left.type!=="Index")throw new Error(`Invalid assignment target: ${this.left}`);let n=this.right.evaluate(s),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(s),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(s),l=this.left.argument.evaluate(s)):this.left.type==="ID"&&(a=s,l=this.left.value),a===void 0?void 0:a[l]=n}return i(this.left.evaluate(s),this.right.evaluate(s))},getIds(s){return this.left.getIds(s),this.right.getIds(s),s}}}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 s=this.receiver.evaluate(i),n=this.method?s:i?.this??i,a=this.method?s?.[e]:s,d=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(n,d)},getIds(i){return this.receiver.getIds(i),this.arguments?.forEach(s=>s?.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 s=this.entries[i];s&&(t[i]=s.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,s=this.body;return function(...n){let a=Hl(i.map((d,p)=>[d,n[p]])),l=new Proxy(t??{},{set(d,p,m){return da(a,p)&&(a[p]=m),d[p]=m},get(d,p){return da(a,p)?a[p]:d[p]}});return s.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var so=null,pa={boundAttributeSuffix:W.M,marker:W.P,markerMatch:W.A,HTML_RESULT:W.C,getTemplateHtml:W.L,overrideDirectiveResolve:(o,r)=>class extends o{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(o,r)=>{if(o.prototype._$AS.name!==r.name){so??=o.prototype._$AS.name;for(let e=o.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(so))return void(e[so]=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(o,r){o._$litDirective$=r},getAttributePartCommittedValue:(o,r,e)=>{let t=z;return o.j=i=>t=i,o._$AI(r,o,e),t},connectedDisconnectable:o=>({...o,_$AU:!0}),resolveDirective:W.V,AttributePart:W.H,PropertyPart:W.B,BooleanAttributePart:W.N,EventPart:W.U,ElementPart:W.F,TemplateInstance:W.R,isIterable:W.D,ChildPart:W.I};var{AttributePart:Bl,PropertyPart:Fl,BooleanAttributePart:jl,EventPart:Wl}=pa,no=new Fi,oo=new Map,ua=o=>o.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),ji=(o,r)=>{let e=oo.get(o);if(e===void 0){if(oo.has(o))return;if(o=o.trim(),o.startsWith("{{")&&o.endsWith("}}")){let t=o.substring(2,o.length-2).trim();e=new zr(t,no).parse(),oo.set(o,e)}}return e?.evaluate(r)},Xl=(o,r,e,t)=>{let i=o.getAttribute("if");if(i!==null&&ji(i,r))return Wi(o,r,e,t)},ma=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,ha=o=>/(?:\\{{)|(?:\\}})/g.test(o),Ur=o=>o.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),Gl=(o,r,e,t)=>{let i=o.getAttribute("repeat");if(i!==null){let s=ji(i,r);if(!s[Symbol.iterator])return L;let n=Br(o),a=-1,l=[];for(let d of s){a++;let p=Object.create(r);p.item=d,p.index=a,p.this=r.this??r;let m=[];for(let g of n.parts){let v=g.update(p,e,t);g.type===1?m.push(...v):m.push(v)}let h={_$litType$:n,values:m};l.push(h)}return l}},ga={if:Xl,repeat:Gl},Ae=(o,r=ga,e={},t)=>{let s=Br(o).renderers;if(t){let a=Br(t).renderers,l=s.super;l!==void 0?e={...s,...e,super:(d,p,m)=>(m={...a,...m,super:(h,g,v)=>Wi(t,h,g,v)},l(d,p,m))}:(e={...a,...s,...e},o=t)}else e={...s,...e};return n=>Wi(o,n,r,e)};var Wi=(o,r,e=ga,t={})=>{let i=Br(o),s=[];for(let a of i.parts){let l=a.update(r,e,t);a.type===1?s.push(...l):s.push(l)}return{_$litType$:i,values:s}},fa=new Map,Br=o=>{let r=fa.get(o);return r===void 0&&fa.set(o,r=Ql(o)),r},Ql=o=>{let r={h:void 0,el:o.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(r.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,i=-1,s=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)i++;else if(t.nodeType===Node.ELEMENT_NODE){i++;let n=t;if(n.tagName==="TEMPLATE"){let l=n.getAttribute("type"),d=n.getAttribute("name"),p=n.getAttribute("call");if(p!==null||l!==null||d!==null){n.parentNode.insertBefore(document.createComment(""),n),s.push(n);let m;if(p!==null){let h=p.trim(),g=h.startsWith("{{")&&h.endsWith("}}");m=(v,E,A)=>{let q=n.getAttribute("data"),M=q===null?void 0:ji(q,v);return(g?ji(h,v):A[p])?.(M,E,A)}}else l!==null?m=(h,g,v)=>{let E=g[l];return E?.(n,h,g,v)}:(d==="super"?r.renderers.super=(h,g,v)=>{let E=v.super,A=Br(n);return v={...v,...A.renderers},E(h,g,v)}:r.renderers[d]=(h,g,v)=>Wi(n,h,g,v),m=(h,g,v)=>{let E=v[d];return E?.(h,g,v)});r.parts.push({type:2,index:i,update:m});continue}}let a=n.getAttributeNames();for(let l of a){let d=n.getAttribute(l),p=d.split(ma);if(p.length===1){ha(d)&&n.setAttribute(l,Ur(d));continue}n.removeAttribute(l);let m=l,h=Bl,g=l[0];g==="."?(m=ua(l.substring(1)),h=Fl):g==="?"?(m=l.substring(1),h=jl):g==="@"&&(m=ua(l.substring(1)),h=Wl);let v=[Ur(p[0])],E=[];for(let A=1;A<p.length;A+=2){let q=p[A];E.push(io(q,no)),v.push(Ur(p[A+1]))}r.parts.push({type:1,index:i,name:m,strings:v,ctor:h,update:(A,q,M)=>E.map(P=>P.evaluate(A))})}}else if(t.nodeType===Node.TEXT_NODE){let n=t,a=n.textContent,l=a.split(ma);l.length>1?n.textContent=Ur(l[0]):ha(a)&&(n.textContent=Ur(a));for(let d=1;d<l.length;d+=2){let p=l[d],m=io(p,no);r.parts.push({type:2,index:++i,update:(g,v)=>m.evaluate(g)});let h=new Text(l[d+1].replace("\\{{","{{"));n.parentNode.insertBefore(h,n.nextSibling),n.parentNode.insertBefore(document.createComment(""),n.nextSibling),n=h,e.currentNode=h}}for(let n of s)n.remove();return r};var jr,Fr=class extends b{constructor(){super();T(this,jr);$(this,jr,this.attachInternals()),x(this,jr).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ae(e)}render(){if(!this.computedContext)return f``;let e=this.computedContext.testParts.flatMap(t=>t.sections.flatMap(i=>i.items));return f` ${e.map(t=>this.myTemplate({item:t,view:this.computedContext.view}))} `}};jr=new WeakMap,c([k({context:N,subscribe:!0})],Fr.prototype,"computedContext",2),Fr=c([w("test-paging-buttons-stamp")],Fr);var Xi=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},Gi=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 ba=o=>!Sn(o)&&typeof o.then=="function",va=1073741823,ao=class extends Xe{constructor(){super(...arguments),this._$Cwt=va,this._$Cbt=[],this._$CK=new Xi(this),this._$CX=new Gi}render(...r){return r.find((e=>!ba(e)))??z}update(r,e){let t=this._$Cbt,i=t.length;this._$Cbt=e;let s=this._$CK,n=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!ba(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=va,i=0,Promise.resolve(l).then((async d=>{for(;n.get();)await n.get();let p=s.deref();if(p!==void 0){let m=p._$Cbt.indexOf(l);m>-1&&m<p._$Cwt&&(p._$Cwt=m,p.setValue(d))}})))}return z}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},Qi=te(ao);var Yi=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
213
+ `,c([M({context:N,subscribe:!0})],me.prototype,"computedContext",2),c([u({type:Boolean,reflect:!0})],me.prototype,"shown",2),c([u({type:Boolean,reflect:!0})],me.prototype,"disabled",2),c([u({type:String})],me.prototype,"showCorrectText",2),c([u({type:String})],me.prototype,"hideCorrectText",2),c([u({type:String})],me.prototype,"noCorrectResponseText",2),me=c([C("test-show-correct-response")],me);var zi=["this"],aa=["+","-","!"],la=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],ro={"!":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},Ui=13;var Rl=["==","!=","<=",">=","||","&&","??","|>"],_l=["===","!=="],_;(function(o){o[o.STRING=1]="STRING",o[o.IDENTIFIER=2]="IDENTIFIER",o[o.DOT=3]="DOT",o[o.COMMA=4]="COMMA",o[o.COLON=5]="COLON",o[o.INTEGER=6]="INTEGER",o[o.DECIMAL=7]="DECIMAL",o[o.OPERATOR=8]="OPERATOR",o[o.GROUPER=9]="GROUPER",o[o.KEYWORD=10]="KEYWORD",o[o.ARROW=11]="ARROW"})(_||(_={}));var Te=(o,r,e=0)=>({kind:o,value:r,precedence:e}),Ll=o=>o===9||o===10||o===13||o===32,ca=o=>o===95||o===36||(o&=-33,65<=o&&o<=90),$l=o=>ca(o)||Hr(o),Ol=o=>zi.indexOf(o)!==-1,Pl=o=>o===34||o===39,Hr=o=>48<=o&&o<=57,Vl=o=>o===43||o===45||o===42||o===47||o===33||o===38||o===37||o===60||o===61||o===62||o===63||o===94||o===124,Nl=o=>o===40||o===41||o===91||o===93||o===123||o===125,Dl=o=>o.replace(/\\(.)/g,(r,e)=>{switch(e){case"n":return`
214
+ `;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),Bi=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#s()}nextToken(){for(;Ll(this.#i);)this.#s(!0);if(Pl(this.#i))return this.#a();if(ca(this.#i))return this.#u();if(Hr(this.#i))return this.#p();if(this.#i===46)return this.#l();if(this.#i===44)return this.#f();if(this.#i===58)return this.#m();if(Vl(this.#i))return this.#b();if(Nl(this.#i))return this.#h();if(this.#s(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#s(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.#n(),e}#n(){this.#r=this.#t}#a(){let r="unterminated string",e=this.#i;for(this.#s(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(r);if(this.#i===92&&(this.#s(),this.#i===void 0))throw new Error(r);this.#s()}let t=Te(_.STRING,Dl(this.#o()));return this.#s(),t}#u(){do this.#s();while($l(this.#i));let r=this.#o(),e=Ol(r)?_.KEYWORD:_.IDENTIFIER;return Te(e,r)}#p(){do this.#s();while(Hr(this.#i));return this.#i===46?this.#l():Te(_.INTEGER,this.#o())}#l(){return this.#s(),Hr(this.#i)?this.#g():(this.#n(),Te(_.DOT,".",Ui))}#f(){return this.#s(!0),Te(_.COMMA,",")}#m(){return this.#s(!0),Te(_.COLON,":")}#g(){do this.#s();while(Hr(this.#i));return Te(_.DECIMAL,this.#o())}#b(){this.#s();let r=this.#o(2);if(_l.indexOf(r)!==-1)this.#s(),this.#s();else{if(r=this.#o(1),r==="=>")return this.#s(),Te(_.ARROW,r);Rl.indexOf(r)!==-1&&this.#s()}return r=this.#o(),Te(_.OPERATOR,r,ro[r])}#h(){let r=String.fromCharCode(this.#i),e=Te(_.GROUPER,r,ro[r]);return this.#s(!0),e}};var io=(o,r)=>new zr(o,r).parse(),zr=class{#e;#t;#r;#i;#s;constructor(r,e){this.#t=new Bi(r),this.#r=e}parse(){return this.#o(),this.#n()}#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.#s=t?.value}_matches(r,e){return!(r&&this.#e!==r||e&&this.#s!==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(_.GROUPER,"(")){let t=this.#c();r=this.#r.invoke(r,void 0,t)}else if(this._matches(_.GROUPER,"[")){let t=this.#d();r=this.#r.index(r,t)}else if(this._matches(_.DOT)){this.#o();let t=this.#l();r=this.#u(r,t)}else{if(this._matches(_.KEYWORD))break;if(this._matches(_.OPERATOR)&&this.#i.precedence>=e)r=this.#s==="?"?this.#f(r):this.#p(r,this.#i);else break}return r}#u(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}`)}#p(r,e){if(la.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#o();let t=this.#l();for(;(this.#e===_.OPERATOR||this.#e===_.DOT||this.#e===_.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(_.OPERATOR)){let r=this.#s;if(this.#o(),r==="+"||r==="-"){if(this._matches(_.INTEGER))return this.#y(r);if(this._matches(_.DECIMAL))return this.#x(r)}if(aa.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#m(),Ui);return this.#r.unary(r,e)}return this.#m()}#f(r){this.#o(_.OPERATOR,"?");let e=this.#n();this.#o(_.COLON);let t=this.#n();return this.#r.ternary(r,e,t)}#m(){switch(this.#e){case _.KEYWORD:let r=this.#s;if(r==="this")return this.#o(),this.#r.id(r);throw zi.indexOf(r)!==-1?new Error(`unexpected keyword: ${r}`):new Error(`unrecognized keyword: ${r}`);case _.IDENTIFIER:return this.#h();case _.STRING:return this.#C();case _.INTEGER:return this.#y();case _.DECIMAL:return this.#x();case _.GROUPER:return this.#s==="("?this.#q():this.#s==="{"?this.#b():this.#s==="["?this.#g():void 0;case _.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let r=[];do{if(this.#o(),this._matches(_.GROUPER,"]"))break;r.push(this.#n())}while(this._matches(_.COMMA));return this.#o(_.GROUPER,"]"),this.#r.list(r)}#b(){let r={};do{if(this.#o(),this._matches(_.GROUPER,"}"))break;let e=this.#s;(this._matches(_.STRING)||this._matches(_.IDENTIFIER))&&this.#o(),this.#o(_.COLON),r[e]=this.#n()}while(this._matches(_.COMMA));return this.#o(_.GROUPER,"}"),this.#r.map(r)}#h(){let r=this.#s;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.#v(),t=this.#c();return t?this.#r.invoke(e,void 0,t):e}#v(){if(!this._matches(_.IDENTIFIER))throw new Error(`expected identifier: ${this.#s}`);let r=this.#s;return this.#o(),this.#r.id(r)}#c(){if(!this._matches(_.GROUPER,"("))return;let r=[];do{if(this.#o(),this._matches(_.GROUPER,")"))break;let e=this.#n();r.push(e)}while(this._matches(_.COMMA));return this.#o(_.GROUPER,")"),r}#d(){this.#o();let r=this.#n();return this.#o(_.GROUPER,"]"),r}#q(){let r=this.#c();if(this._matches(_.ARROW)){this.#o();let e=this.#n(),t=r?.map(i=>i.value)??[];return this.#r.arrowFunction(t,e)}else return this.#r.paren(r[0])}#C(){let r=this.#r.literal(this.#s);return this.#o(),r}#y(r=""){let e=this.#r.literal(parseInt(`${r}${this.#s}`,10));return this.#o(),e}#x(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#s}`));return this.#o(),e}};var{hasOwn:da,fromEntries:Hl}=Object,zl={"+":(o,r)=>o+r,"-":(o,r)=>o-r,"*":(o,r)=>o*r,"/":(o,r)=>o/r,"%":(o,r)=>o%r,"==":(o,r)=>o==r,"!=":(o,r)=>o!=r,"===":(o,r)=>o===r,"!==":(o,r)=>o!==r,">":(o,r)=>o>r,">=":(o,r)=>o>=r,"<":(o,r)=>o<r,"<=":(o,r)=>o<=r,"||":(o,r)=>o||r,"&&":(o,r)=>o&&r,"??":(o,r)=>o??r,"|":(o,r)=>r(o),"|>":(o,r)=>r(o)},Ul={"+":o=>o,"-":o=>-o,"!":o=>!o},Fi=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=Ul[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=zl[e];return{type:"Binary",operator:e,left:r,right:t,evaluate(s){if(this.operator==="="){if(this.left.type!=="ID"&&this.left.type!=="Getter"&&this.left.type!=="Index")throw new Error(`Invalid assignment target: ${this.left}`);let n=this.right.evaluate(s),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(s),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(s),l=this.left.argument.evaluate(s)):this.left.type==="ID"&&(a=s,l=this.left.value),a===void 0?void 0:a[l]=n}return i(this.left.evaluate(s),this.right.evaluate(s))},getIds(s){return this.left.getIds(s),this.right.getIds(s),s}}}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 s=this.receiver.evaluate(i),n=this.method?s:i?.this??i,a=this.method?s?.[e]:s,d=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(n,d)},getIds(i){return this.receiver.getIds(i),this.arguments?.forEach(s=>s?.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 s=this.entries[i];s&&(t[i]=s.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,s=this.body;return function(...n){let a=Hl(i.map((d,p)=>[d,n[p]])),l=new Proxy(t??{},{set(d,p,m){return da(a,p)&&(a[p]=m),d[p]=m},get(d,p){return da(a,p)?a[p]:d[p]}});return s.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var so=null,pa={boundAttributeSuffix:W.M,marker:W.P,markerMatch:W.A,HTML_RESULT:W.C,getTemplateHtml:W.L,overrideDirectiveResolve:(o,r)=>class extends o{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(o,r)=>{if(o.prototype._$AS.name!==r.name){so??=o.prototype._$AS.name;for(let e=o.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(so))return void(e[so]=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(o,r){o._$litDirective$=r},getAttributePartCommittedValue:(o,r,e)=>{let t=z;return o.j=i=>t=i,o._$AI(r,o,e),t},connectedDisconnectable:o=>({...o,_$AU:!0}),resolveDirective:W.V,AttributePart:W.H,PropertyPart:W.B,BooleanAttributePart:W.N,EventPart:W.U,ElementPart:W.F,TemplateInstance:W.R,isIterable:W.D,ChildPart:W.I};var{AttributePart:Bl,PropertyPart:Fl,BooleanAttributePart:jl,EventPart:Wl}=pa,no=new Fi,oo=new Map,ua=o=>o.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),ji=(o,r)=>{let e=oo.get(o);if(e===void 0){if(oo.has(o))return;if(o=o.trim(),o.startsWith("{{")&&o.endsWith("}}")){let t=o.substring(2,o.length-2).trim();e=new zr(t,no).parse(),oo.set(o,e)}}return e?.evaluate(r)},Xl=(o,r,e,t)=>{let i=o.getAttribute("if");if(i!==null&&ji(i,r))return Wi(o,r,e,t)},ma=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,ha=o=>/(?:\\{{)|(?:\\}})/g.test(o),Ur=o=>o.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),Gl=(o,r,e,t)=>{let i=o.getAttribute("repeat");if(i!==null){let s=ji(i,r);if(!s[Symbol.iterator])return L;let n=Br(o),a=-1,l=[];for(let d of s){a++;let p=Object.create(r);p.item=d,p.index=a,p.this=r.this??r;let m=[];for(let g of n.parts){let v=g.update(p,e,t);g.type===1?m.push(...v):m.push(v)}let h={_$litType$:n,values:m};l.push(h)}return l}},ga={if:Xl,repeat:Gl},Ae=(o,r=ga,e={},t)=>{let s=Br(o).renderers;if(t){let a=Br(t).renderers,l=s.super;l!==void 0?e={...s,...e,super:(d,p,m)=>(m={...a,...m,super:(h,g,v)=>Wi(t,h,g,v)},l(d,p,m))}:(e={...a,...s,...e},o=t)}else e={...s,...e};return n=>Wi(o,n,r,e)};var Wi=(o,r,e=ga,t={})=>{let i=Br(o),s=[];for(let a of i.parts){let l=a.update(r,e,t);a.type===1?s.push(...l):s.push(l)}return{_$litType$:i,values:s}},fa=new Map,Br=o=>{let r=fa.get(o);return r===void 0&&fa.set(o,r=Ql(o)),r},Ql=o=>{let r={h:void 0,el:o.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(r.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,i=-1,s=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)i++;else if(t.nodeType===Node.ELEMENT_NODE){i++;let n=t;if(n.tagName==="TEMPLATE"){let l=n.getAttribute("type"),d=n.getAttribute("name"),p=n.getAttribute("call");if(p!==null||l!==null||d!==null){n.parentNode.insertBefore(document.createComment(""),n),s.push(n);let m;if(p!==null){let h=p.trim(),g=h.startsWith("{{")&&h.endsWith("}}");m=(v,E,A)=>{let q=n.getAttribute("data"),k=q===null?void 0:ji(q,v);return(g?ji(h,v):A[p])?.(k,E,A)}}else l!==null?m=(h,g,v)=>{let E=g[l];return E?.(n,h,g,v)}:(d==="super"?r.renderers.super=(h,g,v)=>{let E=v.super,A=Br(n);return v={...v,...A.renderers},E(h,g,v)}:r.renderers[d]=(h,g,v)=>Wi(n,h,g,v),m=(h,g,v)=>{let E=v[d];return E?.(h,g,v)});r.parts.push({type:2,index:i,update:m});continue}}let a=n.getAttributeNames();for(let l of a){let d=n.getAttribute(l),p=d.split(ma);if(p.length===1){ha(d)&&n.setAttribute(l,Ur(d));continue}n.removeAttribute(l);let m=l,h=Bl,g=l[0];g==="."?(m=ua(l.substring(1)),h=Fl):g==="?"?(m=l.substring(1),h=jl):g==="@"&&(m=ua(l.substring(1)),h=Wl);let v=[Ur(p[0])],E=[];for(let A=1;A<p.length;A+=2){let q=p[A];E.push(io(q,no)),v.push(Ur(p[A+1]))}r.parts.push({type:1,index:i,name:m,strings:v,ctor:h,update:(A,q,k)=>E.map(P=>P.evaluate(A))})}}else if(t.nodeType===Node.TEXT_NODE){let n=t,a=n.textContent,l=a.split(ma);l.length>1?n.textContent=Ur(l[0]):ha(a)&&(n.textContent=Ur(a));for(let d=1;d<l.length;d+=2){let p=l[d],m=io(p,no);r.parts.push({type:2,index:++i,update:(g,v)=>m.evaluate(g)});let h=new Text(l[d+1].replace("\\{{","{{"));n.parentNode.insertBefore(h,n.nextSibling),n.parentNode.insertBefore(document.createComment(""),n.nextSibling),n=h,e.currentNode=h}}for(let n of s)n.remove();return r};var jr,Fr=class extends b{constructor(){super();T(this,jr);$(this,jr,this.attachInternals()),x(this,jr).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ae(e)}render(){if(!this.computedContext)return f``;let e=this.computedContext.testParts.flatMap(t=>t.sections.flatMap(i=>i.items));return f` ${e.map(t=>this.myTemplate({item:t,view:this.computedContext.view}))} `}};jr=new WeakMap,c([M({context:N,subscribe:!0})],Fr.prototype,"computedContext",2),Fr=c([C("test-paging-buttons-stamp")],Fr);var Xi=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},Gi=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 ba=o=>!Sn(o)&&typeof o.then=="function",va=1073741823,ao=class extends Xe{constructor(){super(...arguments),this._$Cwt=va,this._$Cbt=[],this._$CK=new Xi(this),this._$CX=new Gi}render(...r){return r.find((e=>!ba(e)))??z}update(r,e){let t=this._$Cbt,i=t.length;this._$Cbt=e;let s=this._$CK,n=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!ba(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=va,i=0,Promise.resolve(l).then((async d=>{for(;n.get();)await n.get();let p=s.deref();if(p!==void 0){let m=p._$Cbt.indexOf(l);m>-1&&m<p._$Cwt&&(p._$Cwt=m,p.setValue(d))}})))}return z}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},Qi=te(ao);var Yi=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
215
215
 
216
216
  /* https://www.imsglobal.org/sites/default/files/spec/qti/v3/guide/img/qti3p0.css */
217
217
 
@@ -2243,25 +2243,20 @@ Make sure to test your application with a production build as repeat registratio
2243
2243
 
2244
2244
  &.qti-input-control-hidden {
2245
2245
  & qti-simple-choice {
2246
- position: relative; /* Add position relative here instead of a separate rule */
2247
-
2246
+ position: relative;
2248
2247
  &:hover {
2249
2248
  }
2250
-
2251
2249
  &:focus {
2252
2250
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
2253
2251
  }
2254
-
2255
2252
  &::part(ch) {
2256
2253
  display: none;
2257
2254
  }
2258
-
2259
2255
  &:state(--checked),
2260
2256
  &[aria-checked='true'] {
2261
2257
  border-color: var(--qti-border-active);
2262
2258
  background-color: var(--qti-bg-active);
2263
2259
  }
2264
-
2265
2260
  &:state(readonly),
2266
2261
  &[aria-readonly='true'] {
2267
2262
  cursor: pointer;
@@ -2269,7 +2264,6 @@ Make sure to test your application with a production build as repeat registratio
2269
2264
  outline: 0;
2270
2265
  border: none;
2271
2266
  }
2272
-
2273
2267
  &:state(disabled),
2274
2268
  &[aria-disabled='true'] {
2275
2269
  cursor: not-allowed;
@@ -2278,13 +2272,10 @@ Make sure to test your application with a production build as repeat registratio
2278
2272
  border-color: var(--qti-border-color);
2279
2273
  outline: 4px solid var(--qti-disabled-bg);
2280
2274
  }
2281
-
2282
- /* Add styling for correct responses with border instead of checkmark */
2283
2275
  &:state(correct-response),
2284
2276
  &[data-correct-response='true'] {
2285
2277
  border: 3px solid var(--qti-correct) !important;
2286
2278
  padding-right: 30px;
2287
-
2288
2279
  &::after {
2289
2280
  content: '\\02714';
2290
2281
  color: var(--qti-correct);
@@ -2305,28 +2296,22 @@ Make sure to test your application with a production build as repeat registratio
2305
2296
 
2306
2297
  &:not(.qti-input-control-hidden) {
2307
2298
  & qti-simple-choice {
2308
-
2309
2299
  &:not([aria-disabled='true'], [aria-readonly='true'], :state(--checked)):hover {
2310
2300
  }
2311
-
2312
2301
  &:focus {
2313
2302
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
2314
2303
  }
2315
-
2316
2304
  &:state(--checked),
2317
2305
  &[aria-checked='true'] {
2318
2306
  border-color: var(--qti-border-active);
2319
2307
  background-color: var(--qti-bg-active);
2320
2308
  }
2321
-
2322
2309
  &:state(candidate-correct) {
2323
2310
  background-color: var(--qti-correct);
2324
2311
  }
2325
-
2326
2312
  &:state(candidate-incorrect) {
2327
2313
  background-color: var(--qti-incorrect);
2328
2314
  }
2329
-
2330
2315
  &:state(readonly),
2331
2316
  &[aria-readonly='true'] {
2332
2317
  cursor: pointer;
@@ -2334,7 +2319,6 @@ Make sure to test your application with a production build as repeat registratio
2334
2319
  outline: 0;
2335
2320
  border: none;
2336
2321
  }
2337
-
2338
2322
  &:state(disabled),
2339
2323
  &[aria-disabled='true'] {
2340
2324
  cursor: not-allowed;
@@ -2343,12 +2327,10 @@ Make sure to test your application with a production build as repeat registratio
2343
2327
  border-color: var(--qti-border-color);
2344
2328
  outline: 4px solid var(--qti-disabled-bg);
2345
2329
  }
2346
-
2347
2330
  &::part(cha) {
2348
2331
  width: calc(var(--qti-form-size) - 6px);
2349
2332
  height: calc(var(--qti-form-size) - 6px);
2350
2333
  }
2351
-
2352
2334
  &:state(radio)::part(ch) {
2353
2335
  border-radius: 100%;
2354
2336
  display: grid;
@@ -2358,12 +2340,10 @@ Make sure to test your application with a production build as repeat registratio
2358
2340
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2359
2341
  outline: none;
2360
2342
  }
2361
-
2362
2343
  &:state(radio):state(--checked)::part(cha) {
2363
2344
  background-color: var(--qti-border-active);
2364
2345
  border-radius: 100%;
2365
2346
  }
2366
-
2367
2347
  &:state(checkbox)::part(ch) {
2368
2348
  display: flex;
2369
2349
  place-items: center;
@@ -2375,23 +2355,16 @@ Make sure to test your application with a production build as repeat registratio
2375
2355
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2376
2356
  outline: none;
2377
2357
  }
2378
-
2379
2358
  &:state(checkbox):state(--checked)::part(cha) {
2380
2359
  background-color: var(--qti-border-active);
2381
2360
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
2382
2361
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
2383
2362
  }
2384
-
2385
2363
  gap: 0.5rem;
2386
-
2387
2364
  background-color: var(--qti-bg);
2388
-
2389
2365
  border-radius: var(--qti-border-radius);
2390
-
2391
2366
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
2392
-
2393
2367
  outline: none;
2394
-
2395
2368
  cursor: pointer
2396
2369
  }
2397
2370
  }
@@ -2400,8 +2373,6 @@ Make sure to test your application with a production build as repeat registratio
2400
2373
  width: -moz-fit-content;
2401
2374
  width: fit-content;
2402
2375
  cursor: pointer;
2403
-
2404
- /* Keep the checkmark for non-hidden input controls */
2405
2376
  &:state(correct-response),
2406
2377
  &[data-correct-response='true'] {
2407
2378
  &::after {
@@ -2416,11 +2387,9 @@ Make sure to test your application with a production build as repeat registratio
2416
2387
  padding: 0 !important;
2417
2388
  }
2418
2389
  }
2390
+ }
2419
2391
 
2420
- .hover-border {
2421
- border: 2px solid #000; /* Adjust the border style and color as needed */
2422
- }
2423
-
2392
+ @layer qti-components {
2424
2393
  qti-graphic-gap-match-interaction {
2425
2394
  &::part(message) {
2426
2395
  display: none;
@@ -2431,41 +2400,32 @@ Make sure to test your application with a production build as repeat registratio
2431
2400
  border-radius: 4px;
2432
2401
  margin-top: 8px;
2433
2402
  }
2434
-
2435
2403
  position: relative;
2436
-
2437
2404
  &.qti-selections-light {
2438
2405
  &:state(--dragzone-active)::part(drags) {
2439
2406
  background-color: var(--qti-light-bg-active);
2440
2407
  border-color: var(--qti-light-border-active);
2441
2408
  }
2442
-
2443
2409
  &:state(--dragzone-enabled)::part(drags) {
2444
2410
  background-color: var(--qti-light-bg-active);
2445
2411
  }
2446
2412
  }
2447
-
2448
2413
  &.qti-selections-dark {
2449
2414
  &:state(--dragzone-active)::part(drags) {
2450
2415
  background-color: var(--qti-dark-bg-active);
2451
2416
  border-color: var(--qti-dark-border-active);
2452
2417
  }
2453
-
2454
2418
  &:state(--dragzone-enabled)::part(drags) {
2455
2419
  background-color: var(--qti-dark-bg-active);
2456
2420
  }
2457
2421
  }
2458
-
2459
- /* General styles for active and enabled states */
2460
2422
  &:state(--dragzone-active)::part(drags) {
2461
2423
  border-color: var(--qti-border-active);
2462
2424
  background-color: var(--qti-bg-active);
2463
2425
  }
2464
-
2465
2426
  &:state(--dragzone-enabled)::part(drags) {
2466
2427
  background-color: var(--qti-bg-active);
2467
2428
  }
2468
-
2469
2429
  & qti-gap-img,
2470
2430
  qti-gap-text {
2471
2431
  display: flex;
@@ -2473,36 +2433,25 @@ Make sure to test your application with a production build as repeat registratio
2473
2433
  align-items: center;
2474
2434
  cursor: grab;
2475
2435
  }
2476
-
2477
2436
  & qti-associable-hotspot {
2478
2437
  display: flex;
2479
2438
  justify-content: center;
2480
2439
  align-items: center;
2481
2440
  border: 2px solid transparent;
2482
-
2483
2441
  &[enabled] {
2484
-
2485
- /* Light theme override */
2486
2442
  .qti-selections-light {
2487
2443
  background-color: var(--qti-light-bg-active);
2488
2444
  }
2489
-
2490
- /* Dark theme override */
2491
2445
  .qti-selections-dark {
2492
2446
  background-color: var(--qti-dark-bg-active);
2493
2447
  }
2494
2448
  background-color: var(--qti-bg-active)
2495
2449
  }
2496
-
2497
2450
  &[active] {
2498
-
2499
- /* Light theme override */
2500
2451
  .qti-selections-light {
2501
2452
  background-color: var(--qti-light-bg-active);
2502
2453
  border-color: var(--qti-light-border-active);
2503
2454
  }
2504
-
2505
- /* Dark theme override */
2506
2455
  .qti-selections-dark {
2507
2456
  background-color: var(--qti-dark-bg-active);
2508
2457
  border-color: var(--qti-dark-border-active);
@@ -2510,66 +2459,54 @@ Make sure to test your application with a production build as repeat registratio
2510
2459
  border-color: var(--qti-border-active);
2511
2460
  background-color: var(--qti-bg-active)
2512
2461
  }
2513
-
2514
2462
  &[disabled] {
2515
-
2516
2463
  &:not(:empty) {
2517
2464
  cursor: default !important;
2518
2465
  }
2519
-
2520
2466
  cursor: not-allowed;
2521
-
2522
2467
  background-color: var(--qti-disabled-bg);
2523
-
2524
2468
  color: var(--qti-disabled-color);
2525
-
2526
2469
  border-color: var(--qti-border-color);
2527
-
2528
2470
  outline: 4px solid var(--qti-disabled-bg)
2529
2471
  }
2530
-
2531
2472
  &:empty::after {
2532
- padding: var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */
2533
- content: '\\0000a0'; /* when empty, put a space in it */
2473
+ padding: var(--qti-padding-md) var(--qti-padding-lg);
2474
+ content: '\\0000a0';
2534
2475
  }
2535
-
2536
2476
  &:not(:empty) {
2537
2477
  padding: 0;
2538
2478
  width: auto;
2539
2479
  }
2540
-
2541
2480
  &:not(:empty) > * {
2542
2481
  flex: 1;
2543
- transform: rotate(0); /* rotate-0 */
2544
- box-shadow: 0 0 0 1px #e5e7eb; /* ring-gray-200 */
2482
+ transform: rotate(0);
2483
+ box-shadow: 0 0 0 1px #e5e7eb;
2545
2484
  }
2546
2485
  }
2547
-
2548
2486
  & img {
2549
2487
  margin: 0;
2550
2488
  padding: 0;
2551
2489
  }
2552
2490
  }
2491
+ }
2553
2492
 
2493
+ @layer qti-components {
2554
2494
  qti-text-entry-interaction {
2555
2495
  &:state(candidate-correct) {
2556
2496
  &::part(input) {
2557
2497
  background-color: var(--qti-correct);
2558
2498
  }
2559
2499
  }
2560
-
2561
2500
  &:state(candidate-partially-correct) {
2562
2501
  &::part(input) {
2563
2502
  background-color: var(--qti-partially-correct);
2564
2503
  }
2565
2504
  }
2566
-
2567
2505
  &:state(candidate-incorrect) {
2568
2506
  &::part(input) {
2569
2507
  background-color: var(--qti-incorrect);
2570
2508
  }
2571
2509
  }
2572
-
2573
2510
  &::part(input) {
2574
2511
  border-radius: 0;
2575
2512
  cursor: text;
@@ -2578,10 +2515,8 @@ Make sure to test your application with a production build as repeat registratio
2578
2515
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2579
2516
  outline: none;
2580
2517
  }
2581
-
2582
2518
  &:hover {
2583
2519
  }
2584
-
2585
2520
  &:focus-within {
2586
2521
  &::part(input) {
2587
2522
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
@@ -2589,7 +2524,9 @@ Make sure to test your application with a production build as repeat registratio
2589
2524
  }
2590
2525
  }
2591
2526
  }
2527
+ }
2592
2528
 
2529
+ @layer qti-components {
2593
2530
  qti-extended-text-interaction {
2594
2531
  &::part(textarea) {
2595
2532
  border-radius: 0;
@@ -2599,10 +2536,8 @@ Make sure to test your application with a production build as repeat registratio
2599
2536
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2600
2537
  outline: none;
2601
2538
  }
2602
-
2603
2539
  &:hover {
2604
2540
  }
2605
-
2606
2541
  &:focus-within {
2607
2542
  &::part(textarea) {
2608
2543
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
@@ -2610,125 +2545,89 @@ Make sure to test your application with a production build as repeat registratio
2610
2545
  }
2611
2546
  }
2612
2547
  }
2548
+ }
2613
2549
 
2550
+ @layer qti-components {
2614
2551
  qti-gap-match-interaction {
2615
2552
  &.qti-selections-light {
2616
2553
  &:state(--dragzone-active)::part(drags) {
2617
2554
  background-color: var(--qti-light-bg-active);
2618
2555
  border-color: var(--qti-light-border-active);
2619
2556
  }
2620
-
2621
2557
  &:state(--dragzone-enabled)::part(drags) {
2622
2558
  background-color: var(--qti-light-bg-active);
2623
2559
  }
2624
2560
  }
2625
-
2626
2561
  &.qti-selections-dark {
2627
2562
  &:state(--dragzone-active)::part(drags) {
2628
2563
  background-color: var(--qti-dark-bg-active);
2629
2564
  border-color: var(--qti-dark-border-active);
2630
2565
  }
2631
-
2632
2566
  &:state(--dragzone-enabled)::part(drags) {
2633
2567
  background-color: var(--qti-dark-bg-active);
2634
2568
  }
2635
2569
  }
2636
-
2637
- /* General styles for active and enabled states */
2638
2570
  &:state(--dragzone-active)::part(drags) {
2639
2571
  border-color: var(--qti-border-active);
2640
2572
  background-color: var(--qti-bg-active);
2641
2573
  }
2642
-
2643
2574
  &:state(--dragzone-enabled)::part(drags) {
2644
2575
  background-color: var(--qti-bg-active);
2645
2576
  }
2646
-
2647
2577
  & qti-gap-text {
2648
-
2649
2578
  &[dragging] {
2650
2579
  pointer-events: none;
2651
2580
  rotate: -2deg;
2652
2581
  box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
2653
2582
  0 4px 8px rgb(0 0 0 / 10%);
2654
2583
  }
2655
-
2656
2584
  &:hover {
2657
2585
  }
2658
-
2659
2586
  &:focus {
2660
2587
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
2661
2588
  }
2662
-
2663
2589
  &:state(candidate-correct) {
2664
2590
  background-color: var(--qti-correct);
2665
2591
  }
2666
-
2667
2592
  &:state(candidate-incorrect) {
2668
2593
  background-color: var(--qti-incorrect);
2669
2594
  }
2670
-
2671
2595
  box-sizing: border-box;
2672
-
2673
2596
  transition: transform 200ms ease-out,
2674
2597
  box-shadow 200ms ease-out,
2675
2598
  rotate 200ms ease-out;
2676
-
2677
2599
  cursor: grab;
2678
-
2679
2600
  background-color: var(--qti-bg);
2680
-
2681
2601
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
2682
-
2683
2602
  border-radius: var(--qti-border-radius);
2684
-
2685
2603
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2686
-
2687
2604
  outline: none
2688
2605
  }
2689
-
2690
2606
  & qti-gap {
2691
-
2692
2607
  &[disabled] {
2693
-
2694
2608
  &:not(:empty) {
2695
2609
  cursor: default !important;
2696
2610
  }
2697
-
2698
2611
  cursor: not-allowed;
2699
-
2700
2612
  background-color: var(--qti-disabled-bg);
2701
-
2702
2613
  color: var(--qti-disabled-color);
2703
-
2704
2614
  border-color: var(--qti-border-color);
2705
-
2706
2615
  outline: 4px solid var(--qti-disabled-bg)
2707
2616
  }
2708
-
2709
2617
  &[enabled] {
2710
-
2711
- /* Light theme override */
2712
2618
  .qti-selections-light {
2713
2619
  border-color: var(--qti-light-border-active);
2714
2620
  }
2715
-
2716
- /* Dark theme override */
2717
2621
  .qti-selections-dark {
2718
2622
  border-color: var(--qti-dark-border-active);
2719
2623
  }
2720
2624
  background-color: var(--qti-bg-active)
2721
2625
  }
2722
-
2723
2626
  &[active] {
2724
-
2725
- /* Light theme override */
2726
2627
  .qti-selections-light {
2727
2628
  background-color: var(--qti-light-bg-active);
2728
2629
  border-color: var(--qti-light-border-active);
2729
2630
  }
2730
-
2731
- /* Dark theme override */
2732
2631
  .qti-selections-dark {
2733
2632
  background-color: var(--qti-dark-bg-active);
2734
2633
  border-color: var(--qti-dark-border-active);
@@ -2736,56 +2635,45 @@ Make sure to test your application with a production build as repeat registratio
2736
2635
  border-color: var(--qti-border-active);
2737
2636
  background-color: var(--qti-bg-active)
2738
2637
  }
2739
-
2740
2638
  display: inline-flex;
2741
2639
  align-items: center;
2742
-
2743
2640
  &:empty::after {
2744
- padding: var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */
2745
- content: '\\0000a0'; /* when empty, put a space in it */
2641
+ padding: var(--qti-padding-md) var(--qti-padding-lg);
2642
+ content: '\\0000a0';
2746
2643
  }
2747
-
2748
2644
  &:not(:empty) {
2749
2645
  display: inline-flex;
2750
2646
  padding: 0;
2751
2647
  width: auto;
2752
2648
  }
2753
-
2754
2649
  &:not(:empty) > * {
2755
2650
  flex: 1;
2756
- transform: rotate(0); /* rotate-0 */
2757
- box-shadow: 0 0 0 1px #e5e7eb; /* ring-gray-200 */
2651
+ transform: rotate(0);
2652
+ box-shadow: 0 0 0 1px #e5e7eb;
2758
2653
  }
2759
-
2760
2654
  border: var(--qti-border-thickness) dashed var(--qti-border-color);
2761
-
2762
2655
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
2763
2656
  center no-repeat;
2764
-
2765
2657
  border-radius: var(--qti-border-radius);
2766
-
2767
2658
  position: relative;
2768
-
2769
2659
  background-color: var(--qti-bg)
2770
2660
  }
2771
2661
  }
2662
+ }
2772
2663
 
2664
+ @layer qti-components {
2773
2665
  qti-hotspot-interaction {
2774
2666
  & qti-hotspot-choice {
2775
2667
  &[shape='circle'] {
2776
-
2777
2668
  &:hover {
2778
2669
  }
2779
-
2780
2670
  &:focus {
2781
2671
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
2782
2672
  }
2783
-
2784
2673
  &:state(--checked),
2785
2674
  &[aria-checked='true'] {
2786
2675
  border-color: var(--qti-border-active);
2787
2676
  }
2788
-
2789
2677
  &:state(--readonly),
2790
2678
  &[aria-readonly='true'] {
2791
2679
  cursor: pointer;
@@ -2793,7 +2681,6 @@ Make sure to test your application with a production build as repeat registratio
2793
2681
  outline: 0;
2794
2682
  border: none;
2795
2683
  }
2796
-
2797
2684
  &:state(--disabled),
2798
2685
  &[aria-disabled='true'] {
2799
2686
  cursor: not-allowed;
@@ -2802,48 +2689,30 @@ Make sure to test your application with a production build as repeat registratio
2802
2689
  border-color: var(--qti-border-color);
2803
2690
  outline: 4px solid var(--qti-disabled-bg);
2804
2691
  }
2805
-
2806
2692
  width: 100%;
2807
-
2808
2693
  height: 100%;
2809
-
2810
2694
  background-color: transparent;
2811
-
2812
2695
  margin: 0;
2813
-
2814
2696
  padding: 0;
2815
-
2816
2697
  border: 0;
2817
-
2818
2698
  box-sizing: border-box;
2819
-
2820
2699
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2821
-
2822
2700
  outline: none
2823
2701
  }
2824
-
2825
2702
  &[shape='rect'] {
2826
-
2827
- /* &:hover {
2828
- @apply hov;
2829
- } */
2830
-
2831
2703
  &:focus {
2832
2704
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
2833
2705
  }
2834
-
2835
2706
  &:state(--checked),
2836
2707
  &[aria-checked='true'] {
2837
2708
  border-color: var(--qti-border-active);
2838
2709
  }
2839
-
2840
2710
  &[aria-readonly='true'] {
2841
2711
  cursor: pointer;
2842
2712
  background-color: var(--qti-bg);
2843
2713
  outline: 0;
2844
2714
  border: none;
2845
2715
  }
2846
-
2847
2716
  &[aria-disabled='true'] {
2848
2717
  cursor: not-allowed;
2849
2718
  background-color: var(--qti-disabled-bg);
@@ -2851,26 +2720,16 @@ Make sure to test your application with a production build as repeat registratio
2851
2720
  border-color: var(--qti-border-color);
2852
2721
  outline: 4px solid var(--qti-disabled-bg);
2853
2722
  }
2854
-
2855
2723
  width: 100%;
2856
-
2857
2724
  height: 100%;
2858
-
2859
2725
  background-color: transparent;
2860
-
2861
2726
  margin: 0;
2862
-
2863
2727
  padding: 0;
2864
-
2865
2728
  border: 0;
2866
-
2867
2729
  box-sizing: border-box;
2868
-
2869
2730
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2870
-
2871
2731
  outline: none
2872
2732
  }
2873
-
2874
2733
  &[shape='poly'] {
2875
2734
  &:hover::after {
2876
2735
  content: '';
@@ -2885,7 +2744,6 @@ Make sure to test your application with a production build as repeat registratio
2885
2744
  );
2886
2745
  display: block;
2887
2746
  }
2888
-
2889
2747
  &:state(--checked)::after,
2890
2748
  &[aria-checked='true']::after {
2891
2749
  content: '';
@@ -2900,14 +2758,12 @@ Make sure to test your application with a production build as repeat registratio
2900
2758
  );
2901
2759
  display: block;
2902
2760
  }
2903
-
2904
2761
  &[aria-readonly='true'] {
2905
2762
  cursor: pointer;
2906
2763
  background-color: var(--qti-bg);
2907
2764
  outline: 0;
2908
2765
  border: none;
2909
2766
  }
2910
-
2911
2767
  &[aria-disabled='true'] {
2912
2768
  cursor: not-allowed;
2913
2769
  background-color: var(--qti-disabled-bg);
@@ -2918,10 +2774,10 @@ Make sure to test your application with a production build as repeat registratio
2918
2774
  }
2919
2775
  }
2920
2776
  }
2777
+ }
2921
2778
 
2779
+ @layer qti-components {
2922
2780
  qti-hottext-interaction {
2923
- /* &:not(.qti-input-control-hidden),
2924
- &:not(.qti-unselected-hidden) { */
2925
2781
  &::part(message) {
2926
2782
  display: none;
2927
2783
  color: var(--qti-validation-text, #000);
@@ -2931,23 +2787,18 @@ Make sure to test your application with a production build as repeat registratio
2931
2787
  border-radius: 4px;
2932
2788
  margin-top: 8px;
2933
2789
  }
2934
-
2935
2790
  qti-hottext {
2936
2791
  display: inline-flex;
2937
2792
  align-items: center;
2938
-
2939
2793
  &:hover {
2940
2794
  }
2941
-
2942
2795
  &:focus {
2943
2796
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
2944
2797
  }
2945
-
2946
2798
  &::part(cha) {
2947
2799
  width: calc(var(--qti-form-size) - 6px);
2948
2800
  height: calc(var(--qti-form-size) - 6px);
2949
2801
  }
2950
-
2951
2802
  &:state(radio)::part(ch) {
2952
2803
  border-radius: 100%;
2953
2804
  display: grid;
@@ -2957,12 +2808,10 @@ Make sure to test your application with a production build as repeat registratio
2957
2808
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2958
2809
  outline: none;
2959
2810
  }
2960
-
2961
2811
  &:state(radio):state(--checked)::part(cha) {
2962
2812
  background-color: var(--qti-border-active);
2963
2813
  border-radius: 100%;
2964
2814
  }
2965
-
2966
2815
  &:state(checkbox)::part(ch) {
2967
2816
  display: flex;
2968
2817
  place-items: center;
@@ -2974,66 +2823,45 @@ Make sure to test your application with a production build as repeat registratio
2974
2823
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
2975
2824
  outline: none;
2976
2825
  }
2977
-
2978
2826
  &:state(checkbox):state(--checked)::part(cha) {
2979
2827
  background-color: var(--qti-border-active);
2980
2828
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
2981
2829
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
2982
2830
  }
2983
-
2984
2831
  &:state(correct-response),
2985
2832
  &[data-correct-response='true'] {
2986
2833
  &::after {
2987
2834
  content: '\\02714';
2988
- color: #16a34a; /* text-green-600 */
2835
+ color: #16a34a;
2989
2836
  }
2990
2837
  }
2991
-
2992
2838
  gap: 0.5rem;
2993
-
2994
2839
  background-color: var(--qti-bg);
2995
-
2996
2840
  border-radius: var(--qti-border-radius);
2997
-
2998
2841
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
2999
-
3000
2842
  outline: none;
3001
-
3002
2843
  cursor: pointer
3003
2844
  }
3004
-
3005
2845
  &.qti-input-control-hidden {
3006
2846
  qti-hottext {
3007
- /* --qti-padding-md: 0.1rem;
3008
- --qti-padding-lg: 0.2rem;
3009
- --qti-border-radius-md: 0.3rem;
3010
- --qti-border-thickness: 1px;
3011
- --qti-font-weight-semibold: 400; */
3012
-
3013
2847
  &:hover {
3014
2848
  }
3015
-
3016
2849
  &:focus {
3017
2850
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3018
2851
  }
3019
-
3020
- /* @layer qti-variants { */
3021
2852
  &::part(ch) {
3022
2853
  display: none;
3023
2854
  }
3024
-
3025
2855
  &:state(--checked) {
3026
2856
  border-color: var(--qti-border-active);
3027
2857
  background-color: var(--qti-bg-active);
3028
2858
  }
3029
-
3030
2859
  &[aria-readonly='true'] {
3031
2860
  cursor: pointer;
3032
2861
  background-color: var(--qti-bg);
3033
2862
  outline: 0;
3034
2863
  border: none;
3035
2864
  }
3036
-
3037
2865
  &[aria-disabled='true'] {
3038
2866
  cursor: not-allowed;
3039
2867
  background-color: var(--qti-disabled-bg);
@@ -3041,47 +2869,33 @@ Make sure to test your application with a production build as repeat registratio
3041
2869
  border-color: var(--qti-border-color);
3042
2870
  outline: 4px solid var(--qti-disabled-bg);
3043
2871
  }
3044
-
3045
2872
  border-radius: var(--qti-border-radius);
3046
-
3047
2873
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3048
-
3049
2874
  background: var(--qti-bg);
3050
-
3051
2875
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3052
-
3053
2876
  outline: none
3054
2877
  }
3055
-
3056
- /* } */
3057
2878
  }
3058
-
3059
2879
  &.qti-unselected-hidden {
3060
2880
  qti-hottext {
3061
2881
  &:hover {
3062
2882
  }
3063
-
3064
2883
  &:focus {
3065
2884
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3066
2885
  }
3067
-
3068
2886
  cursor: pointer;
3069
-
3070
2887
  &::part(ch) {
3071
2888
  display: none;
3072
2889
  }
3073
-
3074
2890
  &:state(--checked) {
3075
2891
  background-color: var(--qti-bg-active);
3076
2892
  }
3077
-
3078
2893
  &[aria-readonly='true'] {
3079
2894
  cursor: pointer;
3080
2895
  background-color: var(--qti-bg);
3081
2896
  outline: 0;
3082
2897
  border: none;
3083
2898
  }
3084
-
3085
2899
  &[aria-disabled='true'] {
3086
2900
  cursor: not-allowed;
3087
2901
  background-color: var(--qti-disabled-bg);
@@ -3092,52 +2906,39 @@ Make sure to test your application with a production build as repeat registratio
3092
2906
  }
3093
2907
  }
3094
2908
  }
2909
+ }
3095
2910
 
2911
+ @layer qti-components {
3096
2912
  qti-inline-choice-interaction {
3097
2913
  &:state(candidate-correct) {
3098
2914
  &::part(trigger) {
3099
2915
  background-color: var(--qti-correct);
3100
2916
  }
3101
2917
  }
3102
-
3103
2918
  &:state(candidate-incorrect) {
3104
2919
  &::part(trigger) {
3105
2920
  background-color: var(--qti-incorrect);
3106
2921
  }
3107
2922
  }
3108
-
3109
2923
  &::part(trigger) {
3110
-
3111
2924
  font-size: inherit;
3112
2925
  vertical-align: baseline;
3113
2926
  min-width: var(--qti-calculated-min-width, auto);
3114
-
3115
2927
  &:focus-visible {
3116
2928
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3117
2929
  }
3118
-
3119
2930
  display: inline-flex;
3120
-
3121
2931
  align-items: center;
3122
-
3123
2932
  justify-content: space-between;
3124
-
3125
2933
  gap: 0.5rem;
3126
-
3127
2934
  border-radius: var(--qti-border-radius);
3128
-
3129
2935
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3130
-
3131
2936
  background: var(--qti-bg);
3132
-
3133
2937
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3134
-
3135
2938
  outline: none
3136
2939
  }
3137
-
3138
2940
  &:not(:state(readonly)):not([readonly])::part(trigger):hover {
3139
2941
  }
3140
-
3141
2942
  &:state(disabled)::part(trigger),
3142
2943
  &[disabled]::part(trigger) {
3143
2944
  cursor: not-allowed;
@@ -3146,7 +2947,6 @@ Make sure to test your application with a production build as repeat registratio
3146
2947
  border-color: var(--qti-border-color);
3147
2948
  outline: 4px solid var(--qti-disabled-bg);
3148
2949
  }
3149
-
3150
2950
  &:state(readonly)::part(trigger),
3151
2951
  &[readonly]::part(trigger) {
3152
2952
  cursor: pointer;
@@ -3159,33 +2959,21 @@ Make sure to test your application with a production build as repeat registratio
3159
2959
  border-color: var(--qti-border-color);
3160
2960
  outline: 4px solid var(--qti-disabled-bg);
3161
2961
  }
3162
-
3163
2962
  &::part(dropdown-icon) {
3164
-
3165
2963
  font-size: 1.75em;
3166
-
3167
2964
  display: inline-flex;
3168
-
3169
2965
  align-items: center;
3170
-
3171
2966
  justify-content: center;
3172
-
3173
2967
  flex: 0 0 auto;
3174
-
3175
2968
  transition: transform 150ms ease;
3176
-
3177
2969
  transform-origin: 50% 50%;
3178
-
3179
2970
  color: var(--qti-border-color);
3180
-
3181
2971
  line-height: 1;
3182
2972
  }
3183
-
3184
2973
  &::part(dropdown-icon-open) {
3185
2974
  transform: rotate(180deg);
3186
2975
  color: var(--qti-border-active);
3187
2976
  }
3188
-
3189
2977
  &::part(menu) {
3190
2978
  background: var(--qti-bg);
3191
2979
  border-radius: var(--qti-border-radius);
@@ -3195,7 +2983,6 @@ Make sure to test your application with a production build as repeat registratio
3195
2983
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3196
2984
  outline: none;
3197
2985
  }
3198
-
3199
2986
  &::part(option) {
3200
2987
  display: flex;
3201
2988
  align-items: center;
@@ -3214,18 +3001,14 @@ Make sure to test your application with a production build as repeat registratio
3214
3001
  overflow: hidden;
3215
3002
  text-overflow: ellipsis;
3216
3003
  }
3217
-
3218
3004
  &::part(option):hover {
3219
3005
  }
3220
-
3221
3006
  &::part(option):focus-visible {
3222
3007
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3223
3008
  }
3224
-
3225
3009
  &::part(option-selected) {
3226
3010
  background-color: var(--qti-bg-active);
3227
3011
  }
3228
-
3229
3012
  & qti-inline-choice {
3230
3013
  display: flex;
3231
3014
  align-items: center;
@@ -3244,19 +3027,18 @@ Make sure to test your application with a production build as repeat registratio
3244
3027
  overflow: hidden;
3245
3028
  text-overflow: ellipsis;
3246
3029
  }
3247
-
3248
3030
  & qti-inline-choice:hover {
3249
3031
  }
3250
-
3251
3032
  & qti-inline-choice:focus-visible {
3252
3033
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3253
3034
  }
3254
-
3255
3035
  & qti-inline-choice:state(--checked) {
3256
3036
  background-color: var(--qti-bg-active);
3257
3037
  }
3258
3038
  }
3039
+ }
3259
3040
 
3041
+ @layer qti-components {
3260
3042
  qti-match-interaction.qti-match-tabular {
3261
3043
  &::part(message) {
3262
3044
  display: none;
@@ -3267,52 +3049,41 @@ Make sure to test your application with a production build as repeat registratio
3267
3049
  border-radius: 4px;
3268
3050
  margin-top: 8px;
3269
3051
  }
3270
- /* Table element */
3271
3052
  &::part(table) {
3272
3053
  border-collapse: collapse;
3273
3054
  width: 100%;
3274
3055
  }
3275
-
3276
- /* Row headers - take up remaining space */
3277
3056
  &::part(r-header) {
3278
3057
  background-color: var(--qti-bg-active, #f8f8f8);
3279
3058
  font-weight: 500;
3280
3059
  text-align: center;
3281
3060
  padding: 8px 15px;
3282
3061
  border: 1px solid #ddd;
3283
- width: auto; /* Let it expand naturally */
3284
- word-wrap: break-word; /* Allow long words to break */
3285
- white-space: wrap; /* Allow text to wrap to multiple lines */
3286
- min-width: 4rem; /* Allow column to shrink below content width */
3062
+ width: auto;
3063
+ word-wrap: break-word;
3064
+ white-space: wrap;
3065
+ min-width: 4rem;
3287
3066
  }
3288
-
3289
- /* Column headers - minimal width */
3290
3067
  &::part(c-header) {
3291
3068
  background-color: var(--qti-bg-active, #f8f8f8);
3292
3069
  font-weight: 500;
3293
3070
  text-align: left;
3294
3071
  padding: 8px;
3295
3072
  border: 1px solid #ddd;
3296
- width: 8rem; /* Force minimal width */
3297
- white-space: normal; /* Prevent wrapping */
3073
+ width: 8rem;
3074
+ white-space: normal;
3298
3075
  }
3299
-
3300
- /* Table rows */
3301
3076
  &::part(row) {
3302
3077
  border-bottom: 1px solid #ddd;
3303
3078
  }
3304
-
3305
- /* Input cells - minimal width */
3306
3079
  &::part(input-cell) {
3307
3080
  text-align: center;
3308
3081
  vertical-align: middle;
3309
3082
  height: 48px;
3310
3083
  border: 1px solid #ddd;
3311
3084
  padding: 8px;
3312
- width: 1%; /* Force minimal width */
3085
+ width: 1%;
3313
3086
  }
3314
-
3315
- /* Radio button styling */
3316
3087
  &::part(rb) {
3317
3088
  -webkit-appearance: none;
3318
3089
  -moz-appearance: none;
@@ -3326,13 +3097,9 @@ Make sure to test your application with a production build as repeat registratio
3326
3097
  cursor: pointer;
3327
3098
  display: block;
3328
3099
  }
3329
-
3330
- /* Radio button checked state */
3331
3100
  &::part(rb-checked) {
3332
3101
  box-shadow: inset 0 0 0 6px var(--qti-border-active, #2196f3);
3333
3102
  }
3334
-
3335
- /* Checkbox styling */
3336
3103
  &::part(cb) {
3337
3104
  -webkit-appearance: none;
3338
3105
  -moz-appearance: none;
@@ -3346,12 +3113,9 @@ Make sure to test your application with a production build as repeat registratio
3346
3113
  cursor: pointer;
3347
3114
  display: block;
3348
3115
  }
3349
-
3350
- /* Checkbox checked state - only change border if we're adding an SVG checkmark */
3351
3116
  &::part(cb-checked) {
3352
3117
  background-color: var(--qti-border-active, #2196f3) !important;
3353
3118
  }
3354
-
3355
3119
  &::part(checkmark) {
3356
3120
  position: absolute;
3357
3121
  width: 18px;
@@ -3360,123 +3124,90 @@ Make sure to test your application with a production build as repeat registratio
3360
3124
  left: 3px;
3361
3125
  pointer-events: none;
3362
3126
  }
3363
-
3364
- /* Correct answers for both types */
3365
3127
  &::part(rb-correct) {
3366
3128
  border-color: var(--qti-correct, #4caf50);
3367
3129
  }
3368
-
3369
3130
  &::part(rb-checked rb-correct) {
3370
3131
  box-shadow: inset 0 0 0 6px var(--qti-correct, #4caf50);
3371
3132
  }
3372
-
3373
3133
  &::part(cb-correct) {
3374
3134
  border-color: var(--qti-correct, #4caf50);
3375
3135
  }
3376
-
3377
3136
  &::part(cb-checked cb-correct) {
3378
3137
  background-color: var(--qti-correct, #4caf50) !important;
3379
3138
  }
3380
-
3381
- /* Incorrect answers for both types */
3382
3139
  &::part(rb-incorrect) {
3383
3140
  border-color: var(--qti-incorrect, #f44336);
3384
3141
  }
3385
-
3386
3142
  &::part(rb-checked rb-incorrect) {
3387
3143
  box-shadow: inset 0 0 0 6px var(--qti-incorrect, #f44336);
3388
3144
  }
3389
-
3390
3145
  &::part(cb-incorrect) {
3391
3146
  border-color: var(--qti-incorrect, #f44336);
3392
3147
  }
3393
-
3394
3148
  &::part(cb-checked cb-incorrect) {
3395
3149
  background-color: var(--qti-incorrect, #f44336) !important;
3396
3150
  }
3397
3151
  }
3398
-
3399
3152
  qti-match-interaction:not(.qti-match-tabular) {
3400
3153
  &:state(--dragzone-enabled) qti-simple-match-set:first-of-type {
3401
3154
  background-color: var(--qti-bg-active);
3402
3155
  }
3403
-
3404
3156
  &:state(--dragzone-active) qti-simple-match-set:first-of-type {
3405
3157
  border-color: var(--qti-border-active);
3406
3158
  background-color: var(--qti-bg-active);
3407
3159
  }
3408
-
3409
- /* The draggables */
3410
3160
  & qti-simple-match-set:first-of-type {
3411
3161
  display: flex;
3412
3162
  flex-wrap: wrap;
3413
- align-items: flex-start; /* Prevents children from stretching */
3163
+ align-items: flex-start;
3414
3164
  gap: var(--qti-gap-size);
3415
3165
  border: 2px solid transparent;
3416
-
3417
3166
  & qti-simple-associable-choice {
3418
-
3419
3167
  &[dragging] {
3420
3168
  pointer-events: none;
3421
3169
  rotate: -2deg;
3422
3170
  box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3423
3171
  0 4px 8px rgb(0 0 0 / 10%);
3424
3172
  }
3425
-
3426
3173
  &:hover {
3427
3174
  }
3428
-
3429
3175
  &:focus {
3430
3176
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3431
3177
  }
3432
-
3433
3178
  box-sizing: border-box;
3434
-
3435
3179
  transition: transform 200ms ease-out,
3436
3180
  box-shadow 200ms ease-out,
3437
3181
  rotate 200ms ease-out;
3438
-
3439
3182
  cursor: grab;
3440
-
3441
3183
  background-color: var(--qti-bg);
3442
-
3443
3184
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3444
-
3445
3185
  border-radius: var(--qti-border-radius);
3446
-
3447
3186
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3448
-
3449
3187
  outline: none
3450
3188
  }
3451
3189
  }
3452
-
3453
- /* The droppables */
3454
3190
  & qti-simple-match-set:last-of-type {
3455
3191
  display: grid;
3456
3192
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
3457
3193
  grid-auto-flow: unset;
3458
3194
  grid-auto-columns: unset;
3459
3195
  gap: var(--qti-gap-size);
3460
-
3461
3196
  & > qti-simple-associable-choice {
3462
- /* a droppable qti-simple-associable-choice */
3463
3197
  display: flex;
3464
3198
  flex-direction: column;
3465
3199
  justify-content: space-between;
3466
3200
  grid-row: unset;
3467
3201
  box-sizing: border-box;
3468
-
3469
3202
  & img {
3470
3203
  max-width: 100%;
3471
3204
  height: auto;
3472
3205
  }
3473
-
3474
3206
  &[enabled] {
3475
3207
  &::part(dropslot) {
3476
3208
  background-color: var(--qti-bg-active);
3477
3209
  }
3478
3210
  }
3479
-
3480
3211
  &[disabled] {
3481
3212
  &::part(dropslot) {
3482
3213
  cursor: not-allowed;
@@ -3486,27 +3217,22 @@ Make sure to test your application with a production build as repeat registratio
3486
3217
  outline: 4px solid var(--qti-disabled-bg);
3487
3218
  }
3488
3219
  }
3489
-
3490
3220
  &[active] {
3491
3221
  &::part(dropslot) {
3492
3222
  border-color: var(--qti-border-active);
3493
3223
  background-color: var(--qti-bg-active);
3494
3224
  }
3495
3225
  }
3496
-
3497
3226
  &::part(dropslot) {
3498
-
3499
3227
  &[dragging] {
3500
3228
  pointer-events: none;
3501
3229
  rotate: -2deg;
3502
3230
  box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3503
3231
  0 4px 8px rgb(0 0 0 / 10%);
3504
3232
  }
3505
-
3506
3233
  &:focus {
3507
3234
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3508
3235
  }
3509
-
3510
3236
  padding: var(--qti-dropzone-padding);
3511
3237
  margin-top: 0.5rem;
3512
3238
  gap: 0.5rem;
@@ -3521,102 +3247,74 @@ Make sure to test your application with a production build as repeat registratio
3521
3247
  position: relative;
3522
3248
  background-color: var(--qti-bg);
3523
3249
  }
3524
-
3525
3250
  & > *:not(qti-simple-associable-choice) {
3526
3251
  pointer-events: none;
3527
3252
  }
3528
-
3529
3253
  & > qti-simple-associable-choice {
3530
-
3531
3254
  &:state(candidate-correct) {
3532
3255
  background-color: var(--qti-correct);
3533
3256
  }
3534
-
3535
3257
  &:state(candidate-incorrect) {
3536
3258
  background-color: var(--qti-incorrect);
3537
3259
  }
3538
-
3539
3260
  &::part(dropslot) {
3540
3261
  display: none;
3541
3262
  }
3542
-
3543
3263
  &:hover {
3544
3264
  }
3545
-
3546
3265
  &:focus {
3547
3266
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3548
3267
  }
3549
-
3550
3268
  flex-basis: fit-content;
3551
-
3552
3269
  box-sizing: border-box;
3553
-
3554
3270
  transition: transform 200ms ease-out,
3555
3271
  box-shadow 200ms ease-out,
3556
3272
  rotate 200ms ease-out;
3557
-
3558
3273
  cursor: grab;
3559
-
3560
3274
  background-color: var(--qti-bg);
3561
-
3562
3275
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3563
-
3564
3276
  border-radius: var(--qti-border-radius);
3565
-
3566
3277
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3567
-
3568
3278
  outline: none;
3569
3279
  }
3570
3280
  }
3571
3281
  }
3572
3282
  }
3283
+ }
3573
3284
 
3285
+ @layer qti-components {
3574
3286
  qti-order-interaction {
3575
3287
  &:state(--dragzone-active)::part(drags) {
3576
3288
  border-color: var(--qti-border-active);
3577
3289
  background-color: var(--qti-bg-active);
3578
3290
  }
3579
-
3580
3291
  &:state(--dragzone-enabled)::part(drags) {
3581
3292
  background-color: var(--qti-bg-active);
3582
3293
  }
3583
-
3584
3294
  &::part(qti-simple-choice),
3585
3295
  & qti-simple-choice {
3586
-
3587
3296
  &[dragging] {
3588
3297
  pointer-events: none;
3589
3298
  rotate: -2deg;
3590
3299
  box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3591
3300
  0 4px 8px rgb(0 0 0 / 10%);
3592
3301
  }
3593
-
3594
3302
  &:hover {
3595
3303
  }
3596
-
3597
3304
  &:focus {
3598
3305
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3599
3306
  }
3600
-
3601
3307
  box-sizing: border-box;
3602
-
3603
3308
  transition: transform 200ms ease-out,
3604
3309
  box-shadow 200ms ease-out,
3605
3310
  rotate 200ms ease-out;
3606
-
3607
3311
  cursor: grab;
3608
-
3609
3312
  background-color: var(--qti-bg);
3610
-
3611
3313
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3612
-
3613
3314
  border-radius: var(--qti-border-radius);
3614
-
3615
3315
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3616
-
3617
3316
  outline: none
3618
3317
  }
3619
-
3620
3318
  &::part(qti-simple-choice) {
3621
3319
  display: flex;
3622
3320
  overflow: hidden;
@@ -3624,38 +3322,27 @@ Make sure to test your application with a production build as repeat registratio
3624
3322
  width: 100%;
3625
3323
  text-overflow: ellipsis;
3626
3324
  }
3627
-
3628
3325
  &::part(drops) {
3629
- gap: 0.5rem; /* gap-2 */
3326
+ gap: 0.5rem;
3630
3327
  }
3631
-
3632
3328
  &::part(drags) {
3633
- gap: 0.5rem; /* gap-2 */
3329
+ gap: 0.5rem;
3634
3330
  }
3635
-
3636
3331
  &::part(drop-list) {
3637
-
3638
3332
  &[enabled] {
3639
-
3640
- /* Light theme override */
3641
3333
  .qti-selections-light {
3642
3334
  border-color: var(--qti-light-border-active);
3643
3335
  }
3644
-
3645
- /* Dark theme override */
3646
3336
  .qti-selections-dark {
3647
3337
  border-color: var(--qti-dark-border-active);
3648
3338
  }
3649
3339
  background-color: var(--qti-bg-active)
3650
3340
  }
3651
-
3652
3341
  &:hover {
3653
3342
  }
3654
-
3655
3343
  &:focus {
3656
3344
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3657
3345
  }
3658
-
3659
3346
  display: flex;
3660
3347
  min-height: 4rem;
3661
3348
  border: var(--qti-border-thickness) dashed var(--qti-border-color);
@@ -3665,34 +3352,27 @@ Make sure to test your application with a production build as repeat registratio
3665
3352
  position: relative;
3666
3353
  background-color: var(--qti-bg);
3667
3354
  }
3668
-
3669
3355
  &::part(active) {
3670
3356
  border-color: var(--qti-border-active);
3671
3357
  background-color: var(--qti-bg-active);
3672
3358
  }
3673
-
3674
3359
  & drop-list {
3675
3360
  &[shape='circle'] {
3676
-
3677
3361
  &:hover {
3678
3362
  }
3679
-
3680
3363
  &:focus {
3681
3364
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3682
3365
  }
3683
-
3684
3366
  &[aria-checked='true'] {
3685
3367
  border-color: var(--qti-border-active);
3686
3368
  background-color: var(--qti-bg-active);
3687
3369
  }
3688
-
3689
3370
  &[aria-readonly='true'] {
3690
3371
  cursor: pointer;
3691
3372
  background-color: var(--qti-bg);
3692
3373
  outline: 0;
3693
3374
  border: none;
3694
3375
  }
3695
-
3696
3376
  &[aria-disabled='true'] {
3697
3377
  cursor: not-allowed;
3698
3378
  background-color: var(--qti-disabled-bg);
@@ -3700,47 +3380,32 @@ Make sure to test your application with a production build as repeat registratio
3700
3380
  border-color: var(--qti-border-color);
3701
3381
  outline: 4px solid var(--qti-disabled-bg);
3702
3382
  }
3703
-
3704
3383
  width: 100%;
3705
-
3706
3384
  height: 100%;
3707
-
3708
3385
  background-color: transparent;
3709
-
3710
3386
  margin: 0;
3711
-
3712
3387
  padding: 0;
3713
-
3714
3388
  border: 0;
3715
-
3716
3389
  box-sizing: border-box;
3717
-
3718
3390
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3719
-
3720
3391
  outline: none
3721
3392
  }
3722
-
3723
3393
  &[shape='square'] {
3724
-
3725
3394
  &:hover {
3726
3395
  }
3727
-
3728
3396
  &:focus {
3729
3397
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3730
3398
  }
3731
-
3732
3399
  &[aria-checked='true'] {
3733
3400
  border-color: var(--qti-border-active);
3734
3401
  background-color: var(--qti-bg-active);
3735
3402
  }
3736
-
3737
3403
  &[aria-readonly='true'] {
3738
3404
  cursor: pointer;
3739
3405
  background-color: var(--qti-bg);
3740
3406
  outline: 0;
3741
3407
  border: none;
3742
3408
  }
3743
-
3744
3409
  &[aria-disabled='true'] {
3745
3410
  cursor: not-allowed;
3746
3411
  background-color: var(--qti-disabled-bg);
@@ -3748,28 +3413,21 @@ Make sure to test your application with a production build as repeat registratio
3748
3413
  border-color: var(--qti-border-color);
3749
3414
  outline: 4px solid var(--qti-disabled-bg);
3750
3415
  }
3751
-
3752
3416
  width: 100%;
3753
-
3754
3417
  height: 100%;
3755
-
3756
3418
  background-color: transparent;
3757
-
3758
3419
  margin: 0;
3759
-
3760
3420
  padding: 0;
3761
-
3762
3421
  border: 0;
3763
-
3764
3422
  box-sizing: border-box;
3765
-
3766
3423
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3767
-
3768
3424
  outline: none
3769
3425
  }
3770
3426
  }
3771
3427
  }
3428
+ }
3772
3429
 
3430
+ @layer qti-components {
3773
3431
  qti-associate-interaction {
3774
3432
  &::part(message) {
3775
3433
  display: none;
@@ -3780,64 +3438,38 @@ Make sure to test your application with a production build as repeat registratio
3780
3438
  border-radius: 4px;
3781
3439
  margin-top: 8px;
3782
3440
  }
3783
- /* General styles for active and enabled states */
3784
3441
  &:state(--dragzone-active) slot[name='qti-simple-associable-choice'] {
3785
3442
  border-color: var(--qti-border-active);
3786
3443
  background-color: var(--qti-bg-active);
3787
3444
  }
3788
-
3789
3445
  &:state(--dragzone-enabled) slot[name='qti-simple-associable-choice'] {
3790
3446
  background-color: var(--qti-bg-active);
3791
3447
  }
3792
-
3793
- & qti-simple-associable-choice, /* drags when in lightdom */
3794
- &::part(qti-simple-associable-choice) /* drags when in shadowdom */ {
3795
-
3448
+ & qti-simple-associable-choice,
3449
+ &::part(qti-simple-associable-choice) {
3796
3450
  &:hover {
3797
3451
  }
3798
-
3799
3452
  &:focus {
3800
3453
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3801
3454
  }
3802
-
3803
3455
  &[dragging] {
3804
3456
  pointer-events: none;
3805
3457
  rotate: -2deg;
3806
3458
  box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3807
3459
  0 4px 8px rgb(0 0 0 / 10%);
3808
3460
  }
3809
-
3810
3461
  box-sizing: border-box;
3811
-
3812
3462
  transition: transform 200ms ease-out,
3813
3463
  box-shadow 200ms ease-out,
3814
3464
  rotate 200ms ease-out;
3815
-
3816
3465
  cursor: grab;
3817
-
3818
3466
  background-color: var(--qti-bg);
3819
-
3820
3467
  padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3821
-
3822
3468
  border-radius: var(--qti-border-radius);
3823
-
3824
3469
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3825
-
3826
3470
  outline: none
3827
3471
  }
3828
-
3829
- /* display: flex;
3830
- overflow: hidden;
3831
- align-items: center; */
3832
-
3833
- /* &::part(drop-container) {
3834
- display: flex;
3835
- flex-direction: column;
3836
- gap: var(--qti-gap-size);
3837
- } */
3838
-
3839
3472
  &::part(drop-list) {
3840
-
3841
3473
  display: grid;
3842
3474
  height: 3rem;
3843
3475
  min-width: 10rem;
@@ -3848,21 +3480,17 @@ Make sure to test your application with a production build as repeat registratio
3848
3480
  position: relative;
3849
3481
  background-color: var(--qti-bg);
3850
3482
  }
3851
-
3852
3483
  &::part(drop-list):focus {
3853
3484
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3854
3485
  }
3855
-
3856
3486
  &::part(drop-list)[dragging] {
3857
3487
  border-color: var(--qti-border-active);
3858
3488
  background-color: var(--qti-bg-active);
3859
3489
  }
3860
-
3861
- /* &::part(drop-list) {
3862
- @apply act;
3863
- } */
3864
3490
  }
3491
+ }
3865
3492
 
3493
+ @layer qti-components {
3866
3494
  qti-graphic-order-interaction {
3867
3495
  &::part(message) {
3868
3496
  display: none;
@@ -3873,33 +3501,27 @@ Make sure to test your application with a production build as repeat registratio
3873
3501
  border-radius: 4px;
3874
3502
  margin-top: 8px;
3875
3503
  }
3876
-
3877
3504
  & qti-hotspot-choice {
3878
3505
  width: 100%;
3879
3506
  height: 100%;
3880
3507
  background-color: rgb(128 128 128 / 30%);
3881
3508
  padding: 0;
3882
-
3883
3509
  &:hover {
3884
3510
  background-color: rgb(128 128 128 / 70%);
3885
3511
  }
3886
-
3887
3512
  &:focus {
3888
3513
  background-color: rgb(128 128 128 / 70%);
3889
3514
  }
3890
-
3891
3515
  &:state(--checked),
3892
3516
  &[aria-checked='true'] {
3893
3517
  background-color: rgb(128 128 128 / 70%);
3894
3518
  }
3895
-
3896
3519
  &[aria-readonly='true'] {
3897
3520
  cursor: pointer;
3898
3521
  background-color: var(--qti-bg);
3899
3522
  outline: 0;
3900
3523
  border: none;
3901
3524
  }
3902
-
3903
3525
  &[aria-disabled='true'] {
3904
3526
  cursor: not-allowed;
3905
3527
  background-color: var(--qti-disabled-bg);
@@ -3907,67 +3529,55 @@ Make sure to test your application with a production build as repeat registratio
3907
3529
  border-color: var(--qti-border-color);
3908
3530
  outline: 4px solid var(--qti-disabled-bg);
3909
3531
  }
3910
-
3911
3532
  &[aria-ordervalue] {
3912
3533
  display: grid;
3913
3534
  place-content: center;
3914
3535
  }
3915
-
3916
3536
  &[aria-ordervalue]::after {
3917
3537
  content: attr(aria-ordervalue) !important;
3918
3538
  }
3919
-
3920
3539
  &[aria-ordercorrectvalue] {
3921
3540
  display: grid;
3922
3541
  place-content: center;
3923
3542
  }
3924
-
3925
- /* When both attributes are present */
3926
3543
  &[aria-ordercorrectvalue][aria-ordervalue]::after {
3927
3544
  content: 'C=' attr(aria-ordercorrectvalue) ' R=' attr(aria-ordervalue) !important;
3928
3545
  color: var(--qti-correct);
3929
3546
  }
3930
-
3931
- /* When only aria-ordercorrectvalue is present */
3932
3547
  &[aria-ordercorrectvalue]:not([aria-ordervalue])::after {
3933
3548
  content: 'C=' attr(aria-ordercorrectvalue) !important;
3934
3549
  color: var(--qti-correct);
3935
3550
  }
3936
3551
  }
3937
-
3938
3552
  &.qti-selections-light {
3939
3553
  &:state(--dragzone-active)::part(drags) {
3940
3554
  background-color: var(--qti-light-bg-active);
3941
3555
  border-color: var(--qti-light-border-active);
3942
3556
  }
3943
-
3944
3557
  &:state(--dragzone-enabled)::part(drags) {
3945
3558
  background-color: var(--qti-light-bg-active);
3946
3559
  }
3947
3560
  }
3948
-
3949
3561
  &.qti-selections-dark {
3950
3562
  &:state(--dragzone-active)::part(drags) {
3951
3563
  background-color: var(--qti-dark-bg-active);
3952
3564
  border-color: var(--qti-dark-border-active);
3953
3565
  }
3954
-
3955
3566
  &:state(--dragzone-enabled)::part(drags) {
3956
3567
  background-color: var(--qti-dark-bg-active);
3957
3568
  }
3958
3569
  }
3959
-
3960
- /* General styles for active and enabled states */
3961
3570
  &:state(--dragzone-active)::part(drags) {
3962
3571
  border-color: var(--qti-border-active);
3963
3572
  background-color: var(--qti-bg-active);
3964
3573
  }
3965
-
3966
3574
  &:state(--dragzone-enabled)::part(drags) {
3967
3575
  background-color: var(--qti-bg-active);
3968
3576
  }
3969
3577
  }
3578
+ }
3970
3579
 
3580
+ @layer qti-components {
3971
3581
  qti-graphic-associate-interaction {
3972
3582
  &::part(message) {
3973
3583
  display: none;
@@ -3980,29 +3590,23 @@ Make sure to test your application with a production build as repeat registratio
3980
3590
  }
3981
3591
  position: relative;
3982
3592
  display: block;
3983
-
3984
3593
  & qti-associable-hotspot {
3985
3594
  &[shape='circle'] {
3986
-
3987
3595
  &:hover {
3988
3596
  }
3989
-
3990
3597
  &:focus {
3991
3598
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3992
3599
  }
3993
-
3994
3600
  &[aria-checked='true'] {
3995
3601
  border-color: var(--qti-border-active);
3996
3602
  background-color: var(--qti-bg-active);
3997
3603
  }
3998
-
3999
3604
  &[aria-readonly='true'] {
4000
3605
  cursor: pointer;
4001
3606
  background-color: var(--qti-bg);
4002
3607
  outline: 0;
4003
3608
  border: none;
4004
3609
  }
4005
-
4006
3610
  &[aria-disabled='true'] {
4007
3611
  cursor: not-allowed;
4008
3612
  background-color: var(--qti-disabled-bg);
@@ -4010,47 +3614,32 @@ Make sure to test your application with a production build as repeat registratio
4010
3614
  border-color: var(--qti-border-color);
4011
3615
  outline: 4px solid var(--qti-disabled-bg);
4012
3616
  }
4013
-
4014
3617
  width: 100%;
4015
-
4016
3618
  height: 100%;
4017
-
4018
3619
  background-color: transparent;
4019
-
4020
3620
  margin: 0;
4021
-
4022
3621
  padding: 0;
4023
-
4024
3622
  border: 0;
4025
-
4026
3623
  box-sizing: border-box;
4027
-
4028
3624
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4029
-
4030
3625
  outline: none
4031
3626
  }
4032
-
4033
3627
  &[shape='square'] {
4034
-
4035
3628
  &:hover {
4036
3629
  }
4037
-
4038
3630
  &:focus {
4039
3631
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4040
3632
  }
4041
-
4042
3633
  &[aria-checked='true'] {
4043
3634
  border-color: var(--qti-border-active);
4044
3635
  background-color: var(--qti-bg-active);
4045
3636
  }
4046
-
4047
3637
  &[aria-readonly='true'] {
4048
3638
  cursor: pointer;
4049
3639
  background-color: var(--qti-bg);
4050
3640
  outline: 0;
4051
3641
  border: none;
4052
3642
  }
4053
-
4054
3643
  &[aria-disabled='true'] {
4055
3644
  cursor: not-allowed;
4056
3645
  background-color: var(--qti-disabled-bg);
@@ -4058,108 +3647,89 @@ Make sure to test your application with a production build as repeat registratio
4058
3647
  border-color: var(--qti-border-color);
4059
3648
  outline: 4px solid var(--qti-disabled-bg);
4060
3649
  }
4061
-
4062
3650
  width: 100%;
4063
-
4064
3651
  height: 100%;
4065
-
4066
3652
  background-color: transparent;
4067
-
4068
3653
  margin: 0;
4069
-
4070
3654
  padding: 0;
4071
-
4072
3655
  border: 0;
4073
-
4074
3656
  box-sizing: border-box;
4075
-
4076
3657
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4077
-
4078
3658
  outline: none
4079
3659
  }
4080
3660
  }
4081
-
4082
3661
  &.qti-selections-light {
4083
3662
  &:state(--dragzone-active)::part(drags) {
4084
3663
  background-color: var(--qti-light-bg-active);
4085
3664
  border-color: var(--qti-light-border-active);
4086
3665
  }
4087
-
4088
3666
  &:state(--dragzone-enabled)::part(drags) {
4089
3667
  background-color: var(--qti-light-bg-active);
4090
3668
  }
4091
3669
  }
4092
-
4093
3670
  &.qti-selections-dark {
4094
3671
  &:state(--dragzone-active)::part(drags) {
4095
3672
  background-color: var(--qti-dark-bg-active);
4096
3673
  border-color: var(--qti-dark-border-active);
4097
3674
  }
4098
-
4099
3675
  &:state(--dragzone-enabled)::part(drags) {
4100
3676
  background-color: var(--qti-dark-bg-active);
4101
3677
  }
4102
3678
  }
4103
-
4104
- /* General styles for active and enabled states */
4105
3679
  &:state(--dragzone-active)::part(drags) {
4106
3680
  border-color: var(--qti-border-active);
4107
3681
  background-color: var(--qti-bg-active);
4108
3682
  }
4109
-
4110
3683
  &:state(--dragzone-enabled)::part(drags) {
4111
3684
  background-color: var(--qti-bg-active);
4112
3685
  }
4113
3686
  }
3687
+ }
4114
3688
 
3689
+ @layer qti-components {
4115
3690
  qti-slider-interaction {
4116
3691
  --qti-tick-color: rgb(229 231 235 / 100%);
4117
3692
  --qti-tick-width: 1px;
4118
3693
  }
3694
+ }
4119
3695
 
3696
+ @layer qti-components {
4120
3697
  qti-select-point-interaction {
4121
3698
  &::part(point) {
4122
3699
  &:hover {
4123
3700
  }
4124
-
4125
3701
  &:focus {
4126
3702
  box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4127
3703
  }
4128
-
4129
3704
  box-sizing: border-box;
4130
-
4131
3705
  border-radius: 100%;
4132
-
4133
3706
  border: 1px solid white;
4134
-
4135
3707
  background-color: black;
4136
-
4137
3708
  opacity: 0.5;
4138
-
4139
3709
  padding: 0;
4140
-
4141
3710
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4142
-
4143
3711
  outline: none;
4144
3712
  }
4145
-
4146
3713
  &::part(correct) {
4147
3714
  background-color: var(--qti-correct);
4148
3715
  }
4149
-
4150
3716
  &::part(incorrect) {
4151
3717
  background-color: var(--qti-incorrect);
4152
3718
  }
4153
3719
  }
3720
+ }
4154
3721
 
3722
+ @layer qti-components {
4155
3723
  qti-position-object-stage {
4156
3724
  & qti-position-object-interaction {
4157
3725
  /* no styles necessary, only layout styles, defined in the component */
4158
3726
  }
4159
3727
  }
3728
+ }
4160
3729
 
3730
+ @layer qti-components {
4161
3731
  qti-prompt {
4162
- margin: 0.5rem 0; /* my-2 */
3732
+ margin: 0.5rem 0;
4163
3733
  display: block;
4164
3734
  width: 100%;
4165
3735
  }
@@ -4206,7 +3776,7 @@ div.full-correct-response-inline {
4206
3776
  ${x(this,Wr)}
4207
3777
  <slot></slot>
4208
3778
  ${Qi(this.testDoc,f`<span>Loading...</span>`)}
4209
- `}};Wr=new WeakMap,Bt=new WeakSet,ya=function(){let e=this.querySelector("template");$(this,Wr,e?e.content:f``)},xa=function(){let e=new CSSStyleSheet;e.replaceSync(Yi),this.shadowRoot.adoptedStyleSheets=[e]},c([u({type:String,attribute:"test-url"})],Oe.prototype,"testURL",2),c([C()],Oe.prototype,"testDoc",2),c([C()],Oe.prototype,"testXML",2),c([O("testURL",{waitUntilFirstUpdate:!0})],Oe.prototype,"handleTestURLChange",1),c([O("testXML",{waitUntilFirstUpdate:!0})],Oe.prototype,"handleTestXMLChange",1),Oe=c([w("test-container")],Oe);var Ft=class extends b{render(){let r=this.computedContext?.testParts.flatMap(s=>s.sections.flatMap(n=>n.items)).find(s=>s.active);if(!r||!r.variables)return f``;let e=r.variables.filter(s=>s.type==="response"),t=r.variables.filter(s=>s.type==="outcome"),i=(s,n)=>f`
3779
+ `}};Wr=new WeakMap,Bt=new WeakSet,ya=function(){let e=this.querySelector("template");$(this,Wr,e?e.content:f``)},xa=function(){let e=new CSSStyleSheet;e.replaceSync(Yi),this.shadowRoot.adoptedStyleSheets=[e]},c([u({type:String,attribute:"test-url"})],Oe.prototype,"testURL",2),c([w()],Oe.prototype,"testDoc",2),c([w()],Oe.prototype,"testXML",2),c([O("testURL",{waitUntilFirstUpdate:!0})],Oe.prototype,"handleTestURLChange",1),c([O("testXML",{waitUntilFirstUpdate:!0})],Oe.prototype,"handleTestXMLChange",1),Oe=c([C("test-container")],Oe);var Ft=class extends b{render(){let r=this.computedContext?.testParts.flatMap(s=>s.sections.flatMap(n=>n.items)).find(s=>s.active);if(!r||!r.variables)return f``;let e=r.variables.filter(s=>s.type==="response"),t=r.variables.filter(s=>s.type==="outcome"),i=(s,n)=>f`
4210
3780
  <h3>${n}</h3>
4211
3781
  <table>
4212
3782
  <thead>
@@ -4253,26 +3823,26 @@ div.full-correct-response-inline {
4253
3823
  margin-top: 20px;
4254
3824
  font-size: 16px;
4255
3825
  }
4256
- `,c([k({context:N,subscribe:!0})],Ft.prototype,"computedContext",2),Ft=c([w("test-print-item-variables")],Ft);var Gr,Xr=class extends b{constructor(){super();T(this,Gr);$(this,Gr,this.attachInternals()),x(this,Gr).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ae(e)}render(){if(!this.computedContext)return f``;let e=this.computedContext.testParts.flatMap(t=>t.sections);return f` ${e.map(t=>this.myTemplate({item:t}))} `}};Gr=new WeakMap,c([k({context:N,subscribe:!0})],Xr.prototype,"computedContext",2),Xr=c([w("test-section-buttons-stamp")],Xr);var Ji,qa,jt=class extends b{constructor(){super();T(this,Ji);this.sectionId=null;this.addEventListener("click",()=>I(this,Ji,qa).call(this,this.sectionId))}render(){return f` <slot></slot> `}};Ji=new WeakSet,qa=function(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"section",id:e}}))},jt.styles=y`
3826
+ `,c([M({context:N,subscribe:!0})],Ft.prototype,"computedContext",2),Ft=c([C("test-print-item-variables")],Ft);var Gr,Xr=class extends b{constructor(){super();T(this,Gr);$(this,Gr,this.attachInternals()),x(this,Gr).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ae(e)}render(){if(!this.computedContext)return f``;let e=this.computedContext.testParts.flatMap(t=>t.sections);return f` ${e.map(t=>this.myTemplate({item:t}))} `}};Gr=new WeakMap,c([M({context:N,subscribe:!0})],Xr.prototype,"computedContext",2),Xr=c([C("test-section-buttons-stamp")],Xr);var Ji,qa,jt=class extends b{constructor(){super();T(this,Ji);this.sectionId=null;this.addEventListener("click",()=>I(this,Ji,qa).call(this,this.sectionId))}render(){return f` <slot></slot> `}};Ji=new WeakSet,qa=function(e){this.dispatchEvent(new CustomEvent("qti-request-navigation",{composed:!0,bubbles:!0,detail:{type:"section",id:e}}))},jt.styles=y`
4257
3827
  :host {
4258
3828
  ${Q};
4259
3829
  }
4260
3830
  :host([disabled]) {
4261
3831
  ${Y};
4262
3832
  }
4263
- `,c([u({type:String,attribute:"section-id"})],jt.prototype,"sectionId",2),jt=c([w("test-section-link")],jt);var Qr=class extends b{render(){return f` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};c([C(),k({context:N,subscribe:!0})],Qr.prototype,"computedContext",2),Qr=c([w("test-print-context")],Qr);var vt=class extends b{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=Ae(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(h=>h.active),i=t?.sections.find(h=>h.active),s=i?.items.find(h=>h.active),{variables:n,...a}=s||{};if(!t||!i||!s)return;let l={...t,items:t.sections.flatMap(h=>h.items.map(({variables:g,...v})=>v)),sections:t.sections.map(h=>({...h,items:h.items.map(({variables:g,...v})=>v)}))},d={...i,items:i.items.map(({variables:h,...g})=>g)},{testParts:p,...m}=this.computedContext;this.stampContext={view:this.computedContext.view,activeItem:a,activeSection:d,activeTestpart:l,test:m},this.dispatchEvent(new CustomEvent("qti-stamp-context-updated",{detail:this.stampContext,bubbles:!0}))}render(){return f` ${this.debug?f`<small><pre>${JSON.stringify(this.stampContext,null,2)}</pre></small>`:L}
4264
- ${this.myTemplate?this.myTemplate(this.stampContext):L}`}};c([u({type:Boolean,reflect:!0})],vt.prototype,"debug",2),c([C(),k({context:N,subscribe:!0})],vt.prototype,"computedContext",2),c([C()],vt.prototype,"stampContext",2),vt=c([w("test-stamp")],vt);var Ki,wa,yt=class extends b{constructor(){super();T(this,Ki);this.view="";this.disabled=!1;this.myTemplate=null;this.addEventListener("click",e=>{let t=e.target,i=parseFloat(t.value);t.tagName==="INPUT"&&I(this,Ki,wa).call(this,i)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Ae(e)}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(d=>d.items)).find(l=>l.active);if(!e||!e.variables)return f``;let t=e.variables.find(l=>l.identifier=="MAXSCORE")?.value,i=e.variables.find(l=>l.identifier=="SCORE"),s=i?.value,n=i?.externalScored!=="human";if(!t||!i)return L;let a=[...Array(Number(t)+1).keys()];return f`${this.myTemplate?this.myTemplate({scores:a,score:s,disabled:n}):L}`}};Ki=new WeakSet,wa=function(e){let s=(this.computedContext?.testParts.find(n=>n.active)).sections.flatMap(n=>n.items).find(n=>n.active)?.identifier;this.dispatchEvent(new CustomEvent("test-update-outcome-variable",{detail:{assessmentItemRefId:s,outcomeVariableId:"SCORE",value:e},bubbles:!0}))},c([u({type:String,attribute:"view"})],yt.prototype,"view",2),c([u({type:Boolean})],yt.prototype,"disabled",2),c([k({context:N,subscribe:!0})],yt.prototype,"computedContext",2),yt=c([w("test-scoring-buttons")],yt);var Yr=class extends b{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let r=this.querySelector("template");if(!r){this.myTemplate=null;return}this.myTemplate=Ae(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 f`${this.myTemplate?this.myTemplate({view:this.sessionContext?.view}):L}`}};c([k({context:Fe,subscribe:!0})],Yr.prototype,"sessionContext",2),Yr=c([w("test-view-toggle")],Yr);var Wt=class extends b{constructor(){super(...arguments);this.view=null}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(d=>d.items)).find(l=>l.active);if(!e||!e.variables)return f``;if(e.category==="dep-informational")return f`<div>${this.dataset.informational}</div>`;let t=e?.variables.find(l=>l.identifier==="completionStatus")?.value,i=e?.variables.find(l=>l.identifier=="SCORE"),s=parseFloat(i?.value),n=e.externalScored;return f`<div>${t!=="completed"?this.dataset.textNoResponse:!n&&s!==void 0&&!Number.isNaN(s)?s>0?this.dataset.textCorrect:this.dataset.textIncorrect:n==="externalMachine"?Number.isNaN(s)||s===void 0?this.dataset.scoreUnknown:`We hebben je antwoord ${s===0?"geen punten":s==1?"\xE9\xE9n punt":`${s} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`:n==="human"?Number.isNaN(s)?"":"Deze score heb je zelf toegekend.":this.dataset.inProgress}</div>`}};c([k({context:N,subscribe:!0})],Wt.prototype,"computedContext",2),c([u({type:String,attribute:"view"})],Wt.prototype,"view",2),Wt=c([w("test-scoring-feedback")],Wt);var Jr=class extends b{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 f` <slot></slot> `}};Jr.styles=y`
3833
+ `,c([u({type:String,attribute:"section-id"})],jt.prototype,"sectionId",2),jt=c([C("test-section-link")],jt);var Qr=class extends b{render(){return f` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};c([w(),M({context:N,subscribe:!0})],Qr.prototype,"computedContext",2),Qr=c([C("test-print-context")],Qr);var vt=class extends b{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=Ae(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(h=>h.active),i=t?.sections.find(h=>h.active),s=i?.items.find(h=>h.active),{variables:n,...a}=s||{};if(!t||!i||!s)return;let l={...t,items:t.sections.flatMap(h=>h.items.map(({variables:g,...v})=>v)),sections:t.sections.map(h=>({...h,items:h.items.map(({variables:g,...v})=>v)}))},d={...i,items:i.items.map(({variables:h,...g})=>g)},{testParts:p,...m}=this.computedContext;this.stampContext={view:this.computedContext.view,activeItem:a,activeSection:d,activeTestpart:l,test:m},this.dispatchEvent(new CustomEvent("qti-stamp-context-updated",{detail:this.stampContext,bubbles:!0}))}render(){return f` ${this.debug?f`<small><pre>${JSON.stringify(this.stampContext,null,2)}</pre></small>`:L}
3834
+ ${this.myTemplate?this.myTemplate(this.stampContext):L}`}};c([u({type:Boolean,reflect:!0})],vt.prototype,"debug",2),c([w(),M({context:N,subscribe:!0})],vt.prototype,"computedContext",2),c([w()],vt.prototype,"stampContext",2),vt=c([C("test-stamp")],vt);var Ki,Ca,yt=class extends b{constructor(){super();T(this,Ki);this.view="";this.disabled=!1;this.myTemplate=null;this.addEventListener("click",e=>{let t=e.target,i=parseFloat(t.value);t.tagName==="INPUT"&&I(this,Ki,Ca).call(this,i)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Ae(e)}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(d=>d.items)).find(l=>l.active);if(!e||!e.variables)return f``;let t=e.variables.find(l=>l.identifier=="MAXSCORE")?.value,i=e.variables.find(l=>l.identifier=="SCORE"),s=i?.value,n=i?.externalScored!=="human";if(!t||!i)return L;let a=[...Array(Number(t)+1).keys()];return f`${this.myTemplate?this.myTemplate({scores:a,score:s,disabled:n}):L}`}};Ki=new WeakSet,Ca=function(e){let s=(this.computedContext?.testParts.find(n=>n.active)).sections.flatMap(n=>n.items).find(n=>n.active)?.identifier;this.dispatchEvent(new CustomEvent("test-update-outcome-variable",{detail:{assessmentItemRefId:s,outcomeVariableId:"SCORE",value:e},bubbles:!0}))},c([u({type:String,attribute:"view"})],yt.prototype,"view",2),c([u({type:Boolean})],yt.prototype,"disabled",2),c([M({context:N,subscribe:!0})],yt.prototype,"computedContext",2),yt=c([C("test-scoring-buttons")],yt);var Yr=class extends b{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let r=this.querySelector("template");if(!r){this.myTemplate=null;return}this.myTemplate=Ae(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 f`${this.myTemplate?this.myTemplate({view:this.sessionContext?.view}):L}`}};c([M({context:Fe,subscribe:!0})],Yr.prototype,"sessionContext",2),Yr=c([C("test-view-toggle")],Yr);var Wt=class extends b{constructor(){super(...arguments);this.view=null}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(d=>d.items)).find(l=>l.active);if(!e||!e.variables)return f``;if(e.category==="dep-informational")return f`<div>${this.dataset.informational}</div>`;let t=e?.variables.find(l=>l.identifier==="completionStatus")?.value,i=e?.variables.find(l=>l.identifier=="SCORE"),s=parseFloat(i?.value),n=e.externalScored;return f`<div>${t!=="completed"?this.dataset.textNoResponse:!n&&s!==void 0&&!Number.isNaN(s)?s>0?this.dataset.textCorrect:this.dataset.textIncorrect:n==="externalMachine"?Number.isNaN(s)||s===void 0?this.dataset.scoreUnknown:`We hebben je antwoord ${s===0?"geen punten":s==1?"\xE9\xE9n punt":`${s} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`:n==="human"?Number.isNaN(s)?"":"Deze score heb je zelf toegekend.":this.dataset.inProgress}</div>`}};c([M({context:N,subscribe:!0})],Wt.prototype,"computedContext",2),c([u({type:String,attribute:"view"})],Wt.prototype,"view",2),Wt=c([C("test-scoring-feedback")],Wt);var Jr=class extends b{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 f` <slot></slot> `}};Jr.styles=y`
4265
3835
  :host {
4266
3836
  ${Q};
4267
3837
  }
4268
3838
  :host([disabled]) {
4269
3839
  ${Y};
4270
3840
  }
4271
- `,Jr=c([w("test-check-item")],Jr);var Kr,Xt,Ca,Ea,Pe=class extends b{constructor(){super(...arguments);T(this,Xt);this.itemURL=null;this.itemDoc=null;this.itemXML=null;T(this,Kr,null)}async handleItemURLChange(){if(this.itemURL)try{let e=await ve().load(this.itemURL);this.itemDoc=e.htmlDoc()}catch(e){console.error("Error loading or parsing XML:",e)}}handleItemXMLChange(){if(this.itemXML)try{this.itemDoc=ve().parse(this.itemXML).htmlDoc()}catch(e){console.error("Error parsing XML:",e)}}async connectedCallback(){super.connectedCallback(),I(this,Xt,Ca).call(this),I(this,Xt,Ea).call(this),this.itemURL&&this.handleItemURLChange(),this.itemXML&&this.handleItemXMLChange()}render(){return f`
3841
+ `,Jr=c([C("test-check-item")],Jr);var Kr,Xt,wa,Ea,Pe=class extends b{constructor(){super(...arguments);T(this,Xt);this.itemURL=null;this.itemDoc=null;this.itemXML=null;T(this,Kr,null)}async handleItemURLChange(){if(this.itemURL)try{let e=await ve().load(this.itemURL);this.itemDoc=e.htmlDoc()}catch(e){console.error("Error loading or parsing XML:",e)}}handleItemXMLChange(){if(this.itemXML)try{this.itemDoc=ve().parse(this.itemXML).htmlDoc()}catch(e){console.error("Error parsing XML:",e)}}async connectedCallback(){super.connectedCallback(),I(this,Xt,wa).call(this),I(this,Xt,Ea).call(this),this.itemURL&&this.handleItemURLChange(),this.itemXML&&this.handleItemXMLChange()}render(){return f`
4272
3842
  ${x(this,Kr)}
4273
3843
  <slot></slot>
4274
3844
  ${Qi(this.itemDoc,f`<span>Loading...</span>`)}
4275
- `}};Kr=new WeakMap,Xt=new WeakSet,Ca=function(){let e=this.querySelector("template");$(this,Kr,e?e.content:f``)},Ea=function(){let e=new CSSStyleSheet;e.replaceSync(Yi),this.shadowRoot.adoptedStyleSheets=[e]},c([u({type:String,attribute:"item-url"})],Pe.prototype,"itemURL",2),c([C()],Pe.prototype,"itemDoc",2),c([C()],Pe.prototype,"itemXML",2),c([O("itemURL",{waitUntilFirstUpdate:!0})],Pe.prototype,"handleItemURLChange",1),c([O("itemXML",{waitUntilFirstUpdate:!0})],Pe.prototype,"handleItemXMLChange",1),Pe=c([w("item-container")],Pe);var Zi,Ta,xt=class extends b{constructor(){super(...arguments);T(this,Zi);this.label="Correct response mode";this._options={internal:"Internal",full:"Full (copy)"}}render(){return f`
3845
+ `}};Kr=new WeakMap,Xt=new WeakSet,wa=function(){let e=this.querySelector("template");$(this,Kr,e?e.content:f``)},Ea=function(){let e=new CSSStyleSheet;e.replaceSync(Yi),this.shadowRoot.adoptedStyleSheets=[e]},c([u({type:String,attribute:"item-url"})],Pe.prototype,"itemURL",2),c([w()],Pe.prototype,"itemDoc",2),c([w()],Pe.prototype,"itemXML",2),c([O("itemURL",{waitUntilFirstUpdate:!0})],Pe.prototype,"handleItemURLChange",1),c([O("itemXML",{waitUntilFirstUpdate:!0})],Pe.prototype,"handleItemXMLChange",1),Pe=c([C("item-container")],Pe);var Zi,Ta,xt=class extends b{constructor(){super(...arguments);T(this,Zi);this.label="Correct response mode";this._options={internal:"Internal",full:"Full (copy)"}}render(){return f`
4276
3846
  <label part="label" for="modeSelect">${this.label}</label>
4277
3847
  <select
4278
3848
  part="select"
@@ -4283,7 +3853,7 @@ div.full-correct-response-inline {
4283
3853
  ${this._options[e]}
4284
3854
  </option>`)}
4285
3855
  </select>
4286
- `}};Zi=new WeakSet,Ta=function(e){this.dispatchEvent(new CustomEvent("item-switch-correct-response-mode",{detail:e,bubbles:!0}))},c([k({context:ae,subscribe:!0})],xt.prototype,"itemContext",2),c([u({type:String})],xt.prototype,"label",2),c([C()],xt.prototype,"_options",2),xt=c([w("item-correct-response-mode")],xt);var Aa=y`
3856
+ `}};Zi=new WeakSet,Ta=function(e){this.dispatchEvent(new CustomEvent("item-switch-correct-response-mode",{detail:e,bubbles:!0}))},c([M({context:ae,subscribe:!0})],xt.prototype,"itemContext",2),c([u({type:String})],xt.prototype,"label",2),c([w()],xt.prototype,"_options",2),xt=c([C("item-correct-response-mode")],xt);var Aa=y`
4287
3857
  display: inline-flex;
4288
3858
  align-items: center;
4289
3859
  cursor: pointer;
@@ -4299,21 +3869,21 @@ div.full-correct-response-inline {
4299
3869
  `,ey=y`
4300
3870
  ${Aa};
4301
3871
  border: 1px solid gray;
4302
- `;var Gt,Zr,Qt,ka,Ma,he=class extends b{constructor(){super();T(this,Qt);this.shown=!1;this.disabled=!1;this.showCandidateCorrectionText="Show candidate correction";this.hideCandidateCorrectionText="Hide candidate correction";this.noCorrectResponseText="No correct response specified";T(this,Gt,!1);T(this,Zr,"")}updated(){if(!x(this,Gt)||x(this,Zr)!==this.computedContext?.identifier){$(this,Zr,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);$(this,Gt,e||t)}this.disabled=!x(this,Gt)}render(){return f` <div @click="${I(this,Qt,ka)}">${I(this,Qt,Ma).call(this)}</div> `}};Gt=new WeakMap,Zr=new WeakMap,Qt=new WeakSet,ka=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-candidate-correction",{detail:!this.shown,bubbles:!0}))},Ma=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCandidateCorrectionText:this.showCandidateCorrectionText},he.styles=y`
3872
+ `;var Gt,Zr,Qt,Ma,ka,he=class extends b{constructor(){super();T(this,Qt);this.shown=!1;this.disabled=!1;this.showCandidateCorrectionText="Show candidate correction";this.hideCandidateCorrectionText="Hide candidate correction";this.noCorrectResponseText="No correct response specified";T(this,Gt,!1);T(this,Zr,"")}updated(){if(!x(this,Gt)||x(this,Zr)!==this.computedContext?.identifier){$(this,Zr,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);$(this,Gt,e||t)}this.disabled=!x(this,Gt)}render(){return f` <div @click="${I(this,Qt,Ma)}">${I(this,Qt,ka).call(this)}</div> `}};Gt=new WeakMap,Zr=new WeakMap,Qt=new WeakSet,Ma=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-candidate-correction",{detail:!this.shown,bubbles:!0}))},ka=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCandidateCorrectionText:this.showCandidateCorrectionText},he.styles=y`
4303
3873
  :host {
4304
3874
  ${es};
4305
3875
  }
4306
3876
  :host([disabled]) {
4307
3877
  ${ts};
4308
3878
  }
4309
- `,c([k({context:Be,subscribe:!0})],he.prototype,"computedContext",2),c([u({type:Boolean,reflect:!0})],he.prototype,"shown",2),c([u({type:Boolean,reflect:!0})],he.prototype,"disabled",2),c([u({type:String})],he.prototype,"showCandidateCorrectionText",2),c([u({type:String})],he.prototype,"hideCandidateCorrectionText",2),c([u({type:String})],he.prototype,"noCorrectResponseText",2),he=c([w("item-show-candidate-correction")],he);var Yt,ei,Jt,Ia,Ra,fe=class extends b{constructor(){super(...arguments);T(this,Jt);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";T(this,Yt,!1);T(this,ei,"")}updated(){if(!x(this,Yt)||x(this,ei)!==this.computedContext?.identifier){$(this,ei,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);$(this,Yt,e||t)}this.disabled=!x(this,Yt)}render(){return f` <div @click="${I(this,Jt,Ia)}">${I(this,Jt,Ra).call(this)}</div> `}};Yt=new WeakMap,ei=new WeakMap,Jt=new WeakSet,Ia=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-correct-response",{detail:!this.shown,bubbles:!0}))},Ra=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},fe.styles=y`
3879
+ `,c([M({context:Be,subscribe:!0})],he.prototype,"computedContext",2),c([u({type:Boolean,reflect:!0})],he.prototype,"shown",2),c([u({type:Boolean,reflect:!0})],he.prototype,"disabled",2),c([u({type:String})],he.prototype,"showCandidateCorrectionText",2),c([u({type:String})],he.prototype,"hideCandidateCorrectionText",2),c([u({type:String})],he.prototype,"noCorrectResponseText",2),he=c([C("item-show-candidate-correction")],he);var Yt,ei,Jt,Ia,Ra,fe=class extends b{constructor(){super(...arguments);T(this,Jt);this.shown=!1;this.disabled=!1;this.showCorrectText="Show correct response";this.hideCorrectText="Hide correct response";this.noCorrectResponseText="No correct response specified";T(this,Yt,!1);T(this,ei,"")}updated(){if(!x(this,Yt)||x(this,ei)!==this.computedContext?.identifier){$(this,ei,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);$(this,Yt,e||t)}this.disabled=!x(this,Yt)}render(){return f` <div @click="${I(this,Jt,Ia)}">${I(this,Jt,Ra).call(this)}</div> `}};Yt=new WeakMap,ei=new WeakMap,Jt=new WeakSet,Ia=function(){this.disabled||this.dispatchEvent(new CustomEvent("item-show-correct-response",{detail:!this.shown,bubbles:!0}))},Ra=function(){return this.disabled?this.noCorrectResponseText:this.shown?this.hideCorrectText:this.showCorrectText},fe.styles=y`
4310
3880
  :host {
4311
3881
  ${es};
4312
3882
  }
4313
3883
  :host([disabled]) {
4314
3884
  ${ts};
4315
3885
  }
4316
- `,c([k({context:Be,subscribe:!0})],fe.prototype,"computedContext",2),c([u({type:Boolean,reflect:!0})],fe.prototype,"shown",2),c([u({type:Boolean,reflect:!0})],fe.prototype,"disabled",2),c([u({type:String})],fe.prototype,"showCorrectText",2),c([u({type:String})],fe.prototype,"hideCorrectText",2),c([u({type:String})],fe.prototype,"noCorrectResponseText",2),fe=c([w("item-show-correct-response")],fe);var Kt=class extends b{render(){let r=this.computedContext;if(!r||!r.variables)return f``;let e=r.variables.filter(s=>s.type==="response"),t=r.variables.filter(s=>s.type==="outcome"),i=(s,n)=>f`
3886
+ `,c([M({context:Be,subscribe:!0})],fe.prototype,"computedContext",2),c([u({type:Boolean,reflect:!0})],fe.prototype,"shown",2),c([u({type:Boolean,reflect:!0})],fe.prototype,"disabled",2),c([u({type:String})],fe.prototype,"showCorrectText",2),c([u({type:String})],fe.prototype,"hideCorrectText",2),c([u({type:String})],fe.prototype,"noCorrectResponseText",2),fe=c([C("item-show-correct-response")],fe);var Kt=class extends b{render(){let r=this.computedContext;if(!r||!r.variables)return f``;let e=r.variables.filter(s=>s.type==="response"),t=r.variables.filter(s=>s.type==="outcome"),i=(s,n)=>f`
4317
3887
  <h3>${n}</h3>
4318
3888
  <table>
4319
3889
  <thead>
@@ -4360,7 +3930,7 @@ div.full-correct-response-inline {
4360
3930
  margin-top: 20px;
4361
3931
  font-size: 16px;
4362
3932
  }
4363
- `,c([k({context:Be,subscribe:!0})],Kt.prototype,"computedContext",2),Kt=c([w("item-print-variables")],Kt);var K,ti,ri,rs,is,ss,G,_a,La,lo,$a,Oa,co,Zt=class extends b{constructor(){super();T(this,G);T(this,K);this.configContext={};T(this,ti,I(this,G,_a).bind(this));T(this,ri,I(this,G,La).bind(this));T(this,rs,I(this,G,lo).bind(this));T(this,is,I(this,G,$a).bind(this));T(this,ss,I(this,G,Oa).bind(this));this.addEventListener("qti-item-context-updated",x(this,ti)),this.addEventListener("qti-assessment-item-connected",x(this,ri)),this.addEventListener("item-show-correct-response",x(this,rs)),this.addEventListener("item-show-candidate-correction",x(this,is)),this.addEventListener("item-switch-correct-response-mode",x(this,ss))}render(){return f`<slot></slot>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-item-context-changed",x(this,ti)),this.removeEventListener("qti-assessment-item-connected",x(this,ri))}};K=new WeakMap,ti=new WeakMap,ri=new WeakMap,rs=new WeakMap,is=new WeakMap,ss=new WeakMap,G=new WeakSet,_a=function(e){I(this,G,co).call(this,e.detail.itemContext.identifier,e.detail?.itemContext?.variables||[])},La=function(e){let t=e.detail._context.variables;$(this,K,e.detail),this.computedContext=this.computedContext?.identifier===x(this,K).identifier?{...this.computedContext,title:x(this,K).title}:{identifier:x(this,K).identifier,title:x(this,K).title,adaptive:x(this,K).getAttribute("adaptive")?.toLowerCase()==="true"||!1,variables:t,correctResponseMode:"internal"},I(this,G,co).call(this,x(this,K).identifier,t||[])},lo=function(e){x(this,K)&&x(this,K).showCorrectResponse(e.detail)},$a=function(e){x(this,K)&&x(this,K).showCandidateCorrection(e.detail)},Oa=function(e){I(this,G,lo).call(this,new CustomEvent("item-show-correct-response",{detail:!1,bubbles:!0})),this.configContext={...this.configContext,correctResponseMode:e.detail}},co=function(e,t){let i=t?.find(p=>p.identifier=="SCORE")?.value,s=parseFloat(i?.toString()),n=t?.find(p=>p.identifier==="completionStatus")?.value,a=s!==void 0&&!isNaN(s)&&s>0,l=s!==void 0&&!isNaN(s)&&s<=0,d=n==="completed";this.computedContext={...this.computedContext,identifier:e,correct:a,incorrect:l,completed:d,variables:t}},c([C(),ee({context:Be})],Zt.prototype,"computedContext",2),c([C(),ee({context:ae})],Zt.prototype,"configContext",2),Zt=c([w("qti-item")],Zt);var Pa=(o,r,e)=>{class t extends o{}return t};var Se=(o,r,e,t)=>{class i extends Pa(o,e,r){constructor(){super(...arguments);this.observer=null;this.droppableObsever=null;this.resizeObserver=null;this.draggables=[];this.droppables=[];this.dragContainers=[];this.dragClone=null;this.dragSource=null;this.touchStartPoint=null;this.isDraggable=!1;this.cloneOffset={x:0,y:0};this.isDragging=!1;this.allDropzones=[];this.lastTarget=null;this.currentDropTarget=null;this.dragMoveRaf=0;this.pendingMove=null;this.dragBounds=null;this.dragCloneRect=null;this.dropzoneRects=new Map;this.dropzoneRectsDirty=!1;this.dragBoundsDirty=!1;this.dragCloneStyleCache=new WeakMap;this.onScrollOrResize=()=>{this.dropzoneRectsDirty=!0,this.dragBoundsDirty=!0,this.dragBoundsDirty=!0};this.onMove=this.handleTouchMove.bind(this);this.onEnd=this.handleTouchEnd.bind(this);this.onCancel=this.handleTouchCancel.bind(this);this.MIN_DRAG_DISTANCE=5;this.DRAG_CLONE_OPACITY=1;this.MAX_DRAGGABLE_WIDTH=600;this.dataTransfer={data:{},setData(a,l){this.data[a]=l},getData(a){return this.data[a]},effectAllowed:"move"};this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this.maxAssociations=0;this.draggablesModified=(a,l)=>{if(this.isMatchTabular())return;for(let p of l)this.draggables.includes(p)&&(this.draggables=this.draggables.filter(m=>m!==p),p.removeAttribute("tabindex"),p.removeEventListener("touchstart",this.handleTouchStart.bind(this)),p.removeEventListener("mousedown",this.handleTouchStart.bind(this)));for(let p of a)this.draggables.includes(p)||(this.draggables.push(p),p.setAttribute("tabindex","0"),p.hasTouchStartListener||(p.addEventListener("touchstart",this.handleTouchStart.bind(this),{passive:!1}),p.addEventListener("mousedown",this.handleTouchStart.bind(this),{passive:!1}),p.hasTouchStartListener=!0));let d=0;this.draggables.forEach(p=>{p.style.viewTransitionName=`drag-${d}-${this.getAttribute("identifier")||crypto.randomUUID()}`,p.setAttribute("qti-draggable","true"),d++})};this.droppablesModified=(a,l)=>{if(!this.isMatchTabular()){for(let d of l)this.droppables.includes(d)&&(this.droppables=this.droppables.filter(p=>p!==d),this.allDropzones=this.allDropzones.filter(p=>p!==d));for(let d of a)this.droppables.includes(d)||(this.droppables.push(d),this.allDropzones.push(d));for(let d of this.droppables)this.dataset.choicesContainerWidth&&(d.style.width=`${this.dataset.choicesContainerWidth}px`,d.style.boxSizing="border-box");this.dropzoneRectsDirty=!0,this.dragBoundsDirty=!0}}}handleDraggableContainerChange(a,l){this.isMatchTabular()||(a.length>0||l.length>0)&&this.dragContainersModified(a||[],l||[])}dragContainersModified(a,l){for(let d of l)this.dragContainers.includes(d)&&(this.dragContainers=this.dragContainers.filter(p=>p!==d),this.allDropzones=this.allDropzones.filter(p=>p!==d));for(let d of a)this.dragContainers.includes(d)||(this.dragContainers.push(d),this.allDropzones.push(d));this.dropzoneRectsDirty=!0,this.dragBoundsDirty=!0}handleDraggablesChange(a,l){this.isMatchTabular()||(a.length>0||l.length>0)&&this.draggablesModified(a||[],l||[])}handleDroppablesChange(a,l){this.isMatchTabular()||(a.length>0||l.length>0)&&this.droppablesModified(a||[],l||[])}firstUpdated(){if(super.firstUpdated(),this.isMatchTabular())return;this.hasAttribute("disabled")||(document.addEventListener("mousemove",this.onMove,{passive:!1}),document.addEventListener("mouseup",this.onEnd,{passive:!1}),document.addEventListener("touchmove",this.onMove,{passive:!1}),document.addEventListener("touchend",this.onEnd,{passive:!1}),document.addEventListener("touchcancel",this.onCancel,{passive:!1}));let l=Array.from(this.querySelectorAll(r)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(r)||[])),d=Array.from(this.querySelectorAll(e)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(e)||[])),p=Array.from(this.querySelectorAll(t)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(t)||[]));this.dragContainersModified(p,[]),this.droppablesModified(d,[]),this.draggablesModified(l,[]),this.updateMinDimensionsForDropZones(),this.observer=new MutationObserver(()=>this.updateMinDimensionsForDropZones()),this.observer.observe(this,{childList:!0,subtree:!0}),this.resizeObserver=new ResizeObserver(()=>this.updateMinDimensionsForDropZones()),this.querySelectorAll("qti-gap-text").forEach(h=>this.resizeObserver?.observe(h))}async moveDraggableToDroppable(a,l){if(this.isMatchTabular())return;a.style.transform="translate(0, 0)",l.tagName==="SLOT"?a.setAttribute("slot",l.getAttribute("name")):l.appendChild(a),this.checkAllMaxAssociations(),this.saveResponse()}activateDroppable(a){this.dragContainers.includes(a)?(this._internals.states.add("--dragzone-active"),a.setAttribute("active","")):(this._internals.states.delete("--dragzone-active"),a.setAttribute("active",""))}deactivateDroppable(a,l=!0){l&&this._internals.states.add("--dragzone-active"),a.removeAttribute("active")}connectedCallback(){super.connectedCallback()}isMatchTabular(){return this.classList.contains("qti-match-tabular")}async updateMinDimensionsForDropZones(){if(await this.updateComplete,this.isMatchTabular())return;this.dropzoneRectsDirty=!0;let a=this.querySelectorAll(r),l=this.querySelector(t)||this.shadowRoot?.querySelector(t),d=this.querySelectorAll(e),p=d[0]?.parentElement,m=this.determineMaxWidth(l,p),h=0,g=0;for(let v of a){v.style.maxWidth=m+"px";let{width:E,height:A}=await this.measureIntrinsicSize(v);h=Math.max(h,A),g=Math.max(g,E)}p&&(p.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${m}px,${g}px + 2 * var(--qti-dropzone-padding))), 1fr))`),l&&(l.style.minHeight=`${h}px`);for(let v of d){v.style.minHeight=`${h}px`,v.style.minWidth=`${g}px`;let E=v.shadowRoot?.querySelector('slot[part="dropslot"]');E&&(E.style.minHeight=`${h}px`)}}determineMaxWidth(a,l){let d=l??a;if(!d||d.clientWidth==0)return this.MAX_DRAGGABLE_WIDTH;let p=window.getComputedStyle(d),m=parseFloat(p.paddingLeft),h=parseFloat(p.paddingRight);return Math.min(this.MAX_DRAGGABLE_WIDTH,d.clientWidth-m-h)}async measureIntrinsicSize(a){let l=a.style.position;a.style.position="fixed";let d=a.getBoundingClientRect();return a.style.position=l,{width:d.width,height:d.height}}activateDroppables(a){if(this.isMatchTabular())return;this.dragContainers.forEach(d=>{d.setAttribute("enabled",""),d.hasAttribute("disabled")&&(d.contains(a)||d.shadowRoot&&d.shadowRoot.contains(a))&&d.removeAttribute("disabled")}),this.droppables.forEach(d=>{d.setAttribute("enabled",""),d.hasAttribute("disabled")&&(d.contains(a)||d.shadowRoot&&d.shadowRoot.contains(a))&&d.removeAttribute("disabled")})}activateDragLocation(){this._internals.states.add("--dragzone-enabled")}deactivateDragLocation(){this._internals.states.delete("--dragzone-enabled")}deactivateDroppables(){this.dragContainers.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active")}),this.droppables.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active")})}disconnectedCallback(){super.disconnectedCallback(),this.observer&&(this.observer.disconnect(),this.observer=null),this.droppableObsever&&(this.droppableObsever.disconnect(),this.droppableObsever=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),document.removeEventListener("mousemove",this.onMove),document.removeEventListener("mouseup",this.onEnd),document.removeEventListener("touchmove",this.onMove),document.removeEventListener("touchend",this.onEnd),document.removeEventListener("touchcancel",this.onCancel),window.removeEventListener("scroll",this.onScrollOrResize,!0),window.removeEventListener("resize",this.onScrollOrResize)}handleTouchMove(a){if(!this.isMatchTabular()&&this.isDraggable&&this.dragClone){let{x:l,y:d}=this.getEventCoordinates(a);this.pendingMove={clientX:l,clientY:d},this.scheduleDragMove(),a.preventDefault()}}scheduleDragMove(){this.dragMoveRaf||(this.dragMoveRaf=requestAnimationFrame(()=>{if(this.dragMoveRaf=0,!this.pendingMove)return;let a=this.pendingMove;this.pendingMove=null,this.processDragMove(a),this.pendingMove&&this.scheduleDragMove()}))}processDragMove(a){if(!this.isDraggable||!this.dragClone||!this.touchStartPoint||(this.calculateDragDistance(a)>=this.MIN_DRAG_DISTANCE&&(this.isDragging=!0),!this.isDragging))return;this.updateDragClonePosition(a),this.dropzoneRectsDirty&&this.refreshDropzoneRects();let l=this.findClosestDropzone();this.currentDropTarget=l,l!==this.lastTarget&&(this.lastTarget&&(this.deactivateDroppable(this.lastTarget),this.dispatchCustomEvent(this.lastTarget,"dragleave")),l&&(this.activateDroppable(l),this.dispatchCustomEvent(l,"dragenter")),this.lastTarget=l),this.currentDropTarget&&this.dispatchCustomEvent(this.currentDropTarget,"dragover")}handleTouchEnd(a){this.isMatchTabular()||((this.isDragging||this.isDraggable||this.dragClone)&&this.resetDragState(),this._internals.states.delete("--dragzone-active"),this.checkAllMaxAssociations(),this._internals.states.delete("--dragzone-enabled"),this._internals.states.delete("--dragzone-active"),this.deactivateDragLocation(),this.deactivateDroppables(),this.draggables.forEach(l=>{l.removeAttribute("dragging")}),a.preventDefault())}handleTouchCancel(a){this.resetDragState()}validate(){if(this.isMatchTabular())return null;if(!this.shadowRoot)return!1;let a=this.getValidAssociations(),l=!0,d="";this.maxAssociations>0&&a>this.maxAssociations?(l=!1,d=this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`):this.minAssociations>0&&a<this.minAssociations&&(l=!1,d=this.dataset.minSelectionsMessage||`You haven't selected enough associations. Minimum required is ${this.minAssociations}.`);let p=this.lastElementChild;return this._internals.setValidity(l?{}:{customError:!0},d,p),l}reportValidity(){let a=this.shadowRoot.querySelector("#validation-message");return a&&(this._internals.validity.valid?(a.textContent="",a.style.display="none"):(a.textContent=this._internals.validationMessage,a.style.setProperty("display","block","important"))),this._internals.validity.valid}checkMaxAssociations(a){let l=this.getMatchMaxValue(a),d=a.querySelectorAll('[qti-draggable="true"]').length;return!(l===0)&&d>=l}dropDraggableInDroppable(a,l){let d=a.cloneNode(!0);d.removeAttribute("style"),this.moveDraggableToDroppable(d,l),this.draggablesModified([d],[]);let p=this.getMatchMaxValue(a),m=this.draggables.filter(h=>h.getAttribute("identifier")===a.getAttribute("identifier"));p!==0&&m.length>=p?(a.style.opacity="0.0",a.style.pointerEvents="none"):a.style.opacity="1.0"}resetDragState(){if(this.dragMoveRaf&&(cancelAnimationFrame(this.dragMoveRaf),this.dragMoveRaf=0),this.pendingMove=null,this.dragClone){let a=this.currentDropTarget!==null,l=!a||this.dragContainers.includes(this.currentDropTarget);a&&this.currentDropTarget&&!l&&this.dropDraggableInDroppable(this.dragSource,this.currentDropTarget),l&&(this.dragSource.style.opacity="1.0",this.dragSource.style.display="block",this.dragSource.style.position="static",this.dragSource.style.pointerEvents="auto",this.saveResponse()),this.dragClone.remove(),this.draggablesModified([],[this.dragClone])}this.isDragging=!1,this.isDraggable=!1,this.dragSource=null,this.dragClone=null,this.touchStartPoint=null,this.currentDropTarget=null,this.lastTarget=null,this.dragBounds=null,this.dragCloneRect=null,this.dropzoneRects.clear(),this.dropzoneRectsDirty=!1,this.dragBoundsDirty=!1,window.removeEventListener("scroll",this.onScrollOrResize,!0),window.removeEventListener("resize",this.onScrollOrResize),this.deactivateDroppables()}checkAllMaxAssociations(){let a=this.getValidAssociations(),l=this.maxAssociations!==0&&a>=this.maxAssociations;this.droppables.forEach(d=>{l?this.disableDroppable(d):this.checkMaxAssociations(d)?this.disableDroppable(d):this.enableDroppable(d)})}getMatchMaxValue(a){let l=a.getAttribute("match-max");return l?parseInt(l,10):1}disableDroppable(a){a.setAttribute("disabled","")}enableDroppable(a){a.removeAttribute("disabled")}get response(){let a;return typeof this.getResponse=="function"?a=this.getResponse():a=this.collectResponseData(),a.join(",")}set response(a){if(!this.isMatchTabular())if(typeof this.getValue=="function"&&(a=this.getValue(a)),Array.isArray(a)){this.reset(!1),a?.forEach(d=>this.placeResponse(d));let l=new FormData;a.forEach(d=>{l.append(this.responseIdentifier,d)}),this._internals.setFormValue(l)}else this._internals.setFormValue(a||"")}placeResponse(a){let[l,...d]=a.split(" ").reverse(),p=Array.from(this.draggables),m=Array.from(this.droppables);d.forEach(h=>{if(h==="")return;let g=p.find(E=>E.getAttribute("identifier")===h),v=m.find(E=>E.getAttribute("identifier")===l);this.dropDraggableInDroppable(g,v)})}getValidAssociations(){let a=0;for(let l of this.droppables)a=a+this.getDraggablesFromDroppable(l).length;return a}saveResponse(){let a;typeof this.getResponse=="function"?a=this.getResponse():a=this.collectResponseData(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:a}}))}collectResponseData(){return this.droppables.map(l=>{let p=this.getDraggablesFromDroppable(l).map(h=>h.getAttribute("identifier")),m=l.getAttribute("identifier");return p.map(h=>`${h} ${m}`)}).flat()}getDraggablesFromDroppable(a){return this.draggables.map(p=>p.getAttribute("identifier")).filter((p,m,h)=>h.indexOf(p)===m).flatMap(p=>Array.from(a.querySelectorAll(`[identifier='${p}']`))).filter(p=>!!p).map(p=>p)}reset(a=!0){this.droppables.forEach(l=>{this.getDraggablesFromDroppable(l).forEach(p=>{p.remove(),this.draggablesModified([],[p])})}),this.dragContainers.forEach(l=>{Array.from(l.querySelectorAll('[qti-draggable="true"]')).forEach(p=>{p.style.opacity="1.0"})}),this.dragClone=null,this.dragSource=null,this.isDragging=!1,this.isDraggable=!1,this.currentDropTarget=null,this.lastTarget=null,a&&this.saveResponse()}updateDragClonePosition(a){if(!this.isDragging||!this.dragClone)return;(this.dragBoundsDirty||!this.dragBounds)&&this.refreshDragBounds();let l=a.clientX-this.cloneOffset.x,d=a.clientY-this.cloneOffset.y,{newLeft:p,newTop:m}=this.applyInteractionBoundaries(l,d);this.dragClone.style.left=`${p}px`,this.dragClone.style.top=`${m}px`;let h=this.dragBounds?.width??this.dragCloneRect?.width,g=this.dragBounds?.height??this.dragCloneRect?.height;if(!h||!g){let v=this.dragClone.getBoundingClientRect();h=v.width,g=v.height}this.dragCloneRect={left:p,top:m,right:p+h,bottom:m+g,width:h,height:g}}applyInteractionBoundaries(a,l){if(!this.dragBounds)return{newLeft:a,newTop:l};let d=Math.max(this.dragBounds.minLeft,Math.min(a,this.dragBounds.maxLeft)),p=Math.max(this.dragBounds.minTop,Math.min(l,this.dragBounds.maxTop));return{newLeft:d,newTop:p}}refreshDragBounds(){if(!this.dragClone)return;let a=this.getBoundingClientRect(),l=this.dragClone.getBoundingClientRect();this.dragBounds={minLeft:a.left,maxLeft:a.right-l.width,minTop:a.top,maxTop:a.bottom-l.height,width:l.width,height:l.height},this.dragCloneRect={left:l.left,top:l.top,right:l.left+l.width,bottom:l.top+l.height,width:l.width,height:l.height},this.dragBoundsDirty=!1}getEventCoordinates(a,l=!1){let d=a.touches?a.touches[0]:a;return{x:l?d.pageX:d.clientX,y:l?d.pageY:d.clientY}}calculateDragDistance(a){let l=Math.abs(a.clientX-this.touchStartPoint.x),d=Math.abs(a.clientY-this.touchStartPoint.y);return l+d}refreshDropzoneRects(){this.dropzoneRects.clear();let a=this.allDropzones.filter(l=>!l.hasAttribute("disabled"));for(let l of a)this.dropzoneRects.set(l,this.getDropzoneRect(l));this.dropzoneRectsDirty=!1}getCachedDropzoneRect(a){let l=this.dropzoneRects.get(a);if(l)return l;let d=this.getDropzoneRect(a);return this.dropzoneRects.set(a,d),d}getDropzoneRect(a){return(a.shadowRoot?.querySelector('slot[part="dropslot"]')??a).getBoundingClientRect()}findClosestDropzone(){let a=this.allDropzones.filter(h=>!h.hasAttribute("disabled"));if(!this.dragClone||a.length===0)return null;let l=this.dragCloneRect??this.dragClone.getBoundingClientRect(),d=null,p=0,m=h=>{for(let g of h){let v=this.getCachedDropzoneRect(g),E=this.calculateOverlapArea(l,v);E>p&&(p=E,d=g)}};if(m(this.droppables.filter(h=>!h.hasAttribute("disabled"))),d||m(this.dragContainers.filter(h=>!h.hasAttribute("disabled"))),!d){let h=Number.POSITIVE_INFINITY;for(let g of a){let v=this.getCachedDropzoneRect(g),E=Math.hypot(l.left-v.left,l.top-v.top);E<h&&(h=E,d=g)}}return d}calculateOverlapArea(a,l){let d=Math.max(0,Math.min(a.right,l.right)-Math.max(a.left,l.left)),p=Math.max(0,Math.min(a.bottom,l.bottom)-Math.max(a.top,l.top));return d*p}getComputedStyleText(a){let l=this.dragCloneStyleCache.get(a);if(l)return l;let d=window.getComputedStyle(a),p="";for(let m=0;m<d.length;m++){let h=d[m];p+=`${h}:${d.getPropertyValue(h)};`}return this.dragCloneStyleCache.set(a,p),p}dispatchCustomEvent(a,l,d=!0){if(!a)return;let p=new CustomEvent(l,{bubbles:d,cancelable:!0});p.dataTransfer=this.dataTransfer,a.dispatchEvent(p)}appendClone(){(document.fullscreenElement??document.body).appendChild(this.dragClone)}handleTouchStart(a){if(this.isMatchTabular()||a instanceof MouseEvent&&a.button!==0||this.isDragging)return;let{x:l,y:d}=this.getEventCoordinates(a);this.touchStartPoint={x:l,y:d},this.dragSource=a.currentTarget,this.isDraggable=!0,this._internals.states.add("--dragzone-enabled"),this._internals.states.add("--dragzone-active"),this.activateDragLocation(),this.activateDroppables(this.dragSource);let p=this.findDraggableInDraggableContainer(this.dragSource.getAttribute("identifier")),m=this.droppables.some(A=>Array.from(A.children).some(q=>q===this.dragSource)),h=this.dragSource.getBoundingClientRect();m&&(this.dragSource.remove(),this.draggablesModified([],[this.dragSource]),this.dragSource=p),this.cloneOffset.x=l-h.left,this.cloneOffset.y=d-h.top,this.dragClone=p.cloneNode(!0),this.configuration.copyStylesDragClone&&(this.dragClone.style.cssText=this.getComputedStyleText(p));let g=p.getBoundingClientRect();this.dragClone.style.width=`${g.width}px`,this.dragClone.style.height=`${g.height}px`,h&&this.setDragCloneStyles(h),this.dragClone.style.display="block",this.dragClone.style.opacity="1",this.appendClone(),this.refreshDragBounds(),this.refreshDropzoneRects(),window.addEventListener("scroll",this.onScrollOrResize,!0),window.addEventListener("resize",this.onScrollOrResize);let v=this.getMatchMaxValue(this.dragSource),E=this.draggables.filter(A=>A.getAttribute("identifier")===this.dragSource.getAttribute("identifier"));v!==0&&E.length>=v?(p.style.opacity="0.0",p.style.pointerEvents="none"):p.style.opacity="1.0",a.preventDefault(),this.dragClone.setAttribute("dragging","")}findDraggableInDraggableContainer(a){let l=this.dragContainers.flat();for(let d of l){if(d.getAttribute("identifier")===a)return d;let p;d instanceof HTMLSlotElement?p=Array.from(d?.assignedElements()||[]):p=Array.from(d.querySelectorAll(r));let m=p.find(h=>h.getAttribute("identifier")===a);if(m)return m}}setDragCloneStyles(a){this.dragClone.style.position="fixed",this.dragClone.style.top=`${a.top}px`,this.dragClone.style.left=`${a.left}px`,this.dragClone.style.setProperty("box-sizing","border-box","important"),this.dragClone.style.zIndex="9999",this.dragClone.style.pointerEvents="none",this.dragClone.style.opacity=this.DRAG_CLONE_OPACITY.toString(),this.dragClone.style.display="block"}}return c([u({attribute:!1,type:Object})],i.prototype,"configuration",2),c([u({type:Number,reflect:!0,attribute:"min-associations"})],i.prototype,"minAssociations",2),c([u({type:Number,reflect:!0,attribute:"max-associations"})],i.prototype,"maxAssociations",2),c([_i(t)],i.prototype,"handleDraggableContainerChange",1),c([_i(r)],i.prototype,"handleDraggablesChange",1),c([_i(e)],i.prototype,"handleDroppablesChange",1),i};var Va=y`
3933
+ `,c([M({context:Be,subscribe:!0})],Kt.prototype,"computedContext",2),Kt=c([C("item-print-variables")],Kt);var K,ti,ri,rs,is,ss,G,_a,La,lo,$a,Oa,co,Zt=class extends b{constructor(){super();T(this,G);T(this,K);this.configContext={};T(this,ti,I(this,G,_a).bind(this));T(this,ri,I(this,G,La).bind(this));T(this,rs,I(this,G,lo).bind(this));T(this,is,I(this,G,$a).bind(this));T(this,ss,I(this,G,Oa).bind(this));this.addEventListener("qti-item-context-updated",x(this,ti)),this.addEventListener("qti-assessment-item-connected",x(this,ri)),this.addEventListener("item-show-correct-response",x(this,rs)),this.addEventListener("item-show-candidate-correction",x(this,is)),this.addEventListener("item-switch-correct-response-mode",x(this,ss))}render(){return f`<slot></slot>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-item-context-changed",x(this,ti)),this.removeEventListener("qti-assessment-item-connected",x(this,ri))}};K=new WeakMap,ti=new WeakMap,ri=new WeakMap,rs=new WeakMap,is=new WeakMap,ss=new WeakMap,G=new WeakSet,_a=function(e){I(this,G,co).call(this,e.detail.itemContext.identifier,e.detail?.itemContext?.variables||[])},La=function(e){let t=e.detail._context.variables;$(this,K,e.detail),this.computedContext=this.computedContext?.identifier===x(this,K).identifier?{...this.computedContext,title:x(this,K).title}:{identifier:x(this,K).identifier,title:x(this,K).title,adaptive:x(this,K).getAttribute("adaptive")?.toLowerCase()==="true"||!1,variables:t,correctResponseMode:"internal"},I(this,G,co).call(this,x(this,K).identifier,t||[])},lo=function(e){x(this,K)&&x(this,K).showCorrectResponse(e.detail)},$a=function(e){x(this,K)&&x(this,K).showCandidateCorrection(e.detail)},Oa=function(e){I(this,G,lo).call(this,new CustomEvent("item-show-correct-response",{detail:!1,bubbles:!0})),this.configContext={...this.configContext,correctResponseMode:e.detail}},co=function(e,t){let i=t?.find(p=>p.identifier=="SCORE")?.value,s=parseFloat(i?.toString()),n=t?.find(p=>p.identifier==="completionStatus")?.value,a=s!==void 0&&!isNaN(s)&&s>0,l=s!==void 0&&!isNaN(s)&&s<=0,d=n==="completed";this.computedContext={...this.computedContext,identifier:e,correct:a,incorrect:l,completed:d,variables:t}},c([w(),ee({context:Be})],Zt.prototype,"computedContext",2),c([w(),ee({context:ae})],Zt.prototype,"configContext",2),Zt=c([C("qti-item")],Zt);var Pa=(o,r,e)=>{class t extends o{}return t};var Se=(o,r,e,t)=>{class i extends Pa(o,e,r){constructor(){super(...arguments);this.observer=null;this.droppableObsever=null;this.resizeObserver=null;this.draggables=[];this.droppables=[];this.dragContainers=[];this.dragClone=null;this.dragSource=null;this.touchStartPoint=null;this.isDraggable=!1;this.cloneOffset={x:0,y:0};this.isDragging=!1;this.allDropzones=[];this.lastTarget=null;this.currentDropTarget=null;this.dragMoveRaf=0;this.pendingMove=null;this.dragBounds=null;this.dragCloneRect=null;this.dropzoneRects=new Map;this.dropzoneRectsDirty=!1;this.dragBoundsDirty=!1;this.dragCloneStyleCache=new WeakMap;this.onScrollOrResize=()=>{this.dropzoneRectsDirty=!0,this.dragBoundsDirty=!0,this.dragBoundsDirty=!0};this.onMove=this.handleTouchMove.bind(this);this.onEnd=this.handleTouchEnd.bind(this);this.onCancel=this.handleTouchCancel.bind(this);this.MIN_DRAG_DISTANCE=5;this.DRAG_CLONE_OPACITY=1;this.MAX_DRAGGABLE_WIDTH=600;this.dataTransfer={data:{},setData(a,l){this.data[a]=l},getData(a){return this.data[a]},effectAllowed:"move"};this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this.maxAssociations=0;this.draggablesModified=(a,l)=>{if(this.isMatchTabular())return;for(let p of l)this.draggables.includes(p)&&(this.draggables=this.draggables.filter(m=>m!==p),p.removeAttribute("tabindex"),p.removeEventListener("touchstart",this.handleTouchStart.bind(this)),p.removeEventListener("mousedown",this.handleTouchStart.bind(this)));for(let p of a)this.draggables.includes(p)||(this.draggables.push(p),p.setAttribute("tabindex","0"),p.hasTouchStartListener||(p.addEventListener("touchstart",this.handleTouchStart.bind(this),{passive:!1}),p.addEventListener("mousedown",this.handleTouchStart.bind(this),{passive:!1}),p.hasTouchStartListener=!0));let d=0;this.draggables.forEach(p=>{p.style.viewTransitionName=`drag-${d}-${this.getAttribute("identifier")||crypto.randomUUID()}`,p.setAttribute("qti-draggable","true"),d++})};this.droppablesModified=(a,l)=>{if(!this.isMatchTabular()){for(let d of l)this.droppables.includes(d)&&(this.droppables=this.droppables.filter(p=>p!==d),this.allDropzones=this.allDropzones.filter(p=>p!==d));for(let d of a)this.droppables.includes(d)||(this.droppables.push(d),this.allDropzones.push(d));for(let d of this.droppables)this.dataset.choicesContainerWidth&&(d.style.width=`${this.dataset.choicesContainerWidth}px`,d.style.boxSizing="border-box");this.dropzoneRectsDirty=!0,this.dragBoundsDirty=!0}}}handleDraggableContainerChange(a,l){this.isMatchTabular()||(a.length>0||l.length>0)&&this.dragContainersModified(a||[],l||[])}dragContainersModified(a,l){for(let d of l)this.dragContainers.includes(d)&&(this.dragContainers=this.dragContainers.filter(p=>p!==d),this.allDropzones=this.allDropzones.filter(p=>p!==d));for(let d of a)this.dragContainers.includes(d)||(this.dragContainers.push(d),this.allDropzones.push(d));this.dropzoneRectsDirty=!0,this.dragBoundsDirty=!0}handleDraggablesChange(a,l){this.isMatchTabular()||(a.length>0||l.length>0)&&this.draggablesModified(a||[],l||[])}handleDroppablesChange(a,l){this.isMatchTabular()||(a.length>0||l.length>0)&&this.droppablesModified(a||[],l||[])}firstUpdated(){if(super.firstUpdated(),this.isMatchTabular())return;this.hasAttribute("disabled")||(document.addEventListener("mousemove",this.onMove,{passive:!1}),document.addEventListener("mouseup",this.onEnd,{passive:!1}),document.addEventListener("touchmove",this.onMove,{passive:!1}),document.addEventListener("touchend",this.onEnd,{passive:!1}),document.addEventListener("touchcancel",this.onCancel,{passive:!1}));let l=Array.from(this.querySelectorAll(r)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(r)||[])),d=Array.from(this.querySelectorAll(e)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(e)||[])),p=Array.from(this.querySelectorAll(t)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(t)||[]));this.dragContainersModified(p,[]),this.droppablesModified(d,[]),this.draggablesModified(l,[]),this.updateMinDimensionsForDropZones(),this.observer=new MutationObserver(()=>this.updateMinDimensionsForDropZones()),this.observer.observe(this,{childList:!0,subtree:!0}),this.resizeObserver=new ResizeObserver(()=>this.updateMinDimensionsForDropZones()),this.querySelectorAll("qti-gap-text").forEach(h=>this.resizeObserver?.observe(h))}async moveDraggableToDroppable(a,l){if(this.isMatchTabular())return;a.style.transform="translate(0, 0)",l.tagName==="SLOT"?a.setAttribute("slot",l.getAttribute("name")):l.appendChild(a),this.checkAllMaxAssociations(),this.saveResponse()}activateDroppable(a){this.dragContainers.includes(a)?(this._internals.states.add("--dragzone-active"),a.setAttribute("active","")):(this._internals.states.delete("--dragzone-active"),a.setAttribute("active",""))}deactivateDroppable(a,l=!0){l&&this._internals.states.add("--dragzone-active"),a.removeAttribute("active")}connectedCallback(){super.connectedCallback()}isMatchTabular(){return this.classList.contains("qti-match-tabular")}async updateMinDimensionsForDropZones(){if(await this.updateComplete,this.isMatchTabular())return;this.dropzoneRectsDirty=!0;let a=this.querySelectorAll(r),l=this.querySelector(t)||this.shadowRoot?.querySelector(t),d=this.querySelectorAll(e),p=d[0]?.parentElement,m=this.determineMaxWidth(l,p),h=0,g=0;for(let v of a){v.style.maxWidth=m+"px";let{width:E,height:A}=await this.measureIntrinsicSize(v);h=Math.max(h,A),g=Math.max(g,E)}p&&(p.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${m}px,${g}px + 2 * var(--qti-dropzone-padding))), 1fr))`),l&&(l.style.minHeight=`${h}px`);for(let v of d){v.style.minHeight=`${h}px`,v.style.minWidth=`${g}px`;let E=v.shadowRoot?.querySelector('slot[part="dropslot"]');E&&(E.style.minHeight=`${h}px`)}}determineMaxWidth(a,l){let d=l??a;if(!d||d.clientWidth==0)return this.MAX_DRAGGABLE_WIDTH;let p=window.getComputedStyle(d),m=parseFloat(p.paddingLeft),h=parseFloat(p.paddingRight);return Math.min(this.MAX_DRAGGABLE_WIDTH,d.clientWidth-m-h)}async measureIntrinsicSize(a){let l=a.style.position;a.style.position="fixed";let d=a.getBoundingClientRect();return a.style.position=l,{width:d.width,height:d.height}}activateDroppables(a){if(this.isMatchTabular())return;this.dragContainers.forEach(d=>{d.setAttribute("enabled",""),d.hasAttribute("disabled")&&(d.contains(a)||d.shadowRoot&&d.shadowRoot.contains(a))&&d.removeAttribute("disabled")}),this.droppables.forEach(d=>{d.setAttribute("enabled",""),d.hasAttribute("disabled")&&(d.contains(a)||d.shadowRoot&&d.shadowRoot.contains(a))&&d.removeAttribute("disabled")})}activateDragLocation(){this._internals.states.add("--dragzone-enabled")}deactivateDragLocation(){this._internals.states.delete("--dragzone-enabled")}deactivateDroppables(){this.dragContainers.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active")}),this.droppables.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active")})}disconnectedCallback(){super.disconnectedCallback(),this.observer&&(this.observer.disconnect(),this.observer=null),this.droppableObsever&&(this.droppableObsever.disconnect(),this.droppableObsever=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),document.removeEventListener("mousemove",this.onMove),document.removeEventListener("mouseup",this.onEnd),document.removeEventListener("touchmove",this.onMove),document.removeEventListener("touchend",this.onEnd),document.removeEventListener("touchcancel",this.onCancel),window.removeEventListener("scroll",this.onScrollOrResize,!0),window.removeEventListener("resize",this.onScrollOrResize)}handleTouchMove(a){if(!this.isMatchTabular()&&this.isDraggable&&this.dragClone){let{x:l,y:d}=this.getEventCoordinates(a);this.pendingMove={clientX:l,clientY:d},this.scheduleDragMove(),a.preventDefault()}}scheduleDragMove(){this.dragMoveRaf||(this.dragMoveRaf=requestAnimationFrame(()=>{if(this.dragMoveRaf=0,!this.pendingMove)return;let a=this.pendingMove;this.pendingMove=null,this.processDragMove(a),this.pendingMove&&this.scheduleDragMove()}))}processDragMove(a){if(!this.isDraggable||!this.dragClone||!this.touchStartPoint||(this.calculateDragDistance(a)>=this.MIN_DRAG_DISTANCE&&(this.isDragging=!0),!this.isDragging))return;this.updateDragClonePosition(a),this.dropzoneRectsDirty&&this.refreshDropzoneRects();let l=this.findClosestDropzone();this.currentDropTarget=l,l!==this.lastTarget&&(this.lastTarget&&(this.deactivateDroppable(this.lastTarget),this.dispatchCustomEvent(this.lastTarget,"dragleave")),l&&(this.activateDroppable(l),this.dispatchCustomEvent(l,"dragenter")),this.lastTarget=l),this.currentDropTarget&&this.dispatchCustomEvent(this.currentDropTarget,"dragover")}handleTouchEnd(a){this.isMatchTabular()||((this.isDragging||this.isDraggable||this.dragClone)&&this.resetDragState(),this._internals.states.delete("--dragzone-active"),this.checkAllMaxAssociations(),this._internals.states.delete("--dragzone-enabled"),this._internals.states.delete("--dragzone-active"),this.deactivateDragLocation(),this.deactivateDroppables(),this.draggables.forEach(l=>{l.removeAttribute("dragging")}),a.preventDefault())}handleTouchCancel(a){this.resetDragState()}validate(){if(this.isMatchTabular())return null;if(!this.shadowRoot)return!1;let a=this.getValidAssociations(),l=!0,d="";this.maxAssociations>0&&a>this.maxAssociations?(l=!1,d=this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`):this.minAssociations>0&&a<this.minAssociations&&(l=!1,d=this.dataset.minSelectionsMessage||`You haven't selected enough associations. Minimum required is ${this.minAssociations}.`);let p=this.lastElementChild;return this._internals.setValidity(l?{}:{customError:!0},d,p),l}reportValidity(){let a=this.shadowRoot.querySelector("#validation-message");return a&&(this._internals.validity.valid?(a.textContent="",a.style.display="none"):(a.textContent=this._internals.validationMessage,a.style.setProperty("display","block","important"))),this._internals.validity.valid}checkMaxAssociations(a){let l=this.getMatchMaxValue(a),d=a.querySelectorAll('[qti-draggable="true"]').length;return!(l===0)&&d>=l}dropDraggableInDroppable(a,l){let d=a.cloneNode(!0);d.removeAttribute("style"),this.moveDraggableToDroppable(d,l),this.draggablesModified([d],[]);let p=this.getMatchMaxValue(a),m=this.draggables.filter(h=>h.getAttribute("identifier")===a.getAttribute("identifier"));p!==0&&m.length>=p?(a.style.opacity="0.0",a.style.pointerEvents="none"):a.style.opacity="1.0"}resetDragState(){if(this.dragMoveRaf&&(cancelAnimationFrame(this.dragMoveRaf),this.dragMoveRaf=0),this.pendingMove=null,this.dragClone){let a=this.currentDropTarget!==null,l=!a||this.dragContainers.includes(this.currentDropTarget);a&&this.currentDropTarget&&!l&&this.dropDraggableInDroppable(this.dragSource,this.currentDropTarget),l&&(this.dragSource.style.opacity="1.0",this.dragSource.style.display="block",this.dragSource.style.position="static",this.dragSource.style.pointerEvents="auto",this.saveResponse()),this.dragClone.remove(),this.draggablesModified([],[this.dragClone])}this.isDragging=!1,this.isDraggable=!1,this.dragSource=null,this.dragClone=null,this.touchStartPoint=null,this.currentDropTarget=null,this.lastTarget=null,this.dragBounds=null,this.dragCloneRect=null,this.dropzoneRects.clear(),this.dropzoneRectsDirty=!1,this.dragBoundsDirty=!1,window.removeEventListener("scroll",this.onScrollOrResize,!0),window.removeEventListener("resize",this.onScrollOrResize),this.deactivateDroppables()}checkAllMaxAssociations(){let a=this.getValidAssociations(),l=this.maxAssociations!==0&&a>=this.maxAssociations;this.droppables.forEach(d=>{l?this.disableDroppable(d):this.checkMaxAssociations(d)?this.disableDroppable(d):this.enableDroppable(d)})}getMatchMaxValue(a){let l=a.getAttribute("match-max");return l?parseInt(l,10):1}disableDroppable(a){a.setAttribute("disabled","")}enableDroppable(a){a.removeAttribute("disabled")}get response(){let a;return typeof this.getResponse=="function"?a=this.getResponse():a=this.collectResponseData(),a.join(",")}set response(a){if(!this.isMatchTabular())if(typeof this.getValue=="function"&&(a=this.getValue(a)),Array.isArray(a)){this.reset(!1),a?.forEach(d=>this.placeResponse(d));let l=new FormData;a.forEach(d=>{l.append(this.responseIdentifier,d)}),this._internals.setFormValue(l)}else this._internals.setFormValue(a||"")}placeResponse(a){let[l,...d]=a.split(" ").reverse(),p=Array.from(this.draggables),m=Array.from(this.droppables);d.forEach(h=>{if(h==="")return;let g=p.find(E=>E.getAttribute("identifier")===h),v=m.find(E=>E.getAttribute("identifier")===l);this.dropDraggableInDroppable(g,v)})}getValidAssociations(){let a=0;for(let l of this.droppables)a=a+this.getDraggablesFromDroppable(l).length;return a}saveResponse(){let a;typeof this.getResponse=="function"?a=this.getResponse():a=this.collectResponseData(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:a}}))}collectResponseData(){return this.droppables.map(l=>{let p=this.getDraggablesFromDroppable(l).map(h=>h.getAttribute("identifier")),m=l.getAttribute("identifier");return p.map(h=>`${h} ${m}`)}).flat()}getDraggablesFromDroppable(a){return this.draggables.map(p=>p.getAttribute("identifier")).filter((p,m,h)=>h.indexOf(p)===m).flatMap(p=>Array.from(a.querySelectorAll(`[identifier='${p}']`))).filter(p=>!!p).map(p=>p)}reset(a=!0){this.droppables.forEach(l=>{this.getDraggablesFromDroppable(l).forEach(p=>{p.remove(),this.draggablesModified([],[p])})}),this.dragContainers.forEach(l=>{Array.from(l.querySelectorAll('[qti-draggable="true"]')).forEach(p=>{p.style.opacity="1.0"})}),this.dragClone=null,this.dragSource=null,this.isDragging=!1,this.isDraggable=!1,this.currentDropTarget=null,this.lastTarget=null,a&&this.saveResponse()}updateDragClonePosition(a){if(!this.isDragging||!this.dragClone)return;(this.dragBoundsDirty||!this.dragBounds)&&this.refreshDragBounds();let l=a.clientX-this.cloneOffset.x,d=a.clientY-this.cloneOffset.y,{newLeft:p,newTop:m}=this.applyInteractionBoundaries(l,d);this.dragClone.style.left=`${p}px`,this.dragClone.style.top=`${m}px`;let h=this.dragBounds?.width??this.dragCloneRect?.width,g=this.dragBounds?.height??this.dragCloneRect?.height;if(!h||!g){let v=this.dragClone.getBoundingClientRect();h=v.width,g=v.height}this.dragCloneRect={left:p,top:m,right:p+h,bottom:m+g,width:h,height:g}}applyInteractionBoundaries(a,l){if(!this.dragBounds)return{newLeft:a,newTop:l};let d=Math.max(this.dragBounds.minLeft,Math.min(a,this.dragBounds.maxLeft)),p=Math.max(this.dragBounds.minTop,Math.min(l,this.dragBounds.maxTop));return{newLeft:d,newTop:p}}refreshDragBounds(){if(!this.dragClone)return;let a=this.getBoundingClientRect(),l=this.dragClone.getBoundingClientRect();this.dragBounds={minLeft:a.left,maxLeft:a.right-l.width,minTop:a.top,maxTop:a.bottom-l.height,width:l.width,height:l.height},this.dragCloneRect={left:l.left,top:l.top,right:l.left+l.width,bottom:l.top+l.height,width:l.width,height:l.height},this.dragBoundsDirty=!1}getEventCoordinates(a,l=!1){let d=a.touches?a.touches[0]:a;return{x:l?d.pageX:d.clientX,y:l?d.pageY:d.clientY}}calculateDragDistance(a){let l=Math.abs(a.clientX-this.touchStartPoint.x),d=Math.abs(a.clientY-this.touchStartPoint.y);return l+d}refreshDropzoneRects(){this.dropzoneRects.clear();let a=this.allDropzones.filter(l=>!l.hasAttribute("disabled"));for(let l of a)this.dropzoneRects.set(l,this.getDropzoneRect(l));this.dropzoneRectsDirty=!1}getCachedDropzoneRect(a){let l=this.dropzoneRects.get(a);if(l)return l;let d=this.getDropzoneRect(a);return this.dropzoneRects.set(a,d),d}getDropzoneRect(a){return(a.shadowRoot?.querySelector('slot[part="dropslot"]')??a).getBoundingClientRect()}findClosestDropzone(){let a=this.allDropzones.filter(h=>!h.hasAttribute("disabled"));if(!this.dragClone||a.length===0)return null;let l=this.dragCloneRect??this.dragClone.getBoundingClientRect(),d=null,p=0,m=h=>{for(let g of h){let v=this.getCachedDropzoneRect(g),E=this.calculateOverlapArea(l,v);E>p&&(p=E,d=g)}};if(m(this.droppables.filter(h=>!h.hasAttribute("disabled"))),d||m(this.dragContainers.filter(h=>!h.hasAttribute("disabled"))),!d){let h=Number.POSITIVE_INFINITY;for(let g of a){let v=this.getCachedDropzoneRect(g),E=Math.hypot(l.left-v.left,l.top-v.top);E<h&&(h=E,d=g)}}return d}calculateOverlapArea(a,l){let d=Math.max(0,Math.min(a.right,l.right)-Math.max(a.left,l.left)),p=Math.max(0,Math.min(a.bottom,l.bottom)-Math.max(a.top,l.top));return d*p}getComputedStyleText(a){let l=this.dragCloneStyleCache.get(a);if(l)return l;let d=window.getComputedStyle(a),p="";for(let m=0;m<d.length;m++){let h=d[m];p+=`${h}:${d.getPropertyValue(h)};`}return this.dragCloneStyleCache.set(a,p),p}dispatchCustomEvent(a,l,d=!0){if(!a)return;let p=new CustomEvent(l,{bubbles:d,cancelable:!0});p.dataTransfer=this.dataTransfer,a.dispatchEvent(p)}appendClone(){(document.fullscreenElement??document.body).appendChild(this.dragClone)}handleTouchStart(a){if(this.isMatchTabular()||a instanceof MouseEvent&&a.button!==0||this.isDragging)return;let{x:l,y:d}=this.getEventCoordinates(a);this.touchStartPoint={x:l,y:d},this.dragSource=a.currentTarget,this.isDraggable=!0,this._internals.states.add("--dragzone-enabled"),this._internals.states.add("--dragzone-active"),this.activateDragLocation(),this.activateDroppables(this.dragSource);let p=this.findDraggableInDraggableContainer(this.dragSource.getAttribute("identifier")),m=this.droppables.some(A=>Array.from(A.children).some(q=>q===this.dragSource)),h=this.dragSource.getBoundingClientRect();m&&(this.dragSource.remove(),this.draggablesModified([],[this.dragSource]),this.dragSource=p),this.cloneOffset.x=l-h.left,this.cloneOffset.y=d-h.top,this.dragClone=p.cloneNode(!0),this.configuration.copyStylesDragClone&&(this.dragClone.style.cssText=this.getComputedStyleText(p));let g=p.getBoundingClientRect();this.dragClone.style.width=`${g.width}px`,this.dragClone.style.height=`${g.height}px`,h&&this.setDragCloneStyles(h),this.dragClone.style.display="block",this.dragClone.style.opacity="1",this.appendClone(),this.refreshDragBounds(),this.refreshDropzoneRects(),window.addEventListener("scroll",this.onScrollOrResize,!0),window.addEventListener("resize",this.onScrollOrResize);let v=this.getMatchMaxValue(this.dragSource),E=this.draggables.filter(A=>A.getAttribute("identifier")===this.dragSource.getAttribute("identifier"));v!==0&&E.length>=v?(p.style.opacity="0.0",p.style.pointerEvents="none"):p.style.opacity="1.0",a.preventDefault(),this.dragClone.setAttribute("dragging","")}findDraggableInDraggableContainer(a){let l=this.dragContainers.flat();for(let d of l){if(d.getAttribute("identifier")===a)return d;let p;d instanceof HTMLSlotElement?p=Array.from(d?.assignedElements()||[]):p=Array.from(d.querySelectorAll(r));let m=p.find(h=>h.getAttribute("identifier")===a);if(m)return m}}setDragCloneStyles(a){this.dragClone.style.position="fixed",this.dragClone.style.top=`${a.top}px`,this.dragClone.style.left=`${a.left}px`,this.dragClone.style.setProperty("box-sizing","border-box","important"),this.dragClone.style.zIndex="9999",this.dragClone.style.pointerEvents="none",this.dragClone.style.opacity=this.DRAG_CLONE_OPACITY.toString(),this.dragClone.style.display="block"}}return c([u({attribute:!1,type:Object})],i.prototype,"configuration",2),c([u({type:Number,reflect:!0,attribute:"min-associations"})],i.prototype,"minAssociations",2),c([u({type:Number,reflect:!0,attribute:"max-associations"})],i.prototype,"maxAssociations",2),c([_i(t)],i.prototype,"handleDraggableContainerChange",1),c([_i(r)],i.prototype,"handleDraggablesChange",1),c([_i(e)],i.prototype,"handleDroppablesChange",1),i};var Va=y`
4364
3934
  :host {
4365
3935
  display: block; /* necessary to calculate scaling position */
4366
3936
  }
@@ -4408,7 +3978,7 @@ div.full-correct-response-inline {
4408
3978
  </div>`)}
4409
3979
 
4410
3980
  <div role="alert" part="message" id="validation-message"></div>
4411
- </div>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};c([C()],ii.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",ii);var Ze=(o,r)=>{class e extends o{constructor(){super(...arguments);this._choiceElements=[];this._mutationObserver=null;this._validationMessageShown=!1;this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(s,n)=>{this._choiceElements.forEach(a=>a.disabled=n)};this._handleReadonlyChange=(s,n)=>{this._choiceElements.forEach(a=>a.readonly=n)};this.response="";this._handleValueChange=()=>{this._internals.setFormValue(this.value),this._updateChoiceSelection()}}_handleMaxChoicesChange(s,n){this._determineInputType()}get value(){return Array.isArray(this.response)&&this.response.length===0||this.response===""?null:Array.isArray(this.response)?this.response.join(","):this.response}set value(s){this.maxChoices>1&&(typeof s=="string"||s===null)?this.response=s?s.toString().split(","):[]:this.response=s||""}toggleInternalCorrectResponse(s){let n=this.correctResponse;if(n){let a=Array.isArray(n)?n:[n];this._choiceElements.forEach(l=>{l.internals.states.delete("correct-response"),l.internals.states.delete("incorrect-response"),s&&a.length>0&&(a.includes(l.identifier)?l.internals.states.add("correct-response"):l.internals.states.add("incorrect-response"))})}}toggleCandidateCorrection(s){let n=this.correctResponse;if(!n)return;let a=Array.isArray(n)?n:[n],l=this.response,d=Array.isArray(l)?l:l?[l]:[];this._choiceElements.forEach(p=>{p.internals.states.delete("candidate-correct"),p.internals.states.delete("candidate-incorrect"),s&&d.includes(p.identifier)&&(a.includes(p.identifier)?p.internals.states.add("candidate-correct"):p.internals.states.add("candidate-incorrect"))}),super.toggleCandidateCorrection(s)}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 s=new Set(this._choiceElements);this._choiceElements=Array.from(this.querySelectorAll(r)),this._choiceElements.forEach(a=>{s.has(a)||(this.disabled&&(a.disabled=!0),a.readonly=this.readonly,a.internals&&!a.internals.ariaChecked&&(a.internals.ariaChecked="false"),this._setInputType(a))});let n=new Set(this._choiceElements.map(a=>a.identifier));if(Array.isArray(this.response)){let a=this.response.filter(l=>n.has(l));a.length!==this.response.length&&(this.response=a)}else this.response&&!n.has(this.response)&&(this.response="");this._updateChoiceSelection()}validate(){let n=this._choiceElements.filter(p=>this._getChoiceChecked(p)).length,a=!0,l="";this.maxChoices!==0&&n>this.maxChoices?(a=!1,l=this.dataset.maxSelectionsMessage||`Please select no more than ${this.maxChoices} ${this.maxChoices===1?"option":"options"}.`):n<this.minChoices&&(a=!1,l=this.dataset.minSelectionsMessage||`Please select at least ${this.minChoices} ${this.minChoices===1?"option":"options"}.`);let d=this._choiceElements.find(p=>this.contains(p))||this;return this._internals.setValidity(a?{}:{customError:!0},l,d),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(s=>{this._setInputType(s)})}async _setInputType(s){if(this._internals.role=this.maxChoices===1?"radiogroup":null,s.internals){let n=this.maxChoices===1?"radio":"checkbox";s.internals.role=n,s.internals.states.delete(n==="radio"?"checkbox":"radio"),s.internals.states.add(n)}}_choiceElementSelectedHandler(s){this._toggleChoiceChecked(s.target),this.maxChoices===1?this._choiceElements.forEach(n=>{n.identifier!==s.detail.identifier&&this._setChoiceChecked(n,!1)}):this.maxChoices!==0&&this._configContext?.disableAfterIfMaxChoicesReached&&(this._choiceElements.filter(a=>this._getChoiceChecked(a)).length>=this.maxChoices?this._choiceElements.forEach(a=>{this._getChoiceChecked(a)||(a.disabled=!0)}):this._choiceElements.forEach(a=>a.disabled=!1)),this._handleChoiceSelection()}_setChoiceChecked(s,n){s.internals?.states&&(n?(s.internals.states.add("--checked"),s.internals.ariaChecked="true"):(s.internals.states.delete("--checked"),s.internals.ariaChecked="false"))}_getChoiceChecked(s){return s.internals.states.has("--checked")}_toggleChoiceChecked(s){let n=this._getChoiceChecked(s);this._setChoiceChecked(s,!n)}_handleChoiceSelection(){let n=this._choiceElements.filter(a=>this._getChoiceChecked(a)).map(a=>a.identifier);this.response=this.maxChoices===1?n[0]||"":n,this.validate(),this._validationMessageShown&&(this.reportValidity(),this._internals.validity.valid&&(this._validationMessageShown=!1)),this.saveResponse(this.response)}_updateChoiceSelection(){let s=Array.isArray(this.response)?this.response:[this.response];this._choiceElements.forEach(n=>{let a=s.includes(n.identifier);this._setChoiceChecked(n,a)})}}return c([Tt("#validation-message")],e.prototype,"_validationMessageElement",2),c([u({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),c([u({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),c([O("maxChoices")],e.prototype,"_handleMaxChoicesChange",1),c([O("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),c([O("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),c([C()],e.prototype,"response",2),c([O("response",{waitUntilFirstUpdate:!0})],e.prototype,"_handleValueChange",2),c([C(),k({context:ae,subscribe:!0})],e.prototype,"_configContext",2),e};var Na=(o,r)=>{class e extends o{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"];this._mutationObserver=null}set class(s){s&&(this._classes=s.split(" "),this._addLabels())}get class(){return this._classes?.join(" ")||""}updated(s){super.updated(s),this._addLabels()}connectedCallback(){super.connectedCallback(),this._mutationObserver=new MutationObserver(()=>this._addLabels()),this._mutationObserver.observe(this,{childList:!0,subtree:!0})}disconnectedCallback(){super.disconnectedCallback(),this._mutationObserver?.disconnect(),this._mutationObserver=null}_addLabels(){let s=this._classes.some(a=>this._allLabels.includes(a)||this._allLabelSuffixes.includes(a)),n=a=>!isNaN(+a);if(s){let l=Array.from(this.querySelectorAll("qti-simple-choice")).map(d=>d).map((d,p)=>({el:d,order:n(d.style.order)?+d.style.order:p+1})).sort((d,p)=>d.order-p.order).map(d=>d.el);for(let d=0;d<l.length;d++)l[d].marker=this._getLabel(d+1)}}_getLabel(s){let n=this._classes.filter(d=>this._allLabels.includes(d)).pop(),a=this._classes.filter(d=>this._allLabelSuffixes.includes(d)).pop();!n&&a&&(n="qti-labels-upper-alpha");let l="";switch(n){case"qti-labels-decimal":l=`${s}`;break;case"qti-labels-lower-alpha":l=`${String.fromCharCode(97+s-1)}`;break;case"qti-labels-upper-alpha":l=`${String.fromCharCode(65+s-1)}`;break}return a==="qti-labels-suffix-period"?l+=".":a==="qti-labels-suffix-parenthesis"&&(l+=")"),l}}return c([u({type:String})],e.prototype,"class",1),e};var Da=y`
3981
+ </div>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};c([w()],ii.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",ii);var Ze=(o,r)=>{class e extends o{constructor(){super(...arguments);this._choiceElements=[];this._mutationObserver=null;this._validationMessageShown=!1;this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(s,n)=>{this._choiceElements.forEach(a=>a.disabled=n)};this._handleReadonlyChange=(s,n)=>{this._choiceElements.forEach(a=>a.readonly=n)};this.response="";this._handleValueChange=()=>{this._internals.setFormValue(this.value),this._updateChoiceSelection()}}_handleMaxChoicesChange(s,n){this._determineInputType()}get value(){return Array.isArray(this.response)&&this.response.length===0||this.response===""?null:Array.isArray(this.response)?this.response.join(","):this.response}set value(s){this.maxChoices>1&&(typeof s=="string"||s===null)?this.response=s?s.toString().split(","):[]:this.response=s||""}toggleInternalCorrectResponse(s){let n=this.correctResponse;if(n){let a=Array.isArray(n)?n:[n];this._choiceElements.forEach(l=>{l.internals.states.delete("correct-response"),l.internals.states.delete("incorrect-response"),s&&a.length>0&&(a.includes(l.identifier)?l.internals.states.add("correct-response"):l.internals.states.add("incorrect-response"))})}}toggleCandidateCorrection(s){let n=this.correctResponse;if(!n)return;let a=Array.isArray(n)?n:[n],l=this.response,d=Array.isArray(l)?l:l?[l]:[];this._choiceElements.forEach(p=>{p.internals.states.delete("candidate-correct"),p.internals.states.delete("candidate-incorrect"),s&&d.includes(p.identifier)&&(a.includes(p.identifier)?p.internals.states.add("candidate-correct"):p.internals.states.add("candidate-incorrect"))}),super.toggleCandidateCorrection(s)}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 s=new Set(this._choiceElements);this._choiceElements=Array.from(this.querySelectorAll(r)),this._choiceElements.forEach(a=>{s.has(a)||(this.disabled&&(a.disabled=!0),a.readonly=this.readonly,a.internals&&!a.internals.ariaChecked&&(a.internals.ariaChecked="false"),this._setInputType(a))});let n=new Set(this._choiceElements.map(a=>a.identifier));if(Array.isArray(this.response)){let a=this.response.filter(l=>n.has(l));a.length!==this.response.length&&(this.response=a)}else this.response&&!n.has(this.response)&&(this.response="");this._updateChoiceSelection()}validate(){let n=this._choiceElements.filter(p=>this._getChoiceChecked(p)).length,a=!0,l="";this.maxChoices!==0&&n>this.maxChoices?(a=!1,l=this.dataset.maxSelectionsMessage||`Please select no more than ${this.maxChoices} ${this.maxChoices===1?"option":"options"}.`):n<this.minChoices&&(a=!1,l=this.dataset.minSelectionsMessage||`Please select at least ${this.minChoices} ${this.minChoices===1?"option":"options"}.`);let d=this._choiceElements.find(p=>this.contains(p))||this;return this._internals.setValidity(a?{}:{customError:!0},l,d),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(s=>{this._setInputType(s)})}async _setInputType(s){if(this._internals.role=this.maxChoices===1?"radiogroup":null,s.internals){let n=this.maxChoices===1?"radio":"checkbox";s.internals.role=n,s.internals.states.delete(n==="radio"?"checkbox":"radio"),s.internals.states.add(n)}}_choiceElementSelectedHandler(s){this._toggleChoiceChecked(s.target),this.maxChoices===1?this._choiceElements.forEach(n=>{n.identifier!==s.detail.identifier&&this._setChoiceChecked(n,!1)}):this.maxChoices!==0&&this._configContext?.disableAfterIfMaxChoicesReached&&(this._choiceElements.filter(a=>this._getChoiceChecked(a)).length>=this.maxChoices?this._choiceElements.forEach(a=>{this._getChoiceChecked(a)||(a.disabled=!0)}):this._choiceElements.forEach(a=>a.disabled=!1)),this._handleChoiceSelection()}_setChoiceChecked(s,n){s.internals?.states&&(n?(s.internals.states.add("--checked"),s.internals.ariaChecked="true"):(s.internals.states.delete("--checked"),s.internals.ariaChecked="false"))}_getChoiceChecked(s){return s.internals.states.has("--checked")}_toggleChoiceChecked(s){let n=this._getChoiceChecked(s);this._setChoiceChecked(s,!n)}_handleChoiceSelection(){let n=this._choiceElements.filter(a=>this._getChoiceChecked(a)).map(a=>a.identifier);this.response=this.maxChoices===1?n[0]||"":n,this.validate(),this._validationMessageShown&&(this.reportValidity(),this._internals.validity.valid&&(this._validationMessageShown=!1)),this.saveResponse(this.response)}_updateChoiceSelection(){let s=Array.isArray(this.response)?this.response:[this.response];this._choiceElements.forEach(n=>{let a=s.includes(n.identifier);this._setChoiceChecked(n,a)})}}return c([Tt("#validation-message")],e.prototype,"_validationMessageElement",2),c([u({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),c([u({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),c([O("maxChoices")],e.prototype,"_handleMaxChoicesChange",1),c([O("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),c([O("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),c([w()],e.prototype,"response",2),c([O("response",{waitUntilFirstUpdate:!0})],e.prototype,"_handleValueChange",2),c([w(),M({context:ae,subscribe:!0})],e.prototype,"_configContext",2),e};var Na=(o,r)=>{class e extends o{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"];this._mutationObserver=null}set class(s){s&&(this._classes=s.split(" "),this._addLabels())}get class(){return this._classes?.join(" ")||""}updated(s){super.updated(s),this._addLabels()}connectedCallback(){super.connectedCallback(),this._mutationObserver=new MutationObserver(()=>this._addLabels()),this._mutationObserver.observe(this,{childList:!0,subtree:!0})}disconnectedCallback(){super.disconnectedCallback(),this._mutationObserver?.disconnect(),this._mutationObserver=null}_addLabels(){let s=this._classes.some(a=>this._allLabels.includes(a)||this._allLabelSuffixes.includes(a)),n=a=>!isNaN(+a);if(s){let l=Array.from(this.querySelectorAll("qti-simple-choice")).map(d=>d).map((d,p)=>({el:d,order:n(d.style.order)?+d.style.order:p+1})).sort((d,p)=>d.order-p.order).map(d=>d.el);for(let d=0;d<l.length;d++)l[d].marker=this._getLabel(d+1)}}_getLabel(s){let n=this._classes.filter(d=>this._allLabels.includes(d)).pop(),a=this._classes.filter(d=>this._allLabelSuffixes.includes(d)).pop();!n&&a&&(n="qti-labels-upper-alpha");let l="";switch(n){case"qti-labels-decimal":l=`${s}`;break;case"qti-labels-lower-alpha":l=`${String.fromCharCode(97+s-1)}`;break;case"qti-labels-upper-alpha":l=`${String.fromCharCode(65+s-1)}`;break}return a==="qti-labels-suffix-period"?l+=".":a==="qti-labels-suffix-parenthesis"&&(l+=")"),l}}return c([u({type:String})],e.prototype,"class",1),e};var Da=y`
4412
3982
  :host {
4413
3983
  display: block;
4414
3984
  }
@@ -4593,7 +4163,7 @@ CES.load();
4593
4163
  requestBlobUrl();
4594
4164
  }
4595
4165
  })();
4596
- `,Ve=class extends R{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;#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let i=this.querySelector("object[data]");if(i){e=i.getAttribute("data");let s=i.getAttribute("width"),n=i.getAttribute("height");s&&this.setAttribute("width",s),n&&this.setAttribute("height",n)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:Oi((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(m=>e.addEventListener("load",()=>m(),{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],s=this.#a(),n=await this.#l(i,s),a=n.url;if(n.baseUrl&&!this.#r&&(this.#r=n.baseUrl),!0){let m="";if(this.manifest.media&&this.manifest.media.length>0){let h=this.manifest.media[0],g=await this.#l(h,s,{returnText:!0});if(m=g.url,g.baseUrl&&!this.#r&&(this.#r=g.baseUrl),g.text){let v=g.text;if(!(v.includes("postToParentWindows")||v.includes("window.CES"))){let q="<script>"+po+"</script>",M=v.indexOf("<head>");M!==-1?v=v.slice(0,M+6)+q+v.slice(M+6):v=q+v}let A=new Blob([v],{type:"text/html"});this.#i=URL.createObjectURL(A)}}else{let h=this.data||"manifest.json",g=h.includes("/")?h.substring(0,h.lastIndexOf("/")):"",v=g?`${g}/index.html`:"index.html",E=await this.#l(v,s,{returnText:!0});if(m=E.url,E.baseUrl&&!this.#r&&(this.#r=E.baseUrl),E.text){let A=E.text;if(!(A.includes("postToParentWindows")||A.includes("window.CES"))){let P="<script>"+po+"</script>",H=A.indexOf("<head>");H!==-1?A=A.slice(0,H+6)+P+A.slice(H+6):A=P+A}let M=new Blob([A],{type:"text/html"});this.#i=URL.createObjectURL(M)}}if(m&&!this.#i)try{let h=await fetch(m);if(h.ok){let g=await h.text();if(!(g.includes("postToParentWindows")||g.includes("window.CES"))){let A="<script>"+po+"</script>",q=g.indexOf("<head>");q!==-1?g=g.slice(0,q+6)+A+g.slice(q+6):g=A+g}let E=new Blob([g],{type:"text/html"});this.#i=URL.createObjectURL(E)}else console.error(`Failed to fetch index.html: ${h.status}`)}catch(h){console.error(`Error fetching index.html: ${h}`)}}let d=`<script>${Jl}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
4166
+ `,Ve=class extends R{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;#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let i=this.querySelector("object[data]");if(i){e=i.getAttribute("data");let s=i.getAttribute("width"),n=i.getAttribute("height");s&&this.setAttribute("width",s),n&&this.setAttribute("height",n)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:Oi((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(m=>e.addEventListener("load",()=>m(),{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],s=this.#a(),n=await this.#l(i,s),a=n.url;if(n.baseUrl&&!this.#r&&(this.#r=n.baseUrl),!0){let m="";if(this.manifest.media&&this.manifest.media.length>0){let h=this.manifest.media[0],g=await this.#l(h,s,{returnText:!0});if(m=g.url,g.baseUrl&&!this.#r&&(this.#r=g.baseUrl),g.text){let v=g.text;if(!(v.includes("postToParentWindows")||v.includes("window.CES"))){let q="<script>"+po+"</script>",k=v.indexOf("<head>");k!==-1?v=v.slice(0,k+6)+q+v.slice(k+6):v=q+v}let A=new Blob([v],{type:"text/html"});this.#i=URL.createObjectURL(A)}}else{let h=this.data||"manifest.json",g=h.includes("/")?h.substring(0,h.lastIndexOf("/")):"",v=g?`${g}/index.html`:"index.html",E=await this.#l(v,s,{returnText:!0});if(m=E.url,E.baseUrl&&!this.#r&&(this.#r=E.baseUrl),E.text){let A=E.text;if(!(A.includes("postToParentWindows")||A.includes("window.CES"))){let P="<script>"+po+"</script>",H=A.indexOf("<head>");H!==-1?A=A.slice(0,H+6)+P+A.slice(H+6):A=P+A}let k=new Blob([A],{type:"text/html"});this.#i=URL.createObjectURL(k)}}if(m&&!this.#i)try{let h=await fetch(m);if(h.ok){let g=await h.text();if(!(g.includes("postToParentWindows")||g.includes("window.CES"))){let A="<script>"+po+"</script>",q=g.indexOf("<head>");q!==-1?g=g.slice(0,q+6)+A+g.slice(q+6):g=A+g}let E=new Blob([g],{type:"text/html"});this.#i=URL.createObjectURL(E)}else console.error(`Failed to fetch index.html: ${h.status}`)}catch(h){console.error(`Error fetching index.html: ${h}`)}}let d=`<script>${Jl}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
4597
4167
  <!DOCTYPE html>
4598
4168
  <html>
4599
4169
  <head>
@@ -4613,7 +4183,7 @@ CES.load();
4613
4183
  ${this._errorMessage&&f`<div style="color:red">
4614
4184
  <h1>Error</h1>
4615
4185
  ${this._errorMessage}
4616
- </div>`}`}#a(){let t=[this.#r,this.baseRefUrl,this.baseItemUrl,this.#u()].filter(Boolean).map(s=>new URL(s,window.location.href).toString()),i=this.#p();return i&&t.push(i),[...new Set(t)]}#u(){return this.#t?new URL(".",this.#t).toString():null}#p(){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 s of t){let n=new URL(s,window.location.href).toString(),a=new URL(e,n.endsWith("/")?n:`${n}/`).toString();try{let l=await fetch(a);if(l.ok){if(i.returnText){let d=await l.text();return{url:a,baseUrl:n,text:d}}return{url:a,baseUrl:n}}}catch{}}return{url:"",baseUrl:null}}};c([u({type:String,attribute:"data"})],Ve.prototype,"data",2),c([u({type:String,attribute:"data-base-item"})],Ve.prototype,"baseItemUrl",2),c([u({type:String,attribute:"data-base-ref"})],Ve.prototype,"baseRefUrl",2),c([u({type:String,attribute:"id"})],Ve.prototype,"id",2),c([C()],Ve.prototype,"_errorMessage",2);customElements.define("qti-custom-interaction",Ve);var et=class extends b{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}render(){return f`<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"}}))}};c([u({type:String,attribute:"response-identifier"})],et.prototype,"responseIdentifier",2),c([u({reflect:!0,type:Boolean})],et.prototype,"disabled",2),c([u({type:String,attribute:"count-attempt"})],et.prototype,"countAttempt",2),c([u({type:String})],et.prototype,"title",2);customElements.define("qti-end-attempt-interaction",et);var Ha=y`
4186
+ </div>`}`}#a(){let t=[this.#r,this.baseRefUrl,this.baseItemUrl,this.#u()].filter(Boolean).map(s=>new URL(s,window.location.href).toString()),i=this.#p();return i&&t.push(i),[...new Set(t)]}#u(){return this.#t?new URL(".",this.#t).toString():null}#p(){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 s of t){let n=new URL(s,window.location.href).toString(),a=new URL(e,n.endsWith("/")?n:`${n}/`).toString();try{let l=await fetch(a);if(l.ok){if(i.returnText){let d=await l.text();return{url:a,baseUrl:n,text:d}}return{url:a,baseUrl:n}}}catch{}}return{url:"",baseUrl:null}}};c([u({type:String,attribute:"data"})],Ve.prototype,"data",2),c([u({type:String,attribute:"data-base-item"})],Ve.prototype,"baseItemUrl",2),c([u({type:String,attribute:"data-base-ref"})],Ve.prototype,"baseRefUrl",2),c([u({type:String,attribute:"id"})],Ve.prototype,"id",2),c([w()],Ve.prototype,"_errorMessage",2);customElements.define("qti-custom-interaction",Ve);var et=class extends b{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}render(){return f`<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"}}))}};c([u({type:String,attribute:"response-identifier"})],et.prototype,"responseIdentifier",2),c([u({reflect:!0,type:Boolean})],et.prototype,"disabled",2),c([u({type:String,attribute:"count-attempt"})],et.prototype,"countAttempt",2),c([u({type:String})],et.prototype,"title",2);customElements.define("qti-end-attempt-interaction",et);var Ha=y`
4617
4187
  /* PK: display host as block, else design will be collapsed */
4618
4188
  :host {
4619
4189
  display: block;
@@ -4640,7 +4210,7 @@ CES.load();
4640
4210
  ?disabled="${this.disabled}"
4641
4211
  ?readonly="${this.readonly}"
4642
4212
  .value=${this.response}
4643
- ></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")}};c([C()],ne.prototype,"_rows",2),c([u({type:Number,attribute:"expected-length"})],ne.prototype,"expectedLength",2),c([u({type:String,attribute:"pattern-mask"})],ne.prototype,"patternMask",2),c([u({type:String,attribute:"placeholder-text"})],ne.prototype,"placeholderText",2),c([u({type:String,attribute:"data-patternmask-message"})],ne.prototype,"dataPatternmaskMessage",2),c([u({type:String,attribute:"class"})],ne.prototype,"classNames",2),c([O("classNames")],ne.prototype,"handleclassNamesChange",1),c([C()],ne.prototype,"response",2),c([O("response",{waitUntilFirstUpdate:!0})],ne.prototype,"_handleResponseChange",2);customElements.define("qti-extended-text-interaction",ne);var za=y`
4213
+ ></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")}};c([w()],ne.prototype,"_rows",2),c([u({type:Number,attribute:"expected-length"})],ne.prototype,"expectedLength",2),c([u({type:String,attribute:"pattern-mask"})],ne.prototype,"patternMask",2),c([u({type:String,attribute:"placeholder-text"})],ne.prototype,"placeholderText",2),c([u({type:String,attribute:"data-patternmask-message"})],ne.prototype,"dataPatternmaskMessage",2),c([u({type:String,attribute:"class"})],ne.prototype,"classNames",2),c([O("classNames")],ne.prototype,"handleclassNamesChange",1),c([w()],ne.prototype,"response",2),c([O("response",{waitUntilFirstUpdate:!0})],ne.prototype,"_handleResponseChange",2);customElements.define("qti-extended-text-interaction",ne);var za=y`
4644
4214
  :host {
4645
4215
  display: flex;
4646
4216
  align-items: flex-start;
@@ -4677,7 +4247,7 @@ CES.load();
4677
4247
  `;var os=class extends Se(R,"qti-gap-text","qti-gap","slot[part='drags']"){static{this.styles=za}render(){return f`<slot name="prompt"> </slot>
4678
4248
  <slot part="drags" name="drags"></slot>
4679
4249
  <slot part="drops"></slot>
4680
- <div role="alert" part="message" id="validation-message"></div>`}toggleCorrectResponse(r){let e=this.responseVariable;if(r&&e?.correctResponse){let t=[],i=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse];i&&(t=i.map(n=>{let a=n.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(n=>{let a=n.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,d=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&d){if(!n.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=d,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",n.insertAdjacentElement("afterend",p)}}else n.nextElementSibling?.classList.contains("correct-option")&&n.nextElementSibling.remove()})}else this.querySelectorAll(".correct-option").forEach(i=>{i.remove()})}#e(r){if(!r.correctResponse)return[];let e=Array.isArray(r.correctResponse)?r.correctResponse:[r.correctResponse],t=[];return e&&e.forEach(i=>{let s=i.split(" ");t.push({source:s[0],target:s[1]})}),t}toggleCandidateCorrection(r){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(s=>{let n=s.getAttribute("identifier"),a=t.filter(d=>d.target===n);s.querySelectorAll("qti-gap-text").forEach(d=>{if(d.internals.states.delete("candidate-correct"),d.internals.states.delete("candidate-incorrect"),!r)return;a.find(m=>m.source===d.identifier)?.source!==void 0?d.internals.states.add("candidate-correct"):d.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",os);var Ua=(o,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(o[i],i);return t},er=te(class extends xe{constructor(o){if(super(o),o.type!==je.CHILD)throw Error("repeat() can only be used in text expressions")}dt(o,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],s=[],n=0;for(let a of o)i[n]=t?t(a,n):n,s[n]=e(a,n),n++;return{values:s,keys:i}}render(o,r,e){return this.dt(o,r,e).values}update(o,[r,e,t]){let i=In(o),{values:s,keys:n}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=n,s;let a=this.ut??=[],l=[],d,p,m=0,h=i.length-1,g=0,v=s.length-1;for(;m<=h&&g<=v;)if(i[m]===null)m++;else if(i[h]===null)h--;else if(a[m]===n[g])l[g]=We(i[m],s[g]),m++,g++;else if(a[h]===n[v])l[v]=We(i[h],s[v]),h--,v--;else if(a[m]===n[v])l[v]=We(i[m],s[v]),$t(o,l[v+1],i[m]),m++,v--;else if(a[h]===n[g])l[g]=We(i[h],s[g]),$t(o,i[m],i[h]),h--,g++;else if(d===void 0&&(d=Ua(n,g,v),p=Ua(a,m,h)),d.has(a[m]))if(d.has(a[h])){let E=p.get(n[g]),A=E!==void 0?i[E]:null;if(A===null){let q=$t(o,i[m]);We(q,s[g]),l[g]=q}else l[g]=We(A,s[g]),$t(o,i[m],A),i[E]=null;g++}else Li(i[h]),h--;else Li(i[m]),m++;for(;g<=v;){let E=$t(o,l[v+1]);We(E,s[g]),l[g++]=E}for(;m<=h;){let E=i[m++];E!==null&&Li(E)}return this.ut=n,Mn(o,l),z}});function tt(o,r,e,t){let i=e.getAttribute("width")?parseFloat(e.getAttribute("width")):e.naturalWidth,s=e.getAttribute("height")?parseFloat(e.getAttribute("height")):e.naturalHeight;switch(o){case"circle":{if(r.length!==3){console.error("Invalid circle coordinates:",r);return}let[n,a,l]=r,d=n/i*100,p=a/s*100,m=l/i*100,h=l/s*100;t.style.left=d-m+"%",t.style.top=p-h+"%",t.style.width=2*m+"%",t.style.height=2*h+"%",t.style.borderRadius="50%"}break;case"rect":{if(r.length!==4){console.error("Invalid rectangle coordinates:",r);return}let[n,a,l,d]=r,p=n/i*100,m=a/s*100,h=l/i*100,g=d/s*100;t.style.left=p+"%",t.style.top=m+"%",t.style.width=h-p+"%",t.style.height=g-m+"%"}break;case"ellipse":{if(r.length!==4){console.error("Invalid ellipse coordinates:",r);return}let[n,a,l,d]=r,p=n/i*100,m=a/s*100,h=l/i*100,g=d/s*100;t.style.left=p-h+"%",t.style.top=m-g+"%",t.style.width=2*h+"%",t.style.height=2*g+"%",t.style.borderRadius="50%"}break;case"poly":{if(r.length<6||r.length%2!==0){console.error("Invalid polygon coordinates:",r);return}let n=[];for(let q=0;q<r.length;q+=2)n.push({x:r[q],y:r[q+1]});let a=Math.min(...n.map(q=>q.x)),l=Math.max(...n.map(q=>q.x)),d=Math.min(...n.map(q=>q.y)),p=Math.max(...n.map(q=>q.y)),m=a/i*100,h=d/s*100,g=l/i*100,v=p/s*100;t.style.left=m+"%",t.style.top=h+"%",t.style.width=g-m+"%",t.style.height=v-h+"%";let A=n.map(q=>({x:(q.x-a)/(l-a)*100,y:(q.y-d)/(p-d)*100})).map(q=>`${q.x}% ${q.y}%`).join(",");t.style.clipPath=`polygon(${A})`}break;default:console.error(`Unsupported shape: ${o}`);break}}var Ba=y`
4250
+ <div role="alert" part="message" id="validation-message"></div>`}toggleCorrectResponse(r){let e=this.responseVariable;if(r&&e?.correctResponse){let t=[],i=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse];i&&(t=i.map(n=>{let a=n.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(n=>{let a=n.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,d=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&d){if(!n.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=d,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",n.insertAdjacentElement("afterend",p)}}else n.nextElementSibling?.classList.contains("correct-option")&&n.nextElementSibling.remove()})}else this.querySelectorAll(".correct-option").forEach(i=>{i.remove()})}#e(r){if(!r.correctResponse)return[];let e=Array.isArray(r.correctResponse)?r.correctResponse:[r.correctResponse],t=[];return e&&e.forEach(i=>{let s=i.split(" ");t.push({source:s[0],target:s[1]})}),t}toggleCandidateCorrection(r){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(s=>{let n=s.getAttribute("identifier"),a=t.filter(d=>d.target===n);s.querySelectorAll("qti-gap-text").forEach(d=>{if(d.internals.states.delete("candidate-correct"),d.internals.states.delete("candidate-incorrect"),!r)return;a.find(m=>m.source===d.identifier)?.source!==void 0?d.internals.states.add("candidate-correct"):d.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",os);var Ua=(o,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(o[i],i);return t},er=te(class extends xe{constructor(o){if(super(o),o.type!==je.CHILD)throw Error("repeat() can only be used in text expressions")}dt(o,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],s=[],n=0;for(let a of o)i[n]=t?t(a,n):n,s[n]=e(a,n),n++;return{values:s,keys:i}}render(o,r,e){return this.dt(o,r,e).values}update(o,[r,e,t]){let i=In(o),{values:s,keys:n}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=n,s;let a=this.ut??=[],l=[],d,p,m=0,h=i.length-1,g=0,v=s.length-1;for(;m<=h&&g<=v;)if(i[m]===null)m++;else if(i[h]===null)h--;else if(a[m]===n[g])l[g]=We(i[m],s[g]),m++,g++;else if(a[h]===n[v])l[v]=We(i[h],s[v]),h--,v--;else if(a[m]===n[v])l[v]=We(i[m],s[v]),$t(o,l[v+1],i[m]),m++,v--;else if(a[h]===n[g])l[g]=We(i[h],s[g]),$t(o,i[m],i[h]),h--,g++;else if(d===void 0&&(d=Ua(n,g,v),p=Ua(a,m,h)),d.has(a[m]))if(d.has(a[h])){let E=p.get(n[g]),A=E!==void 0?i[E]:null;if(A===null){let q=$t(o,i[m]);We(q,s[g]),l[g]=q}else l[g]=We(A,s[g]),$t(o,i[m],A),i[E]=null;g++}else Li(i[h]),h--;else Li(i[m]),m++;for(;g<=v;){let E=$t(o,l[v+1]);We(E,s[g]),l[g++]=E}for(;m<=h;){let E=i[m++];E!==null&&Li(E)}return this.ut=n,kn(o,l),z}});function tt(o,r,e,t){let i=e.getAttribute("width")?parseFloat(e.getAttribute("width")):e.naturalWidth,s=e.getAttribute("height")?parseFloat(e.getAttribute("height")):e.naturalHeight;switch(o){case"circle":{if(r.length!==3){console.error("Invalid circle coordinates:",r);return}let[n,a,l]=r,d=n/i*100,p=a/s*100,m=l/i*100,h=l/s*100;t.style.left=d-m+"%",t.style.top=p-h+"%",t.style.width=2*m+"%",t.style.height=2*h+"%",t.style.borderRadius="50%"}break;case"rect":{if(r.length!==4){console.error("Invalid rectangle coordinates:",r);return}let[n,a,l,d]=r,p=n/i*100,m=a/s*100,h=l/i*100,g=d/s*100;t.style.left=p+"%",t.style.top=m+"%",t.style.width=h-p+"%",t.style.height=g-m+"%"}break;case"ellipse":{if(r.length!==4){console.error("Invalid ellipse coordinates:",r);return}let[n,a,l,d]=r,p=n/i*100,m=a/s*100,h=l/i*100,g=d/s*100;t.style.left=p-h+"%",t.style.top=m-g+"%",t.style.width=2*h+"%",t.style.height=2*g+"%",t.style.borderRadius="50%"}break;case"poly":{if(r.length<6||r.length%2!==0){console.error("Invalid polygon coordinates:",r);return}let n=[];for(let q=0;q<r.length;q+=2)n.push({x:r[q],y:r[q+1]});let a=Math.min(...n.map(q=>q.x)),l=Math.max(...n.map(q=>q.x)),d=Math.min(...n.map(q=>q.y)),p=Math.max(...n.map(q=>q.y)),m=a/i*100,h=d/s*100,g=l/i*100,v=p/s*100;t.style.left=m+"%",t.style.top=h+"%",t.style.width=g-m+"%",t.style.height=v-h+"%";let A=n.map(q=>({x:(q.x-a)/(l-a)*100,y:(q.y-d)/(p-d)*100})).map(q=>`${q.x}% ${q.y}%`).join(",");t.style.clipPath=`polygon(${A})`}break;default:console.error(`Unsupported shape: ${o}`);break}}var Ba=y`
4681
4251
  slot:not([name='prompt']) {
4682
4252
  // position: relative; /* qti-hotspot-choice relative to the slot */
4683
4253
  display: block;
@@ -4744,7 +4314,7 @@ CES.load();
4744
4314
  </svg>
4745
4315
  <slot></slot>
4746
4316
  </line-container>
4747
- <div role="alert" part="message" id="validation-message"></div>`}#o(e){let t=this.querySelector("img"),i=e.target,s=i.getAttribute("coords"),n=i.getAttribute("shape"),a=s.split(",").map(l=>parseInt(l));tt(n,a,t,i)}firstUpdated(){this.#e=this.querySelectorAll("qti-associable-hotspot"),this.addEventListener("mousemove",e=>{let t=this.grImage[0];if(!t)return;let i=t.getBoundingClientRect();this.mouseCoord={x:e.clientX-i.left,y:e.clientY-i.top}}),this.#e.forEach(e=>{e.style.left=e.getAttribute("coords").split(",")[0]+"px",e.style.top=e.getAttribute("coords").split(",")[1]+"px",e.addEventListener("click",t=>{this.#t?this.#r||(this.#r=t.target,this._response=this.#s(),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)}};c([C()],Ne.prototype,"_correctLines",2),c([C()],Ne.prototype,"startCoord",2),c([C()],Ne.prototype,"mouseCoord",2),c([mn({selector:"img"})],Ne.prototype,"grImage",2),c([C()],Ne.prototype,"_response",2);customElements.define("qti-graphic-associate-interaction",Ne);var Fa=y`
4317
+ <div role="alert" part="message" id="validation-message"></div>`}#o(e){let t=this.querySelector("img"),i=e.target,s=i.getAttribute("coords"),n=i.getAttribute("shape"),a=s.split(",").map(l=>parseInt(l));tt(n,a,t,i)}firstUpdated(){this.#e=this.querySelectorAll("qti-associable-hotspot"),this.addEventListener("mousemove",e=>{let t=this.grImage[0];if(!t)return;let i=t.getBoundingClientRect();this.mouseCoord={x:e.clientX-i.left,y:e.clientY-i.top}}),this.#e.forEach(e=>{e.style.left=e.getAttribute("coords").split(",")[0]+"px",e.style.top=e.getAttribute("coords").split(",")[1]+"px",e.addEventListener("click",t=>{this.#t?this.#r||(this.#r=t.target,this._response=this.#s(),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)}};c([w()],Ne.prototype,"_correctLines",2),c([w()],Ne.prototype,"startCoord",2),c([w()],Ne.prototype,"mouseCoord",2),c([mn({selector:"img"})],Ne.prototype,"grImage",2),c([w()],Ne.prototype,"_response",2);customElements.define("qti-graphic-associate-interaction",Ne);var Fa=y`
4748
4318
  :host {
4749
4319
  display: flex;
4750
4320
  align-items: flex-start;
@@ -4929,7 +4499,7 @@ CES.load();
4929
4499
  <slot @slotchange=${this.#b}></slot>
4930
4500
  </div>
4931
4501
  ${qt(this.correctOption)}
4932
- `}async connectedCallback(){super.connectedCallback(),this.#t(),this.#g(),await this.updateComplete,this.#r()}disconnectedCallback(){super.disconnectedCallback(),this.#v(),this._slotObserver?.disconnect(),this._slotObserver=null}willUpdate(e){e.has("configContext")&&this.#t()}updated(e){e.has("_dropdownOpen")&&this._dropdownOpen&&(this.#c(),this.#d()[0]?.focus()),(e.has("disabled")||e.has("readonly"))&&this.#c()}#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??"",s=[{textContent:t,value:"",selected:i===""},...e.map(a=>{let l=a.getAttribute("identifier")??"";return{textContent:a.innerHTML,value:l,selected:l!==""&&l===i}})],n=s.some(a=>a.selected);this.options=n?s:s.map((a,l)=>({...a,selected:l===0})),this.#c(),this.#r()}#r(){let e=this.#m(),t=this.renderRoot.querySelector('button[part="trigger"]');if(!e||!t)return;let i=t.querySelector('span[part~="dropdown-icon"]'),s=i?i.getBoundingClientRect().width:0,n=e.matches(":popover-open"),a=e.style.visibility,l=e.style.display;n||(e.style.visibility="hidden",e.style.display="block",e.showPopover());let d=e.getBoundingClientRect().width,p=Math.max(d,e.scrollWidth);n||(e.hidePopover(),e.style.visibility=a,e.style.display=l),t.style.width=`${p+s}px`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.#s(!1),this.options=this.options.map((e,t)=>({...e,selected:t===0})),this.#c()}set response(e){let t=e??"";this.options=this.options.map(i=>({...i,selected:i.value===t})),this.#c()}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(s=>t===s.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.#c(),this.saveResponse(e),this.#s(!1)}#s(e){let t=this.#m();if(t){if(e){t.matches(":popover-open")||t.showPopover();return}t.matches(":popover-open")&&t.hidePopover()}}#o;#n;#a;#u;#p(){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}#f(e){return e===this||this.contains(e)||this.renderRoot.contains(e)}#m(){return this.renderRoot.querySelector(`#${this._menuId}`)}#g(){this._slotObserver=new MutationObserver(()=>this.#t()),this._slotObserver.observe(this,{childList:!0,subtree:!0})}#b;#h;#v(){let e=Array.from(this.querySelectorAll("qti-inline-choice"));for(let t of e)t.removeEventListener("click",this.#h),t.removeAttribute("tabindex"),t.internals.role=null,t.internals.ariaSelected=null,t.internals.ariaChecked="false",t.internals.states.delete("--checked")}async#c(){await this.updateComplete;let e=this.options.find(i=>i.selected)?.value??"",t=Array.from(this.querySelectorAll("qti-inline-choice"));for(let i of t){let n=(i.getAttribute("identifier")??"")===e;i.removeEventListener("click",this.#h),i.addEventListener("click",this.#h),i.disabled=this.disabled,i.readonly=this.readonly,i.internals.role="option",i.internals.ariaSelected=n?"true":"false",i.internals.ariaChecked=n?"true":"false",i.internals.ariaDisabled=this.disabled?"true":"false",i.internals.ariaReadOnly=this.readonly?"true":"false",i.removeAttribute("aria-disabled"),i.removeAttribute("aria-readonly"),n?i.internals.states.add("--checked"):i.internals.states.delete("--checked"),i.tabIndex=-1}}#d(){let e=this.renderRoot.querySelector('button[part~="option"]'),t=Array.from(this.querySelectorAll("qti-inline-choice"));return[...e?[e]:[],...t]}};c([C()],rt.prototype,"options",2),c([C()],rt.prototype,"correctOption",2),c([C()],rt.prototype,"_dropdownOpen",2),c([k({context:ae,subscribe:!0}),u({attribute:!1})],rt.prototype,"configContext",2);customElements.define("qti-inline-choice-interaction",rt);var Ga=y`
4502
+ `}async connectedCallback(){super.connectedCallback(),this.#t(),this.#g(),await this.updateComplete,this.#r()}disconnectedCallback(){super.disconnectedCallback(),this.#v(),this._slotObserver?.disconnect(),this._slotObserver=null}willUpdate(e){e.has("configContext")&&this.#t()}updated(e){e.has("_dropdownOpen")&&this._dropdownOpen&&(this.#c(),this.#d()[0]?.focus()),(e.has("disabled")||e.has("readonly"))&&this.#c()}#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??"",s=[{textContent:t,value:"",selected:i===""},...e.map(a=>{let l=a.getAttribute("identifier")??"";return{textContent:a.innerHTML,value:l,selected:l!==""&&l===i}})],n=s.some(a=>a.selected);this.options=n?s:s.map((a,l)=>({...a,selected:l===0})),this.#c(),this.#r()}#r(){let e=this.#m(),t=this.renderRoot.querySelector('button[part="trigger"]');if(!e||!t)return;let i=t.querySelector('span[part~="dropdown-icon"]'),s=i?i.getBoundingClientRect().width:0,n=e.matches(":popover-open"),a=e.style.visibility,l=e.style.display;n||(e.style.visibility="hidden",e.style.display="block",e.showPopover());let d=e.getBoundingClientRect().width,p=Math.max(d,e.scrollWidth);n||(e.hidePopover(),e.style.visibility=a,e.style.display=l),t.style.width=`${p+s}px`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.#s(!1),this.options=this.options.map((e,t)=>({...e,selected:t===0})),this.#c()}set response(e){let t=e??"";this.options=this.options.map(i=>({...i,selected:i.value===t})),this.#c()}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(s=>t===s.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.#c(),this.saveResponse(e),this.#s(!1)}#s(e){let t=this.#m();if(t){if(e){t.matches(":popover-open")||t.showPopover();return}t.matches(":popover-open")&&t.hidePopover()}}#o;#n;#a;#u;#p(){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}#f(e){return e===this||this.contains(e)||this.renderRoot.contains(e)}#m(){return this.renderRoot.querySelector(`#${this._menuId}`)}#g(){this._slotObserver=new MutationObserver(()=>this.#t()),this._slotObserver.observe(this,{childList:!0,subtree:!0})}#b;#h;#v(){let e=Array.from(this.querySelectorAll("qti-inline-choice"));for(let t of e)t.removeEventListener("click",this.#h),t.removeAttribute("tabindex"),t.internals.role=null,t.internals.ariaSelected=null,t.internals.ariaChecked="false",t.internals.states.delete("--checked")}async#c(){await this.updateComplete;let e=this.options.find(i=>i.selected)?.value??"",t=Array.from(this.querySelectorAll("qti-inline-choice"));for(let i of t){let n=(i.getAttribute("identifier")??"")===e;i.removeEventListener("click",this.#h),i.addEventListener("click",this.#h),i.disabled=this.disabled,i.readonly=this.readonly,i.internals.role="option",i.internals.ariaSelected=n?"true":"false",i.internals.ariaChecked=n?"true":"false",i.internals.ariaDisabled=this.disabled?"true":"false",i.internals.ariaReadOnly=this.readonly?"true":"false",i.removeAttribute("aria-disabled"),i.removeAttribute("aria-readonly"),n?i.internals.states.add("--checked"):i.internals.states.delete("--checked"),i.tabIndex=-1}}#d(){let e=this.renderRoot.querySelector('button[part~="option"]'),t=Array.from(this.querySelectorAll("qti-inline-choice"));return[...e?[e]:[],...t]}};c([w()],rt.prototype,"options",2),c([w()],rt.prototype,"correctOption",2),c([w()],rt.prototype,"_dropdownOpen",2),c([M({context:ae,subscribe:!0}),u({attribute:!1})],rt.prototype,"configContext",2);customElements.define("qti-inline-choice-interaction",rt);var Ga=y`
4933
4503
  slot:not([hidden]) {
4934
4504
  /* slot where the */
4935
4505
  display: flex;
@@ -4998,7 +4568,7 @@ CES.load();
4998
4568
  `:L}
4999
4569
 
5000
4570
  <div role="alert" part="message" id="validation-message"></div>
5001
- `}};c([u({type:String})],it.prototype,"class",2),c([C()],it.prototype,"_response",2),c([u({type:String,attribute:"response-identifier"})],it.prototype,"responseIdentifier",2),c([C()],it.prototype,"correctOptions",2);customElements.define("qti-match-interaction",it);var cs=class extends R{#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{...R.properties,step:{type:Number,attribute:"step",default:10}}}static{this.styles=[y``]}render(){return f` <slot name="prompt"></slot>
4571
+ `}};c([u({type:String})],it.prototype,"class",2),c([w()],it.prototype,"_response",2),c([u({type:String,attribute:"response-identifier"})],it.prototype,"responseIdentifier",2),c([w()],it.prototype,"correctOptions",2);customElements.define("qti-match-interaction",it);var cs=class extends R{#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{...R.properties,step:{type:Number,attribute:"step",default:10}}}static{this.styles=[y``]}render(){return f` <slot name="prompt"></slot>
5002
4572
  <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",cs);var Qa=y`
5003
4573
  [part='drags'] {
5004
4574
  display: flex;
@@ -5063,7 +4633,7 @@ CES.load();
5063
4633
  <div part="drops">
5064
4634
  ${[...Array(this.nrChoices)].map((t,i)=>f`<drop-list role="region" part="drop-list" identifier="droplist${i}"></drop-list>`)}
5065
4635
  </div>
5066
- </div>`}toggleCorrectResponse(e){let t=this.responseVariable;if(this.shadowRoot.querySelectorAll(".correct-option").forEach(i=>i.remove()),e&&t?.correctResponse){let s=(Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse]).map(l=>l.split(" ")[0]),n=new Set;this.querySelectorAll("qti-simple-choice").forEach((l,d)=>{let p=l.getAttribute("identifier");if(!p||!s.includes(p)||n.has(p))return;n.add(p);let m=l.textContent?.trim();if(!m)return;let h=this.shadowRoot.querySelector(`drop-list[identifier="droplist${d}"]`);if(!h)return;let g=document.createElement("span");g.classList.add("correct-option"),g.textContent=m,g.style.border="1px solid var(--qti-correct)",g.style.borderRadius="4px",g.style.padding="2px 4px",g.style.display="inline-block",g.style.marginTop="4px",h.insertAdjacentElement("afterend",g)})}}getValue(e){return e?.map((t,i)=>`${t} droplist${i}`)||[]}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(i=>{let s=i.querySelectorAll('[qti-draggable="true"]');return[...Array.from(s).map(a=>a.getAttribute("identifier"))].join(" ")})}async firstUpdated(){super.firstUpdated(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};c([C()],st.prototype,"nrChoices",2),c([C()],st.prototype,"correctResponses",2),c([C()],st.prototype,"showCorrectResponses",2),c([u({type:String})],st.prototype,"orientation",2);customElements.define("qti-order-interaction",st);var Ya=y`
4636
+ </div>`}toggleCorrectResponse(e){let t=this.responseVariable;if(this.shadowRoot.querySelectorAll(".correct-option").forEach(i=>i.remove()),e&&t?.correctResponse){let s=(Array.isArray(t.correctResponse)?t.correctResponse:[t.correctResponse]).map(l=>l.split(" ")[0]),n=new Set;this.querySelectorAll("qti-simple-choice").forEach((l,d)=>{let p=l.getAttribute("identifier");if(!p||!s.includes(p)||n.has(p))return;n.add(p);let m=l.textContent?.trim();if(!m)return;let h=this.shadowRoot.querySelector(`drop-list[identifier="droplist${d}"]`);if(!h)return;let g=document.createElement("span");g.classList.add("correct-option"),g.textContent=m,g.style.border="1px solid var(--qti-correct)",g.style.borderRadius="4px",g.style.padding="2px 4px",g.style.display="inline-block",g.style.marginTop="4px",h.insertAdjacentElement("afterend",g)})}}getValue(e){return e?.map((t,i)=>`${t} droplist${i}`)||[]}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(i=>{let s=i.querySelectorAll('[qti-draggable="true"]');return[...Array.from(s).map(a=>a.getAttribute("identifier"))].join(" ")})}async firstUpdated(){super.firstUpdated(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};c([w()],st.prototype,"nrChoices",2),c([w()],st.prototype,"correctResponses",2),c([w()],st.prototype,"showCorrectResponses",2),c([u({type:String})],st.prototype,"orientation",2);customElements.define("qti-order-interaction",st);var Ya=y`
5067
4637
  ::slotted(qti-interaction-markup) {
5068
4638
  display: none;
5069
4639
  }
@@ -5949,7 +5519,7 @@ CES.load();
5949
5519
  <h1>Error</h1>
5950
5520
  ${this._errorMessage}
5951
5521
  </div>`:""}
5952
- `}};c([u({type:String,attribute:"module"})],B.prototype,"module",2),c([u({type:String,attribute:"custom-interaction-type-identifier"})],B.prototype,"customInteractionTypeIdentifier",2),c([u({type:String,attribute:"data-require-paths"})],B.prototype,"requirePathsJson",2),c([u({type:String,attribute:"data-require-shim"})],B.prototype,"requireShimJson",2),c([u({type:String,attribute:"data-require-js-url"})],B.prototype,"requireJsUrl",2),c([u({type:String,attribute:"data-base-url"})],B.prototype,"baseUrl",2),c([u({type:Boolean,attribute:"data-use-default-shims"})],B.prototype,"useDefaultShims",2),c([u({type:Boolean,attribute:"data-use-default-paths"})],B.prototype,"useDefaultPaths",2),c([C()],B.prototype,"_errorMessage",2),c([k({context:D,subscribe:!0}),C()],B.prototype,"context",2),c([k({context:Lt,subscribe:!0}),C()],B.prototype,"qtiContext",2),c([C()],B.prototype,"response",2);var ds=class extends B{#e=!1;async getIFrameContent(){return new Promise(r=>{let e=`get-content-${Date.now()}`,t=i=>{let{data:s}=i;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="getContentResponse"&&s?.messageId===e&&(window.removeEventListener("message",t),r(s.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()}`,s=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="clickResponse"&&a?.messageId===i&&(window.removeEventListener("message",s),t())};window.addEventListener("message",s),this.sendMessageToIframe("simulateClick",{x:r,y:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",s),t()},5e3)})}async iFrameClickOnElement(r){return new Promise(e=>{let t=`click-selector-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="clickSelectorResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("clickOnSelector",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}async iFrameClickOnElementByText(r){return new Promise(e=>{let t=`click-text-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="clickTextResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("clickOnElementByText",{text:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}async iFrameSetValueElement(r,e){return new Promise(t=>{let i=`set-value-${Date.now()}`,s=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueResponse"&&a?.messageId===i&&(window.removeEventListener("message",s),t(a.success))};window.addEventListener("message",s),this.sendMessageToIframe("setValueElement",{selector:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",s),t(!1)},5e3)})}async iFrameGetBoundingClientRect(r){return new Promise(e=>{let t=`get-bounding-rect-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="getBoundingRectResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.rect??null))};window.addEventListener("message",i),this.sendMessageToIframe("getBoundingRect",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(null)},5e3)})}async iFrameSetValueElementByText(r,e){return new Promise(t=>{let i=`set-value-text-${Date.now()}`,s=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueByTextResponse"&&a?.messageId===i&&(window.removeEventListener("message",s),t(a.success))};window.addEventListener("message",s),this.sendMessageToIframe("setValueElementByText",{text:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",s),t(!1)},5e3)})}async iFrameMousedownOnElement(r){return new Promise(e=>{let t=`mousedown-selector-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="mousedownSelectorResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("mousedownOnSelector",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}generateIframeContent(){let r=super.generateIframeContent(),e=`
5522
+ `}};c([u({type:String,attribute:"module"})],B.prototype,"module",2),c([u({type:String,attribute:"custom-interaction-type-identifier"})],B.prototype,"customInteractionTypeIdentifier",2),c([u({type:String,attribute:"data-require-paths"})],B.prototype,"requirePathsJson",2),c([u({type:String,attribute:"data-require-shim"})],B.prototype,"requireShimJson",2),c([u({type:String,attribute:"data-require-js-url"})],B.prototype,"requireJsUrl",2),c([u({type:String,attribute:"data-base-url"})],B.prototype,"baseUrl",2),c([u({type:Boolean,attribute:"data-use-default-shims"})],B.prototype,"useDefaultShims",2),c([u({type:Boolean,attribute:"data-use-default-paths"})],B.prototype,"useDefaultPaths",2),c([w()],B.prototype,"_errorMessage",2),c([M({context:D,subscribe:!0}),w()],B.prototype,"context",2),c([M({context:Lt,subscribe:!0}),w()],B.prototype,"qtiContext",2),c([w()],B.prototype,"response",2);var ds=class extends B{#e=!1;async getIFrameContent(){return new Promise(r=>{let e=`get-content-${Date.now()}`,t=i=>{let{data:s}=i;s?.source==="qti-pci-iframe"&&(!s?.responseIdentifier||s?.responseIdentifier===this.responseIdentifier)&&s?.method==="getContentResponse"&&s?.messageId===e&&(window.removeEventListener("message",t),r(s.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()}`,s=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="clickResponse"&&a?.messageId===i&&(window.removeEventListener("message",s),t())};window.addEventListener("message",s),this.sendMessageToIframe("simulateClick",{x:r,y:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",s),t()},5e3)})}async iFrameClickOnElement(r){return new Promise(e=>{let t=`click-selector-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="clickSelectorResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("clickOnSelector",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}async iFrameClickOnElementByText(r){return new Promise(e=>{let t=`click-text-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="clickTextResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("clickOnElementByText",{text:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}async iFrameSetValueElement(r,e){return new Promise(t=>{let i=`set-value-${Date.now()}`,s=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueResponse"&&a?.messageId===i&&(window.removeEventListener("message",s),t(a.success))};window.addEventListener("message",s),this.sendMessageToIframe("setValueElement",{selector:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",s),t(!1)},5e3)})}async iFrameGetBoundingClientRect(r){return new Promise(e=>{let t=`get-bounding-rect-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="getBoundingRectResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.rect??null))};window.addEventListener("message",i),this.sendMessageToIframe("getBoundingRect",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(null)},5e3)})}async iFrameSetValueElementByText(r,e){return new Promise(t=>{let i=`set-value-text-${Date.now()}`,s=n=>{let{data:a}=n;a?.source==="qti-pci-iframe"&&(!a?.responseIdentifier||a?.responseIdentifier===this.responseIdentifier)&&a?.method==="setValueByTextResponse"&&a?.messageId===i&&(window.removeEventListener("message",s),t(a.success))};window.addEventListener("message",s),this.sendMessageToIframe("setValueElementByText",{text:r,value:e,messageId:i}),setTimeout(()=>{window.removeEventListener("message",s),t(!1)},5e3)})}async iFrameMousedownOnElement(r){return new Promise(e=>{let t=`mousedown-selector-${Date.now()}`,i=s=>{let{data:n}=s;n?.source==="qti-pci-iframe"&&(!n?.responseIdentifier||n?.responseIdentifier===this.responseIdentifier)&&n?.method==="mousedownSelectorResponse"&&n?.messageId===t&&(window.removeEventListener("message",i),e(n.success))};window.addEventListener("message",i),this.sendMessageToIframe("mousedownOnSelector",{selector:r,messageId:t}),setTimeout(()=>{window.removeEventListener("message",i),e(!1)},5e3)})}generateIframeContent(){let r=super.generateIframeContent(),e=`
5953
5523
  // Test helper functions for QtiPortableCustomInteractionTest
5954
5524
  // Base iframe implementation already provides PCIManager.getContent
5955
5525
 
@@ -6191,7 +5761,7 @@ CES.load();
6191
5761
  data-shape="${e.shape}"
6192
5762
  ></div>`)}
6193
5763
  <slot></slot>
6194
- </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.#s=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.#s/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.#n),this.#e&&this.#e.removeEventListener("click",this.#o)}};c([u({type:Number,attribute:"max-choices"})],De.prototype,"maxChoices",2),c([u({type:Number,attribute:"min-choices"})],De.prototype,"minChoices",2),c([C()],De.prototype,"response",2),c([C()],De.prototype,"_correctAreas",2),c([C()],De.prototype,"_responseCorrection",2);customElements.define("qti-select-point-interaction",De);var Ka=y`
5764
+ </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.#s=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.#s/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.#n),this.#e&&this.#e.removeEventListener("click",this.#o)}};c([u({type:Number,attribute:"max-choices"})],De.prototype,"maxChoices",2),c([u({type:Number,attribute:"min-choices"})],De.prototype,"minChoices",2),c([w()],De.prototype,"response",2),c([w()],De.prototype,"_correctAreas",2),c([w()],De.prototype,"_responseCorrection",2);customElements.define("qti-select-point-interaction",De);var Ka=y`
6195
5765
  :host {
6196
5766
  display: block;
6197
5767
  --show-bounds: true;
@@ -6293,7 +5863,7 @@ CES.load();
6293
5863
  `:null}
6294
5864
  </div>
6295
5865
  </div>
6296
- `}#i(e){this.#o(e.pageX);let t=s=>this.#n(s.pageX),i=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",i),this.#a()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",i)}#s(e){this.#o(e.touches[0].pageX);let t=s=>this.#n(s.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.#n(e)}#n(e){let t=this._rail.getBoundingClientRect(),i=e-t.left,s=Math.min(1,Math.max(0,i/t.width)),n=this.min+Math.round(s*(this.max-this.min)/this.step)*this.step;this.#r(n)}#a(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};c([Tt("#rail")],ot.prototype,"_rail",2),c([u({type:Number,attribute:"lower-bound"})],ot.prototype,"min",2),c([u({type:Number,attribute:"upper-bound"})],ot.prototype,"max",2),c([u({type:Number,attribute:"step"})],ot.prototype,"step",2);customElements.define("qti-slider-interaction",ot);var Za=()=>new ho,ho=class{},mo=new WeakMap,_C=te(class extends Xe{render(o){return L}update(o,[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=o.options?.host,this.rt(this.ct=o.element)),L}rt(o){if(this.isConnected||(o=void 0),typeof this.G=="function"){let r=this.ht??globalThis,e=mo.get(r);e===void 0&&(e=new WeakMap,mo.set(r,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,o),o!==void 0&&this.G.call(this.ht,o)}else this.G.value=o}get lt(){return typeof this.G=="function"?mo.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 el=y`
5866
+ `}#i(e){this.#o(e.pageX);let t=s=>this.#n(s.pageX),i=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",i),this.#a()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",i)}#s(e){this.#o(e.touches[0].pageX);let t=s=>this.#n(s.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.#n(e)}#n(e){let t=this._rail.getBoundingClientRect(),i=e-t.left,s=Math.min(1,Math.max(0,i/t.width)),n=this.min+Math.round(s*(this.max-this.min)/this.step)*this.step;this.#r(n)}#a(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};c([Tt("#rail")],ot.prototype,"_rail",2),c([u({type:Number,attribute:"lower-bound"})],ot.prototype,"min",2),c([u({type:Number,attribute:"upper-bound"})],ot.prototype,"max",2),c([u({type:Number,attribute:"step"})],ot.prototype,"step",2);customElements.define("qti-slider-interaction",ot);var Za=()=>new ho,ho=class{},mo=new WeakMap,_w=te(class extends Xe{render(o){return L}update(o,[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=o.options?.host,this.rt(this.ct=o.element)),L}rt(o){if(this.isConnected||(o=void 0),typeof this.G=="function"){let r=this.ht??globalThis,e=mo.get(r);e===void 0&&(e=new WeakMap,mo.set(r,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,o),o!==void 0&&this.G.call(this.ht,o)}else this.G.value=o}get lt(){return typeof this.G=="function"?mo.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 el=y`
6297
5867
  :host {
6298
5868
  display: inline-block;
6299
5869
  }
@@ -6420,7 +5990,7 @@ CES.load();
6420
5990
  ?readonly="${this.readonly}"
6421
5991
  />
6422
5992
  ${this._correctResponse?f`<div part="correct">${this._correctResponse}</div>`:L}
6423
- `}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")}};c([u({type:Number,attribute:"expected-length"})],ge.prototype,"expectedLength",2),c([u({type:String,attribute:"pattern-mask"})],ge.prototype,"patternMask",2),c([u({type:String,attribute:"placeholder-text"})],ge.prototype,"placeholderText",2),c([u({type:String,attribute:"data-patternmask-message"})],ge.prototype,"dataPatternmaskMessage",2),c([C()],ge.prototype,"response",2),c([Tt("input")],ge.prototype,"_input",2),c([O("response",{waitUntilFirstUpdate:!0})],ge.prototype,"_handleValueChange",2);customElements.define("qti-text-entry-interaction",ge);var ms=class extends R{#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{...R.properties}}static{this.styles=[y`
5993
+ `}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")}};c([u({type:Number,attribute:"expected-length"})],ge.prototype,"expectedLength",2),c([u({type:String,attribute:"pattern-mask"})],ge.prototype,"patternMask",2),c([u({type:String,attribute:"placeholder-text"})],ge.prototype,"placeholderText",2),c([u({type:String,attribute:"data-patternmask-message"})],ge.prototype,"dataPatternmaskMessage",2),c([w()],ge.prototype,"response",2),c([Tt("input")],ge.prototype,"_input",2),c([O("response",{waitUntilFirstUpdate:!0})],ge.prototype,"_handleValueChange",2);customElements.define("qti-text-entry-interaction",ge);var ms=class extends R{#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{...R.properties}}static{this.styles=[y`
6424
5994
  :host {
6425
5995
  display: block;
6426
5996
  margin: 1em 0;
@@ -6476,7 +6046,7 @@ CES.load();
6476
6046
  slot {
6477
6047
  display: inline;
6478
6048
  }
6479
- `,rl=tc;var di=class extends pe(b,"qti-inline-choice"){static{this.styles=rl}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 f` <slot></slot> `}#e(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};c([u({type:String})],di.prototype,"identifier",2);customElements.define("qti-inline-choice",di);var gs=class extends b{render(){return f`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",gs);var wt=class extends pe(b,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}static{this.styles=y`
6049
+ `,rl=tc;var di=class extends pe(b,"qti-inline-choice"){static{this.styles=rl}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 f` <slot></slot> `}#e(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};c([u({type:String})],di.prototype,"identifier",2);customElements.define("qti-inline-choice",di);var gs=class extends b{render(){return f`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",gs);var Ct=class extends pe(b,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}static{this.styles=y`
6480
6050
  :host {
6481
6051
  display: flex;
6482
6052
  user-select: none;
@@ -6491,7 +6061,7 @@ CES.load();
6491
6061
  `}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return f`
6492
6062
  <slot part="slot"></slot>
6493
6063
  <slot part="dropslot" name="qti-simple-associable-choice"></slot>
6494
- `}};c([u({type:Number,attribute:"match-min"})],wt.prototype,"matchMin",2),c([u({type:Number,attribute:"match-max"})],wt.prototype,"matchMax",2),c([u({type:String,attribute:"fixed",converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],wt.prototype,"fixed",2);customElements.define("qti-simple-associable-choice",wt);var il=y`
6064
+ `}};c([u({type:Number,attribute:"match-min"})],Ct.prototype,"matchMin",2),c([u({type:Number,attribute:"match-max"})],Ct.prototype,"matchMax",2),c([u({type:String,attribute:"fixed",converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],Ct.prototype,"fixed",2);customElements.define("qti-simple-associable-choice",Ct);var il=y`
6495
6065
  :host {
6496
6066
  display: flex;
6497
6067
  align-items: center;
@@ -6512,7 +6082,7 @@ CES.load();
6512
6082
  <div part="cha"></div>
6513
6083
  </div>
6514
6084
  ${this.marker?f`<div id="label">${this.marker}</div>`:L}
6515
- <slot part="slot"></slot>`}};c([u({type:String,attribute:"template-identifier"})],nt.prototype,"templateIdentifier",2),c([u({type:String,attribute:"show-hide"})],nt.prototype,"showHide",2),c([u({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],nt.prototype,"fixed",2),c([u({type:String,attribute:!1})],nt.prototype,"marker",2);customElements.define("qti-simple-choice",nt);var HT=async o=>{let r=o.substring(0,o.lastIndexOf("/")),e=await wn().load(`${o}`).then(a=>a.assessmentTest()),t=await It().load(`${r}/${e.href}`).then(a=>a.htmlDoc()),i=await It().load(`${r}/${e.href}`).then(a=>a.items()),s=`${r}/${e.href}`,n=`${r}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:t,testURI:n,testURL:s,items:i,testIdentifier:e.identifier}},zT=async o=>ve().load(o).then(r=>r.htmlDoc().firstElementChild);var ke=class extends b{render(){return f`<slot></slot>`}process(){throw new Error("Not implemented")}};ke=c([w("qti-rule")],ke);var pi=class extends ke{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:vr(t)}})),t)}};c([u({type:String})],pi.prototype,"identifier",2),c([k({context:D,subscribe:!0}),C()],pi.prototype,"context",2);customElements.define("qti-lookup-outcome-value",pi);var fo=class extends ke{render(){return f`<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",fo);var go=class extends ke{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 bo(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(vr):r!==null?vr(r):null}},bo=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",go);var ui=class extends b{render(){return f`<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",ui);var mi=class extends ui{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",mi);var vo=class extends mi{render(){return f`${super.render()}`}};customElements.define("qti-response-else-if",vo);var bs=class extends rc(le){calculate(){return this.calculateChildren(Array.from(this.children))}};bs=c([w("qti-and")],bs);function rc(o){return class extends o{calculateChildren(e){return e.map(i=>{let s=i;if(!s.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=s.calculate(),a=!1;if(typeof n=="string")if(n==="true")a=!0;else if(n==="false")a=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof n=="boolean"&&(a=n);return a}).every(i=>typeof i=="boolean"&&i)}}}var vs=class extends S{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};c([u({type:String,attribute:"base-type"})],vs.prototype,"baseType",2);customElements.define("qti-base-value",vs);var yo=class extends S{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",yo);var xo=class extends le{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,s=t.value;return i.filter(l=>s.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",xo);var qo=class extends S{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",qo);var rr=class extends S{constructor(){super(...arguments);this.identifier=""}getResult(){if(!this.identifier)return console.error("qti-default requires an identifier attribute"),null;let e=this.identifier.split("."),t=null,i;if(e.length===2)t=e[0],i=e[1];else if(e.length===1)i=e[0];else return console.error("qti-default: invalid identifier format"),null;if(t){let n=this._testContext.items.find(l=>l.identifier===t);if(console.debug(`itemContext: ${JSON.stringify(n)}`),!this._testContext||!n)return console.warn(`qti-default: item "${t}" not found in test context`),null;let a=this._testContext.items.find(l=>l.identifier===t)?.variables.find(l=>l.identifier===i);return a?a.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item "${t}"`),null)}if(!this.context?.variables)return console.warn("qti-default: no variables found in item context"),null;let s=this.context.variables.find(n=>n.identifier===i);return s?s.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item context`),null)}};c([u({type:String})],rr.prototype,"identifier",2),c([k({context:D,subscribe:!0}),C()],rr.prototype,"context",2),c([C(),k({context:ye,subscribe:!0})],rr.prototype,"_testContext",2);customElements.define("qti-default",rr);var ys=class extends S{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 s=parseFloat(t.value),n=parseFloat(i.value);if(!isNaN(s)&&!isNaN(n))return this.roundingMode==="significantFigures"?s.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(s*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${s}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};c([u({type:String})],ys.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",ys);var wo=class extends S{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",wo);var hi=class extends S{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))),s=Math.pow(10,t-i-1);return Math.round(e*s)/s}};c([u({type:String,attribute:"rounding-mode"})],hi.prototype,"roundingMode",2),c([u({type:Number})],hi.prototype,"figures",2);customElements.define("qti-round-to",hi);var xs=class extends S{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):X.compareSingleValues(t.value,i.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};c([u({type:String})],xs.prototype,"toleranceMode",2);customElements.define("qti-equal",xs);var Co=class extends S{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 s=parseInt(i,10);if(isNaN(s))return console.error("qti-gcd non-numerical value"),null;e.push(s)}}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",Co);var Eo=class extends S{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",Eo);var To=class extends le{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",To);var Ao=class extends S{getResult(){return null}};customElements.define("qti-null",Ao);var So=class extends S{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",So);var ko=class extends S{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",ko);var Mo=class extends S{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",Mo);var Io=class extends le{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",Io);var qs=class extends S{getResult(){let r=this.context.variables.find(s=>s.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 s of t){let n=e.mapEntries.filter(l=>r.baseType==="string"&&!l.caseSensitive?X.compareSingleValues(l.mapKey.toLowerCase(),s.toLowerCase(),r.baseType):X.compareSingleValues(l.mapKey,s,r.baseType)),a=n.reduce((l,d)=>l.mappedValue>d.mappedValue?l:d,n.length>0?n[0]:{mapKey:null,mappedValue:null});a===null||a.mappedValue==null?i+=e.defaultValue:i+=a.mappedValue}return e?.lowerBound!==null&&e?.lowerBound!==void 0&&(i=Math.max(e.lowerBound,i)),e?.upperBound!==null&&e?.upperBound!==void 0&&(i=Math.min(e.upperBound,i)),i}};c([u({type:String})],qs.prototype,"identifier",2);customElements.define("qti-map-response",qs);var ws=class extends S{getResult(){let r=this.context.variables.find(n=>n.identifier===this.identifier);if(!r)return console.warn(`Response ${this.identifier} cannot be found`),null;let e=r.areaMapping;if(!e)return console.warn(`Area mapping not found for response ${this.identifier}`),null;let t=Array.isArray(r.value)?r.value:[r.value];if(!t||t.length===0)return console.warn(`No candidate responses for response ${this.identifier}`),null;let i=0,s=new Set;for(let n of t)for(let a of e.areaMapEntries){if(s.has(a.coords))continue;X.isPointInArea(n,`${a.shape},${a.coords}`,r.baseType)&&(i+=a.mappedValue??0,s.add(a.coords))}return s.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}};c([u({type:String})],ws.prototype,"identifier",2);customElements.define("qti-map-response-point",ws);var Cs=class extends S{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 s=parseFloat(i.value);if(isNaN(s))return console.error("qti-math-operator non-numerical value"),null;t.push(s)}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],s=t[1];return i===0&&s<=0||i<0&&!Number.isInteger(s)?null:Math.pow(i,s)}case"log_base":{if(t.length!==2)return null;let i=t[0],s=t[1];return i<=0||s<=0||s===1?null:Math.log(i)/Math.log(s)}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}}};c([u({type:String})],Cs.prototype,"name",2);customElements.define("qti-math-operator",Cs);var Ro=class o extends S{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return o.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):X.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(!X.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 s=null,n=[...r.value];for(let a of n)if(X.compareSingleValues(i,a,e.baseType)){s=a;break}if(s!==null)n.splice(n.indexOf(s),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",Ro);var _o=class extends S{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",_o);var Lo=class extends S{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",Lo);var $o=class extends S{render(){return f`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",$o);var Oo=class extends le{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(),s=!1;if(typeof i=="string")if(i==="true")s=!0;else if(i==="false")s=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof i=="boolean"&&(s=i);return s}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Oo);var Po=class extends S{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",Po);var Vo=class extends S{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),s=parseFloat(t.value);if(isNaN(i)||isNaN(s))return console.error("qti-power: non-numerical values encountered"),null;if(i===0&&s<=0||i<0&&!Number.isInteger(s))return null;let n;try{n=Math.pow(i,s)}catch(a){return console.error("qti-power: error calculating power:",a),null}if(isNaN(n))return null;if(n===1/0||n===-1/0)return n;if(!isFinite(n)||Math.abs(n)>Number.MAX_VALUE||n!==0&&Math.abs(n)<Number.MIN_VALUE)return null;if(isFinite(n)&&n!==0){let a=Math.floor(Math.log10(Math.abs(n))),l=Math.max(0,14-a),d=Math.pow(10,l);n=Math.round(n*d)/d}return n}};customElements.define("qti-power",Vo);var fi=class extends b{render(){let r=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return r===null?L:f`${JSON.stringify(r,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};c([u({type:String})],fi.prototype,"identifier",2),c([k({context:D,subscribe:!0}),C()],fi.prototype,"context",2);customElements.define("qti-printed-variable",fi);var No=class extends S{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",No);var Es=class extends ic(S){getResult(){return this.calculateChildren(Array.from(this.children))}};function ic(o){return class extends o{calculateChildren(e){let t=e.map(i=>{if(!i.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let s=i.calculate();return Number.isNaN(s)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(s)});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",Es);var Ts=class extends S{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 s=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),n=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return X.compareSingleValues(s,n,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};c([u({type:String,attribute:"case-sensitive"})],Ts.prototype,"caseSensitive",2);customElements.define("qti-string-match",Ts);var Do=class extends S{#e;constructor(){super(),this.#e=new Ho(Array.from(this.children))}getResult(){return this.#e.calculate()}},Ho=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",Do);var zo=class extends S{getResult(){let r=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===r).value}};customElements.define("qti-variable",zo);var ir=class extends S{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 s=this.min+this.step*t;if(s>this.max)break;Number.isInteger(s)&&e.push(s),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)]}};c([u({type:Number})],ir.prototype,"min",2),c([u({type:Number})],ir.prototype,"max",2),c([u({type:Number})],ir.prototype,"step",2);customElements.define("qti-random-integer",ir);var Uo=class extends S{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",Uo);var Bo=class extends S{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(s=>!e.value.includes(s))}return null}};customElements.define("qti-delete",Bo);var As,sl,gi=class extends S{constructor(){super(...arguments);T(this,As)}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=I(this,As,sl).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}};As=new WeakSet,sl=function(e){let t=this.context.variables.find(i=>i.identifier===e)?.value;return t===null||isNaN(Number(t))?null:Number(t)},c([u({type:String})],gi.prototype,"n",2),gi=c([w("qti-index")],gi);export{_n as Correctness,Ws as INITIAL_SESSION_CONTEXT,Xs as INITIAL_TEST_CONTEXT,R as Interaction,Qs as IsNullOrUndefined,Pe as ItemContainer,xt as ItemCorrectResponseMode,Kt as ItemPrintVariables,he as ItemShowCandidateCorrection,fe as ItemShowCorrectResponse,bs as QtiAnd,ie as QtiAssessmentItem,Re as QtiAssessmentItemRef,_e as QtiAssessmentSection,Nt as QtiAssessmentStimulusRef,Zs as QtiAssessmentStimulusRefConnectedEvent,ht as QtiAssessmentTest,hs as QtiAssociableHotspot,ii as QtiAssociateInteraction,vs as QtiBaseValue,si as QtiChoiceInteraction,Vi as QtiCompanionMaterialsInfo,le as QtiConditionExpression,yo as QtiContainerSize,xo as QtiContains,Ni as QtiContentBody,gt as QtiContextDeclaration,qo as QtiCorrect,Ve as QtiCustomInteraction,Mr as QtiCustomOperator,rr as QtiDefault,Bo as QtiDelete,et as QtiEndAttemptInteraction,xs as QtiEqual,ys as QtiEqualRounded,S as QtiExpression,ne as QtiExtendedTextInteraction,re as QtiFeedback,Rr as QtiFeedbackBlock,_r as QtiFeedbackInline,ko as QtiFieldValue,ai as QtiGap,li as QtiGapImg,os as QtiGapMatchInteraction,ci as QtiGapText,Co as QtiGcd,Ne as QtiGraphicAssociateInteraction,ns as QtiGraphicGapMatchInteraction,as as QtiGraphicOrderInteraction,Eo as QtiGt,To as QtiGte,tr as QtiHotspotChoice,ls as QtiHotspotInteraction,fs as QtiHottext,oi as QtiHottextInteraction,gi as QtiIndex,di as QtiInlineChoice,rt as QtiInlineChoiceInteraction,So as QtiIsNull,Zt as QtiItem,Lr as QtiItemBody,pi as QtiLookupOutcomeValue,Mo as QtiLt,Io as QtiLte,qs as QtiMapResponse,ws as QtiMapResponsePoint,Ro as QtiMatch,it as QtiMatchInteraction,Cs as QtiMathOperator,cs as QtiMediaInteraction,_o as QtiMember,ft as QtiModalFeedback,Lo as QtiMultiple,$o as QtiNot,Ao as QtiNull,Oo as QtiOr,st as QtiOrderInteraction,Po as QtiOrdered,Ce as QtiOutcomeDeclaration,B as QtiPortableCustomInteraction,ps as QtiPositionObjectInteraction,us as QtiPositionObjectStage,Vo as QtiPower,fi as QtiPrintedVariable,No as QtiProduct,gs as QtiPrompt,Uo as QtiRandom,ir as QtiRandomInteger,fo as QtiResponseCondition,$e as QtiResponseDeclaration,ui as QtiResponseElse,vo as QtiResponseElseIf,mi as QtiResponseIf,Or as QtiResponseProcessing,wo as QtiRound,hi as QtiRoundTo,we as QtiRubricBlock,Ln as QtiRuleElement,De as QtiSelectPointInteraction,go as QtiSetOutcomeValue,bo as QtiSetOutcomeValueRule,wt as QtiSimpleAssociableChoice,nt as QtiSimpleChoice,ot as QtiSliderInteraction,Ts as QtiStringMatch,Di as QtiStylesheet,Es as QtiSubtract,Do as QtiSum,Ho as QtiSumExpression,Ee as QtiTemplateDeclaration,Pi as QtiTest,Pr as QtiTestFeedback,Le as QtiTestPart,ge as QtiTextEntryInteraction,ms as QtiUploadInteraction,zo as QtiVariable,Ot as QtiVariableDeclaration,X as ScoringHelper,Jr as TestCheckItem,Oe as TestContainer,Nr as TestEndAttempt,zt as TestItemLink,de as TestNavigation,Je as TestNext,Fr as TestPagingButtonsStamp,Ke as TestPrev,Qr as TestPrintContext,Ft as TestPrintVariables,yt as TestScoringButtons,Wt as TestScoringFeedback,Xr as TestSectionButtonsStamp,jt as TestSectionLink,me as TestShowCorrectResponse,vt as TestStamp,J as TestView,Yr as TestViewToggle,N as computedContext,Be as computedItemContext,ae as configContext,vr as convertNumberToUniversalFormat,Il as decimalSeparator,zT as getItemByUri,HT as getManifestInfo,D as itemContext,Tn as itemContextVariables,rc as qtiAndMixin,Lt as qtiContext,ic as qtiSubtractMixin,ve as qtiTransformItem,wn as qtiTransformManifest,It as qtiTransformTest,Oi as removeDoubleSlashes,Fe as sessionContext,ye as testContext};
6085
+ <slot part="slot"></slot>`}};c([u({type:String,attribute:"template-identifier"})],nt.prototype,"templateIdentifier",2),c([u({type:String,attribute:"show-hide"})],nt.prototype,"showHide",2),c([u({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],nt.prototype,"fixed",2),c([u({type:String,attribute:!1})],nt.prototype,"marker",2);customElements.define("qti-simple-choice",nt);var HT=async o=>{let r=o.substring(0,o.lastIndexOf("/")),e=await Cn().load(`${o}`).then(a=>a.assessmentTest()),t=await It().load(`${r}/${e.href}`).then(a=>a.htmlDoc()),i=await It().load(`${r}/${e.href}`).then(a=>a.items()),s=`${r}/${e.href}`,n=`${r}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:t,testURI:n,testURL:s,items:i,testIdentifier:e.identifier}},zT=async o=>ve().load(o).then(r=>r.htmlDoc().firstElementChild);var Me=class extends b{render(){return f`<slot></slot>`}process(){throw new Error("Not implemented")}};Me=c([C("qti-rule")],Me);var pi=class extends Me{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:vr(t)}})),t)}};c([u({type:String})],pi.prototype,"identifier",2),c([M({context:D,subscribe:!0}),w()],pi.prototype,"context",2);customElements.define("qti-lookup-outcome-value",pi);var fo=class extends Me{render(){return f`<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",fo);var go=class extends Me{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 bo(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(vr):r!==null?vr(r):null}},bo=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",go);var ui=class extends b{render(){return f`<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",ui);var mi=class extends ui{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",mi);var vo=class extends mi{render(){return f`${super.render()}`}};customElements.define("qti-response-else-if",vo);var bs=class extends rc(le){calculate(){return this.calculateChildren(Array.from(this.children))}};bs=c([C("qti-and")],bs);function rc(o){return class extends o{calculateChildren(e){return e.map(i=>{let s=i;if(!s.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=s.calculate(),a=!1;if(typeof n=="string")if(n==="true")a=!0;else if(n==="false")a=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof n=="boolean"&&(a=n);return a}).every(i=>typeof i=="boolean"&&i)}}}var vs=class extends S{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};c([u({type:String,attribute:"base-type"})],vs.prototype,"baseType",2);customElements.define("qti-base-value",vs);var yo=class extends S{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",yo);var xo=class extends le{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,s=t.value;return i.filter(l=>s.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",xo);var qo=class extends S{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",qo);var rr=class extends S{constructor(){super(...arguments);this.identifier=""}getResult(){if(!this.identifier)return console.error("qti-default requires an identifier attribute"),null;let e=this.identifier.split("."),t=null,i;if(e.length===2)t=e[0],i=e[1];else if(e.length===1)i=e[0];else return console.error("qti-default: invalid identifier format"),null;if(t){let n=this._testContext.items.find(l=>l.identifier===t);if(console.debug(`itemContext: ${JSON.stringify(n)}`),!this._testContext||!n)return console.warn(`qti-default: item "${t}" not found in test context`),null;let a=this._testContext.items.find(l=>l.identifier===t)?.variables.find(l=>l.identifier===i);return a?a.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item "${t}"`),null)}if(!this.context?.variables)return console.warn("qti-default: no variables found in item context"),null;let s=this.context.variables.find(n=>n.identifier===i);return s?s.defaultValue||null:(console.warn(`qti-default: variable "${i}" not found in item context`),null)}};c([u({type:String})],rr.prototype,"identifier",2),c([M({context:D,subscribe:!0}),w()],rr.prototype,"context",2),c([w(),M({context:ye,subscribe:!0})],rr.prototype,"_testContext",2);customElements.define("qti-default",rr);var ys=class extends S{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 s=parseFloat(t.value),n=parseFloat(i.value);if(!isNaN(s)&&!isNaN(n))return this.roundingMode==="significantFigures"?s.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(s*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${s}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};c([u({type:String})],ys.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",ys);var Co=class extends S{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",Co);var hi=class extends S{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))),s=Math.pow(10,t-i-1);return Math.round(e*s)/s}};c([u({type:String,attribute:"rounding-mode"})],hi.prototype,"roundingMode",2),c([u({type:Number})],hi.prototype,"figures",2);customElements.define("qti-round-to",hi);var xs=class extends S{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):X.compareSingleValues(t.value,i.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};c([u({type:String})],xs.prototype,"toleranceMode",2);customElements.define("qti-equal",xs);var wo=class extends S{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 s=parseInt(i,10);if(isNaN(s))return console.error("qti-gcd non-numerical value"),null;e.push(s)}}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",wo);var Eo=class extends S{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",Eo);var To=class extends le{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",To);var Ao=class extends S{getResult(){return null}};customElements.define("qti-null",Ao);var So=class extends S{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",So);var Mo=class extends S{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",Mo);var ko=class extends S{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",ko);var Io=class extends le{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",Io);var qs=class extends S{getResult(){let r=this.context.variables.find(s=>s.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 s of t){let n=e.mapEntries.filter(l=>r.baseType==="string"&&!l.caseSensitive?X.compareSingleValues(l.mapKey.toLowerCase(),s.toLowerCase(),r.baseType):X.compareSingleValues(l.mapKey,s,r.baseType)),a=n.reduce((l,d)=>l.mappedValue>d.mappedValue?l:d,n.length>0?n[0]:{mapKey:null,mappedValue:null});a===null||a.mappedValue==null?i+=e.defaultValue:i+=a.mappedValue}return e?.lowerBound!==null&&e?.lowerBound!==void 0&&(i=Math.max(e.lowerBound,i)),e?.upperBound!==null&&e?.upperBound!==void 0&&(i=Math.min(e.upperBound,i)),i}};c([u({type:String})],qs.prototype,"identifier",2);customElements.define("qti-map-response",qs);var Cs=class extends S{getResult(){let r=this.context.variables.find(n=>n.identifier===this.identifier);if(!r)return console.warn(`Response ${this.identifier} cannot be found`),null;let e=r.areaMapping;if(!e)return console.warn(`Area mapping not found for response ${this.identifier}`),null;let t=Array.isArray(r.value)?r.value:[r.value];if(!t||t.length===0)return console.warn(`No candidate responses for response ${this.identifier}`),null;let i=0,s=new Set;for(let n of t)for(let a of e.areaMapEntries){if(s.has(a.coords))continue;X.isPointInArea(n,`${a.shape},${a.coords}`,r.baseType)&&(i+=a.mappedValue??0,s.add(a.coords))}return s.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}};c([u({type:String})],Cs.prototype,"identifier",2);customElements.define("qti-map-response-point",Cs);var ws=class extends S{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 s=parseFloat(i.value);if(isNaN(s))return console.error("qti-math-operator non-numerical value"),null;t.push(s)}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],s=t[1];return i===0&&s<=0||i<0&&!Number.isInteger(s)?null:Math.pow(i,s)}case"log_base":{if(t.length!==2)return null;let i=t[0],s=t[1];return i<=0||s<=0||s===1?null:Math.log(i)/Math.log(s)}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}}};c([u({type:String})],ws.prototype,"name",2);customElements.define("qti-math-operator",ws);var Ro=class o extends S{getResult(){if(this.children.length===2){let r=this.getVariables(),e=r[0],t=r[1];return o.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):X.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(!X.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 s=null,n=[...r.value];for(let a of n)if(X.compareSingleValues(i,a,e.baseType)){s=a;break}if(s!==null)n.splice(n.indexOf(s),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",Ro);var _o=class extends S{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",_o);var Lo=class extends S{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",Lo);var $o=class extends S{render(){return f`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",$o);var Oo=class extends le{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(),s=!1;if(typeof i=="string")if(i==="true")s=!0;else if(i==="false")s=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof i=="boolean"&&(s=i);return s}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Oo);var Po=class extends S{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",Po);var Vo=class extends S{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),s=parseFloat(t.value);if(isNaN(i)||isNaN(s))return console.error("qti-power: non-numerical values encountered"),null;if(i===0&&s<=0||i<0&&!Number.isInteger(s))return null;let n;try{n=Math.pow(i,s)}catch(a){return console.error("qti-power: error calculating power:",a),null}if(isNaN(n))return null;if(n===1/0||n===-1/0)return n;if(!isFinite(n)||Math.abs(n)>Number.MAX_VALUE||n!==0&&Math.abs(n)<Number.MIN_VALUE)return null;if(isFinite(n)&&n!==0){let a=Math.floor(Math.log10(Math.abs(n))),l=Math.max(0,14-a),d=Math.pow(10,l);n=Math.round(n*d)/d}return n}};customElements.define("qti-power",Vo);var fi=class extends b{render(){let r=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return r===null?L:f`${JSON.stringify(r,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};c([u({type:String})],fi.prototype,"identifier",2),c([M({context:D,subscribe:!0}),w()],fi.prototype,"context",2);customElements.define("qti-printed-variable",fi);var No=class extends S{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",No);var Es=class extends ic(S){getResult(){return this.calculateChildren(Array.from(this.children))}};function ic(o){return class extends o{calculateChildren(e){let t=e.map(i=>{if(!i.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let s=i.calculate();return Number.isNaN(s)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(s)});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",Es);var Ts=class extends S{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 s=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),n=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return X.compareSingleValues(s,n,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};c([u({type:String,attribute:"case-sensitive"})],Ts.prototype,"caseSensitive",2);customElements.define("qti-string-match",Ts);var Do=class extends S{#e;constructor(){super(),this.#e=new Ho(Array.from(this.children))}getResult(){return this.#e.calculate()}},Ho=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",Do);var zo=class extends S{getResult(){let r=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===r).value}};customElements.define("qti-variable",zo);var ir=class extends S{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 s=this.min+this.step*t;if(s>this.max)break;Number.isInteger(s)&&e.push(s),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)]}};c([u({type:Number})],ir.prototype,"min",2),c([u({type:Number})],ir.prototype,"max",2),c([u({type:Number})],ir.prototype,"step",2);customElements.define("qti-random-integer",ir);var Uo=class extends S{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",Uo);var Bo=class extends S{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(s=>!e.value.includes(s))}return null}};customElements.define("qti-delete",Bo);var As,sl,gi=class extends S{constructor(){super(...arguments);T(this,As)}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=I(this,As,sl).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}};As=new WeakSet,sl=function(e){let t=this.context.variables.find(i=>i.identifier===e)?.value;return t===null||isNaN(Number(t))?null:Number(t)},c([u({type:String})],gi.prototype,"n",2),gi=c([C("qti-index")],gi);export{_n as Correctness,Ws as INITIAL_SESSION_CONTEXT,Xs as INITIAL_TEST_CONTEXT,R as Interaction,Qs as IsNullOrUndefined,Pe as ItemContainer,xt as ItemCorrectResponseMode,Kt as ItemPrintVariables,he as ItemShowCandidateCorrection,fe as ItemShowCorrectResponse,bs as QtiAnd,ie as QtiAssessmentItem,Re as QtiAssessmentItemRef,_e as QtiAssessmentSection,Nt as QtiAssessmentStimulusRef,Zs as QtiAssessmentStimulusRefConnectedEvent,ht as QtiAssessmentTest,hs as QtiAssociableHotspot,ii as QtiAssociateInteraction,vs as QtiBaseValue,si as QtiChoiceInteraction,Vi as QtiCompanionMaterialsInfo,le as QtiConditionExpression,yo as QtiContainerSize,xo as QtiContains,Ni as QtiContentBody,gt as QtiContextDeclaration,qo as QtiCorrect,Ve as QtiCustomInteraction,kr as QtiCustomOperator,rr as QtiDefault,Bo as QtiDelete,et as QtiEndAttemptInteraction,xs as QtiEqual,ys as QtiEqualRounded,S as QtiExpression,ne as QtiExtendedTextInteraction,re as QtiFeedback,Rr as QtiFeedbackBlock,_r as QtiFeedbackInline,Mo as QtiFieldValue,ai as QtiGap,li as QtiGapImg,os as QtiGapMatchInteraction,ci as QtiGapText,wo as QtiGcd,Ne as QtiGraphicAssociateInteraction,ns as QtiGraphicGapMatchInteraction,as as QtiGraphicOrderInteraction,Eo as QtiGt,To as QtiGte,tr as QtiHotspotChoice,ls as QtiHotspotInteraction,fs as QtiHottext,oi as QtiHottextInteraction,gi as QtiIndex,di as QtiInlineChoice,rt as QtiInlineChoiceInteraction,So as QtiIsNull,Zt as QtiItem,Lr as QtiItemBody,pi as QtiLookupOutcomeValue,ko as QtiLt,Io as QtiLte,qs as QtiMapResponse,Cs as QtiMapResponsePoint,Ro as QtiMatch,it as QtiMatchInteraction,ws as QtiMathOperator,cs as QtiMediaInteraction,_o as QtiMember,ft as QtiModalFeedback,Lo as QtiMultiple,$o as QtiNot,Ao as QtiNull,Oo as QtiOr,st as QtiOrderInteraction,Po as QtiOrdered,we as QtiOutcomeDeclaration,B as QtiPortableCustomInteraction,ps as QtiPositionObjectInteraction,us as QtiPositionObjectStage,Vo as QtiPower,fi as QtiPrintedVariable,No as QtiProduct,gs as QtiPrompt,Uo as QtiRandom,ir as QtiRandomInteger,fo as QtiResponseCondition,$e as QtiResponseDeclaration,ui as QtiResponseElse,vo as QtiResponseElseIf,mi as QtiResponseIf,Or as QtiResponseProcessing,Co as QtiRound,hi as QtiRoundTo,Ce as QtiRubricBlock,Ln as QtiRuleElement,De as QtiSelectPointInteraction,go as QtiSetOutcomeValue,bo as QtiSetOutcomeValueRule,Ct as QtiSimpleAssociableChoice,nt as QtiSimpleChoice,ot as QtiSliderInteraction,Ts as QtiStringMatch,Di as QtiStylesheet,Es as QtiSubtract,Do as QtiSum,Ho as QtiSumExpression,Ee as QtiTemplateDeclaration,Pi as QtiTest,Pr as QtiTestFeedback,Le as QtiTestPart,ge as QtiTextEntryInteraction,ms as QtiUploadInteraction,zo as QtiVariable,Ot as QtiVariableDeclaration,X as ScoringHelper,Jr as TestCheckItem,Oe as TestContainer,Nr as TestEndAttempt,zt as TestItemLink,de as TestNavigation,Je as TestNext,Fr as TestPagingButtonsStamp,Ke as TestPrev,Qr as TestPrintContext,Ft as TestPrintVariables,yt as TestScoringButtons,Wt as TestScoringFeedback,Xr as TestSectionButtonsStamp,jt as TestSectionLink,me as TestShowCorrectResponse,vt as TestStamp,J as TestView,Yr as TestViewToggle,N as computedContext,Be as computedItemContext,ae as configContext,vr as convertNumberToUniversalFormat,Il as decimalSeparator,zT as getItemByUri,HT as getManifestInfo,D as itemContext,Tn as itemContextVariables,rc as qtiAndMixin,Lt as qtiContext,ic as qtiSubtractMixin,ve as qtiTransformItem,Cn as qtiTransformManifest,It as qtiTransformTest,Oi as removeDoubleSlashes,Fe as sessionContext,ye as testContext};
6516
6086
  /*! Bundled license information:
6517
6087
 
6518
6088
  @lit-labs/ssr-dom-shim/lib/element-internals.js: