@citolab/qti-components 7.27.5 → 7.28.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.global.js +1 -1
- package/cdn/index.js +16 -16
- package/dist/{chunk-CEGI6UUL.js → chunk-BPIDAS3T.js} +9 -19
- package/dist/chunk-BPIDAS3T.js.map +1 -0
- package/dist/{chunk-TELCVV2J.js → chunk-F6WP6WEF.js} +2 -2
- package/dist/{chunk-SUQA7VZJ.js → chunk-OQ77SE2W.js} +2 -2
- package/dist/{chunk-47XMSJK3.js → chunk-PINGOK2F.js} +3 -3
- package/dist/{chunk-SNRBEBO7.js → chunk-U2FLSHK7.js} +2 -2
- package/dist/elements.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/item.js +2 -2
- package/dist/loader.js +2 -2
- package/dist/{qti-transform-test-C2fL4PtU.d.ts → qti-transform-test-DMx816H0.d.ts} +7 -2
- package/dist/test.d.ts +1 -1
- package/dist/test.js +3 -3
- package/dist/transformers.d.ts +1 -1
- package/dist/transformers.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-CEGI6UUL.js.map +0 -1
- /package/dist/{chunk-TELCVV2J.js.map → chunk-F6WP6WEF.js.map} +0 -0
- /package/dist/{chunk-SUQA7VZJ.js.map → chunk-OQ77SE2W.js.map} +0 -0
- /package/dist/{chunk-47XMSJK3.js.map → chunk-PINGOK2F.js.map} +0 -0
- /package/dist/{chunk-SNRBEBO7.js.map → chunk-U2FLSHK7.js.map} +0 -0
package/cdn/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var Cd=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var ba=s=>{throw TypeError(s)};var d=(s,r,e,t)=>{for(var i=t>1?void 0:t?Sd(r,e):r,n=s.length-1,o;n>=0;n--)(o=s[n])&&(i=(t?o(r,e,i):o(i))||i);return t&&i&&Cd(r,e,i),i};var _o=(s,r,e)=>r.has(s)||ba("Cannot "+e);var I=(s,r,e)=>(_o(s,r,"read from private field"),e?e.call(s):r.get(s)),L=(s,r,e)=>r.has(s)?ba("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(s):r.set(s,e),U=(s,r,e,t)=>(_o(s,r,"write to private field"),t?t.call(s,e):r.set(s,e),e),P=(s,r,e)=>(_o(s,r,"access private method"),e);var va=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(r){this.ariaActiveDescendantElement=null,this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColIndexText="",this.ariaColSpan="",this.ariaControlsElements=null,this.ariaCurrent="",this.ariaDescribedByElements=null,this.ariaDescription="",this.ariaDetailsElements=null,this.ariaDisabled="",this.ariaErrorMessageElements=null,this.ariaExpanded="",this.ariaFlowToElements=null,this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLabelledByElements=null,this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaOwnsElements=null,this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRelevant="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowIndexText="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=r}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var ke=function(s,r,e,t,i){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof r=="function"?s!==r||!i:!r.has(s))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(s,e):i?i.value=e:r.set(s,e),e},Y=function(s,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?s!==r||!t:!r.has(s))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(s):t?t.value:r.get(s)},Gt,Zi,en,Mr,Lo,_r,tn,St,Lr,Ze,rn,ya,xa=s=>typeof s=="boolean"?s:s?.capture??!1;var $o=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=xa(t)?this.__captureEventListeners:this.__eventListeners,n=i.get(r);if(n===void 0)n=new Map,i.set(r,n);else if(n.has(e))return;let o=typeof t=="object"&&t?t:{};o.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),n.set(e,o??{})}removeEventListener(r,e,t){if(e==null)return;let i=xa(t)?this.__captureEventListeners:this.__eventListeners,n=i.get(r);n!==void 0&&(n.delete(e),n.size||i.delete(r))}dispatchEvent(r){let e=[this],t=this.__eventTargetParent;if(r.composed)for(;t;)e.push(t),t=t.__eventTargetParent;else for(;t&&t!==this.__host;)e.push(t),t=t.__eventTargetParent;let i=!1,n=!1,o=0,a=null,l=null,c=null,p=r.stopPropagation,u=r.stopImmediatePropagation;Object.defineProperties(r,{target:{get(){return a??l},...j},srcElement:{get(){return r.target},...j},currentTarget:{get(){return c},...j},eventPhase:{get(){return o},...j},composedPath:{value:()=>e,...j},stopPropagation:{value:()=>{i=!0,p.call(r)},...j},stopImmediatePropagation:{value:()=>{n=!0,u.call(r)},...j}});let
|
|
1
|
+
var Cd=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var ba=s=>{throw TypeError(s)};var d=(s,r,e,t)=>{for(var i=t>1?void 0:t?Sd(r,e):r,n=s.length-1,o;n>=0;n--)(o=s[n])&&(i=(t?o(r,e,i):o(i))||i);return t&&i&&Cd(r,e,i),i};var _o=(s,r,e)=>r.has(s)||ba("Cannot "+e);var I=(s,r,e)=>(_o(s,r,"read from private field"),e?e.call(s):r.get(s)),L=(s,r,e)=>r.has(s)?ba("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(s):r.set(s,e),U=(s,r,e,t)=>(_o(s,r,"write to private field"),t?t.call(s,e):r.set(s,e),e),P=(s,r,e)=>(_o(s,r,"access private method"),e);var va=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(r){this.ariaActiveDescendantElement=null,this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBrailleLabel="",this.ariaBrailleRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColIndexText="",this.ariaColSpan="",this.ariaControlsElements=null,this.ariaCurrent="",this.ariaDescribedByElements=null,this.ariaDescription="",this.ariaDetailsElements=null,this.ariaDisabled="",this.ariaErrorMessageElements=null,this.ariaExpanded="",this.ariaFlowToElements=null,this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLabelledByElements=null,this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaOwnsElements=null,this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRelevant="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowIndexText="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=r}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var ke=function(s,r,e,t,i){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof r=="function"?s!==r||!i:!r.has(s))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(s,e):i?i.value=e:r.set(s,e),e},Y=function(s,r,e,t){if(e==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?s!==r||!t:!r.has(s))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?t:e==="a"?t.call(s):t?t.value:r.get(s)},Gt,Zi,en,Mr,Lo,_r,tn,St,Lr,Ze,rn,ya,xa=s=>typeof s=="boolean"?s:s?.capture??!1;var $o=class{constructor(){this.__eventListeners=new Map,this.__captureEventListeners=new Map}addEventListener(r,e,t){if(e==null)return;let i=xa(t)?this.__captureEventListeners:this.__eventListeners,n=i.get(r);if(n===void 0)n=new Map,i.set(r,n);else if(n.has(e))return;let o=typeof t=="object"&&t?t:{};o.signal?.addEventListener("abort",()=>this.removeEventListener(r,e,t)),n.set(e,o??{})}removeEventListener(r,e,t){if(e==null)return;let i=xa(t)?this.__captureEventListeners:this.__eventListeners,n=i.get(r);n!==void 0&&(n.delete(e),n.size||i.delete(r))}dispatchEvent(r){let e=[this],t=this.__eventTargetParent;if(r.composed)for(;t;)e.push(t),t=t.__eventTargetParent;else for(;t&&t!==this.__host;)e.push(t),t=t.__eventTargetParent;let i=!1,n=!1,o=0,a=null,l=null,c=null,p=r.stopPropagation,u=r.stopImmediatePropagation;Object.defineProperties(r,{target:{get(){return a??l},...j},srcElement:{get(){return r.target},...j},currentTarget:{get(){return c},...j},eventPhase:{get(){return o},...j},composedPath:{value:()=>e,...j},stopPropagation:{value:()=>{i=!0,p.call(r)},...j},stopImmediatePropagation:{value:()=>{n=!0,u.call(r)},...j}});let m=(h,v,q)=>{typeof h=="function"?h(r):typeof h?.handleEvent=="function"&&h.handleEvent(r),v.once&&q.delete(h)},y=()=>(c=null,o=0,!r.defaultPrevented),b=e.slice().reverse();a=!this.__host||!r.composed?this:null;let w=h=>{for(l=this;l.__host&&h.includes(l.__host);)l=l.__host};for(let h of b){!a&&(!l||l===h.__host)&&w(b.slice(b.indexOf(h))),c=h,o=h===r.target?2:1;let v=h.__captureEventListeners.get(r.type);if(v){for(let[q,A]of v)if(m(q,A,v),n)return y()}if(i)return y()}let f=r.bubbles?e:[this];l=null;for(let h of f){!a&&(!l||h===l.__host)&&w(f.slice(0,f.indexOf(h)+1)),c=h,o=h===r.target?2:3;let v=h.__eventListeners.get(r.type);if(v){for(let[q,A]of v)if(m(q,A,v),n)return y()}if(i)return y()}return y()}},Po=$o;var j={__proto__:null};j.enumerable=!0;Object.freeze(j);var Vo=(Ze=class{constructor(r,e={}){if(Gt.set(this,!1),Zi.set(this,!1),en.set(this,!1),Mr.set(this,!1),Lo.set(this,Date.now()),_r.set(this,!1),tn.set(this,void 0),St.set(this,void 0),Lr.set(this,void 0),this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,arguments.length===0)throw new Error("The type argument must be specified");if(typeof e!="object"||!e)throw new Error('The "options" argument must be an object');let{bubbles:t,cancelable:i,composed:n}=e;ke(this,Gt,!!i,"f"),ke(this,Zi,!!t,"f"),ke(this,en,!!n,"f"),ke(this,tn,`${r}`,"f"),ke(this,St,null,"f"),ke(this,Lr,!1,"f")}initEvent(r,e,t){throw new Error("Method not implemented.")}stopImmediatePropagation(){this.stopPropagation()}preventDefault(){ke(this,Mr,!0,"f")}get target(){return Y(this,St,"f")}get currentTarget(){return Y(this,St,"f")}get srcElement(){return Y(this,St,"f")}get type(){return Y(this,tn,"f")}get cancelable(){return Y(this,Gt,"f")}get defaultPrevented(){return Y(this,Gt,"f")&&Y(this,Mr,"f")}get timeStamp(){return Y(this,Lo,"f")}composedPath(){return Y(this,Lr,"f")?[Y(this,St,"f")]:[]}get returnValue(){return!Y(this,Gt,"f")||!Y(this,Mr,"f")}get bubbles(){return Y(this,Zi,"f")}get composed(){return Y(this,en,"f")}get eventPhase(){return Y(this,Lr,"f")?Ze.AT_TARGET:Ze.NONE}get cancelBubble(){return Y(this,_r,"f")}set cancelBubble(r){r&&ke(this,_r,!0,"f")}stopPropagation(){ke(this,_r,!0,"f")}get isTrusted(){return!1}},Gt=new WeakMap,Zi=new WeakMap,en=new WeakMap,Mr=new WeakMap,Lo=new WeakMap,_r=new WeakMap,tn=new WeakMap,St=new WeakMap,Lr=new WeakMap,Ze.NONE=0,Ze.CAPTURING_PHASE=1,Ze.AT_TARGET=2,Ze.BUBBLING_PHASE=3,Ze);Object.defineProperties(Vo.prototype,{initEvent:j,stopImmediatePropagation:j,preventDefault:j,target:j,currentTarget:j,srcElement:j,type:j,cancelable:j,defaultPrevented:j,timeStamp:j,composedPath:j,returnValue:j,bubbles:j,composed:j,eventPhase:j,cancelBubble:j,stopPropagation:j,isTrusted:j});var qa=(ya=class extends Vo{constructor(r,e={}){super(r,e),rn.set(this,void 0),ke(this,rn,e?.detail??null,"f")}initCustomEvent(r,e,t,i){throw new Error("Method not implemented.")}get detail(){return Y(this,rn,"f")}},rn=new WeakMap,ya);Object.defineProperties(qa.prototype,{detail:j});var Do=Vo,No=qa;var te;var Wp=(te=class{constructor(){this.STYLE_RULE=1,this.CHARSET_RULE=2,this.IMPORT_RULE=3,this.MEDIA_RULE=4,this.FONT_FACE_RULE=5,this.PAGE_RULE=6,this.NAMESPACE_RULE=10,this.KEYFRAMES_RULE=7,this.KEYFRAME_RULE=8,this.SUPPORTS_RULE=12,this.COUNTER_STYLE_RULE=11,this.FONT_FEATURE_VALUES_RULE=14,this.__parentStyleSheet=null,this.cssText=""}get parentRule(){return null}get parentStyleSheet(){return this.__parentStyleSheet}get type(){return 0}},te.STYLE_RULE=1,te.CHARSET_RULE=2,te.IMPORT_RULE=3,te.MEDIA_RULE=4,te.FONT_FACE_RULE=5,te.PAGE_RULE=6,te.NAMESPACE_RULE=10,te.KEYFRAMES_RULE=7,te.KEYFRAME_RULE=8,te.SUPPORTS_RULE=12,te.COUNTER_STYLE_RULE=11,te.FONT_FEATURE_VALUES_RULE=14,te);globalThis.Event??=Do;globalThis.CustomEvent??=No;var wa=new WeakMap,$r=s=>{let r=wa.get(s);return r===void 0&&wa.set(s,r=new Map),r},Ad=class extends Po{constructor(){super(...arguments),this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from($r(this)).map(([r,e])=>({name:r,value:e}))}get shadowRoot(){return this.__shadowRootMode==="closed"?null:this.__shadowRoot}get localName(){return this.constructor.__localName}get tagName(){return this.localName?.toUpperCase()}setAttribute(r,e){$r(this).set(r,String(e))}removeAttribute(r){$r(this).delete(r)}toggleAttribute(r,e){if(this.hasAttribute(r)){if(e===void 0||!e)return this.removeAttribute(r),!1}else return e===void 0||e?(this.setAttribute(r,""),!0):!1;return!0}hasAttribute(r){return $r(this).has(r)}attachShadow(r){let e={host:this};return this.__shadowRootMode=r.mode,r&&r.mode==="open"&&(this.__shadowRoot=e),e}attachInternals(){if(this.__internals!==null)throw new Error("Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.");let r=new va(this);return this.__internals=r,r}getAttribute(r){return $r(this).get(r)??null}};var Td=class extends Ad{},Ho=Td;globalThis.litServerRoot??=Object.defineProperty(new Ho,"localName",{get(){return"lit-server-root"}});function Id(){let s,r;return{promise:new Promise((t,i)=>{s=t,r=i}),resolve:s,reject:r}}var Oo=class{constructor(){this.__definitions=new Map,this.__reverseDefinitions=new Map,this.__pendingWhenDefineds=new Map}define(r,e){if(this.__definitions.has(r))if(process.env.NODE_ENV==="development")console.warn(`'CustomElementRegistry' already has "${r}" defined. This may have been caused by live reload or hot module replacement in which case it can be safely ignored.
|
|
2
2
|
Make sure to test your application with a production build as repeat registrations will throw in production.`);else throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the name "${r}" has already been used with this registry`);if(this.__reverseDefinitions.has(e))throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the constructor has already been used with this registry for the tag name ${this.__reverseDefinitions.get(e)}`);e.__localName=r,this.__definitions.set(r,{ctor:e,observedAttributes:e.observedAttributes??[]}),this.__reverseDefinitions.set(e,r),this.__pendingWhenDefineds.get(r)?.resolve(e),this.__pendingWhenDefineds.delete(r)}get(r){return this.__definitions.get(r)?.ctor}getName(r){return this.__reverseDefinitions.get(r)??null}upgrade(r){throw new Error("customElements.upgrade is not currently supported in SSR. Please file a bug if you need it.")}async whenDefined(r){let e=this.__definitions.get(r);if(e)return e.ctor;let t=this.__pendingWhenDefineds.get(r);return t||(t=Id(),this.__pendingWhenDefineds.set(r,t)),t.promise}},Rd=Oo;var Ea=new Rd;var Pr=globalThis,nn=Pr.ShadowRoot&&(Pr.ShadyCSS===void 0||Pr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Fo=Symbol(),Ca=new WeakMap,Vr=class{constructor(r,e,t){if(this._$cssResult$=!0,t!==Fo)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=r,this.t=e}get styleSheet(){let r=this.o,e=this.t;if(nn&&r===void 0){let t=e!==void 0&&e.length===1;t&&(r=Ca.get(e)),r===void 0&&((this.o=r=new CSSStyleSheet).replaceSync(this.cssText),t&&Ca.set(e,r))}return r}toString(){return this.cssText}},Sa=s=>new Vr(typeof s=="string"?s:s+"",void 0,Fo),C=(s,...r)=>{let e=s.length===1?s[0]:r.reduce((t,i,n)=>t+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+s[n+1],s[0]);return new Vr(e,s,Fo)},Aa=(s,r)=>{if(nn)s.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of r){let t=document.createElement("style"),i=Pr.litNonce;i!==void 0&&t.setAttribute("nonce",i),t.textContent=e.cssText,s.appendChild(t)}},Uo=nn||Pr.CSSStyleSheet===void 0?s=>s:s=>s instanceof CSSStyleSheet?(r=>{let e="";for(let t of r.cssRules)e+=t.cssText;return Sa(e)})(s):s;var{is:kd,defineProperty:Md,getOwnPropertyDescriptor:_d,getOwnPropertyNames:Ld,getOwnPropertySymbols:$d,getPrototypeOf:Pd}=Object,Or=globalThis;Or.customElements??=Ea;var Ta=Or.trustedTypes,Vd=Ta?Ta.emptyScript:"",Dd=Or.reactiveElementPolyfillSupport,Dr=(s,r)=>s,Nr={toAttribute(s,r){switch(r){case Boolean:s=s?Vd:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,r){let e=s;switch(r){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch{e=null}}return e}},on=(s,r)=>!kd(s,r),Ia={attribute:!0,type:String,converter:Nr,reflect:!1,useDefault:!1,hasChanged:on};Symbol.metadata??=Symbol("metadata"),Or.litPropertyMetadata??=new WeakMap;var Fe=class extends(globalThis.HTMLElement??Ho){static addInitializer(r){this._$Ei(),(this.l??=[]).push(r)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(r,e=Ia){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(r)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(r,e),!e.noAccessor){let t=Symbol(),i=this.getPropertyDescriptor(r,t,e);i!==void 0&&Md(this.prototype,r,i)}}static getPropertyDescriptor(r,e,t){let{get:i,set:n}=_d(this.prototype,r)??{get(){return this[e]},set(o){this[e]=o}};return{get:i,set(o){let a=i?.call(this);n?.call(this,o),this.requestUpdate(r,a,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(r){return this.elementProperties.get(r)??Ia}static _$Ei(){if(this.hasOwnProperty(Dr("elementProperties")))return;let r=Pd(this);r.finalize(),r.l!==void 0&&(this.l=[...r.l]),this.elementProperties=new Map(r.elementProperties)}static finalize(){if(this.hasOwnProperty(Dr("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Dr("properties"))){let e=this.properties,t=[...Ld(e),...$d(e)];for(let i of t)this.createProperty(i,e[i])}let r=this[Symbol.metadata];if(r!==null){let e=litPropertyMetadata.get(r);if(e!==void 0)for(let[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let i=this._$Eu(e,t);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(r){let e=[];if(Array.isArray(r)){let t=new Set(r.flat(1/0).reverse());for(let i of t)e.unshift(Uo(i))}else r!==void 0&&e.push(Uo(r));return e}static _$Eu(r,e){let t=e.attribute;return t===!1?void 0:typeof t=="string"?t:typeof r=="string"?r.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(r=>this.enableUpdating=r),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(r=>r(this))}addController(r){(this._$EO??=new Set).add(r),this.renderRoot!==void 0&&this.isConnected&&r.hostConnected?.()}removeController(r){this._$EO?.delete(r)}_$E_(){let r=new Map,e=this.constructor.elementProperties;for(let t of e.keys())this.hasOwnProperty(t)&&(r.set(t,this[t]),delete this[t]);r.size>0&&(this._$Ep=r)}createRenderRoot(){let r=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Aa(r,this.constructor.elementStyles),r}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(r=>r.hostConnected?.())}enableUpdating(r){}disconnectedCallback(){this._$EO?.forEach(r=>r.hostDisconnected?.())}attributeChangedCallback(r,e,t){this._$AK(r,t)}_$ET(r,e){let t=this.constructor.elementProperties.get(r),i=this.constructor._$Eu(r,t);if(i!==void 0&&t.reflect===!0){let n=(t.converter?.toAttribute!==void 0?t.converter:Nr).toAttribute(e,t.type);this._$Em=r,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(r,e){let t=this.constructor,i=t._$Eh.get(r);if(i!==void 0&&this._$Em!==i){let n=t.getPropertyOptions(i),o=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:Nr;this._$Em=i;let a=o.fromAttribute(e,n.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(r,e,t,i=!1,n){if(r!==void 0){let o=this.constructor;if(i===!1&&(n=this[r]),t??=o.getPropertyOptions(r),!((t.hasChanged??on)(n,e)||t.useDefault&&t.reflect&&n===this._$Ej?.get(r)&&!this.hasAttribute(o._$Eu(r,t))))return;this.C(r,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(r,e,{useDefault:t,reflect:i,wrapped:n},o){t&&!(this._$Ej??=new Map).has(r)&&(this._$Ej.set(r,o??e??this[r]),n!==!0||o!==void 0)||(this._$AL.has(r)||(this.hasUpdated||t||(e=void 0),this._$AL.set(r,e)),i===!0&&this._$Em!==r&&(this._$Eq??=new Set).add(r))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let r=this.scheduleUpdate();return r!=null&&await r,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[i,n]of this._$Ep)this[i]=n;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[i,n]of t){let{wrapped:o}=n,a=this[i];o!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,n,a)}}let r=!1,e=this._$AL;try{r=this.shouldUpdate(e),r?(this.willUpdate(e),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(e)):this._$EM()}catch(t){throw r=!1,this._$EM(),t}r&&this._$AE(e)}willUpdate(r){}_$AE(r){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(r)),this.updated(r)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(r){return!0}update(r){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(r){}firstUpdated(r){}};Fe.elementStyles=[],Fe.shadowRootOptions={mode:"open"},Fe[Dr("elementProperties")]=new Map,Fe[Dr("finalized")]=new Map,Dd?.({ReactiveElement:Fe}),(Or.reactiveElementVersions??=[]).push("2.1.2");var un=globalThis,Ra=s=>s,sn=un.trustedTypes,ka=sn?sn.createPolicy("lit-html",{createHTML:s=>s}):void 0,zo="$lit$",Ue=`lit$${Math.random().toFixed(9).slice(2)}$`,jo="?"+Ue,Nd=`<${jo}>`,It=un.document===void 0?{createTreeWalker:()=>({})}:document,Fr=()=>It.createComment(""),Ur=s=>s===null||typeof s!="object"&&typeof s!="function",Wo=Array.isArray,Va=s=>Wo(s)||typeof s?.[Symbol.iterator]=="function",Bo=`[
|
|
3
3
|
\f\r]`,Hr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Ma=/-->/g,_a=/>/g,At=RegExp(`>|${Bo}(?:([^\\s"'>=/]+)(${Bo}*=${Bo}*(?:[^
|
|
4
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),La=/'/g,$a=/"/g,Da=/^(?:script|style|textarea|title)$/i,Go=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),x=Go(1),mn=Go(2),gu=Go(3),re=Symbol.for("lit-noChange"),O=Symbol.for("lit-nothing"),Pa=new WeakMap,Tt=It.createTreeWalker(It,129);function Na(s,r){if(!Wo(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return ka!==void 0?ka.createHTML(r):r}var Oa=(s,r)=>{let e=s.length-1,t=[],i,n=r===2?"<svg>":r===3?"<math>":"",o=Hr;for(let a=0;a<e;a++){let l=s[a],c,p,u=-1,h=0;for(;h<l.length&&(o.lastIndex=h,p=o.exec(l),p!==null);)h=o.lastIndex,o===Hr?p[1]==="!--"?o=Ma:p[1]!==void 0?o=_a:p[2]!==void 0?(Da.test(p[2])&&(i=RegExp("</"+p[2],"g")),o=At):p[3]!==void 0&&(o=At):o===At?p[0]===">"?(o=i??Hr,u=-1):p[1]===void 0?u=-2:(u=o.lastIndex-p[2].length,c=p[1],o=p[3]===void 0?At:p[3]==='"'?$a:La):o===$a||o===La?o=At:o===Ma||o===_a?o=Hr:(o=At,i=void 0);let y=o===At&&s[a+1].startsWith("/>")?" ":"";n+=o===Hr?l+Nd:u>=0?(t.push(c),l.slice(0,u)+zo+l.slice(u)+Ue+y):l+Ue+(u===-2?a:y)}return[Na(s,n+(s[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},Br=class s{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let n=0,o=0,a=r.length-1,l=this.parts,[c,p]=Oa(r,e);if(this.el=s.createElement(c,t),Tt.currentNode=this.el.content,e===2||e===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(i=Tt.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let u of i.getAttributeNames())if(u.endsWith(zo)){let h=p[o++],y=i.getAttribute(u).split(Ue),v=/([.?@])?(.*)/.exec(h);l.push({type:1,index:n,name:v[2],strings:y,ctor:v[1]==="."?ln:v[1]==="?"?cn:v[1]==="@"?dn:kt}),i.removeAttribute(u)}else u.startsWith(Ue)&&(l.push({type:6,index:n}),i.removeAttribute(u));if(Da.test(i.tagName)){let u=i.textContent.split(Ue),h=u.length-1;if(h>0){i.textContent=sn?sn.emptyScript:"";for(let y=0;y<h;y++)i.append(u[y],Fr()),Tt.nextNode(),l.push({type:2,index:++n});i.append(u[h],Fr())}}}else if(i.nodeType===8)if(i.data===jo)l.push({type:2,index:n});else{let u=-1;for(;(u=i.data.indexOf(Ue,u+1))!==-1;)l.push({type:7,index:n}),u+=Ue.length-1}n++}}static createElement(r,e){let t=It.createElement("template");return t.innerHTML=r,t}};function Rt(s,r,e=s,t){if(r===re)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,n=Ur(r)?void 0:r._$litDirective$;return i?.constructor!==n&&(i?._$AO?.(!1),n===void 0?i=void 0:(i=new n(s),i._$AT(s,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=Rt(s,i._$AS(s,r.values),i,t)),r}var an=class{constructor(r,e){this._$AV=[],this._$AN=void 0,this._$AD=r,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(r){let{el:{content:e},parts:t}=this._$AD,i=(r?.creationScope??It).importNode(e,!0);Tt.currentNode=i;let n=Tt.nextNode(),o=0,a=0,l=t[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new Xt(n,n.nextSibling,this,r):l.type===1?c=new l.ctor(n,l.name,l.strings,this,r):l.type===6&&(c=new pn(n,this,r)),this._$AV.push(c),l=t[++a]}o!==l?.index&&(n=Tt.nextNode(),o++)}return Tt.currentNode=It,i}p(r){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(r,t,e),e+=t.strings.length-2):t._$AI(r[e])),e++}},Xt=class s{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=O,this._$AN=void 0,this._$AA=r,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let r=this._$AA.parentNode,e=this._$AM;return e!==void 0&&r?.nodeType===11&&(r=e.parentNode),r}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(r,e=this){r=Rt(this,r,e),Ur(r)?r===O||r==null||r===""?(this._$AH!==O&&this._$AR(),this._$AH=O):r!==this._$AH&&r!==re&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):Va(r)?this.k(r):this._(r)}O(r){return this._$AA.parentNode.insertBefore(r,this._$AB)}T(r){this._$AH!==r&&(this._$AR(),this._$AH=this.O(r))}_(r){this._$AH!==O&&Ur(this._$AH)?this._$AA.nextSibling.data=r:this.T(It.createTextNode(r)),this._$AH=r}$(r){let{values:e,_$litType$:t}=r,i=typeof t=="number"?this._$AC(r):(t.el===void 0&&(t.el=Br.createElement(Na(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let n=new an(i,this),o=n.u(this.options);n.p(e),this.T(o),this._$AH=n}}_$AC(r){let e=Pa.get(r.strings);return e===void 0&&Pa.set(r.strings,e=new Br(r)),e}k(r){Wo(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let n of r)i===e.length?e.push(t=new s(this.O(Fr()),this.O(Fr()),this,this.options)):t=e[i],t._$AI(n),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(r=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);r!==this._$AB;){let t=Ra(r).nextSibling;Ra(r).remove(),r=t}}setConnected(r){this._$AM===void 0&&(this._$Cv=r,this._$AP?.(r))}},kt=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,n){this.type=1,this._$AH=O,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=n,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=O}_$AI(r,e=this,t,i){let n=this.strings,o=!1;if(n===void 0)r=Rt(this,r,e,0),o=!Ur(r)||r!==this._$AH&&r!==re,o&&(this._$AH=r);else{let a=r,l,c;for(r=n[0],l=0;l<n.length-1;l++)c=Rt(this,a[t+l],e,l),c===re&&(c=this._$AH[l]),o||=!Ur(c)||c!==this._$AH[l],c===O?r=O:r!==O&&(r+=(c??"")+n[l+1]),this._$AH[l]=c}o&&!i&&this.j(r)}j(r){r===O?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},ln=class extends kt{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===O?void 0:r}},cn=class extends kt{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==O)}},dn=class extends kt{constructor(r,e,t,i,n){super(r,e,t,i,n),this.type=5}_$AI(r,e=this){if((r=Rt(this,r,e,0)??O)===re)return;let t=this._$AH,i=r===O&&t!==O||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,n=r!==O&&(t===O||i);i&&this.element.removeEventListener(this.name,this,t),n&&this.element.addEventListener(this.name,this,r),this._$AH=r}handleEvent(r){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,r):this._$AH.handleEvent(r)}},pn=class{constructor(r,e,t){this.element=r,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(r){Rt(this,r)}},Ha={M:zo,P:Ue,A:jo,C:1,L:Oa,R:an,D:Va,V:Rt,I:Xt,H:kt,N:cn,U:dn,B:ln,F:pn},Od=un.litHtmlPolyfillSupport;Od?.(Br,Xt),(un.litHtmlVersions??=[]).push("3.3.2");var Fa=(s,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let n=e?.renderBefore??null;t._$litPart$=i=new Xt(r.insertBefore(Fr(),n),n,void 0,e??{})}return i._$AI(s),i};var Xo=globalThis,E=class extends Fe{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let r=super.createRenderRoot();return this.renderOptions.renderBefore??=r.firstChild,r}update(r){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(r),this._$Do=Fa(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return re}};E._$litElement$=!0,E.finalized=!0,Xo.litElementHydrateSupport?.({LitElement:E});var Hd=Xo.litElementPolyfillSupport;Hd?.({LitElement:E});(Xo.litElementVersions??=[]).push("4.2.2");var k=s=>(r,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,r)}):customElements.define(s,r)};var Fd={attribute:!0,type:String,converter:Nr,reflect:!1,hasChanged:on},Ud=(s=Fd,r,e)=>{let{kind:t,metadata:i}=e,n=globalThis.litPropertyMetadata.get(i);if(n===void 0&&globalThis.litPropertyMetadata.set(i,n=new Map),t==="setter"&&((s=Object.create(s)).wrapped=!0),n.set(e.name,s),t==="accessor"){let{name:o}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(o,l,s,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,s,a),a}}}if(t==="setter"){let{name:o}=e;return function(a){let l=this[o];r.call(this,a),this.requestUpdate(o,l,s,!0,a)}}throw Error("Unsupported decorator location: "+t)};function g(s){return(r,e)=>typeof e=="object"?Ud(s,r,e):((t,i,n)=>{let o=i.hasOwnProperty(n);return i.constructor.createProperty(n,t),o?Object.getOwnPropertyDescriptor(i,n):void 0})(s,r,e)}function M(s){return g({...s,state:!0,attribute:!1})}var et=(s,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(s,r,e),e);function Qt(s,r){return(e,t,i)=>{let n=o=>o.renderRoot?.querySelector(s)??null;if(r){let{get:o,set:a}=typeof t=="object"?e:i??(()=>{let l=Symbol();return{get(){return this[l]},set(c){this[l]=c}}})();return et(e,t,{get(){let l=o.call(this);return l===void 0&&(l=n(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return et(e,t,{get(){return n(this)}})}}function Ua(s){return(r,e)=>{let{slot:t,selector:i}=s??{},n="slot"+(t?`[name=${t}]`:":not([name])");return et(r,e,{get(){let o=this.renderRoot?.querySelector(n),a=o?.assignedElements(s)??[];return i===void 0?a:a.filter(l=>l.matches(i))}})}}function Ba(s,r,e){Array.from(s.getElementsByTagName("*")).filter(n=>n.localName===r||n.localName?.toLowerCase()===r.toLowerCase()).forEach(n=>{let o=`${r}-${e}`,a=ja(n,o);n.replaceWith(a)})}function za(s,r){s.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let n=i.slice(`${r}:`.length),o=`${e.nodeName}-${n}`,a=ja(e,o);e.replaceWith(a)}})})}function ja(s,r){let e=s.ownerDocument.createElement(r);for(let t of s.attributes)e.setAttribute(t.name,t.value);for(;s.firstChild;)e.appendChild(s.firstChild);return e}function Wa(s){let r=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),i=e.getAttribute("href"),n=e.getAttribute("category");r.push({identifier:t,href:i,category:n})}),r}function Yt(s,r){return fetch(s,{signal:r}).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.text()}).then(e=>new DOMParser().parseFromString(e,"text/xml")).catch(e=>{throw e.name==="AbortError"?e:new Error(`Failed to load XML: ${e.message}`)})}function Jt(s){return new DOMParser().parseFromString(s,"text/xml")}function Ga(s,r){if(s.nodeType===Node.ELEMENT_NODE){let e=s,t;!e.namespaceURI||e.namespaceURI.startsWith("http://www.imsglobal.org/xsd/qti/")||e.namespaceURI.startsWith("http://www.imsglobal.org/xsd/imsqti")?t=r.createElement(e.localName):t=r.createElementNS(e.namespaceURI,e.tagName);for(let i=0;i<e.attributes.length;i++){let n=e.attributes[i];t.setAttribute(n.localName,n.value)}for(let i=0;i<e.childNodes.length;i++)t.appendChild(Ga(e.childNodes[i],r));return t}return s.cloneNode(!1)}function Kt(s){let r=document.createDocumentFragment();for(let e=0;e<s.childNodes.length;e++)r.appendChild(Ga(s.childNodes[e],document));return r}function Zt(s,r){r.endsWith("/")||(r+="/"),s.querySelectorAll("*").forEach(t=>{for(let i of["src","href","srcset","poster"]){let n=t.getAttribute(i)?.trim();if(n&&!/^(data:|https?:|blob:)/.test(n)){let o=r+encodeURI(n);t.setAttribute(i,o)}}})}function Xa(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function Qa(s){s.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function Ya(s){switch(s){case"qti-choice-interaction":case"qti-order-interaction":return"qti-simple-choice";case"qti-inline-choice-interaction":return"qti-inline-choice";case"qti-match-interaction":return["qti-simple-match-set:first-of-type qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice"];case"qti-gap-match-interaction":return"qti-gap-text";case"qti-associate-interaction":return"qti-simple-associable-choice";default:return null}}var Me=(s=!1)=>{let r,e="",t={load(i,n){e=i;let o=encodeURI(i);return s&&sessionStorage.getItem(o)?Promise.resolve(t.parse(sessionStorage.getItem(o))):Yt(i,n).then(a=>(r=a,t.shuffleInteractions(),s&&sessionStorage.setItem(o,new XMLSerializer().serializeToString(r)),t))},parse(i){return r=Jt(i),t},path:i=>(Zt(r,i),e=null,t),fn(i){return i(r),t},pciHooks(i){let n=["hook","module"],o=i.substring(0,i.lastIndexOf("/"));for(let a of n)r.querySelectorAll("["+a+"]").forEach(c=>{let p=c.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(c.setAttribute("base-url",i),c.setAttribute("module",o+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,n,o="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(o);if(l.length===0)return t;let c=null,p=null,u=async()=>{if(c===null)try{c=await n(i,"/modules/module_resolution.js")}catch{c=null}if(p===null)try{p=await n(i,"/modules/fallback_module_resolution.js")}catch{p=null}};for(let h of Array.from(l)){h.setAttribute("data-base-url",i);let y=h.getAttribute("custom-interaction-type-identifier");y&&a.includes(y)&&(y=y+a.length,h.setAttribute("custom-interaction-type-identifier",y),a.push(y)),y&&a.push(y);let v=h.querySelector("qti-interaction-modules");if(v&&v.getAttribute("primary-configuration")){await u();let w=v.getAttribute("primary-configuration");if(w)try{let f=await n(i,`/${w}`),m=Array.from(v.querySelectorAll("qti-interaction-module"));for(let b of m){let q=b.getAttribute("id");if(q&&f.paths&&f.paths[q]){let A=f.paths[q],S=Array.isArray(A)?A[0]:A;if(b.setAttribute("primary-path",S),p&&p.paths&&p.paths[q]){let T=p.paths[q];Array.isArray(T)?b.setAttribute("fallback-path",T[0]):b.setAttribute("fallback-path",T)}}}if(f.paths){for(let b in f.paths)if(!v.querySelector(`qti-interaction-module[id="${b}"]`)){let A=r.createElement("qti-interaction-module");A.setAttribute("id",b);let S=Array.isArray(f.paths[b])?f.paths[b][0]:f.paths[b];if(A.setAttribute("primary-path",S),p&&p.paths&&p.paths[b]){let T=p.paths[b];Array.isArray(T)?A.setAttribute("fallback-path",T[0]):A.setAttribute("fallback-path",T)}v.appendChild(A)}}f.urlArgs&&v.setAttribute("url-args",f.urlArgs)}catch(f){console.warn(`Failed to load primary configuration: ${w}`,f)}}else if(await u(),c){h.querySelector("qti-interaction-modules")===null?(v=r.createElement("qti-interaction-modules"),h.appendChild(v)):v=h.querySelector("qti-interaction-modules");for(let w in c.paths){let f=c.paths[w],m="";p&&p.paths&&p.paths[w]&&(m=p.paths[w]);let b=Array.isArray(f)?f:[f],q=Array.isArray(m)?m:[m],A=b.map((S,T)=>{let _=q.length>T?q[T]:"";return{primaryPath:S,fallbackPath:_}});for(let S of q)A.some(T=>T.fallbackPath===S)||A.push({primaryPath:b.length>0?b[0]:S,fallbackPath:S});for(let S of A){let T=r.createElement("qti-interaction-module");S.fallbackPath&&T.setAttribute("fallback-path",S.fallbackPath),T.setAttribute("id",w),T.setAttribute("primary-path",S.primaryPath),v&&v.appendChild(T)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),n=Array.from(i).filter(o=>o.tagName?.toLowerCase().endsWith("-interaction"));for(let o of n){let a=Ya(o.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let c of l){let p=Array.from(o.querySelectorAll(c)),u=p.map((m,b)=>({element:m,fixed:m.hasAttribute("fixed")&&m.getAttribute("fixed")==="true",originalOrder:b})).filter(m=>m.fixed),h=p.filter(m=>!m.hasAttribute("fixed")||m.getAttribute("fixed")!=="true");if(h.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;let y=[...h],v=!1,w=0;for(;!v&&w<20;){w++;for(let m=h.length-1;m>0;m--){let b=Math.floor(Math.random()*(m+1));[h[m],h[b]]=[h[b],h[m]]}v=!h.every((m,b)=>m===y[b])}if(!v)return console.warn("Failed to shuffle the choices after multiple attempts."),null;o.removeAttribute("shuffle");let f=0;for(let m of h)m.parentElement.insertBefore(m,u[f]?.element),f++;for(let m of u)m.element.parentElement.insertBefore(m.element,h[m.originalOrder])}}return t},extendElementName:(i,n)=>(Ba(r,i,n),t),extendElementsWithClass:(i="extend")=>(za(r,i),t),customInteraction(i,n){let o=r.querySelector("qti-custom-interaction"),a=o.querySelector("object");return o.setAttribute("data-base-ref",i),o.setAttribute("data-base-item",i+n),o.setAttribute("data",a.getAttribute("data")),o.setAttribute("width",a.getAttribute("width")),o.setAttribute("height",a.getAttribute("height")),o.removeChild(a),t},convertCDATAtoComment(){return Xa(r),t},stripStyleSheets(){return Qa(r),t},html(){return e!==null&&Zt(r,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(Kt(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return e!==null&&Zt(r,e.substring(0,e.lastIndexOf("/"))),Kt(r)},xmlDoc(){return r}};return t};var Ja=()=>{let s,r={async load(e,t){return new Promise(i=>{Yt(e,t).then(n=>(s=n,i(r)))})},parse(e){s=Jt(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var er=()=>{let s,r={async load(e,t){return new Promise((i,n)=>{Yt(e,t).then(o=>(s=o,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return s=Jt(e),r},path:e=>(Zt(s,e),r),fn(e){return e(s),r},items(){return Wa(s)},html(){return new XMLSerializer().serializeToString(Kt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmlDoc(){return Kt(s)},xmlDoc(){return s}};return r};var Ka=s=>{class r extends s{constructor(...i){super(...i);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.postLoadTransformCallback=null;this.postLoadTestTransformCallback=null;this._activeController=null;this._loadResults=[];this._navigationId=0;this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1};this._loadedStimulusHrefs=new Set;this._loadingStimulusHrefs=new Set;this._bindEventHandlers()}navigateTo(i,n){let o=n||this._getDefaultNavigationId(i);o&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,id:o},bubbles:!0,composed:!0}))}_bindEventHandlers(){this.addEventListener("qti-request-navigation",this._handleNavigationRequest.bind(this)),this.addEventListener("qti-assessment-test-connected",this._handleTestConnected.bind(this)),this.addEventListener("qti-assessment-item-connected",this._handleItemConnected.bind(this)),this.addEventListener("qti-assessment-stimulus-ref-connected",this._handleStimulusRefConnected.bind(this))}_handleTestConnected(i){this._testElement=i.detail,this._initializeNavigation()}_handleItemConnected(i){let n=i.detail;this._loadingState.connectedItems++;let o=n.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=o.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:n,item:o}=i;if(console.info("Stimulus ref connected:",{identifier:n.identifier,href:n.href,item:o.identifier}),this._loadedStimulusHrefs.has(n.href)){console.info("Stimulus already loaded, skipping:",n.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(n.href)){console.info("Stimulus already loading, skipping duplicate:",n.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(n.href),console.info("Starting stimulus load:",n.href);try{await this._loadStimulusRef(n,o),this._loadedStimulusHrefs.add(n.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",n.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${n.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(n.href)}}_getDefaultNavigationId(i){return i==="section"?this._testElement?.querySelector("qti-assessment-section")?.identifier:this.sessionContext?.navItemRefId??this._testElement?.querySelector("qti-assessment-item-ref")?.identifier}_initializeNavigation(){if(!this.navigate)return;let i=this._getDefaultNavigationId(this.navigate);i&&this.navigateTo(this.navigate,i)}async _handleNavigationRequest({detail:i}){if(!i?.id)return;this._cancelPreviousNavigation();let n=++this._navigationId,o=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=o,await this._executeNavigation(i.type,i.id,n,o)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===o&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,n,o){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,n,o))}async _executeNavigation(i,n,o,a){i==="item"?await this._navigateToItem(n,o,a):await this._navigateToSection(n,o,a)}async _navigateToItem(i,n,o){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],n,o),await this._waitForLoadingComplete(n,o),!this._isStaleNavigation(n,o)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,n,o){let l=this._findSection(i)?.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:l,navSectionId:i,navItemRefId:null};let c=this._getSectionItemIds(i);this._resetLoadingState(),this._loadingState.expectedItems=c.length,await this._loadItems(c,n,o),await this._waitForLoadingComplete(n,o),!this._isStaleNavigation(n,o)&&this._dispatchTestLoaded(this._loadResults)}_resetLoadingState(){this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1},this._loadedStimulusHrefs.clear(),this._loadingStimulusHrefs.clear()}_checkLoadingComplete(){let i=this._loadingState.connectedItems>=this._loadingState.expectedItems,n=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;i&&n&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(i,n){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(i,n))return;await new Promise(o=>setTimeout(o,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,n){console.info("Loading stimulus:",i.href);let o=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",o?"has content":"no content"),this._applyStimulusContent(o,i,n)}_applyStimulusContent(i,n,o){if(!i){console.warn("No stimulus content to apply");return}let a=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");if(console.info(`Found ${a.length} stimulus elements to apply for ${n.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],c=o.querySelector(`[data-stimulus-idref="${n.identifier}"]`);if(c)l.push(c),console.info("Found specific target:",c);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${n.identifier}"]`));if(p.length>0)l=p,console.info("Found targets by identifier:",p.length);else{let u=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=u,console.info("Using fallback targets:",u.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,u)=>{p.innerHTML="";let h=Array.from(a).map(y=>y.cloneNode(!0));p.append(...h),console.info(`Applied stimulus content to target ${u+1}/${l.length}`)})}_cancelPreviousNavigation(){this._activeController&&(this._activeController.abort(),console.info("Previous navigation request cancelled")),this._clearNavigationState()}_clearNavigationState(){this._clearLoadedItems(),this._resetLoadingState(),this._loadResults=[]}async _loadItems(i,n,o){if(!this._testElement||i.length===0)return;let a=i.map(p=>this._findItemRef(p));this._clearLoadedItems(),this._clearStimulusRef();let c=(await Promise.all(a.map(p=>this._loadSingleItem(p,n,o)))).filter(Boolean);this._isStaleNavigation(n,o)||(c.forEach(({itemRef:p,doc:u})=>{p&&u&&(p.xmlDoc=u)}),c.forEach(({itemRef:p})=>{let u=p?.identifier;if(!p||!u)return;let h=this.testContext.items.find(y=>y.identifier===u)?.state;h!==void 0&&p.updateComplete.then(()=>{let y=p.assessmentItem;y&&(y.state=h)})}),this._loadResults=c)}async _loadSingleItem(i,n,o){try{let a=await Me(this.cacheTransform).load(i.href,o.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(n,o)?null:{itemRef:i,doc:a.htmlDoc()}}catch(a){if(a.name==="AbortError")throw console.info(`Item load for ${i.identifier} was aborted`),a;return console.warn(`Failed to load item ${i.identifier}:`,a),null}}async _loadStimulus(i){return(await Me().load(i,this._activeController?.signal)).htmlDoc()}_findItemRef(i){let n=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);if(!n)throw new Error(`Item with identifier "${i}" not found`);return n}_findSection(i){return this._testElement?.querySelector(`qti-assessment-section[identifier="${i}"]`)||null}_updateSessionContext(i,n){let o=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:o,navSectionId:a,navItemRefId:n}}_getSectionItemIds(i){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${i}"] > qti-assessment-item-ref`)).map(n=>n.identifier).filter(Boolean)}_clearLoadedItems(){let i=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(i||[]).forEach(n=>{n.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(i=>i.innerHTML="")}_isStaleNavigation(i,n){return n.signal.aborted||i!==this._navigationId}_createNavigationError(i,n,o){return{message:i.message||`Failed to load ${n}: ${o}`,details:i,itemId:n==="item"?o:void 0,sectionId:n==="section"?o:void 0}}_dispatchLoadingStarted(i,n){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(i,n){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_dispatchError(i){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:i,bubbles:!0,composed:!0}))}_dispatchTestLoaded(i){requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:i.map(({itemRef:n})=>({identifier:n?.identifier,element:n})),bubbles:!0,composed:!0}))})}}return d([g({type:String})],r.prototype,"navigate",2),d([g({type:Boolean,attribute:"cache-transform"})],r.prototype,"cacheTransform",2),d([g({type:Number})],r.prototype,"requestTimeout",2),d([g({attribute:!1})],r.prototype,"postLoadTransformCallback",2),d([g({attribute:!1})],r.prototype,"postLoadTestTransformCallback",2),r};var Za=s=>{class r extends s{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",i=>{this.sessionContext={...this.sessionContext,view:i.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",i=>{this._updateElementView(),this._setCorrectResponseVisibility(i.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(o=>{o.classList.toggle("show",o.getAttribute("view")===this.sessionContext.view)});let n=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;n&&n.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this.sessionContext.view==="scorer")}}return r};var tt=class extends Event{constructor(r,e,t,i){super("context-request",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e,this.callback=t,this.subscribe=i??!1}};var tr=class{constructor(r,e,t,i){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(n,o)=>{this.unsubscribe&&(this.unsubscribe!==o&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,o)),this.unsubscribe=o},this.host=r,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=n.subscribe??!1}else this.context=e,this.callback=t,this.subscribe=i??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new tt(this.context,this.host,this.t,this.subscribe))}};var hn=class{get value(){return this.o}set value(r){this.setValue(r)}setValue(r,e=!1){let t=e||!Object.is(r,this.o);this.o=r,t&&this.updateObservers()}constructor(r){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:t}]of this.subscriptions)e(this.o,t)},r!==void 0&&(this.value=r)}addCallback(r,e,t){if(!t)return void r(this.value);this.subscriptions.has(r)||this.subscriptions.set(r,{disposer:()=>{this.subscriptions.delete(r)},consumerHost:e});let{disposer:i}=this.subscriptions.get(r);r(this.value,i)}clearCallbacks(){this.subscriptions.clear()}};var Qo=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},rr=class extends hn{constructor(r,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=i=>{if(i.context!==this.context)return;let n=i.contextTarget??i.composedPath()[0];n!==this.host&&(i.stopPropagation(),this.addCallback(i.callback,n,i.subscribe))},this.onProviderRequest=i=>{if(i.context!==this.context||(i.contextTarget??i.composedPath()[0])===this.host)return;let n=new Set;for(let[o,{consumerHost:a}]of this.subscriptions)n.has(o)||(n.add(o),a.dispatchEvent(new tt(this.context,a,o,!0)));i.stopPropagation()},this.host=r,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new Qo(this.context,this.host))}};function ce({context:s}){return(r,e)=>{let t=new WeakMap;if(typeof e=="object")return{get(){return r.get.call(this)},set(i){return t.get(this).setValue(i),r.set.call(this,i)},init(i){return t.set(this,new rr(this,{context:s,initialValue:i})),i}};{r.constructor.addInitializer((o=>{t.set(o,new rr(o,{context:s}))}));let i=Object.getOwnPropertyDescriptor(r,e),n;if(i===void 0){let o=new WeakMap;n={get(){return o.get(this)},set(a){t.get(this).setValue(a),o.set(this,a)},configurable:!0,enumerable:!0}}else{let o=i.set;n={...i,set(a){t.get(this).setValue(a),o?.call(this,a)}}}return void Object.defineProperty(r,e,n)}}}function $({context:s,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new tr(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new tr(i,{context:s,callback:n=>{i[t]=n},subscribe:r})}))}}var rt=Symbol("computedItemContext");var G=Symbol("computedContext");var ge=Symbol("configContext");var el=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var W=Symbol("item");var ir=Symbol("qtiContext");var Yo={view:"candidate"},it=Symbol("testContext");var Jo={items:[],testOutcomeVariables:[]},_e=Symbol("testContext");function B(s,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{let{update:n}=t,o=Array.isArray(s)?s:[s];t.update=function(a){o.forEach(l=>{let c=l;if(a.has(c)){let p=a.get(c),u=this[c];p!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](p,u)}}),n.call(this,a)}}}var nr={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},qe=s=>(...r)=>({_$litDirective$:s,values:r}),nt=class{constructor(r){}get _$AU(){return this._$AM._$AU}_$AT(r,e,t){this._$Ct=r,this._$AM=e,this._$Ci=t}_$AS(r,e){return this.update(r,e)}update(r,e){return this.render(...e)}};var{I:Bd}=Ha,tl=s=>s,il=s=>s===null||typeof s!="object"&&typeof s!="function";var nl=s=>s.strings===void 0,rl=()=>document.createComment(""),or=(s,r,e)=>{let t=s._$AA.parentNode,i=r===void 0?s._$AB:r._$AA;if(e===void 0){let n=t.insertBefore(rl(),i),o=t.insertBefore(rl(),i);e=new Bd(n,o,s,s.options)}else{let n=e._$AB.nextSibling,o=e._$AM,a=o!==s;if(a){let l;e._$AQ?.(s),e._$AM=s,e._$AP!==void 0&&(l=s._$AU)!==o._$AU&&e._$AP(l)}if(n!==i||a){let l=e._$AA;for(;l!==n;){let c=tl(l).nextSibling;tl(t).insertBefore(l,i),l=c}}}return e},ot=(s,r,e=s)=>(s._$AI(r,e),s),zd={},ol=(s,r=zd)=>s._$AH=r,sl=s=>s._$AH,fn=s=>{s._$AR(),s._$AA.remove()};var zr=(s,r)=>{let e=s._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),zr(t,r);return!0},gn=s=>{let r,e;do{if((r=s._$AM)===void 0)break;e=r._$AN,e.delete(s),s=r}while(e?.size===0)},al=s=>{for(let r;r=s._$AM;s=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(s))break;e.add(s),Gd(r)}};function jd(s){this._$AN!==void 0?(gn(this),this._$AM=s,al(this)):this._$AM=s}function Wd(s,r=!1,e=0){let t=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(r)if(Array.isArray(t))for(let n=e;n<t.length;n++)zr(t[n],!1),gn(t[n]);else t!=null&&(zr(t,!1),gn(t));else zr(this,s)}var Gd=s=>{s.type==nr.CHILD&&(s._$AP??=Wd,s._$AQ??=jd)},st=class extends nt{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),al(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(zr(this,r),gn(this))}setValue(r){if(nl(this._$Ct))this._$Ct._$AI(r,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=r,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};var Ko=class extends st{constructor(){super(...arguments);this.prevData={}}render(e){return O}update(e,[t]){return this.element!==e.element&&(this.element=e.element),this.host=e.options?.host||this.element,this.apply(t),this.groom(t),this.prevData={...t},O}apply(e){let t=this.#e(e),{prevData:i,element:n}=this;for(let o in t){let a=t[o];a!==i[o]&&(a===!0?n.setAttribute(o,""):a===!1?n.removeAttribute(o):a!=null?n.setAttribute(o,String(a)):n.removeAttribute(o))}}groom(e){let{prevData:t,element:i}=this;if(!t)return;let n=e?this.#e(e):{};for(let o in t)(!n||!(o in n))&&i.removeAttribute(o)}#e(e){return Object.fromEntries(Object.entries(e).filter(([t,i])=>typeof i=="function"?!1:t==="max-choices"&&i===0?!0:!(i===""||i===null||i===void 0)))}},Ah=qe(Ko);var ll=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(ll||{}),V=class extends E{constructor(){super();this.disabled=!1;this.readonly=!1;this.showCorrectResponse=!1;this._handleShowCorrectResponseChange=(e,t)=>{this.toggleInternalCorrectResponse(t)};this.showFullCorrectResponse=!1;this._handleShowFullCorrectResponseChange=(e,t)=>{this.toggleFullCorrectResponse(t)};this.showCandidateCorrection=!1;this._handleShowCandidateCorrectionChange=(e,t)=>{this.toggleCandidateCorrection(t)};this._correctResponse=null;this._internals=this.attachInternals()}static{this.formAssociated=!0}get internals(){return this._internals}set correctResponseAttr(e){e===null?this._correctResponse=null:e.includes(",")?this._correctResponse=e.split(",").map(t=>t.trim()):this._correctResponse=e}get correctResponseAttr(){return this._correctResponse===null||this._correctResponse===void 0?null:Array.isArray(this._correctResponse)?this._correctResponse.join(","):this._correctResponse}get isFullCorrectResponse(){return this._isFullCorrectResponse}set isFullCorrectResponse(e){this._isFullCorrectResponse=e,e&&(this.disabled=!0,this.setAttribute("inert",""),this.setAttribute("response-identifier",this.responseIdentifier+"_cr"))}get correctResponse(){let e=this.responseVariable;return e?.correctResponse?e.correctResponse:this._correctResponse}set correctResponse(e){let t=this._correctResponse;this._correctResponse=e,e==null?this.removeAttribute("correct-response"):this.setAttribute("correct-response",Array.isArray(e)?e.join(","):e),this.requestUpdate("_correctResponse",t)}get correctness(){let e=this.correctResponse;if(!e)return null;let t=this.response;if(t==null||t===""||Array.isArray(t)&&t.length===0)return null;let i=Array.isArray(e)?e:[e],o=(Array.isArray(t)?t:[t]).filter(c=>c!=="");if(o.length===0)return null;let a=o.filter(c=>i.includes(c)).length,l=o.filter(c=>!i.includes(c)).length;return a===i.length&&l===0&&o.length===i.length?"correct":a>0&&(a<i.length||l>0)?"partially-correct":"incorrect"}get isInline(){return!1}get responseVariable(){if(!this._context?.variables)return;let e=this._context.variables.filter(i=>i.type==="response"),t=this.getAttribute("response-identifier");return e.find(i=>i.identifier===t)}toggleCorrectResponse(e){(this?.configContext?.correctResponseMode||"internal")==="full"?this.toggleFullCorrectResponse(e):this.toggleInternalCorrectResponse(e)}async toggleFullCorrectResponse(e){let t=this.nextSibling,i=t instanceof HTMLDivElement&&t?.classList.contains("full-correct-response"),n=this.correctResponse;if(!n)return;if(!(e&&(this?.configContext?.fullCorrectResponseOnlyWhenIncorrect===!1||this.correctness!=="correct"))){if(!i)return;this.parentElement?.removeChild(t);return}if(i)return;let a=this.cloneNode(!0);a.removeAttribute("show-full-correct-response"),a.removeAttribute("show-correct-response"),a.removeAttribute("show-candidate-correction");let l=document.createElement("div");l.classList.add("full-correct-response"),this.isInline?l.classList.add("full-correct-response-inline"):l.classList.add("full-correct-response-block"),l.role="full-correct-response",l.appendChild(a),a.isFullCorrectResponse=!0,this.parentElement?.insertBefore(l,this.nextSibling),await a.updateComplete,a.response=Array.isArray(n)?[...n]:n}toggleInternalCorrectResponse(e){this._internals.states.delete("show-correct-response"),e&&this.correctResponse&&this._internals.states.add("show-correct-response")}toggleCandidateCorrection(e){this._internals.states.delete("candidate-correct"),this._internals.states.delete("candidate-partially-correct"),this._internals.states.delete("candidate-incorrect"),e&&(this.correctness==="correct"&&this._internals.states.add("candidate-correct"),this.correctness==="partially-correct"&&this._internals.states.add("candidate-partially-correct"),this.correctness==="incorrect"&&this._internals.states.add("candidate-incorrect"))}get value(){return JSON.stringify(this.response)}set value(e){this.response=e?JSON.parse(e):null}reportValidity(){return this._internals.reportValidity()}reset(){this.response=null}formResetCallback(){this.reset()}connectedCallback(){super.connectedCallback(),!this.isFullCorrectResponse&&this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,cancelable:!1,detail:{interactionElement:this,responseIdentifier:this.responseIdentifier}}))}firstUpdated(){this.isFullCorrectResponse||(this.showCorrectResponse&&this.toggleInternalCorrectResponse(!0),this.showFullCorrectResponse&&this.toggleFullCorrectResponse(!0),this.showCandidateCorrection&&this.toggleCandidateCorrection(!0))}saveResponse(e,t){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e,...t!==void 0?{state:t}:{}}}))}};d([$({context:W,subscribe:!0})],V.prototype,"_context",2),d([$({context:ge,subscribe:!0})],V.prototype,"configContext",2),d([g({type:String,attribute:"response-identifier"})],V.prototype,"responseIdentifier",2),d([g({reflect:!0,type:Boolean})],V.prototype,"disabled",2),d([g({reflect:!0,type:Boolean})],V.prototype,"readonly",2),d([g({type:String})],V.prototype,"name",2),d([g({type:String,attribute:"correct-response",reflect:!0})],V.prototype,"correctResponseAttr",1),d([g({type:Boolean,attribute:"show-correct-response",reflect:!0})],V.prototype,"showCorrectResponse",2),d([B("showCorrectResponse",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowCorrectResponseChange",2),d([g({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],V.prototype,"showFullCorrectResponse",2),d([B("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowFullCorrectResponseChange",2),d([g({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],V.prototype,"showCandidateCorrection",2),d([B("showCandidateCorrection",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowCandidateCorrectionChange",2),d([M()],V.prototype,"_isFullCorrectResponse",2),d([M()],V.prototype,"_correctResponse",2);var sr=class extends E{render(){return x`<slot></slot>`}defaultValues(r){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(i=>i.innerHTML.trim());return t.length>1||r==="multiple"||r==="ordered"?t:t[0]}};var R=class extends E{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(console.debug("getVariables",e.tagName.toLowerCase()),e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent.trim(),cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return t==="QTI_CONTEXT"?this.qtiContext?.QTI_CONTEXT?{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}:(console.warn("QTI_CONTEXT not available"),{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}):this.context.variables.find(n=>n.identifier===t)||null}case"qti-multiple":{let i=e.getResult();return console.debug("values",i),i?.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(n=>n.value),cardinality:"multiple",type:"response"}:null}case"qti-ordered":{let i=e.getResult();return i?.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(n=>n.value),cardinality:"ordered",type:"response"}:null}case"qti-repeat":{let i=e.getResult();return i?.length>0?i:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",i=this.context?.variables?.find(n=>n.identifier===t)||null;return{baseType:i.baseType,value:i.correctResponse,cardinality:i.cardinality}}default:{try{return{baseType:"integer",value:e.getResult()?.toString()||null,cardinality:"single"}}catch{console.warn("default not sufficient")}return null}}}).flatMap(e=>Array.isArray(e)?e:[e]).filter(e=>e!==null)}static{this.styles=C`
|
|
4
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),La=/'/g,$a=/"/g,Da=/^(?:script|style|textarea|title)$/i,Go=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),x=Go(1),mn=Go(2),gu=Go(3),re=Symbol.for("lit-noChange"),O=Symbol.for("lit-nothing"),Pa=new WeakMap,Tt=It.createTreeWalker(It,129);function Na(s,r){if(!Wo(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return ka!==void 0?ka.createHTML(r):r}var Oa=(s,r)=>{let e=s.length-1,t=[],i,n=r===2?"<svg>":r===3?"<math>":"",o=Hr;for(let a=0;a<e;a++){let l=s[a],c,p,u=-1,m=0;for(;m<l.length&&(o.lastIndex=m,p=o.exec(l),p!==null);)m=o.lastIndex,o===Hr?p[1]==="!--"?o=Ma:p[1]!==void 0?o=_a:p[2]!==void 0?(Da.test(p[2])&&(i=RegExp("</"+p[2],"g")),o=At):p[3]!==void 0&&(o=At):o===At?p[0]===">"?(o=i??Hr,u=-1):p[1]===void 0?u=-2:(u=o.lastIndex-p[2].length,c=p[1],o=p[3]===void 0?At:p[3]==='"'?$a:La):o===$a||o===La?o=At:o===Ma||o===_a?o=Hr:(o=At,i=void 0);let y=o===At&&s[a+1].startsWith("/>")?" ":"";n+=o===Hr?l+Nd:u>=0?(t.push(c),l.slice(0,u)+zo+l.slice(u)+Ue+y):l+Ue+(u===-2?a:y)}return[Na(s,n+(s[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},Br=class s{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let n=0,o=0,a=r.length-1,l=this.parts,[c,p]=Oa(r,e);if(this.el=s.createElement(c,t),Tt.currentNode=this.el.content,e===2||e===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(i=Tt.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let u of i.getAttributeNames())if(u.endsWith(zo)){let m=p[o++],y=i.getAttribute(u).split(Ue),b=/([.?@])?(.*)/.exec(m);l.push({type:1,index:n,name:b[2],strings:y,ctor:b[1]==="."?ln:b[1]==="?"?cn:b[1]==="@"?dn:kt}),i.removeAttribute(u)}else u.startsWith(Ue)&&(l.push({type:6,index:n}),i.removeAttribute(u));if(Da.test(i.tagName)){let u=i.textContent.split(Ue),m=u.length-1;if(m>0){i.textContent=sn?sn.emptyScript:"";for(let y=0;y<m;y++)i.append(u[y],Fr()),Tt.nextNode(),l.push({type:2,index:++n});i.append(u[m],Fr())}}}else if(i.nodeType===8)if(i.data===jo)l.push({type:2,index:n});else{let u=-1;for(;(u=i.data.indexOf(Ue,u+1))!==-1;)l.push({type:7,index:n}),u+=Ue.length-1}n++}}static createElement(r,e){let t=It.createElement("template");return t.innerHTML=r,t}};function Rt(s,r,e=s,t){if(r===re)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,n=Ur(r)?void 0:r._$litDirective$;return i?.constructor!==n&&(i?._$AO?.(!1),n===void 0?i=void 0:(i=new n(s),i._$AT(s,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=Rt(s,i._$AS(s,r.values),i,t)),r}var an=class{constructor(r,e){this._$AV=[],this._$AN=void 0,this._$AD=r,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(r){let{el:{content:e},parts:t}=this._$AD,i=(r?.creationScope??It).importNode(e,!0);Tt.currentNode=i;let n=Tt.nextNode(),o=0,a=0,l=t[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new Xt(n,n.nextSibling,this,r):l.type===1?c=new l.ctor(n,l.name,l.strings,this,r):l.type===6&&(c=new pn(n,this,r)),this._$AV.push(c),l=t[++a]}o!==l?.index&&(n=Tt.nextNode(),o++)}return Tt.currentNode=It,i}p(r){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(r,t,e),e+=t.strings.length-2):t._$AI(r[e])),e++}},Xt=class s{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=O,this._$AN=void 0,this._$AA=r,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let r=this._$AA.parentNode,e=this._$AM;return e!==void 0&&r?.nodeType===11&&(r=e.parentNode),r}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(r,e=this){r=Rt(this,r,e),Ur(r)?r===O||r==null||r===""?(this._$AH!==O&&this._$AR(),this._$AH=O):r!==this._$AH&&r!==re&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):Va(r)?this.k(r):this._(r)}O(r){return this._$AA.parentNode.insertBefore(r,this._$AB)}T(r){this._$AH!==r&&(this._$AR(),this._$AH=this.O(r))}_(r){this._$AH!==O&&Ur(this._$AH)?this._$AA.nextSibling.data=r:this.T(It.createTextNode(r)),this._$AH=r}$(r){let{values:e,_$litType$:t}=r,i=typeof t=="number"?this._$AC(r):(t.el===void 0&&(t.el=Br.createElement(Na(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let n=new an(i,this),o=n.u(this.options);n.p(e),this.T(o),this._$AH=n}}_$AC(r){let e=Pa.get(r.strings);return e===void 0&&Pa.set(r.strings,e=new Br(r)),e}k(r){Wo(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let n of r)i===e.length?e.push(t=new s(this.O(Fr()),this.O(Fr()),this,this.options)):t=e[i],t._$AI(n),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(r=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);r!==this._$AB;){let t=Ra(r).nextSibling;Ra(r).remove(),r=t}}setConnected(r){this._$AM===void 0&&(this._$Cv=r,this._$AP?.(r))}},kt=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,n){this.type=1,this._$AH=O,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=n,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=O}_$AI(r,e=this,t,i){let n=this.strings,o=!1;if(n===void 0)r=Rt(this,r,e,0),o=!Ur(r)||r!==this._$AH&&r!==re,o&&(this._$AH=r);else{let a=r,l,c;for(r=n[0],l=0;l<n.length-1;l++)c=Rt(this,a[t+l],e,l),c===re&&(c=this._$AH[l]),o||=!Ur(c)||c!==this._$AH[l],c===O?r=O:r!==O&&(r+=(c??"")+n[l+1]),this._$AH[l]=c}o&&!i&&this.j(r)}j(r){r===O?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},ln=class extends kt{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===O?void 0:r}},cn=class extends kt{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==O)}},dn=class extends kt{constructor(r,e,t,i,n){super(r,e,t,i,n),this.type=5}_$AI(r,e=this){if((r=Rt(this,r,e,0)??O)===re)return;let t=this._$AH,i=r===O&&t!==O||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,n=r!==O&&(t===O||i);i&&this.element.removeEventListener(this.name,this,t),n&&this.element.addEventListener(this.name,this,r),this._$AH=r}handleEvent(r){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,r):this._$AH.handleEvent(r)}},pn=class{constructor(r,e,t){this.element=r,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(r){Rt(this,r)}},Ha={M:zo,P:Ue,A:jo,C:1,L:Oa,R:an,D:Va,V:Rt,I:Xt,H:kt,N:cn,U:dn,B:ln,F:pn},Od=un.litHtmlPolyfillSupport;Od?.(Br,Xt),(un.litHtmlVersions??=[]).push("3.3.2");var Fa=(s,r,e)=>{let t=e?.renderBefore??r,i=t._$litPart$;if(i===void 0){let n=e?.renderBefore??null;t._$litPart$=i=new Xt(r.insertBefore(Fr(),n),n,void 0,e??{})}return i._$AI(s),i};var Xo=globalThis,E=class extends Fe{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let r=super.createRenderRoot();return this.renderOptions.renderBefore??=r.firstChild,r}update(r){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(r),this._$Do=Fa(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return re}};E._$litElement$=!0,E.finalized=!0,Xo.litElementHydrateSupport?.({LitElement:E});var Hd=Xo.litElementPolyfillSupport;Hd?.({LitElement:E});(Xo.litElementVersions??=[]).push("4.2.2");var k=s=>(r,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,r)}):customElements.define(s,r)};var Fd={attribute:!0,type:String,converter:Nr,reflect:!1,hasChanged:on},Ud=(s=Fd,r,e)=>{let{kind:t,metadata:i}=e,n=globalThis.litPropertyMetadata.get(i);if(n===void 0&&globalThis.litPropertyMetadata.set(i,n=new Map),t==="setter"&&((s=Object.create(s)).wrapped=!0),n.set(e.name,s),t==="accessor"){let{name:o}=e;return{set(a){let l=r.get.call(this);r.set.call(this,a),this.requestUpdate(o,l,s,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,s,a),a}}}if(t==="setter"){let{name:o}=e;return function(a){let l=this[o];r.call(this,a),this.requestUpdate(o,l,s,!0,a)}}throw Error("Unsupported decorator location: "+t)};function g(s){return(r,e)=>typeof e=="object"?Ud(s,r,e):((t,i,n)=>{let o=i.hasOwnProperty(n);return i.constructor.createProperty(n,t),o?Object.getOwnPropertyDescriptor(i,n):void 0})(s,r,e)}function M(s){return g({...s,state:!0,attribute:!1})}var et=(s,r,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof r!="object"&&Object.defineProperty(s,r,e),e);function Qt(s,r){return(e,t,i)=>{let n=o=>o.renderRoot?.querySelector(s)??null;if(r){let{get:o,set:a}=typeof t=="object"?e:i??(()=>{let l=Symbol();return{get(){return this[l]},set(c){this[l]=c}}})();return et(e,t,{get(){let l=o.call(this);return l===void 0&&(l=n(this),(l!==null||this.hasUpdated)&&a.call(this,l)),l}})}return et(e,t,{get(){return n(this)}})}}function Ua(s){return(r,e)=>{let{slot:t,selector:i}=s??{},n="slot"+(t?`[name=${t}]`:":not([name])");return et(r,e,{get(){let o=this.renderRoot?.querySelector(n),a=o?.assignedElements(s)??[];return i===void 0?a:a.filter(l=>l.matches(i))}})}}function Ba(s,r,e){Array.from(s.getElementsByTagName("*")).filter(n=>n.localName===r||n.localName?.toLowerCase()===r.toLowerCase()).forEach(n=>{let o=`${r}-${e}`,a=ja(n,o);n.replaceWith(a)})}function za(s,r){s.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(i=>{if(i.startsWith(`${r}:`)){let n=i.slice(`${r}:`.length),o=`${e.nodeName}-${n}`,a=ja(e,o);e.replaceWith(a)}})})}function ja(s,r){let e=s.ownerDocument.createElement(r);for(let t of s.attributes)e.setAttribute(t.name,t.value);for(;s.firstChild;)e.appendChild(s.firstChild);return e}function Wa(s){let r=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let t=e.getAttribute("identifier"),i=e.getAttribute("href"),n=e.getAttribute("category");r.push({identifier:t,href:i,category:n})}),r}function Yt(s,r){return fetch(s,{signal:r}).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.text()}).then(e=>new DOMParser().parseFromString(e,"text/xml")).catch(e=>{throw e.name==="AbortError"?e:new Error(`Failed to load XML: ${e.message}`)})}function Jt(s){return new DOMParser().parseFromString(s,"text/xml")}function Ga(s,r){if(s.nodeType===Node.ELEMENT_NODE){let e=s,t;!e.namespaceURI||e.namespaceURI.startsWith("http://www.imsglobal.org/xsd/qti/")||e.namespaceURI.startsWith("http://www.imsglobal.org/xsd/imsqti")?t=r.createElement(e.localName):t=r.createElementNS(e.namespaceURI,e.tagName);for(let i=0;i<e.attributes.length;i++){let n=e.attributes[i];t.setAttribute(n.localName,n.value)}for(let i=0;i<e.childNodes.length;i++)t.appendChild(Ga(e.childNodes[i],r));return t}return s.cloneNode(!1)}function Kt(s){let r=document.createDocumentFragment();for(let e=0;e<s.childNodes.length;e++)r.appendChild(Ga(s.childNodes[e],document));return r}function Zt(s,r){r.endsWith("/")||(r+="/"),s.querySelectorAll("*").forEach(t=>{for(let i of["src","href","srcset","poster"]){let n=t.getAttribute(i)?.trim();if(n&&!/^(data:|https?:|blob:)/.test(n)){let o=r+encodeURI(n);t.setAttribute(i,o)}}})}function Xa(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function Qa(s){s.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}function Ya(s){switch(s){case"qti-choice-interaction":case"qti-order-interaction":return"qti-simple-choice";case"qti-inline-choice-interaction":return"qti-inline-choice";case"qti-match-interaction":return["qti-simple-match-set:first-of-type qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice"];case"qti-gap-match-interaction":return"qti-gap-text";case"qti-associate-interaction":return"qti-simple-associable-choice";default:return null}}var Me=(s=!1)=>{let r,e="",t={load(i,n){let{signal:o,shuffle:a=!0}=n instanceof AbortSignal?{signal:n,shuffle:!0}:n??{};e=i;let l=encodeURI(i);return s&&sessionStorage.getItem(l)?Promise.resolve(t.parse(sessionStorage.getItem(l))):Yt(i,o).then(c=>(r=c,a&&t.shuffleInteractions(),s&&sessionStorage.setItem(l,new XMLSerializer().serializeToString(r)),t))},parse(i){return r=Jt(i),t},path:i=>(Zt(r,i),e=null,t),fn(i){return i(r),t},pciHooks(i){let n=["hook","module"],o=i.substring(0,i.lastIndexOf("/"));for(let a of n)r.querySelectorAll("["+a+"]").forEach(c=>{let p=c.getAttribute(a);!p.startsWith("data:")&&!p.startsWith("http")&&(c.setAttribute("base-url",i),c.setAttribute("module",o+"/"+encodeURI(p+(p.endsWith(".js")?"":".js"))))});return t},async configurePci(i,n,o="qti-portable-custom-interaction"){let a=[],l=r.querySelectorAll(o);if(l.length===0)return t;let c=null,p=null,u=async()=>{if(c===null)try{c=await n(i,"/modules/module_resolution.js")}catch{c=null}if(p===null)try{p=await n(i,"/modules/fallback_module_resolution.js")}catch{p=null}};for(let m of Array.from(l)){m.setAttribute("data-base-url",i);let y=m.getAttribute("custom-interaction-type-identifier");y&&a.includes(y)&&(y=y+a.length,m.setAttribute("custom-interaction-type-identifier",y),a.push(y)),y&&a.push(y);let b=m.querySelector("qti-interaction-modules");if(b&&b.getAttribute("primary-configuration")){await u();let w=b.getAttribute("primary-configuration");if(w)try{let f=await n(i,`/${w}`),h=Array.from(b.querySelectorAll("qti-interaction-module"));for(let v of h){let q=v.getAttribute("id");if(q&&f.paths&&f.paths[q]){let A=f.paths[q],S=Array.isArray(A)?A[0]:A;if(v.setAttribute("primary-path",S),p&&p.paths&&p.paths[q]){let T=p.paths[q];Array.isArray(T)?v.setAttribute("fallback-path",T[0]):v.setAttribute("fallback-path",T)}}}if(f.paths){for(let v in f.paths)if(!b.querySelector(`qti-interaction-module[id="${v}"]`)){let A=r.createElement("qti-interaction-module");A.setAttribute("id",v);let S=Array.isArray(f.paths[v])?f.paths[v][0]:f.paths[v];if(A.setAttribute("primary-path",S),p&&p.paths&&p.paths[v]){let T=p.paths[v];Array.isArray(T)?A.setAttribute("fallback-path",T[0]):A.setAttribute("fallback-path",T)}b.appendChild(A)}}f.urlArgs&&b.setAttribute("url-args",f.urlArgs)}catch(f){console.warn(`Failed to load primary configuration: ${w}`,f)}}else if(await u(),c){m.querySelector("qti-interaction-modules")===null?(b=r.createElement("qti-interaction-modules"),m.appendChild(b)):b=m.querySelector("qti-interaction-modules");for(let w in c.paths){let f=c.paths[w],h="";p&&p.paths&&p.paths[w]&&(h=p.paths[w]);let v=Array.isArray(f)?f:[f],q=Array.isArray(h)?h:[h],A=v.map((S,T)=>{let _=q.length>T?q[T]:"";return{primaryPath:S,fallbackPath:_}});for(let S of q)A.some(T=>T.fallbackPath===S)||A.push({primaryPath:v.length>0?v[0]:S,fallbackPath:S});for(let S of A){let T=r.createElement("qti-interaction-module");S.fallbackPath&&T.setAttribute("fallback-path",S.fallbackPath),T.setAttribute("id",w),T.setAttribute("primary-path",S.primaryPath),b&&b.appendChild(T)}}}}return t},shuffleInteractions(){let i=r.querySelectorAll('[shuffle="true"]'),n=Array.from(i).filter(o=>o.tagName?.toLowerCase().endsWith("-interaction"));for(let o of n){let a=Ya(o.tagName.toLowerCase()),l=Array.isArray(a)?a:[a];for(let c of l){let p=Array.from(o.querySelectorAll(c)),u=p.map((b,w)=>({element:b,fixed:b.hasAttribute("fixed")&&b.getAttribute("fixed")==="true",originalOrder:w})).filter(b=>b.fixed),m=p.filter(b=>!b.hasAttribute("fixed")||b.getAttribute("fixed")!=="true");if(m.length<=1)return console.warn("Shuffling is not possible with fewer than 2 non-fixed elements."),t;for(let b=m.length-1;b>0;b--){let w=Math.floor(Math.random()*b);[m[b],m[w]]=[m[w],m[b]]}o.removeAttribute("shuffle");let y=0;for(let b of m)b.parentElement.insertBefore(b,u[y]?.element),y++;for(let b of u)b.element.parentElement.insertBefore(b.element,m[b.originalOrder])}}return t},extendElementName:(i,n)=>(Ba(r,i,n),t),extendElementsWithClass:(i="extend")=>(za(r,i),t),customInteraction(i,n){let o=r.querySelector("qti-custom-interaction"),a=o.querySelector("object");return o.setAttribute("data-base-ref",i),o.setAttribute("data-base-item",i+n),o.setAttribute("data",a.getAttribute("data")),o.setAttribute("width",a.getAttribute("width")),o.setAttribute("height",a.getAttribute("height")),o.removeChild(a),t},convertCDATAtoComment(){return Xa(r),t},stripStyleSheets(){return Qa(r),t},html(){return e!==null&&Zt(r,e.substring(0,e.lastIndexOf("/"))),new XMLSerializer().serializeToString(Kt(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return e!==null&&Zt(r,e.substring(0,e.lastIndexOf("/"))),Kt(r)},xmlDoc(){return r}};return t};var Ja=()=>{let s,r={async load(e,t){return new Promise(i=>{Yt(e,t).then(n=>(s=n,i(r)))})},parse(e){s=Jt(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return r};var er=()=>{let s,r={async load(e,t){return new Promise((i,n)=>{Yt(e,t).then(o=>(s=o,r.path(e.substring(0,e.lastIndexOf("/"))),i(r)))})},parse(e){return s=Jt(e),r},path:e=>(Zt(s,e),r),fn(e){return e(s),r},items(){return Wa(s)},html(){return new XMLSerializer().serializeToString(Kt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmlDoc(){return Kt(s)},xmlDoc(){return s}};return r};var Ka=s=>{class r extends s{constructor(...i){super(...i);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.postLoadTransformCallback=null;this.postLoadTestTransformCallback=null;this._activeController=null;this._loadResults=[];this._navigationId=0;this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1};this._loadedStimulusHrefs=new Set;this._loadingStimulusHrefs=new Set;this._bindEventHandlers()}navigateTo(i,n){let o=n||this._getDefaultNavigationId(i);o&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:i,id:o},bubbles:!0,composed:!0}))}_bindEventHandlers(){this.addEventListener("qti-request-navigation",this._handleNavigationRequest.bind(this)),this.addEventListener("qti-assessment-test-connected",this._handleTestConnected.bind(this)),this.addEventListener("qti-assessment-item-connected",this._handleItemConnected.bind(this)),this.addEventListener("qti-assessment-stimulus-ref-connected",this._handleStimulusRefConnected.bind(this))}_handleTestConnected(i){this._testElement=i.detail,this._initializeNavigation()}_handleItemConnected(i){let n=i.detail;this._loadingState.connectedItems++;let o=n.querySelectorAll("qti-assessment-stimulus-ref");this._loadingState.expectedStimulus+=o.length,this._checkLoadingComplete()}async _handleStimulusRefConnected(i){i.preventDefault();let{element:n,item:o}=i;if(console.info("Stimulus ref connected:",{identifier:n.identifier,href:n.href,item:o.identifier}),this._loadedStimulusHrefs.has(n.href)){console.info("Stimulus already loaded, skipping:",n.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}if(this._loadingStimulusHrefs.has(n.href)){console.info("Stimulus already loading, skipping duplicate:",n.href),this._loadingState.loadedStimulus++,this._checkLoadingComplete();return}this._loadingStimulusHrefs.add(n.href),console.info("Starting stimulus load:",n.href);try{await this._loadStimulusRef(n,o),this._loadedStimulusHrefs.add(n.href),this._loadingState.loadedStimulus++,console.info("Stimulus loaded successfully:",n.href),this._checkLoadingComplete()}catch(a){a.name!=="AbortError"&&console.warn(`Failed to load stimulus ${n.identifier}:`,a),this._loadingState.loadedStimulus++,this._checkLoadingComplete()}finally{this._loadingStimulusHrefs.delete(n.href)}}_getDefaultNavigationId(i){return i==="section"?this._testElement?.querySelector("qti-assessment-section")?.identifier:this.sessionContext?.navItemRefId??this._testElement?.querySelector("qti-assessment-item-ref")?.identifier}_initializeNavigation(){if(!this.navigate)return;let i=this._getDefaultNavigationId(this.navigate);i&&this.navigateTo(this.navigate,i)}async _handleNavigationRequest({detail:i}){if(!i?.id)return;this._cancelPreviousNavigation();let n=++this._navigationId,o=new AbortController;try{this._dispatchLoadingStarted(i.type,i.id),this._activeController=o,await this._executeNavigation(i.type,i.id,n,o)}catch(a){this._handleNavigationError(a,i.type,i.id)}finally{this._activeController===o&&(this._activeController=null),this._dispatchLoadingEnded(i.type,i.id)}}_handleNavigationError(i,n,o){i.name!=="AbortError"&&this._dispatchError(this._createNavigationError(i,n,o))}async _executeNavigation(i,n,o,a){i==="item"?await this._navigateToItem(n,o,a):await this._navigateToSection(n,o,a)}async _navigateToItem(i,n,o){let a=this._findItemRef(i);this._updateSessionContext(a,i),this._resetLoadingState(),this._loadingState.expectedItems=1,await this._loadItems([i],n,o),await this._waitForLoadingComplete(n,o),!this._isStaleNavigation(n,o)&&this._dispatchTestLoaded(this._loadResults)}async _navigateToSection(i,n,o){let l=this._findSection(i)?.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:l,navSectionId:i,navItemRefId:null};let c=this._getSectionItemIds(i);this._resetLoadingState(),this._loadingState.expectedItems=c.length,await this._loadItems(c,n,o),await this._waitForLoadingComplete(n,o),!this._isStaleNavigation(n,o)&&this._dispatchTestLoaded(this._loadResults)}_resetLoadingState(){this._loadingState={expectedItems:0,connectedItems:0,expectedStimulus:0,loadedStimulus:0,isComplete:!1},this._loadedStimulusHrefs.clear(),this._loadingStimulusHrefs.clear()}_checkLoadingComplete(){let i=this._loadingState.connectedItems>=this._loadingState.expectedItems,n=this._loadingState.loadedStimulus>=this._loadingState.expectedStimulus;i&&n&&!this._loadingState.isComplete&&(this._loadingState.isComplete=!0)}async _waitForLoadingComplete(i,n){for(;!this._loadingState.isComplete;){if(this._isStaleNavigation(i,n))return;await new Promise(o=>setTimeout(o,10))}}getLoadingProgress(){return{...this._loadingState}}async _loadStimulusRef(i,n){console.info("Loading stimulus:",i.href);let o=await this._loadStimulus(i.href);console.info("Stimulus loaded, applying content:",o?"has content":"no content"),this._applyStimulusContent(o,i,n)}_applyStimulusContent(i,n,o){if(!i){console.warn("No stimulus content to apply");return}let a=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");if(console.info(`Found ${a.length} stimulus elements to apply for ${n.identifier}`),a.length===0){console.warn("No qti-stimulus-body or qti-stylesheet elements found in stimulus");return}let l=[],c=o.querySelector(`[data-stimulus-idref="${n.identifier}"]`);if(c)l.push(c),console.info("Found specific target:",c);else{let p=Array.from(this.querySelectorAll(`[data-stimulus-idref="${n.identifier}"]`));if(p.length>0)l=p,console.info("Found targets by identifier:",p.length);else{let u=Array.from(this.querySelectorAll("[data-stimulus-idref]"));l=u,console.info("Using fallback targets:",u.length)}}if(l.length===0){console.warn("No targets found for stimulus content");return}l.forEach((p,u)=>{p.innerHTML="";let m=Array.from(a).map(y=>y.cloneNode(!0));p.append(...m),console.info(`Applied stimulus content to target ${u+1}/${l.length}`)})}_cancelPreviousNavigation(){this._activeController&&(this._activeController.abort(),console.info("Previous navigation request cancelled")),this._clearNavigationState()}_clearNavigationState(){this._clearLoadedItems(),this._resetLoadingState(),this._loadResults=[]}async _loadItems(i,n,o){if(!this._testElement||i.length===0)return;let a=i.map(p=>this._findItemRef(p));this._clearLoadedItems(),this._clearStimulusRef();let c=(await Promise.all(a.map(p=>this._loadSingleItem(p,n,o)))).filter(Boolean);this._isStaleNavigation(n,o)||(c.forEach(({itemRef:p,doc:u})=>{p&&u&&(p.xmlDoc=u)}),c.forEach(({itemRef:p})=>{let u=p?.identifier;if(!p||!u)return;let m=this.testContext.items.find(y=>y.identifier===u)?.state;m!==void 0&&p.updateComplete.then(()=>{let y=p.assessmentItem;y&&(y.state=m)})}),this._loadResults=c)}async _loadSingleItem(i,n,o){try{let a=await Me(this.cacheTransform).load(i.href,o.signal);return this.postLoadTransformCallback&&(a=await this.postLoadTransformCallback(a,i)),this._isStaleNavigation(n,o)?null:{itemRef:i,doc:a.htmlDoc()}}catch(a){if(a.name==="AbortError")throw console.info(`Item load for ${i.identifier} was aborted`),a;return console.warn(`Failed to load item ${i.identifier}:`,a),null}}async _loadStimulus(i){return(await Me().load(i,this._activeController?.signal)).htmlDoc()}_findItemRef(i){let n=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);if(!n)throw new Error(`Item with identifier "${i}" not found`);return n}_findSection(i){return this._testElement?.querySelector(`qti-assessment-section[identifier="${i}"]`)||null}_updateSessionContext(i,n){let o=i.closest("qti-test-part")?.identifier,a=i.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:o,navSectionId:a,navItemRefId:n}}_getSectionItemIds(i){return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${i}"] > qti-assessment-item-ref`)).map(n=>n.identifier).filter(Boolean)}_clearLoadedItems(){let i=this._testElement?.querySelectorAll("qti-assessment-item-ref");Array.from(i||[]).forEach(n=>{n.xmlDoc=null})}_clearStimulusRef(){this.querySelectorAll("[data-stimulus-idref]").forEach(i=>i.innerHTML="")}_isStaleNavigation(i,n){return n.signal.aborted||i!==this._navigationId}_createNavigationError(i,n,o){return{message:i.message||`Failed to load ${n}: ${o}`,details:i,itemId:n==="item"?o:void 0,sectionId:n==="section"?o:void 0}}_dispatchLoadingStarted(i,n){this.dispatchEvent(new CustomEvent("qti-navigation-loading-started",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_dispatchLoadingEnded(i,n){this.dispatchEvent(new CustomEvent("qti-navigation-loading-ended",{detail:{type:i,id:n},bubbles:!0,composed:!0}))}_dispatchError(i){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:i,bubbles:!0,composed:!0}))}_dispatchTestLoaded(i){requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:i.map(({itemRef:n})=>({identifier:n?.identifier,element:n})),bubbles:!0,composed:!0}))})}}return d([g({type:String})],r.prototype,"navigate",2),d([g({type:Boolean,attribute:"cache-transform"})],r.prototype,"cacheTransform",2),d([g({type:Number})],r.prototype,"requestTimeout",2),d([g({attribute:!1})],r.prototype,"postLoadTransformCallback",2),d([g({attribute:!1})],r.prototype,"postLoadTestTransformCallback",2),r};var Za=s=>{class r extends s{constructor(...t){super(...t),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",i=>{this.sessionContext={...this.sessionContext,view:i.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",i=>{this._updateElementView(),this._setCorrectResponseVisibility(i.detail)})}willUpdate(t){super.willUpdate(t),t.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(o=>{o.classList.toggle("show",o.getAttribute("view")===this.sessionContext.view)});let n=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`)?.assessmentItem;n&&n.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this.sessionContext.view==="scorer")}}return r};var tt=class extends Event{constructor(r,e,t,i){super("context-request",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e,this.callback=t,this.subscribe=i??!1}};var tr=class{constructor(r,e,t,i){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(n,o)=>{this.unsubscribe&&(this.unsubscribe!==o&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,o)),this.unsubscribe=o},this.host=r,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=n.subscribe??!1}else this.context=e,this.callback=t,this.subscribe=i??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new tt(this.context,this.host,this.t,this.subscribe))}};var hn=class{get value(){return this.o}set value(r){this.setValue(r)}setValue(r,e=!1){let t=e||!Object.is(r,this.o);this.o=r,t&&this.updateObservers()}constructor(r){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:t}]of this.subscriptions)e(this.o,t)},r!==void 0&&(this.value=r)}addCallback(r,e,t){if(!t)return void r(this.value);this.subscriptions.has(r)||this.subscriptions.set(r,{disposer:()=>{this.subscriptions.delete(r)},consumerHost:e});let{disposer:i}=this.subscriptions.get(r);r(this.value,i)}clearCallbacks(){this.subscriptions.clear()}};var Qo=class extends Event{constructor(r,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=r,this.contextTarget=e}},rr=class extends hn{constructor(r,e,t){super(e.context!==void 0?e.initialValue:t),this.onContextRequest=i=>{if(i.context!==this.context)return;let n=i.contextTarget??i.composedPath()[0];n!==this.host&&(i.stopPropagation(),this.addCallback(i.callback,n,i.subscribe))},this.onProviderRequest=i=>{if(i.context!==this.context||(i.contextTarget??i.composedPath()[0])===this.host)return;let n=new Set;for(let[o,{consumerHost:a}]of this.subscriptions)n.has(o)||(n.add(o),a.dispatchEvent(new tt(this.context,a,o,!0)));i.stopPropagation()},this.host=r,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new Qo(this.context,this.host))}};function ce({context:s}){return(r,e)=>{let t=new WeakMap;if(typeof e=="object")return{get(){return r.get.call(this)},set(i){return t.get(this).setValue(i),r.set.call(this,i)},init(i){return t.set(this,new rr(this,{context:s,initialValue:i})),i}};{r.constructor.addInitializer((o=>{t.set(o,new rr(o,{context:s}))}));let i=Object.getOwnPropertyDescriptor(r,e),n;if(i===void 0){let o=new WeakMap;n={get(){return o.get(this)},set(a){t.get(this).setValue(a),o.set(this,a)},configurable:!0,enumerable:!0}}else{let o=i.set;n={...i,set(a){t.get(this).setValue(a),o?.call(this,a)}}}return void Object.defineProperty(r,e,n)}}}function $({context:s,subscribe:r}){return(e,t)=>{typeof t=="object"?t.addInitializer((function(){new tr(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:r})})):e.constructor.addInitializer((i=>{new tr(i,{context:s,callback:n=>{i[t]=n},subscribe:r})}))}}var rt=Symbol("computedItemContext");var G=Symbol("computedContext");var ge=Symbol("configContext");var el=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}];var W=Symbol("item");var ir=Symbol("qtiContext");var Yo={view:"candidate"},it=Symbol("testContext");var Jo={items:[],testOutcomeVariables:[]},_e=Symbol("testContext");function B(s,r){let e={waitUntilFirstUpdate:!1,...r};return(t,i)=>{let{update:n}=t,o=Array.isArray(s)?s:[s];t.update=function(a){o.forEach(l=>{let c=l;if(a.has(c)){let p=a.get(c),u=this[c];p!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](p,u)}}),n.call(this,a)}}}var nr={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},qe=s=>(...r)=>({_$litDirective$:s,values:r}),nt=class{constructor(r){}get _$AU(){return this._$AM._$AU}_$AT(r,e,t){this._$Ct=r,this._$AM=e,this._$Ci=t}_$AS(r,e){return this.update(r,e)}update(r,e){return this.render(...e)}};var{I:Bd}=Ha,tl=s=>s,il=s=>s===null||typeof s!="object"&&typeof s!="function";var nl=s=>s.strings===void 0,rl=()=>document.createComment(""),or=(s,r,e)=>{let t=s._$AA.parentNode,i=r===void 0?s._$AB:r._$AA;if(e===void 0){let n=t.insertBefore(rl(),i),o=t.insertBefore(rl(),i);e=new Bd(n,o,s,s.options)}else{let n=e._$AB.nextSibling,o=e._$AM,a=o!==s;if(a){let l;e._$AQ?.(s),e._$AM=s,e._$AP!==void 0&&(l=s._$AU)!==o._$AU&&e._$AP(l)}if(n!==i||a){let l=e._$AA;for(;l!==n;){let c=tl(l).nextSibling;tl(t).insertBefore(l,i),l=c}}}return e},ot=(s,r,e=s)=>(s._$AI(r,e),s),zd={},ol=(s,r=zd)=>s._$AH=r,sl=s=>s._$AH,fn=s=>{s._$AR(),s._$AA.remove()};var zr=(s,r)=>{let e=s._$AN;if(e===void 0)return!1;for(let t of e)t._$AO?.(r,!1),zr(t,r);return!0},gn=s=>{let r,e;do{if((r=s._$AM)===void 0)break;e=r._$AN,e.delete(s),s=r}while(e?.size===0)},al=s=>{for(let r;r=s._$AM;s=r){let e=r._$AN;if(e===void 0)r._$AN=e=new Set;else if(e.has(s))break;e.add(s),Gd(r)}};function jd(s){this._$AN!==void 0?(gn(this),this._$AM=s,al(this)):this._$AM=s}function Wd(s,r=!1,e=0){let t=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(r)if(Array.isArray(t))for(let n=e;n<t.length;n++)zr(t[n],!1),gn(t[n]);else t!=null&&(zr(t,!1),gn(t));else zr(this,s)}var Gd=s=>{s.type==nr.CHILD&&(s._$AP??=Wd,s._$AQ??=jd)},st=class extends nt{constructor(){super(...arguments),this._$AN=void 0}_$AT(r,e,t){super._$AT(r,e,t),al(this),this.isConnected=r._$AU}_$AO(r,e=!0){r!==this.isConnected&&(this.isConnected=r,r?this.reconnected?.():this.disconnected?.()),e&&(zr(this,r),gn(this))}setValue(r){if(nl(this._$Ct))this._$Ct._$AI(r,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=r,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};var Ko=class extends st{constructor(){super(...arguments);this.prevData={}}render(e){return O}update(e,[t]){return this.element!==e.element&&(this.element=e.element),this.host=e.options?.host||this.element,this.apply(t),this.groom(t),this.prevData={...t},O}apply(e){let t=this.#e(e),{prevData:i,element:n}=this;for(let o in t){let a=t[o];a!==i[o]&&(a===!0?n.setAttribute(o,""):a===!1?n.removeAttribute(o):a!=null?n.setAttribute(o,String(a)):n.removeAttribute(o))}}groom(e){let{prevData:t,element:i}=this;if(!t)return;let n=e?this.#e(e):{};for(let o in t)(!n||!(o in n))&&i.removeAttribute(o)}#e(e){return Object.fromEntries(Object.entries(e).filter(([t,i])=>typeof i=="function"?!1:t==="max-choices"&&i===0?!0:!(i===""||i===null||i===void 0)))}},Ah=qe(Ko);var ll=(t=>(t.Correct="correct",t.PartiallyCorrect="partially-correct",t.Incorrect="incorrect",t))(ll||{}),V=class extends E{constructor(){super();this.disabled=!1;this.readonly=!1;this.showCorrectResponse=!1;this._handleShowCorrectResponseChange=(e,t)=>{this.toggleInternalCorrectResponse(t)};this.showFullCorrectResponse=!1;this._handleShowFullCorrectResponseChange=(e,t)=>{this.toggleFullCorrectResponse(t)};this.showCandidateCorrection=!1;this._handleShowCandidateCorrectionChange=(e,t)=>{this.toggleCandidateCorrection(t)};this._correctResponse=null;this._internals=this.attachInternals()}static{this.formAssociated=!0}get internals(){return this._internals}set correctResponseAttr(e){e===null?this._correctResponse=null:e.includes(",")?this._correctResponse=e.split(",").map(t=>t.trim()):this._correctResponse=e}get correctResponseAttr(){return this._correctResponse===null||this._correctResponse===void 0?null:Array.isArray(this._correctResponse)?this._correctResponse.join(","):this._correctResponse}get isFullCorrectResponse(){return this._isFullCorrectResponse}set isFullCorrectResponse(e){this._isFullCorrectResponse=e,e&&(this.disabled=!0,this.setAttribute("inert",""),this.setAttribute("response-identifier",this.responseIdentifier+"_cr"))}get correctResponse(){let e=this.responseVariable;return e?.correctResponse?e.correctResponse:this._correctResponse}set correctResponse(e){let t=this._correctResponse;this._correctResponse=e,e==null?this.removeAttribute("correct-response"):this.setAttribute("correct-response",Array.isArray(e)?e.join(","):e),this.requestUpdate("_correctResponse",t)}get correctness(){let e=this.correctResponse;if(!e)return null;let t=this.response;if(t==null||t===""||Array.isArray(t)&&t.length===0)return null;let i=Array.isArray(e)?e:[e],o=(Array.isArray(t)?t:[t]).filter(c=>c!=="");if(o.length===0)return null;let a=o.filter(c=>i.includes(c)).length,l=o.filter(c=>!i.includes(c)).length;return a===i.length&&l===0&&o.length===i.length?"correct":a>0&&(a<i.length||l>0)?"partially-correct":"incorrect"}get isInline(){return!1}get responseVariable(){if(!this._context?.variables)return;let e=this._context.variables.filter(i=>i.type==="response"),t=this.getAttribute("response-identifier");return e.find(i=>i.identifier===t)}toggleCorrectResponse(e){(this?.configContext?.correctResponseMode||"internal")==="full"?this.toggleFullCorrectResponse(e):this.toggleInternalCorrectResponse(e)}async toggleFullCorrectResponse(e){let t=this.nextSibling,i=t instanceof HTMLDivElement&&t?.classList.contains("full-correct-response"),n=this.correctResponse;if(!n)return;if(!(e&&(this?.configContext?.fullCorrectResponseOnlyWhenIncorrect===!1||this.correctness!=="correct"))){if(!i)return;this.parentElement?.removeChild(t);return}if(i)return;let a=this.cloneNode(!0);a.removeAttribute("show-full-correct-response"),a.removeAttribute("show-correct-response"),a.removeAttribute("show-candidate-correction");let l=document.createElement("div");l.classList.add("full-correct-response"),this.isInline?l.classList.add("full-correct-response-inline"):l.classList.add("full-correct-response-block"),l.role="full-correct-response",l.appendChild(a),a.isFullCorrectResponse=!0,this.parentElement?.insertBefore(l,this.nextSibling),await a.updateComplete,a.response=Array.isArray(n)?[...n]:n}toggleInternalCorrectResponse(e){this._internals.states.delete("show-correct-response"),e&&this.correctResponse&&this._internals.states.add("show-correct-response")}toggleCandidateCorrection(e){this._internals.states.delete("candidate-correct"),this._internals.states.delete("candidate-partially-correct"),this._internals.states.delete("candidate-incorrect"),e&&(this.correctness==="correct"&&this._internals.states.add("candidate-correct"),this.correctness==="partially-correct"&&this._internals.states.add("candidate-partially-correct"),this.correctness==="incorrect"&&this._internals.states.add("candidate-incorrect"))}get value(){return JSON.stringify(this.response)}set value(e){this.response=e?JSON.parse(e):null}reportValidity(){return this._internals.reportValidity()}reset(){this.response=null}formResetCallback(){this.reset()}connectedCallback(){super.connectedCallback(),!this.isFullCorrectResponse&&this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,cancelable:!1,detail:{interactionElement:this,responseIdentifier:this.responseIdentifier}}))}firstUpdated(){this.isFullCorrectResponse||(this.showCorrectResponse&&this.toggleInternalCorrectResponse(!0),this.showFullCorrectResponse&&this.toggleFullCorrectResponse(!0),this.showCandidateCorrection&&this.toggleCandidateCorrection(!0))}saveResponse(e,t){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e,...t!==void 0?{state:t}:{}}}))}};d([$({context:W,subscribe:!0})],V.prototype,"_context",2),d([$({context:ge,subscribe:!0})],V.prototype,"configContext",2),d([g({type:String,attribute:"response-identifier"})],V.prototype,"responseIdentifier",2),d([g({reflect:!0,type:Boolean})],V.prototype,"disabled",2),d([g({reflect:!0,type:Boolean})],V.prototype,"readonly",2),d([g({type:String})],V.prototype,"name",2),d([g({type:String,attribute:"correct-response",reflect:!0})],V.prototype,"correctResponseAttr",1),d([g({type:Boolean,attribute:"show-correct-response",reflect:!0})],V.prototype,"showCorrectResponse",2),d([B("showCorrectResponse",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowCorrectResponseChange",2),d([g({type:Boolean,attribute:"show-full-correct-response",reflect:!0})],V.prototype,"showFullCorrectResponse",2),d([B("showFullCorrectResponse",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowFullCorrectResponseChange",2),d([g({type:Boolean,attribute:"show-candidate-correction",reflect:!0})],V.prototype,"showCandidateCorrection",2),d([B("showCandidateCorrection",{waitUntilFirstUpdate:!0})],V.prototype,"_handleShowCandidateCorrectionChange",2),d([M()],V.prototype,"_isFullCorrectResponse",2),d([M()],V.prototype,"_correctResponse",2);var sr=class extends E{render(){return x`<slot></slot>`}defaultValues(r){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(i=>i.innerHTML.trim());return t.length>1||r==="multiple"||r==="ordered"?t:t[0]}};var R=class extends E{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(console.debug("getVariables",e.tagName.toLowerCase()),e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent.trim(),cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return t==="QTI_CONTEXT"?this.qtiContext?.QTI_CONTEXT?{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}:(console.warn("QTI_CONTEXT not available"),{identifier:"QTI_CONTEXT",baseType:"record",value:this.qtiContext.QTI_CONTEXT,cardinality:"record",type:"context"}):this.context.variables.find(n=>n.identifier===t)||null}case"qti-multiple":{let i=e.getResult();return console.debug("values",i),i?.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(n=>n.value),cardinality:"multiple",type:"response"}:null}case"qti-ordered":{let i=e.getResult();return i?.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(n=>n.value),cardinality:"ordered",type:"response"}:null}case"qti-repeat":{let i=e.getResult();return i?.length>0?i:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",i=this.context?.variables?.find(n=>n.identifier===t)||null;return{baseType:i.baseType,value:i.correctResponse,cardinality:i.cardinality}}default:{try{return{baseType:"integer",value:e.getResult()?.toString()||null,cardinality:"single"}}catch{console.warn("default not sufficient")}return null}}}).flatMap(e=>Array.isArray(e)?e:[e]).filter(e=>e!==null)}static{this.styles=C`
|
|
5
5
|
slot {
|
|
6
6
|
display: none;
|
|
7
7
|
}
|
|
8
8
|
`}render(){return x`<pre>${JSON.stringify(this.result,null,2)}</pre>
|
|
9
|
-
<slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};d([M()],R.prototype,"result",2),d([$({context:W,subscribe:!0}),M()],R.prototype,"context",2),d([$({context:ir,subscribe:!0}),M()],R.prototype,"qtiContext",2);var be=class extends R{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Xd=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),we=s=>{if(typeof s=="string")return s;let r=Xd();return r==="."?s.toLocaleString():s.toString().replace(".","").replace(r,".")};function Zo(s){return s==null}function bn(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var de=class extends E{constructor(){super(...arguments);this.showHide="show"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e){let t=this._context.variables.find(n=>n.identifier===e)||null;if(this.outcomeIdentifier!==e||!t)return;let i=!1;Array.isArray(t.value)?i=t.value.includes(this.identifier):i=!Zo(this.identifier)&&!Zo(t?.value)&&this.identifier===t.value||!1,this.#e(i)}#e(e){this.showStatus=e&&this.showHide==="show"||!e&&this.showHide==="hide"?"on":"off"}};d([g({type:String,attribute:"show-hide"})],de.prototype,"showHide",2),d([g({type:String,attribute:"outcome-identifier"})],de.prototype,"outcomeIdentifier",2),d([g({type:String})],de.prototype,"identifier",2),d([g({type:String,attribute:!1})],de.prototype,"showStatus",2),d([$({context:W,subscribe:!0}),M()],de.prototype,"_context",2);var cl=class extends E{};var J=class{static isPointInArea(r,e,t){if(t!=="point")return console.warn(`Base type ${t} is not supported for point area mapping.`),!1;let[i,n]=r.split(" ").map(Number),[o,...a]=e.split(","),l=a.map(Number);switch(o.toLowerCase()){case"circle":case"default":{let[c,p,u]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((i-c)**2+(n-p)**2)<=u}case"rect":{let[c,p,u,h]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):i>=c&&i<=u&&n>=p&&n<=h}case"ellipse":{let[c,p,u,h]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let y=(i-c)**2/u**2,v=(n-p)**2/h**2;return y+v<=1}case"poly":{if(l.length<6||l.length%2!==0)return console.warn(`Invalid polygon definition: ${e}`),!1;let c=[];for(let p=0;p<l.length;p+=2)c.push({x:l[p],y:l[p+1]});return this.isPointInPolygon({x:i,y:n},c)}default:return console.warn(`Unsupported shape type: ${o}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,n=e.length-1;i<e.length;n=i++){let o=e[i].x,a=e[i].y,l=e[n].x,c=e[n].y;a>r.y!=c>r.y&&r.x<(l-o)*(r.y-a)/(c-a)+o&&(t=!t)}return t}static compareSingleValues(r,e,t){switch(t){case"identifier":case"string":return r===e;case"integer":{let i=parseInt(r,10),n=parseInt(e,10);if(!isNaN(i)&&!isNaN(n))return i===n;console.error(`Cannot convert ${r} and/or ${e} to int.`);break}case"float":{let i=parseFloat(r),n=parseFloat(e);if(!isNaN(i)&&!isNaN(n))return i===n;console.error(`couldn't convert ${r} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=r.split(" ").sort(),n=e.split(" ").sort();if(i.length===2&&n.length===2)return t==="pair"&&(i.sort(),n.sort()),i.join(" ")===n.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${r} 2: ${e}`);break}}return!1}};var es=s=>{class r extends s{constructor(...i){super(...i);this.testContext=Jo;this.sessionContext=Yo;this._updateItemInTestContext=i=>{let n=i._context,o=n.identifier,a=n.variables,l=this.testContext.items.find(c=>c?.identifier===o);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${o} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(o,a);else{let c=[...i.variables];for(let p of l.variables){let u=c.find(h=>h.identifier===p.identifier);u?u.value=p.value:c.push(p)}i.variables=c}};this._initializeEventListeners()}updateItemVariables(i,n){let o=this.testContext.items.find(l=>l.identifier===i);o&&(o.variables=o.variables.map(l=>{let c=n.find(p=>p.identifier===l.identifier);return c?{...l,...c}:l}));let a=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=n)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=Jo,this.sessionContext=Yo,this.testContext&&this.testContext.items.length>0)return;this._testElement=i.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(o=>({href:o.href,identifier:o.identifier,category:o.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",i=>{let n=i.detail,o=n.closest("qti-assessment-item-ref")?.identifier;o&&(n.assessmentItemRefId=o),this._updateItemInTestContext(i.detail)}),this.addEventListener("qti-item-context-updated",i=>{this._updateItemVariablesInTestContext(i.detail.itemContext.identifier,i.detail.itemContext.variables,i.detail.itemContext.state)})}_updateItemVariablesInTestContext(i,n,o){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==i?a:{...a,variables:n.map(l=>{let c=a.variables.find(p=>p.identifier===l.identifier);return c?{...c,...l}:l}),...o!==void 0?{state:o?{...o}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return d([g({attribute:!1,type:Object}),ce({context:_e})],r.prototype,"testContext",2),d([g({attribute:!1,type:Object}),ce({context:it})],r.prototype,"sessionContext",2),r},dl=class extends es(E){};var pl=s=>{class r extends s{constructor(...t){super(...t),this.addEventListener("qti-register-variable",i=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],i.detail.variable]},i.stopPropagation()}),this.addEventListener("qti-set-outcome-value",i=>{let{outcomeIdentifier:n,value:o}=i.detail;this.updateOutcomeVariable(n,o),i.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,i){let n=this.getOutcome(t);if(!n){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(o=>o.identifier!==t?o:{...o,value:n.cardinality==="single"?i:[...o.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var vn=class extends Ka(Za(pl(es(E)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return x`<slot></slot>`}};vn=d([k("qti-test")],vn);var ul={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},Be=class extends E{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};d([g({type:String})],Be.prototype,"category",2),d([g({type:String})],Be.prototype,"identifier",2),d([g({type:Boolean,converter:ul})],Be.prototype,"required",2),d([g({type:Boolean,converter:ul})],Be.prototype,"fixed",2),d([g({type:String})],Be.prototype,"href",2),d([g({type:Object,attribute:!1})],Be.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Be);var ts={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},ze=class extends E{get title(){return this.#e}set title(r){this.#e=r,this.removeAttribute("title"),this.setAttribute("data-title",r)}#e="";async connectedCallback(){this.#e=this.getAttribute("title")||"",super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return x`<slot name="qti-rubric-block"></slot><slot></slot>`}};d([g({type:String})],ze.prototype,"identifier",2),d([g({type:String})],ze.prototype,"required",2),d([g({type:Boolean,converter:ts})],ze.prototype,"fixed",2),d([g({type:Boolean,converter:ts})],ze.prototype,"visible",2),d([g({type:Boolean,converter:ts,attribute:"keep-together"})],ze.prototype,"keepTogether",2),d([$({context:_e,subscribe:!0})],ze.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",ze);var jr,_t=class extends E{constructor(){super(...arguments);L(this,jr,"")}get title(){return I(this,jr)}set title(e){U(this,jr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};jr=new WeakMap,d([g({type:String})],_t.prototype,"identifier",2),d([g({type:String})],_t.prototype,"title",1),d([$({context:_e,subscribe:!0})],_t.prototype,"_testContext",2),_t=d([k("qti-assessment-test")],_t);var Wr,je=class extends E{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";L(this,Wr,"")}get title(){return I(this,Wr)}set title(e){U(this,Wr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};Wr=new WeakMap,d([g({type:String})],je.prototype,"identifier",2),d([g({type:String})],je.prototype,"class",2),d([g({type:String,attribute:"navigation-mode"})],je.prototype,"navigationMode",2),d([g({type:String,attribute:"submission-mode"})],je.prototype,"submissionMode",2),je=d([k("qti-test-part")],je);customElements.get("qti-test-part")||customElements.define("qti-test-part",je);var Gr,ar,lr,cr,ve,ue,ml,hl,Xr,Qr,Yr,Jr,Kr,Zr,ei,ti,fl,rs,gl,pe=class extends E{constructor(){super(...arguments);L(this,ue);L(this,Gr);L(this,ar,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{I(this,ve).forEach(i=>i.disabled=t)};this._handleReadonlyChange=(e,t)=>I(this,ve).forEach(i=>i.readonly=t);this._context={variables:el};L(this,lr,{...this._context,variables:this._context.variables});L(this,cr,[]);L(this,ve,[]);L(this,Xr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},U(this,lr,this._context),e.stopPropagation()});L(this,Qr,e=>{e.stopImmediatePropagation();let t=e.detail;I(this,cr).push(t),(Number(this._context.variables.find(n=>n.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});L(this,Yr,e=>{e.stopImmediatePropagation(),I(this,ve).push(e.detail.interactionElement)});L(this,Jr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});L(this,Kr,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:i}=e.detail;this.updateOutcomeVariable(t,i),e.stopPropagation()});L(this,Zr,e=>{e.stopImmediatePropagation();let{templateIdentifier:t,value:i}=e.detail;this.updateTemplateVariable(t,i??void 0),e.stopPropagation()});L(this,ei,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,value:i}=e.detail;this.updateCorrectResponse(t,i??void 0),e.stopPropagation()});L(this,ti,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:i,state:n}=e.detail;this.updateResponseVariable(t,i),n!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:n}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return I(this,Gr)}set title(e){U(this,Gr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}set assessmentItemRefId(e){this._context={...this._context,identifier:e}}get assessmentItemRefId(){return this._context.identifier}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type,...e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context={...this._context,variables:this._context.variables.map(t=>{let i=e.find(n=>n.identifier===t.identifier);return i?{...t,...i,interpolationTable:t.interpolationTable}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let i=I(this,ve).find(n=>n.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&I(this,cr).forEach(i=>i.checkShowFeedback(t.identifier))})}get state(){return this._context.state}set state(e){this._context={...this._context,state:e?{...e}:void 0}}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let n=I(this,ve).find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);n&&(n.response=t.response)}}render(){return x`<slot></slot>`}connectedCallback(){P(this,ue,ml).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),P(this,ue,fl).call(this)})}disconnectedCallback(){P(this,ue,hl).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of I(this,ve))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of I(this,ve))t.toggleCandidateCorrection(e);document.querySelectorAll("item-show-candidate-correction").forEach(t=>{t.shown=e})}processResponse(e=!0,t=!0){this.validate(t),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(o=>o.identifier==="numAttempts")?.value+1).toString()),this.adaptive==="false"&&P(this,ue,gl).call(this);let i=this.querySelector("qti-response-processing"),n=!!(i&&typeof i.process=="function");return n&&i.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",P(this,ue,rs).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),n}resetResponses(){this._context=I(this,lr)}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}updateResponseVariable(e,t){this._context={...this._context,variables:this._context.variables.map(i=>i.identifier!==e?i:{...i,value:t})},this.showCandidateCorrection(!1),this.dispatchEvent(new CustomEvent("qti-interaction-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}})),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",P(this,ue,rs).call(this))}updateTemplateVariable(e,t){let i=this._context.variables.find(o=>o.identifier===e&&o.type==="template");if(!i){console.warn(`Can not set qti-template-identifier: ${e}, it is not available`);return}let n=i.cardinality==="single"?Array.isArray(t)?t[0]:t??null:t==null?null:Array.isArray(t)?t:[t];this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,value:n})},this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateCorrectResponse(e,t){let i=this.getResponse(e);if(!i){console.warn(`Can not set correct response for identifier: ${e}, it is not available`);return}let n=i.cardinality==="single"?Array.isArray(t)?t[0]:t??null:t==null?null:Array.isArray(t)?t:[t];this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,correctResponse:n})},this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}setOutcomeVariable(e,t){this.updateOutcomeVariable(e,t),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateOutcomeVariable(e,t){let i=this.getOutcome(e);if(!i){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context={...this._context,variables:this._context.variables.map(n=>n.identifier!==e?n:{...n,value:i.cardinality==="single"||Array.isArray(t)?t:[t]})},I(this,cr).forEach(n=>n.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(n=>n.identifier===e)?.value}}))}validate(e=!0){let t=I(this,ve).every(i=>i.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of I(this,ve))e.reportValidity()}};Gr=new WeakMap,ar=new WeakMap,lr=new WeakMap,cr=new WeakMap,ve=new WeakMap,ue=new WeakSet,ml=function(){this.addEventListener("qti-register-variable",I(this,Xr)),this.addEventListener("qti-register-feedback",I(this,Qr)),this.addEventListener("qti-register-interaction",I(this,Yr)),this.addEventListener("end-attempt",I(this,Jr)),this.addEventListener("qti-set-outcome-value",I(this,Kr)),this.addEventListener("qti-set-template-value",I(this,Zr)),this.addEventListener("qti-set-correct-response",I(this,ei)),this.addEventListener("qti-interaction-response",I(this,ti))},hl=function(){this.removeEventListener("qti-register-variable",I(this,Xr)),this.removeEventListener("qti-register-feedback",I(this,Qr)),this.removeEventListener("qti-register-interaction",I(this,Yr)),this.removeEventListener("end-attempt",I(this,Jr)),this.removeEventListener("qti-set-outcome-value",I(this,Kr)),this.removeEventListener("qti-set-template-value",I(this,Zr)),this.removeEventListener("qti-set-correct-response",I(this,ei)),this.removeEventListener("qti-interaction-response",I(this,ti))},Xr=new WeakMap,Qr=new WeakMap,Yr=new WeakMap,Jr=new WeakMap,Kr=new WeakMap,Zr=new WeakMap,ei=new WeakMap,ti=new WeakMap,fl=async function(){let e=Array.from(this.querySelectorAll("qti-template-declaration"));e.length>0&&(await Promise.all(e.map(t=>t.updateComplete)),await Promise.resolve()),U(this,ar,this.querySelector("qti-template-processing")),I(this,ar)&&(I(this,ar).process(),U(this,lr,{...this._context,variables:this._context.variables}))},rs=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},gl=function(){this._context={...this._context,variables:this._context.variables.map(e=>{if(e.type!=="outcome")return e;let n=("defaultValue"in e?e.defaultValue:null)??null;return n==null&&(e.baseType==="integer"||e.baseType==="float")&&(n="0"),{...e,value:n}})}},d([g({type:String})],pe.prototype,"identifier",2),d([g({type:String})],pe.prototype,"adaptive",2),d([g({type:String})],pe.prototype,"timeDependent",2),d([g({type:String})],pe.prototype,"title",1),d([g({type:Boolean})],pe.prototype,"disabled",2),d([B("disabled",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleDisabledChange",2),d([g({type:Boolean})],pe.prototype,"readonly",2),d([B("readonly",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleReadonlyChange",2),d([ce({context:W})],pe.prototype,"_context",2),pe=d([k("qti-assessment-item")],pe);var is=class s extends Event{constructor(e,t){super(s.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},dr=class extends E{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new is(this,e);this.dispatchEvent(t);let i=e?.querySelector(`[data-stimulus-idref="${this.identifier}"]`);!t.defaultPrevented&&i&&await this.updateStimulusRef(i)}async updateStimulusRef(e){let t=await Me().load(this.href).then(i=>i.htmlDoc());if(t){let i=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...i)}}};d([g({type:String})],dr.prototype,"identifier",2),d([g({type:String})],dr.prototype,"href",2),dr=d([k("qti-assessment-stimulus-ref")],dr);var yn=class extends E{};yn=d([k("qti-companion-materials-info")],yn);var ii,ri=class extends E{constructor(){super(...arguments);L(this,ii)}render(){return x`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{U(this,ii,new Function("context","fn","item",e?.textContent??""))}catch(t){console.error("custom-operator contains invalid javascript code",t)}}calculate(){let e={variable:i=>this._context?.variables.find(n=>n.identifier===i)?.value??"",correct:i=>this._context?.variables.find(n=>n.identifier===i)?.correctResponse??""},t={getVariable:i=>this._context?.variables.find(n=>n.identifier===i),updateOutcomeVariable:(i,n)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:n}}))},updateResponseVariable:(i,n)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:i,response:n}}))}};return I(this,ii).call(this,this._context,e,t)}};ii=new WeakMap,d([$({context:W,subscribe:!0}),M()],ri.prototype,"_context",2),ri=d([k("qti-custom-operator")],ri);var ni=class extends de{render(){return x` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};ni.styles=C`
|
|
9
|
+
<slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};d([M()],R.prototype,"result",2),d([$({context:W,subscribe:!0}),M()],R.prototype,"context",2),d([$({context:ir,subscribe:!0}),M()],R.prototype,"qtiContext",2);var be=class extends R{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Xd=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),we=s=>{if(typeof s=="string")return s;let r=Xd();return r==="."?s.toLocaleString():s.toString().replace(".","").replace(r,".")};function Zo(s){return s==null}function bn(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var de=class extends E{constructor(){super(...arguments);this.showHide="show"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e){let t=this._context.variables.find(n=>n.identifier===e)||null;if(this.outcomeIdentifier!==e||!t)return;let i=!1;Array.isArray(t.value)?i=t.value.includes(this.identifier):i=!Zo(this.identifier)&&!Zo(t?.value)&&this.identifier===t.value||!1,this.#e(i)}#e(e){this.showStatus=e&&this.showHide==="show"||!e&&this.showHide==="hide"?"on":"off"}};d([g({type:String,attribute:"show-hide"})],de.prototype,"showHide",2),d([g({type:String,attribute:"outcome-identifier"})],de.prototype,"outcomeIdentifier",2),d([g({type:String})],de.prototype,"identifier",2),d([g({type:String,attribute:!1})],de.prototype,"showStatus",2),d([$({context:W,subscribe:!0}),M()],de.prototype,"_context",2);var cl=class extends E{};var J=class{static isPointInArea(r,e,t){if(t!=="point")return console.warn(`Base type ${t} is not supported for point area mapping.`),!1;let[i,n]=r.split(" ").map(Number),[o,...a]=e.split(","),l=a.map(Number);switch(o.toLowerCase()){case"circle":case"default":{let[c,p,u]=l;return l.length!==3?(console.warn(`Invalid circle definition: ${e}`),!1):Math.sqrt((i-c)**2+(n-p)**2)<=u}case"rect":{let[c,p,u,m]=l;return l.length!==4?(console.warn(`Invalid rectangle definition: ${e}`),!1):i>=c&&i<=u&&n>=p&&n<=m}case"ellipse":{let[c,p,u,m]=l;if(l.length!==4)return console.warn(`Invalid ellipse definition: ${e}`),!1;let y=(i-c)**2/u**2,b=(n-p)**2/m**2;return y+b<=1}case"poly":{if(l.length<6||l.length%2!==0)return console.warn(`Invalid polygon definition: ${e}`),!1;let c=[];for(let p=0;p<l.length;p+=2)c.push({x:l[p],y:l[p+1]});return this.isPointInPolygon({x:i,y:n},c)}default:return console.warn(`Unsupported shape type: ${o}`),!1}}static isPointInPolygon(r,e){let t=!1;for(let i=0,n=e.length-1;i<e.length;n=i++){let o=e[i].x,a=e[i].y,l=e[n].x,c=e[n].y;a>r.y!=c>r.y&&r.x<(l-o)*(r.y-a)/(c-a)+o&&(t=!t)}return t}static compareSingleValues(r,e,t){switch(t){case"identifier":case"string":return r===e;case"integer":{let i=parseInt(r,10),n=parseInt(e,10);if(!isNaN(i)&&!isNaN(n))return i===n;console.error(`Cannot convert ${r} and/or ${e} to int.`);break}case"float":{let i=parseFloat(r),n=parseFloat(e);if(!isNaN(i)&&!isNaN(n))return i===n;console.error(`couldn't convert ${r} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=r.split(" ").sort(),n=e.split(" ").sort();if(i.length===2&&n.length===2)return t==="pair"&&(i.sort(),n.sort()),i.join(" ")===n.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${r} 2: ${e}`);break}}return!1}};var es=s=>{class r extends s{constructor(...i){super(...i);this.testContext=Jo;this.sessionContext=Yo;this._updateItemInTestContext=i=>{let n=i._context,o=n.identifier,a=n.variables,l=this.testContext.items.find(c=>c?.identifier===o);if(!l){console.warn(`Item IDs between assessment.xml and item.xml should match: ${o} is not found!`);return}if(l.variables?.length===1)this._updateItemVariablesInTestContext(o,a);else{let c=[...i.variables];for(let p of l.variables){let u=c.find(m=>m.identifier===p.identifier);u?u.value=p.value:c.push(p)}i.variables=c}};this._initializeEventListeners()}updateItemVariables(i,n){let o=this.testContext.items.find(l=>l.identifier===i);o&&(o.variables=o.variables.map(l=>{let c=n.find(p=>p.identifier===l.identifier);return c?{...l,...c}:l}));let a=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${i}"]`);a&&a.assessmentItem&&(a.assessmentItem.variables=n)}_initializeEventListeners(){this.addEventListener("qti-assessment-test-connected",i=>{if(this.testContext=Jo,this.sessionContext=Yo,this.testContext&&this.testContext.items.length>0)return;this._testElement=i.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(o=>({href:o.href,identifier:o.identifier,category:o.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",i=>{let n=i.detail,o=n.closest("qti-assessment-item-ref")?.identifier;o&&(n.assessmentItemRefId=o),this._updateItemInTestContext(i.detail)}),this.addEventListener("qti-item-context-updated",i=>{this._updateItemVariablesInTestContext(i.detail.itemContext.identifier,i.detail.itemContext.variables,i.detail.itemContext.state)})}_updateItemVariablesInTestContext(i,n,o){this.testContext={...this.testContext,items:this.testContext.items.map(a=>a.identifier!==i?a:{...a,variables:n.map(l=>{let c=a.variables.find(p=>p.identifier===l.identifier);return c?{...c,...l}:l}),...o!==void 0?{state:o?{...o}:void 0}:{}})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}}return d([g({attribute:!1,type:Object}),ce({context:_e})],r.prototype,"testContext",2),d([g({attribute:!1,type:Object}),ce({context:it})],r.prototype,"sessionContext",2),r},dl=class extends es(E){};var pl=s=>{class r extends s{constructor(...t){super(...t),this.addEventListener("qti-register-variable",i=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],i.detail.variable]},i.stopPropagation()}),this.addEventListener("qti-set-outcome-value",i=>{let{outcomeIdentifier:n,value:o}=i.detail;this.updateOutcomeVariable(n,o),i.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,i){let n=this.getOutcome(t);if(!n){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(o=>o.identifier!==t?o:{...o,value:n.cardinality==="single"?i:[...o.value,i]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this.testContext.testOutcomeVariables?.find(i=>i.identifier===t)||null}}return r};var vn=class extends Ka(Za(pl(es(E)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return x`<slot></slot>`}};vn=d([k("qti-test")],vn);var ul={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},Be=class extends E{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};d([g({type:String})],Be.prototype,"category",2),d([g({type:String})],Be.prototype,"identifier",2),d([g({type:Boolean,converter:ul})],Be.prototype,"required",2),d([g({type:Boolean,converter:ul})],Be.prototype,"fixed",2),d([g({type:String})],Be.prototype,"href",2),d([g({type:Object,attribute:!1})],Be.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",Be);var ts={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}},ze=class extends E{get title(){return this.#e}set title(r){this.#e=r,this.removeAttribute("title"),this.setAttribute("data-title",r)}#e="";async connectedCallback(){this.#e=this.getAttribute("title")||"",super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return x`<slot name="qti-rubric-block"></slot><slot></slot>`}};d([g({type:String})],ze.prototype,"identifier",2),d([g({type:String})],ze.prototype,"required",2),d([g({type:Boolean,converter:ts})],ze.prototype,"fixed",2),d([g({type:Boolean,converter:ts})],ze.prototype,"visible",2),d([g({type:Boolean,converter:ts,attribute:"keep-together"})],ze.prototype,"keepTogether",2),d([$({context:_e,subscribe:!0})],ze.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",ze);var jr,_t=class extends E{constructor(){super(...arguments);L(this,jr,"")}get title(){return I(this,jr)}set title(e){U(this,jr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};jr=new WeakMap,d([g({type:String})],_t.prototype,"identifier",2),d([g({type:String})],_t.prototype,"title",1),d([$({context:_e,subscribe:!0})],_t.prototype,"_testContext",2),_t=d([k("qti-assessment-test")],_t);var Wr,je=class extends E{constructor(){super(...arguments);this.identifier="";this.class="";this.navigationMode="nonlinear";this.submissionMode="individual";L(this,Wr,"")}get title(){return I(this,Wr)}set title(e){U(this,Wr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return x` <slot></slot>`}};Wr=new WeakMap,d([g({type:String})],je.prototype,"identifier",2),d([g({type:String})],je.prototype,"class",2),d([g({type:String,attribute:"navigation-mode"})],je.prototype,"navigationMode",2),d([g({type:String,attribute:"submission-mode"})],je.prototype,"submissionMode",2),je=d([k("qti-test-part")],je);customElements.get("qti-test-part")||customElements.define("qti-test-part",je);var Gr,ar,lr,cr,ve,ue,ml,hl,Xr,Qr,Yr,Jr,Kr,Zr,ei,ti,fl,rs,gl,pe=class extends E{constructor(){super(...arguments);L(this,ue);L(this,Gr);L(this,ar,null);this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{I(this,ve).forEach(i=>i.disabled=t)};this._handleReadonlyChange=(e,t)=>I(this,ve).forEach(i=>i.readonly=t);this._context={variables:el};L(this,lr,{...this._context,variables:this._context.variables});L(this,cr,[]);L(this,ve,[]);L(this,Xr,e=>{e.stopImmediatePropagation(),this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},U(this,lr,this._context),e.stopPropagation()});L(this,Qr,e=>{e.stopImmediatePropagation();let t=e.detail;I(this,cr).push(t),(Number(this._context.variables.find(n=>n.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)});L(this,Yr,e=>{e.stopImmediatePropagation(),I(this,ve).push(e.detail.interactionElement)});L(this,Jr,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,countAttempt:i}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(i)});L(this,Kr,e=>{e.stopImmediatePropagation();let{outcomeIdentifier:t,value:i}=e.detail;this.updateOutcomeVariable(t,i),e.stopPropagation()});L(this,Zr,e=>{e.stopImmediatePropagation();let{templateIdentifier:t,value:i}=e.detail;this.updateTemplateVariable(t,i??void 0),e.stopPropagation()});L(this,ei,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,value:i}=e.detail;this.updateCorrectResponse(t,i??void 0),e.stopPropagation()});L(this,ti,e=>{e.stopImmediatePropagation();let{responseIdentifier:t,response:i,state:n}=e.detail;this.updateResponseVariable(t,i),n!==void 0&&(this._context={...this._context,state:{...this._context.state||{},[t]:n}}),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))})}get title(){return I(this,Gr)}set title(e){U(this,Gr,e),this.removeAttribute("title"),this.setAttribute("data-title",e)}set assessmentItemRefId(e){this._context={...this._context,identifier:e}}get assessmentItemRefId(){return this._context.identifier}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type,...e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context={...this._context,variables:this._context.variables.map(t=>{let i=e.find(n=>n.identifier===t.identifier);return i?{...t,...i,interpolationTable:t.interpolationTable}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let i=I(this,ve).find(n=>n.responseIdentifier===t.identifier);i&&(i.response=t.value)}}),this.variables.forEach(t=>{t.type==="outcome"&&I(this,cr).forEach(i=>i.checkShowFeedback(t.identifier))})}get state(){return this._context.state}set state(e){this._context={...this._context,state:e?{...e}:void 0}}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let n=I(this,ve).find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);n&&(n.response=t.response)}}render(){return x`<slot></slot>`}connectedCallback(){P(this,ue,ml).call(this),super.connectedCallback(),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("qti-assessment-item-connected",{bubbles:!0,composed:!0,detail:this})),P(this,ue,fl).call(this)})}disconnectedCallback(){P(this,ue,hl).call(this),super.disconnectedCallback()}showCorrectResponse(e){for(let t of I(this,ve))t.toggleCorrectResponse(e);document.querySelectorAll("item-show-correct-response").forEach(t=>{t.shown=e})}showCandidateCorrection(e){for(let t of I(this,ve))t.toggleCandidateCorrection(e);document.querySelectorAll("item-show-candidate-correction").forEach(t=>{t.shown=e})}processResponse(e=!0,t=!0){this.validate(t),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(o=>o.identifier==="numAttempts")?.value+1).toString()),this.adaptive==="false"&&P(this,ue,gl).call(this);let i=this.querySelector("qti-response-processing"),n=!!(i&&typeof i.process=="function");return n&&i.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",P(this,ue,rs).call(this)),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}})),n}resetResponses(){this._context=I(this,lr)}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}updateResponseVariable(e,t){this._context={...this._context,variables:this._context.variables.map(i=>i.identifier!==e?i:{...i,value:t})},this.showCandidateCorrection(!1),this.dispatchEvent(new CustomEvent("qti-interaction-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}})),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",P(this,ue,rs).call(this))}updateTemplateVariable(e,t){let i=this._context.variables.find(o=>o.identifier===e&&o.type==="template");if(!i){console.warn(`Can not set qti-template-identifier: ${e}, it is not available`);return}let n=i.cardinality==="single"?Array.isArray(t)?t[0]:t??null:t==null?null:Array.isArray(t)?t:[t];this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,value:n})},this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateCorrectResponse(e,t){let i=this.getResponse(e);if(!i){console.warn(`Can not set correct response for identifier: ${e}, it is not available`);return}let n=i.cardinality==="single"?Array.isArray(t)?t[0]:t??null:t==null?null:Array.isArray(t)?t:[t];this._context={...this._context,variables:this._context.variables.map(o=>o.identifier!==e?o:{...o,correctResponse:n})},this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}setOutcomeVariable(e,t){this.updateOutcomeVariable(e,t),this.dispatchEvent(new CustomEvent("qti-item-context-updated",{bubbles:!0,composed:!0,detail:{itemContext:this._context}}))}updateOutcomeVariable(e,t){let i=this.getOutcome(e);if(!i){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context={...this._context,variables:this._context.variables.map(n=>n.identifier!==e?n:{...n,value:i.cardinality==="single"||Array.isArray(t)?t:[t]})},I(this,cr).forEach(n=>n.checkShowFeedback(e)),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(n=>n.identifier===e)?.value}}))}validate(e=!0){let t=I(this,ve).every(i=>i.validate());return e&&this.reportValidity(),t}reportValidity(){for(let e of I(this,ve))e.reportValidity()}};Gr=new WeakMap,ar=new WeakMap,lr=new WeakMap,cr=new WeakMap,ve=new WeakMap,ue=new WeakSet,ml=function(){this.addEventListener("qti-register-variable",I(this,Xr)),this.addEventListener("qti-register-feedback",I(this,Qr)),this.addEventListener("qti-register-interaction",I(this,Yr)),this.addEventListener("end-attempt",I(this,Jr)),this.addEventListener("qti-set-outcome-value",I(this,Kr)),this.addEventListener("qti-set-template-value",I(this,Zr)),this.addEventListener("qti-set-correct-response",I(this,ei)),this.addEventListener("qti-interaction-response",I(this,ti))},hl=function(){this.removeEventListener("qti-register-variable",I(this,Xr)),this.removeEventListener("qti-register-feedback",I(this,Qr)),this.removeEventListener("qti-register-interaction",I(this,Yr)),this.removeEventListener("end-attempt",I(this,Jr)),this.removeEventListener("qti-set-outcome-value",I(this,Kr)),this.removeEventListener("qti-set-template-value",I(this,Zr)),this.removeEventListener("qti-set-correct-response",I(this,ei)),this.removeEventListener("qti-interaction-response",I(this,ti))},Xr=new WeakMap,Qr=new WeakMap,Yr=new WeakMap,Jr=new WeakMap,Kr=new WeakMap,Zr=new WeakMap,ei=new WeakMap,ti=new WeakMap,fl=async function(){let e=Array.from(this.querySelectorAll("qti-template-declaration"));e.length>0&&(await Promise.all(e.map(t=>t.updateComplete)),await Promise.resolve()),U(this,ar,this.querySelector("qti-template-processing")),I(this,ar)&&(I(this,ar).process(),U(this,lr,{...this._context,variables:this._context.variables}))},rs=function(){let e=this.validate(!1);return e===!0?"completed":e===!1?"incomplete":"not_attempted"},gl=function(){this._context={...this._context,variables:this._context.variables.map(e=>{if(e.type!=="outcome")return e;let n=("defaultValue"in e?e.defaultValue:null)??null;return n==null&&(e.baseType==="integer"||e.baseType==="float")&&(n="0"),{...e,value:n}})}},d([g({type:String})],pe.prototype,"identifier",2),d([g({type:String})],pe.prototype,"adaptive",2),d([g({type:String})],pe.prototype,"timeDependent",2),d([g({type:String})],pe.prototype,"title",1),d([g({type:Boolean})],pe.prototype,"disabled",2),d([B("disabled",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleDisabledChange",2),d([g({type:Boolean})],pe.prototype,"readonly",2),d([B("readonly",{waitUntilFirstUpdate:!0})],pe.prototype,"_handleReadonlyChange",2),d([ce({context:W})],pe.prototype,"_context",2),pe=d([k("qti-assessment-item")],pe);var is=class s extends Event{constructor(e,t){super(s.eventName,{bubbles:!0,composed:!0,cancelable:!0});this.element=e;this.item=t}static{this.eventName="qti-assessment-stimulus-ref-connected"}},dr=class extends E{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback(),await this.updateComplete;let e=this.closest("qti-assessment-item"),t=new is(this,e);this.dispatchEvent(t);let i=e?.querySelector(`[data-stimulus-idref="${this.identifier}"]`);!t.defaultPrevented&&i&&await this.updateStimulusRef(i)}async updateStimulusRef(e){let t=await Me().load(this.href).then(i=>i.htmlDoc());if(t){let i=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...i)}}};d([g({type:String})],dr.prototype,"identifier",2),d([g({type:String})],dr.prototype,"href",2),dr=d([k("qti-assessment-stimulus-ref")],dr);var yn=class extends E{};yn=d([k("qti-companion-materials-info")],yn);var ii,ri=class extends E{constructor(){super(...arguments);L(this,ii)}render(){return x`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let e=Array.from(this.firstElementChild?.childNodes??[]).find(t=>t.nodeType===Node.COMMENT_NODE);try{U(this,ii,new Function("context","fn","item",e?.textContent??""))}catch(t){console.error("custom-operator contains invalid javascript code",t)}}calculate(){let e={variable:i=>this._context?.variables.find(n=>n.identifier===i)?.value??"",correct:i=>this._context?.variables.find(n=>n.identifier===i)?.correctResponse??""},t={getVariable:i=>this._context?.variables.find(n=>n.identifier===i),updateOutcomeVariable:(i,n)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:n}}))},updateResponseVariable:(i,n)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:i,response:n}}))}};return I(this,ii).call(this,this._context,e,t)}};ii=new WeakMap,d([$({context:W,subscribe:!0}),M()],ri.prototype,"_context",2),ri=d([k("qti-custom-operator")],ri);var ni=class extends de{render(){return x` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}connectedCallback(){super.connectedCallback(),this.checkShowFeedback(this.outcomeIdentifier)}};ni.styles=C`
|
|
10
10
|
:host {
|
|
11
11
|
display: block;
|
|
12
12
|
}
|
|
@@ -154,7 +154,7 @@ Make sure to test your application with a production build as repeat registratio
|
|
|
154
154
|
:host {
|
|
155
155
|
color: gray;
|
|
156
156
|
}
|
|
157
|
-
`,pi=d([k("qti-test-feedback")],pi);var he,Q,Il,Rl,kl,Ml,_l,Ll,$l,Pl,ye=class extends E{constructor(){super();L(this,Q);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;L(this,he);this.addEventListener("qti-assessment-test-connected",P(this,Q,Ll).bind(this)),this.addEventListener("qti-assessment-item-connected",P(this,Q,Pl).bind(this)),this.addEventListener("qti-interaction-changed",P(this,Q,_l).bind(this)),this.addEventListener("test-end-attempt",P(this,Q,Il).bind(this)),this.addEventListener("test-show-correct-response",P(this,Q,Rl).bind(this)),this.addEventListener("test-show-candidate-correction",P(this,Q,kl).bind(this)),this.addEventListener("test-update-outcome-variable",P(this,Q,Ml).bind(this))}render(){return x`<slot></slot>`}willUpdate(e){if(!this.computedContext)return;let t=1;this.computedContext={...this.computedContext,view:this._sessionContext?.view,testParts:this.computedContext.testParts.map(i=>({...i,active:this._sessionContext?.navPartId===i.identifier||!1,sections:i.sections.map(n=>({...n,active:this._sessionContext?.navSectionId===n.identifier||!1,completed:n.items.every(o=>this._testContext.items.find(a=>a.identifier===o.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:n.items.map(o=>{let a=this._testContext?.items.find(
|
|
157
|
+
`,pi=d([k("qti-test-feedback")],pi);var he,Q,Il,Rl,kl,Ml,_l,Ll,$l,Pl,ye=class extends E{constructor(){super();L(this,Q);this.identifier=void 0;this.initContext=[];this.qtiContext={QTI_CONTEXT:{testIdentifier:"",candidateIdentifier:"",environmentIdentifier:"default"}};this.configContext={};this.autoScoreItems=!1;L(this,he);this.addEventListener("qti-assessment-test-connected",P(this,Q,Ll).bind(this)),this.addEventListener("qti-assessment-item-connected",P(this,Q,Pl).bind(this)),this.addEventListener("qti-interaction-changed",P(this,Q,_l).bind(this)),this.addEventListener("test-end-attempt",P(this,Q,Il).bind(this)),this.addEventListener("test-show-correct-response",P(this,Q,Rl).bind(this)),this.addEventListener("test-show-candidate-correction",P(this,Q,kl).bind(this)),this.addEventListener("test-update-outcome-variable",P(this,Q,Ml).bind(this))}render(){return x`<slot></slot>`}willUpdate(e){if(!this.computedContext)return;let t=1;this.computedContext={...this.computedContext,view:this._sessionContext?.view,testParts:this.computedContext.testParts.map(i=>({...i,active:this._sessionContext?.navPartId===i.identifier||!1,sections:i.sections.map(n=>({...n,active:this._sessionContext?.navSectionId===n.identifier||!1,completed:n.items.every(o=>this._testContext.items.find(a=>a.identifier===o.identifier)?.variables.find(a=>a.identifier==="completionStatus").value==="completed"),items:n.items.map(o=>{let a=this._testContext?.items.find(v=>v.identifier===o.identifier),l={...o,...a,...this.initContext?.find(v=>v.identifier===o.identifier)},c=l.variables?.find(v=>v.identifier=="SCORE")?.value,p=c==null?null:parseFloat(c?.toString()),u=l.variables?.find(v=>v.identifier==="completionStatus")?.value,m=l.variables?.find(v=>v.identifier==="RESPONSE")?.value||"",y=l.variables?.find(v=>v.identifier==="numAttempts")?.value||0,b=this._sessionContext?.navItemRefId===l.identifier||!1,w=o.categories.includes(this.configContext?.infoItemCategory)?null:t++,f=o.variables?.find(v=>v.identifier=="MAXSCORE")?.value,h=f==null?null:parseFloat(f?.toString());return{...l,completionStatus:u,numAttempts:y,score:p,response:m,index:w,active:b,maxScore:h}})}))}))},this.dispatchEvent(new CustomEvent("qti-computed-context-updated",{detail:this.computedContext,bubbles:!0}))}};he=new WeakMap,Q=new WeakSet,Il=function(e){let i=I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem,n=this.configContext?.reportValidityAfterScoring===!0;i.processResponse(!0,n)},Rl=function(e){let i=I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem;i&&i.showCorrectResponse(e.detail)},kl=function(e){I(this,he).querySelector(`qti-assessment-item-ref[identifier="${this._sessionContext.navItemRefId}"]`).assessmentItem.showCandidateCorrection(e.detail)},Ml=function(e){I(this,he).querySelector(`qti-assessment-item-ref[identifier="${e.detail.assessmentItemRefId}"]`).assessmentItem.setOutcomeVariable(e.detail.outcomeVariableId,e.detail.value)},_l=function(e){if(this.autoScoreItems){let t=e.composedPath()[0].closest("qti-assessment-item"),i=t.variables.find(n=>n.identifier==="SCORE");if(i&&i.externalScored===null&&t.adaptive==="false"){let n=this.configContext?.reportValidityAfterScoring===!0;t.processResponse(!0,n)}}},Ll=function(e){if(U(this,he,e.detail),!this.qtiContext.QTI_CONTEXT?.testIdentifier){let n=this.qtiContext.QTI_CONTEXT||{testIdentifier:"",candidateIdentifier:"not set",environmentIdentifier:"default"};this.qtiContext={QTI_CONTEXT:{...n,testIdentifier:I(this,he).identifier,environmentIdentifier:n.environmentIdentifier||"default"}}}I(this,he).querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(n=>{let o=P(this,Q,$l).call(this,n);Object.keys(o).length>0&&(this.qtiContext={QTI_CONTEXT:{...o,...this.qtiContext.QTI_CONTEXT}})});let i=Array.from(I(this,he)?.querySelectorAll("qti-test-part")||[]);this.computedContext={identifier:I(this,he).identifier,title:I(this,he).title,view:this._sessionContext?.view,testParts:i.map(n=>{let o=[...n.querySelectorAll("qti-assessment-section")];return{active:!1,identifier:n.identifier,navigationMode:n.navigationMode,submissionMode:n.submissionMode,sections:o.map(a=>{let l=[...a.querySelectorAll("qti-assessment-item-ref")];return{active:!1,identifier:a.identifier,title:a.title,items:l.map(c=>({...this.initContext?.find(p=>p.identifier===c.identifier),active:!1,identifier:c.identifier,categories:c.category?c.category?.split(" "):[],href:c.href,variables:[]}))}})}})}},$l=function(e){let t={},i=e.querySelector("qti-default-value");return i&&i.querySelectorAll("qti-value[field-identifier]").forEach(o=>{let a=o.getAttribute("field-identifier"),l=o.getAttribute("base-type")||"string",c=o.textContent?.trim()||"";if(a){let p=c;switch(l){case"integer":p=parseInt(c,10);break;case"float":case"duration":p=parseFloat(c);break;case"boolean":p=c.toLowerCase()==="true";break;default:p=c;break}t[a]=p}}),t},Pl=function(e){let t=e.detail;this.computedContext={...this.computedContext,testParts:this.computedContext.testParts.map(i=>({...i,sections:i.sections.map(n=>({...n,items:n.items.map(o=>{if(o.identifier!==t.parentElement.getAttribute("identifier"))return o;let l=t.querySelector("qti-outcome-declaration[identifier='SCORE']")?.getAttribute("externalScored"),c=t.querySelectorAll("qti-response-declaration"),p=Array.from(c).some(b=>b.querySelector("qti-correct-response")),u=Array.from(c).some(b=>{let w=b.querySelector("qti-mapping"),f=b.querySelector("qti-area-mapping");return w?.querySelector("qti-map-entry")||f?.querySelector("qti-area-map-entry")}),m=p||u,y=!!t.querySelector("qti-response-processing");return{...o,assessmentItemIdentifier:t.getAttribute("identifier"),label:t.getAttribute("label"),title:t.title,externalScored:l,adaptive:t.adaptive=="true"||!1,timeDependent:t.timeDependent=="true"||!1,variables:t.variables,hasCorrectResponse:m,hasResponseProcessing:y}})}))}))}},d([g({type:String})],ye.prototype,"identifier",2),d([M()],ye.prototype,"initContext",2),d([M(),ce({context:ir})],ye.prototype,"qtiContext",2),d([M(),ce({context:ge})],ye.prototype,"configContext",2),d([M(),$({context:_e,subscribe:!0})],ye.prototype,"_testContext",2),d([M(),$({context:it,subscribe:!0})],ye.prototype,"_sessionContext",2),d([M(),ce({context:G})],ye.prototype,"computedContext",2),d([g({type:Boolean,attribute:"auto-score-items"})],ye.prototype,"autoScoreItems",2),ye=d([k("test-navigation")],ye);var Vl=C`
|
|
158
158
|
display: inline-flex;
|
|
159
159
|
align-items: center;
|
|
160
160
|
cursor: pointer;
|
|
@@ -216,8 +216,8 @@ Make sure to test your application with a production build as repeat registratio
|
|
|
216
216
|
}
|
|
217
217
|
`,d([$({context:G,subscribe:!0})],Ee.prototype,"computedContext",2),d([g({type:Boolean,reflect:!0})],Ee.prototype,"shown",2),d([g({type:Boolean,reflect:!0})],Ee.prototype,"disabled",2),d([g({type:String})],Ee.prototype,"showCorrectText",2),d([g({type:String})],Ee.prototype,"hideCorrectText",2),d([g({type:String})],Ee.prototype,"noCorrectResponseText",2),Ee=d([k("test-show-correct-response")],Ee);var _n=globalThis,Sn=_n.trustedTypes,Ol=Sn?Sn.createPolicy("lit-html",{createHTML:s=>s}):void 0,as="$lit$",Ge=`lit$${Math.random().toFixed(9).slice(2)}$`,ls="?"+Ge,Qd=`<${ls}>`,Nt=_n.document===void 0?{createTreeWalker:()=>({})}:document,An=()=>Nt.createComment(""),gi=s=>s===null||typeof s!="object"&&typeof s!="function",cs=Array.isArray,jl=s=>cs(s)||typeof s?.[Symbol.iterator]=="function",ss=`[
|
|
218
218
|
\f\r]`,fi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Hl=/-->/g,Fl=/>/g,Vt=RegExp(`>|${ss}(?:([^\\s"'>=/]+)(${ss}*=${ss}*(?:[^
|
|
219
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),Ul=/'/g,Bl=/"/g,Wl=/^(?:script|style|textarea|title)$/i,ds=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),Cy=ds(1),Sy=ds(2),Ay=ds(3),Ot=Symbol.for("lit-noChange"),X=Symbol.for("lit-nothing"),zl=new WeakMap,Dt=Nt.createTreeWalker(Nt,129);function Gl(s,r){if(!cs(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ol!==void 0?Ol.createHTML(r):r}var Xl=(s,r)=>{let e=s.length-1,t=[],i,n=r===2?"<svg>":r===3?"<math>":"",o=fi;for(let a=0;a<e;a++){let l=s[a],c,p,u=-1,
|
|
220
|
-
`;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),Pn=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#n()}nextToken(){for(;Zd(this.#i);)this.#n(!0);if(rp(this.#i))return this.#a();if(Jl(this.#i))return this.#c();if(yi(this.#i))return this.#d();if(this.#i===46)return this.#l();if(this.#i===44)return this.#u();if(this.#i===58)return this.#h();if(ip(this.#i))return this.#b();if(np(this.#i))return this.#f();if(this.#n(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#n(r){this.#t++,this.#t<this.#e.length?(this.#i=this.#e.charCodeAt(this.#t),r===!0&&(this.#r=this.#t)):this.#i=void 0}#o(r=0){let e=this.#e.substring(this.#r,this.#t+r);return r===0&&this.#s(),e}#s(){this.#r=this.#t}#a(){let r="unterminated string",e=this.#i;for(this.#n(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(r);if(this.#i===92&&(this.#n(),this.#i===void 0))throw new Error(r);this.#n()}let t=De(D.STRING,op(this.#o()));return this.#n(),t}#c(){do this.#n();while(ep(this.#i));let r=this.#o(),e=tp(r)?D.KEYWORD:D.IDENTIFIER;return De(e,r)}#d(){do this.#n();while(yi(this.#i));return this.#i===46?this.#l():De(D.INTEGER,this.#o())}#l(){return this.#n(),yi(this.#i)?this.#g():(this.#s(),De(D.DOT,".",$n))}#u(){return this.#n(!0),De(D.COMMA,",")}#h(){return this.#n(!0),De(D.COLON,":")}#g(){do this.#n();while(yi(this.#i));return De(D.DECIMAL,this.#o())}#b(){this.#n();let r=this.#o(2);if(Kd.indexOf(r)!==-1)this.#n(),this.#n();else{if(r=this.#o(1),r==="=>")return this.#n(),De(D.ARROW,r);Jd.indexOf(r)!==-1&&this.#n()}return r=this.#o(),De(D.OPERATOR,r,ps[r])}#f(){let r=String.fromCharCode(this.#i),e=De(D.GROUPER,r,ps[r]);return this.#n(!0),e}};var us=(s,r)=>new xi(s,r).parse(),xi=class{#e;#t;#r;#i;#n;constructor(r,e){this.#t=new Pn(r),this.#r=e}parse(){return this.#o(),this.#s()}#o(r,e){if(!this._matches(r,e))throw new Error(`Expected kind ${r} (${e}), was ${this.#i?.kind} (${this.#i?.value})`);let t=this.#t.nextToken();this.#i=t,this.#e=t?.kind,this.#n=t?.value}_matches(r,e){return!(r&&this.#e!==r||e&&this.#n!==e)}#s(){if(!this.#i)return this.#r.empty();let r=this.#l();return r===void 0?void 0:this.#a(r,0)}#a(r,e){if(r===void 0)throw new Error("Expected left to be defined.");for(;this.#i;)if(this._matches(D.GROUPER,"(")){let t=this.#p();r=this.#r.invoke(r,void 0,t)}else if(this._matches(D.GROUPER,"[")){let t=this.#v();r=this.#r.index(r,t)}else if(this._matches(D.DOT)){this.#o();let t=this.#l();r=this.#c(r,t)}else{if(this._matches(D.KEYWORD))break;if(this._matches(D.OPERATOR)&&this.#i.precedence>=e)r=this.#n==="?"?this.#u(r):this.#d(r,this.#i);else break}return r}#c(r,e){if(e===void 0)throw new Error("expected identifier");if(e.type==="ID")return this.#r.getter(r,e.value);if(e.type==="Invoke"&&e.receiver.type==="ID"){let t=e.receiver;return this.#r.invoke(r,t.value,e.arguments)}else throw new Error(`expected identifier: ${e}`)}#d(r,e){if(Yl.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#o();let t=this.#l();for(;(this.#e===D.OPERATOR||this.#e===D.DOT||this.#e===D.GROUPER)&&this.#i.precedence>e.precedence;)t=this.#a(t,this.#i.precedence);return this.#r.binary(r,e.value,t)}#l(){if(this._matches(D.OPERATOR)){let r=this.#n;if(this.#o(),r==="+"||r==="-"){if(this._matches(D.INTEGER))return this.#m(r);if(this._matches(D.DECIMAL))return this.#w(r)}if(Ql.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#h(),$n);return this.#r.unary(r,e)}return this.#h()}#u(r){this.#o(D.OPERATOR,"?");let e=this.#s();this.#o(D.COLON);let t=this.#s();return this.#r.ternary(r,e,t)}#h(){switch(this.#e){case D.KEYWORD:let r=this.#n;if(r==="this")return this.#o(),this.#r.id(r);throw Ln.indexOf(r)!==-1?new Error(`unexpected keyword: ${r}`):new Error(`unrecognized keyword: ${r}`);case D.IDENTIFIER:return this.#f();case D.STRING:return this.#q();case D.INTEGER:return this.#m();case D.DECIMAL:return this.#w();case D.GROUPER:return this.#n==="("?this.#x():this.#n==="{"?this.#b():this.#n==="["?this.#g():void 0;case D.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let r=[];do{if(this.#o(),this._matches(D.GROUPER,"]"))break;r.push(this.#s())}while(this._matches(D.COMMA));return this.#o(D.GROUPER,"]"),this.#r.list(r)}#b(){let r={};do{if(this.#o(),this._matches(D.GROUPER,"}"))break;let e=this.#n;(this._matches(D.STRING)||this._matches(D.IDENTIFIER))&&this.#o(),this.#o(D.COLON),r[e]=this.#s()}while(this._matches(D.COMMA));return this.#o(D.GROUPER,"}"),this.#r.map(r)}#f(){let r=this.#n;if(r==="true")return this.#o(),this.#r.literal(!0);if(r==="false")return this.#o(),this.#r.literal(!1);if(r==="null")return this.#o(),this.#r.literal(null);if(r==="undefined")return this.#o(),this.#r.literal(void 0);let e=this.#y(),t=this.#p();return t?this.#r.invoke(e,void 0,t):e}#y(){if(!this._matches(D.IDENTIFIER))throw new Error(`expected identifier: ${this.#n}`);let r=this.#n;return this.#o(),this.#r.id(r)}#p(){if(!this._matches(D.GROUPER,"("))return;let r=[];do{if(this.#o(),this._matches(D.GROUPER,")"))break;let e=this.#s();r.push(e)}while(this._matches(D.COMMA));return this.#o(D.GROUPER,")"),r}#v(){this.#o();let r=this.#s();return this.#o(D.GROUPER,"]"),r}#x(){let r=this.#p();if(this._matches(D.ARROW)){this.#o();let e=this.#s(),t=r?.map(i=>i.value)??[];return this.#r.arrowFunction(t,e)}else return this.#r.paren(r[0])}#q(){let r=this.#r.literal(this.#n);return this.#o(),r}#m(r=""){let e=this.#r.literal(parseInt(`${r}${this.#n}`,10));return this.#o(),e}#w(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#n}`));return this.#o(),e}};var{hasOwn:Kl,fromEntries:sp}=Object,ap={"+":(s,r)=>s+r,"-":(s,r)=>s-r,"*":(s,r)=>s*r,"/":(s,r)=>s/r,"%":(s,r)=>s%r,"==":(s,r)=>s==r,"!=":(s,r)=>s!=r,"===":(s,r)=>s===r,"!==":(s,r)=>s!==r,">":(s,r)=>s>r,">=":(s,r)=>s>=r,"<":(s,r)=>s<r,"<=":(s,r)=>s<=r,"||":(s,r)=>s||r,"&&":(s,r)=>s&&r,"??":(s,r)=>s??r,"|":(s,r)=>r(s),"|>":(s,r)=>r(s)},lp={"+":s=>s,"-":s=>-s,"!":s=>!s},Vn=class{empty(){return{type:"Empty",evaluate(r){return r},getIds(r){return r}}}literal(r){return{type:"Literal",value:r,evaluate(e){return this.value},getIds(e){return e}}}id(r){return{type:"ID",value:r,evaluate(e){return this.value==="this"?e:e?.[this.value]},getIds(e){return e.push(this.value),e}}}unary(r,e){let t=lp[r];return{type:"Unary",operator:r,child:e,evaluate(i){return t(this.child.evaluate(i))},getIds(i){return this.child.getIds(i)}}}binary(r,e,t){let i=ap[e];return{type:"Binary",operator:e,left:r,right:t,evaluate(n){if(this.operator==="="){if(this.left.type!=="ID"&&this.left.type!=="Getter"&&this.left.type!=="Index")throw new Error(`Invalid assignment target: ${this.left}`);let o=this.right.evaluate(n),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(n),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(n),l=this.left.argument.evaluate(n)):this.left.type==="ID"&&(a=n,l=this.left.value),a===void 0?void 0:a[l]=o}return i(this.left.evaluate(n),this.right.evaluate(n))},getIds(n){return this.left.getIds(n),this.right.getIds(n),n}}}getter(r,e){return{type:"Getter",receiver:r,name:e,evaluate(t){return this.receiver.evaluate(t)?.[this.name]},getIds(t){return this.receiver.getIds(t),t}}}invoke(r,e,t){if(e!=null&&typeof e!="string")throw new Error("method not a string");return{type:"Invoke",receiver:r,method:e,arguments:t,evaluate(i){let n=this.receiver.evaluate(i),o=this.method?n:i?.this??i,a=this.method?n?.[e]:n,c=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(o,c)},getIds(i){return this.receiver.getIds(i),this.arguments?.forEach(n=>n?.getIds(i)),i}}}paren(r){return r}index(r,e){return{type:"Index",receiver:r,argument:e,evaluate(t){return this.receiver.evaluate(t)?.[this.argument.evaluate(t)]},getIds(t){return this.receiver.getIds(t),t}}}ternary(r,e,t){return{type:"Ternary",condition:r,trueExpr:e,falseExpr:t,evaluate(i){return this.condition.evaluate(i)?this.trueExpr.evaluate(i):this.falseExpr.evaluate(i)},getIds(i){return this.condition.getIds(i),this.trueExpr.getIds(i),this.falseExpr.getIds(i),i}}}map(r){return{type:"Map",entries:r,evaluate(e){let t={};if(r&&this.entries)for(let i in r){let n=this.entries[i];n&&(t[i]=n.evaluate(e))}return t},getIds(e){if(r&&this.entries)for(let t in r){let i=this.entries[t];i&&i.getIds(e)}return e}}}list(r){return{type:"List",items:r,evaluate(e){return this.items?.map(t=>t?.evaluate(e))},getIds(e){return this.items?.forEach(t=>t?.getIds(e)),e}}}arrowFunction(r,e){return{type:"ArrowFunction",params:r,body:e,evaluate(t){let i=this.params,n=this.body;return function(...o){let a=sp(i.map((c,p)=>[c,o[p]])),l=new Proxy(t??{},{set(c,p,u){return Kl(a,p)&&(a[p]=u),c[p]=u},get(c,p){return Kl(a,p)?a[p]:c[p]}});return n.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var ms=null,Zl={boundAttributeSuffix:ee.M,marker:ee.P,markerMatch:ee.A,HTML_RESULT:ee.C,getTemplateHtml:ee.L,overrideDirectiveResolve:(s,r)=>class extends s{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(s,r)=>{if(s.prototype._$AS.name!==r.name){ms??=s.prototype._$AS.name;for(let e=s.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(ms))return void(e[ms]=r);throw Error("Internal error: It is possible that both dev mode and production mode Lit was mixed together during SSR. Please comment on the issue: https://github.com/lit/lit/issues/4527")}},setDirectiveClass(s,r){s._$litDirective$=r},getAttributePartCommittedValue:(s,r,e)=>{let t=Ot;return s.j=i=>t=i,s._$AI(r,s,e),t},connectedDisconnectable:s=>({...s,_$AU:!0}),resolveDirective:ee.V,AttributePart:ee.H,PropertyPart:ee.B,BooleanAttributePart:ee.N,EventPart:ee.U,ElementPart:ee.F,TemplateInstance:ee.R,isIterable:ee.D,ChildPart:ee.I};var{AttributePart:cp,PropertyPart:dp,BooleanAttributePart:pp,EventPart:up}=Zl,fs=new Vn,hs=new Map,ec=s=>s.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),Dn=(s,r)=>{let e=hs.get(s);if(e===void 0){if(hs.has(s))return;if(s=s.trim(),s.startsWith("{{")&&s.endsWith("}}")){let t=s.substring(2,s.length-2).trim();e=new xi(t,fs).parse(),hs.set(s,e)}}return e?.evaluate(r)},mp=(s,r,e,t)=>{let i=s.getAttribute("if");if(i!==null&&Dn(i,r))return Nn(s,r,e,t)},tc=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,rc=s=>/(?:\\{{)|(?:\\}})/g.test(s),qi=s=>s.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),hp=(s,r,e,t)=>{let i=s.getAttribute("repeat");if(i!==null){let n=Dn(i,r);if(!n[Symbol.iterator])return X;let o=wi(s),a=-1,l=[];for(let c of n){a++;let p=Object.create(r);p.item=c,p.index=a,p.this=r.this??r;let u=[];for(let y of o.parts){let v=y.update(p,e,t);y.type===1?u.push(...v):u.push(v)}let h={_$litType$:o,values:u};l.push(h)}return l}},nc={if:mp,repeat:hp},Ne=(s,r=nc,e={},t)=>{let n=wi(s).renderers;if(t){let a=wi(t).renderers,l=n.super;l!==void 0?e={...n,...e,super:(c,p,u)=>(u={...a,...u,super:(h,y,v)=>Nn(t,h,y,v)},l(c,p,u))}:(e={...a,...n,...e},s=t)}else e={...n,...e};return o=>Nn(s,o,r,e)};var Nn=(s,r,e=nc,t={})=>{let i=wi(s),n=[];for(let a of i.parts){let l=a.update(r,e,t);a.type===1?n.push(...l):n.push(l)}return{_$litType$:i,values:n}},ic=new Map,wi=s=>{let r=ic.get(s);return r===void 0&&ic.set(s,r=fp(s)),r},fp=s=>{let r={h:void 0,el:s.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(r.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,i=-1,n=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)i++;else if(t.nodeType===Node.ELEMENT_NODE){i++;let o=t;if(o.tagName==="TEMPLATE"){let l=o.getAttribute("type"),c=o.getAttribute("name"),p=o.getAttribute("call");if(p!==null||l!==null||c!==null){o.parentNode.insertBefore(document.createComment(""),o),n.push(o);let u;if(p!==null){let h=p.trim(),y=h.startsWith("{{")&&h.endsWith("}}");u=(v,w,f)=>{let m=o.getAttribute("data"),b=m===null?void 0:Dn(m,v);return(y?Dn(h,v):f[p])?.(b,w,f)}}else l!==null?u=(h,y,v)=>{let w=y[l];return w?.(o,h,y,v)}:(c==="super"?r.renderers.super=(h,y,v)=>{let w=v.super,f=wi(o);return v={...v,...f.renderers},w(h,y,v)}:r.renderers[c]=(h,y,v)=>Nn(o,h,y,v),u=(h,y,v)=>{let w=v[c];return w?.(h,y,v)});r.parts.push({type:2,index:i,update:u});continue}}let a=o.getAttributeNames();for(let l of a){let c=o.getAttribute(l),p=c.split(tc);if(p.length===1){rc(c)&&o.setAttribute(l,qi(c));continue}o.removeAttribute(l);let u=l,h=cp,y=l[0];y==="."?(u=ec(l.substring(1)),h=dp):y==="?"?(u=l.substring(1),h=pp):y==="@"&&(u=ec(l.substring(1)),h=up);let v=[qi(p[0])],w=[];for(let f=1;f<p.length;f+=2){let m=p[f];w.push(us(m,fs)),v.push(qi(p[f+1]))}r.parts.push({type:1,index:i,name:u,strings:v,ctor:h,update:(f,m,b)=>w.map(q=>q.evaluate(f))})}}else if(t.nodeType===Node.TEXT_NODE){let o=t,a=o.textContent,l=a.split(tc);l.length>1?o.textContent=qi(l[0]):rc(a)&&(o.textContent=qi(a));for(let c=1;c<l.length;c+=2){let p=l[c],u=us(p,fs);r.parts.push({type:2,index:++i,update:(y,v)=>u.evaluate(y)});let h=new Text(l[c+1].replace("\\{{","{{"));o.parentNode.insertBefore(h,o.nextSibling),o.parentNode.insertBefore(document.createComment(""),o.nextSibling),o=h,e.currentNode=h}}for(let o of n)o.remove();return r};var Ci,Ei=class extends E{constructor(){super();L(this,Ci);U(this,Ci,this.attachInternals()),I(this,Ci).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ne(e)}render(){if(!this.computedContext)return x``;let e=this.computedContext.testParts.flatMap(t=>t.sections.flatMap(i=>i.items));return x` ${e.map(t=>this.myTemplate({item:t,view:this.computedContext.view}))} `}};Ci=new WeakMap,d([$({context:G,subscribe:!0})],Ei.prototype,"computedContext",2),Ei=d([k("test-paging-buttons-stamp")],Ei);var On=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},Hn=class{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(r=>this.Z=r)}resume(){this.Z?.(),this.Y=this.Z=void 0}};var oc=s=>!il(s)&&typeof s.then=="function",sc=1073741823,gs=class extends st{constructor(){super(...arguments),this._$Cwt=sc,this._$Cbt=[],this._$CK=new On(this),this._$CX=new Hn}render(...r){return r.find(e=>!oc(e))??re}update(r,e){let t=this._$Cbt,i=t.length;this._$Cbt=e;let n=this._$CK,o=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!oc(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=sc,i=0,Promise.resolve(l).then(async c=>{for(;o.get();)await o.get();let p=n.deref();if(p!==void 0){let u=p._$Cbt.indexOf(l);u>-1&&u<p._$Cwt&&(p._$Cwt=u,p.setValue(c))}}))}return re}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},Fn=qe(gs);var Un=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
|
|
219
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Ul=/'/g,Bl=/"/g,Wl=/^(?:script|style|textarea|title)$/i,ds=s=>(r,...e)=>({_$litType$:s,strings:r,values:e}),Cy=ds(1),Sy=ds(2),Ay=ds(3),Ot=Symbol.for("lit-noChange"),X=Symbol.for("lit-nothing"),zl=new WeakMap,Dt=Nt.createTreeWalker(Nt,129);function Gl(s,r){if(!cs(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ol!==void 0?Ol.createHTML(r):r}var Xl=(s,r)=>{let e=s.length-1,t=[],i,n=r===2?"<svg>":r===3?"<math>":"",o=fi;for(let a=0;a<e;a++){let l=s[a],c,p,u=-1,m=0;for(;m<l.length&&(o.lastIndex=m,p=o.exec(l),p!==null);)m=o.lastIndex,o===fi?p[1]==="!--"?o=Hl:p[1]!==void 0?o=Fl:p[2]!==void 0?(Wl.test(p[2])&&(i=RegExp("</"+p[2],"g")),o=Vt):p[3]!==void 0&&(o=Vt):o===Vt?p[0]===">"?(o=i??fi,u=-1):p[1]===void 0?u=-2:(u=o.lastIndex-p[2].length,c=p[1],o=p[3]===void 0?Vt:p[3]==='"'?Bl:Ul):o===Bl||o===Ul?o=Vt:o===Hl||o===Fl?o=fi:(o=Vt,i=void 0);let y=o===Vt&&s[a+1].startsWith("/>")?" ":"";n+=o===fi?l+Qd:u>=0?(t.push(c),l.slice(0,u)+as+l.slice(u)+Ge+y):l+Ge+(u===-2?a:y)}return[Gl(s,n+(s[e]||"<?>")+(r===2?"</svg>":r===3?"</math>":"")),t]},bi=class s{constructor({strings:r,_$litType$:e},t){let i;this.parts=[];let n=0,o=0,a=r.length-1,l=this.parts,[c,p]=Xl(r,e);if(this.el=s.createElement(c,t),Dt.currentNode=this.el.content,e===2||e===3){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(i=Dt.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let u of i.getAttributeNames())if(u.endsWith(as)){let m=p[o++],y=i.getAttribute(u).split(Ge),b=/([.?@])?(.*)/.exec(m);l.push({type:1,index:n,name:b[2],strings:y,ctor:b[1]==="."?In:b[1]==="?"?Rn:b[1]==="@"?kn:Ft}),i.removeAttribute(u)}else u.startsWith(Ge)&&(l.push({type:6,index:n}),i.removeAttribute(u));if(Wl.test(i.tagName)){let u=i.textContent.split(Ge),m=u.length-1;if(m>0){i.textContent=Sn?Sn.emptyScript:"";for(let y=0;y<m;y++)i.append(u[y],An()),Dt.nextNode(),l.push({type:2,index:++n});i.append(u[m],An())}}}else if(i.nodeType===8)if(i.data===ls)l.push({type:2,index:n});else{let u=-1;for(;(u=i.data.indexOf(Ge,u+1))!==-1;)l.push({type:7,index:n}),u+=Ge.length-1}n++}}static createElement(r,e){let t=Nt.createElement("template");return t.innerHTML=r,t}};function Ht(s,r,e=s,t){if(r===Ot)return r;let i=t!==void 0?e._$Co?.[t]:e._$Cl,n=gi(r)?void 0:r._$litDirective$;return i?.constructor!==n&&(i?._$AO?.(!1),n===void 0?i=void 0:(i=new n(s),i._$AT(s,e,t)),t!==void 0?(e._$Co??=[])[t]=i:e._$Cl=i),i!==void 0&&(r=Ht(s,i._$AS(s,r.values),i,t)),r}var Tn=class{constructor(r,e){this._$AV=[],this._$AN=void 0,this._$AD=r,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(r){let{el:{content:e},parts:t}=this._$AD,i=(r?.creationScope??Nt).importNode(e,!0);Dt.currentNode=i;let n=Dt.nextNode(),o=0,a=0,l=t[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new vi(n,n.nextSibling,this,r):l.type===1?c=new l.ctor(n,l.name,l.strings,this,r):l.type===6&&(c=new Mn(n,this,r)),this._$AV.push(c),l=t[++a]}o!==l?.index&&(n=Dt.nextNode(),o++)}return Dt.currentNode=Nt,i}p(r){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(r,t,e),e+=t.strings.length-2):t._$AI(r[e])),e++}},vi=class s{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(r,e,t,i){this.type=2,this._$AH=X,this._$AN=void 0,this._$AA=r,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let r=this._$AA.parentNode,e=this._$AM;return e!==void 0&&r?.nodeType===11&&(r=e.parentNode),r}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(r,e=this){r=Ht(this,r,e),gi(r)?r===X||r==null||r===""?(this._$AH!==X&&this._$AR(),this._$AH=X):r!==this._$AH&&r!==Ot&&this._(r):r._$litType$!==void 0?this.$(r):r.nodeType!==void 0?this.T(r):jl(r)?this.k(r):this._(r)}O(r){return this._$AA.parentNode.insertBefore(r,this._$AB)}T(r){this._$AH!==r&&(this._$AR(),this._$AH=this.O(r))}_(r){this._$AH!==X&&gi(this._$AH)?this._$AA.nextSibling.data=r:this.T(Nt.createTextNode(r)),this._$AH=r}$(r){let{values:e,_$litType$:t}=r,i=typeof t=="number"?this._$AC(r):(t.el===void 0&&(t.el=bi.createElement(Gl(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{let n=new Tn(i,this),o=n.u(this.options);n.p(e),this.T(o),this._$AH=n}}_$AC(r){let e=zl.get(r.strings);return e===void 0&&zl.set(r.strings,e=new bi(r)),e}k(r){cs(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,i=0;for(let n of r)i===e.length?e.push(t=new s(this.O(An()),this.O(An()),this,this.options)):t=e[i],t._$AI(n),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(r=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);r!==this._$AB;){let t=r.nextSibling;r.remove(),r=t}}setConnected(r){this._$AM===void 0&&(this._$Cv=r,this._$AP?.(r))}},Ft=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(r,e,t,i,n){this.type=1,this._$AH=X,this._$AN=void 0,this.element=r,this.name=e,this._$AM=i,this.options=n,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=X}_$AI(r,e=this,t,i){let n=this.strings,o=!1;if(n===void 0)r=Ht(this,r,e,0),o=!gi(r)||r!==this._$AH&&r!==Ot,o&&(this._$AH=r);else{let a=r,l,c;for(r=n[0],l=0;l<n.length-1;l++)c=Ht(this,a[t+l],e,l),c===Ot&&(c=this._$AH[l]),o||=!gi(c)||c!==this._$AH[l],c===X?r=X:r!==X&&(r+=(c??"")+n[l+1]),this._$AH[l]=c}o&&!i&&this.j(r)}j(r){r===X?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,r??"")}},In=class extends Ft{constructor(){super(...arguments),this.type=3}j(r){this.element[this.name]=r===X?void 0:r}},Rn=class extends Ft{constructor(){super(...arguments),this.type=4}j(r){this.element.toggleAttribute(this.name,!!r&&r!==X)}},kn=class extends Ft{constructor(r,e,t,i,n){super(r,e,t,i,n),this.type=5}_$AI(r,e=this){if((r=Ht(this,r,e,0)??X)===Ot)return;let t=this._$AH,i=r===X&&t!==X||r.capture!==t.capture||r.once!==t.once||r.passive!==t.passive,n=r!==X&&(t===X||i);i&&this.element.removeEventListener(this.name,this,t),n&&this.element.addEventListener(this.name,this,r),this._$AH=r}handleEvent(r){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,r):this._$AH.handleEvent(r)}},Mn=class{constructor(r,e,t){this.element=r,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(r){Ht(this,r)}},ee={M:as,P:Ge,A:ls,C:1,L:Xl,R:Tn,D:jl,V:Ht,I:vi,H:Ft,N:Rn,U:kn,B:In,F:Mn},Yd=_n.litHtmlPolyfillSupport;Yd?.(bi,vi),(_n.litHtmlVersions??=[]).push("3.3.1");var Ln=["this"],Ql=["+","-","!"],Yl=["=","+","-","*","/","%","^","==","!=",">","<",">=","<=","||","&&","??","&","===","!==","|","|>"],ps={"!":0,":":0,",":0,")":0,"]":0,"}":0,"|>":1,"?":2,"??":3,"||":4,"&&":5,"|":6,"^":7,"&":8,"!=":9,"==":9,"!==":9,"===":9,">=":10,">":10,"<=":10,"<":10,"+":11,"-":11,"%":12,"/":12,"*":12,"(":13,"[":13,".":13,"{":13},$n=13;var Jd=["==","!=","<=",">=","||","&&","??","|>"],Kd=["===","!=="],D;(function(s){s[s.STRING=1]="STRING",s[s.IDENTIFIER=2]="IDENTIFIER",s[s.DOT=3]="DOT",s[s.COMMA=4]="COMMA",s[s.COLON=5]="COLON",s[s.INTEGER=6]="INTEGER",s[s.DECIMAL=7]="DECIMAL",s[s.OPERATOR=8]="OPERATOR",s[s.GROUPER=9]="GROUPER",s[s.KEYWORD=10]="KEYWORD",s[s.ARROW=11]="ARROW"})(D||(D={}));var De=(s,r,e=0)=>({kind:s,value:r,precedence:e}),Zd=s=>s===9||s===10||s===13||s===32,Jl=s=>s===95||s===36||(s&=-33,65<=s&&s<=90),ep=s=>Jl(s)||yi(s),tp=s=>Ln.indexOf(s)!==-1,rp=s=>s===34||s===39,yi=s=>48<=s&&s<=57,ip=s=>s===43||s===45||s===42||s===47||s===33||s===38||s===37||s===60||s===61||s===62||s===63||s===94||s===124,np=s=>s===40||s===41||s===91||s===93||s===123||s===125,op=s=>s.replace(/\\(.)/g,(r,e)=>{switch(e){case"n":return`
|
|
220
|
+
`;case"r":return"\r";case"t":return" ";case"b":return"\b";case"f":return"\f";default:return e}}),Pn=class{#e;#t=-1;#r=0;#i;constructor(r){this.#e=r,this.#n()}nextToken(){for(;Zd(this.#i);)this.#n(!0);if(rp(this.#i))return this.#a();if(Jl(this.#i))return this.#c();if(yi(this.#i))return this.#d();if(this.#i===46)return this.#l();if(this.#i===44)return this.#u();if(this.#i===58)return this.#h();if(ip(this.#i))return this.#b();if(np(this.#i))return this.#f();if(this.#n(),this.#i!==void 0)throw new Error(`Expected end of input, got ${this.#i}`)}#n(r){this.#t++,this.#t<this.#e.length?(this.#i=this.#e.charCodeAt(this.#t),r===!0&&(this.#r=this.#t)):this.#i=void 0}#o(r=0){let e=this.#e.substring(this.#r,this.#t+r);return r===0&&this.#s(),e}#s(){this.#r=this.#t}#a(){let r="unterminated string",e=this.#i;for(this.#n(!0);this.#i!==e;){if(this.#i===void 0)throw new Error(r);if(this.#i===92&&(this.#n(),this.#i===void 0))throw new Error(r);this.#n()}let t=De(D.STRING,op(this.#o()));return this.#n(),t}#c(){do this.#n();while(ep(this.#i));let r=this.#o(),e=tp(r)?D.KEYWORD:D.IDENTIFIER;return De(e,r)}#d(){do this.#n();while(yi(this.#i));return this.#i===46?this.#l():De(D.INTEGER,this.#o())}#l(){return this.#n(),yi(this.#i)?this.#g():(this.#s(),De(D.DOT,".",$n))}#u(){return this.#n(!0),De(D.COMMA,",")}#h(){return this.#n(!0),De(D.COLON,":")}#g(){do this.#n();while(yi(this.#i));return De(D.DECIMAL,this.#o())}#b(){this.#n();let r=this.#o(2);if(Kd.indexOf(r)!==-1)this.#n(),this.#n();else{if(r=this.#o(1),r==="=>")return this.#n(),De(D.ARROW,r);Jd.indexOf(r)!==-1&&this.#n()}return r=this.#o(),De(D.OPERATOR,r,ps[r])}#f(){let r=String.fromCharCode(this.#i),e=De(D.GROUPER,r,ps[r]);return this.#n(!0),e}};var us=(s,r)=>new xi(s,r).parse(),xi=class{#e;#t;#r;#i;#n;constructor(r,e){this.#t=new Pn(r),this.#r=e}parse(){return this.#o(),this.#s()}#o(r,e){if(!this._matches(r,e))throw new Error(`Expected kind ${r} (${e}), was ${this.#i?.kind} (${this.#i?.value})`);let t=this.#t.nextToken();this.#i=t,this.#e=t?.kind,this.#n=t?.value}_matches(r,e){return!(r&&this.#e!==r||e&&this.#n!==e)}#s(){if(!this.#i)return this.#r.empty();let r=this.#l();return r===void 0?void 0:this.#a(r,0)}#a(r,e){if(r===void 0)throw new Error("Expected left to be defined.");for(;this.#i;)if(this._matches(D.GROUPER,"(")){let t=this.#p();r=this.#r.invoke(r,void 0,t)}else if(this._matches(D.GROUPER,"[")){let t=this.#v();r=this.#r.index(r,t)}else if(this._matches(D.DOT)){this.#o();let t=this.#l();r=this.#c(r,t)}else{if(this._matches(D.KEYWORD))break;if(this._matches(D.OPERATOR)&&this.#i.precedence>=e)r=this.#n==="?"?this.#u(r):this.#d(r,this.#i);else break}return r}#c(r,e){if(e===void 0)throw new Error("expected identifier");if(e.type==="ID")return this.#r.getter(r,e.value);if(e.type==="Invoke"&&e.receiver.type==="ID"){let t=e.receiver;return this.#r.invoke(r,t.value,e.arguments)}else throw new Error(`expected identifier: ${e}`)}#d(r,e){if(Yl.indexOf(e.value)===-1)throw new Error(`unknown operator: ${e.value}`);this.#o();let t=this.#l();for(;(this.#e===D.OPERATOR||this.#e===D.DOT||this.#e===D.GROUPER)&&this.#i.precedence>e.precedence;)t=this.#a(t,this.#i.precedence);return this.#r.binary(r,e.value,t)}#l(){if(this._matches(D.OPERATOR)){let r=this.#n;if(this.#o(),r==="+"||r==="-"){if(this._matches(D.INTEGER))return this.#m(r);if(this._matches(D.DECIMAL))return this.#w(r)}if(Ql.indexOf(r)===-1)throw new Error(`unexpected token: ${r}`);let e=this.#a(this.#h(),$n);return this.#r.unary(r,e)}return this.#h()}#u(r){this.#o(D.OPERATOR,"?");let e=this.#s();this.#o(D.COLON);let t=this.#s();return this.#r.ternary(r,e,t)}#h(){switch(this.#e){case D.KEYWORD:let r=this.#n;if(r==="this")return this.#o(),this.#r.id(r);throw Ln.indexOf(r)!==-1?new Error(`unexpected keyword: ${r}`):new Error(`unrecognized keyword: ${r}`);case D.IDENTIFIER:return this.#f();case D.STRING:return this.#q();case D.INTEGER:return this.#m();case D.DECIMAL:return this.#w();case D.GROUPER:return this.#n==="("?this.#x():this.#n==="{"?this.#b():this.#n==="["?this.#g():void 0;case D.COLON:throw new Error('unexpected token ":"');default:return}}#g(){let r=[];do{if(this.#o(),this._matches(D.GROUPER,"]"))break;r.push(this.#s())}while(this._matches(D.COMMA));return this.#o(D.GROUPER,"]"),this.#r.list(r)}#b(){let r={};do{if(this.#o(),this._matches(D.GROUPER,"}"))break;let e=this.#n;(this._matches(D.STRING)||this._matches(D.IDENTIFIER))&&this.#o(),this.#o(D.COLON),r[e]=this.#s()}while(this._matches(D.COMMA));return this.#o(D.GROUPER,"}"),this.#r.map(r)}#f(){let r=this.#n;if(r==="true")return this.#o(),this.#r.literal(!0);if(r==="false")return this.#o(),this.#r.literal(!1);if(r==="null")return this.#o(),this.#r.literal(null);if(r==="undefined")return this.#o(),this.#r.literal(void 0);let e=this.#y(),t=this.#p();return t?this.#r.invoke(e,void 0,t):e}#y(){if(!this._matches(D.IDENTIFIER))throw new Error(`expected identifier: ${this.#n}`);let r=this.#n;return this.#o(),this.#r.id(r)}#p(){if(!this._matches(D.GROUPER,"("))return;let r=[];do{if(this.#o(),this._matches(D.GROUPER,")"))break;let e=this.#s();r.push(e)}while(this._matches(D.COMMA));return this.#o(D.GROUPER,")"),r}#v(){this.#o();let r=this.#s();return this.#o(D.GROUPER,"]"),r}#x(){let r=this.#p();if(this._matches(D.ARROW)){this.#o();let e=this.#s(),t=r?.map(i=>i.value)??[];return this.#r.arrowFunction(t,e)}else return this.#r.paren(r[0])}#q(){let r=this.#r.literal(this.#n);return this.#o(),r}#m(r=""){let e=this.#r.literal(parseInt(`${r}${this.#n}`,10));return this.#o(),e}#w(r=""){let e=this.#r.literal(parseFloat(`${r}${this.#n}`));return this.#o(),e}};var{hasOwn:Kl,fromEntries:sp}=Object,ap={"+":(s,r)=>s+r,"-":(s,r)=>s-r,"*":(s,r)=>s*r,"/":(s,r)=>s/r,"%":(s,r)=>s%r,"==":(s,r)=>s==r,"!=":(s,r)=>s!=r,"===":(s,r)=>s===r,"!==":(s,r)=>s!==r,">":(s,r)=>s>r,">=":(s,r)=>s>=r,"<":(s,r)=>s<r,"<=":(s,r)=>s<=r,"||":(s,r)=>s||r,"&&":(s,r)=>s&&r,"??":(s,r)=>s??r,"|":(s,r)=>r(s),"|>":(s,r)=>r(s)},lp={"+":s=>s,"-":s=>-s,"!":s=>!s},Vn=class{empty(){return{type:"Empty",evaluate(r){return r},getIds(r){return r}}}literal(r){return{type:"Literal",value:r,evaluate(e){return this.value},getIds(e){return e}}}id(r){return{type:"ID",value:r,evaluate(e){return this.value==="this"?e:e?.[this.value]},getIds(e){return e.push(this.value),e}}}unary(r,e){let t=lp[r];return{type:"Unary",operator:r,child:e,evaluate(i){return t(this.child.evaluate(i))},getIds(i){return this.child.getIds(i)}}}binary(r,e,t){let i=ap[e];return{type:"Binary",operator:e,left:r,right:t,evaluate(n){if(this.operator==="="){if(this.left.type!=="ID"&&this.left.type!=="Getter"&&this.left.type!=="Index")throw new Error(`Invalid assignment target: ${this.left}`);let o=this.right.evaluate(n),a,l;return this.left.type==="Getter"?(a=this.left.receiver.evaluate(n),l=this.left.name):this.left.type==="Index"?(a=this.left.receiver.evaluate(n),l=this.left.argument.evaluate(n)):this.left.type==="ID"&&(a=n,l=this.left.value),a===void 0?void 0:a[l]=o}return i(this.left.evaluate(n),this.right.evaluate(n))},getIds(n){return this.left.getIds(n),this.right.getIds(n),n}}}getter(r,e){return{type:"Getter",receiver:r,name:e,evaluate(t){return this.receiver.evaluate(t)?.[this.name]},getIds(t){return this.receiver.getIds(t),t}}}invoke(r,e,t){if(e!=null&&typeof e!="string")throw new Error("method not a string");return{type:"Invoke",receiver:r,method:e,arguments:t,evaluate(i){let n=this.receiver.evaluate(i),o=this.method?n:i?.this??i,a=this.method?n?.[e]:n,c=(this.arguments??[]).map(p=>p?.evaluate(i));return a?.apply?.(o,c)},getIds(i){return this.receiver.getIds(i),this.arguments?.forEach(n=>n?.getIds(i)),i}}}paren(r){return r}index(r,e){return{type:"Index",receiver:r,argument:e,evaluate(t){return this.receiver.evaluate(t)?.[this.argument.evaluate(t)]},getIds(t){return this.receiver.getIds(t),t}}}ternary(r,e,t){return{type:"Ternary",condition:r,trueExpr:e,falseExpr:t,evaluate(i){return this.condition.evaluate(i)?this.trueExpr.evaluate(i):this.falseExpr.evaluate(i)},getIds(i){return this.condition.getIds(i),this.trueExpr.getIds(i),this.falseExpr.getIds(i),i}}}map(r){return{type:"Map",entries:r,evaluate(e){let t={};if(r&&this.entries)for(let i in r){let n=this.entries[i];n&&(t[i]=n.evaluate(e))}return t},getIds(e){if(r&&this.entries)for(let t in r){let i=this.entries[t];i&&i.getIds(e)}return e}}}list(r){return{type:"List",items:r,evaluate(e){return this.items?.map(t=>t?.evaluate(e))},getIds(e){return this.items?.forEach(t=>t?.getIds(e)),e}}}arrowFunction(r,e){return{type:"ArrowFunction",params:r,body:e,evaluate(t){let i=this.params,n=this.body;return function(...o){let a=sp(i.map((c,p)=>[c,o[p]])),l=new Proxy(t??{},{set(c,p,u){return Kl(a,p)&&(a[p]=u),c[p]=u},get(c,p){return Kl(a,p)?a[p]:c[p]}});return n.evaluate(l)}},getIds(t){return this.body.getIds(t).filter(i=>!this.params.includes(i))}}}};var ms=null,Zl={boundAttributeSuffix:ee.M,marker:ee.P,markerMatch:ee.A,HTML_RESULT:ee.C,getTemplateHtml:ee.L,overrideDirectiveResolve:(s,r)=>class extends s{_$AS(e,t){return r(this,t)}},patchDirectiveResolve:(s,r)=>{if(s.prototype._$AS.name!==r.name){ms??=s.prototype._$AS.name;for(let e=s.prototype;e!==Object.prototype;e=Object.getPrototypeOf(e))if(e.hasOwnProperty(ms))return void(e[ms]=r);throw Error("Internal error: It is possible that both dev mode and production mode Lit was mixed together during SSR. Please comment on the issue: https://github.com/lit/lit/issues/4527")}},setDirectiveClass(s,r){s._$litDirective$=r},getAttributePartCommittedValue:(s,r,e)=>{let t=Ot;return s.j=i=>t=i,s._$AI(r,s,e),t},connectedDisconnectable:s=>({...s,_$AU:!0}),resolveDirective:ee.V,AttributePart:ee.H,PropertyPart:ee.B,BooleanAttributePart:ee.N,EventPart:ee.U,ElementPart:ee.F,TemplateInstance:ee.R,isIterable:ee.D,ChildPart:ee.I};var{AttributePart:cp,PropertyPart:dp,BooleanAttributePart:pp,EventPart:up}=Zl,fs=new Vn,hs=new Map,ec=s=>s.replace(/-(-|\w)/g,(r,e)=>e.toUpperCase()),Dn=(s,r)=>{let e=hs.get(s);if(e===void 0){if(hs.has(s))return;if(s=s.trim(),s.startsWith("{{")&&s.endsWith("}}")){let t=s.substring(2,s.length-2).trim();e=new xi(t,fs).parse(),hs.set(s,e)}}return e?.evaluate(r)},mp=(s,r,e,t)=>{let i=s.getAttribute("if");if(i!==null&&Dn(i,r))return Nn(s,r,e,t)},tc=/(?<!\\){{(.*?)(?:(?<!\\)}})/g,rc=s=>/(?:\\{{)|(?:\\}})/g.test(s),qi=s=>s.replaceAll(/\\{{/g,"{{").replace(/\\}}/g,"}}"),hp=(s,r,e,t)=>{let i=s.getAttribute("repeat");if(i!==null){let n=Dn(i,r);if(!n[Symbol.iterator])return X;let o=wi(s),a=-1,l=[];for(let c of n){a++;let p=Object.create(r);p.item=c,p.index=a,p.this=r.this??r;let u=[];for(let y of o.parts){let b=y.update(p,e,t);y.type===1?u.push(...b):u.push(b)}let m={_$litType$:o,values:u};l.push(m)}return l}},nc={if:mp,repeat:hp},Ne=(s,r=nc,e={},t)=>{let n=wi(s).renderers;if(t){let a=wi(t).renderers,l=n.super;l!==void 0?e={...n,...e,super:(c,p,u)=>(u={...a,...u,super:(m,y,b)=>Nn(t,m,y,b)},l(c,p,u))}:(e={...a,...n,...e},s=t)}else e={...n,...e};return o=>Nn(s,o,r,e)};var Nn=(s,r,e=nc,t={})=>{let i=wi(s),n=[];for(let a of i.parts){let l=a.update(r,e,t);a.type===1?n.push(...l):n.push(l)}return{_$litType$:i,values:n}},ic=new Map,wi=s=>{let r=ic.get(s);return r===void 0&&ic.set(s,r=fp(s)),r},fp=s=>{let r={h:void 0,el:s.cloneNode(!0),parts:[],renderers:{}},e=document.createTreeWalker(r.el.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT|NodeFilter.SHOW_COMMENT),t=e.currentNode,i=-1,n=[];for(;(t=e.nextNode())!==null;)if(t.nodeType===Node.COMMENT_NODE)i++;else if(t.nodeType===Node.ELEMENT_NODE){i++;let o=t;if(o.tagName==="TEMPLATE"){let l=o.getAttribute("type"),c=o.getAttribute("name"),p=o.getAttribute("call");if(p!==null||l!==null||c!==null){o.parentNode.insertBefore(document.createComment(""),o),n.push(o);let u;if(p!==null){let m=p.trim(),y=m.startsWith("{{")&&m.endsWith("}}");u=(b,w,f)=>{let h=o.getAttribute("data"),v=h===null?void 0:Dn(h,b);return(y?Dn(m,b):f[p])?.(v,w,f)}}else l!==null?u=(m,y,b)=>{let w=y[l];return w?.(o,m,y,b)}:(c==="super"?r.renderers.super=(m,y,b)=>{let w=b.super,f=wi(o);return b={...b,...f.renderers},w(m,y,b)}:r.renderers[c]=(m,y,b)=>Nn(o,m,y,b),u=(m,y,b)=>{let w=b[c];return w?.(m,y,b)});r.parts.push({type:2,index:i,update:u});continue}}let a=o.getAttributeNames();for(let l of a){let c=o.getAttribute(l),p=c.split(tc);if(p.length===1){rc(c)&&o.setAttribute(l,qi(c));continue}o.removeAttribute(l);let u=l,m=cp,y=l[0];y==="."?(u=ec(l.substring(1)),m=dp):y==="?"?(u=l.substring(1),m=pp):y==="@"&&(u=ec(l.substring(1)),m=up);let b=[qi(p[0])],w=[];for(let f=1;f<p.length;f+=2){let h=p[f];w.push(us(h,fs)),b.push(qi(p[f+1]))}r.parts.push({type:1,index:i,name:u,strings:b,ctor:m,update:(f,h,v)=>w.map(q=>q.evaluate(f))})}}else if(t.nodeType===Node.TEXT_NODE){let o=t,a=o.textContent,l=a.split(tc);l.length>1?o.textContent=qi(l[0]):rc(a)&&(o.textContent=qi(a));for(let c=1;c<l.length;c+=2){let p=l[c],u=us(p,fs);r.parts.push({type:2,index:++i,update:(y,b)=>u.evaluate(y)});let m=new Text(l[c+1].replace("\\{{","{{"));o.parentNode.insertBefore(m,o.nextSibling),o.parentNode.insertBefore(document.createComment(""),o.nextSibling),o=m,e.currentNode=m}}for(let o of n)o.remove();return r};var Ci,Ei=class extends E{constructor(){super();L(this,Ci);U(this,Ci,this.attachInternals()),I(this,Ci).ariaLabel="pagination"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");this.myTemplate=Ne(e)}render(){if(!this.computedContext)return x``;let e=this.computedContext.testParts.flatMap(t=>t.sections.flatMap(i=>i.items));return x` ${e.map(t=>this.myTemplate({item:t,view:this.computedContext.view}))} `}};Ci=new WeakMap,d([$({context:G,subscribe:!0})],Ei.prototype,"computedContext",2),Ei=d([k("test-paging-buttons-stamp")],Ei);var On=class{constructor(r){this.G=r}disconnect(){this.G=void 0}reconnect(r){this.G=r}deref(){return this.G}},Hn=class{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(r=>this.Z=r)}resume(){this.Z?.(),this.Y=this.Z=void 0}};var oc=s=>!il(s)&&typeof s.then=="function",sc=1073741823,gs=class extends st{constructor(){super(...arguments),this._$Cwt=sc,this._$Cbt=[],this._$CK=new On(this),this._$CX=new Hn}render(...r){return r.find(e=>!oc(e))??re}update(r,e){let t=this._$Cbt,i=t.length;this._$Cbt=e;let n=this._$CK,o=this._$CX;this.isConnected||this.disconnected();for(let a=0;a<e.length&&!(a>this._$Cwt);a++){let l=e[a];if(!oc(l))return this._$Cwt=a,l;a<i&&l===t[a]||(this._$Cwt=sc,i=0,Promise.resolve(l).then(async c=>{for(;o.get();)await o.get();let p=n.deref();if(p!==void 0){let u=p._$Cbt.indexOf(l);u>-1&&u<p._$Cwt&&(p._$Cwt=u,p.setValue(c))}}))}return re}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},Fn=qe(gs);var Un=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
|
|
221
221
|
|
|
222
222
|
/* https://www.imsglobal.org/sites/default/files/spec/qti/v3/guide/img/qti3p0.css */
|
|
223
223
|
|
|
@@ -3848,7 +3848,7 @@ div.full-correct-response-inline {
|
|
|
3848
3848
|
:host([disabled]) {
|
|
3849
3849
|
${ne};
|
|
3850
3850
|
}
|
|
3851
|
-
`,d([g({type:String,attribute:"section-id"})],br.prototype,"sectionId",2),br=d([k("test-section-link")],br);var Ii=class extends E{render(){return x` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};d([M(),$({context:G,subscribe:!0})],Ii.prototype,"computedContext",2),Ii=d([k("test-print-context")],Ii);var Ut=class extends E{constructor(){super(...arguments);this.debug=!1;this.stampContext={view:"candidate",activeItem:{},activeSection:{items:[]},activeTestpart:{items:[],sections:[]},test:{}}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Ne(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(
|
|
3851
|
+
`,d([g({type:String,attribute:"section-id"})],br.prototype,"sectionId",2),br=d([k("test-section-link")],br);var Ii=class extends E{render(){return x` <small><pre>${JSON.stringify(this.computedContext,null,2)}</pre></small> `}};d([M(),$({context:G,subscribe:!0})],Ii.prototype,"computedContext",2),Ii=d([k("test-print-context")],Ii);var Ut=class extends E{constructor(){super(...arguments);this.debug=!1;this.stampContext={view:"candidate",activeItem:{},activeSection:{items:[]},activeTestpart:{items:[],sections:[]},test:{}}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Ne(e)}willUpdate(e){if(!this.computedContext)return;let t=this.computedContext.testParts.find(m=>m.active),i=t?.sections.find(m=>m.active),n=i?.items.find(m=>m.active),{variables:o,...a}=n||{};if(!t||!i||!n)return;let l={...t,items:t.sections.flatMap(m=>m.items.map(({variables:y,...b})=>b)),sections:t.sections.map(m=>({...m,items:m.items.map(({variables:y,...b})=>b)}))},c={...i,items:i.items.map(({variables:m,...y})=>y)},{testParts:p,...u}=this.computedContext;this.stampContext={view:this.computedContext.view,activeItem:a,activeSection:c,activeTestpart:l,test:u},this.dispatchEvent(new CustomEvent("qti-stamp-context-updated",{detail:this.stampContext,bubbles:!0}))}render(){return x` ${this.debug?x`<small><pre>${JSON.stringify(this.stampContext,null,2)}</pre></small>`:O}
|
|
3852
3852
|
${this.myTemplate?this.myTemplate(this.stampContext):O}`}};d([g({type:Boolean,reflect:!0})],Ut.prototype,"debug",2),d([M(),$({context:G,subscribe:!0})],Ut.prototype,"computedContext",2),d([M()],Ut.prototype,"stampContext",2),Ut=d([k("test-stamp")],Ut);var zn,dc,Bt=class extends E{constructor(){super();L(this,zn);this.view="";this.disabled=!1;this.myTemplate=null;this.addEventListener("click",e=>{let t=e.target,i=parseFloat(t.value);t.tagName==="INPUT"&&P(this,zn,dc).call(this,i)})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let e=this.querySelector("template");if(!e){this.myTemplate=null;return}this.myTemplate=Ne(e)}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(c=>c.items)).find(l=>l.active);if(!e||!e.variables)return x``;let t=e.variables.find(l=>l.identifier=="MAXSCORE")?.value,i=e.variables.find(l=>l.identifier=="SCORE"),n=i?.value,o=i?.externalScored!=="human";if(!t||!i)return O;let a=[...Array(Number(t)+1).keys()];return x`${this.myTemplate?this.myTemplate({scores:a,score:n,disabled:o}):O}`}};zn=new WeakSet,dc=function(e){let n=(this.computedContext?.testParts.find(o=>o.active)).sections.flatMap(o=>o.items).find(o=>o.active)?.identifier;this.dispatchEvent(new CustomEvent("test-update-outcome-variable",{detail:{assessmentItemRefId:n,outcomeVariableId:"SCORE",value:e},bubbles:!0}))},d([g({type:String,attribute:"view"})],Bt.prototype,"view",2),d([g({type:Boolean})],Bt.prototype,"disabled",2),d([$({context:G,subscribe:!0})],Bt.prototype,"computedContext",2),Bt=d([k("test-scoring-buttons")],Bt);var Ri=class extends E{createRenderRoot(){return this}connectedCallback(){super.connectedCallback();let r=this.querySelector("template");if(!r){this.myTemplate=null;return}this.myTemplate=Ne(r)}_switchView(r){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:r}))}firstUpdated(r){this.addEventListener("click",()=>{this.sessionContext?.view==="scorer"?this._switchView("candidate"):this._switchView("scorer")})}render(){return x`${this.myTemplate?this.myTemplate({view:this.sessionContext?.view}):O}`}};d([$({context:it,subscribe:!0})],Ri.prototype,"sessionContext",2),Ri=d([k("test-view-toggle")],Ri);var vr=class extends E{constructor(){super(...arguments);this.view=null}render(){let e=this.computedContext?.testParts.flatMap(l=>l.sections.flatMap(c=>c.items)).find(l=>l.active);if(!e||!e.variables)return x``;if(e.category==="dep-informational")return x`<div>${this.dataset.informational}</div>`;let t=e?.variables.find(l=>l.identifier==="completionStatus")?.value,i=e?.variables.find(l=>l.identifier=="SCORE"),n=parseFloat(i?.value),o=e.externalScored;return x`<div>${t!=="completed"?this.dataset.textNoResponse:!o&&n!==void 0&&!Number.isNaN(n)?n>0?this.dataset.textCorrect:this.dataset.textIncorrect:o==="externalMachine"?Number.isNaN(n)||n===void 0?this.dataset.scoreUnknown:`We hebben je antwoord ${n===0?"geen punten":n==1?"\xE9\xE9n punt":`${n} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`:o==="human"?Number.isNaN(n)?"":"Deze score heb je zelf toegekend.":this.dataset.inProgress}</div>`}};d([$({context:G,subscribe:!0})],vr.prototype,"computedContext",2),d([g({type:String,attribute:"view"})],vr.prototype,"view",2),vr=d([k("test-scoring-feedback")],vr);var ki=class extends E{constructor(){super(),this.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("test-end-attempt",{bubbles:!0})),this.dispatchEvent(new CustomEvent("test-show-correct-response",{detail:!0,bubbles:!0}));let e=this.closest("qti-test").querySelector("test-container");Array.from(e.shadowRoot.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",!0)})})}render(){return x` <slot></slot> `}};ki.styles=C`
|
|
3853
3853
|
:host {
|
|
3854
3854
|
${ie};
|
|
@@ -4030,7 +4030,7 @@ div.full-correct-response-inline {
|
|
|
4030
4030
|
<div part="cha"></div>
|
|
4031
4031
|
</div>
|
|
4032
4032
|
${this.marker?x`<div id="label">${this.marker}</div>`:O}
|
|
4033
|
-
<slot part="slot"></slot>`}};d([g({type:String,attribute:"template-identifier"})],mt.prototype,"templateIdentifier",2),d([g({type:String,attribute:"show-hide"})],mt.prototype,"showHide",2),d([g({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],mt.prototype,"fixed",2),d([g({type:String,attribute:!1})],mt.prototype,"marker",2);customElements.define("qti-simple-choice",mt);var{AbortController:Oe,AbortSignal:ys,WeakMap:vp,WeakRef:yp,Window:Pc,reportError:eo=console.log}=globalThis,ht=s=>s&&s.defaultView!==null&&s.defaultView.document===s&&(s.defaultView.top===s.defaultView||ht(s.defaultView.parent.document)),Wt=()=>!!Pc&&globalThis instanceof Pc,xs=Symbol("unset"),[Vc,xp]=(()=>{function s(w,f,m=!0){Object.defineProperty(w,f,{...Object.getOwnPropertyDescriptor(w,f),enumerable:m})}let r="try"in Promise?Promise.try.bind(Promise):(w,...f)=>new Promise(m=>m(w(...f))),e="withResolvers"in Promise?Promise.withResolvers.bind(Promise):()=>{let w,f;return{promise:new Promise((b,q)=>(w=b,f=q)),resolve:w,reject:f}};function t(w,f){let m=f.call(w);if(m===null||typeof m!="object")throw new TypeError("Iterator is not an object");return m}let i=new vp,n={next(...w){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.next called on invalid object");let{syncIteratorRecord:b}=m;return r(()=>b.next(...w))},return(...w){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.return called on invalid object");let{syncIteratorRecord:b}=m;return r(()=>b.return?b.return(...w):{value:void 0,done:!0})},throw(...w){let f=this,m=i.get(f);if(!m?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.throw called on invalid object");let{syncIteratorRecord:b}=m;return r(()=>{if(!b.throw)throw b.return(),new TypeError("no throw method");return b.throw(...w)})}};function o(w){let f=Object.create(n);return i.set(f,{syncIteratorRecord:w}),f}function a(w,f){let m;if(f){if(m=w[Symbol.asyncIterator],m==null){if(m=w[Symbol.iterator],m==null)throw new TypeError("Object is not async iterable");let b=t(w,m);return o(b)}}else m=w[Symbol.iterator];if(m==null)throw new TypeError("Object is not iterable");return t(w,m)}let l="any"in ys?ys.any.bind(ys):w=>{let f=new Oe;for(let m of w)if(m.aborted)return f.abort(m.reason),f.signal;for(let m of w)m.addEventListener("abort",()=>{f.abort(m.reason)},{signal:f.signal});return f.signal},c=w=>l(w.filter(Boolean));class p{constructor({next:f,error:m,complete:b}={}){i.set(this,{next:f,error:m,complete:b})}next(f){let{next:m}=i.get(this)||{};m&&m(f)}error(f){let{error:m}=i.get(this)||{};m?m(f):eo(f)}complete(){let{complete:f}=i.get(this)||{};f&&f()}}function u(w,f){let m=i.get(w);if(m?.active){m.active=!1,m.subscriptionController.abort(f);for(let b of m.teardowns.reverse()){if(Wt()&&!ht(document))return;try{b()}catch(q){eo(q)}}}}function h(w,f,m={}){if(Wt()&&!ht(document))return;let b;typeof f=="function"?b=new p({next:f}):f&&!(f instanceof p)?b=new p(f):b=f||new p;let q=i.get(w),A=q.weakSubscriber?.deref();if(A?.active){let T=A,_=i.get(T);_.observers.add(b),m.signal&&(m.signal.aborted?_.observers.delete(b):m.signal.addEventListener("abort",()=>{let N=i.get(T);N?.active&&(N.observers.delete(b),N.observers.size==0&&u(T,m.signal.reason))}));return}let S=new y(b);if(q.weakSubscriber=new yp(S),"signal"in m&&(m.signal.aborted?u(S,m.signal.reason):m.signal.addEventListener("abort",()=>{let T=i.get(S);T?.active&&(T.observers.delete(b),T.observers.size==0&&u(S,m.signal.reason))})),q.subscribeCallback)try{q.subscribeCallback(S)}catch(T){S.error(T)}}class y{get[Symbol.toStringTag](){return"Subscriber"}constructor(f=null){if(!(f instanceof p))throw new TypeError("Illegal constructor");i.set(this,{active:!0,observers:new Set([f]),teardowns:[],subscriptionController:new Oe})}next(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let m=i.get(this);if(!m?.active||Wt()&&!ht(document))return;let b=new Set(m.observers);for(let q of b)q.next(f)}error(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let m=i.get(this);if(!m?.active){eo(f);return}if(Wt()&&!ht(document))return;u(this,f);let b=new Set(m.observers);for(let q of b)q.error(f)}complete(){if(!(this instanceof y))throw new TypeError("illegal invocation");let f=i.get(this);if(!f?.active||Wt()&&!ht(document))return;u(this);let m=new Set(f.observers);for(let b of m)b.complete()}addTeardown(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");if(Wt()&&!ht(document))return;let m=i.get(this);m?.active?m.teardowns.push(f):f()}get active(){if(!(this instanceof y))throw new TypeError("illegal invocation");return!!i.get(this)?.active}get signal(){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!i.has(this)){let f=new Oe;return f.abort(),f.signal}return i.get(this).subscriptionController.signal}}s(y.prototype,"next"),s(y.prototype,"error"),s(y.prototype,"complete"),s(y.prototype,"addTeardown"),s(y.prototype,"active"),s(y.prototype,"signal");class v{get[Symbol.toStringTag](){return"Observable"}constructor(f){if(!f)throw new TypeError("1 argument required but 0 present");i.set(this,{weakSubscriber:null,subscribeCallback:f})}static from(f){if(f===null||typeof f!="object")throw new TypeError("Observable.from only accepts objects");if(f instanceof v)return f;if(typeof(Symbol.asyncIterator in f&&f[Symbol.asyncIterator])=="function"){let A=function(S,T){if(S.signal.aborted)return;let _;try{let N=T.next();_=Promise.resolve(N)}catch(N){_=Promise.reject(N)}_.then(N=>{if(N===null||typeof N!="object"){S.error(new TypeError("Not an IteratorResult."));return}try{({done:q}=N)}catch(z){S.error(z);return}if(q){S.complete();return}let H;try{H=N.value}catch(z){S.error(z);return}S.next(H),A(S,T)},N=>{S.error(N)})},q=!1;return new v(S=>{if(S.signal.aborted)return;let T;try{T=a(f,!0)}catch(N){S.error(N);return}let _=T;S.signal.aborted||(S.signal.addEventListener("abort",()=>{if(typeof _.return!="function"||q)return;r(()=>_.return(S.signal.reason)).then(H=>{if(H===null||typeof H!="object")throw new TypeError("Iterator .return() must return an Object")})}),A(S,_))})}if(typeof(Symbol.iterator in f&&f[Symbol.iterator])=="function")return new v(q=>{if(q.signal.aborted)return;let A;try{A=a(f,!1)}catch(_){q.error(_);return}let S=!1,T=A;if(!q.signal.aborted)for(q.signal.addEventListener("abort",()=>{if(typeof T.return!="function"||S)return;let _=T.return();if(_===null||typeof _!="object")throw new TypeError("Iterator .return() must return an Object")});;)try{let _=T.next();if({done:S}=_,S){q.complete();return}if(q.next(_.value),q.signal.aborted)break}catch(_){q.error(_);break}});if(f instanceof Promise||typeof f.then=="function")return new v(q=>{f.then(A=>{q.next(A),q.complete()},A=>{q.error(A)})});throw new TypeError("Could not convert value to Observable")}subscribe(f=null,m={}){if(!(this instanceof v))throw new TypeError("illegal invocation");h(this,f,m)}takeUntil(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this,b=v.from(f);return new v(q=>{let A=new p({next(){q.complete()},error(){q.complete()}}),S={signal:q.signal};if(h(b,A,S),!q.active)return;let T=new p({next(_){q.next(_)},error(_){q.error(_)},complete(){q.complete()}});h(m,T,S)})}map(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let m=this;return new v(b=>{let q=0,A=new p({next(T){let _;try{_=f(T,q)}catch(N){b.error(N);return}q+=1,b.next(_)},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}inspect(f={}){let m=null,b=null,q=null,A=null,S=null;typeof f=="function"?b=f:f&&typeof f=="object"&&("subscribe"in f&&(m=f.subscribe),"next"in f&&(b=f.next),"error"in f&&(q=f.error),"complete"in f&&(A=f.complete),"abort"in f&&(S=f.abort));let T=this;return new v(_=>{if(m!==null)try{m()}catch(F){_.error(F);return}let N=()=>{try{S!==null&&S(_.signal.reason)}catch(F){eo(F)}};_.signal.addEventListener("abort",N,{once:!0});let H=new p({next(F){if(b!==null)try{b(F)}catch(le){_.signal.removeEventListener("abort",N),_.error(le);return}_.next(F)},error(F){if(_.signal.removeEventListener("abort",N),q!==null)try{q(F)}catch(le){_.error(le);return}_.error(F)},complete(){if(_.signal.removeEventListener("abort",N),A!==null)try{A()}catch(F){_.error(F);return}_.complete()}}),z={signal:_.signal};h(T,H,z)})}filter(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let m=this;return new v(b=>{let q=0,A=new p({next(T){let _=!1;try{_=f(T,q)}catch(N){b.error(N);return}q+=1,_&&b.next(T)},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}take(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this;return new v(b=>{let q=f;if(q==0)return b.complete();let A=new p({next(T){b.next(T),q-=1,q==0&&b.complete()},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}drop(f){if(!(this instanceof v))throw new TypeError("illegal invocation");let m=this;return new v(b=>{let q=f,A=new p({next(T){if(q>0)return q-=1;q==0&&b.next(T)},error(T){b.error(T)},complete(){b.complete()}}),S={signal:b.signal};h(m,A,S)})}flatMap(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let m=this;return new v(b=>{let q=0,A=!1,S=[];function T(z){let F;try{F=f(z,q)}catch(He){return b.error(He)}q+=1;let le;try{le=v.from(F)}catch(He){return b.error(He)}let Mo=new p({next(He){b.next(He)},error(He){b.error(He)},complete(){if(S.length){let He=S.shift();T(He)}else _=!1,A&&b.complete()}}),Re={signal:b.signal};h(le,Mo,Re)}let _=!1,N=new p({next(z){_?S.push(z):(_=!0,T(z))},error(z){b.error(z)},complete(){A=!0,!_&&!S.length&&b.complete()}}),H={signal:b.signal};h(m,N,H)})}switchMap(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let m=this;return new v(b=>{let q=0,A=!1,S=null;function T(H){let z;try{z=f(H,q)}catch(Re){return b.error(Re)}q+=1;let F;try{F=v.from(z)}catch(Re){return b.error(Re)}let le=new p({next(Re){b.next(Re)},error(Re){b.error(Re)},complete(Re){A?b.complete():S=null}}),Mo={signal:c([S.signal,b.signal])};h(F,le,Mo)}let _=new p({next(H){S&&S.abort(),S=new Oe,T(H)},error(H){b.error(H)},complete(){A=!0,S||b.complete()}}),N={signal:b.signal};h(m,_,N)})}catch(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let m=this;return new v(q=>{let A=new p({next(T){q.next(T)},error(T){let _;try{_=f(T)}catch(F){q.error(F);return}let N;try{N=v.from(_)}catch(F){q.error(F);return}let H=new p({next(F){q.next(F)},error(F){q.error(F)},complete(){q.complete()}}),z={signal:q.signal};h(N,H,z)},complete(){q.complete()}}),S={signal:q.signal};h(m,A,S)})}finally(f){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let m=this;return new v(b=>{b.addTeardown(f);let q=new p({next(S){b.next(S)},error(S){b.error(S)},complete(){b.complete()}}),A={signal:b.signal};h(m,q,A)})}toArray(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:b,reject:q}=e();if(f.signal){if(f.signal.aborted)return Promise.reject(f.signal.reason);f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let A=[],S=new p({next(T){A.push(T)},error(T){q(T)},complete(){b(A)}});return h(this,S,f),m}forEach(f,m={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){try{f(H,_)}catch(z){A(z),S.abort(z)}_+=1},error(H){A(H)},complete(){q()}});return h(this,N,T),b}every(f,m={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z||(q(!1),S.abort())},error(H){A(H)},complete(){q(!0)}});return h(this,N,T),b}first(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:b,reject:q}=e(),A=new Oe,S={signal:c([A.signal,f.signal])};if(S.signal.aborted)return q(S.signal.reason),m;S.signal.addEventListener("abort",()=>{q(S.signal.reason)});let T=new p({next(_){b(_),A.abort()},error(_){q(_)},complete(){q(new RangeError("No values in Observable"))}});return h(this,T,S),m}last(f={}){if(!(this instanceof v))throw new TypeError("illegal invocation");let{promise:m,resolve:b,reject:q}=e();if(f.signal){if(f.signal.aborted)return q(f.signal.reason),m;f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let A=null,S=!1,T=new p({next(_){S=!0,A=_},error(_){q(_)},complete(){S?b(A):q(new RangeError("No values in Observable"))}});return h(this,T,f),m}find(f,m={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z&&(q(H),S.abort())},error(H){A(H)},complete(){q()}});return h(this,N,T),b}some(f,m={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:b,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,m.signal])};if(T.signal.aborted)return A(T.signal.reason),b;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z&&(q(!0),S.abort())},error(H){A(H)},complete(){q(!1)}});return h(this,N,T),b}reduce(f,m,b={}){if(!(this instanceof v))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:q,resolve:A,reject:S}=e(),T=new Oe,_={signal:c([T.signal,b.signal])};if(_.signal.aborted)return S(_.signal.reason),q;_.signal.addEventListener("abort",()=>{S(_.signal.reason)},{once:!0});let N=0,H=arguments.length>1?m:xs,z=new p({next(F){if(H===xs){H=F,N++;return}try{let le=f(H,F,N);N++,H=le}catch(le){S(le),T.abort(le);return}},error(F){S(F)},complete(){H!==xs?A(H):S(new TypeError("no initial value provided and no values emitted"))}});return h(this,z,_),q}}return s(v.prototype,"subscribe"),[v,y]})();function Dc(){return typeof globalThis.Observable=="function"}function Nc(){Object.defineProperties(globalThis,{Observable:{value:Vc,configurable:!0,writable:!0},Subscriber:{value:xp,configurable:!0,writable:!0}}),EventTarget.prototype.when=function(s,r={}){if(Wt()&&!ht(document))return;let e=this;return new Vc(t=>{if(!e||t.signal.aborted)return;let i=n=>{t.next(n)};e.addEventListener(s,i,{capture:r.capture||!1,passive:r.passive,once:!1,signal:t.signal})})}}function qs(s,r,e){let t=s.filter(i=>!i.hasAttribute("disabled"));for(let i of t){let n=i.getBoundingClientRect();if(r>=n.left&&r<=n.right&&e>=n.top&&e<=n.bottom)return i}return null}function Oc(s,r,e,t){if(!t)return null;let i=s.filter(o=>!o.hasAttribute("disabled")),n=t.getBoundingClientRect();for(let o of i){let a=o.getBoundingClientRect();if(!(n.right<a.left||n.left>a.right||n.bottom<a.top||n.top>a.bottom))return o}return null}function Hc(s,r,e,t){let i=s.filter(c=>!c.hasAttribute("disabled"));if(i.length===0)return null;let n,o;if(t){let c=t.getBoundingClientRect();n=c.left+c.width/2,o=c.top+c.height/2}else n=r,o=e;let a=null,l=1/0;for(let c of i){let p=c.getBoundingClientRect(),u=p.left+p.width/2,h=p.top+p.height/2,y=Math.sqrt(Math.pow(n-u,2)+Math.pow(o-h,2));y<l&&(l=y,a=c)}return a}function Fc(s,r,e,t){let i=s.filter(l=>!l.hasAttribute("disabled"));if(i.length===0)return null;let n;if(t){let l=t.getBoundingClientRect();n=[{x:l.left,y:l.top},{x:l.right,y:l.top},{x:l.left,y:l.bottom},{x:l.right,y:l.bottom}]}else n=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let o=null,a=1/0;for(let l of i){let c=l.getBoundingClientRect(),p=[{x:c.left,y:c.top},{x:c.right,y:c.top},{x:c.left,y:c.bottom},{x:c.right,y:c.bottom}],u=0,h=0;for(let v of n)for(let w of p){let f=Math.sqrt(Math.pow(v.x-w.x,2)+Math.pow(v.y-w.y,2));u+=f,h++}let y=u/h;y<a&&(a=y,o=l)}return o}function qp(s,r,e,t,i){let n=i&&i.length>0?s.filter(m=>i.includes(m)):s.filter(m=>m.tagName==="SLOT"&&m.hasAttribute("part")&&m.getAttribute("part")?.includes("drags")),a=s.filter(m=>!n.includes(m));if(n.length===0&&a.length===0)return null;let l;if(t){let m=t.getBoundingClientRect();l=[{x:m.left,y:m.top},{x:m.right,y:m.top},{x:m.left,y:m.bottom},{x:m.right,y:m.bottom}]}else l=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let c=m=>{let b=m.getBoundingClientRect(),q=[{x:b.left,y:b.top},{x:b.right,y:b.top},{x:b.left,y:b.bottom},{x:b.right,y:b.bottom}],A=0,S=0;for(let T of l)for(let _ of q){let N=Math.sqrt(Math.pow(T.x-_.x,2)+Math.pow(T.y-_.y,2));A+=N,S++}return A/S},p=null,u=1/0;for(let m of n){let b=c(m);b<u&&(u=b,p=m)}let h=null,y=1/0;for(let m of a){let b=c(m);b<y&&(y=b,h=m)}if(p&&t){let m=t.getBoundingClientRect(),b=p.getBoundingClientRect(),q=m.left+m.width/2,A=m.top+m.height/2;if(q>=b.left&&q<=b.right&&A>=b.top&&A<=b.bottom)return p}let w=t?.getAttribute("data-drag-origin")==="droppable"?.85:1.5;return p&&h?u<=y*w?p:h:p||h}function Uc(s){switch(s){case"pointerWithin":return qs;case"rectangleIntersection":return Oc;case"closestCenter":return Hc;case"closestCorners":return Fc;case"closestCornersWithInventoryPriority":return qp;default:return qs}}function Tr(s,r,e,t,i="pointerWithin",n){return Uc(i)(s,r,e,t,n)}function ft(s,r){let e=s.composedPath?s.composedPath():[s.target];for(let t of e)if(t instanceof HTMLElement&&t.tagName!=="SLOT"){if(t.matches(r)||t.hasAttribute("qti-draggable"))return t;let i=t.closest(r)||t.closest('[qti-draggable="true"]');if(i)return i}return null}function to(s,r){let e=[];return s.forEach(t=>{let i=[];t.tagName.toLowerCase()==="slot"?i=t.assignedElements({flatten:!0}).filter(a=>a.getAttribute("identifier")===r):i=Array.from(t.querySelectorAll(`[identifier="${r}"]`)),e.push(...i)}),e}function Bc(s,r){let e=s.find(i=>i.getAttribute("identifier")===r);if(!e)return 1;let t=e.getAttribute("match-max");return t?parseInt(t,10)||0:1}function zc(s,r){let e=parseInt(s.getAttribute("match-max")||"1",10),t=Number.isNaN(e)?1:e;if(t===0)return!1;let i=s.querySelectorAll(r),n=s.querySelectorAll('[qti-draggable="true"]');return Math.max(i.length,n.length)>=t}function Hi(s,r){return s.reduce((e,t)=>{let i=t.querySelectorAll(r).length,n=t.querySelectorAll('[qti-draggable="true"]').length;return e+Math.max(i,n)},0)}function ro(s,r){return s.map(e=>{let i=Array.from(e.querySelectorAll(r)).map(o=>o.getAttribute("identifier")).filter(o=>!!o),n=e.getAttribute("identifier");return i.map(o=>`${o} ${n}`)}).flat()}function jc(s,r,e,t=typeof window<"u"?window:null){if(!s.length||!r.length||!t)return;let i=0,n=0;s.forEach(c=>{let p=c.getBoundingClientRect();i=Math.max(i,p.height),n=Math.max(n,p.width)});let o=r[0].parentElement,a=r[0].tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE",l=r[0].tagName==="QTI-GAP";if(a&&o){let c;if(o.clientWidth>0){let p=t.getComputedStyle(o),u=parseFloat(p.paddingLeft),h=parseFloat(p.paddingRight);c=o.clientWidth-u-h}else c=Math.min(t.innerWidth*.8,600);o.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${c}px, ${n}px + 2 * var(--qti-dropzone-padding, 0.5rem))), 1fr))`}r.forEach(c=>{c.style.minHeight=`${i}px`,(a||l)&&(c.style.minWidth=`${n}px`);let p=c.shadowRoot?.querySelector('slot[part="dropslot"]');p&&(p.style.minHeight=`${i}px`)}),e.forEach(c=>{c.style.minHeight=`${i}px`})}Dc()||Nc();var Wc=new WeakSet;function wp(s){!s||Wc.has(s)||(s.addEventListener("touchmove",()=>{},{capture:!1,passive:!1}),Wc.add(s))}var io=(s,r,e,t='slot[part="drags"]',i="pointerWithin")=>{class n extends s{constructor(){super(...arguments);this.trackedDraggables=[];this.trackedDroppables=[];this.trackedDragContainers=[];this.allDropzones=[];this.collisionDetectionAlgorithm=i;this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null};this.subscriptions=[];this.dragSubscriptions=[];this.lastPointerDownAt=0;this.lastTouchStartAt=0}connectedCallback(){super.connectedCallback(),wp(this.ownerDocument?.defaultView),this.setupDragDrop()}disconnectedCallback(){super.disconnectedCallback(),this.cleanup()}async setupDragDrop(){await this.updateComplete,this.cacheInteractiveElements(),this.afterCache(),this.setupDragObservables()}afterCache(){}cacheInteractiveElements(){let l=(m,b)=>Array.from(b?.querySelectorAll(m)??[]),c=l(r,this),p=l(r,this.shadowRoot),u=l('[qti-draggable="true"]:not([data-drag-clone])',this),h=l('[qti-draggable="true"]:not([data-drag-clone])',this.shadowRoot);this.trackedDraggables=Array.from(new Set([...c,...p,...u,...h]));let y=l(e,this),v=l(e,this.shadowRoot);this.trackedDroppables=Array.from(new Set([...y,...v]));let w=l(t,this),f=l(t,this.shadowRoot);this.trackedDragContainers=Array.from(new Set([...w,...f])),this.allDropzones=[...this.trackedDroppables,...this.trackedDragContainers],this.trackedDraggables.forEach(m=>{m.style.cursor="grab",m.style.userSelect="none",m.style.touchAction="none",m.style.webkitUserSelect="none",m.style.webkitTouchCallout="none",m.setAttribute("qti-draggable","true"),m.setAttribute("tabindex","0")})}setupDragObservables(){let l=this.shadowRoot;if(!l){console.error("\u274C [Observable DnD] No shadow root found!");return}let c=l.when("pointerdown").filter(v=>{if(!v.isTrusted)return!1;let w=ft(v,r),f=this.disabled||this.readonly,m=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",b=Date.now()-this.lastTouchStartAt<50;return w&&v.isPrimary!==!1&&v.button===0&&!f&&!m&&!b}).subscribe(v=>{this.lastPointerDownAt=Date.now();let w=ft(v,r);if(!w){console.warn("\u26A0\uFE0F [Observable DnD] No draggable target found");return}v.pointerType==="touch"&&(v.preventDefault(),v.stopPropagation());let f=v.isTrusted?v.pointerType==="touch"?100:10:0;if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),f===0){this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted);return}let m=()=>{this.dragState.activationTimeout&&(clearTimeout(this.dragState.activationTimeout),this.dragState.activationTimeout=void 0),document.removeEventListener("pointerup",m,!0),document.removeEventListener("pointercancel",m,!0)};document.addEventListener("pointerup",m,{once:!0,capture:!0}),document.addEventListener("pointercancel",m,{once:!0,capture:!0}),this.dragState.activationTimeout=window.setTimeout(()=>{this.dragState.activationTimeout=void 0,document.removeEventListener("pointerup",m,!0),document.removeEventListener("pointercancel",m,!0),this.dragState.dragging||this.initiateDrag(w,v.clientX,v.clientY,v.pointerType,"pointer",v.pointerId,v.isTrusted)},f)}),p=l.when("mousedown").filter(v=>{let w=ft(v,r),f=this.disabled||this.readonly,m=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",b=v.button===0,q=Date.now()-this.lastPointerDownAt<50;return w&&b&&!f&&!m&&!q}).subscribe(v=>{let w=ft(v,r);!w||this.dragState.dragging||(v.preventDefault(),this.initiateDrag(w,v.clientX,v.clientY,"mouse","mouse",void 0,v.isTrusted))}),u=l.when("touchstart").filter(v=>{let w=ft(v,r),f=this.disabled||this.readonly,m=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",b=!!(v.touches?.[0]||v.changedTouches?.[0]),q=Date.now()-this.lastPointerDownAt<50;return w&&b&&!f&&!m&&!q}).subscribe(v=>{let w=ft(v,r),f=v.touches?.[0]||v.changedTouches?.[0];!w||!f||this.dragState.dragging||(this.lastTouchStartAt=Date.now(),v.preventDefault(),v.stopPropagation(),this.initiateDrag(w,f.clientX,f.clientY,"touch","touch",void 0,v.isTrusted))}),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null},y=l.when("keydown").subscribe(v=>{let w=this.trackedDraggables.filter(m=>m.style.opacity!=="0"),f=[...this.trackedDroppables,...this.trackedDragContainers];if(h.dragging)switch(v.code){case"ArrowRight":case"ArrowDown":{v.preventDefault();let m=(h.dropIndex+1)%f.length;h={...h,dropIndex:m,dropElement:f[m]};break}case"ArrowLeft":case"ArrowUp":{v.preventDefault();let m=(h.dropIndex-1+f.length)%f.length;h={...h,dropIndex:m,dropElement:f[m]};break}case"Space":case"Enter":case"Tab":{v.preventDefault(),h.dragElement&&h.dropElement&&(this.allowDrop(h.dragElement,h.dropElement)||this.trackedDragContainers.includes(h.dropElement)?this.handleDrop(h.dragElement,h.dropElement):this.handleInvalidDrop(h.dragElement)),this.trackedDraggables.forEach(m=>m.removeAttribute("data-keyboard-dragging")),this.saveResponse(),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}case"Escape":{v.preventDefault(),this.trackedDraggables.forEach(m=>m.removeAttribute("data-keyboard-dragging")),h={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}}else{let m=ft(v,r),b=this.disabled||this.readonly,q=m?.hasAttribute("disabled")||m?.getAttribute("aria-disabled")==="true";m&&["Space","Enter"].includes(v.code)&&!b&&!q&&(v.preventDefault(),m.setAttribute("data-keyboard-dragging","true"),h={dragging:!0,dragElement:m,dragIndex:w.indexOf(m),dropIndex:0,dropElement:f[0]})}this.allDropzones.forEach(m=>m.removeAttribute("hover")),h.dragging&&h.dropElement&&(h.dropElement.setAttribute("hover",""),h.dropElement.hasAttribute("tabindex")&&h.dropElement.getAttribute("tabindex")!=="-1"&&h.dropElement.focus())});this.subscriptions.push(c,p,u,y)}initiateDrag(l,c,p,u,h="pointer",y,v){if(this.dragState.dragging){console.warn("\u26A0\uFE0F [Observable DnD] Already dragging, ignoring initiateDrag");return}if(l.hasAttribute("data-drag-clone")){console.warn("\u26A0\uFE0F [Observable DnD] Attempted to drag visual clone, ignoring");return}let w=this.trackedDroppables.some(b=>b.contains(l)),f=this.trackedDroppables.find(b=>b.contains(l))||null,m=l.getBoundingClientRect();this.dragState={dragging:!0,dragSource:l,dragClone:this.createDragClone(l,m),startOffset:{x:c-m.left,y:p-m.top},currentTarget:null,sourceDroppable:f,inputType:u,pointerId:y,startedFromTrustedEvent:v,initialCoordinates:{x:c,y:p}},w?(this.dragState.dragClone?.setAttribute("data-drag-origin","droppable"),l.remove(),this.cacheInteractiveElements(),f&&f.setAttribute("data-drag-source","true")):(this.dragState.dragClone?.setAttribute("data-drag-origin","inventory"),l.style.opacity="0",l.style.pointerEvents="none"),this.updateClonePosition(c,p),this.activateAllDroppables(),this.setupMoveObservables(u,h)}setupMoveObservables(l,c="pointer"){if(l==="touch"){if(c==="pointer")try{let A=this.dragState.dragSource,S=this.dragState.pointerId;A&&S!==void 0&&A.setPointerCapture&&A.setPointerCapture(S)}catch{}let b=A=>{A.cancelable&&(A.preventDefault(),c==="pointer"&&A.stopPropagation())};document.addEventListener("touchmove",b,{passive:!1,capture:!0}),document.addEventListener("touchstart",b,{passive:!1,capture:!0}),document.addEventListener("touchend",b,{passive:!1,capture:!0}),document.addEventListener("gesturestart",b,{passive:!1}),document.addEventListener("gesturechange",b,{passive:!1}),document.addEventListener("gestureend",b,{passive:!1});let q=()=>{if(document.removeEventListener("touchmove",b,{capture:!0}),document.removeEventListener("touchstart",b,{capture:!0}),document.removeEventListener("touchend",b,{capture:!0}),document.removeEventListener("gesturestart",b),document.removeEventListener("gesturechange",b),document.removeEventListener("gestureend",b),c==="pointer")try{let A=this.dragState.dragSource,S=this.dragState.pointerId;A&&S!==void 0&&A.releasePointerCapture&&A.releasePointerCapture(S)}catch{}};this.dragState.touchCleanup=q}let p=c==="mouse"?"mousemove":c==="touch"?"touchmove":"pointermove",u=c==="mouse"?"mouseup":c==="touch"?"touchend":"pointerup",h=b=>{let q=this.dragState.startedFromTrustedEvent;return q===void 0||b.isTrusted===q},y=document.when(p).takeUntil(document.when(u)).subscribe({next:b=>{if(h(b)){if(b.preventDefault(),b.stopPropagation(),c==="touch"){let q=b.touches?.[0]||b.changedTouches?.[0];if(!q)return;this.handleDragMove(q.clientX,q.clientY);return}if(c==="mouse"){let q=b;if(typeof q.buttons=="number"&&(q.buttons&1)!==1)return}this.handleDragMove(b.clientX,b.clientY)}}}),v=document.when(u).subscribe({next:b=>{h(b)&&(b.preventDefault(),b.stopPropagation(),this.handleDragEnd())}}),w=c==="touch"?document.when("touchcancel").subscribe({next:b=>{h(b)&&this.handleDragEnd()}}):c==="mouse"?null:document.when("pointercancel").subscribe({next:b=>{h(b)&&this.handleDragEnd()}}),f=document.when("keydown").filter(b=>b.key==="Escape").subscribe({next:b=>{h(b)&&this.handleDragEnd()}}),m=[y,v,f];w&&m.push(w),this.dragSubscriptions.push(...m)}handleDragMove(l,c){if(!this.dragState.dragging||!this.dragState.dragClone)return;this.updateClonePosition(l,c);let p=Tr(this.allDropzones,l,c,this.dragState.dragClone,this.collisionDetectionAlgorithm,this.trackedDragContainers),u=Date.now(),h=u-(this.dragState.lastTargetChangeTime||0);p!==this.dragState.currentTarget&&(p===null||h>=50)&&(this.allDropzones.forEach(v=>v.removeAttribute("hover")),p&&p.setAttribute("hover",""),this.dragState.currentTarget=p,this.dragState.lastTargetChangeTime=u)}handleDragEnd(){if(!this.dragState.dragging)return;let{dragSource:l,dragClone:c,currentTarget:p,sourceDroppable:u}=this.dragState,h=p;if(!h&&c){let f=c.getBoundingClientRect(),m=this.dragState.initialCoordinates?.x??f.left+f.width/2,b=this.dragState.initialCoordinates?.y??f.top+f.height/2;h=Tr(this.allDropzones,m,b,c,this.collisionDetectionAlgorithm,this.trackedDragContainers)}let y=h?.hasAttribute("disabled")&&h.hasAttribute("data-drag-source");!!l&&!!h&&this.allowDrop(l,h)&&(!h.hasAttribute("disabled")||y)&&l&&h?this.handleDrop(l,h):this.handleInvalidDrop(l),c&&c.remove(),this.dragState.touchCleanup&&this.dragState.touchCleanup(),this.resetDragState(),this.deactivateAllDroppables(),this.saveResponse(),u&&u.removeAttribute("data-drag-source"),this.cacheInteractiveElements();let w=this.checkAllMaxAssociations;typeof w=="function"&&w.call(this)}allowDrop(l,c){return this.trackedDroppables.includes(c)||this.trackedDragContainers.includes(c)}handleInvalidDrop(l){l&&(l.style.opacity="1.0",l.style.pointerEvents="auto")}createDragClone(l,c){let p=l.cloneNode(!0),u=window.getComputedStyle(l);for(let h=0;h<u.length;h++){let y=u[h];p.style.setProperty(y,u.getPropertyValue(y))}return p.style.position="fixed",p.style.width=`${c.width}px`,p.style.height=`${c.height}px`,p.style.zIndex="9999",p.style.pointerEvents="none",p.style.touchAction="none",p.style.userSelect="none",p.style.opacity="0.8",p.removeAttribute("qti-draggable"),p.removeAttribute("tabindex"),p.setAttribute("data-drag-clone","true"),document.body.appendChild(p),p}updateClonePosition(l,c){if(!this.dragState.dragClone)return;let{startOffset:p}=this.dragState,u=l-p.x,h=c-p.y;this.dragState.dragClone.style.left=`${u}px`,this.dragState.dragClone.style.top=`${h}px`}activateAllDroppables(){this.setInternalsState("--dragzone-enabled",!0),this.setInternalsState("--dragzone-active",!0),this.allDropzones.forEach(l=>{l.setAttribute("enabled",""),l.setAttribute("active","")})}deactivateAllDroppables(){this.setInternalsState("--dragzone-enabled",!1),this.setInternalsState("--dragzone-active",!1),this.allDropzones.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active"),l.removeAttribute("hover")})}resetDragState(){if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),this.dragState.touchCleanup)try{this.dragState.touchCleanup()}catch(l){console.warn("\u26A0\uFE0F [Observable DnD] Error during touch cleanup:",l)}this.dragSubscriptions.forEach(l=>{try{l&&typeof l.unsubscribe=="function"&&l.unsubscribe()}catch(c){console.warn("\u26A0\uFE0F [Observable DnD] Error unsubscribing:",c)}}),this.dragSubscriptions=[],this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null,pointerId:void 0,startedFromTrustedEvent:void 0,touchCleanup:void 0}}setInternalsState(l,c){let p=this._internals;p?.states&&(c?p.states.add(l):p.states.delete(l))}cleanup(){this.subscriptions.forEach(l=>{try{l.unsubscribe()}catch{}}),this.subscriptions=[],this.dragState.dragClone&&this.dragState.dragClone.remove(),this.resetDragState()}}return n};var Gc={duration:250,easing:"ease",fill:"both"};function ws(s){let r=s.getBoundingClientRect();return{left:r.left,top:r.top,width:r.width,height:r.height}}function gt(s){let r=new Map;return s.forEach(e=>{r.set(e,ws(e))}),r}function Xc(s,r){return{deltaX:s.left-r.left,deltaY:s.top-r.top,deltaW:s.width/r.width,deltaH:s.height/r.height}}function Qc(s,r,e={}){let t=ws(s),{deltaX:i,deltaY:n,deltaW:o,deltaH:a}=Xc(r,t);if(i===0&&n===0&&o===1&&a===1)return null;let{duration:l,easing:c,fill:p}={...Gc,...e};return s.animate([{transformOrigin:"top left",transform:`translate(${i}px, ${n}px) scale(${o}, ${a})`},{transformOrigin:"top left",transform:"none"}],{duration:l,easing:c,fill:p})}function bt(s,r={}){let e=new Map;return s.forEach((t,i)=>{if(!(i instanceof HTMLElement))return;let n=Qc(i,t,r);n&&e.set(i,n)}),e}var Ae=(s,r,e,t='slot[part="drags"]',i="closestCornersWithInventoryPriority")=>{let n=io(s,r,e,t,i);class o extends n{constructor(){super(...arguments);this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this._maxAssociations=0;this._maxAssociationsDefaultApplied=!1;this._response=[];this._dropBlockedDueToMax=!1;this.flipAnimationConfig={duration:200,easing:"ease"};this._enableFlipAnimations=!0;this.autoSizeDropzones=!1}get maxAssociations(){if(!this._maxAssociationsDefaultApplied){this._maxAssociationsDefaultApplied=!0;let c=this.tagName?.toLowerCase()||"";(c==="qti-graphic-gap-match-interaction"||c==="qti-gap-match-interaction")&&!this.hasAttribute("max-associations")&&this._maxAssociations===0&&(this._maxAssociations=1)}return this._maxAssociations}set maxAssociations(c){let p=this._maxAssociations;this._maxAssociations=c,this.requestUpdate("maxAssociations",p)}set disableAnimations(c){this._enableFlipAnimations=!c}get disableAnimations(){return!this._enableFlipAnimations}get enableFlipAnimations(){return this._enableFlipAnimations}get response(){let c=this.getResponse,p=typeof c=="function"?c.call(this):void 0;return(Array.isArray(p)?p:(this.cacheInteractiveElements(),ro(this.trackedDroppables,r))).join(",")}set response(c){if(Array.isArray(c)){let p=this.getValue,u=typeof p=="function"?p.call(this,c):c,h=Array.isArray(u)?u:typeof u=="string"&&u.length>0?[u]:[];this.reset(!1),h.forEach(w=>this.placeResponse(w));let y=this.getResponse,v=typeof y=="function"?y.call(this):void 0;this._response=Array.isArray(v)?v:(this.cacheInteractiveElements(),ro(this.trackedDroppables,r))}else this._response=typeof c=="string"&&c.length>0?[c]:[];this._internals.setFormValue(JSON.stringify(this._response))}afterCache(){this.applyConfiguredChoicesContainerWidth(),this.updateMinDimensionsForDropZones()}applyConfiguredChoicesContainerWidth(){let c=this.dataset.choicesContainerWidth;c&&this.trackedDroppables.forEach(p=>{p.style.width=`${c}px`,p.style.boxSizing="border-box"})}shouldTreatBlockedMaxAsInvalid(){return!0}shouldReturnToInventoryOnInventoryDrop(){return!1}getFirstMessageAttribute(c){for(let u of c){let h=this.getAttribute(u);if(h&&h.trim().length>0)return h}let p=c.map(u=>u.toLowerCase());for(let u of Array.from(this.attributes))if(p.includes(u.name.toLowerCase())&&u.value.trim().length>0)return u.value;return null}allowDrop(c,p){if(this.trackedDragContainers.includes(p))return!0;let u=this.trackedDroppables.includes(p),h=p.hasAttribute("disabled"),y=p.hasAttribute("data-drag-source");return u&&(!h||y)}handleDrop(c,p){let u=this.dragState.dragClone?.getBoundingClientRect();this.dropDraggableInDroppable(c,p,u);let h=c.getAttribute("identifier");h&&this.updateInventoryBasedOnMatchMax(h);let y=Hi(this.trackedDroppables,r);this.maxAssociations>0&&y>this.maxAssociations&&(this._dropBlockedDueToMax=!0,this.validate(),this.reportValidity())}handleInvalidDrop(c){let p=this.dragState.sourceDroppable,u=this.dragState.currentTarget,h=!u,y=this.trackedDragContainers[0]||null;if(!c)return;p&&h&&y&&this.configuration.dragCanBePlacedBack!==!1?this.dropDraggableInDroppable(c,y):p&&this.trackedDroppables.includes(p)?this.dropDraggableInDroppable(c,p):c.style.opacity==="0"&&(this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations());let v=Hi(this.trackedDroppables,r),w=this.maxAssociations>0&&v>=this.maxAssociations,f=!!u&&u.hasAttribute("disabled")&&!u.hasAttribute("data-drag-source");this._dropBlockedDueToMax=f&&w,this.validate(),this.reportValidity()}updateMinDimensionsForDropZones(){this.trackedDraggables.length!==0&&jc(this.trackedDraggables,this.trackedDroppables,this.trackedDragContainers)}restoreInventoryItem(c){c.style.opacity="1.0",c.style.display="",c.style.position="",c.style.pointerEvents="auto"}placeResponse(c){let[p,...u]=c.split(" ").reverse(),h=this.trackedDroppables.find(y=>y.getAttribute("identifier")===p);h&&u.forEach(y=>{if(!y)return;let w=to(this.trackedDragContainers,y).at(0)||this.trackedDraggables.find(f=>f.getAttribute("identifier")===y);w&&this.dropDraggableInDroppable(w,h)})}dropDraggableInDroppable(c,p,u){if(this.trackedDragContainers.includes(p)){if(!this.dragState.sourceDroppable){if(this.shouldReturnToInventoryOnInventoryDrop()){this.returnToInventory(c),this._dropBlockedDueToMax=!1,this.validate();return}this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let A=c.getAttribute("identifier");c.remove(),A&&this.restoreOriginalInInventory(A),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let y=parseInt(p.getAttribute("match-max")||"1",10),v=Number.isNaN(y)?1:y,w=v===0||v>1,f=Array.from(p.querySelectorAll('[qti-draggable="true"]')),m=this.enableFlipAnimations&&f.length>0?gt(f):null;if(!w){let A=p.querySelector(r)||p.querySelector('[qti-draggable="true"]');if(A){let S=A.getAttribute("identifier");A.remove(),S&&this.restoreOriginalInInventory(S)}}let b=c.cloneNode(!0);b.removeAttribute("style"),b.removeAttribute("data-keyboard-dragging"),b.setAttribute("qti-draggable","true"),b.setAttribute("tabindex","0"),p.tagName==="SLOT"?b.setAttribute("slot",p.getAttribute("name")||""):p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"?(b.setAttribute("slot","qti-simple-associable-choice"),p.appendChild(b),p.setAttribute("data-has-drop","true")):p.appendChild(b),m&&this.enableFlipAnimations&&bt(m,this.flipAnimationConfig),u&&this.enableFlipAnimations&&requestAnimationFrame(()=>{let A=b.getBoundingClientRect(),S=u.left-A.left,T=u.top-A.top;(S!==0||T!==0)&&b.animate([{transform:`translate(${S}px, ${T}px)`,opacity:.8},{transform:"translate(0, 0)",opacity:1}],{duration:this.flipAnimationConfig.duration||200,easing:this.flipAnimationConfig.easing||"ease",fill:"both"})});let q=c.getAttribute("identifier");q&&this.updateInventoryBasedOnMatchMax(q),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}returnToInventory(c){let p=c.getAttribute("identifier");p&&(this.trackedDroppables.forEach(u=>{Array.from(u.querySelectorAll(`[identifier="${p}"][qti-draggable="true"]`)).forEach(y=>{y.remove(),u.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&u.removeAttribute("data-has-drop")})}),this.restoreOriginalInInventory(p)),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}restoreOriginalInInventory(c){let p=to(this.trackedDragContainers,c),u=[];this.trackedDragContainers.forEach(y=>{u.push(...Array.from(y.querySelectorAll('[qti-draggable="true"]')))});let h=this.enableFlipAnimations&&u.length>0?gt(u):null;p.forEach(y=>{y.style.opacity="1.0",y.style.pointerEvents="auto",y.style.display="",y.style.visibility="visible",y.style.setProperty("opacity","1.0","important"),y.style.setProperty("pointer-events","auto","important")}),h&&this.enableFlipAnimations&&bt(h,this.flipAnimationConfig)}updateInventoryBasedOnMatchMax(c){let p=to(this.trackedDragContainers,c),u=Bc(this.trackedDraggables,c),h=this.trackedDroppables.reduce((y,v)=>{let w=v.querySelectorAll(`[identifier="${c}"]`);return y+w.length},0);p.forEach(y=>{u!==0&&h>=u?(y.style.opacity="0.0",y.style.pointerEvents="none"):(y.style.opacity="1.0",y.style.pointerEvents="auto")})}checkAllMaxAssociations(){let c=Hi(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations;this.trackedDroppables.forEach(u=>{let h=u.hasAttribute("data-drag-source"),y=zc(u,r);(p||y)&&!h?u.setAttribute("disabled",""):u.removeAttribute("disabled")})}saveResponse(c){let p=this.getResponse,u=c??(typeof p=="function"?p.call(this):void 0),h=Array.isArray(u)?u:typeof u=="string"?[u]:(this.cacheInteractiveElements(),ro(this.trackedDroppables,r));this._response=h,this._internals.setFormValue(JSON.stringify(this._response)),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:h}})),this.requestUpdate()}reset(c=!0){this.trackedDroppables.forEach(p=>{Array.from(p.querySelectorAll(r)).forEach(h=>h.remove()),p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&p.removeAttribute("data-has-drop")}),this.trackedDraggables.forEach(p=>{let u=p.getAttribute("identifier");u&&this.restoreOriginalInInventory(u)}),this.resetDragState(),this.cacheInteractiveElements(),this._response=[],this._internals.setFormValue(JSON.stringify(this._response)),c&&this.saveResponse()}validate(){let c=Hi(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations,u=this.maxAssociations>0&&c>this.maxAssociations,h=this.minAssociations>0&&c<this.minAssociations,y="",v=!0;u?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,v=!1):p&&this._dropBlockedDueToMax&&this.shouldTreatBlockedMaxAsInvalid()?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,v=!1):h?(y=this.getFirstMessageAttribute(["data-min-associations-message","data-min-selections-message"])||this.dataset.minAssociationsMessage||this.dataset.minSelectionsMessage||`Please select at least ${this.minAssociations} ${this.minAssociations===1?"association":"associations"}.`,v=!1,this._dropBlockedDueToMax=!1):this._dropBlockedDueToMax=!1;let w=this.trackedDroppables[0]??this.trackedDraggables[0]??this;return this._internals.setValidity(v?{}:{customError:!0},y,w),v}reportValidity(){let c=this._internals.reportValidity(),p=this.shadowRoot?.querySelector("#validation-message");return p&&(c?(p.textContent="",p.style.display="none"):(p.textContent=this._internals.validationMessage,p.style.setProperty("display","block","important"))),c}}return d([g({attribute:!1,type:Object})],o.prototype,"configuration",2),d([g({type:Number,reflect:!0,attribute:"min-associations"})],o.prototype,"minAssociations",2),d([g({type:Number,reflect:!0,attribute:"max-associations"})],o.prototype,"maxAssociations",1),d([g({type:Boolean,attribute:"disable-animations"})],o.prototype,"disableAnimations",1),d([g({type:Boolean,attribute:"auto-size-dropzones"})],o.prototype,"autoSizeDropzones",2),o};var no=class{getInsertPosition(r,e,t,i,n){let o=r.indexOf(t);if(o===-1)return null;let a=t.getBoundingClientRect(),l=(n-a.top)/a.height,p=Math.min(1,Math.max(0,l))>.5;return{index:o,placeAfter:p}}};var Yc=new no;var Ep={borderStyle:"2px dashed",borderColor:"var(--qti-drop-placeholder, #c1c1c1)",background:"transparent",transitionDuration:150};function Fi(){return{placeholder:null,lastHoverTarget:null,lastPlacement:null,sortContainer:null}}function oo(s){s.placeholder?.remove(),s.placeholder=null,s.lastHoverTarget=null,s.lastPlacement=null,s.sortContainer=null}function so(s,r,e={}){let t={...Ep,...e},i=document.createElement("div");return i.setAttribute("data-drop-placeholder","true"),i.style.width=`${r.width}px`,i.style.height=`${r.height}px`,i.style.margin=window.getComputedStyle(s).margin,i.style.boxSizing="border-box",i.style.border=`${t.borderStyle} ${t.borderColor}`,i.style.borderRadius=getComputedStyle(s).borderRadius,i.style.background=t.background,i.style.transition=`transform ${t.transitionDuration}ms ease`,i.style.pointerEvents="none",i}function Es(s,r){for(let e of r)if(e.contains(s)&&e!==s)return e;return null}var Te=(s,r='[qti-draggable="true"]')=>{class e extends s{constructor(){super(...arguments);this.#e=null;this.#t=Fi();this.#r={hoveredSlot:null,originalPositions:new Map};this.#i=new Set;this.allowReorder=!0;this.sortablePlaceholderConfig={};this.sortableAnimationConfig={duration:150,easing:"ease"}}#e;#t;#r;#i;get isDraggingFromSlot(){return this.#e!==null}findContainingDroppable(n){return Es(n,this.trackedDroppables)}#n(n){return n.querySelector(r)}#o(n){let o=this.#s(n);return o===0||o>1}#s(n){let o=parseInt(n.getAttribute("match-max")||"1",10);return Number.isNaN(o)?1:o}#a(n){return n.querySelectorAll(r).length}#c(n){let o=this.#s(n);return o===0?!1:this.#a(n)>=o}#d(){this.#r={hoveredSlot:null,originalPositions:new Map}}#l(n){if(!this.#e||n===this.#e){this.#u();return}if(this.#r.hoveredSlot===n)return;this.#u();let o=this.#n(n);if(!o){this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n;return}if(this.#o(n)){if(this.#c(n)){this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),this.#r.hoveredSlot=null;return}this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n;return}let l=gt([o]);this.#r.originalPositions.set(o,n),this.#t.placeholder&&this.#t.placeholder.parentElement&&this.#t.placeholder.remove(),this.#e.appendChild(o),this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n,bt(l,this.sortableAnimationConfig)}#u(){if(this.#r.originalPositions.size===0&&this.#r.hoveredSlot===null)return;let n=Array.from(this.#r.originalPositions.keys()),o=n.length>0?gt(n):null;for(let[a,l]of this.#r.originalPositions)l.appendChild(a);this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),o&&bt(o,this.sortableAnimationConfig),this.#r.originalPositions.clear(),this.#r.hoveredSlot=null}initiateDrag(n,o,a,l,...c){this.#e=null,this.#t=Fi(),this.#d();let p=this.findContainingDroppable(n);if(p&&this.allowReorder){this.#e=p,this.#t.sortContainer=p;let h=n.getBoundingClientRect();this.#t.placeholder=so(n,h,this.sortablePlaceholderConfig);let y=n.getAttribute("slot");y&&this.#t.placeholder.setAttribute("slot",y),this.#t.placeholder.style.visibility="hidden",p.appendChild(this.#t.placeholder),this.trackedDroppables.forEach(v=>{if(v!==p&&v.hasAttribute("disabled")){if(this.#o(v)&&this.#c(v))return;v.removeAttribute("disabled"),this.#i.add(v)}})}let[u]=c;super.initiateDrag(n,o,a,l,u)}cleanupSortableState(n=!0){if(n)for(let[o,a]of this.#r.originalPositions)a.appendChild(o);this.#t.placeholder&&this.#t.placeholder.remove(),oo(this.#t),this.#i.clear(),this.#e=null,this.#d()}onSortableDragMove(n,o){if(!this.isDraggingFromSlot)return;let a=Tr(this.trackedDroppables,n,o,this.dragState.dragClone,this.collisionDetectionAlgorithm);a?this.#l(a):this.#u()}handleDragMove(n,o){Object.getPrototypeOf(e.prototype).handleDragMove?.call(this,n,o),this.onSortableDragMove(n,o)}allowDrop(n,o){return this.isDraggingFromSlot&&this.trackedDroppables.includes(o)?this.#o(o)?!this.#c(o):!0:this.isDraggingFromSlot&&this.trackedDragContainers.includes(o)?!0:super.allowDrop(n,o)}handleDrop(n,o){super.handleDrop(n,o),this.cleanupSortableState(!1)}handleInvalidDrop(n){this.cleanupSortableState(),super.handleInvalidDrop(n)}}return e};var Jc=C`
|
|
4033
|
+
<slot part="slot"></slot>`}};d([g({type:String,attribute:"template-identifier"})],mt.prototype,"templateIdentifier",2),d([g({type:String,attribute:"show-hide"})],mt.prototype,"showHide",2),d([g({type:Boolean,converter:{fromAttribute:e=>e==="true",toAttribute:e=>String(e)}})],mt.prototype,"fixed",2),d([g({type:String,attribute:!1})],mt.prototype,"marker",2);customElements.define("qti-simple-choice",mt);var{AbortController:Oe,AbortSignal:ys,WeakMap:vp,WeakRef:yp,Window:Pc,reportError:eo=console.log}=globalThis,ht=s=>s&&s.defaultView!==null&&s.defaultView.document===s&&(s.defaultView.top===s.defaultView||ht(s.defaultView.parent.document)),Wt=()=>!!Pc&&globalThis instanceof Pc,xs=Symbol("unset"),[Vc,xp]=(()=>{function s(w,f,h=!0){Object.defineProperty(w,f,{...Object.getOwnPropertyDescriptor(w,f),enumerable:h})}let r="try"in Promise?Promise.try.bind(Promise):(w,...f)=>new Promise(h=>h(w(...f))),e="withResolvers"in Promise?Promise.withResolvers.bind(Promise):()=>{let w,f;return{promise:new Promise((v,q)=>(w=v,f=q)),resolve:w,reject:f}};function t(w,f){let h=f.call(w);if(h===null||typeof h!="object")throw new TypeError("Iterator is not an object");return h}let i=new vp,n={next(...w){let f=this,h=i.get(f);if(!h?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.next called on invalid object");let{syncIteratorRecord:v}=h;return r(()=>v.next(...w))},return(...w){let f=this,h=i.get(f);if(!h?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.return called on invalid object");let{syncIteratorRecord:v}=h;return r(()=>v.return?v.return(...w):{value:void 0,done:!0})},throw(...w){let f=this,h=i.get(f);if(!h?.syncIteratorRecord)throw new TypeError("AsyncFromSyncIteratorPrototype.throw called on invalid object");let{syncIteratorRecord:v}=h;return r(()=>{if(!v.throw)throw v.return(),new TypeError("no throw method");return v.throw(...w)})}};function o(w){let f=Object.create(n);return i.set(f,{syncIteratorRecord:w}),f}function a(w,f){let h;if(f){if(h=w[Symbol.asyncIterator],h==null){if(h=w[Symbol.iterator],h==null)throw new TypeError("Object is not async iterable");let v=t(w,h);return o(v)}}else h=w[Symbol.iterator];if(h==null)throw new TypeError("Object is not iterable");return t(w,h)}let l="any"in ys?ys.any.bind(ys):w=>{let f=new Oe;for(let h of w)if(h.aborted)return f.abort(h.reason),f.signal;for(let h of w)h.addEventListener("abort",()=>{f.abort(h.reason)},{signal:f.signal});return f.signal},c=w=>l(w.filter(Boolean));class p{constructor({next:f,error:h,complete:v}={}){i.set(this,{next:f,error:h,complete:v})}next(f){let{next:h}=i.get(this)||{};h&&h(f)}error(f){let{error:h}=i.get(this)||{};h?h(f):eo(f)}complete(){let{complete:f}=i.get(this)||{};f&&f()}}function u(w,f){let h=i.get(w);if(h?.active){h.active=!1,h.subscriptionController.abort(f);for(let v of h.teardowns.reverse()){if(Wt()&&!ht(document))return;try{v()}catch(q){eo(q)}}}}function m(w,f,h={}){if(Wt()&&!ht(document))return;let v;typeof f=="function"?v=new p({next:f}):f&&!(f instanceof p)?v=new p(f):v=f||new p;let q=i.get(w),A=q.weakSubscriber?.deref();if(A?.active){let T=A,_=i.get(T);_.observers.add(v),h.signal&&(h.signal.aborted?_.observers.delete(v):h.signal.addEventListener("abort",()=>{let N=i.get(T);N?.active&&(N.observers.delete(v),N.observers.size==0&&u(T,h.signal.reason))}));return}let S=new y(v);if(q.weakSubscriber=new yp(S),"signal"in h&&(h.signal.aborted?u(S,h.signal.reason):h.signal.addEventListener("abort",()=>{let T=i.get(S);T?.active&&(T.observers.delete(v),T.observers.size==0&&u(S,h.signal.reason))})),q.subscribeCallback)try{q.subscribeCallback(S)}catch(T){S.error(T)}}class y{get[Symbol.toStringTag](){return"Subscriber"}constructor(f=null){if(!(f instanceof p))throw new TypeError("Illegal constructor");i.set(this,{active:!0,observers:new Set([f]),teardowns:[],subscriptionController:new Oe})}next(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let h=i.get(this);if(!h?.active||Wt()&&!ht(document))return;let v=new Set(h.observers);for(let q of v)q.next(f)}error(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!arguments.length)throw new TypeError("too few arguments");let h=i.get(this);if(!h?.active){eo(f);return}if(Wt()&&!ht(document))return;u(this,f);let v=new Set(h.observers);for(let q of v)q.error(f)}complete(){if(!(this instanceof y))throw new TypeError("illegal invocation");let f=i.get(this);if(!f?.active||Wt()&&!ht(document))return;u(this);let h=new Set(f.observers);for(let v of h)v.complete()}addTeardown(f){if(!(this instanceof y))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");if(Wt()&&!ht(document))return;let h=i.get(this);h?.active?h.teardowns.push(f):f()}get active(){if(!(this instanceof y))throw new TypeError("illegal invocation");return!!i.get(this)?.active}get signal(){if(!(this instanceof y))throw new TypeError("illegal invocation");if(!i.has(this)){let f=new Oe;return f.abort(),f.signal}return i.get(this).subscriptionController.signal}}s(y.prototype,"next"),s(y.prototype,"error"),s(y.prototype,"complete"),s(y.prototype,"addTeardown"),s(y.prototype,"active"),s(y.prototype,"signal");class b{get[Symbol.toStringTag](){return"Observable"}constructor(f){if(!f)throw new TypeError("1 argument required but 0 present");i.set(this,{weakSubscriber:null,subscribeCallback:f})}static from(f){if(f===null||typeof f!="object")throw new TypeError("Observable.from only accepts objects");if(f instanceof b)return f;if(typeof(Symbol.asyncIterator in f&&f[Symbol.asyncIterator])=="function"){let A=function(S,T){if(S.signal.aborted)return;let _;try{let N=T.next();_=Promise.resolve(N)}catch(N){_=Promise.reject(N)}_.then(N=>{if(N===null||typeof N!="object"){S.error(new TypeError("Not an IteratorResult."));return}try{({done:q}=N)}catch(z){S.error(z);return}if(q){S.complete();return}let H;try{H=N.value}catch(z){S.error(z);return}S.next(H),A(S,T)},N=>{S.error(N)})},q=!1;return new b(S=>{if(S.signal.aborted)return;let T;try{T=a(f,!0)}catch(N){S.error(N);return}let _=T;S.signal.aborted||(S.signal.addEventListener("abort",()=>{if(typeof _.return!="function"||q)return;r(()=>_.return(S.signal.reason)).then(H=>{if(H===null||typeof H!="object")throw new TypeError("Iterator .return() must return an Object")})}),A(S,_))})}if(typeof(Symbol.iterator in f&&f[Symbol.iterator])=="function")return new b(q=>{if(q.signal.aborted)return;let A;try{A=a(f,!1)}catch(_){q.error(_);return}let S=!1,T=A;if(!q.signal.aborted)for(q.signal.addEventListener("abort",()=>{if(typeof T.return!="function"||S)return;let _=T.return();if(_===null||typeof _!="object")throw new TypeError("Iterator .return() must return an Object")});;)try{let _=T.next();if({done:S}=_,S){q.complete();return}if(q.next(_.value),q.signal.aborted)break}catch(_){q.error(_);break}});if(f instanceof Promise||typeof f.then=="function")return new b(q=>{f.then(A=>{q.next(A),q.complete()},A=>{q.error(A)})});throw new TypeError("Could not convert value to Observable")}subscribe(f=null,h={}){if(!(this instanceof b))throw new TypeError("illegal invocation");m(this,f,h)}takeUntil(f){if(!(this instanceof b))throw new TypeError("illegal invocation");let h=this,v=b.from(f);return new b(q=>{let A=new p({next(){q.complete()},error(){q.complete()}}),S={signal:q.signal};if(m(v,A,S),!q.active)return;let T=new p({next(_){q.next(_)},error(_){q.error(_)},complete(){q.complete()}});m(h,T,S)})}map(f){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let h=this;return new b(v=>{let q=0,A=new p({next(T){let _;try{_=f(T,q)}catch(N){v.error(N);return}q+=1,v.next(_)},error(T){v.error(T)},complete(){v.complete()}}),S={signal:v.signal};m(h,A,S)})}inspect(f={}){let h=null,v=null,q=null,A=null,S=null;typeof f=="function"?v=f:f&&typeof f=="object"&&("subscribe"in f&&(h=f.subscribe),"next"in f&&(v=f.next),"error"in f&&(q=f.error),"complete"in f&&(A=f.complete),"abort"in f&&(S=f.abort));let T=this;return new b(_=>{if(h!==null)try{h()}catch(F){_.error(F);return}let N=()=>{try{S!==null&&S(_.signal.reason)}catch(F){eo(F)}};_.signal.addEventListener("abort",N,{once:!0});let H=new p({next(F){if(v!==null)try{v(F)}catch(le){_.signal.removeEventListener("abort",N),_.error(le);return}_.next(F)},error(F){if(_.signal.removeEventListener("abort",N),q!==null)try{q(F)}catch(le){_.error(le);return}_.error(F)},complete(){if(_.signal.removeEventListener("abort",N),A!==null)try{A()}catch(F){_.error(F);return}_.complete()}}),z={signal:_.signal};m(T,H,z)})}filter(f){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let h=this;return new b(v=>{let q=0,A=new p({next(T){let _=!1;try{_=f(T,q)}catch(N){v.error(N);return}q+=1,_&&v.next(T)},error(T){v.error(T)},complete(){v.complete()}}),S={signal:v.signal};m(h,A,S)})}take(f){if(!(this instanceof b))throw new TypeError("illegal invocation");let h=this;return new b(v=>{let q=f;if(q==0)return v.complete();let A=new p({next(T){v.next(T),q-=1,q==0&&v.complete()},error(T){v.error(T)},complete(){v.complete()}}),S={signal:v.signal};m(h,A,S)})}drop(f){if(!(this instanceof b))throw new TypeError("illegal invocation");let h=this;return new b(v=>{let q=f,A=new p({next(T){if(q>0)return q-=1;q==0&&v.next(T)},error(T){v.error(T)},complete(){v.complete()}}),S={signal:v.signal};m(h,A,S)})}flatMap(f){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let h=this;return new b(v=>{let q=0,A=!1,S=[];function T(z){let F;try{F=f(z,q)}catch(He){return v.error(He)}q+=1;let le;try{le=b.from(F)}catch(He){return v.error(He)}let Mo=new p({next(He){v.next(He)},error(He){v.error(He)},complete(){if(S.length){let He=S.shift();T(He)}else _=!1,A&&v.complete()}}),Re={signal:v.signal};m(le,Mo,Re)}let _=!1,N=new p({next(z){_?S.push(z):(_=!0,T(z))},error(z){v.error(z)},complete(){A=!0,!_&&!S.length&&v.complete()}}),H={signal:v.signal};m(h,N,H)})}switchMap(f){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let h=this;return new b(v=>{let q=0,A=!1,S=null;function T(H){let z;try{z=f(H,q)}catch(Re){return v.error(Re)}q+=1;let F;try{F=b.from(z)}catch(Re){return v.error(Re)}let le=new p({next(Re){v.next(Re)},error(Re){v.error(Re)},complete(Re){A?v.complete():S=null}}),Mo={signal:c([S.signal,v.signal])};m(F,le,Mo)}let _=new p({next(H){S&&S.abort(),S=new Oe,T(H)},error(H){v.error(H)},complete(){A=!0,S||v.complete()}}),N={signal:v.signal};m(h,_,N)})}catch(f){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let h=this;return new b(q=>{let A=new p({next(T){q.next(T)},error(T){let _;try{_=f(T)}catch(F){q.error(F);return}let N;try{N=b.from(_)}catch(F){q.error(F);return}let H=new p({next(F){q.next(F)},error(F){q.error(F)},complete(){q.complete()}}),z={signal:q.signal};m(N,H,z)},complete(){q.complete()}}),S={signal:q.signal};m(h,A,S)})}finally(f){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let h=this;return new b(v=>{v.addTeardown(f);let q=new p({next(S){v.next(S)},error(S){v.error(S)},complete(){v.complete()}}),A={signal:v.signal};m(h,q,A)})}toArray(f={}){if(!(this instanceof b))throw new TypeError("illegal invocation");let{promise:h,resolve:v,reject:q}=e();if(f.signal){if(f.signal.aborted)return Promise.reject(f.signal.reason);f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let A=[],S=new p({next(T){A.push(T)},error(T){q(T)},complete(){v(A)}});return m(this,S,f),h}forEach(f,h={}){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:v,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,h.signal])};if(T.signal.aborted)return A(T.signal.reason),v;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){try{f(H,_)}catch(z){A(z),S.abort(z)}_+=1},error(H){A(H)},complete(){q()}});return m(this,N,T),v}every(f,h={}){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:v,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,h.signal])};if(T.signal.aborted)return A(T.signal.reason),v;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z||(q(!1),S.abort())},error(H){A(H)},complete(){q(!0)}});return m(this,N,T),v}first(f={}){if(!(this instanceof b))throw new TypeError("illegal invocation");let{promise:h,resolve:v,reject:q}=e(),A=new Oe,S={signal:c([A.signal,f.signal])};if(S.signal.aborted)return q(S.signal.reason),h;S.signal.addEventListener("abort",()=>{q(S.signal.reason)});let T=new p({next(_){v(_),A.abort()},error(_){q(_)},complete(){q(new RangeError("No values in Observable"))}});return m(this,T,S),h}last(f={}){if(!(this instanceof b))throw new TypeError("illegal invocation");let{promise:h,resolve:v,reject:q}=e();if(f.signal){if(f.signal.aborted)return q(f.signal.reason),h;f.signal.addEventListener("abort",()=>{q(f.signal.reason)})}let A=null,S=!1,T=new p({next(_){S=!0,A=_},error(_){q(_)},complete(){S?v(A):q(new RangeError("No values in Observable"))}});return m(this,T,f),h}find(f,h={}){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:v,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,h.signal])};if(T.signal.aborted)return A(T.signal.reason),v;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z&&(q(H),S.abort())},error(H){A(H)},complete(){q()}});return m(this,N,T),v}some(f,h={}){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:v,resolve:q,reject:A}=e(),S=new Oe,T={signal:c([S.signal,h.signal])};if(T.signal.aborted)return A(T.signal.reason),v;T.signal.addEventListener("abort",()=>{A(T.signal.reason)});let _=0,N=new p({next(H){let z=!1;try{z=f(H,_)}catch(F){A(F),S.abort(F)}_+=1,z&&(q(!0),S.abort())},error(H){A(H)},complete(){q(!1)}});return m(this,N,T),v}reduce(f,h,v={}){if(!(this instanceof b))throw new TypeError("illegal invocation");if(typeof f!="function")throw new TypeError("Parameter 1 is not of type 'Function'");let{promise:q,resolve:A,reject:S}=e(),T=new Oe,_={signal:c([T.signal,v.signal])};if(_.signal.aborted)return S(_.signal.reason),q;_.signal.addEventListener("abort",()=>{S(_.signal.reason)},{once:!0});let N=0,H=arguments.length>1?h:xs,z=new p({next(F){if(H===xs){H=F,N++;return}try{let le=f(H,F,N);N++,H=le}catch(le){S(le),T.abort(le);return}},error(F){S(F)},complete(){H!==xs?A(H):S(new TypeError("no initial value provided and no values emitted"))}});return m(this,z,_),q}}return s(b.prototype,"subscribe"),[b,y]})();function Dc(){return typeof globalThis.Observable=="function"}function Nc(){Object.defineProperties(globalThis,{Observable:{value:Vc,configurable:!0,writable:!0},Subscriber:{value:xp,configurable:!0,writable:!0}}),EventTarget.prototype.when=function(s,r={}){if(Wt()&&!ht(document))return;let e=this;return new Vc(t=>{if(!e||t.signal.aborted)return;let i=n=>{t.next(n)};e.addEventListener(s,i,{capture:r.capture||!1,passive:r.passive,once:!1,signal:t.signal})})}}function qs(s,r,e){let t=s.filter(i=>!i.hasAttribute("disabled"));for(let i of t){let n=i.getBoundingClientRect();if(r>=n.left&&r<=n.right&&e>=n.top&&e<=n.bottom)return i}return null}function Oc(s,r,e,t){if(!t)return null;let i=s.filter(o=>!o.hasAttribute("disabled")),n=t.getBoundingClientRect();for(let o of i){let a=o.getBoundingClientRect();if(!(n.right<a.left||n.left>a.right||n.bottom<a.top||n.top>a.bottom))return o}return null}function Hc(s,r,e,t){let i=s.filter(c=>!c.hasAttribute("disabled"));if(i.length===0)return null;let n,o;if(t){let c=t.getBoundingClientRect();n=c.left+c.width/2,o=c.top+c.height/2}else n=r,o=e;let a=null,l=1/0;for(let c of i){let p=c.getBoundingClientRect(),u=p.left+p.width/2,m=p.top+p.height/2,y=Math.sqrt(Math.pow(n-u,2)+Math.pow(o-m,2));y<l&&(l=y,a=c)}return a}function Fc(s,r,e,t){let i=s.filter(l=>!l.hasAttribute("disabled"));if(i.length===0)return null;let n;if(t){let l=t.getBoundingClientRect();n=[{x:l.left,y:l.top},{x:l.right,y:l.top},{x:l.left,y:l.bottom},{x:l.right,y:l.bottom}]}else n=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let o=null,a=1/0;for(let l of i){let c=l.getBoundingClientRect(),p=[{x:c.left,y:c.top},{x:c.right,y:c.top},{x:c.left,y:c.bottom},{x:c.right,y:c.bottom}],u=0,m=0;for(let b of n)for(let w of p){let f=Math.sqrt(Math.pow(b.x-w.x,2)+Math.pow(b.y-w.y,2));u+=f,m++}let y=u/m;y<a&&(a=y,o=l)}return o}function qp(s,r,e,t,i){let n=i&&i.length>0?s.filter(h=>i.includes(h)):s.filter(h=>h.tagName==="SLOT"&&h.hasAttribute("part")&&h.getAttribute("part")?.includes("drags")),a=s.filter(h=>!n.includes(h));if(n.length===0&&a.length===0)return null;let l;if(t){let h=t.getBoundingClientRect();l=[{x:h.left,y:h.top},{x:h.right,y:h.top},{x:h.left,y:h.bottom},{x:h.right,y:h.bottom}]}else l=[{x:r,y:e},{x:r,y:e},{x:r,y:e},{x:r,y:e}];let c=h=>{let v=h.getBoundingClientRect(),q=[{x:v.left,y:v.top},{x:v.right,y:v.top},{x:v.left,y:v.bottom},{x:v.right,y:v.bottom}],A=0,S=0;for(let T of l)for(let _ of q){let N=Math.sqrt(Math.pow(T.x-_.x,2)+Math.pow(T.y-_.y,2));A+=N,S++}return A/S},p=null,u=1/0;for(let h of n){let v=c(h);v<u&&(u=v,p=h)}let m=null,y=1/0;for(let h of a){let v=c(h);v<y&&(y=v,m=h)}if(p&&t){let h=t.getBoundingClientRect(),v=p.getBoundingClientRect(),q=h.left+h.width/2,A=h.top+h.height/2;if(q>=v.left&&q<=v.right&&A>=v.top&&A<=v.bottom)return p}let w=t?.getAttribute("data-drag-origin")==="droppable"?.85:1.5;return p&&m?u<=y*w?p:m:p||m}function Uc(s){switch(s){case"pointerWithin":return qs;case"rectangleIntersection":return Oc;case"closestCenter":return Hc;case"closestCorners":return Fc;case"closestCornersWithInventoryPriority":return qp;default:return qs}}function Tr(s,r,e,t,i="pointerWithin",n){return Uc(i)(s,r,e,t,n)}function ft(s,r){let e=s.composedPath?s.composedPath():[s.target];for(let t of e)if(t instanceof HTMLElement&&t.tagName!=="SLOT"){if(t.matches(r)||t.hasAttribute("qti-draggable"))return t;let i=t.closest(r)||t.closest('[qti-draggable="true"]');if(i)return i}return null}function to(s,r){let e=[];return s.forEach(t=>{let i=[];t.tagName.toLowerCase()==="slot"?i=t.assignedElements({flatten:!0}).filter(a=>a.getAttribute("identifier")===r):i=Array.from(t.querySelectorAll(`[identifier="${r}"]`)),e.push(...i)}),e}function Bc(s,r){let e=s.find(i=>i.getAttribute("identifier")===r);if(!e)return 1;let t=e.getAttribute("match-max");return t?parseInt(t,10)||0:1}function zc(s,r){let e=parseInt(s.getAttribute("match-max")||"1",10),t=Number.isNaN(e)?1:e;if(t===0)return!1;let i=s.querySelectorAll(r),n=s.querySelectorAll('[qti-draggable="true"]');return Math.max(i.length,n.length)>=t}function Hi(s,r){return s.reduce((e,t)=>{let i=t.querySelectorAll(r).length,n=t.querySelectorAll('[qti-draggable="true"]').length;return e+Math.max(i,n)},0)}function ro(s,r){return s.map(e=>{let i=Array.from(e.querySelectorAll(r)).map(o=>o.getAttribute("identifier")).filter(o=>!!o),n=e.getAttribute("identifier");return i.map(o=>`${o} ${n}`)}).flat()}function jc(s,r,e,t=typeof window<"u"?window:null){if(!s.length||!r.length||!t)return;let i=0,n=0;s.forEach(c=>{let p=c.getBoundingClientRect();i=Math.max(i,p.height),n=Math.max(n,p.width)});let o=r[0].parentElement,a=r[0].tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE",l=r[0].tagName==="QTI-GAP";if(a&&o){let c;if(o.clientWidth>0){let p=t.getComputedStyle(o),u=parseFloat(p.paddingLeft),m=parseFloat(p.paddingRight);c=o.clientWidth-u-m}else c=Math.min(t.innerWidth*.8,600);o.style.gridTemplateColumns=`repeat(auto-fit, minmax(calc(min(${c}px, ${n}px + 2 * var(--qti-dropzone-padding, 0.5rem))), 1fr))`}r.forEach(c=>{c.style.minHeight=`${i}px`,(a||l)&&(c.style.minWidth=`${n}px`);let p=c.shadowRoot?.querySelector('slot[part="dropslot"]');p&&(p.style.minHeight=`${i}px`)}),e.forEach(c=>{c.style.minHeight=`${i}px`})}Dc()||Nc();var Wc=new WeakSet;function wp(s){!s||Wc.has(s)||(s.addEventListener("touchmove",()=>{},{capture:!1,passive:!1}),Wc.add(s))}var io=(s,r,e,t='slot[part="drags"]',i="pointerWithin")=>{class n extends s{constructor(){super(...arguments);this.trackedDraggables=[];this.trackedDroppables=[];this.trackedDragContainers=[];this.allDropzones=[];this.collisionDetectionAlgorithm=i;this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null};this.subscriptions=[];this.dragSubscriptions=[];this.lastPointerDownAt=0;this.lastTouchStartAt=0}connectedCallback(){super.connectedCallback(),wp(this.ownerDocument?.defaultView),this.setupDragDrop()}disconnectedCallback(){super.disconnectedCallback(),this.cleanup()}async setupDragDrop(){await this.updateComplete,this.cacheInteractiveElements(),this.afterCache(),this.setupDragObservables()}afterCache(){}cacheInteractiveElements(){let l=(h,v)=>Array.from(v?.querySelectorAll(h)??[]),c=l(r,this),p=l(r,this.shadowRoot),u=l('[qti-draggable="true"]:not([data-drag-clone])',this),m=l('[qti-draggable="true"]:not([data-drag-clone])',this.shadowRoot);this.trackedDraggables=Array.from(new Set([...c,...p,...u,...m]));let y=l(e,this),b=l(e,this.shadowRoot);this.trackedDroppables=Array.from(new Set([...y,...b]));let w=l(t,this),f=l(t,this.shadowRoot);this.trackedDragContainers=Array.from(new Set([...w,...f])),this.allDropzones=[...this.trackedDroppables,...this.trackedDragContainers],this.trackedDraggables.forEach(h=>{h.style.cursor="grab",h.style.userSelect="none",h.style.touchAction="none",h.style.webkitUserSelect="none",h.style.webkitTouchCallout="none",h.setAttribute("qti-draggable","true"),h.setAttribute("tabindex","0")})}setupDragObservables(){let l=this.shadowRoot;if(!l){console.error("\u274C [Observable DnD] No shadow root found!");return}let c=l.when("pointerdown").filter(b=>{if(!b.isTrusted)return!1;let w=ft(b,r),f=this.disabled||this.readonly,h=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",v=Date.now()-this.lastTouchStartAt<50;return w&&b.isPrimary!==!1&&b.button===0&&!f&&!h&&!v}).subscribe(b=>{this.lastPointerDownAt=Date.now();let w=ft(b,r);if(!w){console.warn("\u26A0\uFE0F [Observable DnD] No draggable target found");return}b.pointerType==="touch"&&(b.preventDefault(),b.stopPropagation());let f=b.isTrusted?b.pointerType==="touch"?100:10:0;if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),f===0){this.dragState.dragging||this.initiateDrag(w,b.clientX,b.clientY,b.pointerType,"pointer",b.pointerId,b.isTrusted);return}let h=()=>{this.dragState.activationTimeout&&(clearTimeout(this.dragState.activationTimeout),this.dragState.activationTimeout=void 0),document.removeEventListener("pointerup",h,!0),document.removeEventListener("pointercancel",h,!0)};document.addEventListener("pointerup",h,{once:!0,capture:!0}),document.addEventListener("pointercancel",h,{once:!0,capture:!0}),this.dragState.activationTimeout=window.setTimeout(()=>{this.dragState.activationTimeout=void 0,document.removeEventListener("pointerup",h,!0),document.removeEventListener("pointercancel",h,!0),this.dragState.dragging||this.initiateDrag(w,b.clientX,b.clientY,b.pointerType,"pointer",b.pointerId,b.isTrusted)},f)}),p=l.when("mousedown").filter(b=>{let w=ft(b,r),f=this.disabled||this.readonly,h=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",v=b.button===0,q=Date.now()-this.lastPointerDownAt<50;return w&&v&&!f&&!h&&!q}).subscribe(b=>{let w=ft(b,r);!w||this.dragState.dragging||(b.preventDefault(),this.initiateDrag(w,b.clientX,b.clientY,"mouse","mouse",void 0,b.isTrusted))}),u=l.when("touchstart").filter(b=>{let w=ft(b,r),f=this.disabled||this.readonly,h=w?.hasAttribute("disabled")||w?.getAttribute("aria-disabled")==="true",v=!!(b.touches?.[0]||b.changedTouches?.[0]),q=Date.now()-this.lastPointerDownAt<50;return w&&v&&!f&&!h&&!q}).subscribe(b=>{let w=ft(b,r),f=b.touches?.[0]||b.changedTouches?.[0];!w||!f||this.dragState.dragging||(this.lastTouchStartAt=Date.now(),b.preventDefault(),b.stopPropagation(),this.initiateDrag(w,f.clientX,f.clientY,"touch","touch",void 0,b.isTrusted))}),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null},y=l.when("keydown").subscribe(b=>{let w=this.trackedDraggables.filter(h=>h.style.opacity!=="0"),f=[...this.trackedDroppables,...this.trackedDragContainers];if(m.dragging)switch(b.code){case"ArrowRight":case"ArrowDown":{b.preventDefault();let h=(m.dropIndex+1)%f.length;m={...m,dropIndex:h,dropElement:f[h]};break}case"ArrowLeft":case"ArrowUp":{b.preventDefault();let h=(m.dropIndex-1+f.length)%f.length;m={...m,dropIndex:h,dropElement:f[h]};break}case"Space":case"Enter":case"Tab":{b.preventDefault(),m.dragElement&&m.dropElement&&(this.allowDrop(m.dragElement,m.dropElement)||this.trackedDragContainers.includes(m.dropElement)?this.handleDrop(m.dragElement,m.dropElement):this.handleInvalidDrop(m.dragElement)),this.trackedDraggables.forEach(h=>h.removeAttribute("data-keyboard-dragging")),this.saveResponse(),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}case"Escape":{b.preventDefault(),this.trackedDraggables.forEach(h=>h.removeAttribute("data-keyboard-dragging")),m={dragging:!1,dragElement:null,dragIndex:0,dropIndex:0,dropElement:null};break}}else{let h=ft(b,r),v=this.disabled||this.readonly,q=h?.hasAttribute("disabled")||h?.getAttribute("aria-disabled")==="true";h&&["Space","Enter"].includes(b.code)&&!v&&!q&&(b.preventDefault(),h.setAttribute("data-keyboard-dragging","true"),m={dragging:!0,dragElement:h,dragIndex:w.indexOf(h),dropIndex:0,dropElement:f[0]})}this.allDropzones.forEach(h=>h.removeAttribute("hover")),m.dragging&&m.dropElement&&(m.dropElement.setAttribute("hover",""),m.dropElement.hasAttribute("tabindex")&&m.dropElement.getAttribute("tabindex")!=="-1"&&m.dropElement.focus())});this.subscriptions.push(c,p,u,y)}initiateDrag(l,c,p,u,m="pointer",y,b){if(this.dragState.dragging){console.warn("\u26A0\uFE0F [Observable DnD] Already dragging, ignoring initiateDrag");return}if(l.hasAttribute("data-drag-clone")){console.warn("\u26A0\uFE0F [Observable DnD] Attempted to drag visual clone, ignoring");return}let w=this.trackedDroppables.some(v=>v.contains(l)),f=this.trackedDroppables.find(v=>v.contains(l))||null,h=l.getBoundingClientRect();this.dragState={dragging:!0,dragSource:l,dragClone:this.createDragClone(l,h),startOffset:{x:c-h.left,y:p-h.top},currentTarget:null,sourceDroppable:f,inputType:u,pointerId:y,startedFromTrustedEvent:b,initialCoordinates:{x:c,y:p}},w?(this.dragState.dragClone?.setAttribute("data-drag-origin","droppable"),l.remove(),this.cacheInteractiveElements(),f&&f.setAttribute("data-drag-source","true")):(this.dragState.dragClone?.setAttribute("data-drag-origin","inventory"),l.style.opacity="0",l.style.pointerEvents="none"),this.updateClonePosition(c,p),this.activateAllDroppables(),this.setupMoveObservables(u,m)}setupMoveObservables(l,c="pointer"){if(l==="touch"){if(c==="pointer")try{let A=this.dragState.dragSource,S=this.dragState.pointerId;A&&S!==void 0&&A.setPointerCapture&&A.setPointerCapture(S)}catch{}let v=A=>{A.cancelable&&(A.preventDefault(),c==="pointer"&&A.stopPropagation())};document.addEventListener("touchmove",v,{passive:!1,capture:!0}),document.addEventListener("touchstart",v,{passive:!1,capture:!0}),document.addEventListener("touchend",v,{passive:!1,capture:!0}),document.addEventListener("gesturestart",v,{passive:!1}),document.addEventListener("gesturechange",v,{passive:!1}),document.addEventListener("gestureend",v,{passive:!1});let q=()=>{if(document.removeEventListener("touchmove",v,{capture:!0}),document.removeEventListener("touchstart",v,{capture:!0}),document.removeEventListener("touchend",v,{capture:!0}),document.removeEventListener("gesturestart",v),document.removeEventListener("gesturechange",v),document.removeEventListener("gestureend",v),c==="pointer")try{let A=this.dragState.dragSource,S=this.dragState.pointerId;A&&S!==void 0&&A.releasePointerCapture&&A.releasePointerCapture(S)}catch{}};this.dragState.touchCleanup=q}let p=c==="mouse"?"mousemove":c==="touch"?"touchmove":"pointermove",u=c==="mouse"?"mouseup":c==="touch"?"touchend":"pointerup",m=v=>{let q=this.dragState.startedFromTrustedEvent;return q===void 0||v.isTrusted===q},y=document.when(p).takeUntil(document.when(u)).subscribe({next:v=>{if(m(v)){if(v.preventDefault(),v.stopPropagation(),c==="touch"){let q=v.touches?.[0]||v.changedTouches?.[0];if(!q)return;this.handleDragMove(q.clientX,q.clientY);return}if(c==="mouse"){let q=v;if(typeof q.buttons=="number"&&(q.buttons&1)!==1)return}this.handleDragMove(v.clientX,v.clientY)}}}),b=document.when(u).subscribe({next:v=>{m(v)&&(v.preventDefault(),v.stopPropagation(),this.handleDragEnd())}}),w=c==="touch"?document.when("touchcancel").subscribe({next:v=>{m(v)&&this.handleDragEnd()}}):c==="mouse"?null:document.when("pointercancel").subscribe({next:v=>{m(v)&&this.handleDragEnd()}}),f=document.when("keydown").filter(v=>v.key==="Escape").subscribe({next:v=>{m(v)&&this.handleDragEnd()}}),h=[y,b,f];w&&h.push(w),this.dragSubscriptions.push(...h)}handleDragMove(l,c){if(!this.dragState.dragging||!this.dragState.dragClone)return;this.updateClonePosition(l,c);let p=Tr(this.allDropzones,l,c,this.dragState.dragClone,this.collisionDetectionAlgorithm,this.trackedDragContainers),u=Date.now(),m=u-(this.dragState.lastTargetChangeTime||0);p!==this.dragState.currentTarget&&(p===null||m>=50)&&(this.allDropzones.forEach(b=>b.removeAttribute("hover")),p&&p.setAttribute("hover",""),this.dragState.currentTarget=p,this.dragState.lastTargetChangeTime=u)}handleDragEnd(){if(!this.dragState.dragging)return;let{dragSource:l,dragClone:c,currentTarget:p,sourceDroppable:u}=this.dragState,m=p;if(!m&&c){let f=c.getBoundingClientRect(),h=this.dragState.initialCoordinates?.x??f.left+f.width/2,v=this.dragState.initialCoordinates?.y??f.top+f.height/2;m=Tr(this.allDropzones,h,v,c,this.collisionDetectionAlgorithm,this.trackedDragContainers)}let y=m?.hasAttribute("disabled")&&m.hasAttribute("data-drag-source");!!l&&!!m&&this.allowDrop(l,m)&&(!m.hasAttribute("disabled")||y)&&l&&m?this.handleDrop(l,m):this.handleInvalidDrop(l),c&&c.remove(),this.dragState.touchCleanup&&this.dragState.touchCleanup(),this.resetDragState(),this.deactivateAllDroppables(),this.saveResponse(),u&&u.removeAttribute("data-drag-source"),this.cacheInteractiveElements();let w=this.checkAllMaxAssociations;typeof w=="function"&&w.call(this)}allowDrop(l,c){return this.trackedDroppables.includes(c)||this.trackedDragContainers.includes(c)}handleInvalidDrop(l){l&&(l.style.opacity="1.0",l.style.pointerEvents="auto")}createDragClone(l,c){let p=l.cloneNode(!0),u=window.getComputedStyle(l);for(let m=0;m<u.length;m++){let y=u[m];p.style.setProperty(y,u.getPropertyValue(y))}return p.style.position="fixed",p.style.width=`${c.width}px`,p.style.height=`${c.height}px`,p.style.zIndex="9999",p.style.pointerEvents="none",p.style.touchAction="none",p.style.userSelect="none",p.style.opacity="0.8",p.removeAttribute("qti-draggable"),p.removeAttribute("tabindex"),p.setAttribute("data-drag-clone","true"),document.body.appendChild(p),p}updateClonePosition(l,c){if(!this.dragState.dragClone)return;let{startOffset:p}=this.dragState,u=l-p.x,m=c-p.y;this.dragState.dragClone.style.left=`${u}px`,this.dragState.dragClone.style.top=`${m}px`}activateAllDroppables(){this.setInternalsState("--dragzone-enabled",!0),this.setInternalsState("--dragzone-active",!0),this.allDropzones.forEach(l=>{l.setAttribute("enabled",""),l.setAttribute("active","")})}deactivateAllDroppables(){this.setInternalsState("--dragzone-enabled",!1),this.setInternalsState("--dragzone-active",!1),this.allDropzones.forEach(l=>{l.removeAttribute("enabled"),l.removeAttribute("active"),l.removeAttribute("hover")})}resetDragState(){if(this.dragState.activationTimeout&&clearTimeout(this.dragState.activationTimeout),this.dragState.touchCleanup)try{this.dragState.touchCleanup()}catch(l){console.warn("\u26A0\uFE0F [Observable DnD] Error during touch cleanup:",l)}this.dragSubscriptions.forEach(l=>{try{l&&typeof l.unsubscribe=="function"&&l.unsubscribe()}catch(c){console.warn("\u26A0\uFE0F [Observable DnD] Error unsubscribing:",c)}}),this.dragSubscriptions=[],this.dragState={dragging:!1,dragSource:null,dragClone:null,startOffset:{x:0,y:0},currentTarget:null,sourceDroppable:null,inputType:null,pointerId:void 0,startedFromTrustedEvent:void 0,touchCleanup:void 0}}setInternalsState(l,c){let p=this._internals;p?.states&&(c?p.states.add(l):p.states.delete(l))}cleanup(){this.subscriptions.forEach(l=>{try{l.unsubscribe()}catch{}}),this.subscriptions=[],this.dragState.dragClone&&this.dragState.dragClone.remove(),this.resetDragState()}}return n};var Gc={duration:250,easing:"ease",fill:"both"};function ws(s){let r=s.getBoundingClientRect();return{left:r.left,top:r.top,width:r.width,height:r.height}}function gt(s){let r=new Map;return s.forEach(e=>{r.set(e,ws(e))}),r}function Xc(s,r){return{deltaX:s.left-r.left,deltaY:s.top-r.top,deltaW:s.width/r.width,deltaH:s.height/r.height}}function Qc(s,r,e={}){let t=ws(s),{deltaX:i,deltaY:n,deltaW:o,deltaH:a}=Xc(r,t);if(i===0&&n===0&&o===1&&a===1)return null;let{duration:l,easing:c,fill:p}={...Gc,...e};return s.animate([{transformOrigin:"top left",transform:`translate(${i}px, ${n}px) scale(${o}, ${a})`},{transformOrigin:"top left",transform:"none"}],{duration:l,easing:c,fill:p})}function bt(s,r={}){let e=new Map;return s.forEach((t,i)=>{if(!(i instanceof HTMLElement))return;let n=Qc(i,t,r);n&&e.set(i,n)}),e}var Ae=(s,r,e,t='slot[part="drags"]',i="closestCornersWithInventoryPriority")=>{let n=io(s,r,e,t,i);class o extends n{constructor(){super(...arguments);this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this._maxAssociations=0;this._maxAssociationsDefaultApplied=!1;this._response=[];this._dropBlockedDueToMax=!1;this.flipAnimationConfig={duration:200,easing:"ease"};this._enableFlipAnimations=!0;this.autoSizeDropzones=!1}get maxAssociations(){if(!this._maxAssociationsDefaultApplied){this._maxAssociationsDefaultApplied=!0;let c=this.tagName?.toLowerCase()||"";(c==="qti-graphic-gap-match-interaction"||c==="qti-gap-match-interaction")&&!this.hasAttribute("max-associations")&&this._maxAssociations===0&&(this._maxAssociations=1)}return this._maxAssociations}set maxAssociations(c){let p=this._maxAssociations;this._maxAssociations=c,this.requestUpdate("maxAssociations",p)}set disableAnimations(c){this._enableFlipAnimations=!c}get disableAnimations(){return!this._enableFlipAnimations}get enableFlipAnimations(){return this._enableFlipAnimations}get response(){let c=this.getResponse,p=typeof c=="function"?c.call(this):void 0;return(Array.isArray(p)?p:(this.cacheInteractiveElements(),ro(this.trackedDroppables,r))).join(",")}set response(c){if(Array.isArray(c)){let p=this.getValue,u=typeof p=="function"?p.call(this,c):c,m=Array.isArray(u)?u:typeof u=="string"&&u.length>0?[u]:[];this.reset(!1),m.forEach(w=>this.placeResponse(w));let y=this.getResponse,b=typeof y=="function"?y.call(this):void 0;this._response=Array.isArray(b)?b:(this.cacheInteractiveElements(),ro(this.trackedDroppables,r))}else this._response=typeof c=="string"&&c.length>0?[c]:[];this._internals.setFormValue(JSON.stringify(this._response))}afterCache(){this.applyConfiguredChoicesContainerWidth(),this.updateMinDimensionsForDropZones()}applyConfiguredChoicesContainerWidth(){let c=this.dataset.choicesContainerWidth;c&&this.trackedDroppables.forEach(p=>{p.style.width=`${c}px`,p.style.boxSizing="border-box"})}shouldTreatBlockedMaxAsInvalid(){return!0}shouldReturnToInventoryOnInventoryDrop(){return!1}getFirstMessageAttribute(c){for(let u of c){let m=this.getAttribute(u);if(m&&m.trim().length>0)return m}let p=c.map(u=>u.toLowerCase());for(let u of Array.from(this.attributes))if(p.includes(u.name.toLowerCase())&&u.value.trim().length>0)return u.value;return null}allowDrop(c,p){if(this.trackedDragContainers.includes(p))return!0;let u=this.trackedDroppables.includes(p),m=p.hasAttribute("disabled"),y=p.hasAttribute("data-drag-source");return u&&(!m||y)}handleDrop(c,p){let u=this.dragState.dragClone?.getBoundingClientRect();this.dropDraggableInDroppable(c,p,u);let m=c.getAttribute("identifier");m&&this.updateInventoryBasedOnMatchMax(m);let y=Hi(this.trackedDroppables,r);this.maxAssociations>0&&y>this.maxAssociations&&(this._dropBlockedDueToMax=!0,this.validate(),this.reportValidity())}handleInvalidDrop(c){let p=this.dragState.sourceDroppable,u=this.dragState.currentTarget,m=!u,y=this.trackedDragContainers[0]||null;if(!c)return;p&&m&&y&&this.configuration.dragCanBePlacedBack!==!1?this.dropDraggableInDroppable(c,y):p&&this.trackedDroppables.includes(p)?this.dropDraggableInDroppable(c,p):c.style.opacity==="0"&&(this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations());let b=Hi(this.trackedDroppables,r),w=this.maxAssociations>0&&b>=this.maxAssociations,f=!!u&&u.hasAttribute("disabled")&&!u.hasAttribute("data-drag-source");this._dropBlockedDueToMax=f&&w,this.validate(),this.reportValidity()}updateMinDimensionsForDropZones(){this.trackedDraggables.length!==0&&jc(this.trackedDraggables,this.trackedDroppables,this.trackedDragContainers)}restoreInventoryItem(c){c.style.opacity="1.0",c.style.display="",c.style.position="",c.style.pointerEvents="auto"}placeResponse(c){let[p,...u]=c.split(" ").reverse(),m=this.trackedDroppables.find(y=>y.getAttribute("identifier")===p);m&&u.forEach(y=>{if(!y)return;let w=to(this.trackedDragContainers,y).at(0)||this.trackedDraggables.find(f=>f.getAttribute("identifier")===y);w&&this.dropDraggableInDroppable(w,m)})}dropDraggableInDroppable(c,p,u){if(this.trackedDragContainers.includes(p)){if(!this.dragState.sourceDroppable){if(this.shouldReturnToInventoryOnInventoryDrop()){this.returnToInventory(c),this._dropBlockedDueToMax=!1,this.validate();return}this.restoreInventoryItem(c),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let A=c.getAttribute("identifier");c.remove(),A&&this.restoreOriginalInInventory(A),this.cacheInteractiveElements(),this.checkAllMaxAssociations(),this._dropBlockedDueToMax=!1,this.validate();return}let y=parseInt(p.getAttribute("match-max")||"1",10),b=Number.isNaN(y)?1:y,w=b===0||b>1,f=Array.from(p.querySelectorAll('[qti-draggable="true"]')),h=this.enableFlipAnimations&&f.length>0?gt(f):null;if(!w){let A=p.querySelector(r)||p.querySelector('[qti-draggable="true"]');if(A){let S=A.getAttribute("identifier");A.remove(),S&&this.restoreOriginalInInventory(S)}}let v=c.cloneNode(!0);v.removeAttribute("style"),v.removeAttribute("data-keyboard-dragging"),v.setAttribute("qti-draggable","true"),v.setAttribute("tabindex","0"),p.tagName==="SLOT"?v.setAttribute("slot",p.getAttribute("name")||""):p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"?(v.setAttribute("slot","qti-simple-associable-choice"),p.appendChild(v),p.setAttribute("data-has-drop","true")):p.appendChild(v),h&&this.enableFlipAnimations&&bt(h,this.flipAnimationConfig),u&&this.enableFlipAnimations&&requestAnimationFrame(()=>{let A=v.getBoundingClientRect(),S=u.left-A.left,T=u.top-A.top;(S!==0||T!==0)&&v.animate([{transform:`translate(${S}px, ${T}px)`,opacity:.8},{transform:"translate(0, 0)",opacity:1}],{duration:this.flipAnimationConfig.duration||200,easing:this.flipAnimationConfig.easing||"ease",fill:"both"})});let q=c.getAttribute("identifier");q&&this.updateInventoryBasedOnMatchMax(q),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}returnToInventory(c){let p=c.getAttribute("identifier");p&&(this.trackedDroppables.forEach(u=>{Array.from(u.querySelectorAll(`[identifier="${p}"][qti-draggable="true"]`)).forEach(y=>{y.remove(),u.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&u.removeAttribute("data-has-drop")})}),this.restoreOriginalInInventory(p)),this.cacheInteractiveElements(),this.checkAllMaxAssociations()}restoreOriginalInInventory(c){let p=to(this.trackedDragContainers,c),u=[];this.trackedDragContainers.forEach(y=>{u.push(...Array.from(y.querySelectorAll('[qti-draggable="true"]')))});let m=this.enableFlipAnimations&&u.length>0?gt(u):null;p.forEach(y=>{y.style.opacity="1.0",y.style.pointerEvents="auto",y.style.display="",y.style.visibility="visible",y.style.setProperty("opacity","1.0","important"),y.style.setProperty("pointer-events","auto","important")}),m&&this.enableFlipAnimations&&bt(m,this.flipAnimationConfig)}updateInventoryBasedOnMatchMax(c){let p=to(this.trackedDragContainers,c),u=Bc(this.trackedDraggables,c),m=this.trackedDroppables.reduce((y,b)=>{let w=b.querySelectorAll(`[identifier="${c}"]`);return y+w.length},0);p.forEach(y=>{u!==0&&m>=u?(y.style.opacity="0.0",y.style.pointerEvents="none"):(y.style.opacity="1.0",y.style.pointerEvents="auto")})}checkAllMaxAssociations(){let c=Hi(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations;this.trackedDroppables.forEach(u=>{let m=u.hasAttribute("data-drag-source"),y=zc(u,r);(p||y)&&!m?u.setAttribute("disabled",""):u.removeAttribute("disabled")})}saveResponse(c){let p=this.getResponse,u=c??(typeof p=="function"?p.call(this):void 0),m=Array.isArray(u)?u:typeof u=="string"?[u]:(this.cacheInteractiveElements(),ro(this.trackedDroppables,r));this._response=m,this._internals.setFormValue(JSON.stringify(this._response)),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:m}})),this.requestUpdate()}reset(c=!0){this.trackedDroppables.forEach(p=>{Array.from(p.querySelectorAll(r)).forEach(m=>m.remove()),p.tagName==="QTI-SIMPLE-ASSOCIABLE-CHOICE"&&p.removeAttribute("data-has-drop")}),this.trackedDraggables.forEach(p=>{let u=p.getAttribute("identifier");u&&this.restoreOriginalInInventory(u)}),this.resetDragState(),this.cacheInteractiveElements(),this._response=[],this._internals.setFormValue(JSON.stringify(this._response)),c&&this.saveResponse()}validate(){let c=Hi(this.trackedDroppables,r),p=this.maxAssociations>0&&c>=this.maxAssociations,u=this.maxAssociations>0&&c>this.maxAssociations,m=this.minAssociations>0&&c<this.minAssociations,y="",b=!0;u?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,b=!1):p&&this._dropBlockedDueToMax&&this.shouldTreatBlockedMaxAsInvalid()?(y=this.getFirstMessageAttribute(["data-max-associations-message","data-max-selections-message"])||this.dataset.maxAssociationsMessage||this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`,b=!1):m?(y=this.getFirstMessageAttribute(["data-min-associations-message","data-min-selections-message"])||this.dataset.minAssociationsMessage||this.dataset.minSelectionsMessage||`Please select at least ${this.minAssociations} ${this.minAssociations===1?"association":"associations"}.`,b=!1,this._dropBlockedDueToMax=!1):this._dropBlockedDueToMax=!1;let w=this.trackedDroppables[0]??this.trackedDraggables[0]??this;return this._internals.setValidity(b?{}:{customError:!0},y,w),b}reportValidity(){let c=this._internals.reportValidity(),p=this.shadowRoot?.querySelector("#validation-message");return p&&(c?(p.textContent="",p.style.display="none"):(p.textContent=this._internals.validationMessage,p.style.setProperty("display","block","important"))),c}}return d([g({attribute:!1,type:Object})],o.prototype,"configuration",2),d([g({type:Number,reflect:!0,attribute:"min-associations"})],o.prototype,"minAssociations",2),d([g({type:Number,reflect:!0,attribute:"max-associations"})],o.prototype,"maxAssociations",1),d([g({type:Boolean,attribute:"disable-animations"})],o.prototype,"disableAnimations",1),d([g({type:Boolean,attribute:"auto-size-dropzones"})],o.prototype,"autoSizeDropzones",2),o};var no=class{getInsertPosition(r,e,t,i,n){let o=r.indexOf(t);if(o===-1)return null;let a=t.getBoundingClientRect(),l=(n-a.top)/a.height,p=Math.min(1,Math.max(0,l))>.5;return{index:o,placeAfter:p}}};var Yc=new no;var Ep={borderStyle:"2px dashed",borderColor:"var(--qti-drop-placeholder, #c1c1c1)",background:"transparent",transitionDuration:150};function Fi(){return{placeholder:null,lastHoverTarget:null,lastPlacement:null,sortContainer:null}}function oo(s){s.placeholder?.remove(),s.placeholder=null,s.lastHoverTarget=null,s.lastPlacement=null,s.sortContainer=null}function so(s,r,e={}){let t={...Ep,...e},i=document.createElement("div");return i.setAttribute("data-drop-placeholder","true"),i.style.width=`${r.width}px`,i.style.height=`${r.height}px`,i.style.margin=window.getComputedStyle(s).margin,i.style.boxSizing="border-box",i.style.border=`${t.borderStyle} ${t.borderColor}`,i.style.borderRadius=getComputedStyle(s).borderRadius,i.style.background=t.background,i.style.transition=`transform ${t.transitionDuration}ms ease`,i.style.pointerEvents="none",i}function Es(s,r){for(let e of r)if(e.contains(s)&&e!==s)return e;return null}var Te=(s,r='[qti-draggable="true"]')=>{class e extends s{constructor(){super(...arguments);this.#e=null;this.#t=Fi();this.#r={hoveredSlot:null,originalPositions:new Map};this.#i=new Set;this.allowReorder=!0;this.sortablePlaceholderConfig={};this.sortableAnimationConfig={duration:150,easing:"ease"}}#e;#t;#r;#i;get isDraggingFromSlot(){return this.#e!==null}findContainingDroppable(n){return Es(n,this.trackedDroppables)}#n(n){return n.querySelector(r)}#o(n){let o=this.#s(n);return o===0||o>1}#s(n){let o=parseInt(n.getAttribute("match-max")||"1",10);return Number.isNaN(o)?1:o}#a(n){return n.querySelectorAll(r).length}#c(n){let o=this.#s(n);return o===0?!1:this.#a(n)>=o}#d(){this.#r={hoveredSlot:null,originalPositions:new Map}}#l(n){if(!this.#e||n===this.#e){this.#u();return}if(this.#r.hoveredSlot===n)return;this.#u();let o=this.#n(n);if(!o){this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n;return}if(this.#o(n)){if(this.#c(n)){this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),this.#r.hoveredSlot=null;return}this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n;return}let l=gt([o]);this.#r.originalPositions.set(o,n),this.#t.placeholder&&this.#t.placeholder.parentElement&&this.#t.placeholder.remove(),this.#e.appendChild(o),this.#t.placeholder&&n.appendChild(this.#t.placeholder),this.#r.hoveredSlot=n,bt(l,this.sortableAnimationConfig)}#u(){if(this.#r.originalPositions.size===0&&this.#r.hoveredSlot===null)return;let n=Array.from(this.#r.originalPositions.keys()),o=n.length>0?gt(n):null;for(let[a,l]of this.#r.originalPositions)l.appendChild(a);this.#t.placeholder&&this.#e&&this.#e.appendChild(this.#t.placeholder),o&&bt(o,this.sortableAnimationConfig),this.#r.originalPositions.clear(),this.#r.hoveredSlot=null}initiateDrag(n,o,a,l,...c){this.#e=null,this.#t=Fi(),this.#d();let p=this.findContainingDroppable(n);if(p&&this.allowReorder){this.#e=p,this.#t.sortContainer=p;let m=n.getBoundingClientRect();this.#t.placeholder=so(n,m,this.sortablePlaceholderConfig);let y=n.getAttribute("slot");y&&this.#t.placeholder.setAttribute("slot",y),this.#t.placeholder.style.visibility="hidden",p.appendChild(this.#t.placeholder),this.trackedDroppables.forEach(b=>{if(b!==p&&b.hasAttribute("disabled")){if(this.#o(b)&&this.#c(b))return;b.removeAttribute("disabled"),this.#i.add(b)}})}let[u]=c;super.initiateDrag(n,o,a,l,u)}cleanupSortableState(n=!0){if(n)for(let[o,a]of this.#r.originalPositions)a.appendChild(o);this.#t.placeholder&&this.#t.placeholder.remove(),oo(this.#t),this.#i.clear(),this.#e=null,this.#d()}onSortableDragMove(n,o){if(!this.isDraggingFromSlot)return;let a=Tr(this.trackedDroppables,n,o,this.dragState.dragClone,this.collisionDetectionAlgorithm);a?this.#l(a):this.#u()}handleDragMove(n,o){Object.getPrototypeOf(e.prototype).handleDragMove?.call(this,n,o),this.onSortableDragMove(n,o)}allowDrop(n,o){return this.isDraggingFromSlot&&this.trackedDroppables.includes(o)?this.#o(o)?!this.#c(o):!0:this.isDraggingFromSlot&&this.trackedDragContainers.includes(o)?!0:super.allowDrop(n,o)}handleDrop(n,o){super.handleDrop(n,o),this.cleanupSortableState(!1)}handleInvalidDrop(n){this.cleanupSortableState(),super.handleInvalidDrop(n)}}return e};var Jc=C`
|
|
4034
4034
|
:host {
|
|
4035
4035
|
display: block; /* necessary to calculate scaling position */
|
|
4036
4036
|
}
|
|
@@ -4272,7 +4272,7 @@ CES.load();
|
|
|
4272
4272
|
requestBlobUrl();
|
|
4273
4273
|
}
|
|
4274
4274
|
})();
|
|
4275
|
-
`,Ye=class extends V{constructor(){super();this.#e="";this.#t=null;this.#r=null;this._errorMessage=null;this.#i=null;this.handlePostMessage=this.handlePostMessage.bind(this)}#e;#t;#r;static{this.styles=ed}#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let i=this.querySelector("object[data]");if(i){e=i.getAttribute("data");let n=i.getAttribute("width"),o=i.getAttribute("height");n&&this.setAttribute("width",n),o&&this.setAttribute("height",o)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:bn((this.baseItemUrl||"")+"/"+e);this.#t=new URL(t,window.location.href).toString(),fetch(t).then(i=>i.json()).then(i=>{this.manifest=i,this.setupCES()}).catch(i=>{this._errorMessage=i})}async setupCES(){await this.updateComplete;let e=this.shadowRoot?.querySelector("#pciContainer");if(!e){this._errorMessage="pciContainer iframe not found";return}e.getAttribute("src")||e.setAttribute("src","about:blank");let t=e.contentDocument??e.contentWindow?.document??null;if(t||(await new Promise(u=>e.addEventListener("load",()=>u(),{once:!0})),t=e.contentDocument??e.contentWindow?.document??null),!t){this._errorMessage="pciContainer iframe document not available";return}if(!this.manifest.script||this.manifest.script.length===0){this._errorMessage="No script found in manifest";return}if(!this.manifest.style||this.manifest.style.length===0){this._errorMessage="No style found in manifest";return}let i=this.manifest.style[0],n=this.#a(),o=await this.#l(i,n),a=o.url;if(o.baseUrl&&!this.#r&&(this.#r=o.baseUrl),!0){let u="";if(this.manifest.media&&this.manifest.media.length>0){let
|
|
4275
|
+
`,Ye=class extends V{constructor(){super();this.#e="";this.#t=null;this.#r=null;this._errorMessage=null;this.#i=null;this.handlePostMessage=this.handlePostMessage.bind(this)}#e;#t;#r;static{this.styles=ed}#i;connectedCallback(){super.connectedCallback();let e=this.data;if(!e){let i=this.querySelector("object[data]");if(i){e=i.getAttribute("data");let n=i.getAttribute("width"),o=i.getAttribute("height");n&&this.setAttribute("width",n),o&&this.setAttribute("height",o)}}if(!e){this._errorMessage="No manifest path found (neither data attribute nor object child)";return}let t=e.startsWith("http")||e.startsWith("blob")?e:bn((this.baseItemUrl||"")+"/"+e);this.#t=new URL(t,window.location.href).toString(),fetch(t).then(i=>i.json()).then(i=>{this.manifest=i,this.setupCES()}).catch(i=>{this._errorMessage=i})}async setupCES(){await this.updateComplete;let e=this.shadowRoot?.querySelector("#pciContainer");if(!e){this._errorMessage="pciContainer iframe not found";return}e.getAttribute("src")||e.setAttribute("src","about:blank");let t=e.contentDocument??e.contentWindow?.document??null;if(t||(await new Promise(u=>e.addEventListener("load",()=>u(),{once:!0})),t=e.contentDocument??e.contentWindow?.document??null),!t){this._errorMessage="pciContainer iframe document not available";return}if(!this.manifest.script||this.manifest.script.length===0){this._errorMessage="No script found in manifest";return}if(!this.manifest.style||this.manifest.style.length===0){this._errorMessage="No style found in manifest";return}let i=this.manifest.style[0],n=this.#a(),o=await this.#l(i,n),a=o.url;if(o.baseUrl&&!this.#r&&(this.#r=o.baseUrl),!0){let u="";if(this.manifest.media&&this.manifest.media.length>0){let m=this.manifest.media[0],y=await this.#l(m,n,{returnText:!0});if(u=y.url,y.baseUrl&&!this.#r&&(this.#r=y.baseUrl),y.text){let b=y.text;if(!(b.includes("postToParentWindows")||b.includes("window.CES"))){let h="<script>"+Cs+"</script>",v=b.indexOf("<head>");v!==-1?b=b.slice(0,v+6)+h+b.slice(v+6):b=h+b}let f=new Blob([b],{type:"text/html"});this.#i=URL.createObjectURL(f)}}else{let m=this.data||"manifest.json",y=m.includes("/")?m.substring(0,m.lastIndexOf("/")):"",b=y?`${y}/index.html`:"index.html",w=await this.#l(b,n,{returnText:!0});if(u=w.url,w.baseUrl&&!this.#r&&(this.#r=w.baseUrl),w.text){let f=w.text;if(!(f.includes("postToParentWindows")||f.includes("window.CES"))){let q="<script>"+Cs+"</script>",A=f.indexOf("<head>");A!==-1?f=f.slice(0,A+6)+q+f.slice(A+6):f=q+f}let v=new Blob([f],{type:"text/html"});this.#i=URL.createObjectURL(v)}}if(u&&!this.#i)try{let m=await fetch(u);if(m.ok){let y=await m.text();if(!(y.includes("postToParentWindows")||y.includes("window.CES"))){let f="<script>"+Cs+"</script>",h=y.indexOf("<head>");h!==-1?y=y.slice(0,h+6)+f+y.slice(h+6):y=f+y}let w=new Blob([y],{type:"text/html"});this.#i=URL.createObjectURL(w)}else console.error(`Failed to fetch index.html: ${m.status}`)}catch(m){console.error(`Error fetching index.html: ${m}`)}}let c=`<script>${kp}</script>`;window.addEventListener("message",this.handlePostMessage);let p=`
|
|
4276
4276
|
<!DOCTYPE html>
|
|
4277
4277
|
<html>
|
|
4278
4278
|
<head>
|
|
@@ -4356,7 +4356,7 @@ CES.load();
|
|
|
4356
4356
|
`;var Mp=Ae(V,"qti-gap-text","qti-gap","slot[part='drags']"),ao=class extends Te(Mp,'[qti-draggable="true"]'){static{this.styles=id}render(){return x`<slot name="prompt"> </slot>
|
|
4357
4357
|
<slot part="drags" name="drags"></slot>
|
|
4358
4358
|
<slot part="drops"></slot>
|
|
4359
|
-
<div role="alert" part="message" id="validation-message"></div>`}toggleCorrectResponse(r){let e=this.responseVariable;if(r&&e?.correctResponse){let t=[],i=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse];i&&(t=i.map(o=>{let a=o.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(o=>{let a=o.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,c=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&c){if(!o.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=c,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",o.insertAdjacentElement("afterend",p)}}else o.nextElementSibling?.classList.contains("correct-option")&&o.nextElementSibling.remove()})}else this.querySelectorAll(".correct-option").forEach(i=>{i.remove()})}#e(r){if(!r.correctResponse)return[];let e=Array.isArray(r.correctResponse)?r.correctResponse:[r.correctResponse],t=[];return e&&e.forEach(i=>{let n=i.split(" ");t.push({source:n[0],target:n[1]})}),t}toggleCandidateCorrection(r){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(n=>{let o=n.getAttribute("identifier"),a=t.filter(c=>c.target===o);n.querySelectorAll("qti-gap-text").forEach(c=>{if(c.internals.states.delete("candidate-correct"),c.internals.states.delete("candidate-incorrect"),!r)return;a.find(u=>u.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",ao);var nd=(s,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(s[i],i);return t},Ir=qe(class extends nt{constructor(s){if(super(s),s.type!==nr.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],n=[],o=0;for(let a of s)i[o]=t?t(a,o):o,n[o]=e(a,o),o++;return{values:n,keys:i}}render(s,r,e){return this.dt(s,r,e).values}update(s,[r,e,t]){let i=sl(s),{values:n,keys:o}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=o,n;let a=this.ut??=[],l=[],c,p,u=0,
|
|
4359
|
+
<div role="alert" part="message" id="validation-message"></div>`}toggleCorrectResponse(r){let e=this.responseVariable;if(r&&e?.correctResponse){let t=[],i=Array.isArray(e.correctResponse)?e.correctResponse:[e.correctResponse];i&&(t=i.map(o=>{let a=o.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(o=>{let a=o.getAttribute("identifier"),l=t.find(p=>p.gap===a)?.text,c=this.querySelector(`qti-gap-text[identifier="${l}"]`)?.textContent.trim();if(l&&c){if(!o.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=c,p.style.border="1px solid var(--qti-correct)",p.style.borderRadius="4px",p.style.padding="2px 4px",p.style.display="inline-block",o.insertAdjacentElement("afterend",p)}}else o.nextElementSibling?.classList.contains("correct-option")&&o.nextElementSibling.remove()})}else this.querySelectorAll(".correct-option").forEach(i=>{i.remove()})}#e(r){if(!r.correctResponse)return[];let e=Array.isArray(r.correctResponse)?r.correctResponse:[r.correctResponse],t=[];return e&&e.forEach(i=>{let n=i.split(" ");t.push({source:n[0],target:n[1]})}),t}toggleCandidateCorrection(r){let e=this.responseVariable;if(!e?.correctResponse)return;let t=this.#e(e);Array.from(this.querySelectorAll("qti-gap")).forEach(n=>{let o=n.getAttribute("identifier"),a=t.filter(c=>c.target===o);n.querySelectorAll("qti-gap-text").forEach(c=>{if(c.internals.states.delete("candidate-correct"),c.internals.states.delete("candidate-incorrect"),!r)return;a.find(u=>u.source===c.identifier)?.source!==void 0?c.internals.states.add("candidate-correct"):c.internals.states.add("candidate-incorrect")})})}};customElements.define("qti-gap-match-interaction",ao);var nd=(s,r,e)=>{let t=new Map;for(let i=r;i<=e;i++)t.set(s[i],i);return t},Ir=qe(class extends nt{constructor(s){if(super(s),s.type!==nr.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,r,e){let t;e===void 0?e=r:r!==void 0&&(t=r);let i=[],n=[],o=0;for(let a of s)i[o]=t?t(a,o):o,n[o]=e(a,o),o++;return{values:n,keys:i}}render(s,r,e){return this.dt(s,r,e).values}update(s,[r,e,t]){let i=sl(s),{values:n,keys:o}=this.dt(r,e,t);if(!Array.isArray(i))return this.ut=o,n;let a=this.ut??=[],l=[],c,p,u=0,m=i.length-1,y=0,b=n.length-1;for(;u<=m&&y<=b;)if(i[u]===null)u++;else if(i[m]===null)m--;else if(a[u]===o[y])l[y]=ot(i[u],n[y]),u++,y++;else if(a[m]===o[b])l[b]=ot(i[m],n[b]),m--,b--;else if(a[u]===o[b])l[b]=ot(i[u],n[b]),or(s,l[b+1],i[u]),u++,b--;else if(a[m]===o[y])l[y]=ot(i[m],n[y]),or(s,i[u],i[m]),m--,y++;else if(c===void 0&&(c=nd(o,y,b),p=nd(a,u,m)),c.has(a[u]))if(c.has(a[m])){let w=p.get(o[y]),f=w!==void 0?i[w]:null;if(f===null){let h=or(s,i[u]);ot(h,n[y]),l[y]=h}else l[y]=ot(f,n[y]),or(s,i[u],f),i[w]=null;y++}else fn(i[m]),m--;else fn(i[u]),u++;for(;y<=b;){let w=or(s,l[b+1]);ot(w,n[y]),l[y++]=w}for(;u<=m;){let w=i[u++];w!==null&&fn(w)}return this.ut=o,ol(s,l),re}});function xt(s,r,e,t){let i=e.getAttribute("width")?parseFloat(e.getAttribute("width")):e.naturalWidth,n=e.getAttribute("height")?parseFloat(e.getAttribute("height")):e.naturalHeight;switch(s){case"circle":{if(r.length!==3){console.error("Invalid circle coordinates:",r);return}let[o,a,l]=r,c=o/i*100,p=a/n*100,u=l/i*100,m=l/n*100;t.style.left=c-u+"%",t.style.top=p-m+"%",t.style.width=2*u+"%",t.style.height=2*m+"%",t.style.borderRadius="50%"}break;case"rect":{if(r.length!==4){console.error("Invalid rectangle coordinates:",r);return}let[o,a,l,c]=r,p=o/i*100,u=a/n*100,m=l/i*100,y=c/n*100;t.style.left=p+"%",t.style.top=u+"%",t.style.width=m-p+"%",t.style.height=y-u+"%"}break;case"ellipse":{if(r.length!==4){console.error("Invalid ellipse coordinates:",r);return}let[o,a,l,c]=r,p=o/i*100,u=a/n*100,m=l/i*100,y=c/n*100;t.style.left=p-m+"%",t.style.top=u-y+"%",t.style.width=2*m+"%",t.style.height=2*y+"%",t.style.borderRadius="50%"}break;case"poly":{if(r.length<6||r.length%2!==0){console.error("Invalid polygon coordinates:",r);return}let o=[];for(let h=0;h<r.length;h+=2)o.push({x:r[h],y:r[h+1]});let a=Math.min(...o.map(h=>h.x)),l=Math.max(...o.map(h=>h.x)),c=Math.min(...o.map(h=>h.y)),p=Math.max(...o.map(h=>h.y)),u=a/i*100,m=c/n*100,y=l/i*100,b=p/n*100;t.style.left=u+"%",t.style.top=m+"%",t.style.width=y-u+"%",t.style.height=b-m+"%";let f=o.map(h=>({x:(h.x-a)/(l-a)*100,y:(h.y-c)/(p-c)*100})).map(h=>`${h.x}% ${h.y}%`).join(",");t.style.clipPath=`polygon(${f})`}break;default:console.error(`Unsupported shape: ${s}`);break}}var od=C`
|
|
4360
4360
|
slot:not([name='prompt']) {
|
|
4361
4361
|
// position: relative; /* qti-hotspot-choice relative to the slot */
|
|
4362
4362
|
display: block;
|
|
@@ -4651,7 +4651,7 @@ CES.load();
|
|
|
4651
4651
|
|
|
4652
4652
|
${this.sourceChoices.map(i=>x`<tr part="row">
|
|
4653
4653
|
<td part="c-header">${Array.from(i.childNodes).map(n=>n.cloneNode(!0))}</td>
|
|
4654
|
-
${this.targetChoices.map(n=>{let o=i.getAttribute("identifier"),a=n.getAttribute("identifier"),l=`${o} ${a}`,c=(this.response||[]).filter(w=>w.split(" ")[0]===o).length||0,p=this.response?.includes(l)||!1,u=i.matchMax===1?"radio":"checkbox",
|
|
4654
|
+
${this.targetChoices.map(n=>{let o=i.getAttribute("identifier"),a=n.getAttribute("identifier"),l=`${o} ${a}`,c=(this.response||[]).filter(w=>w.split(" ")[0]===o).length||0,p=this.response?.includes(l)||!1,u=i.matchMax===1?"radio":"checkbox",m=!!this.correctOptions?.find(w=>w.source===o&&w.target===a),y=u==="radio"?`rb ${p?"rb-checked":""} ${t?m?"rb-correct":"rb-incorrect":""}`:`cb ${p?"cb-checked":""} ${t?m?"cb-correct":"cb-incorrect":""}`,b=this.correctOptions?.length>0?!0:i.matchMax===1?!1:i.matchMax!==0&&c>=i.matchMax&&!p;return x`<td part="input-cell">
|
|
4655
4655
|
<div
|
|
4656
4656
|
class="input-container"
|
|
4657
4657
|
style="position: relative; width: 24px; height: 24px; margin: 0 auto;"
|
|
@@ -4661,7 +4661,7 @@ CES.load();
|
|
|
4661
4661
|
part=${y}
|
|
4662
4662
|
name=${o}
|
|
4663
4663
|
value=${l}
|
|
4664
|
-
.disabled=${
|
|
4664
|
+
.disabled=${b}
|
|
4665
4665
|
@change=${w=>this.handleRadioChange(w)}
|
|
4666
4666
|
@click=${w=>i.matchMax===1?this.handleRadioClick(w):null}
|
|
4667
4667
|
/>
|
|
@@ -4781,7 +4781,7 @@ CES.load();
|
|
|
4781
4781
|
min-height: 50px;
|
|
4782
4782
|
}
|
|
4783
4783
|
`]}#t;#r;#i;#n;#o(){if(this.#t===null&&this.requirePathsJson)try{let e=JSON.parse(this.requirePathsJson);if(Array.isArray(e)||!e||typeof e!="object")throw new Error("Require paths must be a JSON object.");this.#t=e}catch(e){console.error("Error parsing require paths JSON:",e),this._errorMessage=`Error parsing require paths JSON: ${e.message}`,this.#t={}}return this.#t||{}}#s(){if(this.#r===null&&this.requireShimJson)try{this.#r=JSON.parse(this.requireShimJson)}catch(e){console.error("Error parsing require shim JSON:",e),this._errorMessage=`Error parsing require shim JSON: ${e.message}`,this.#r={}}return this.#r||{}}#a(){return this.#o()}#c(){return this.#s()}#d(e){for(let t in e)if(e.hasOwnProperty(t)){let i=e[t];if(i){for(let n in i)if(i.hasOwnProperty(n)){let o=i[n];if(Array.isArray(o))return o.map(String);if(o!=null)return String(o)}}}return null}getDirectChildrenByTag(e){let t=e.toLowerCase();return Array.from(this.children).filter(i=>i.tagName.toLowerCase()===t)}coerceBaseValue(e,t){if(e==null)return e;switch(t){case"integer":{if(typeof e=="number")return e;let i=parseInt(String(e),10);return Number.isNaN(i)?e:i}case"float":case"duration":{if(typeof e=="number")return e;let i=parseFloat(String(e));return Number.isNaN(i)?e:i}case"boolean":{if(typeof e=="boolean")return e;if(typeof e=="string"){let i=e.toLowerCase();if(i==="true")return!0;if(i==="false")return!1}return e}default:return String(e)}}normalizeListValue(e){return e==null?[]:Array.isArray(e)?e:[e]}variableToQtiVariableJSON(e,t,i){if(t==="record"||i==="record")return this.recordToQtiVariableJSON(e);if(t!=="single"){let n=this.normalizeListValue(e).map(o=>this.coerceBaseValue(o,i));return{list:{[i]:n}}}return{base:{[i]:this.coerceBaseValue(e,i)}}}recordToQtiVariableJSON(e){if(!e||typeof e!="object")return{record:[]};let t=[];for(let[i,n]of Object.entries(e))t.push(this.recordEntryFromValue(i,n));return{record:t}}recordEntryFromValue(e,t){if(Array.isArray(t)){let i=t.filter(n=>n!=null);if(i.length&&i.every(n=>typeof n=="boolean"))return{name:e,list:{boolean:i}};if(i.length&&i.every(n=>typeof n=="number")){let n=i,o=n.every(a=>Number.isInteger(a));return{name:e,list:{[o?"integer":"float"]:n}}}return{name:e,list:{string:t.map(n=>n==null?"":String(n))}}}if(typeof t=="boolean")return{name:e,base:{boolean:t}};if(typeof t=="number")return Number.isInteger(t)?{name:e,base:{integer:t}}:{name:e,base:{float:t}};if(t==null)return{name:e,base:{string:""}};if(typeof t=="object")try{return{name:e,base:{string:JSON.stringify(t)}}}catch{return{name:e,base:{string:String(t)}}}return{name:e,base:{string:String(t)}}}getQtiContextDefaultsFromItem(){let e=this.closest("qti-assessment-item");if(!e)return{};let t={};return e.querySelectorAll('qti-context-declaration[identifier="QTI_CONTEXT"]').forEach(n=>{let o=n.querySelector("qti-default-value");if(!o)return;o.querySelectorAll("qti-value[field-identifier]").forEach(l=>{let c=l.getAttribute("field-identifier");if(!c)return;let p=l.getAttribute("base-type")||"string",u=l.textContent?.trim()||"";t[c]=this.coerceBaseValue(u,p)})}),t}getQtiContextRecord(){let e=this.getQtiContextDefaultsFromItem(),t=this.qtiContext?.QTI_CONTEXT||{},i={...e,...t};if(!Object.keys(i).length)return null;let n={candidateIdentifier:i.candidateIdentifier??"",testIdentifier:i.testIdentifier??"",environmentIdentifier:i.environmentIdentifier??"",...i};return this.recordToQtiVariableJSON(n)}getTemplateVariables(){let e={},t=this.getDirectChildrenByTag("qti-template-variable");return t.length&&t.forEach(i=>{let n=i.getAttribute("template-identifier")||i.getAttribute("identifier")||"";if(!n)return;let o=this.context?.variables?.find(c=>c.identifier===n);if(!o)return;let a=o.cardinality||"single",l=o.baseType||"string";e[n]=this.variableToQtiVariableJSON(o.value,a,l)}),e}getContextVariables(){let e={},t=this.getDirectChildrenByTag("qti-context-variable");return t.length&&t.forEach(i=>{let n=i.getAttribute("identifier")||"";if(!n)return;if(n==="QTI_CONTEXT"){let c=this.getQtiContextRecord();c&&(e[n]=c);return}let o=this.context?.variables?.find(c=>c.identifier===n);if(!o)return;let a=o.cardinality||"single",l=o.baseType||"string";e[n]=this.variableToQtiVariableJSON(o.value,a,l)}),e}#l(e){let t={...e};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let n=i.replace(/[A-Z]/g,o=>`-${o.toLowerCase()}`);t[n]=e[i]}return t}#u(e){let t={...e},i=(n,o,a)=>{let l=n;for(let c=0;c<o.length;c+=1){let p=o[c];if(c===o.length-1){l[p]=a;return}(!l[p]||typeof l[p]!="object"||Array.isArray(l[p]))&&(l[p]={}),l=l[p]}};for(let[n,o]of Object.entries(e)){if(!n.includes("__"))continue;let a=n.split("__").filter(Boolean);a.length<2||i(t,a,o)}return t}responseVariablesToQtiVariableJSON(e,t,i){if(t!=="single"){let n={list:{}};return n.list[i]=e,n}else{let n={base:{}};return n.base[i]=e,n}}#h(){return this.response===null||this.response===void 0?!1:Array.isArray(this.response)?this.response.length===0?!1:this.response.some(e=>e!==""&&e!==null&&e!==void 0):this.response!==""}#g(e,t){let i=this.dataset.invalidresponsemessage||"Invalid response.",n=e?"":t&&t.trim().length>0?t:i;this._internals.setValidity(e?{}:{customError:!0},n)}validate(){let e=typeof this.#i=="boolean"?this.#i:this.#h();return this.#g(e,this.#n),e}set value(e){e===null?this.#e=[]:this.#e=Array.isArray(e)?e:e.split(",")}get value(){return this.#e===null||this.#e===void 0?null:Array.isArray(this.#e)?this.#e.join(","):String(this.#e)}set boundTo(e){if(!e||!e[this.responseIdentifier])return;let t=this.#d(e[this.responseIdentifier]);this.#e=t,this.saveResponse(t)}get boundTo(){let e={};if(this.context?.variables?.find(i=>i.identifier===this.responseIdentifier)){let i=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.cardinality||"single",n=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.baseType||"string",o=this.context?.variables?.find(l=>l.identifier===this.responseIdentifier)?.value||null,a=this.responseVariablesToQtiVariableJSON(o,i,n);e[this.responseIdentifier]=a}return e}#b(e){return e&&e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(///g,"/").replace(/`/g,"`").replace(/=/g,"=")}#f(e){let t={};for(let[i,n]of Object.entries(e))typeof n=="string"?t[i]=this.#b(n):t[i]=n;return t}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.handleIframeMessage),this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null)}sendMessageToIframe(e,t){let i=this.iframe?.contentWindow;if(!this._iframeLoaded||!i){this._pendingMessages.push({method:e,params:t});return}i.postMessage({source:"qti-portable-custom-interaction",responseIdentifier:this.responseIdentifier,method:e,params:t},"*")}#y(){this._pendingMessages.length&&(this._pendingMessages.forEach(e=>{this.sendMessageToIframe(e.method,e.params)}),this._pendingMessages=[])}createIframe(){this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null),this.iframe=document.createElement("iframe"),this.iframe.id=`pci-iframe-${this.responseIdentifier}`,this.iframe.setAttribute("title","QTI PCI Iframe"),this.iframe.setAttribute("aria-label","QTI PCI Iframe"),this.iframe.setAttribute("aria-hidden","false"),this.iframe.setAttribute("role","application"),this.iframe.style.width="100%",this.iframe.style.border="none",this.iframe.style.display="block",this.iframe.onload=()=>{this._iframeLoaded=!0,this._iframeObjectUrl&&(URL.revokeObjectURL(this._iframeObjectUrl),this._iframeObjectUrl=null),this.#x(),this.#p()};let e=`qti-pci-${this.responseIdentifier}-${Date.now()}`;this.iframe.name=e;let t=this.generateIframeContent();try{let i=new Blob([t],{type:"text/html"});this._iframeObjectUrl=URL.createObjectURL(i),this.iframe.src=this._iframeObjectUrl}catch{let i=encodeURIComponent(t);this.iframe.src=`data:text/html;charset=utf-8,${i}`}this.appendChild(this.iframe)}#p(){let e=this.#l(this.#u(this.#f({...this.dataset}))),t=this.context?.state?.[this.responseIdentifier],i=typeof t=="string"&&t.length>0?t:null,n={module:this.module,customInteractionTypeIdentifier:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl?this.baseUrl.startsWith("http")||this.baseUrl.startsWith("blob")||this.baseUrl.startsWith("base64")?this.baseUrl:bn(`${window.location.origin}${this.baseUrl}`):window.location.origin,responseIdentifier:this.responseIdentifier,properties:e,contextVariables:this.getContextVariables(),templateVariables:this.getTemplateVariables(),dataAttributes:{...this.dataset},interactionModules:this.#v(),boundTo:i?null:this.boundTo,state:i};this.sendMessageToIframe("initialize",n)}#v(){let e=[],t=this.querySelector("qti-interaction-modules");if(t){let i=t.querySelectorAll("qti-interaction-module");for(let n of i)e.push({id:n.getAttribute("id"),primaryPath:n.getAttribute("primary-path"),fallbackPath:n.getAttribute("fallback-path")})}return e}#x(){let e=this.querySelector("qti-interaction-markup");e&&this.sendMessageToIframe("setMarkup",e.innerHTML);let t=Array.from(this.querySelectorAll("qti-stylesheet"));if(t.length){let n=t.map(o=>o.outerHTML).join(`
|
|
4784
|
-
`);this.sendMessageToIframe("setStylesheets",n)}let i=this.querySelector("properties");i&&this.sendMessageToIframe("setProperties",i.innerHTML)}#q(){}connectedCallback(){super.connectedCallback(),this.#i=null,this.#n="",this.response=this.responseVariable?.value??null,window.addEventListener("message",this.handleIframeMessage),this.createIframe()}generateIframeContent(){let e=window.getComputedStyle(document.body),t=JSON.stringify(this.#a()),i=JSON.stringify(this.#c()),n=this.dataset.baseUrl?this.dataset.baseUrl.startsWith("/")?`${window.location.origin}${this.dataset.baseUrl}`:this.dataset.baseUrl:"",o=this.dataset.forwardConsole==="true",a=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1",l=a?`${window.location.origin}/cdn/index.js`:"https://unpkg.com/@citolab/qti-components/cdn",c=a?`${window.location.origin}/dist/item.css`:"https://unpkg.com/@citolab/qti-components@latest/dist/item.css",p=this.dataset.componentsCdnUrl||l,u=this.dataset.componentsCssUrl||c,
|
|
4784
|
+
`);this.sendMessageToIframe("setStylesheets",n)}let i=this.querySelector("properties");i&&this.sendMessageToIframe("setProperties",i.innerHTML)}#q(){}connectedCallback(){super.connectedCallback(),this.#i=null,this.#n="",this.response=this.responseVariable?.value??null,window.addEventListener("message",this.handleIframeMessage),this.createIframe()}generateIframeContent(){let e=window.getComputedStyle(document.body),t=JSON.stringify(this.#a()),i=JSON.stringify(this.#c()),n=this.dataset.baseUrl?this.dataset.baseUrl.startsWith("/")?`${window.location.origin}${this.dataset.baseUrl}`:this.dataset.baseUrl:"",o=this.dataset.forwardConsole==="true",a=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1",l=a?`${window.location.origin}/cdn/index.js`:"https://unpkg.com/@citolab/qti-components/cdn",c=a?`${window.location.origin}/dist/item.css`:"https://unpkg.com/@citolab/qti-components@latest/dist/item.css",p=this.dataset.componentsCdnUrl||l,u=this.dataset.componentsCssUrl||c,m=`
|
|
4785
4785
|
font-family: ${e.getPropertyValue("font-family")};
|
|
4786
4786
|
font-size: ${e.getPropertyValue("font-size")};
|
|
4787
4787
|
line-height: ${e.getPropertyValue("line-height")};
|
|
@@ -4804,7 +4804,7 @@ CES.load();
|
|
|
4804
4804
|
height: auto;
|
|
4805
4805
|
overflow: hidden;
|
|
4806
4806
|
/* Add the extracted font styles here */
|
|
4807
|
-
${
|
|
4807
|
+
${m}
|
|
4808
4808
|
};
|
|
4809
4809
|
.qti-customInteraction {
|
|
4810
4810
|
width: 100%;
|
|
@@ -5666,7 +5666,7 @@ CES.load();
|
|
|
5666
5666
|
<body>
|
|
5667
5667
|
<div id="pci-container"></div>
|
|
5668
5668
|
</body>
|
|
5669
|
-
</html>`}toggleInternalCorrectResponse(e){let t=this.responseVariable;this.correctResponse=e?t?.correctResponse:t.cardinality==="single"?"":[];let i=`correct-response-container-${this.responseIdentifier}`,n=this.parentElement?.querySelectorAll(`#${i}`);if(n&&n.forEach(
|
|
5669
|
+
</html>`}toggleInternalCorrectResponse(e){let t=this.responseVariable;this.correctResponse=e?t?.correctResponse:t.cardinality==="single"?"":[];let i=`correct-response-container-${this.responseIdentifier}`,n=this.parentElement?.querySelectorAll(`#${i}`);if(n&&n.forEach(m=>{m.remove()}),e)this.disable();else{this.enable();return}if(!e||!t?.correctResponse)return;let o=document.createElement("div");o.id=i,o.className="pci-correct-response-container",o.style.position="relative",o.style.marginTop="20px",o.style.border="2px solid green",o.style.padding="16px",o.style.borderRadius="4px",o.style.backgroundColor="rgba(0, 128, 0, 0.05)";let a=document.createElement("div");a.textContent="Correct Response:",a.style.fontWeight="bold",a.style.marginBottom="10px",a.style.color="green",o.appendChild(a);let l=document.createElement("qti-portable-custom-interaction");Array.from(this.attributes).forEach(m=>{m.name!=="id"&&m.name!=="response-identifier"&&l.setAttribute(m.name,m.value)});let c=this.responseIdentifier;l.responseIdentifier=`${c}-correct`,Array.from(this.children).forEach(m=>{let y=m.cloneNode(!0);l.appendChild(y)});let p=t.correctResponse,u=l.connectedCallback;l.connectedCallback=function(){u.call(this);let m=()=>{let y=this.responseVariablesToQtiVariableJSON(p,t.cardinality,t.baseType);this.sendMessageToIframe("setBoundTo",{[c]:y}),this.sendMessageToIframe("setState",{state:"review"})};this._iframeLoaded?m():this.addEventListener("qti-portable-custom-interaction-loaded",m,{once:!0})},l.style.pointerEvents="none",o.appendChild(l),this.after(o)}disable(){if(this.#m={pointerEvents:this.style.pointerEvents,position:this.style.position},this.sendMessageToIframe("setState",{state:"disabled"}),!this.querySelector(".pci-interaction-overlay")){let t=document.createElement("div");t.className="pci-interaction-overlay",t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.width="100%",t.style.height="100%",t.style.backgroundColor="rgba(200, 200, 200, 0.3)",t.style.zIndex="100",t.style.pointerEvents="all",t.style.cursor="not-allowed",getComputedStyle(this).position==="static"&&(this.style.position="relative"),this.appendChild(t)}}enable(){let e=this.querySelector(".pci-interaction-overlay");e&&e.remove(),this.#m&&(this.#m.pointerEvents&&(this.style.pointerEvents=this.#m.pointerEvents),this.#m.position&&(this.style.position=this.#m.position),this.#m=null),this.sendMessageToIframe("setState",{state:"interacting"})}#m;render(){return x`
|
|
5670
5670
|
<slot></slot>
|
|
5671
5671
|
${this._errorMessage?x`<div style="color:red">
|
|
5672
5672
|
<h1>Error</h1>
|
|
@@ -5904,7 +5904,7 @@ CES.load();
|
|
|
5904
5904
|
style=${Ss({pointerEvents:this.maxChoices===1?"none":"auto",position:"absolute",transform:"translate(-50%, -50%)",left:`${o}%`,top:`${a}%`,width:`min(${c}%, 1rem)`,height:`min(${p}%, 1rem)`,minWidth:`min(${c}%, 1rem)`,minHeight:`min(${p}%, 1rem)`,borderRadius:"50%",background:"red"})}
|
|
5905
5905
|
aria-label="Remove point at ${e}"
|
|
5906
5906
|
?disabled=${this.disabled}
|
|
5907
|
-
@click=${
|
|
5907
|
+
@click=${m=>{m.stopPropagation(),this.response=(this.response||[]).filter((y,b)=>b!==t),this.saveResponse(this.response)}}
|
|
5908
5908
|
></button>
|
|
5909
5909
|
`})}
|
|
5910
5910
|
${Ir(this._correctAreas?.filter(e=>e)||[],e=>e,(e,t)=>x`<div
|