@citolab/qti-components 6.6.1-11 → 6.6.1-13

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.
@@ -1,22 +1,22 @@
1
- import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from"@lit/context";import{LitElement as $r,html as Tr}from"lit";import{customElement as Rr,property as I}from"lit/decorators.js";function y(a,i){let e=f({waitUntilFirstUpdate:!1},i);return(t,r)=>{let{update:s}=t,o=Array.isArray(a)?a:[a];t.update=function(c){o.forEach(l=>{let p=l;if(c.has(p)){let d=c.get(p),u=this[p];d!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[r](d,u)}}),s.call(this,c)}}}import{createContext as kr}from"@lit/context";var D=kr("item");var A=class extends $r{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent="false";this._handleDisabledChange=(e,t)=>{this._interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this._interactionElements.forEach(r=>r.readonly=t);this._context={identifier:this.getAttribute("identifier"),variables:[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}]};this._initialContext=q(f({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",({detail:e})=>{this._context=q(f({},this._context),{variables:[...this._context.variables,e.variable]}),this._initialContext=this._context}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let t=e.detail;this._feedbackElements.push(t),t.checkShowFeedback(t.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:t,countAttempt:r}=e.detail;this.updateResponseVariable(t,"true"),this.processResponse(r)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r)}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type}))}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=q(f({},this._context),{variables:this._context.variables.map(t=>{let r=e.find(s=>s.identifier===t.identifier);return r?f(f({},t),r):t})}),this._context.variables.forEach(t=>{if(t.type==="response"){let r=this._interactionElements.find(s=>s.responseIdentifier===t.identifier);r&&(r.response=t.value)}t.type==="outcome"&&this._feedbackElements.forEach(r=>r.checkShowFeedback(t.identifier))})}firstUpdated(e){super.firstUpdated(e),this._emit("qti-assessment-item-first-updated",this)}disconnectedCallback(){super.disconnectedCallback(),this._emit("qti-item-disconnected")}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let s=this._interactionElements.find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);s&&(s.response=t.response)}}render(){return Tr`<slot></slot>`}showCorrectResponse(e){let r=this._context.variables.filter(s=>"correctResponse"in s&&s.correctResponse).map(s=>({responseIdentifier:s.identifier,response:s.correctResponse}));for(let s of r){let o=this._interactionElements.find(c=>c.getAttribute("response-identifier")===s.responseIdentifier);o&&(o.correctResponse=e?s.response:"")}}processResponse(e=!0){var r;let t=this.querySelector("qti-response-processing");return t?t.process?(t.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((r=this._context.variables.find(s=>s.identifier==="numAttempts"))==null?void 0:r.value)+1).toString()),this._emit("qti-response-processed"),!0):(console.info("Client side response webcomponents not available"),!1):(console.info("Client side response processing template not available"),!1)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:t,response:r}=e.detail;this.updateResponseVariable(t,r)}updateResponseVariable(e,t){this._context=q(f({},this._context),{variables:this._context.variables.map(r=>r.identifier!==e?r:q(f({},r),{value:t}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:t})}updateOutcomeVariable(e,t){var s;let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=q(f({},this._context),{variables:this._context.variables.map(o=>o.identifier!==e?o:q(f({},o),{value:r.cardinality==="single"?t:[...o.value,t]}))}),this._feedbackElements.forEach(o=>o.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(s=this._context.variables.find(o=>o.identifier===e))==null?void 0:s.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,t=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}};n([I({type:String})],A.prototype,"title",2),n([I({type:String})],A.prototype,"identifier",2),n([I({type:String})],A.prototype,"adaptive",2),n([I({type:String})],A.prototype,"timeDependent",2),n([I({type:Boolean})],A.prototype,"disabled",2),n([y("disabled",{waitUntilFirstUpdate:!0})],A.prototype,"_handleDisabledChange",2),n([I({type:Boolean})],A.prototype,"readonly",2),n([y("readonly",{waitUntilFirstUpdate:!0})],A.prototype,"_handleReadonlyChange",2),n([wr({context:D}),I({attribute:!1})],A.prototype,"_context",2),A=n([Rr("qti-assessment-item")],A);import{html as Sr}from"lit/static-html.js";import{property as ae}from"lit/decorators.js";import{LitElement as Lr}from"lit";var Mr={SPACE:32},_=class extends Lr{constructor(){super(...arguments);this.tabindex=0;this.disabled=!1;this.readonly=!1;this.checked=!1}handleDisabledChange(e,t){t?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-register-choice",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-loose-choice",{bubbles:!0,cancelable:!1,composed:!0}))}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){if(!e.altKey)switch(e.keyCode){case Mr.SPACE:e.preventDefault(),this._toggleChecked();break;default:}}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("qti-choice-element-selected",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier,checked:this.checked}})))}validateAllProps(){return!!this.getAttribute("identifier")}render(){return this.validateAllProps()||console.warn(`Invalid props for ${this.outerHTML}`,"missing identifier"),Sr` <slot></slot> `}};n([ae({type:String})],_.prototype,"identifier",2),n([ae({type:Number,reflect:!0})],_.prototype,"tabindex",2),n([ae({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:a=>a}})],_.prototype,"disabled",2),n([ae({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:a=>a}})],_.prototype,"readonly",2),n([ae({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:a=>a}})],_.prototype,"checked",2),n([y("disabled",{waitUntilFirstUpdate:!0})],_.prototype,"handleDisabledChange",1);import{customElement as Vr}from"lit/decorators.js";import{html as Nr,LitElement as Dr}from"lit";import{css as Hr}from"lit";var It=Hr`
1
+ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as $r}from"@lit/context";import{LitElement as Rr,html as Tr}from"lit";import{customElement as Sr,property as I}from"lit/decorators.js";function y(a,i){let e=f({waitUntilFirstUpdate:!1},i);return(t,r)=>{let{update:s}=t,o=Array.isArray(a)?a:[a];t.update=function(c){o.forEach(l=>{let p=l;if(c.has(p)){let d=c.get(p),u=this[p];d!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[r](d,u)}}),s.call(this,c)}}}import{createContext as wr}from"@lit/context";var S=wr("item");var A=class extends Rr{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent="false";this._handleDisabledChange=(e,t)=>{this._interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this._interactionElements.forEach(r=>r.readonly=t);this._context={identifier:this.getAttribute("identifier"),variables:[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}]};this._initialContext=q(f({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",({detail:e})=>{this._context=q(f({},this._context),{variables:[...this._context.variables,e.variable]}),this._initialContext=this._context}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let t=e.detail;this._feedbackElements.push(t),t.checkShowFeedback(t.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:t,countAttempt:r}=e.detail;this.updateResponseVariable(t,"true"),this.processResponse(r)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r)}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type}))}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=q(f({},this._context),{variables:this._context.variables.map(t=>{let r=e.find(s=>s.identifier===t.identifier);return r?f(f({},t),r):t})}),this._context.variables.forEach(t=>{if(t.type==="response"){let r=this._interactionElements.find(s=>s.responseIdentifier===t.identifier);r&&(r.response=t.value)}t.type==="outcome"&&this._feedbackElements.forEach(r=>r.checkShowFeedback(t.identifier))})}firstUpdated(e){super.firstUpdated(e),this._emit("qti-assessment-item-first-updated",this)}disconnectedCallback(){super.disconnectedCallback(),this._emit("qti-item-disconnected")}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let s=this._interactionElements.find(o=>o.getAttribute("response-identifier")===t.responseIdentifier);s&&(s.response=t.response)}}render(){return Tr`<slot></slot>`}showCorrectResponse(e){let r=this._context.variables.filter(s=>"correctResponse"in s&&s.correctResponse).map(s=>({responseIdentifier:s.identifier,response:s.correctResponse}));for(let s of r){let o=this._interactionElements.find(c=>c.getAttribute("response-identifier")===s.responseIdentifier);o&&(o.correctResponse=e?s.response:"")}}processResponse(e=!0){var r;let t=this.querySelector("qti-response-processing");return t?t.process?(t.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((r=this._context.variables.find(s=>s.identifier==="numAttempts"))==null?void 0:r.value)+1).toString()),this._emit("qti-response-processed"),!0):(console.info("Client side response webcomponents not available"),!1):(console.info("Client side response processing template not available"),!1)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:t,response:r}=e.detail;this.updateResponseVariable(t,r)}updateResponseVariable(e,t){this._context=q(f({},this._context),{variables:this._context.variables.map(r=>r.identifier!==e?r:q(f({},r),{value:t}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:t})}updateOutcomeVariable(e,t){var s;let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=q(f({},this._context),{variables:this._context.variables.map(o=>o.identifier!==e?o:q(f({},o),{value:r.cardinality==="single"?t:[...o.value,t]}))}),this._feedbackElements.forEach(o=>o.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(s=this._context.variables.find(o=>o.identifier===e))==null?void 0:s.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,t=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}};n([I({type:String})],A.prototype,"title",2),n([I({type:String})],A.prototype,"identifier",2),n([I({type:String})],A.prototype,"adaptive",2),n([I({type:String})],A.prototype,"timeDependent",2),n([I({type:Boolean})],A.prototype,"disabled",2),n([y("disabled",{waitUntilFirstUpdate:!0})],A.prototype,"_handleDisabledChange",2),n([I({type:Boolean})],A.prototype,"readonly",2),n([y("readonly",{waitUntilFirstUpdate:!0})],A.prototype,"_handleReadonlyChange",2),n([$r({context:S}),I({attribute:!1})],A.prototype,"_context",2),A=n([Sr("qti-assessment-item")],A);import{html as Lr}from"lit/static-html.js";import{property as ae}from"lit/decorators.js";import{LitElement as Mr}from"lit";var Vr={SPACE:32},_=class extends Mr{constructor(){super(...arguments);this.tabindex=0;this.disabled=!1;this.readonly=!1;this.checked=!1}handleDisabledChange(e,t){t?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-register-choice",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-loose-choice",{bubbles:!0,cancelable:!1,composed:!0}))}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){if(!e.altKey)switch(e.keyCode){case Vr.SPACE:e.preventDefault(),this._toggleChecked();break;default:}}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("qti-choice-element-selected",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier,checked:this.checked}})))}validateAllProps(){return!!this.getAttribute("identifier")}render(){return this.validateAllProps()||console.warn(`Invalid props for ${this.outerHTML}`,"missing identifier"),Lr` <slot></slot> `}};n([ae({type:String})],_.prototype,"identifier",2),n([ae({type:Number,reflect:!0})],_.prototype,"tabindex",2),n([ae({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:e=>e}})],_.prototype,"disabled",2),n([ae({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:e=>e}})],_.prototype,"readonly",2),n([ae({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:e=>e}})],_.prototype,"checked",2),n([y("disabled",{waitUntilFirstUpdate:!0})],_.prototype,"handleDisabledChange",1);import{customElement as Hr}from"lit/decorators.js";import{html as Dr,LitElement as Pr}from"lit";import{css as Nr}from"lit";var Ft=Nr`
2
2
  :host {
3
3
  display: block;
4
4
  }
5
- `;var W=class extends Dr{render(){return Nr`<slot name="qti-rubric-block"></slot><slot></slot>`}};W.styles=It,W=n([Vr("qti-item-body")],W);import{html as Pr,LitElement as Or}from"lit";import{customElement as Ur}from"lit/decorators.js";var xe=class extends Or{render(){return Pr`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};xe=n([Ur("qti-prompt")],xe);import{LitElement as Ir}from"lit";var et=class extends Ir{constructor(){super()}firstUpdated(e){super.firstUpdated(e);let t=this.closest("qti-assessment-item"),r=this.getAttribute("href");if(r!==null){let s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.media="screen",s.href=r,t.appendChild(s),this.styleLink=s}if(this.textContent!==null){let s=document.createElement("style");s.media="screen",s.textContent=this.textContent,t.appendChild(s),this.styleLink=s}}disconnectedCallback(){let e=this.closest("qti-assessment-item");if(this.styleLink&&this.styleLink.parentElement===this)try{e.removeChild(this.styleLink)}catch(t){console.log("could not remove stylesheet")}}};customElements.define("qti-stylesheet",et);import{consume as Yr}from"@lit/context";import{css as Br,html as Kr}from"lit";import{property as tt,state as jr}from"lit/decorators.js";import{html as Fr,LitElement as Xr}from"lit";var F=class extends Xr{render(){return Fr`<slot></slot>`}defaultValues(i){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(r=>r.innerHTML);return t.length>1||i.cardinality==="multiple"||i.cardinality==="ordered"?t:t[0]}};customElements.define("qti-variabledeclaration",F);var P=class extends F{render(){var t,r;let e=(r=(t=this.itemContext)==null?void 0:t.variables.find(s=>s.identifier===this.identifier))==null?void 0:r.value;return Kr`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let r of e.querySelectorAll("qti-interpolation-table-entry")){!r.getAttribute("source-value")&&r.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let s=parseInt(r.getAttribute("source-value")),o=parseInt(r.getAttribute("target-value"));(isNaN(s)||isNaN(o))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(s,o)}return t}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};P.styles=[Br`
5
+ `;var W=class extends Pr{render(){return Dr`<slot name="qti-rubric-block"></slot><slot></slot>`}};W.styles=Ft,W=n([Hr("qti-item-body")],W);import{html as Or,LitElement as Ur}from"lit";import{customElement as Ir}from"lit/decorators.js";var Ee=class extends Ur{render(){return Or`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};Ee=n([Ir("qti-prompt")],Ee);import{LitElement as Fr}from"lit";var tt=class extends Fr{constructor(){super()}firstUpdated(e){super.firstUpdated(e);let t=this.closest("qti-assessment-item"),r=this.getAttribute("href");if(r!==null){let s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.media="screen",s.href=r,t.appendChild(s),this.styleLink=s}if(this.textContent!==null){let s=document.createElement("style");s.media="screen",s.textContent=this.textContent,t.appendChild(s),this.styleLink=s}}disconnectedCallback(){let e=this.closest("qti-assessment-item");if(this.styleLink&&this.styleLink.parentElement===this)try{e.removeChild(this.styleLink)}catch(t){console.log("could not remove stylesheet")}}};customElements.define("qti-stylesheet",tt);import{consume as Br}from"@lit/context";import{css as jr,html as Kr}from"lit";import{property as rt,state as zr}from"lit/decorators.js";import{html as Xr,LitElement as Yr}from"lit";var F=class extends Yr{render(){return Xr`<slot></slot>`}defaultValues(i){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(r=>r.innerHTML);return t.length>1||i.cardinality==="multiple"||i.cardinality==="ordered"?t:t[0]}};customElements.define("qti-variabledeclaration",F);var P=class extends F{render(){var t,r;let e=(r=(t=this.itemContext)==null?void 0:t.variables.find(s=>s.identifier===this.identifier))==null?void 0:r.value;return Kr`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let r of e.querySelectorAll("qti-interpolation-table-entry")){!r.getAttribute("source-value")&&r.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let s=parseInt(r.getAttribute("source-value")),o=parseInt(r.getAttribute("target-value"));(isNaN(s)||isNaN(o))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(s,o)}return t}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};P.styles=[jr`
6
6
  :host {
7
7
  display: none;
8
8
  }
9
- `],n([tt({type:String,attribute:"base-type"})],P.prototype,"baseType",2),n([tt({type:String})],P.prototype,"identifier",2),n([tt({type:String})],P.prototype,"cardinality",2),n([Yr({context:D,subscribe:!0}),jr()],P.prototype,"itemContext",2);customElements.define("qti-outcome-declaration",P);import{consume as Zr}from"@lit/context";import{css as Gr}from"lit";var J=globalThis,Ee=J.trustedTypes,Ft=Ee?Ee.createPolicy("lit-html",{createHTML:a=>a}):void 0,Wt="$lit$",O=`lit$${(Math.random()+"").slice(9)}$`,Jt="?"+O,zr=`<${Jt}>`,B=J.document===void 0?{createTreeWalker:()=>({})}:document,_e=()=>B.createComment(""),ce=a=>a===null||typeof a!="object"&&typeof a!="function",Zt=Array.isArray,Wr=a=>Zt(a)||typeof(a==null?void 0:a[Symbol.iterator])=="function",rt=`[
10
- \f\r]`,le=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Xt=/-->/g,Yt=/>/g,X=RegExp(`>|${rt}(?:([^\\s"'>=/]+)(${rt}*=${rt}*(?:[^
11
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Bt=/'/g,Kt=/"/g,Gt=/^(?:script|style|textarea|title)$/i,Qt=a=>(i,...e)=>({_$litType$:a,strings:i,values:e}),er=Qt(1),gn=Qt(2),pe=Symbol.for("lit-noChange"),x=Symbol.for("lit-nothing"),jt=new WeakMap,Y=B.createTreeWalker(B,129);function tr(a,i){if(!Array.isArray(a)||!a.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ft!==void 0?Ft.createHTML(i):i}var Jr=(a,i)=>{let e=a.length-1,t=[],r,s=i===2?"<svg>":"",o=le;for(let c=0;c<e;c++){let l=a[c],p,d,u=-1,g=0;for(;g<l.length&&(o.lastIndex=g,d=o.exec(l),d!==null);)g=o.lastIndex,o===le?d[1]==="!--"?o=Xt:d[1]!==void 0?o=Yt:d[2]!==void 0?(Gt.test(d[2])&&(r=RegExp("</"+d[2],"g")),o=X):d[3]!==void 0&&(o=X):o===X?d[0]===">"?(o=r!=null?r:le,u=-1):d[1]===void 0?u=-2:(u=o.lastIndex-d[2].length,p=d[1],o=d[3]===void 0?X:d[3]==='"'?Kt:Bt):o===Kt||o===Bt?o=X:o===Xt||o===Yt?o=le:(o=X,r=void 0);let h=o===X&&a[c+1].startsWith("/>")?" ":"";s+=o===le?l+zr:u>=0?(t.push(p),l.slice(0,u)+Wt+l.slice(u)+O+h):l+O+(u===-2?c:h)}return[tr(a,s+(a[e]||"<?>")+(i===2?"</svg>":"")),t]},de=class a{constructor({strings:i,_$litType$:e},t){let r;this.parts=[];let s=0,o=0,c=i.length-1,l=this.parts,[p,d]=Jr(i,e);if(this.el=a.createElement(p,t),Y.currentNode=this.el.content,e===2){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(r=Y.nextNode())!==null&&l.length<c;){if(r.nodeType===1){if(r.hasAttributes())for(let u of r.getAttributeNames())if(u.endsWith(Wt)){let g=d[o++],h=r.getAttribute(u).split(O),R=/([.?@])?(.*)/.exec(g);l.push({type:1,index:s,name:R[2],strings:h,ctor:R[1]==="."?ot:R[1]==="?"?nt:R[1]==="@"?at:G}),r.removeAttribute(u)}else u.startsWith(O)&&(l.push({type:6,index:s}),r.removeAttribute(u));if(Gt.test(r.tagName)){let u=r.textContent.split(O),g=u.length-1;if(g>0){r.textContent=Ee?Ee.emptyScript:"";for(let h=0;h<g;h++)r.append(u[h],_e()),Y.nextNode(),l.push({type:2,index:++s});r.append(u[g],_e())}}}else if(r.nodeType===8)if(r.data===Jt)l.push({type:2,index:s});else{let u=-1;for(;(u=r.data.indexOf(O,u+1))!==-1;)l.push({type:7,index:s}),u+=O.length-1}s++}}static createElement(i,e){let t=B.createElement("template");return t.innerHTML=i,t}};function Z(a,i,e=a,t){var o,c,l;if(i===pe)return i;let r=t!==void 0?(o=e._$Co)==null?void 0:o[t]:e._$Cl,s=ce(i)?void 0:i._$litDirective$;return(r==null?void 0:r.constructor)!==s&&((c=r==null?void 0:r._$AO)==null||c.call(r,!1),s===void 0?r=void 0:(r=new s(a),r._$AT(a,e,t)),t!==void 0?((l=e._$Co)!=null?l:e._$Co=[])[t]=r:e._$Cl=r),r!==void 0&&(i=Z(a,r._$AS(a,i.values),r,t)),i}var st=class{constructor(i,e){this._$AV=[],this._$AN=void 0,this._$AD=i,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(i){var p;let{el:{content:e},parts:t}=this._$AD,r=((p=i==null?void 0:i.creationScope)!=null?p:B).importNode(e,!0);Y.currentNode=r;let s=Y.nextNode(),o=0,c=0,l=t[0];for(;l!==void 0;){if(o===l.index){let d;l.type===2?d=new Ce(s,s.nextSibling,this,i):l.type===1?d=new l.ctor(s,l.name,l.strings,this,i):l.type===6&&(d=new lt(s,this,i)),this._$AV.push(d),l=t[++c]}o!==(l==null?void 0:l.index)&&(s=Y.nextNode(),o++)}return Y.currentNode=B,r}p(i){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(i,t,e),e+=t.strings.length-2):t._$AI(i[e])),e++}},Ce=class a{get _$AU(){var i,e;return(e=(i=this._$AM)==null?void 0:i._$AU)!=null?e:this._$Cv}constructor(i,e,t,r){var s;this.type=2,this._$AH=x,this._$AN=void 0,this._$AA=i,this._$AB=e,this._$AM=t,this.options=r,this._$Cv=(s=r==null?void 0:r.isConnected)!=null?s:!0}get parentNode(){let i=this._$AA.parentNode,e=this._$AM;return e!==void 0&&(i==null?void 0:i.nodeType)===11&&(i=e.parentNode),i}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(i,e=this){i=Z(this,i,e),ce(i)?i===x||i==null||i===""?(this._$AH!==x&&this._$AR(),this._$AH=x):i!==this._$AH&&i!==pe&&this._(i):i._$litType$!==void 0?this.g(i):i.nodeType!==void 0?this.$(i):Wr(i)?this.T(i):this._(i)}k(i){return this._$AA.parentNode.insertBefore(i,this._$AB)}$(i){this._$AH!==i&&(this._$AR(),this._$AH=this.k(i))}_(i){this._$AH!==x&&ce(this._$AH)?this._$AA.nextSibling.data=i:this.$(B.createTextNode(i)),this._$AH=i}g(i){var s;let{values:e,_$litType$:t}=i,r=typeof t=="number"?this._$AC(i):(t.el===void 0&&(t.el=de.createElement(tr(t.h,t.h[0]),this.options)),t);if(((s=this._$AH)==null?void 0:s._$AD)===r)this._$AH.p(e);else{let o=new st(r,this),c=o.u(this.options);o.p(e),this.$(c),this._$AH=o}}_$AC(i){let e=jt.get(i.strings);return e===void 0&&jt.set(i.strings,e=new de(i)),e}T(i){Zt(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,r=0;for(let s of i)r===e.length?e.push(t=new a(this.k(_e()),this.k(_e()),this,this.options)):t=e[r],t._$AI(s),r++;r<e.length&&(this._$AR(t&&t._$AB.nextSibling,r),e.length=r)}_$AR(i=this._$AA.nextSibling,e){var t;for((t=this._$AP)==null?void 0:t.call(this,!1,!0,e);i&&i!==this._$AB;){let r=i.nextSibling;i.remove(),i=r}}setConnected(i){var e;this._$AM===void 0&&(this._$Cv=i,(e=this._$AP)==null||e.call(this,i))}},G=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(i,e,t,r,s){this.type=1,this._$AH=x,this._$AN=void 0,this.element=i,this.name=e,this._$AM=r,this.options=s,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=x}_$AI(i,e=this,t,r){let s=this.strings,o=!1;if(s===void 0)i=Z(this,i,e,0),o=!ce(i)||i!==this._$AH&&i!==pe,o&&(this._$AH=i);else{let c=i,l,p;for(i=s[0],l=0;l<s.length-1;l++)p=Z(this,c[t+l],e,l),p===pe&&(p=this._$AH[l]),o||(o=!ce(p)||p!==this._$AH[l]),p===x?i=x:i!==x&&(i+=(p!=null?p:"")+s[l+1]),this._$AH[l]=p}o&&!r&&this.O(i)}O(i){i===x?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,i!=null?i:"")}},ot=class extends G{constructor(){super(...arguments),this.type=3}O(i){this.element[this.name]=i===x?void 0:i}},nt=class extends G{constructor(){super(...arguments),this.type=4}O(i){this.element.toggleAttribute(this.name,!!i&&i!==x)}},at=class extends G{constructor(i,e,t,r,s){super(i,e,t,r,s),this.type=5}_$AI(i,e=this){var o;if((i=(o=Z(this,i,e,0))!=null?o:x)===pe)return;let t=this._$AH,r=i===x&&t!==x||i.capture!==t.capture||i.once!==t.once||i.passive!==t.passive,s=i!==x&&(t===x||r);r&&this.element.removeEventListener(this.name,this,t),s&&this.element.addEventListener(this.name,this,i),this._$AH=i}handleEvent(i){var e,t;typeof this._$AH=="function"?this._$AH.call((t=(e=this.options)==null?void 0:e.host)!=null?t:this.element,i):this._$AH.handleEvent(i)}},lt=class{constructor(i,e,t){this.element=i,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(i){Z(this,i)}};var it=J.litHtmlPolyfillSupport,zt;it==null||it(de,Ce),((zt=J.litHtmlVersions)!=null?zt:J.litHtmlVersions=[]).push("3.1.0");import{property as ct,state as Qr}from"lit/decorators.js";var U=class extends F{render(){var t,r;let e=(r=(t=this.itemContext)==null?void 0:t.variables.find(s=>s.identifier===this.identifier))==null?void 0:r.value;return er`${JSON.stringify(e,null,2)}`}connectedCallback(){super.connectedCallback();let e={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}get correctResponse(){let e,t=this.querySelector("qti-correct-response");if(t){let r=t.querySelectorAll("qti-value");if(this.cardinality==="single"&&r.length>0)e=r[0].textContent,r[0].remove();else if(this.cardinality!=="single"){e=[];for(let s=0;s<r.length;s++)e.push(r[s].textContent),r[s].remove()}}return e}get mapping(){return this.querySelector("qti-mapping")}};U.styles=[Gr`
9
+ `],n([rt({type:String,attribute:"base-type"})],P.prototype,"baseType",2),n([rt({type:String})],P.prototype,"identifier",2),n([rt({type:String})],P.prototype,"cardinality",2),n([Br({context:S,subscribe:!0}),zr()],P.prototype,"itemContext",2);customElements.define("qti-outcome-declaration",P);import{consume as Gr}from"@lit/context";import{css as Qr}from"lit";var J=globalThis,_e=J.trustedTypes,Xt=_e?_e.createPolicy("lit-html",{createHTML:a=>a}):void 0,Jt="$lit$",O=`lit$${(Math.random()+"").slice(9)}$`,Zt="?"+O,Wr=`<${Zt}>`,B=J.document===void 0?{createTreeWalker:()=>({})}:document,Ce=()=>B.createComment(""),ce=a=>a===null||typeof a!="object"&&typeof a!="function",Gt=Array.isArray,Jr=a=>Gt(a)||typeof(a==null?void 0:a[Symbol.iterator])=="function",it=`[
10
+ \f\r]`,le=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Yt=/-->/g,Bt=/>/g,X=RegExp(`>|${it}(?:([^\\s"'>=/]+)(${it}*=${it}*(?:[^
11
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),jt=/'/g,Kt=/"/g,Qt=/^(?:script|style|textarea|title)$/i,er=a=>(i,...e)=>({_$litType$:a,strings:i,values:e}),tr=er(1),Cn=er(2),pe=Symbol.for("lit-noChange"),x=Symbol.for("lit-nothing"),zt=new WeakMap,Y=B.createTreeWalker(B,129);function rr(a,i){if(!Array.isArray(a)||!a.hasOwnProperty("raw"))throw Error("invalid template strings array");return Xt!==void 0?Xt.createHTML(i):i}var Zr=(a,i)=>{let e=a.length-1,t=[],r,s=i===2?"<svg>":"",o=le;for(let c=0;c<e;c++){let l=a[c],p,d,u=-1,g=0;for(;g<l.length&&(o.lastIndex=g,d=o.exec(l),d!==null);)g=o.lastIndex,o===le?d[1]==="!--"?o=Yt:d[1]!==void 0?o=Bt:d[2]!==void 0?(Qt.test(d[2])&&(r=RegExp("</"+d[2],"g")),o=X):d[3]!==void 0&&(o=X):o===X?d[0]===">"?(o=r!=null?r:le,u=-1):d[1]===void 0?u=-2:(u=o.lastIndex-d[2].length,p=d[1],o=d[3]===void 0?X:d[3]==='"'?Kt:jt):o===Kt||o===jt?o=X:o===Yt||o===Bt?o=le:(o=X,r=void 0);let h=o===X&&a[c+1].startsWith("/>")?" ":"";s+=o===le?l+Wr:u>=0?(t.push(p),l.slice(0,u)+Jt+l.slice(u)+O+h):l+O+(u===-2?c:h)}return[rr(a,s+(a[e]||"<?>")+(i===2?"</svg>":"")),t]},de=class a{constructor({strings:i,_$litType$:e},t){let r;this.parts=[];let s=0,o=0,c=i.length-1,l=this.parts,[p,d]=Zr(i,e);if(this.el=a.createElement(p,t),Y.currentNode=this.el.content,e===2){let u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(r=Y.nextNode())!==null&&l.length<c;){if(r.nodeType===1){if(r.hasAttributes())for(let u of r.getAttributeNames())if(u.endsWith(Jt)){let g=d[o++],h=r.getAttribute(u).split(O),T=/([.?@])?(.*)/.exec(g);l.push({type:1,index:s,name:T[2],strings:h,ctor:T[1]==="."?nt:T[1]==="?"?at:T[1]==="@"?lt:G}),r.removeAttribute(u)}else u.startsWith(O)&&(l.push({type:6,index:s}),r.removeAttribute(u));if(Qt.test(r.tagName)){let u=r.textContent.split(O),g=u.length-1;if(g>0){r.textContent=_e?_e.emptyScript:"";for(let h=0;h<g;h++)r.append(u[h],Ce()),Y.nextNode(),l.push({type:2,index:++s});r.append(u[g],Ce())}}}else if(r.nodeType===8)if(r.data===Zt)l.push({type:2,index:s});else{let u=-1;for(;(u=r.data.indexOf(O,u+1))!==-1;)l.push({type:7,index:s}),u+=O.length-1}s++}}static createElement(i,e){let t=B.createElement("template");return t.innerHTML=i,t}};function Z(a,i,e=a,t){var o,c,l;if(i===pe)return i;let r=t!==void 0?(o=e._$Co)==null?void 0:o[t]:e._$Cl,s=ce(i)?void 0:i._$litDirective$;return(r==null?void 0:r.constructor)!==s&&((c=r==null?void 0:r._$AO)==null||c.call(r,!1),s===void 0?r=void 0:(r=new s(a),r._$AT(a,e,t)),t!==void 0?((l=e._$Co)!=null?l:e._$Co=[])[t]=r:e._$Cl=r),r!==void 0&&(i=Z(a,r._$AS(a,i.values),r,t)),i}var ot=class{constructor(i,e){this._$AV=[],this._$AN=void 0,this._$AD=i,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(i){var p;let{el:{content:e},parts:t}=this._$AD,r=((p=i==null?void 0:i.creationScope)!=null?p:B).importNode(e,!0);Y.currentNode=r;let s=Y.nextNode(),o=0,c=0,l=t[0];for(;l!==void 0;){if(o===l.index){let d;l.type===2?d=new qe(s,s.nextSibling,this,i):l.type===1?d=new l.ctor(s,l.name,l.strings,this,i):l.type===6&&(d=new ct(s,this,i)),this._$AV.push(d),l=t[++c]}o!==(l==null?void 0:l.index)&&(s=Y.nextNode(),o++)}return Y.currentNode=B,r}p(i){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(i,t,e),e+=t.strings.length-2):t._$AI(i[e])),e++}},qe=class a{get _$AU(){var i,e;return(e=(i=this._$AM)==null?void 0:i._$AU)!=null?e:this._$Cv}constructor(i,e,t,r){var s;this.type=2,this._$AH=x,this._$AN=void 0,this._$AA=i,this._$AB=e,this._$AM=t,this.options=r,this._$Cv=(s=r==null?void 0:r.isConnected)!=null?s:!0}get parentNode(){let i=this._$AA.parentNode,e=this._$AM;return e!==void 0&&(i==null?void 0:i.nodeType)===11&&(i=e.parentNode),i}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(i,e=this){i=Z(this,i,e),ce(i)?i===x||i==null||i===""?(this._$AH!==x&&this._$AR(),this._$AH=x):i!==this._$AH&&i!==pe&&this._(i):i._$litType$!==void 0?this.g(i):i.nodeType!==void 0?this.$(i):Jr(i)?this.T(i):this._(i)}k(i){return this._$AA.parentNode.insertBefore(i,this._$AB)}$(i){this._$AH!==i&&(this._$AR(),this._$AH=this.k(i))}_(i){this._$AH!==x&&ce(this._$AH)?this._$AA.nextSibling.data=i:this.$(B.createTextNode(i)),this._$AH=i}g(i){var s;let{values:e,_$litType$:t}=i,r=typeof t=="number"?this._$AC(i):(t.el===void 0&&(t.el=de.createElement(rr(t.h,t.h[0]),this.options)),t);if(((s=this._$AH)==null?void 0:s._$AD)===r)this._$AH.p(e);else{let o=new ot(r,this),c=o.u(this.options);o.p(e),this.$(c),this._$AH=o}}_$AC(i){let e=zt.get(i.strings);return e===void 0&&zt.set(i.strings,e=new de(i)),e}T(i){Gt(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,r=0;for(let s of i)r===e.length?e.push(t=new a(this.k(Ce()),this.k(Ce()),this,this.options)):t=e[r],t._$AI(s),r++;r<e.length&&(this._$AR(t&&t._$AB.nextSibling,r),e.length=r)}_$AR(i=this._$AA.nextSibling,e){var t;for((t=this._$AP)==null?void 0:t.call(this,!1,!0,e);i&&i!==this._$AB;){let r=i.nextSibling;i.remove(),i=r}}setConnected(i){var e;this._$AM===void 0&&(this._$Cv=i,(e=this._$AP)==null||e.call(this,i))}},G=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(i,e,t,r,s){this.type=1,this._$AH=x,this._$AN=void 0,this.element=i,this.name=e,this._$AM=r,this.options=s,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=x}_$AI(i,e=this,t,r){let s=this.strings,o=!1;if(s===void 0)i=Z(this,i,e,0),o=!ce(i)||i!==this._$AH&&i!==pe,o&&(this._$AH=i);else{let c=i,l,p;for(i=s[0],l=0;l<s.length-1;l++)p=Z(this,c[t+l],e,l),p===pe&&(p=this._$AH[l]),o||(o=!ce(p)||p!==this._$AH[l]),p===x?i=x:i!==x&&(i+=(p!=null?p:"")+s[l+1]),this._$AH[l]=p}o&&!r&&this.O(i)}O(i){i===x?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,i!=null?i:"")}},nt=class extends G{constructor(){super(...arguments),this.type=3}O(i){this.element[this.name]=i===x?void 0:i}},at=class extends G{constructor(){super(...arguments),this.type=4}O(i){this.element.toggleAttribute(this.name,!!i&&i!==x)}},lt=class extends G{constructor(i,e,t,r,s){super(i,e,t,r,s),this.type=5}_$AI(i,e=this){var o;if((i=(o=Z(this,i,e,0))!=null?o:x)===pe)return;let t=this._$AH,r=i===x&&t!==x||i.capture!==t.capture||i.once!==t.once||i.passive!==t.passive,s=i!==x&&(t===x||r);r&&this.element.removeEventListener(this.name,this,t),s&&this.element.addEventListener(this.name,this,i),this._$AH=i}handleEvent(i){var e,t;typeof this._$AH=="function"?this._$AH.call((t=(e=this.options)==null?void 0:e.host)!=null?t:this.element,i):this._$AH.handleEvent(i)}},ct=class{constructor(i,e,t){this.element=i,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(i){Z(this,i)}};var st=J.litHtmlPolyfillSupport,Wt;st==null||st(de,qe),((Wt=J.litHtmlVersions)!=null?Wt:J.litHtmlVersions=[]).push("3.1.0");import{property as pt,state as ei}from"lit/decorators.js";var U=class extends F{render(){var t,r;let e=(r=(t=this.itemContext)==null?void 0:t.variables.find(s=>s.identifier===this.identifier))==null?void 0:r.value;return tr`${JSON.stringify(e,null,2)}`}connectedCallback(){super.connectedCallback();let e={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}get correctResponse(){let e,t=this.querySelector("qti-correct-response");if(t){let r=t.querySelectorAll("qti-value");if(this.cardinality==="single"&&r.length>0)e=r[0].textContent,r[0].remove();else if(this.cardinality!=="single"){e=[];for(let s=0;s<r.length;s++)e.push(r[s].textContent),r[s].remove()}}return e}get mapping(){return this.querySelector("qti-mapping")}};U.styles=[Qr`
12
12
  :host {
13
13
  display: none;
14
14
  }
15
- `],n([ct({type:String,attribute:"base-type"})],U.prototype,"baseType",2),n([ct({type:String})],U.prototype,"identifier",2),n([ct({type:String})],U.prototype,"cardinality",2),n([Zr({context:D,subscribe:!0}),Qr()],U.prototype,"itemContext",2);customElements.define("qti-response-declaration",U);import{LitElement as ei}from"lit";import{customElement as ti}from"lit/decorators.js";var qe=class extends ei{};qe=n([ti("qti-companion-materials-info")],qe);import{LitElement as ri,html as ii}from"lit";import{customElement as si}from"lit/decorators.js";var Ae=class extends ri{render(){return ii`<slot></slot>`}};Ae=n([si("qti-content-body")],Ae);import{LitElement as oi,css as ni,html as ai}from"lit";import{customElement as li,property as ke}from"lit/decorators.js";var S=class extends oi{handleclassNamesChange(e,t){this.classNames.split(" ").forEach(s=>{switch(s){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return ai`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};S.styles=ni`
15
+ `],n([pt({type:String,attribute:"base-type"})],U.prototype,"baseType",2),n([pt({type:String})],U.prototype,"identifier",2),n([pt({type:String})],U.prototype,"cardinality",2),n([Gr({context:S,subscribe:!0}),ei()],U.prototype,"itemContext",2);customElements.define("qti-response-declaration",U);import{LitElement as ti}from"lit";import{customElement as ri}from"lit/decorators.js";var Ae=class extends ti{};Ae=n([ri("qti-companion-materials-info")],Ae);import{LitElement as ii,html as si}from"lit";import{customElement as oi}from"lit/decorators.js";var ke=class extends ii{render(){return si`<slot></slot>`}};ke=n([oi("qti-content-body")],ke);import{LitElement as ni,css as ai,html as li}from"lit";import{customElement as ci,property as we}from"lit/decorators.js";var L=class extends ni{handleclassNamesChange(e,t){this.classNames.split(" ").forEach(s=>{switch(s){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return li`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};L.styles=ai`
16
16
  :host {
17
17
  display: block;
18
18
  }
19
- `,n([ke({type:String})],S.prototype,"id",2),n([ke({type:String})],S.prototype,"use",2),n([ke({type:String})],S.prototype,"view",2),n([ke({type:String,attribute:"class"})],S.prototype,"classNames",2),n([y("classNames",{waitUntilFirstUpdate:!0})],S.prototype,"handleclassNamesChange",1),S=n([li("qti-rubric-block")],S);import{css as di,html as ui}from"lit";import{LitElement as pi}from"lit";import{property as we}from"lit/decorators.js";var ci=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),ue=a=>{if(typeof a=="string")return a;let i=ci();return i==="."?a.toLocaleString():a.toString().replace(".","").replace(i,".")};function pt(a){return a==null}var k=class extends pi{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e){let t=this.closest("qti-assessment-item").getOutcome(e);if(this.outcomeIdentifier!==e||!t)return;let r=!1;Array.isArray(t.value)?r=t.value.includes(this.identifier):r=!pt(this.identifier)&&!pt(t==null?void 0:t.value)&&this.identifier===t.value||!1,this.showFeedback(r)}showFeedback(e){this.showStatus=e&&this.showHide==="show"||!e&&this.showHide==="hide"?"on":"off"}};n([we({type:String,attribute:"show-hide"})],k.prototype,"showHide",2),n([we({type:String,attribute:"outcome-identifier"})],k.prototype,"outcomeIdentifier",2),n([we({type:String})],k.prototype,"identifier",2),n([we({type:String,attribute:!1})],k.prototype,"showStatus",2);var $e=class extends k{render(){return ui` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(i){this.checkShowFeedback(this.outcomeIdentifier)}};$e.styles=di`
19
+ `,n([we({type:String})],L.prototype,"id",2),n([we({type:String})],L.prototype,"use",2),n([we({type:String})],L.prototype,"view",2),n([we({type:String,attribute:"class"})],L.prototype,"classNames",2),n([y("classNames",{waitUntilFirstUpdate:!0})],L.prototype,"handleclassNamesChange",1),L=n([ci("qti-rubric-block")],L);import{css as ui,html as mi}from"lit";import{LitElement as di}from"lit";import{property as $e}from"lit/decorators.js";var pi=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),ue=a=>{if(typeof a=="string")return a;let i=pi();return i==="."?a.toLocaleString():a.toString().replace(".","").replace(i,".")};function dt(a){return a==null}var k=class extends di{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e){let t=this.closest("qti-assessment-item").getOutcome(e);if(this.outcomeIdentifier!==e||!t)return;let r=!1;Array.isArray(t.value)?r=t.value.includes(this.identifier):r=!dt(this.identifier)&&!dt(t==null?void 0:t.value)&&this.identifier===t.value||!1,this.showFeedback(r)}showFeedback(e){this.showStatus=e&&this.showHide==="show"||!e&&this.showHide==="hide"?"on":"off"}};n([$e({type:String,attribute:"show-hide"})],k.prototype,"showHide",2),n([$e({type:String,attribute:"outcome-identifier"})],k.prototype,"outcomeIdentifier",2),n([$e({type:String})],k.prototype,"identifier",2),n([$e({type:String,attribute:!1})],k.prototype,"showStatus",2);var Re=class extends k{render(){return mi` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(i){this.checkShowFeedback(this.outcomeIdentifier)}};Re.styles=ui`
20
20
  :host {
21
21
  display: block;
22
22
  }
@@ -26,21 +26,21 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
26
26
  .off {
27
27
  display: none;
28
28
  }
29
- `;customElements.define("qti-feedback-block",$e);import{css as mi,html as hi}from"lit";var Te=class extends k{constructor(){super(...arguments);this.render=()=>hi` <slot part="feedback" class="${this.showStatus}"></slot> `}};Te.styles=mi`
29
+ `;customElements.define("qti-feedback-block",Re);import{css as hi,html as fi}from"lit";var Te=class extends k{constructor(){super(...arguments);this.render=()=>fi` <slot part="feedback" class="${this.showStatus}"></slot> `}};Te.styles=hi`
30
30
  .on {
31
31
  display: inline-block;
32
32
  }
33
33
  .off {
34
34
  display: none;
35
35
  }
36
- `;customElements.define("qti-feedback-inline",Te);import{css as fi,html as bi}from"lit";var Re=class extends k{constructor(){super(...arguments);this.render=()=>bi` <slot part="feedback" class="${this.showStatus}"></slot> `}};Re.styles=fi`
36
+ `;customElements.define("qti-feedback-inline",Te);import{css as bi,html as gi}from"lit";var Se=class extends k{constructor(){super(...arguments);this.render=()=>gi` <slot part="feedback" class="${this.showStatus}"></slot> `}};Se.styles=bi`
37
37
  .on {
38
38
  display: inline-block;
39
39
  }
40
40
  .off {
41
41
  display: none;
42
42
  }
43
- `;customElements.define("qti-modal-feedback",Re);import{css as vi,html as yi}from"lit";import{ifDefined as ut}from"lit/directives/if-defined.js";import{property as dt}from"lit/decorators.js";import{LitElement as gi}from"lit";var b=class extends gi{constructor(){super(...arguments);this.responseIdentifier="";this.disabled=!1;this.readonly=!1}set correctResponse(e){console.warn("correctResponse is not implemented")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,cancelable:!1,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:e}}))}};n([dt({attribute:"response-identifier"})],b.prototype,"responseIdentifier",2),n([dt({reflect:!0,type:Boolean})],b.prototype,"disabled",2),n([dt({reflect:!0,type:Boolean})],b.prototype,"readonly",2);import{ref as xi,createRef as Ei}from"lit/directives/ref.js";import{customElement as _i,property as Se,state as Ci}from"lit/decorators.js";var L=class extends b{constructor(){super(...arguments);this.textareaRef=Ei();this._value=""}handleclassNamesChange(e,t){this.classNames.split(" ").forEach(s=>{if(s.startsWith("qti-height-lines")){let o=s.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(o))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[vi`
43
+ `;customElements.define("qti-modal-feedback",Se);import{css as yi,html as xi}from"lit";import{ifDefined as mt}from"lit/directives/if-defined.js";import{property as ut}from"lit/decorators.js";import{LitElement as vi}from"lit";var b=class extends vi{constructor(){super(...arguments);this.responseIdentifier="";this.disabled=!1;this.readonly=!1}set correctResponse(e){console.warn("correctResponse is not implemented")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,cancelable:!1,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:e}}))}};n([ut({attribute:"response-identifier"})],b.prototype,"responseIdentifier",2),n([ut({reflect:!0,type:Boolean})],b.prototype,"disabled",2),n([ut({reflect:!0,type:Boolean})],b.prototype,"readonly",2);import{ref as Ei,createRef as _i}from"lit/directives/ref.js";import{customElement as Ci,property as Le,state as qi}from"lit/decorators.js";var M=class extends b{constructor(){super(...arguments);this.textareaRef=_i();this._value=""}handleclassNamesChange(e,t){this.classNames.split(" ").forEach(s=>{if(s.startsWith("qti-height-lines")){let o=s.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(o))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[yi`
44
44
  /* PK: display host as block, else design will be collapsed */
45
45
  :host {
46
46
  display: block;
@@ -51,21 +51,21 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
51
51
  height: 100%;
52
52
  border: 0;
53
53
  }
54
- `]}render(){return yi`<textarea
54
+ `]}render(){return xi`<textarea
55
55
  part="textarea"
56
- ${xi(this.textareaRef)}
56
+ ${Ei(this.textareaRef)}
57
57
  spellcheck="false"
58
58
  autocomplete="off"
59
59
  @keydown="${e=>e.stopImmediatePropagation()}"
60
60
  @keyup="${this.textChanged}"
61
61
  @change="${this.textChanged}"
62
- placeholder="${ut(this.placeholderText?this.placeholderText:void 0)}"
63
- maxlength="${ut(this.expectedLength?this.expectedLength:void 0)}"
64
- pattern="${ut(this.patternMask?this.patternMask:void 0)}"
62
+ placeholder="${mt(this.placeholderText?this.placeholderText:void 0)}"
63
+ maxlength="${mt(this.expectedLength?this.expectedLength:void 0)}"
64
+ pattern="${mt(this.patternMask?this.patternMask:void 0)}"
65
65
  ?disabled="${this.disabled}"
66
66
  ?readonly="${this.readonly}"
67
67
  .value=${this._value}
68
- ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};n([Se({type:Number,attribute:"expected-length"})],L.prototype,"expectedLength",2),n([Se({type:String,attribute:"pattern-mask"})],L.prototype,"patternMask",2),n([Se({type:String,attribute:"placeholder-text"})],L.prototype,"placeholderText",2),n([Ci()],L.prototype,"_value",2),n([Se({type:String,attribute:"class"})],L.prototype,"classNames",2),n([y("classNames",{waitUntilFirstUpdate:!0})],L.prototype,"handleclassNamesChange",1),L=n([_i("qti-extended-text-interaction")],L);import{css as qi,html as Ai}from"lit";import{customElement as ki,property as Le,state as mt}from"lit/decorators.js";import{ifDefined as ir}from"lit/directives/if-defined.js";import{createRef as wi}from"lit/directives/ref.js";function rr(a,i){let e,t=f({},i);return(r,s)=>{let{connectedCallback:o,disconnectedCallback:c}=r;r.connectedCallback=function(){var d;o.call(this);let l=u=>{let g=Array.from(this.querySelectorAll(a));for(let h of u){let R=Array.from(h.addedNodes).map(V=>V),v=Array.from(h.addedNodes).map(V=>V);h.type==="childList"&&R.find(V=>g.includes(V))&&this[s](R,v)}};e=new MutationObserver(l),e.observe(this,{childList:!0,subtree:!0});let p=(d=this.querySelectorAll(a))!=null?d:[];this[s](Array.from(p),[])},r.disconnectedCallback=function(){c.call(this),e.disconnect()}}}var w=class extends b{constructor(){super(...arguments);this._value="";this._correctValue="";this._size=5;this.inputRef=wi()}handleclassNamesChange(e,t){t.split(" ").forEach(s=>{if(s.startsWith("qti-input-width")){let o=s.replace("qti-input-width-","");this._size=parseInt(o)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[qi`
68
+ ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};n([Le({type:Number,attribute:"expected-length"})],M.prototype,"expectedLength",2),n([Le({type:String,attribute:"pattern-mask"})],M.prototype,"patternMask",2),n([Le({type:String,attribute:"placeholder-text"})],M.prototype,"placeholderText",2),n([qi()],M.prototype,"_value",2),n([Le({type:String,attribute:"class"})],M.prototype,"classNames",2),n([y("classNames",{waitUntilFirstUpdate:!0})],M.prototype,"handleclassNamesChange",1),M=n([Ci("qti-extended-text-interaction")],M);import{css as Ai,html as ki}from"lit";import{customElement as wi,property as Me,state as ht}from"lit/decorators.js";import{ifDefined as sr}from"lit/directives/if-defined.js";import{createRef as $i}from"lit/directives/ref.js";function ir(a,i){let e,t=f({},i);return(r,s)=>{let{connectedCallback:o,disconnectedCallback:c}=r;r.connectedCallback=function(){var d;o.call(this);let l=u=>{let g=Array.from(this.querySelectorAll(a));for(let h of u){let T=Array.from(h.addedNodes).map(H=>H),v=Array.from(h.addedNodes).map(H=>H);h.type==="childList"&&T.find(H=>g.includes(H))&&this[s](T,v)}};e=new MutationObserver(l),e.observe(this,{childList:!0,subtree:!0});let p=(d=this.querySelectorAll(a))!=null?d:[];this[s](Array.from(p),[])},r.disconnectedCallback=function(){c.call(this),e.disconnect()}}}var w=class extends b{constructor(){super(...arguments);this._value="";this._correctValue="";this._size=5;this.inputRef=$i()}handleclassNamesChange(e,t){t.split(" ").forEach(s=>{if(s.startsWith("qti-input-width")){let o=s.replace("qti-input-width-","");this._size=parseInt(o)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[Ai`
69
69
  :host {
70
70
  display: inline-flex;
71
71
  display: flex;
@@ -77,7 +77,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
77
77
  position: absolute;
78
78
  width: 100%;
79
79
  }
80
- `]}set correctResponse(e){this._correctValue=e}render(){return Ai`
80
+ `]}set correctResponse(e){this._correctValue=e}render(){return ki`
81
81
  <div part="correct">${this._correctValue}</div>
82
82
  <input
83
83
  part="input"
@@ -87,32 +87,32 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
87
87
  @keyup="${this.textChanged}"
88
88
  @change="${this.textChanged}"
89
89
  type="${this.patternMask=="[0-9]*"?"number":"text"}"
90
- placeholder="${ir(this.placeholderText?this.placeholderText:void 0)}"
90
+ placeholder="${sr(this.placeholderText?this.placeholderText:void 0)}"
91
91
  .value="${this._value}"
92
92
  size="${this._size}"
93
- pattern="${ir(this.patternMask?this.patternMask:void 0)}"
93
+ pattern="${sr(this.patternMask?this.patternMask:void 0)}"
94
94
  ?disabled="${this.disabled}"
95
95
  ?readonly="${this.readonly}"
96
96
  />
97
- `}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};n([Le({type:Number,attribute:"expected-length"})],w.prototype,"expectedLength",2),n([Le({type:String,attribute:"pattern-mask"})],w.prototype,"patternMask",2),n([Le({type:String,attribute:"placeholder-text"})],w.prototype,"placeholderText",2),n([mt()],w.prototype,"_value",2),n([mt()],w.prototype,"_correctValue",2),n([mt()],w.prototype,"_size",2),n([Le({type:String,attribute:"class"})],w.prototype,"classNames",2),n([y("classNames")],w.prototype,"handleclassNamesChange",1),w=n([ki("qti-text-entry-interaction")],w);import{html as $i}from"lit";import{property as sr}from"lit/decorators.js";var E=class extends b{constructor(){super();this._choiceElements=[];this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(e,t)=>this._choiceElements.forEach(r=>r.disabled=t);this._handleReadonlyChange=(e,t)=>this._choiceElements.forEach(r=>r.readonly=t);this._handleMaxChoicesChange=()=>this._determineInputType();this.addEventListener("qti-register-choice",this._registerChoiceElement),this.addEventListener("qti-loose-choice",this._looseChoiceElement)}validate(){return this._choiceElements.reduce((t,r)=>t+(r.checked?1:0),0)>=this.minChoices}set response(e){let t=Array.isArray(e)?e:[e];this._choiceElements.forEach(r=>{r.checked=!!t.find(s=>s===r.identifier)})}set correctResponse(e){let t=Array.isArray(e)?e:[e];if(e==""){this._choiceElements.forEach(r=>{r.removeAttribute("data-correct-response")});return}this._choiceElements.forEach(r=>{r.setAttribute("data-correct-response",t.find(s=>s===r.identifier)?"true":"false")})}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler),this.removeEventListener("qti-register-choice",this._registerChoiceElement)}_registerChoiceElement(e){e.stopPropagation();let t=e.target;this._choiceElements.push(t),this._setInputType(t)}_looseChoiceElement(e){e.stopPropagation();let t=e.target;this._choiceElements.push(t),this._choiceElements=this._choiceElements.filter(r=>r!==t)}_determineInputType(){this._choiceElements.forEach(e=>{this._setInputType(e)})}_setInputType(e){this.maxChoices===1?e.setAttribute("role","radio"):e.setAttribute("role","checkbox")}_choiceElementSelectedHandler(e){this.maxChoices===1&&this._choiceElements.filter(t=>t.identifier!==e.detail.identifier).forEach(t=>{t.checked=!1}),this._choiceElementSelected()}_choiceElementSelected(){let e=this._choiceElements.filter(r=>r.checked).map(r=>r.identifier);this.maxChoices>1&&(this.maxChoices===e.length?this._choiceElements.forEach(r=>r.disabled=!r.checked):this._choiceElements.forEach(r=>r.disabled=!1));let t;this.maxChoices===1?t=e.length>0?e[0]:void 0:t=e,this.saveResponse(t)}};n([sr({type:Number,attribute:"min-choices"})],E.prototype,"minChoices",2),n([sr({type:Number,attribute:"max-choices"})],E.prototype,"maxChoices",2),n([y("disabled",{waitUntilFirstUpdate:!0})],E.prototype,"_handleDisabledChange",2),n([y("readonly",{waitUntilFirstUpdate:!0})],E.prototype,"_handleReadonlyChange",2),n([y("maxChoices",{waitUntilFirstUpdate:!0})],E.prototype,"_handleMaxChoicesChange",2);var ht=class extends E{constructor(){super(...arguments);this.render=()=>$i`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",ht);import{css as Ti,html as or}from"lit";import{property as Ri,state as nr}from"lit/decorators.js";import{unsafeHTML as ar}from"lit/directives/unsafe-html.js";var K=class extends b{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[Ti`
97
+ `}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};n([Me({type:Number,attribute:"expected-length"})],w.prototype,"expectedLength",2),n([Me({type:String,attribute:"pattern-mask"})],w.prototype,"patternMask",2),n([Me({type:String,attribute:"placeholder-text"})],w.prototype,"placeholderText",2),n([ht()],w.prototype,"_value",2),n([ht()],w.prototype,"_correctValue",2),n([ht()],w.prototype,"_size",2),n([Me({type:String,attribute:"class"})],w.prototype,"classNames",2),n([y("classNames")],w.prototype,"handleclassNamesChange",1),w=n([wi("qti-text-entry-interaction")],w);import{html as Ri}from"lit";import{property as or}from"lit/decorators.js";var E=class extends b{constructor(){super();this._choiceElements=[];this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(e,t)=>this._choiceElements.forEach(r=>r.disabled=t);this._handleReadonlyChange=(e,t)=>this._choiceElements.forEach(r=>r.readonly=t);this._handleMaxChoicesChange=()=>this._determineInputType();this.addEventListener("qti-register-choice",this._registerChoiceElement),this.addEventListener("qti-loose-choice",this._looseChoiceElement)}validate(){return this._choiceElements.reduce((t,r)=>t+(r.checked?1:0),0)>=this.minChoices}set response(e){let t=Array.isArray(e)?e:[e];this._choiceElements.forEach(r=>{r.checked=!!t.find(s=>s===r.identifier)})}set correctResponse(e){let t=Array.isArray(e)?e:[e];if(e==""){this._choiceElements.forEach(r=>{r.removeAttribute("data-correct-response")});return}this._choiceElements.forEach(r=>{r.setAttribute("data-correct-response",t.find(s=>s===r.identifier)?"true":"false")})}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler),this.removeEventListener("qti-register-choice",this._registerChoiceElement)}_registerChoiceElement(e){e.stopPropagation();let t=e.target;this._choiceElements.push(t),this._setInputType(t)}_looseChoiceElement(e){e.stopPropagation();let t=e.target;this._choiceElements.push(t),this._choiceElements=this._choiceElements.filter(r=>r!==t)}_determineInputType(){this._choiceElements.forEach(e=>{this._setInputType(e)})}_setInputType(e){this.maxChoices===1?e.setAttribute("role","radio"):e.setAttribute("role","checkbox")}_choiceElementSelectedHandler(e){this.maxChoices===1&&this._choiceElements.filter(t=>t.identifier!==e.detail.identifier).forEach(t=>{t.checked=!1}),this._choiceElementSelected()}_choiceElementSelected(){let e=this._choiceElements.filter(r=>r.checked).map(r=>r.identifier);this.maxChoices>1&&(this.maxChoices===e.length?this._choiceElements.forEach(r=>r.disabled=!r.checked):this._choiceElements.forEach(r=>r.disabled=!1));let t;this.maxChoices===1?t=e.length>0?e[0]:void 0:t=e,this.saveResponse(t)}};n([or({type:Number,attribute:"min-choices"})],E.prototype,"minChoices",2),n([or({type:Number,attribute:"max-choices"})],E.prototype,"maxChoices",2),n([y("disabled",{waitUntilFirstUpdate:!0})],E.prototype,"_handleDisabledChange",2),n([y("readonly",{waitUntilFirstUpdate:!0})],E.prototype,"_handleReadonlyChange",2),n([y("maxChoices",{waitUntilFirstUpdate:!0})],E.prototype,"_handleMaxChoicesChange",2);var ft=class extends E{constructor(){super(...arguments);this.render=()=>Ri`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",ft);import{css as Ti,html as nr}from"lit";import{property as Si,state as ar}from"lit/decorators.js";import{unsafeHTML as lr}from"lit/directives/unsafe-html.js";var j=class extends b{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[Ti`
98
98
  :host {
99
99
  display: inline-block;
100
100
  }
101
- `]}render(){return or`
101
+ `]}render(){return nr`
102
102
  <select part="select" @change="${this.choiceSelected}" ?disabled="${this.disabled}" ?readonly="${this.readonly}">
103
- ${this.options.map(e=>or`
104
- <option value="${e.value}" ?selected="${e.selected}">${ar(e.textContent)}</option>
103
+ ${this.options.map(e=>nr`
104
+ <option value="${e.value}" ?selected="${e.selected}">${lr(e.textContent)}</option>
105
105
  `)}
106
106
  </select>
107
107
 
108
- ${ar(this.correctOption)}
109
- `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(t=>({textContent:t.innerHTML,value:t.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>q(f({},e),{selected:t===0}))}set response(e){this.options=this.options.map(t=>(e===t.value&&(t.selected=!0),t))}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(t=>e===t.value).textContent}</span>`}choiceSelected(e){let t=e.target.value;this.options=this.options.map(r=>q(f({},r),{selected:r.value===t})),this.saveResponse(t)}};K.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],n([nr()],K.prototype,"options",2),n([nr()],K.prototype,"correctOption",2),n([Ri({attribute:"data-prompt",type:String})],K.prototype,"dataPrompt",2);customElements.define("qti-inline-choice-interaction",K);import{customElement as Li,property as Mi}from"lit/decorators.js";import{html as Hi}from"lit";import{css as Si}from"lit";var lr=Si`
108
+ ${lr(this.correctOption)}
109
+ `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(t=>({textContent:t.innerHTML,value:t.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>q(f({},e),{selected:t===0}))}set response(e){this.options=this.options.map(t=>(e===t.value&&(t.selected=!0),t))}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(t=>e===t.value).textContent}</span>`}choiceSelected(e){let t=e.target.value;this.options=this.options.map(r=>q(f({},r),{selected:r.value===t})),this.saveResponse(t)}};j.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],n([ar()],j.prototype,"options",2),n([ar()],j.prototype,"correctOption",2),n([Si({attribute:"data-prompt",type:String})],j.prototype,"dataPrompt",2);customElements.define("qti-inline-choice-interaction",j);import{customElement as Mi,property as Vi}from"lit/decorators.js";import{html as Ni}from"lit";import{css as Li}from"lit";var cr=Li`
110
110
  :host {
111
111
  display: flex;
112
112
  flex-direction: column;
113
113
  // align-items: flex-start;
114
114
  }
115
- `;var Q=class extends E{render(){return Hi` <slot name="prompt"></slot><slot part="slot"></slot>`}};Q.styles=lr,n([Mi({type:String})],Q.prototype,"orientation",2),Q=n([Li("qti-choice-interaction")],Q);import{css as Vi,html as Ni,LitElement as Di}from"lit";import{customElement as Pi}from"lit/decorators.js";var cr=`<qti-response-processing>
115
+ `;var Q=class extends E{render(){return Ni` <slot name="prompt"></slot><slot part="slot"></slot>`}};Q.styles=cr,n([Vi({type:String})],Q.prototype,"orientation",2),Q=n([Mi("qti-choice-interaction")],Q);import{css as Hi,html as Di,LitElement as Pi}from"lit";import{customElement as Oi}from"lit/decorators.js";var pr=`<qti-response-processing>
116
116
  <qti-response-condition>
117
117
  <qti-response-if>
118
118
  <qti-match>
@@ -129,7 +129,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
129
129
  </qti-set-outcome-value>
130
130
  </qti-response-else>
131
131
  </qti-response-condition>
132
- </qti-response-processing>`,pr=`<qti-response-processing>
132
+ </qti-response-processing>`,dr=`<qti-response-processing>
133
133
  <qti-response-condition>
134
134
  <qti-response-if>
135
135
  <qti-is-null>
@@ -145,7 +145,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
145
145
  </qti-set-outcome-value>
146
146
  </qti-response-else>
147
147
  </qti-response-condition>
148
- </qti-response-processing>`,dr=`<qti-response-processing>
148
+ </qti-response-processing>`,ur=`<qti-response-processing>
149
149
  <qti-response-condition>
150
150
  <qti-response-if>
151
151
  <qti-is-null>
@@ -161,24 +161,24 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
161
161
  </qti-set-outcome-value>
162
162
  </qti-response-else>
163
163
  </qti-response-condition>
164
- </qti-response-processing>`;var j=class extends Di{render(){return Ni`<slot></slot>`}process(){let i=[...this.children];for(let e of i)e.process()}firstUpdated(i){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":{this.appendChild(this.fragmentFromString(pr).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(dr).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(cr).firstElementChild.firstElementChild);break}}}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};j.styles=[Vi`
164
+ </qti-response-processing>`;var K=class extends Pi{render(){return Di`<slot></slot>`}process(){let i=[...this.children];for(let e of i)e.process()}firstUpdated(i){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":{this.appendChild(this.fragmentFromString(dr).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(ur).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(pr).firstElementChild.firstElementChild);break}}}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};K.styles=[Hi`
165
165
  :host {
166
166
  display: none;
167
167
  }
168
- `],j=n([Pi("qti-response-processing")],j);import{property as Fi}from"lit/decorators.js";import{customElement as Oi}from"lit/decorators.js";import{html as Ui,LitElement as Ii}from"lit";var M=class extends Ii{render(){return Ui`<slot></slot>`}process(){throw new Error("Not implemented")}};M=n([Oi("qti-rule")],M);var Me=class extends M{get childExpression(){return this.firstElementChild}process(){let e=this.getAttribute("identifier"),t=this.closest("qti-assessment-item").getVariable(e),r;return t.interpolationTable&&(r=t.interpolationTable.get(parseInt(this.childExpression.calculate()))),r==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:ue(r)}})),r)}};n([Fi({type:String})],Me.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Me);import{html as Xi}from"lit";var ft=class extends M{render(){return Xi`<slot></slot>`}process(){let i=[...this.children];for(let e=0;e<i.length;e++){let t=i[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",ft);var bt=class extends M{process(){let i=this.getAttribute("identifier"),e=this.firstElementChild,t=e?e.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:Array.isArray(t)?t.map(r=>ue(r)):ue(t)}}))}};customElements.define("qti-set-outcome-value",bt);import{LitElement as Yi,html as Bi}from"lit";var me=class extends Yi{render(){return Bi`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let i=this.getSubRules();for(let e=0;e<i.length;e++)i[e].process()}};customElements.define("qti-response-else",me);import{html as Ki}from"lit";var he=class extends me{calculate(){return this.firstElementChild.calculate()}getSubRules(){let i=[];for(let e=1;e<this.children.length;e++)i.push(this.children[e]);return i}};customElements.define("qti-response-if",he);var gt=class extends he{render(){return Ki`${super.render()}`}};customElements.define("qti-response-else-if",gt);import{LitElement as ji,css as zi,html as Wi}from"lit";import{state as Ji}from"lit/decorators.js";var m=class extends ji{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.assessmentItem.getVariable(t)}case"qti-multiple":{let r=e.getResult();return r.length>0?{identifier:"",baseType:r[0].baseType,value:r.map(s=>s.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",r=this.assessmentItem.getResponse(t);return{baseType:r.baseType,value:r.correctResponse,cardinality:r.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch(t){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return Wi`<pre>${JSON.stringify(this.result,null,2)}</pre>
169
- <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};m.styles=zi`
168
+ `],K=n([Oi("qti-response-processing")],K);import{property as Xi}from"lit/decorators.js";import{customElement as Ui}from"lit/decorators.js";import{html as Ii,LitElement as Fi}from"lit";var V=class extends Fi{render(){return Ii`<slot></slot>`}process(){throw new Error("Not implemented")}};V=n([Ui("qti-rule")],V);var Ve=class extends V{get childExpression(){return this.firstElementChild}process(){let e=this.getAttribute("identifier"),t=this.closest("qti-assessment-item").getVariable(e),r;return t.interpolationTable&&(r=t.interpolationTable.get(parseInt(this.childExpression.calculate()))),r==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:ue(r)}})),r)}};n([Xi({type:String})],Ve.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Ve);import{html as Yi}from"lit";var bt=class extends V{render(){return Yi`<slot></slot>`}process(){let i=[...this.children];for(let e=0;e<i.length;e++){let t=i[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",bt);var gt=class extends V{process(){let i=this.getAttribute("identifier"),e=this.firstElementChild,t=e?e.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:i,value:Array.isArray(t)?t.map(r=>ue(r)):ue(t)}}))}};customElements.define("qti-set-outcome-value",gt);import{LitElement as Bi,html as ji}from"lit";var me=class extends Bi{render(){return ji`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let i=this.getSubRules();for(let e=0;e<i.length;e++)i[e].process()}};customElements.define("qti-response-else",me);import{html as Ki}from"lit";var he=class extends me{calculate(){return this.firstElementChild.calculate()}getSubRules(){let i=[];for(let e=1;e<this.children.length;e++)i.push(this.children[e]);return i}};customElements.define("qti-response-if",he);var vt=class extends he{render(){return Ki`${super.render()}`}};customElements.define("qti-response-else-if",vt);import{LitElement as zi,css as Wi,html as Ji}from"lit";import{state as Zi}from"lit/decorators.js";var m=class extends zi{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.assessmentItem.getVariable(t)}case"qti-multiple":{let r=e.getResult();return r.length>0?{identifier:"",baseType:r[0].baseType,value:r.map(s=>s.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",r=this.assessmentItem.getResponse(t);return{baseType:r.baseType,value:r.correctResponse,cardinality:r.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch(t){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return Ji`<pre>${JSON.stringify(this.result,null,2)}</pre>
169
+ <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};m.styles=Wi`
170
170
  slot {
171
171
  display: none;
172
172
  }
173
- `,n([Ji()],m.prototype,"result",2);var $=class extends m{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var He=class extends Zi($){calculate(){return this.calculateChildren(Array.from(this.children))}};function Zi(a){return class extends a{calculateChildren(e){return e.map(r=>{let s=r;if(!s.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let o=s.calculate();if(typeof o=="string")if(o==="true")o=!0;else if(o==="false")o=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return o}).every(r=>typeof r=="boolean"&&r)}}}customElements.define("qti-and",He);import{property as Gi}from"lit/decorators.js";var Ve=class extends m{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};n([Gi({type:String,attribute:"base-type"})],Ve.prototype,"baseType",2);customElements.define("qti-base-value",Ve);var vt=class extends ${getResult(){let i=this.getVariables();if(this.children.length===2){let e=i[0],t=i[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let r=e.value,s=t.value;return r.filter(l=>s.includes(l)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let r=e.value;return t.value.includes(r)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",vt);var yt=class extends m{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let i=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(i);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",yt);import{property as Qi}from"lit/decorators.js";var Ne=class extends m{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let s=parseFloat(t.value),o=parseFloat(r.value);if(!isNaN(s)&&!isNaN(o))return this.roundingMode==="significantFigures"?s.toPrecision(this.figures)===o.toPrecision(this.figures):Math.round(s*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${s}, ${o}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};n([Qi({type:String})],Ne.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Ne);import{property as es}from"lit/decorators.js";var T=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),s=parseInt(e,10);if(!isNaN(r)&&!isNaN(s))return r===s;console.error(`Cannot convert ${i} and/or ${e} to int.`);break}case"float":{let r=parseFloat(i),s=parseFloat(e);if(!isNaN(r)&&!isNaN(s))return r===s;console.error(`couldn't convert ${i} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=i.split(" ").sort(),s=e.split(" ").sort();if(r.length===2&&s.length===2)return t==="pair"&&(r.sort(),s.sort()),r.join(" ")===s.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${i} 2: ${e}`);break}}return!1}};var De=class extends m{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value)?(console.error("unexpected cardinality in qti equal"),!1):T.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};n([es({type:String})],De.prototype,"toleranceMode",2);customElements.define("qti-equal",De);var xt=class extends m{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",xt);var Et=class extends ${getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",Et);var _t=class extends m{getResult(){if(this.children.length===1){let i=this.getVariables();if(!i)return!0;let e=i[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",_t);var Ct=class extends m{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",Ct);var qt=class extends ${getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",qt);import{property as ts}from"lit/decorators.js";var Pe=class extends m{getResult(){let e=this.assessmentItem.getResponse(this.identifier);if(!e)return console.warn(`Response ${this.identifier} can not be found`),null;let t=e.mapping,r=Array.isArray(e.value)?e.value:[e.value],s=0;for(let o of r){let c=t.mapEntries.find(l=>T.compareSingleValues(l.mapKey,o,e.baseType));c==null||c.mappedValue==null?s+=t.defaultValue:s+=c.mappedValue}return t.lowerBound!=null&&(s=Math.max(t.lowerBound,s)),t.upperBound!=null&&(s=Math.min(t.upperBound,s)),s}};n([ts({type:String})],Pe.prototype,"identifier",2);customElements.define("qti-map-response",Pe);import{property as At}from"lit/decorators.js";import{LitElement as rs}from"lit";var ee=class extends rs{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};n([At({attribute:"default-value",type:Number})],ee.prototype,"defaultValue",2),n([At({attribute:"lower-bound",type:Number})],ee.prototype,"lowerBound",2),n([At({attribute:"upper-bound",type:Number})],ee.prototype,"upperBound",2);customElements.define("qti-mapping",ee);var kt=class a extends m{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return a.match(e,t)}return console.error("unexpected number of children in match"),null}static match(i,e){var t;if(e.cardinality==="single")return i.value===null?!1:Array.isArray(i.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):T.compareSingleValues((t=i.value)==null?void 0:t.toString(),e.value.toString(),e.baseType);{if(!Array.isArray(i.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(i.value.length!==e.value.length)return!1;let r=0;for(let s of e.value){if(e.cardinality==="ordered"){let o=i[r];if(!T.compareSingleValues(s,o,e.baseType))return!1}else{let o=null;for(let c of i.value)if(T.compareSingleValues(s,c,e.baseType)){o=c;break}if(o!==null)i.value.splice(i.value.indexOf(o),1);else return!1}r++}return!0}}};customElements.define("qti-match",kt);var wt=class extends m{getResult(){let i=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,t]=i;if(e.baseType!==t.baseType&&console.warn("Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let r=e.value;return t.value.includes(r)}};customElements.define("qti-member",wt);var $t=class extends m{getResult(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return i}};customElements.define("qti-multiple",$t);import{html as is}from"lit";var Tt=class extends m{render(){return is`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Tt);var Rt=class extends ${getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate();if(typeof r=="string")if(r==="true")r=!0;else if(r==="false")r=!1;else return console.error("unexpected value in qti-or, expected boolean"),null;return r}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Rt);var St=class extends m{getResult(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",St);import{consume as ss}from"@lit/context";import{LitElement as os,html as ns}from"lit";import{property as as,state as ls}from"lit/decorators.js";var fe=class extends os{render(){var t,r;let e=(r=(t=this.itemContext)==null?void 0:t.variables.find(s=>s.identifier===this.identifier))==null?void 0:r.value;return ns`${JSON.stringify(e,null,2)}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};n([as({type:String})],fe.prototype,"identifier",2),n([ss({context:D,subscribe:!0}),ls()],fe.prototype,"itemContext",2);customElements.define("qti-printed-variable",fe);var Lt=class extends m{getResult(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseInt(r.value.toString())}catch(s){console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",Lt);import{property as cs}from"lit/decorators.js";var Oe=class extends m{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti string-match"),!1;let s=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),o=this.caseSensitive==="true"?r.value:r.value.toLowerCase();return T.compareSingleValues(s,o,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};n([cs({type:String,attribute:"case-sensitive"})],Oe.prototype,"caseSensitive",2);customElements.define("qti-string-match",Oe);var Mt=class extends m{getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate();return Number.isNaN(r)?(console.error("unexpected value in qti-sum, expected number"),null):Number(r)}).reduce((e,t)=>e+t,0)}};customElements.define("qti-sum",Mt);var Ht=class extends m{getResult(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",Ht);import{LitElement as ps,html as ur}from"lit";var Vt=class extends ps{constructor(){super(...arguments);this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},s=c=>{let l={},p=c.getAttribute("key");if(p){let d=Array.from(c.children),u=d.map(h=>h.getAttribute("key"));u.length>0&&!u.find(h=>!Number.isInteger(+h))?l[p]=d.map(h=>o(h)):l[p]=c.textContent}return l},o=c=>{if(c){let l={};for(let p of c.children)l=f(f({},l),s(p));return l}};for(let c of t)return c.getAttribute("key")||(r=f(f({},r),o(c))),r;console.log("Can not find qti-custom-interaction config")}register(e){let t=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",r=t=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");r.classList.add("qti-customInteraction"),t=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let s=t=="IMS"?{properties:this.dataset}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,s,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,s),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(c=>c.getAttribute("href")).forEach(c=>{let l=document.createElement("link");l.rel="stylesheet",l.type="text/css",l.media="screen",l.href=c,r.appendChild(l)})}connectedCallback(){super.connectedCallback();let e={context:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl,catchError:!0};if(window.requirePaths&&window.requireShim&&(e.paths=window.requirePaths,e.shim=window.requireShim),!globalThis.require){this._errorMessage="requirejs not found, load with cdn: https://cdnjs.com/libraries/require.js";return}requirejs.config(e)(["require"],r=>{!r.defined("qtiCustomInteractionContext")&&define("qtiCustomInteractionContext",()=>({register:o=>{this.register(o)},notifyReady:()=>{}}));let s=r.defined(this.module);r([this.module],o=>{s&&this.register(o)},o=>{this._errorMessage=o})},r=>{this._errorMessage=r})}render(){return ur`<slot></slot>${this._errorMessage&&ur`<div style="color:red">
173
+ `,n([Zi()],m.prototype,"result",2);var $=class extends m{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Ne=class extends Gi($){calculate(){return this.calculateChildren(Array.from(this.children))}};function Gi(a){return class extends a{calculateChildren(e){return e.map(r=>{let s=r;if(!s.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let o=s.calculate();if(typeof o=="string")if(o==="true")o=!0;else if(o==="false")o=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return o}).every(r=>typeof r=="boolean"&&r)}}}customElements.define("qti-and",Ne);import{property as Qi}from"lit/decorators.js";var He=class extends m{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};n([Qi({type:String,attribute:"base-type"})],He.prototype,"baseType",2);customElements.define("qti-base-value",He);var yt=class extends ${getResult(){let i=this.getVariables();if(this.children.length===2){let e=i[0],t=i[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let r=e.value,s=t.value;return r.filter(l=>s.includes(l)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let r=e.value;return t.value.includes(r)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",yt);var xt=class extends m{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let i=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(i);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",xt);import{property as es}from"lit/decorators.js";var De=class extends m{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let s=parseFloat(t.value),o=parseFloat(r.value);if(!isNaN(s)&&!isNaN(o))return this.roundingMode==="significantFigures"?s.toPrecision(this.figures)===o.toPrecision(this.figures):Math.round(s*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${s}, ${o}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};n([es({type:String})],De.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",De);import{property as ts}from"lit/decorators.js";var R=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),s=parseInt(e,10);if(!isNaN(r)&&!isNaN(s))return r===s;console.error(`Cannot convert ${i} and/or ${e} to int.`);break}case"float":{let r=parseFloat(i),s=parseFloat(e);if(!isNaN(r)&&!isNaN(s))return r===s;console.error(`couldn't convert ${i} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=i.split(" ").sort(),s=e.split(" ").sort();if(r.length===2&&s.length===2)return t==="pair"&&(r.sort(),s.sort()),r.join(" ")===s.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${i} 2: ${e}`);break}}return!1}};var Pe=class extends m{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value)?(console.error("unexpected cardinality in qti equal"),!1):R.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};n([ts({type:String})],Pe.prototype,"toleranceMode",2);customElements.define("qti-equal",Pe);var Et=class extends m{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",Et);var _t=class extends ${getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",_t);var Ct=class extends m{getResult(){if(this.children.length===1){let i=this.getVariables();if(!i)return!0;let e=i[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",Ct);var qt=class extends m{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",qt);var At=class extends ${getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",At);import{property as rs}from"lit/decorators.js";var Oe=class extends m{getResult(){let e=this.assessmentItem.getResponse(this.identifier);if(!e)return console.warn(`Response ${this.identifier} can not be found`),null;let t=e.mapping,r=Array.isArray(e.value)?e.value:[e.value],s=0;for(let o of r){let c=t.mapEntries.find(l=>R.compareSingleValues(l.mapKey,o,e.baseType));c==null||c.mappedValue==null?s+=t.defaultValue:s+=c.mappedValue}return t.lowerBound!=null&&(s=Math.max(t.lowerBound,s)),t.upperBound!=null&&(s=Math.min(t.upperBound,s)),s}};n([rs({type:String})],Oe.prototype,"identifier",2);customElements.define("qti-map-response",Oe);import{property as kt}from"lit/decorators.js";import{LitElement as is}from"lit";var ee=class extends is{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};n([kt({attribute:"default-value",type:Number})],ee.prototype,"defaultValue",2),n([kt({attribute:"lower-bound",type:Number})],ee.prototype,"lowerBound",2),n([kt({attribute:"upper-bound",type:Number})],ee.prototype,"upperBound",2);customElements.define("qti-mapping",ee);var wt=class a extends m{getResult(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return a.match(e,t)}return console.error("unexpected number of children in match"),null}static match(i,e){var t;if(e.cardinality==="single")return i.value===null?!1:Array.isArray(i.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):R.compareSingleValues((t=i.value)==null?void 0:t.toString(),e.value.toString(),e.baseType);{if(!Array.isArray(i.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(i.value.length!==e.value.length)return!1;let r=0;for(let s of e.value){if(e.cardinality==="ordered"){let o=i[r];if(!R.compareSingleValues(s,o,e.baseType))return!1}else{let o=null;for(let c of i.value)if(R.compareSingleValues(s,c,e.baseType)){o=c;break}if(o!==null)i.value.splice(i.value.indexOf(o),1);else return!1}r++}return!0}}};customElements.define("qti-match",wt);var $t=class extends m{getResult(){let i=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,t]=i;if(e.baseType!==t.baseType&&console.warn("Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let r=e.value;return t.value.includes(r)}};customElements.define("qti-member",$t);var Rt=class extends m{getResult(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return i}};customElements.define("qti-multiple",Rt);import{html as ss}from"lit";var Tt=class extends m{render(){return ss`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Tt);var St=class extends ${getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate();if(typeof r=="string")if(r==="true")r=!0;else if(r==="false")r=!1;else return console.error("unexpected value in qti-or, expected boolean"),null;return r}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",St);var Lt=class extends m{getResult(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",Lt);import{consume as os}from"@lit/context";import{LitElement as ns,html as as}from"lit";import{property as ls,state as cs}from"lit/decorators.js";var fe=class extends ns{render(){var t,r;let e=(r=(t=this.itemContext)==null?void 0:t.variables.find(s=>s.identifier===this.identifier))==null?void 0:r.value;return as`${JSON.stringify(e,null,2)}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};n([ls({type:String})],fe.prototype,"identifier",2),n([os({context:S,subscribe:!0}),cs()],fe.prototype,"itemContext",2);customElements.define("qti-printed-variable",fe);var Mt=class extends m{getResult(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseInt(r.value.toString())}catch(s){console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",Mt);import{property as ps}from"lit/decorators.js";var Ue=class extends m{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti string-match"),!1;let s=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),o=this.caseSensitive==="true"?r.value:r.value.toLowerCase();return R.compareSingleValues(s,o,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};n([ps({type:String,attribute:"case-sensitive"})],Ue.prototype,"caseSensitive",2);customElements.define("qti-string-match",Ue);var Vt=class extends m{getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate();return Number.isNaN(r)?(console.error("unexpected value in qti-sum, expected number"),null):Number(r)}).reduce((e,t)=>e+t,0)}};customElements.define("qti-sum",Vt);var Nt=class extends m{getResult(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",Nt);import{LitElement as ds,html as mr}from"lit";var Ht=class extends ds{constructor(){super(...arguments);this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},s=c=>{let l={},p=c.getAttribute("key");if(p){let d=Array.from(c.children),u=d.map(h=>h.getAttribute("key"));u.length>0&&!u.find(h=>!Number.isInteger(+h))?l[p]=d.map(h=>o(h)):l[p]=c.textContent}return l},o=c=>{if(c){let l={};for(let p of c.children)l=f(f({},l),s(p));return l}};for(let c of t)return c.getAttribute("key")||(r=f(f({},r),o(c))),r;console.log("Can not find qti-custom-interaction config")}register(e){let t=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",r=t=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");r.classList.add("qti-customInteraction"),t=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let s=t=="IMS"?{properties:this.dataset}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,s,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,s),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(c=>c.getAttribute("href")).forEach(c=>{let l=document.createElement("link");l.rel="stylesheet",l.type="text/css",l.media="screen",l.href=c,r.appendChild(l)})}connectedCallback(){super.connectedCallback();let e={context:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl,catchError:!0};if(window.requirePaths&&window.requireShim&&(e.paths=window.requirePaths,e.shim=window.requireShim),!globalThis.require){this._errorMessage="requirejs not found, load with cdn: https://cdnjs.com/libraries/require.js";return}requirejs.config(e)(["require"],r=>{!r.defined("qtiCustomInteractionContext")&&define("qtiCustomInteractionContext",()=>({register:o=>{this.register(o)},notifyReady:()=>{}}));let s=r.defined(this.module);r([this.module],o=>{s&&this.register(o)},o=>{this._errorMessage=o})},r=>{this._errorMessage=r})}render(){return mr`<slot></slot>${this._errorMessage&&mr`<div style="color:red">
174
174
  <h1>Error</h1>
175
175
  ${this._errorMessage}
176
- </div>`}`}};customElements.define("qti-portable-custom-interaction",Vt);import{LitElement as us,css as ms,html as fr}from"lit";var Ue=class a{constructor(){this._touchBegin=0;this._touchDown=null;this._lastClick=0;this._canDrag=!1;this._dragSrc=null;this._dragCopy=null;this._touchEndCalled=!1;this._dragRunning=!1;this._dataTransfer={data:{},setData:function(i,e){this.data[i]=e},getData:function(i){return this.data[i]},effectAllowed:"move"};this._copyOffset={x:0,y:0};this._lastTarget=null;this._currentDropContainer=null;this._handleClick=!0;this._DBLCLICKDELAY=500;this._CONTEXTMENUDELAY=1e3;this._DRAGDELTA=5;this._COPYOPACITY=.7;this.copyStylesDragClone=!0;this.dragOnClick=!1;this._createDragCopy=(i,e)=>{if(this._dragCopy===null&&this._dragRunning){this._dragSrc.style.opacity=this._COPYOPACITY,this._dragCopy=this._dragSrc.cloneNode(!0);let t=window.getComputedStyle(this._dragSrc);if(this._dragCopy.style="",this._dragCopy.setAttribute("dragclone",""),this.copyStylesDragClone)for(let r of t)this._dragCopy.style[r]=t.getPropertyValue(r);this._calculateDragCopyPosition(e),this._dragCopy.style.top=e.clientY-this._copyOffset.y+"px",this._dragCopy.style.left=e.clientX-this._copyOffset.x+"px",this._dragCopy.style.position="fixed",this._dragCopy.style.pointerEvents="none",this._dragCopy.style.zIndex="999999",this._dragCopy=document.body.appendChild(this._dragCopy),this._dispatchEvent(this._dragSrc,"dragstart")}if(this._dragRunning){let t=this;requestAnimationFrame(function(){t._touchEndCalled||t._dragCopy===null||(t._dragCopy.style.top=e.clientY-t._copyOffset.y+"px",t._dragCopy.style.left=e.clientX-t._copyOffset.x+"px")});let r=this._findDroppable(i);r!=this._lastTarget&&(this._dispatchEvent(r,"dragenter"),this._dispatchEvent(this._lastTarget,"dragleave"),this._lastTarget=r),this._currentDropContainer=r,this._currentDropContainer&&this._dispatchEvent(r,"dragover")}};return a._instance?a._instance:(a._instance=this,document.addEventListener("touchmove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("mousemove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchend",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("mouseup",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchcancel",this._touchCancel.bind(this),{passive:!1,capture:!1}),this)}addDraggables(i){i.forEach(e=>{e.addEventListener("touchstart",this._touchStart.bind(this),{passive:!1,capture:!1}),e.addEventListener("mousedown",this._touchStart.bind(this),{passive:!1,capture:!1})})}_touchStart(i){this._touchBegin=Date.now();let{x:e,y:t}=this._getPoint(i);if(this._touchDown={x:e,y:t},this._dragSrc=i.currentTarget,this._canDrag=!0,this.dragOnClick){let r={clientX:e,clientY:t};this._dragRunning=!0,this._createDragCopy(i,r)}i.preventDefault()}_touchMove(i){if(this._canDrag&&this._dragSrc){let{x:e,y:t}=this._getPoint(i),r={clientX:e,clientY:t};this._getDelta(r)>=this._DRAGDELTA&&(this._dragRunning=!0),this._createDragCopy(i,r),i.preventDefault()}}_touchEnd(i){var e;if(this._touchEndCalled=!0,this._canDrag=!1,this._currentDropContainer)this._dispatchEvent(this._currentDropContainer,"drop"),this._dispatchEvent(this._dragSrc,"dragend");else if(this._dragRunning){let t=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});t.dataTransfer={dropEffect:"none"},(e=this._dragSrc)==null||e.dispatchEvent(t)}this._reset()}_touchCancel(i){this._reset()}_findDroppable(i){let e=this._getPoint(i);return this.elementFromPoint(e.x,e.y)}elementFromPoint(i,e){let t=document.elementFromPoint(i,e);if(t){for(;t.shadowRoot;){let r=t.shadowRoot.elementFromPoint(i,e);if(r===null||r===t)break;t=r}return t}return null}_getPoint(i,e){return i&&i.touches&&(i=i.touches[0]),{x:e?i.pageX:i.clientX,y:e?i.pageY:i.clientY}}_calculateDragCopyPosition(i){let e=this._dragSrc.getBoundingClientRect();this._copyOffset.x=i.clientX-e.left,this._copyOffset.y=i.clientY-e.top}_getDelta(i){let e=Math.abs(i.clientX-this._touchDown.x),t=Math.abs(i.clientY-this._touchDown.y);return e+t}_dispatchEvent(i,e,t=!0){if(!i)return!1;let r=new CustomEvent(e,{bubbles:t,cancelable:!0});return r.dataTransfer=this._dataTransfer,i.dispatchEvent(r),r.defaultPrevented}_reset(){this._dragRunning&&(this._dragSrc.style.opacity="1.0",this._dragCopy.parentElement.removeChild(this._dragCopy)),this._dragRunning=!1,this._dragSrc=null,this._dragCopy=null,this._canDrag=!1,this._touchBegin=0,this._touchDown=null,this._lastClick=0,this._touchEndCalled=!1,this._dataTransfer={data:{},setData:function(i,e){this.data[i]=e},getData:function(i){return this.data[i]},effectAllowed:"move"},this._copyOffset={x:0,y:0},this._lastTarget=null,this._currentDropContainer=null,this._handleClick=!0}};import{property as ds}from"lit/decorators.js";var mr=(a,i,e)=>{class t extends a{constructor(){super(...arguments);this.disabled=!1}firstUpdated(o){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(o);let c=Array.from(i?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dragenterHandler=this.dragenterHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),c.forEach(l=>{l.setAttribute("dropzone","move"),l.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(l)});for(let l of c)this.observer=new MutationObserver(p=>{p.forEach(d=>{if(d.type==="attributes")switch(d.attributeName){case"disabled":{l.hasAttribute("disabled")?this.removeHandler(l):this.attachHandler(l);break}}})}),this.observer.observe(l,{attributes:!0})}attachHandler(o){o.addEventListener("dragover",this.dragoverHandler),o.addEventListener("dragenter",this.dragenterHandler),o.addEventListener("drop",this.dropHandler)}removeHandler(o){o.removeEventListener("dragover",this.dragoverHandler),o.removeEventListener("dragenter",this.dragenterHandler),o.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var o;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(o=this.observer)==null||o.disconnect())}dragenterHandler(o){o.preventDefault()}dragoverHandler(o){return o.preventDefault(),o.currentTarget.setAttribute("active",""),o.dataTransfer.dropEffect="move",!1}dropHandler(o){o.preventDefault();let c=o.currentTarget,l=this.querySelector(`[identifier=${o.dataTransfer.getData("text")}`),p=l||this.shadowRoot.querySelector(`[identifier=${o.dataTransfer.getData("text")}`);return c?p.parentElement.getAttribute("identifier")!==c.getAttribute("identifier")&&c.appendChild(p):console.error(`cannot find droppable, target: ${o.target?JSON.stringify(o.target):"null"}`),c.removeAttribute("active"),!1}dragleaveHandler(o){return o.preventDefault(),o.currentTarget.removeAttribute("active"),o.dataTransfer.dropEffect="none",!1}}return n([ds({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var hr=(a,i,e)=>{class t extends a{}return t};import{property as te}from"lit/decorators.js";var H=(a,i,e,t)=>{class r extends hr(mr(a,e,t),t,i){constructor(){super(...arguments);this.draggables=new Map;this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1}reInitDragAndDrop(c,l){if(this.classList.contains("qti-match-tabular"))return;c.filter(d=>!this.draggables||!this.draggables.get(d)).length>0&&(this.dragDropApi.addDraggables(c),c.forEach(d=>{this.draggables.set(d,{parent:d.parentElement,index:Array.from(d.parentNode.children).indexOf(d)}),d.setAttribute("qti-draggable","true"),d.addEventListener("dragstart",u=>{u.dataTransfer.setData("text",u.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",u=>{if(u.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),(u.dataTransfer.dropEffect==="none"||u.dataTransfer.dropEffect===void 0)&&this.configuration.dragCanBePlacedBack){let g=u.currentTarget,h=this.draggables.get(g),R=h.index<h.parent.children.length?h.index:h.parent.children.length-1,v=h.parent,V=h.parent.children[R];v.insertBefore(g,V),this.saveResponse(),this.checkMaxMatchAssociations()}u.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())})}))}handleDragOptionsChanged(c,l){this.dragDropApi.copyStylesDragClone=l.copyStylesDragClone,this.dragDropApi.dragOnClick=l.dragOnClick}handleDisabledChange(c,l){this.draggables.forEach((p,d)=>{l?d.setAttribute("disabled",""):d.removeAttribute("disabled"),l?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}handleReadonlyChange(c,l){this.draggables.forEach((p,d)=>{l?d.setAttribute("readonly",""):d.removeAttribute("readonly"),l?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}firstUpdated(c){super.firstUpdated(c),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(t):this.querySelectorAll(t))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new Ue,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}reset(c=!0){this.draggables.forEach((l,p)=>{let d=l.parent.children,u=l.index<d.length?l.index:d.length;l.parent.insertBefore(p,d[u])}),c&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(c=>{let p=+(c.getAttribute("match-max")||1)<=(c.children.length||0);p?c.setAttribute("disabled",""):c.removeAttribute("disabled"),p?c.removeAttribute("dropzone"):c.setAttribute("dropzone","move")})}set response(c){this.classList.contains("qti-match-tabular")||(this.reset(!1),c!==null&&Array.isArray(c)&&c.forEach(l=>{let[p,...d]=l.split(" ").reverse();if(p){let u=this.droppables.find(g=>g.getAttribute("identifier")===p);d.forEach(g=>{let h=this.querySelector(`[identifier=${g}]`);u?h?(u.appendChild(h),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${g}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let l=(e?Array.from(this.shadowRoot.querySelectorAll(t)):Array.from(this.querySelectorAll(t))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=l}saveResponse(){let c=this.droppables.map(l=>{var d;let p="";return((d=l.children)==null?void 0:d.length)>0&&(p+=Array.from(l.children).map(u=>u.getAttribute("identifier")).join(" ")+" "),p+=l.getAttribute("identifier"),p});this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:c}}))}}return n([rr(i)],r.prototype,"reInitDragAndDrop",1),n([te({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),n([te({attribute:!1,type:Object})],r.prototype,"configuration",2),n([y("configuration")],r.prototype,"handleDragOptionsChanged",1),n([te({type:Boolean,reflect:!0})],r.prototype,"disabled",2),n([y("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),n([te({type:Boolean,reflect:!0})],r.prototype,"readonly",2),n([y("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),n([te({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),n([te({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as hs}from"lit/decorators.js";var be=class extends H(us,"qti-simple-associable-choice",!0,".dl"){render(){return fr` <slot name="prompt"></slot>
176
+ </div>`}`}};customElements.define("qti-portable-custom-interaction",Ht);import{LitElement as ms,css as hs,html as br}from"lit";var Ie=class a{constructor(){this._touchBegin=0;this._touchDown=null;this._lastClick=0;this._canDrag=!1;this._dragSrc=null;this._dragCopy=null;this._touchEndCalled=!1;this._dragRunning=!1;this._dataTransfer={data:{},setData:function(i,e){this.data[i]=e},getData:function(i){return this.data[i]},effectAllowed:"move"};this._copyOffset={x:0,y:0};this._lastTarget=null;this._currentDropContainer=null;this._handleClick=!0;this._DBLCLICKDELAY=500;this._CONTEXTMENUDELAY=1e3;this._DRAGDELTA=5;this._COPYOPACITY=.7;this.copyStylesDragClone=!0;this.dragOnClick=!1;this._createDragCopy=(i,e)=>{if(this._dragCopy===null&&this._dragRunning){this._dragSrc.style.opacity=this._COPYOPACITY,this._dragCopy=this._dragSrc.cloneNode(!0);let t=window.getComputedStyle(this._dragSrc);if(this._dragCopy.style="",this._dragCopy.setAttribute("dragclone",""),this.copyStylesDragClone)for(let r of t)this._dragCopy.style[r]=t.getPropertyValue(r);this._calculateDragCopyPosition(e),this._dragCopy.style.top=e.clientY-this._copyOffset.y+"px",this._dragCopy.style.left=e.clientX-this._copyOffset.x+"px",this._dragCopy.style.position="fixed",this._dragCopy.style.pointerEvents="none",this._dragCopy.style.zIndex="999999",this._dragCopy=document.body.appendChild(this._dragCopy),this._dispatchEvent(this._dragSrc,"dragstart")}if(this._dragRunning){let t=this;requestAnimationFrame(function(){t._touchEndCalled||t._dragCopy===null||(t._dragCopy.style.top=e.clientY-t._copyOffset.y+"px",t._dragCopy.style.left=e.clientX-t._copyOffset.x+"px")});let r=this._findDroppable(i);r!=this._lastTarget&&(this._dispatchEvent(r,"dragenter"),this._dispatchEvent(this._lastTarget,"dragleave"),this._lastTarget=r),this._currentDropContainer=r,this._currentDropContainer&&this._dispatchEvent(r,"dragover")}};return a._instance?a._instance:(a._instance=this,document.addEventListener("touchmove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("mousemove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchend",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("mouseup",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchcancel",this._touchCancel.bind(this),{passive:!1,capture:!1}),this)}addDraggables(i){i.forEach(e=>{e.addEventListener("touchstart",this._touchStart.bind(this),{passive:!1,capture:!1}),e.addEventListener("mousedown",this._touchStart.bind(this),{passive:!1,capture:!1})})}_touchStart(i){this._touchBegin=Date.now();let{x:e,y:t}=this._getPoint(i);if(this._touchDown={x:e,y:t},this._dragSrc=i.currentTarget,this._canDrag=!0,this.dragOnClick){let r={clientX:e,clientY:t};this._dragRunning=!0,this._createDragCopy(i,r)}i.preventDefault()}_touchMove(i){if(this._canDrag&&this._dragSrc){let{x:e,y:t}=this._getPoint(i),r={clientX:e,clientY:t};this._getDelta(r)>=this._DRAGDELTA&&(this._dragRunning=!0),this._createDragCopy(i,r),i.preventDefault()}}_touchEnd(i){var e;if(this._touchEndCalled=!0,this._canDrag=!1,this._currentDropContainer)this._dispatchEvent(this._currentDropContainer,"drop"),this._dispatchEvent(this._dragSrc,"dragend");else if(this._dragRunning){let t=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});t.dataTransfer={dropEffect:"none"},(e=this._dragSrc)==null||e.dispatchEvent(t)}this._reset()}_touchCancel(i){this._reset()}_findDroppable(i){let e=this._getPoint(i);return this.elementFromPoint(e.x,e.y)}elementFromPoint(i,e){let t=document.elementFromPoint(i,e);if(t){for(;t.shadowRoot;){let r=t.shadowRoot.elementFromPoint(i,e);if(r===null||r===t)break;t=r}return t}return null}_getPoint(i,e){return i&&i.touches&&(i=i.touches[0]),{x:e?i.pageX:i.clientX,y:e?i.pageY:i.clientY}}_calculateDragCopyPosition(i){let e=this._dragSrc.getBoundingClientRect();this._copyOffset.x=i.clientX-e.left,this._copyOffset.y=i.clientY-e.top}_getDelta(i){let e=Math.abs(i.clientX-this._touchDown.x),t=Math.abs(i.clientY-this._touchDown.y);return e+t}_dispatchEvent(i,e,t=!0){if(!i)return!1;let r=new CustomEvent(e,{bubbles:t,cancelable:!0});return r.dataTransfer=this._dataTransfer,i.dispatchEvent(r),r.defaultPrevented}_reset(){this._dragRunning&&(this._dragSrc.style.opacity="1.0",this._dragCopy.parentElement.removeChild(this._dragCopy)),this._dragRunning=!1,this._dragSrc=null,this._dragCopy=null,this._canDrag=!1,this._touchBegin=0,this._touchDown=null,this._lastClick=0,this._touchEndCalled=!1,this._dataTransfer={data:{},setData:function(i,e){this.data[i]=e},getData:function(i){return this.data[i]},effectAllowed:"move"},this._copyOffset={x:0,y:0},this._lastTarget=null,this._currentDropContainer=null,this._handleClick=!0}};import{property as us}from"lit/decorators.js";var hr=(a,i,e)=>{class t extends a{constructor(){super(...arguments);this.disabled=!1}firstUpdated(o){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(o);let c=Array.from(i?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dragenterHandler=this.dragenterHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),c.forEach(l=>{l.setAttribute("dropzone","move"),l.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(l)});for(let l of c)this.observer=new MutationObserver(p=>{p.forEach(d=>{if(d.type==="attributes")switch(d.attributeName){case"disabled":{l.hasAttribute("disabled")?this.removeHandler(l):this.attachHandler(l);break}}})}),this.observer.observe(l,{attributes:!0})}attachHandler(o){o.addEventListener("dragover",this.dragoverHandler),o.addEventListener("dragenter",this.dragenterHandler),o.addEventListener("drop",this.dropHandler)}removeHandler(o){o.removeEventListener("dragover",this.dragoverHandler),o.removeEventListener("dragenter",this.dragenterHandler),o.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var o;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(o=this.observer)==null||o.disconnect())}dragenterHandler(o){o.preventDefault()}dragoverHandler(o){return o.preventDefault(),o.currentTarget.setAttribute("active",""),o.dataTransfer.dropEffect="move",!1}dropHandler(o){o.preventDefault();let c=o.currentTarget,l=this.querySelector(`[identifier=${o.dataTransfer.getData("text")}`),p=l||this.shadowRoot.querySelector(`[identifier=${o.dataTransfer.getData("text")}`);return c?p.parentElement.getAttribute("identifier")!==c.getAttribute("identifier")&&c.appendChild(p):console.error(`cannot find droppable, target: ${o.target?JSON.stringify(o.target):"null"}`),c.removeAttribute("active"),!1}dragleaveHandler(o){return o.preventDefault(),o.currentTarget.removeAttribute("active"),o.dataTransfer.dropEffect="none",!1}}return n([us({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var fr=(a,i,e)=>{class t extends a{}return t};import{property as te}from"lit/decorators.js";var N=(a,i,e,t)=>{class r extends fr(hr(a,e,t),t,i){constructor(){super(...arguments);this.draggables=new Map;this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1}reInitDragAndDrop(c,l){if(this.classList.contains("qti-match-tabular"))return;c.filter(d=>!this.draggables||!this.draggables.get(d)).length>0&&(this.dragDropApi.addDraggables(c),c.forEach(d=>{this.draggables.set(d,{parent:d.parentElement,index:Array.from(d.parentNode.children).indexOf(d)}),d.setAttribute("qti-draggable","true"),d.addEventListener("dragstart",u=>{u.dataTransfer.setData("text",u.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",u=>{if(u.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),(u.dataTransfer.dropEffect==="none"||u.dataTransfer.dropEffect===void 0)&&this.configuration.dragCanBePlacedBack){let g=u.currentTarget,h=this.draggables.get(g),T=h.index<h.parent.children.length?h.index:h.parent.children.length-1,v=h.parent,H=h.parent.children[T];v.insertBefore(g,H),this.saveResponse(),this.checkMaxMatchAssociations()}u.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())})}))}handleDragOptionsChanged(c,l){this.dragDropApi.copyStylesDragClone=l.copyStylesDragClone,this.dragDropApi.dragOnClick=l.dragOnClick}handleDisabledChange(c,l){this.draggables.forEach((p,d)=>{l?d.setAttribute("disabled",""):d.removeAttribute("disabled"),l?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}handleReadonlyChange(c,l){this.draggables.forEach((p,d)=>{l?d.setAttribute("readonly",""):d.removeAttribute("readonly"),l?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}firstUpdated(c){super.firstUpdated(c),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(t):this.querySelectorAll(t))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new Ie,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}reset(c=!0){this.draggables.forEach((l,p)=>{let d=l.parent.children,u=l.index<d.length?l.index:d.length;l.parent.insertBefore(p,d[u])}),c&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(c=>{let p=+(c.getAttribute("match-max")||1)<=(c.children.length||0);p?c.setAttribute("disabled",""):c.removeAttribute("disabled"),p?c.removeAttribute("dropzone"):c.setAttribute("dropzone","move")})}set response(c){this.classList.contains("qti-match-tabular")||(this.reset(!1),c!==null&&Array.isArray(c)&&c.forEach(l=>{let[p,...d]=l.split(" ").reverse();if(p){let u=this.droppables.find(g=>g.getAttribute("identifier")===p);d.forEach(g=>{let h=this.querySelector(`[identifier=${g}]`);u?h?(u.appendChild(h),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${g}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let l=(e?Array.from(this.shadowRoot.querySelectorAll(t)):Array.from(this.querySelectorAll(t))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=l}saveResponse(){let c=this.droppables.map(l=>{var d;let p="";return((d=l.children)==null?void 0:d.length)>0&&(p+=Array.from(l.children).map(u=>u.getAttribute("identifier")).join(" ")+" "),p+=l.getAttribute("identifier"),p});this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:c}}))}}return n([ir(i)],r.prototype,"reInitDragAndDrop",1),n([te({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),n([te({attribute:!1,type:Object})],r.prototype,"configuration",2),n([y("configuration")],r.prototype,"handleDragOptionsChanged",1),n([te({type:Boolean,reflect:!0})],r.prototype,"disabled",2),n([y("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),n([te({type:Boolean,reflect:!0})],r.prototype,"readonly",2),n([y("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),n([te({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),n([te({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as fs}from"lit/decorators.js";var be=class extends N(ms,"qti-simple-associable-choice",!0,".dl"){render(){return br` <slot name="prompt"></slot>
177
177
  <slot name="qti-simple-associable-choice"></slot>
178
- ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>fr`<div part="associables-container">
178
+ ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>br`<div part="associables-container">
179
179
  <div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
180
180
  <div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
181
- </div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};be.styles=ms`
181
+ </div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};be.styles=hs`
182
182
  :host {
183
183
  display: block; /* necessary to calculate scaling position */
184
184
  }
@@ -187,8 +187,8 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
187
187
  flex-wrap: wrap;
188
188
  gap: 0.5rem;
189
189
  }
190
- `,n([hs()],be.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",be);import{css as fs,html as bs,LitElement as gs}from"lit";var Ie=class extends H(gs,"qti-gap-text",!1,"qti-gap"){render(){return bs` <slot part="drags" name="qti-gap-text"></slot>
191
- <slot part="drops"></slot>`}};Ie.styles=[fs`
190
+ `,n([fs()],be.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",be);import{css as bs,html as gs,LitElement as vs}from"lit";var Fe=class extends N(vs,"qti-gap-text",!1,"qti-gap"){render(){return gs` <slot part="drags" name="qti-gap-text"></slot>
191
+ <slot part="drops"></slot>`}};Fe.styles=[bs`
192
192
  :host {
193
193
  display: flex;
194
194
  align-items: flex-start;
@@ -211,14 +211,14 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
211
211
  align-items: flex-start;
212
212
  flex: 1;
213
213
  }
214
- `];customElements.define("qti-gap-match-interaction",Ie);import{css as vs,svg as br,html as ys}from"lit";function re(a,i,e,t){switch(a){case"circle":{let[r,s,o]=i,c=r/e.width*100,l=s/e.height*100,p=o/e.width*100;t.style.left=c-p+"%",t.style.top=l-p+"%",t.style.width=t.style.height=4*p+"px",t.style.borderRadius="9999px"}break;case"rect":{let[r,s,o,c]=i,l=r/e.width*100,p=s/e.height*100,d=o/e.width*100,u=c/e.height*100;t.style.left=l+"%",t.style.top=p+"%",t.style.width=d-l+"%",t.style.height=u-p+"%"}break;case"poly":{let r=i.reduce((v,V,Ut,qr)=>{if(Ut%2===1){let Ar=v.pop();v[v.length]={x:Ar,y:qr[Ut]}}else v.push(V);return v},[]),s=Math.min(...r.map(v=>v.x)),o=Math.max(...r.map(v=>v.x)),c=Math.min(...r.map(v=>v.y)),l=Math.max(...r.map(v=>v.y)),p=s/e.width*100,d=c/e.height*100,u=o/e.width*100,g=l/e.height*100;t.style.left=s/e.width*100+"%",t.style.top=c/e.height*100+"%",t.style.width=u-p+"%",t.style.height=g-d+"%";let R=r.map(v=>({x:(v.x-s)/(o-s)*100,y:(v.y-c)/(l-c)*100})).map(v=>Math.round(v.x)+"% "+Math.round(v.y)+"%").join(",");t.style.clipPath=`polygon(${R})`}break;default:break}}import{query as xs,queryAssignedElements as Es,state as Nt}from"lit/decorators.js";import{repeat as _s}from"lit/directives/repeat.js";import{ifDefined as gr}from"lit/directives/if-defined.js";var N=class extends b{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set response(e){Array.isArray(e)&&(this._lines=e)}render(){var e,t,r,s;return ys`<slot name="prompt"></slot>
214
+ `];customElements.define("qti-gap-match-interaction",Fe);import{css as ys,svg as gr,html as xs}from"lit";function re(a,i,e,t){switch(a){case"circle":{let[r,s,o]=i,c=r/e.width*100,l=s/e.height*100,p=o/e.width*100;t.style.left=c-p+"%",t.style.top=l-p+"%",t.style.width=t.style.height=4*p+"px",t.style.borderRadius="9999px"}break;case"rect":{let[r,s,o,c]=i,l=r/e.width*100,p=s/e.height*100,d=o/e.width*100,u=c/e.height*100;t.style.left=l+"%",t.style.top=p+"%",t.style.width=d-l+"%",t.style.height=u-p+"%"}break;case"poly":{let r=i.reduce((v,H,It,Ar)=>{if(It%2===1){let kr=v.pop();v[v.length]={x:kr,y:Ar[It]}}else v.push(H);return v},[]),s=Math.min(...r.map(v=>v.x)),o=Math.max(...r.map(v=>v.x)),c=Math.min(...r.map(v=>v.y)),l=Math.max(...r.map(v=>v.y)),p=s/e.width*100,d=c/e.height*100,u=o/e.width*100,g=l/e.height*100;t.style.left=s/e.width*100+"%",t.style.top=c/e.height*100+"%",t.style.width=u-p+"%",t.style.height=g-d+"%";let T=r.map(v=>({x:(v.x-s)/(o-s)*100,y:(v.y-c)/(l-c)*100})).map(v=>Math.round(v.x)+"% "+Math.round(v.y)+"%").join(",");t.style.clipPath=`polygon(${T})`}break;default:break}}import{query as Es,queryAssignedElements as _s,state as Dt}from"lit/decorators.js";import{repeat as Cs}from"lit/directives/repeat.js";import{ifDefined as vr}from"lit/directives/if-defined.js";var D=class extends b{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set response(e){Array.isArray(e)&&(this._lines=e)}render(){var e,t,r,s;return xs`<slot name="prompt"></slot>
215
215
  <line-container>
216
216
  <svg
217
- width=${gr((e=this.grImage[0])==null?void 0:e.width)}
218
- height=${gr((t=this.grImage[0])==null?void 0:t.height)}
217
+ width=${vr((e=this.grImage[0])==null?void 0:e.width)}
218
+ height=${vr((t=this.grImage[0])==null?void 0:t.height)}
219
219
  viewbox="0 0 ${(r=this.grImage[0])==null?void 0:r.width} ${(s=this.grImage[0])==null?void 0:s.height}"
220
220
  >
221
- ${_s(this._lines,o=>o,(o,c)=>br`
221
+ ${Cs(this._lines,o=>o,(o,c)=>gr`
222
222
  <line
223
223
  part="line"
224
224
  x1=${parseInt(this.querySelector("[identifier="+o.split(" ")[0]+"]").style.left)}
@@ -230,7 +230,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
230
230
  @click=${l=>{l.stopPropagation(),this._lines=this._lines.filter((p,d)=>d!==c),this.saveResponse(this._lines)}}
231
231
  />
232
232
  `)}
233
- ${this.startPoint&&br`<line
233
+ ${this.startPoint&&gr`<line
234
234
  part="point"
235
235
  x1=${this.startCoord.x}
236
236
  y1=${this.startCoord.y}
@@ -241,7 +241,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
241
241
  />`}
242
242
  </svg>
243
243
  <slot></slot>
244
- </line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,s=r.getAttribute("coords"),o=r.getAttribute("shape"),c=s.split(",").map(l=>parseInt(l));re(o,c,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=document.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};N.styles=[vs`
244
+ </line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,s=r.getAttribute("coords"),o=r.getAttribute("shape"),c=s.split(",").map(l=>parseInt(l));re(o,c,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=document.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};D.styles=[ys`
245
245
  slot:not([name='prompt']) {
246
246
  // position: relative; /* qti-hotspot-choice relative to the slot */
247
247
  display: block;
@@ -264,8 +264,8 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
264
264
  top: 0px;
265
265
  left: 0px;
266
266
  }
267
- `],n([Nt()],N.prototype,"_lines",2),n([Nt()],N.prototype,"startCoord",2),n([Nt()],N.prototype,"mouseCoord",2),n([xs("svg")],N.prototype,"svgContainer",2),n([Es({selector:"img"})],N.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",N);import{css as Cs,html as qs,LitElement as As}from"lit";var Fe=class extends H(As,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return qs` <slot></slot>
268
- <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),s=t.getAttribute("shape"),o=r.split(",").map(c=>parseInt(c));switch(s){case"circle":{let[c,l,p]=o;t.style.left=c-p+"px",t.style.top=l-p+"px",t.style.width=t.style.height=2*p+"px"}break;case"rect":{let[c,l,p,d]=o;t.style.left=c+"px",t.style.top=l+"px",t.style.width=p-c+"px",t.style.height=d-l+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};Fe.styles=Cs`
267
+ `],n([Dt()],D.prototype,"_lines",2),n([Dt()],D.prototype,"startCoord",2),n([Dt()],D.prototype,"mouseCoord",2),n([Es("svg")],D.prototype,"svgContainer",2),n([_s({selector:"img"})],D.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",D);import{css as qs,html as As,LitElement as ks}from"lit";var Xe=class extends N(ks,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return As` <slot></slot>
268
+ <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),s=t.getAttribute("shape"),o=r.split(",").map(c=>parseInt(c));switch(s){case"circle":{let[c,l,p]=o;t.style.left=c-p+"px",t.style.top=l-p+"px",t.style.width=t.style.height=2*p+"px"}break;case"rect":{let[c,l,p,d]=o;t.style.left=c+"px",t.style.top=l+"px",t.style.width=p-c+"px",t.style.height=d-l+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};Xe.styles=qs`
269
269
  :host {
270
270
  display: inline-block;
271
271
  position: relative;
@@ -274,12 +274,12 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
274
274
  display: flex;
275
275
  gap: 1rem;
276
276
  }
277
- `;customElements.define("qti-graphic-gap-match-interaction",Fe);import{css as ks,html as ws}from"lit";var Xe=class extends E{render(){return ws`
277
+ `;customElements.define("qti-graphic-gap-match-interaction",Xe);import{css as ws,html as $s}from"lit";var Ye=class extends E{render(){return $s`
278
278
  <slot name="prompt"></slot>
279
279
  <!-- slot for the prompt -->
280
280
  <slot></slot>
281
281
  <!-- slot for the image and hotspots -->
282
- `}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(o=>o.getAttribute("identifier")===t),s=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(o=>o.order>0).length>=s){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(o=>!!o.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(o=>(o.order>o.order&&o.order--,o)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,s=r.getAttribute("coords"),o=r.getAttribute("shape"),c=s.split(",").map(l=>parseInt(l));re(o,c,t,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this.setHotspotOrder),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this.setHotspotOrder),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};Xe.styles=[ks`
282
+ `}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(o=>o.getAttribute("identifier")===t),s=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(o=>o.order>0).length>=s){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(o=>!!o.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(o=>(o.order>o.order&&o.order--,o)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,s=r.getAttribute("coords"),o=r.getAttribute("shape"),c=s.split(",").map(l=>parseInt(l));re(o,c,t,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this.setHotspotOrder),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this.setHotspotOrder),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};Ye.styles=[ws`
283
283
  slot:not([name='prompt']) {
284
284
  position: relative; /* qti-hotspot-choice relative to the slot */
285
285
  display: block;
@@ -290,12 +290,12 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
290
290
  pointer-events: none;
291
291
  user-select: none;
292
292
  }
293
- `];customElements.define("qti-graphic-order-interaction",Xe);import{css as $s,html as Ts}from"lit";var Ye=class extends E{render(){return Ts`
293
+ `];customElements.define("qti-graphic-order-interaction",Ye);import{css as Rs,html as Ts}from"lit";var Be=class extends E{render(){return Ts`
294
294
  <slot name="prompt"></slot>
295
295
  <!-- slot for the prompt -->
296
296
  <slot></slot>
297
297
  <!-- slot for the image and hotspots -->
298
- `}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),s=t.getAttribute("shape"),o=r.split(",").map(c=>parseInt(c));re(s,o,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};Ye.styles=[$s`
298
+ `}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),s=t.getAttribute("shape"),o=r.split(",").map(c=>parseInt(c));re(s,o,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};Be.styles=[Rs`
299
299
  slot:not([name='prompt']) {
300
300
  position: relative; /* qti-hotspot-choice relative to the slot */
301
301
  display: block;
@@ -307,18 +307,18 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
307
307
  user-select: none;
308
308
  /* width:100%; */
309
309
  }
310
- `];customElements.define("qti-hotspot-interaction",Ye);import{html as ge,LitElement as Ls}from"lit";import{html as Rs,LitElement as Ss}from"lit";var Dt=class extends Ss{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return Rs`
310
+ `];customElements.define("qti-hotspot-interaction",Be);import{html as ge,LitElement as Ms}from"lit";import{html as Ss,LitElement as Ls}from"lit";var Pt=class extends Ls{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return Ss`
311
311
  <slot></slot>
312
312
  <slot name="qti-simple-associable-choice"></slot>
313
- `}};customElements.define("qti-simple-associable-choice",Dt);import{property as Ms,state as Hs}from"lit/decorators.js";import{unsafeHTML as vr}from"lit/directives/unsafe-html.js";var ie=class extends H(Ls,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice"){constructor(){super(...arguments);this.response=[];this.responseIdentifier=""}connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}render(){return this.classList.contains("qti-match-tabular")?ge`
313
+ `}};customElements.define("qti-simple-associable-choice",Pt);import{property as Vs,state as Ns}from"lit/decorators.js";import{unsafeHTML as yr}from"lit/directives/unsafe-html.js";var ie=class extends N(Ms,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice"){constructor(){super(...arguments);this.response=[];this.responseIdentifier=""}connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}render(){return this.classList.contains("qti-match-tabular")?ge`
314
314
  <slot name="prompt"></slot>
315
315
  <table>
316
316
  <tr>
317
317
  <td></td>
318
- ${this.cols.map((e,t)=>ge`<th part="r-header">${vr(e.innerHTML)}</th>`)}
318
+ ${this.cols.map((e,t)=>ge`<th part="r-header">${yr(e.innerHTML)}</th>`)}
319
319
  </tr>
320
320
  ${this.rows.map((e,t)=>ge`<tr>
321
- <td part="c-header">${vr(e.innerHTML)}</td>
321
+ <td part="c-header">${yr(e.innerHTML)}</td>
322
322
  ${this.cols.map((r,s)=>{let o=`${e.getAttribute("identifier")} ${r.getAttribute("identifier")}`;return ge`<td>
323
323
  <input
324
324
  type="checkbox"
@@ -329,14 +329,14 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
329
329
  </td>`})}
330
330
  </tr>`)}
331
331
  </table>
332
- `:ge`<slot name="prompt"></slot> <slot></slot>`}};ie.styles=[],n([Hs()],ie.prototype,"response",2),n([Ms({type:String,attribute:"response-identifier"})],ie.prototype,"responseIdentifier",2);customElements.define("qti-match-interaction",ie);import{css as Vs,html as Ns}from"lit";var Be=class extends b{constructor(){super();this.value=0}reset(){}validate(){return!0}set response(e){}static get properties(){return q(f({},b.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return Ns` <slot name="prompt"></slot>
333
- <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this.value++,this.saveResponse(this.value.toString())})}};Be.styles=[Vs``];customElements.define("qti-media-interaction",Be);import{css as Ds,html as yr,LitElement as Ps}from"lit";import{property as Os}from"lit/decorators.js";var se=class extends H(Ps,"qti-simple-choice",!0,"drop-list"){render(){return yr` <slot name="prompt"> </slot>
332
+ `:ge`<slot name="prompt"></slot> <slot></slot>`}};ie.styles=[],n([Ns()],ie.prototype,"response",2),n([Vs({type:String,attribute:"response-identifier"})],ie.prototype,"responseIdentifier",2);customElements.define("qti-match-interaction",ie);import{css as Hs,html as Ds}from"lit";var je=class extends b{constructor(){super();this.value=0}reset(){}validate(){return!0}set response(e){}static get properties(){return q(f({},b.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return Ds` <slot name="prompt"></slot>
333
+ <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this.value++,this.saveResponse(this.value.toString())})}};je.styles=[Hs``];customElements.define("qti-media-interaction",je);import{css as Ps,html as xr,LitElement as Os}from"lit";import{property as Us}from"lit/decorators.js";var se=class extends N(Os,"qti-simple-choice",!0,"drop-list"){render(){return xr` <slot name="prompt"> </slot>
334
334
  <div part="container">
335
335
  <slot part="drags"> </slot>
336
336
  <div part="drops">
337
- ${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>yr`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
337
+ ${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>xr`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
338
338
  </div>
339
- </div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};se.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],se.styles=[Ds`
339
+ </div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};se.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],se.styles=[Ps`
340
340
  [part='drags'] {
341
341
  display: flex;
342
342
  align-items: flex-start;
@@ -384,7 +384,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
384
384
  :host(.qti-choices-right) [part='container'] {
385
385
  flex-direction: row-reverse;
386
386
  }
387
- `],n([Os({type:String})],se.prototype,"orientation",2);customElements.define("qti-order-interaction",se);import{LitElement as Us,css as Is,html as Fs}from"lit";var Ke=class extends Us{render(){return Fs`<slot></slot>`}};Ke.styles=[Is`
387
+ `],n([Us({type:String})],se.prototype,"orientation",2);customElements.define("qti-order-interaction",se);import{LitElement as Is,css as Fs,html as Xs}from"lit";var Ke=class extends Is{render(){return Xs`<slot></slot>`}};Ke.styles=[Fs`
388
388
  :host {
389
389
  display: block;
390
390
  }
@@ -395,17 +395,17 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
395
395
  left: 50%;
396
396
  transform: translateX(-50%);
397
397
  }
398
- `];customElements.define("qti-position-object-interaction",Ke);import{LitElement as Xs,css as Ys,html as Bs}from"lit";var je=class extends Xs{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return Bs`<slot></slot>`}dragElementHandler(e){e.preventDefault();let t=e.clientX-this.startX,r=e.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+t+"px",this.dragElement.style.top=this.dragElement.offsetTop+r+"px",this.startX=e.clientX,this.startY=e.clientY}firstUpdated(e){super.firstUpdated(e),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",t=>{this.startX=t.clientX,this.startY=t.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(e){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};je.styles=[Ys`
398
+ `];customElements.define("qti-position-object-interaction",Ke);import{LitElement as Ys,css as Bs,html as js}from"lit";var ze=class extends Ys{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return js`<slot></slot>`}dragElementHandler(e){e.preventDefault();let t=e.clientX-this.startX,r=e.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+t+"px",this.dragElement.style.top=this.dragElement.offsetTop+r+"px",this.startX=e.clientX,this.startY=e.clientY}firstUpdated(e){super.firstUpdated(e),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",t=>{this.startX=t.clientX,this.startY=t.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(e){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};ze.styles=[Bs`
399
399
  :host {
400
400
  display: inline-block;
401
401
  position: relative;
402
402
  }
403
- `];customElements.define("qti-position-object-stage",je);import{css as Ks,html as xr}from"lit";import{property as Er,state as js}from"lit/decorators.js";import{repeat as zs}from"lit/directives/repeat.js";import{styleMap as Ws}from"lit/directives/style-map.js";var z=class extends b{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return xr` <slot name="prompt"></slot>
403
+ `];customElements.define("qti-position-object-stage",ze);import{css as Ks,html as Er}from"lit";import{property as _r,state as zs}from"lit/decorators.js";import{repeat as Ws}from"lit/directives/repeat.js";import{styleMap as Js}from"lit/directives/style-map.js";var z=class extends b{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return Er` <slot name="prompt"></slot>
404
404
  <point-container>
405
- ${zs(this._points,e=>e,(e,t)=>xr`
405
+ ${Ws(this._points,e=>e,(e,t)=>Er`
406
406
  <button
407
407
  part="point"
408
- style=${Ws({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
408
+ style=${Js({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
409
409
  aria-label="Remove point at ${e}"
410
410
  @click=${r=>{r.stopPropagation(),this._points=this._points.filter((s,o)=>o!==t),this.saveResponse(this._points)}}
411
411
  ></button>
@@ -419,29 +419,29 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
419
419
  display: block;
420
420
  position: relative;
421
421
  }
422
- `],n([Er({type:Number,attribute:"max-choices"})],z.prototype,"maxChoices",2),n([Er({type:Number,attribute:"min-choices"})],z.prototype,"minChoices",2),n([js()],z.prototype,"_points",2);customElements.define("qti-select-point-interaction",z);import{css as Js,html as ze,nothing as Pt}from"lit";import{property as oe,query as _r}from"lit/decorators.js";var C=class extends b{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,t)=>{};this._handleReadonlyChange=(e,t)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let t=parseInt(e);if(Number.isNaN(t)){console.error("QtiSliderInteraction: response is not a number");return}this.value=t}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),ze`<slot name="prompt"></slot>
422
+ `],n([_r({type:Number,attribute:"max-choices"})],z.prototype,"maxChoices",2),n([_r({type:Number,attribute:"min-choices"})],z.prototype,"minChoices",2),n([zs()],z.prototype,"_points",2);customElements.define("qti-select-point-interaction",z);import{css as Zs,html as We,nothing as Ot}from"lit";import{property as oe,query as Cr}from"lit/decorators.js";var C=class extends b{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,t)=>{};this._handleReadonlyChange=(e,t)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let t=parseInt(e);if(Number.isNaN(t)){console.error("QtiSliderInteraction: response is not a number");return}this.value=t}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),We`<slot name="prompt"></slot>
423
423
  <div id="slider" part="slider">
424
- ${this.csLive.getPropertyValue("--show-bounds")=="true"?ze`<div id="bounds" part="bounds">
424
+ ${this.csLive.getPropertyValue("--show-bounds")=="true"?We`<div id="bounds" part="bounds">
425
425
  <div>${this._min}</div>
426
426
  <div>${this._max}</div>
427
- </div>`:Pt}
428
- ${this.csLive.getPropertyValue("--show-ticks")=="true"?ze`<div id="ticks" part="ticks"></div>`:Pt}
427
+ </div>`:Ot}
428
+ ${this.csLive.getPropertyValue("--show-ticks")=="true"?We`<div id="ticks" part="ticks"></div>`:Ot}
429
429
  <div id="rail" part="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove}>
430
430
  <div id="knob" part="knob">
431
- ${this.csLive.getPropertyValue("--show-value")=="true"?ze`<div id="value" part="value">${this.value}</div>`:Pt}
431
+ ${this.csLive.getPropertyValue("--show-value")=="true"?We`<div id="value" part="value">${this.value}</div>`:Ot}
432
432
  </div>
433
433
  </div>
434
- </div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let t=c=>{let{x:l}=this.getPositionFromEvent(c),p=l-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),c.stopPropagation()},r=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r),this.saveResponse(this.value.toString())};document.addEventListener("touchmove",t),document.addEventListener("touchend",r);let{x:s}=this.getPositionFromEvent(e),o=s-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),e.stopPropagation()}_onMouseDown(e){let t=o=>{let c=o.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(c),o.preventDefault(),o.stopPropagation()},r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r);let s=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(s),e.preventDefault(),e.stopPropagation()}calculateValue(e){let t=this.min+(this.max-this.min)*e/this._rail.getBoundingClientRect().width,r=this.min+Math.round((t-this.min)/this._step)*this._step;this.value=r}getPositionFromEvent(e){let t;if(e.type=="touchstart"||e.type=="touchmove"||e.type=="touchend"||e.type=="touchcancel"){let r=typeof e.originalEvent=="undefined"?e:e.originalEvent,s=r.touches[0]||r.changedTouches[0];t={x:s.pageX,y:s.pageY}}else(e.type=="mousedown"||e.type=="mouseup"||e.type=="mousemove"||e.type=="mouseover"||e.type=="mouseout"||e.type=="mouseenter"||e.type=="mouseleave")&&(t={x:e.clientX,y:e.clientY});return t}};C.styles=[Js``],n([_r("#knob")],C.prototype,"_knob",2),n([_r("#rail")],C.prototype,"_rail",2),n([oe({type:Number})],C.prototype,"value",2),n([oe({type:Boolean,attribute:"step-label"})],C.prototype,"stepLabel",2),n([oe({type:Boolean})],C.prototype,"reverse",2),n([oe({type:Number,attribute:"lower-bound"})],C.prototype,"min",1),n([oe({type:Number,attribute:"upper-bound"})],C.prototype,"max",1),n([oe({type:Number,attribute:"step"})],C.prototype,"step",1),n([y("disabled",{waitUntilFirstUpdate:!0})],C.prototype,"_handleDisabledChange",2),n([y("readonly",{waitUntilFirstUpdate:!0})],C.prototype,"_handleReadonlyChange",2);customElements.define("qti-slider-interaction",C);import{html as Zs}from"lit";import{customElement as Gs,property as Cr}from"lit/decorators.js";var ne=class extends b{constructor(){super(...arguments);this.countAttempt="true"}validate(){return!0}set response(e){}render(){return Zs`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};n([Cr({type:String,attribute:"count-attempt"})],ne.prototype,"countAttempt",2),n([Cr({type:String})],ne.prototype,"title",2),ne=n([Gs("qti-end-attempt-interaction")],ne);import{LitElement as Qs,css as eo,html as to}from"lit";var We=class extends Qs{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return to` <slot name="qti-gap-img"></slot> `}};We.styles=eo`
434
+ </div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let t=c=>{let{x:l}=this.getPositionFromEvent(c),p=l-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),c.stopPropagation()},r=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r),this.saveResponse(this.value.toString())};document.addEventListener("touchmove",t),document.addEventListener("touchend",r);let{x:s}=this.getPositionFromEvent(e),o=s-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),e.stopPropagation()}_onMouseDown(e){let t=o=>{let c=o.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(c),o.preventDefault(),o.stopPropagation()},r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r);let s=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(s),e.preventDefault(),e.stopPropagation()}calculateValue(e){let t=this.min+(this.max-this.min)*e/this._rail.getBoundingClientRect().width,r=this.min+Math.round((t-this.min)/this._step)*this._step;this.value=r}getPositionFromEvent(e){let t;if(e.type=="touchstart"||e.type=="touchmove"||e.type=="touchend"||e.type=="touchcancel"){let r=typeof e.originalEvent=="undefined"?e:e.originalEvent,s=r.touches[0]||r.changedTouches[0];t={x:s.pageX,y:s.pageY}}else(e.type=="mousedown"||e.type=="mouseup"||e.type=="mousemove"||e.type=="mouseover"||e.type=="mouseout"||e.type=="mouseenter"||e.type=="mouseleave")&&(t={x:e.clientX,y:e.clientY});return t}};C.styles=[Zs``],n([Cr("#knob")],C.prototype,"_knob",2),n([Cr("#rail")],C.prototype,"_rail",2),n([oe({type:Number})],C.prototype,"value",2),n([oe({type:Boolean,attribute:"step-label"})],C.prototype,"stepLabel",2),n([oe({type:Boolean})],C.prototype,"reverse",2),n([oe({type:Number,attribute:"lower-bound"})],C.prototype,"min",1),n([oe({type:Number,attribute:"upper-bound"})],C.prototype,"max",1),n([oe({type:Number,attribute:"step"})],C.prototype,"step",1),n([y("disabled",{waitUntilFirstUpdate:!0})],C.prototype,"_handleDisabledChange",2),n([y("readonly",{waitUntilFirstUpdate:!0})],C.prototype,"_handleReadonlyChange",2);customElements.define("qti-slider-interaction",C);import{html as Gs}from"lit";import{customElement as Qs,property as qr}from"lit/decorators.js";var ne=class extends b{constructor(){super(...arguments);this.countAttempt="true"}validate(){return!0}set response(e){}render(){return Gs`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};n([qr({type:String,attribute:"count-attempt"})],ne.prototype,"countAttempt",2),n([qr({type:String})],ne.prototype,"title",2),ne=n([Qs("qti-end-attempt-interaction")],ne);import{LitElement as eo,css as to,html as ro}from"lit";var Je=class extends eo{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return ro` <slot name="qti-gap-img"></slot> `}};Je.styles=to`
435
435
  :host {
436
436
  position: absolute;
437
437
  }
438
- `;customElements.define("qti-associable-hotspot",We);import{html as ro,LitElement as io}from"lit";import{property as so}from"lit/decorators.js";var Je=class extends io{constructor(){super(...arguments);this.tabindex=0}render(){return ro` <slot name="qti-gap-text"></slot>`}};n([so({type:Number,reflect:!0})],Je.prototype,"tabindex",2);customElements.define("qti-gap",Je);import{LitElement as oo}from"lit";import{property as no}from"lit/decorators.js";var Ze=class extends oo{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};n([no({type:Number,reflect:!0})],Ze.prototype,"tabindex",2);customElements.define("qti-gap-img",Ze);import{html as ao,LitElement as lo}from"lit";import{property as co}from"lit/decorators.js";var Ge=class extends lo{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return ao`<slot></slot>`}};n([co({type:Number,reflect:!0})],Ge.prototype,"tabindex",2);customElements.define("qti-gap-text",Ge);import{css as po}from"lit";import{property as uo}from"lit/decorators.js";var ve=class extends _{};ve.styles=po`
438
+ `;customElements.define("qti-associable-hotspot",Je);import{html as io,LitElement as so}from"lit";import{property as oo}from"lit/decorators.js";var Ze=class extends so{constructor(){super(...arguments);this.tabindex=0}render(){return io` <slot name="qti-gap-text"></slot>`}};n([oo({type:Number,reflect:!0})],Ze.prototype,"tabindex",2);customElements.define("qti-gap",Ze);import{LitElement as no}from"lit";import{property as ao}from"lit/decorators.js";var Ge=class extends no{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};n([ao({type:Number,reflect:!0})],Ge.prototype,"tabindex",2);customElements.define("qti-gap-img",Ge);import{html as lo,LitElement as co}from"lit";import{property as po}from"lit/decorators.js";var Qe=class extends co{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return lo`<slot></slot>`}};n([po({type:Number,reflect:!0})],Qe.prototype,"tabindex",2);customElements.define("qti-gap-text",Qe);import{css as uo}from"lit";import{property as mo}from"lit/decorators.js";var ve=class extends _{};ve.styles=uo`
439
439
  :host {
440
440
  position: absolute;
441
441
  }
442
- `,n([uo({attribute:"aria-ordervalue",type:Number,reflect:!0})],ve.prototype,"order",2);customElements.define("qti-hotspot-choice",ve);import{customElement as mo}from"lit/decorators.js";import{html as ho}from"lit";var Qe=class extends _{render(){return ho`<div part="ch"><div part="cha"></div></div>
443
- <slot></slot> `}};Qe=n([mo("qti-hottext")],Qe);import{LitElement as fo}from"lit";var Ot=class extends fo{};customElements.define("qti-inline-choice",Ot);import{customElement as bo}from"lit/decorators.js";import{css as go,html as vo}from"lit";var ye=class extends _{render(){return vo`<div part="ch"><div part="cha"></div></div>
444
- <slot part="slot"></slot> `}};ye.styles=go`
442
+ `,n([mo({attribute:"aria-ordervalue",type:Number,reflect:!0})],ve.prototype,"order",2);customElements.define("qti-hotspot-choice",ve);import{customElement as ho}from"lit/decorators.js";import{html as fo}from"lit";var et=class extends _{render(){return fo`<div part="ch"><div part="cha"></div></div>
443
+ <slot></slot> `}};et=n([ho("qti-hottext")],et);import{LitElement as bo}from"lit";var Ut=class extends bo{};customElements.define("qti-inline-choice",Ut);import{customElement as go}from"lit/decorators.js";import{css as vo,html as yo}from"lit";var ye=class extends _{render(){return yo`<div part="ch"><div part="cha"></div></div>
444
+ <slot part="slot"></slot> `}};ye.styles=vo`
445
445
  :host {
446
446
  display: flex;
447
447
  }
@@ -449,7 +449,7 @@ import{a as f,b as q,c as n}from"../chunk-BKTGSVMP.js";import{provide as wr}from
449
449
  width: 100%;
450
450
  display: block;
451
451
  }
452
- `,ye=n([bo("qti-simple-choice")],ye);export{b as Interaction,fe as QtPrintedVariable,He as QtiAnd,A as QtiAssessmentItem,We as QtiAssociableHotspot,be as QtiAssociateInteraction,Ve as QtiBaseValue,_ as QtiChoice,Q as QtiChoiceInteraction,qe as QtiCompanionMaterialsInfo,$ as QtiConditionExpression,vt as QtiContains,Ae as QtiContentBody,yt as QtiCorrect,ne as QtiEndAttemptInteraction,De as QtiEqual,Ne as QtiEqualRounded,m as QtiExpression,L as QtiExtendedTextInteraction,$e as QtiFeedbackBlock,Te as QtiFeedbackInline,Je as QtiGap,Ze as QtiGapImg,Ie as QtiGapMatchInteraction,Ge as QtiGapText,N as QtiGraphicAssociateInteraction,Fe as QtiGraphicGapMatchInteraction,Xe as QtiGraphicOrderInteraction,xt as QtiGt,Et as QtiGte,ve as QtiHotspotChoice,Ye as QtiHotspotInteraction,Qe as QtiHottext,ht as QtiHottextInteraction,Ot as QtiInlineChoice,K as QtiInlineChoiceInteraction,_t as QtiIsNull,Me as QtiLookupOutcomeValue,Ct as QtiLt,qt as QtiLte,Pe as QtiMapResponse,ee as QtiMapping,kt as QtiMatch,ie as QtiMatchInteraction,Be as QtiMediaInteraction,wt as QtiMember,Re as QtiModalFeedback,$t as QtiMultiple,Tt as QtiNot,Rt as QtiOr,se as QtiOrderInteraction,St as QtiOrdered,P as QtiOutcomeDeclaration,Vt as QtiPortableCustomInteraction,je as QtiPositionObjectStage,Lt as QtiProduct,xe as QtiPrompt,ft as QtiResponseCondition,U as QtiResponseDeclaration,me as QtiResponseElse,gt as QtiResponseElseIf,he as QtiResponseIf,j as QtiResponseProcessing,S as QtiRubricBlock,M as QtiRule,Ke as QtiSPositionObjectInteraction,z as QtiSelectPointInteraction,bt as QtiSetOutcomeValue,Dt as QtiSimpleAssociableChoice,ye as QtiSimpleChoice,C as QtiSliderInteraction,Oe as QtiStringMatch,et as QtiStylesheet,Mt as QtiSum,w as QtiTextEntryInteraction,Ht as QtiVariable,D as itemContext,Zi as qtiAndMixin};
452
+ `,ye=n([go("qti-simple-choice")],ye);import{consume as xo}from"@lit/context";import{html as Eo,LitElement as _o}from"lit";import{customElement as Co,state as qo}from"lit/decorators.js";var xe=class extends _o{render(){return Eo`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(e){var r,s,o;let t=Array.from((s=(r=this.firstElementChild)==null?void 0:r.childNodes)!=null?s:[]).find(c=>c.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","fn","item",(o=t.textContent)!=null?o:"")}catch(c){console.error("custom-operator contains invalid javascript code",c)}}calculate(){let e={variable:r=>{var s,o,c;return(c=(o=(s=this._context)==null?void 0:s.variables.find(l=>l.identifier===r))==null?void 0:o.value)!=null?c:""},correct:r=>{var s,o,c;return(c=(o=(s=this._context)==null?void 0:s.variables.find(l=>l.identifier===r))==null?void 0:o.correctResponse)!=null?c:""}},t={getVariable:r=>{var s;return(s=this._context)==null?void 0:s.variables.find(o=>o.identifier===r)},updateOutcomeVariable:(r,s)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:r,value:s}}))}};return this.operatorFunction(this._context,e,t)}};n([xo({context:S,subscribe:!0}),qo()],xe.prototype,"_context",2),xe=n([Co("qti-custom-operator")],xe);export{b as Interaction,fe as QtPrintedVariable,Ne as QtiAnd,A as QtiAssessmentItem,Je as QtiAssociableHotspot,be as QtiAssociateInteraction,He as QtiBaseValue,_ as QtiChoice,Q as QtiChoiceInteraction,Ae as QtiCompanionMaterialsInfo,$ as QtiConditionExpression,yt as QtiContains,ke as QtiContentBody,xt as QtiCorrect,xe as QtiCustomOperator,ne as QtiEndAttemptInteraction,Pe as QtiEqual,De as QtiEqualRounded,m as QtiExpression,M as QtiExtendedTextInteraction,Re as QtiFeedbackBlock,Te as QtiFeedbackInline,Ze as QtiGap,Ge as QtiGapImg,Fe as QtiGapMatchInteraction,Qe as QtiGapText,D as QtiGraphicAssociateInteraction,Xe as QtiGraphicGapMatchInteraction,Ye as QtiGraphicOrderInteraction,Et as QtiGt,_t as QtiGte,ve as QtiHotspotChoice,Be as QtiHotspotInteraction,et as QtiHottext,ft as QtiHottextInteraction,Ut as QtiInlineChoice,j as QtiInlineChoiceInteraction,Ct as QtiIsNull,Ve as QtiLookupOutcomeValue,qt as QtiLt,At as QtiLte,Oe as QtiMapResponse,ee as QtiMapping,wt as QtiMatch,ie as QtiMatchInteraction,je as QtiMediaInteraction,$t as QtiMember,Se as QtiModalFeedback,Rt as QtiMultiple,Tt as QtiNot,St as QtiOr,se as QtiOrderInteraction,Lt as QtiOrdered,P as QtiOutcomeDeclaration,Ht as QtiPortableCustomInteraction,ze as QtiPositionObjectStage,Mt as QtiProduct,Ee as QtiPrompt,bt as QtiResponseCondition,U as QtiResponseDeclaration,me as QtiResponseElse,vt as QtiResponseElseIf,he as QtiResponseIf,K as QtiResponseProcessing,L as QtiRubricBlock,V as QtiRule,Ke as QtiSPositionObjectInteraction,z as QtiSelectPointInteraction,gt as QtiSetOutcomeValue,Pt as QtiSimpleAssociableChoice,ye as QtiSimpleChoice,C as QtiSliderInteraction,Ue as QtiStringMatch,tt as QtiStylesheet,Vt as QtiSum,w as QtiTextEntryInteraction,Nt as QtiVariable,S as itemContext,Gi as qtiAndMixin};
453
453
  /*! Bundled license information:
454
454
 
455
455
  lit-html/node/lit-html.js: