@citolab/qti-components 6.5.2 → 6.5.4

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.
@@ -2,13 +2,13 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
2
2
  :host {
3
3
  display: block;
4
4
  }
5
- `;var z=class extends Pr{render(){return Vr`<slot name="qti-rubric-block"></slot><slot></slot>`}};z.styles=Ut,z=n([Nr("qti-item-body")],z);import{html as Dr,LitElement as Or}from"lit";var Qe=class extends Or{render(){return Dr`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Qe);import{LitElement as Ur}from"lit";var et=class extends Ur{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 Xr}from"@lit/context";import{css as Yr,html as Br}from"lit";import{property as tt,state as jr}from"lit/decorators.js";import{html as Ir,LitElement as Fr}from"lit";var F=class extends Fr{render(){return Ir`<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 D=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 Br`${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}}))}};D.styles=[Yr`
5
+ `;var W=class extends Pr{render(){return Vr`<slot name="qti-rubric-block"></slot><slot></slot>`}};W.styles=Ut,W=n([Nr("qti-item-body")],W);import{html as Dr,LitElement as Or}from"lit";var Qe=class extends Or{render(){return Dr`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Qe);import{LitElement as Ur}from"lit";var et=class extends Ur{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 Xr}from"@lit/context";import{css as Yr,html as Br}from"lit";import{property as tt,state as jr}from"lit/decorators.js";import{html as Ir,LitElement as Fr}from"lit";var F=class extends Fr{render(){return Ir`<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 D=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 Br`${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}}))}};D.styles=[Yr`
6
6
  :host {
7
7
  display: none;
8
8
  }
9
- `],n([tt({type:String,attribute:"base-type"})],D.prototype,"baseType",2),n([tt({type:String})],D.prototype,"identifier",2),n([tt({type:String})],D.prototype,"cardinality",2),n([Xr({context:P,subscribe:!0}),jr()],D.prototype,"itemContext",2);customElements.define("qti-outcome-declaration",D);import{consume as Jr}from"@lit/context";import{css as Zr}from"lit";var W=globalThis,xe=W.trustedTypes,It=xe?xe.createPolicy("lit-html",{createHTML:a=>a}):void 0,zt="$lit$",O=`lit$${(Math.random()+"").slice(9)}$`,Wt="?"+O,Kr=`<${Wt}>`,B=W.document===void 0?{createTreeWalker:()=>({})}:document,Ee=()=>B.createComment(""),ce=a=>a===null||typeof a!="object"&&typeof a!="function",Jt=Array.isArray,zr=a=>Jt(a)||typeof(a==null?void 0:a[Symbol.iterator])=="function",rt=`[
9
+ `],n([tt({type:String,attribute:"base-type"})],D.prototype,"baseType",2),n([tt({type:String})],D.prototype,"identifier",2),n([tt({type:String})],D.prototype,"cardinality",2),n([Xr({context:P,subscribe:!0}),jr()],D.prototype,"itemContext",2);customElements.define("qti-outcome-declaration",D);import{consume as Jr}from"@lit/context";import{css as Zr}from"lit";var J=globalThis,xe=J.trustedTypes,It=xe?xe.createPolicy("lit-html",{createHTML:a=>a}):void 0,zt="$lit$",O=`lit$${(Math.random()+"").slice(9)}$`,Wt="?"+O,Kr=`<${Wt}>`,B=J.document===void 0?{createTreeWalker:()=>({})}:document,Ee=()=>B.createComment(""),ce=a=>a===null||typeof a!="object"&&typeof a!="function",Jt=Array.isArray,zr=a=>Jt(a)||typeof(a==null?void 0:a[Symbol.iterator])=="function",rt=`[
10
10
  \f\r]`,le=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Ft=/-->/g,Xt=/>/g,X=RegExp(`>|${rt}(?:([^\\s"'>=/]+)(${rt}*=${rt}*(?:[^
11
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Yt=/'/g,Bt=/"/g,Zt=/^(?:script|style|textarea|title)$/i,Gt=a=>(i,...e)=>({_$litType$:a,strings:i,values:e}),Qt=Gt(1),mn=Gt(2),pe=Symbol.for("lit-noChange"),x=Symbol.for("lit-nothing"),jt=new WeakMap,Y=B.createTreeWalker(B,129);function er(a,i){if(!Array.isArray(a)||!a.hasOwnProperty("raw"))throw Error("invalid template strings array");return It!==void 0?It.createHTML(i):i}var Wr=(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,b=0;for(;b<l.length&&(o.lastIndex=b,d=o.exec(l),d!==null);)b=o.lastIndex,o===le?d[1]==="!--"?o=Ft:d[1]!==void 0?o=Xt:d[2]!==void 0?(Zt.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]==='"'?Bt:Yt):o===Bt||o===Yt?o=X:o===Ft||o===Xt?o=le:(o=X,r=void 0);let h=o===X&&a[c+1].startsWith("/>")?" ":"";s+=o===le?l+Kr:u>=0?(t.push(p),l.slice(0,u)+zt+l.slice(u)+O+h):l+O+(u===-2?c:h)}return[er(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]=Wr(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(zt)){let b=d[o++],h=r.getAttribute(u).split(O),T=/([.?@])?(.*)/.exec(b);l.push({type:1,index:s,name:T[2],strings:h,ctor:T[1]==="."?ot:T[1]==="?"?nt:T[1]==="@"?at:Z}),r.removeAttribute(u)}else u.startsWith(O)&&(l.push({type:6,index:s}),r.removeAttribute(u));if(Zt.test(r.tagName)){let u=r.textContent.split(O),b=u.length-1;if(b>0){r.textContent=xe?xe.emptyScript:"";for(let h=0;h<b;h++)r.append(u[h],Ee()),Y.nextNode(),l.push({type:2,index:++s});r.append(u[b],Ee())}}}else if(r.nodeType===8)if(r.data===Wt)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 J(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=J(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 _e(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++}},_e=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=J(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):zr(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(er(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){Jt(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(Ee()),this.k(Ee()),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))}},Z=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=J(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=J(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.j(i)}j(i){i===x?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,i!=null?i:"")}},ot=class extends Z{constructor(){super(...arguments),this.type=3}j(i){this.element[this.name]=i===x?void 0:i}},nt=class extends Z{constructor(){super(...arguments),this.type=4}j(i){this.element.toggleAttribute(this.name,!!i&&i!==x)}},at=class extends Z{constructor(i,e,t,r,s){super(i,e,t,r,s),this.type=5}_$AI(i,e=this){var o;if((i=(o=J(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){J(this,i)}};var it=W.litHtmlPolyfillSupport,Kt;it==null||it(de,_e),((Kt=W.litHtmlVersions)!=null?Kt:W.litHtmlVersions=[]).push("3.0.0");import{property as ct,state as Gr}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 Qt`${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=[Zr`
11
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Yt=/'/g,Bt=/"/g,Zt=/^(?:script|style|textarea|title)$/i,Gt=a=>(i,...e)=>({_$litType$:a,strings:i,values:e}),Qt=Gt(1),hn=Gt(2),pe=Symbol.for("lit-noChange"),x=Symbol.for("lit-nothing"),jt=new WeakMap,Y=B.createTreeWalker(B,129);function er(a,i){if(!Array.isArray(a)||!a.hasOwnProperty("raw"))throw Error("invalid template strings array");return It!==void 0?It.createHTML(i):i}var Wr=(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=Ft:d[1]!==void 0?o=Xt:d[2]!==void 0?(Zt.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]==='"'?Bt:Yt):o===Bt||o===Yt?o=X:o===Ft||o===Xt?o=le:(o=X,r=void 0);let h=o===X&&a[c+1].startsWith("/>")?" ":"";s+=o===le?l+Kr:u>=0?(t.push(p),l.slice(0,u)+zt+l.slice(u)+O+h):l+O+(u===-2?c:h)}return[er(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]=Wr(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(zt)){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]==="."?ot:T[1]==="?"?nt:T[1]==="@"?at:G}),r.removeAttribute(u)}else u.startsWith(O)&&(l.push({type:6,index:s}),r.removeAttribute(u));if(Zt.test(r.tagName)){let u=r.textContent.split(O),g=u.length-1;if(g>0){r.textContent=xe?xe.emptyScript:"";for(let h=0;h<g;h++)r.append(u[h],Ee()),Y.nextNode(),l.push({type:2,index:++s});r.append(u[g],Ee())}}}else if(r.nodeType===8)if(r.data===Wt)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 _e(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++}},_e=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):zr(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(er(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){Jt(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(Ee()),this.k(Ee()),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.j(i)}j(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}j(i){this.element[this.name]=i===x?void 0:i}},nt=class extends G{constructor(){super(...arguments),this.type=4}j(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,Kt;it==null||it(de,_e),((Kt=J.litHtmlVersions)!=null?Kt:J.litHtmlVersions=[]).push("3.0.0");import{property as ct,state as Gr}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 Qt`${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=[Zr`
12
12
  :host {
13
13
  display: none;
14
14
  }
@@ -40,7 +40,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
40
40
  .off {
41
41
  display: none;
42
42
  }
43
- `;customElements.define("qti-modal-feedback",Te);import{css as bi,html as vi}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 g=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"})],g.prototype,"responseIdentifier",2),n([dt({reflect:!0,type:Boolean})],g.prototype,"disabled",2),n([dt({reflect:!0,type:Boolean})],g.prototype,"readonly",2);import{ref as yi,createRef as xi}from"lit/directives/ref.js";import{customElement as Ei,property as Re,state as _i}from"lit/decorators.js";var L=class extends g{constructor(){super(...arguments);this.textareaRef=xi();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[bi`
43
+ `;customElements.define("qti-modal-feedback",Te);import{css as gi,html as vi}from"lit";import{ifDefined as ut}from"lit/directives/if-defined.js";import{property as dt}from"lit/decorators.js";import{LitElement as bi}from"lit";var b=class extends bi{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 yi,createRef as xi}from"lit/directives/ref.js";import{customElement as Ei,property as Re,state as _i}from"lit/decorators.js";var L=class extends b{constructor(){super(...arguments);this.textareaRef=xi();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[gi`
44
44
  /* PK: display host as block, else design will be collapsed */
45
45
  :host {
46
46
  display: block;
@@ -65,7 +65,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
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([Re({type:Number,attribute:"expected-length"})],L.prototype,"expectedLength",2),n([Re({type:String,attribute:"pattern-mask"})],L.prototype,"patternMask",2),n([Re({type:String,attribute:"placeholder-text"})],L.prototype,"placeholderText",2),n([_i()],L.prototype,"_value",2),n([Re({type:String,attribute:"class"})],L.prototype,"classNames",2),n([y("classNames",{waitUntilFirstUpdate:!0})],L.prototype,"handleclassNamesChange",1),L=n([Ei("qti-extended-text-interaction")],L);import{css as Ci,html as qi}from"lit";import{ifDefined as rr}from"lit/directives/if-defined.js";import{customElement as Ai,property as Se,state as ir}from"lit/decorators.js";function tr(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 b=Array.from(this.querySelectorAll(a));for(let h of u){let T=Array.from(h.addedNodes).map(N=>N),v=Array.from(h.addedNodes).map(N=>N);h.type==="childList"&&T.find(N=>b.includes(N))&&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()}}}import{createRef as ki}from"lit/directives/ref.js";var R=class extends g{constructor(){super(...arguments);this._value="";this._size=5;this.inputRef=ki()}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[Ci`
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([Re({type:Number,attribute:"expected-length"})],L.prototype,"expectedLength",2),n([Re({type:String,attribute:"pattern-mask"})],L.prototype,"patternMask",2),n([Re({type:String,attribute:"placeholder-text"})],L.prototype,"placeholderText",2),n([_i()],L.prototype,"_value",2),n([Re({type:String,attribute:"class"})],L.prototype,"classNames",2),n([y("classNames",{waitUntilFirstUpdate:!0})],L.prototype,"handleclassNamesChange",1),L=n([Ei("qti-extended-text-interaction")],L);import{css as Ci,html as qi}from"lit";import{ifDefined as rr}from"lit/directives/if-defined.js";import{customElement as Ai,property as Se,state as ir}from"lit/decorators.js";function tr(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(N=>N),v=Array.from(h.addedNodes).map(N=>N);h.type==="childList"&&T.find(N=>g.includes(N))&&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()}}}import{createRef as ki}from"lit/directives/ref.js";var R=class extends b{constructor(){super(...arguments);this._value="";this._size=5;this.inputRef=ki()}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[Ci`
69
69
  :host {
70
70
  display: inline-flex;
71
71
  }
@@ -85,7 +85,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
85
85
  ?disabled="${this.disabled}"
86
86
  ?readonly="${this.readonly}"
87
87
  />
88
- `}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"})],R.prototype,"expectedLength",2),n([Se({type:String,attribute:"pattern-mask"})],R.prototype,"patternMask",2),n([Se({type:String,attribute:"placeholder-text"})],R.prototype,"placeholderText",2),n([ir()],R.prototype,"_value",2),n([ir()],R.prototype,"_size",2),n([Se({type:String,attribute:"class"})],R.prototype,"classNames",2),n([y("classNames")],R.prototype,"handleclassNamesChange",1),R=n([Ai("qti-text-entry-interaction")],R);import{html as wi}from"lit";import{property as sr}from"lit/decorators.js";var E=class extends g{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 mt=class extends E{constructor(){super(...arguments);this.render=()=>wi`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",mt);import{css as $i,html as or}from"lit";import{property as Ti,state as nr}from"lit/decorators.js";import{unsafeHTML as ar}from"lit/directives/unsafe-html.js";var j=class extends g{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[$i`
88
+ `}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"})],R.prototype,"expectedLength",2),n([Se({type:String,attribute:"pattern-mask"})],R.prototype,"patternMask",2),n([Se({type:String,attribute:"placeholder-text"})],R.prototype,"placeholderText",2),n([ir()],R.prototype,"_value",2),n([ir()],R.prototype,"_size",2),n([Se({type:String,attribute:"class"})],R.prototype,"classNames",2),n([y("classNames")],R.prototype,"handleclassNamesChange",1),R=n([Ai("qti-text-entry-interaction")],R);import{html as wi}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 mt=class extends E{constructor(){super(...arguments);this.render=()=>wi`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",mt);import{css as $i,html as or}from"lit";import{property as Ti,state as nr}from"lit/decorators.js";import{unsafeHTML as ar}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[$i`
89
89
  :host {
90
90
  display: inline-block;
91
91
  }
@@ -103,7 +103,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
103
103
  flex-direction: column;
104
104
  // align-items: flex-start;
105
105
  }
106
- `;var G=class extends E{render(){return Mi` <slot name="prompt"></slot><slot part="slot"></slot>`}};G.styles=lr,n([Li({type:String})],G.prototype,"orientation",2),G=n([Si("qti-choice-interaction")],G);import{html as Hi,LitElement as Ni}from"lit";import{customElement as Vi}from"lit/decorators.js";var cr=`<qti-response-processing>
106
+ `;var Q=class extends E{render(){return Mi` <slot name="prompt"></slot><slot part="slot"></slot>`}};Q.styles=lr,n([Li({type:String})],Q.prototype,"orientation",2),Q=n([Si("qti-choice-interaction")],Q);import{css as Hi,html as Ni,LitElement as Vi}from"lit";import{customElement as Pi}from"lit/decorators.js";var cr=`<qti-response-processing>
107
107
  <qti-response-condition>
108
108
  <qti-response-if>
109
109
  <qti-match>
@@ -152,20 +152,24 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
152
152
  </qti-set-outcome-value>
153
153
  </qti-response-else>
154
154
  </qti-response-condition>
155
- </qti-response-processing>`;var Q=class extends Ni{render(){return Hi`<slot></slot>`}static get observedAttributes(){return["identifier"]}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)}};Q=n([Vi("qti-response-processing")],Q);import{property as Ui}from"lit/decorators.js";import{customElement as Pi}from"lit/decorators.js";import{html as Di,LitElement as Oi}from"lit";var M=class extends Oi{render(){return Di`<slot></slot>`}process(){throw new Error("Not implemented")}};M=n([Pi("qti-rule")],M);var Le=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?(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:ue(r)}})),r):(console.warn("lookupOutcomeValue: value is null or undefined"),0)}};n([Ui({type:String})],Le.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Le);import{html as Ii}from"lit";var ht=class extends M{render(){return Ii`<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",ht);var ft=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",ft);import{LitElement as Fi,html as Xi}from"lit";var me=class extends Fi{render(){return Xi`<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 Yi}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 Yi`${super.render()}`}};customElements.define("qti-response-else-if",gt);import{LitElement as Bi,css as ji,html as Ki}from"lit";import{state as zi}from"lit/decorators.js";var m=class extends Bi{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 Ki`<pre>${JSON.stringify(this.result,null,2)}</pre>
156
- <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=ji`
155
+ </qti-response-processing>`;var K=class extends Vi{render(){return Ni`<slot></slot>`}static get observedAttributes(){return["identifier"]}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)}};K.styles=[Hi`
156
+ :host {
157
+ display: none;
158
+ }
159
+ `],K=n([Pi("qti-response-processing")],K);import{property as Ii}from"lit/decorators.js";import{customElement as Di}from"lit/decorators.js";import{html as Oi,LitElement as Ui}from"lit";var M=class extends Ui{render(){return Oi`<slot></slot>`}process(){throw new Error("Not implemented")}};M=n([Di("qti-rule")],M);var Le=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?(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:ue(r)}})),r):(console.warn("lookupOutcomeValue: value is null or undefined"),0)}};n([Ii({type:String})],Le.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Le);import{html as Fi}from"lit";var ht=class extends M{render(){return Fi`<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",ht);var ft=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",ft);import{LitElement as Xi,html as Yi}from"lit";var me=class extends Xi{render(){return Yi`<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 Bi}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 bt=class extends he{render(){return Bi`${super.render()}`}};customElements.define("qti-response-else-if",bt);import{LitElement as ji,css as Ki,html as zi}from"lit";import{state as Wi}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 zi`<pre>${JSON.stringify(this.result,null,2)}</pre>
160
+ <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=Ki`
157
161
  slot {
158
162
  display: none;
159
163
  }
160
- `,n([zi()],m.prototype,"result",2);var w=class extends m{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Me=class extends Wi(w){calculate(){return this.calculateChildren(Array.from(this.children))}};function Wi(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",Me);import{property as Ji}from"lit/decorators.js";var He=class extends m{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};n([Ji({type:String,attribute:"base-type"})],He.prototype,"baseType",2);customElements.define("qti-base-value",He);var bt=class extends w{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",bt);var vt=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",vt);import{property as Zi}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([Zi({type:String})],Ne.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Ne);import{property as Gi}from"lit/decorators.js";var $=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 Ve=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):$.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};n([Gi({type:String})],Ve.prototype,"toleranceMode",2);customElements.define("qti-equal",Ve);var yt=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",yt);var xt=class extends w{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",xt);var Et=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",Et);var _t=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",_t);var Ct=class extends w{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",Ct);import{property as Qi}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=>$.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([Qi({type:String})],Pe.prototype,"identifier",2);customElements.define("qti-map-response",Pe);import{property as qt}from"lit/decorators.js";import{LitElement as es}from"lit";var ee=class extends es{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([qt({attribute:"default-value",type:Number})],ee.prototype,"defaultValue",2),n([qt({attribute:"lower-bound",type:Number})],ee.prototype,"lowerBound",2),n([qt({attribute:"upper-bound",type:Number})],ee.prototype,"upperBound",2);customElements.define("qti-mapping",ee);var At=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):$.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(!$.compareSingleValues(s,o,e.baseType))return!1}else{let o=null;for(let c of i.value)if($.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",At);var kt=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",kt);var wt=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",wt);import{html as ts}from"lit";var $t=class extends m{render(){return ts`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",$t);var Tt=class extends w{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",Tt);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!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",Rt);import{consume as rs}from"@lit/context";import{LitElement as is,html as ss}from"lit";import{property as os,state as ns}from"lit/decorators.js";var fe=class extends is{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 ss`${JSON.stringify(e,null,2)}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};n([os({type:String})],fe.prototype,"identifier",2),n([rs({context:P,subscribe:!0}),ns()],fe.prototype,"itemContext",2);customElements.define("qti-printed-variable",fe);var St=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",St);import{property as as}from"lit/decorators.js";var De=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 $.compareSingleValues(s,o,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};n([as({type:String,attribute:"case-sensitive"})],De.prototype,"caseSensitive",2);customElements.define("qti-string-match",De);var Lt=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",Lt);var Mt=class extends m{getResult(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",Mt);import{LitElement as ls,html as ur}from"lit";var Ht=class extends ls{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">
164
+ `,n([Wi()],m.prototype,"result",2);var w=class extends m{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Me=class extends Ji(w){calculate(){return this.calculateChildren(Array.from(this.children))}};function Ji(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",Me);import{property as Zi}from"lit/decorators.js";var He=class extends m{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};n([Zi({type:String,attribute:"base-type"})],He.prototype,"baseType",2);customElements.define("qti-base-value",He);var gt=class extends w{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",gt);var vt=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",vt);import{property as Gi}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([Gi({type:String})],Ne.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Ne);import{property as Qi}from"lit/decorators.js";var $=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 Ve=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):$.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};n([Qi({type:String})],Ve.prototype,"toleranceMode",2);customElements.define("qti-equal",Ve);var yt=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",yt);var xt=class extends w{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",xt);var Et=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",Et);var _t=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",_t);var Ct=class extends w{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",Ct);import{property as es}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=>$.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([es({type:String})],Pe.prototype,"identifier",2);customElements.define("qti-map-response",Pe);import{property as qt}from"lit/decorators.js";import{LitElement as ts}from"lit";var ee=class extends ts{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([qt({attribute:"default-value",type:Number})],ee.prototype,"defaultValue",2),n([qt({attribute:"lower-bound",type:Number})],ee.prototype,"lowerBound",2),n([qt({attribute:"upper-bound",type:Number})],ee.prototype,"upperBound",2);customElements.define("qti-mapping",ee);var At=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):$.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(!$.compareSingleValues(s,o,e.baseType))return!1}else{let o=null;for(let c of i.value)if($.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",At);var kt=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",kt);var wt=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",wt);import{html as rs}from"lit";var $t=class extends m{render(){return rs`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",$t);var Tt=class extends w{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",Tt);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!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",Rt);import{consume as is}from"@lit/context";import{LitElement as ss,html as os}from"lit";import{property as ns,state as as}from"lit/decorators.js";var fe=class extends ss{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 os`${JSON.stringify(e,null,2)}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};n([ns({type:String})],fe.prototype,"identifier",2),n([is({context:P,subscribe:!0}),as()],fe.prototype,"itemContext",2);customElements.define("qti-printed-variable",fe);var St=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",St);import{property as ls}from"lit/decorators.js";var De=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 $.compareSingleValues(s,o,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};n([ls({type:String,attribute:"case-sensitive"})],De.prototype,"caseSensitive",2);customElements.define("qti-string-match",De);var Lt=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",Lt);var Mt=class extends m{getResult(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",Mt);import{LitElement as cs,html as ur}from"lit";var Ht=class extends cs{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">
161
165
  <h1>Error</h1>
162
166
  ${this._errorMessage}
163
- </div>`}`}};customElements.define("qti-portable-custom-interaction",Ht);import{LitElement as ps,css as ds,html as fr}from"lit";var Oe=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 cs}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([cs({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 b=u.currentTarget,h=this.draggables.get(b),T=h.index<h.parent.children.length?h.index:h.parent.children.length-1,v=h.parent,N=h.parent.children[T];v.insertBefore(b,N),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 Oe,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(b=>b.getAttribute("identifier")===p);d.forEach(b=>{let h=this.querySelector(`[identifier=${b}]`);u?h?(u.appendChild(h),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${b}`):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([tr(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 us}from"lit/decorators.js";var ge=class extends H(ps,"qti-simple-associable-choice",!0,".dl"){render(){return fr` <slot name="prompt"></slot>
167
+ </div>`}`}};customElements.define("qti-portable-custom-interaction",Ht);import{LitElement as ds,css as us,html as fr}from"lit";var Oe=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 ps}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([ps({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),T=h.index<h.parent.children.length?h.index:h.parent.children.length-1,v=h.parent,N=h.parent.children[T];v.insertBefore(g,N),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 Oe,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([tr(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 ms}from"lit/decorators.js";var be=class extends H(ds,"qti-simple-associable-choice",!0,".dl"){render(){return fr` <slot name="prompt"></slot>
164
168
  <slot name="qti-simple-associable-choice"></slot>
165
169
  ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>fr`<div part="associables-container">
166
170
  <div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
167
171
  <div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
168
- </div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};ge.styles=ds`
172
+ </div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};be.styles=us`
169
173
  :host {
170
174
  display: block; /* necessary to calculate scaling position */
171
175
  }
@@ -174,8 +178,8 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
174
178
  flex-wrap: wrap;
175
179
  gap: 0.5rem;
176
180
  }
177
- `,n([us()],ge.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",ge);import{css as ms,html as hs,LitElement as fs}from"lit";var Ue=class extends H(fs,"qti-gap-text",!1,"qti-gap"){render(){return hs` <slot part="drags" name="qti-gap-text"></slot>
178
- <slot part="drops"></slot>`}};Ue.styles=[ms`
181
+ `,n([ms()],be.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",be);import{css as hs,html as fs,LitElement as bs}from"lit";var Ue=class extends H(bs,"qti-gap-text",!1,"qti-gap"){render(){return fs` <slot part="drags" name="qti-gap-text"></slot>
182
+ <slot part="drops"></slot>`}};Ue.styles=[hs`
179
183
  :host {
180
184
  display: flex;
181
185
  align-items: flex-start;
@@ -198,14 +202,14 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
198
202
  align-items: flex-start;
199
203
  flex: 1;
200
204
  }
201
- `];customElements.define("qti-gap-match-interaction",Ue);import{css as gs,svg as gr,html as bs}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,N,Ot,qr)=>{if(Ot%2===1){let Ar=v.pop();v[v.length]={x:Ar,y:qr[Ot]}}else v.push(N);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,b=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=b-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 vs,queryAssignedElements as ys,state as Nt}from"lit/decorators.js";import{repeat as xs}from"lit/directives/repeat.js";import{ifDefined as br}from"lit/directives/if-defined.js";var V=class extends g{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 bs`<slot name="prompt"></slot>
205
+ `];customElements.define("qti-gap-match-interaction",Ue);import{css as gs,svg as br,html as vs}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,N,Ot,qr)=>{if(Ot%2===1){let Ar=v.pop();v[v.length]={x:Ar,y:qr[Ot]}}else v.push(N);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 ys,queryAssignedElements as xs,state as Nt}from"lit/decorators.js";import{repeat as Es}from"lit/directives/repeat.js";import{ifDefined as gr}from"lit/directives/if-defined.js";var V=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 vs`<slot name="prompt"></slot>
202
206
  <line-container>
203
207
  <svg
204
- width=${br((e=this.grImage[0])==null?void 0:e.width)}
205
- height=${br((t=this.grImage[0])==null?void 0:t.height)}
208
+ width=${gr((e=this.grImage[0])==null?void 0:e.width)}
209
+ height=${gr((t=this.grImage[0])==null?void 0:t.height)}
206
210
  viewbox="0 0 ${(r=this.grImage[0])==null?void 0:r.width} ${(s=this.grImage[0])==null?void 0:s.height}"
207
211
  >
208
- ${xs(this._lines,o=>o,(o,c)=>gr`
212
+ ${Es(this._lines,o=>o,(o,c)=>br`
209
213
  <line
210
214
  part="line"
211
215
  x1=${parseInt(this.querySelector("[identifier="+o.split(" ")[0]+"]").style.left)}
@@ -217,7 +221,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
217
221
  @click=${l=>{l.stopPropagation(),this._lines=this._lines.filter((p,d)=>d!==c),this.saveResponse(this._lines)}}
218
222
  />
219
223
  `)}
220
- ${this.startPoint&&gr`<line
224
+ ${this.startPoint&&br`<line
221
225
  part="point"
222
226
  x1=${this.startCoord.x}
223
227
  y1=${this.startCoord.y}
@@ -251,8 +255,8 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
251
255
  top: 0px;
252
256
  left: 0px;
253
257
  }
254
- `],n([Nt()],V.prototype,"_lines",2),n([Nt()],V.prototype,"startCoord",2),n([Nt()],V.prototype,"mouseCoord",2),n([vs("svg")],V.prototype,"svgContainer",2),n([ys({selector:"img"})],V.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",V);import{css as Es,html as _s,LitElement as Cs}from"lit";var Ie=class extends H(Cs,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return _s` <slot></slot>
255
- <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)}};Ie.styles=Es`
258
+ `],n([Nt()],V.prototype,"_lines",2),n([Nt()],V.prototype,"startCoord",2),n([Nt()],V.prototype,"mouseCoord",2),n([ys("svg")],V.prototype,"svgContainer",2),n([xs({selector:"img"})],V.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",V);import{css as _s,html as Cs,LitElement as qs}from"lit";var Ie=class extends H(qs,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return Cs` <slot></slot>
259
+ <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)}};Ie.styles=_s`
256
260
  :host {
257
261
  display: inline-block;
258
262
  position: relative;
@@ -261,12 +265,12 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
261
265
  display: flex;
262
266
  gap: 1rem;
263
267
  }
264
- `;customElements.define("qti-graphic-gap-match-interaction",Ie);import{css as qs,html as As}from"lit";var Fe=class extends E{render(){return As`
268
+ `;customElements.define("qti-graphic-gap-match-interaction",Ie);import{css as As,html as ks}from"lit";var Fe=class extends E{render(){return ks`
265
269
  <slot name="prompt"></slot>
266
270
  <!-- slot for the prompt -->
267
271
  <slot></slot>
268
272
  <!-- slot for the image and hotspots -->
269
- `}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)}};Fe.styles=[qs`
273
+ `}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)}};Fe.styles=[As`
270
274
  slot:not([name='prompt']) {
271
275
  position: relative; /* qti-hotspot-choice relative to the slot */
272
276
  display: block;
@@ -277,12 +281,12 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
277
281
  pointer-events: none;
278
282
  user-select: none;
279
283
  }
280
- `];customElements.define("qti-graphic-order-interaction",Fe);import{css as ks,html as ws}from"lit";var Xe=class extends E{render(){return ws`
284
+ `];customElements.define("qti-graphic-order-interaction",Fe);import{css as ws,html as $s}from"lit";var Xe=class extends E{render(){return $s`
281
285
  <slot name="prompt"></slot>
282
286
  <!-- slot for the prompt -->
283
287
  <slot></slot>
284
288
  <!-- slot for the image and hotspots -->
285
- `}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)}};Xe.styles=[ks`
289
+ `}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)}};Xe.styles=[ws`
286
290
  slot:not([name='prompt']) {
287
291
  position: relative; /* qti-hotspot-choice relative to the slot */
288
292
  display: block;
@@ -294,19 +298,19 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
294
298
  user-select: none;
295
299
  /* width:100%; */
296
300
  }
297
- `];customElements.define("qti-hotspot-interaction",Xe);import{html as be,LitElement as Rs}from"lit";import{html as $s,LitElement as Ts}from"lit";var Vt=class extends Ts{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return $s`
301
+ `];customElements.define("qti-hotspot-interaction",Xe);import{html as ge,LitElement as Ss}from"lit";import{html as Ts,LitElement as Rs}from"lit";var Vt=class extends Rs{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return Ts`
298
302
  <slot></slot>
299
303
  <slot name="qti-simple-associable-choice"></slot>
300
- `}};customElements.define("qti-simple-associable-choice",Vt);import{property as Ss,state as Ls}from"lit/decorators.js";import{unsafeHTML as vr}from"lit/directives/unsafe-html.js";var ie=class extends H(Rs,"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")?be`
304
+ `}};customElements.define("qti-simple-associable-choice",Vt);import{property as Ls,state as Ms}from"lit/decorators.js";import{unsafeHTML as vr}from"lit/directives/unsafe-html.js";var ie=class extends H(Ss,"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`
301
305
  <slot name="prompt"></slot>
302
306
  <table>
303
307
  <tr>
304
308
  <td></td>
305
- ${this.cols.map((e,t)=>be`<th part="r-header">${vr(e.innerHTML)}</th>`)}
309
+ ${this.cols.map((e,t)=>ge`<th part="r-header">${vr(e.innerHTML)}</th>`)}
306
310
  </tr>
307
- ${this.rows.map((e,t)=>be`<tr>
311
+ ${this.rows.map((e,t)=>ge`<tr>
308
312
  <td part="c-header">${vr(e.innerHTML)}</td>
309
- ${this.cols.map((r,s)=>{let o=`${e.getAttribute("identifier")} ${r.getAttribute("identifier")}`;return be`<td>
313
+ ${this.cols.map((r,s)=>{let o=`${e.getAttribute("identifier")} ${r.getAttribute("identifier")}`;return ge`<td>
310
314
  <input
311
315
  type="checkbox"
312
316
  value=${r.getAttribute("identifier")}
@@ -316,14 +320,14 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
316
320
  </td>`})}
317
321
  </tr>`)}
318
322
  </table>
319
- `:be`<slot name="prompt"></slot> <slot></slot>`}};ie.styles=[],n([Ls()],ie.prototype,"response",2),n([Ss({type:String,attribute:"response-identifier"})],ie.prototype,"responseIdentifier",2);customElements.define("qti-match-interaction",ie);import{css as Ms,html as Hs}from"lit";var Ye=class extends g{constructor(){super();this.value=0}reset(){}validate(){return!0}set response(e){}static get properties(){return q(f({},g.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return Hs` <slot name="prompt"></slot>
320
- <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())})}};Ye.styles=[Ms``];customElements.define("qti-media-interaction",Ye);import{css as Ns,html as yr,LitElement as Vs}from"lit";import{property as Ps}from"lit/decorators.js";var se=class extends H(Vs,"qti-simple-choice",!0,"drop-list"){render(){return yr` <slot name="prompt"> </slot>
323
+ `:ge`<slot name="prompt"></slot> <slot></slot>`}};ie.styles=[],n([Ms()],ie.prototype,"response",2),n([Ls({type:String,attribute:"response-identifier"})],ie.prototype,"responseIdentifier",2);customElements.define("qti-match-interaction",ie);import{css as Hs,html as Ns}from"lit";var Ye=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>
324
+ <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())})}};Ye.styles=[Hs``];customElements.define("qti-media-interaction",Ye);import{css as Vs,html as yr,LitElement as Ps}from"lit";import{property as Ds}from"lit/decorators.js";var se=class extends H(Ps,"qti-simple-choice",!0,"drop-list"){render(){return yr` <slot name="prompt"> </slot>
321
325
  <div part="container">
322
326
  <slot part="drags"> </slot>
323
327
  <div part="drops">
324
328
  ${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>yr`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
325
329
  </div>
326
- </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=[Ns`
330
+ </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=[Vs`
327
331
  [part='drags'] {
328
332
  display: flex;
329
333
  align-items: flex-start;
@@ -371,7 +375,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
371
375
  :host(.qti-choices-right) [part='container'] {
372
376
  flex-direction: row-reverse;
373
377
  }
374
- `],n([Ps({type:String})],se.prototype,"orientation",2);customElements.define("qti-order-interaction",se);import{LitElement as Ds,css as Os,html as Us}from"lit";var Be=class extends Ds{render(){return Us`<slot></slot>`}};Be.styles=[Os`
378
+ `],n([Ds({type:String})],se.prototype,"orientation",2);customElements.define("qti-order-interaction",se);import{LitElement as Os,css as Us,html as Is}from"lit";var Be=class extends Os{render(){return Is`<slot></slot>`}};Be.styles=[Us`
375
379
  :host {
376
380
  display: block;
377
381
  }
@@ -382,23 +386,23 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
382
386
  left: 50%;
383
387
  transform: translateX(-50%);
384
388
  }
385
- `];customElements.define("qti-position-object-interaction",Be);import{LitElement as Is,css as Fs,html as Xs}from"lit";var je=class extends Is{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return Xs`<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=[Fs`
389
+ `];customElements.define("qti-position-object-interaction",Be);import{LitElement as Fs,css as Xs,html as Ys}from"lit";var je=class extends Fs{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return Ys`<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=[Xs`
386
390
  :host {
387
391
  display: inline-block;
388
392
  position: relative;
389
393
  }
390
- `];customElements.define("qti-position-object-stage",je);import{css as Ys,html as xr}from"lit";import{property as Er,state as Bs}from"lit/decorators.js";import{repeat as js}from"lit/directives/repeat.js";import{styleMap as Ks}from"lit/directives/style-map.js";var K=class extends g{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return xr` <slot name="prompt"></slot>
394
+ `];customElements.define("qti-position-object-stage",je);import{css as Bs,html as xr}from"lit";import{property as Er,state as js}from"lit/decorators.js";import{repeat as Ks}from"lit/directives/repeat.js";import{styleMap as zs}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>
391
395
  <point-container>
392
- ${js(this._points,e=>e,(e,t)=>xr`
396
+ ${Ks(this._points,e=>e,(e,t)=>xr`
393
397
  <button
394
398
  part="point"
395
- style=${Ks({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
399
+ style=${zs({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
396
400
  aria-label="Remove point at ${e}"
397
401
  @click=${r=>{r.stopPropagation(),this._points=this._points.filter((s,o)=>o!==t),this.saveResponse(this._points)}}
398
402
  ></button>
399
403
  `)}
400
404
  <slot></slot>
401
- </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set response(e){this._points=Array.isArray(e)?e:[e]}connectedCallback(){super.connectedCallback(),this.querySelector("img").addEventListener("click",t=>{let r=t.offsetX,s=t.offsetY;this._points=[...this._points,r+" "+s],this.saveResponse(this._points)})}disconnectedCallback(){super.disconnectedCallback()}};K.styles=[Ys`
405
+ </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set response(e){this._points=Array.isArray(e)?e:[e]}connectedCallback(){super.connectedCallback(),this.querySelector("img").addEventListener("click",t=>{let r=t.offsetX,s=t.offsetY;this._points=[...this._points,r+" "+s],this.saveResponse(this._points)})}disconnectedCallback(){super.disconnectedCallback()}};z.styles=[Bs`
402
406
  :host {
403
407
  display: block;
404
408
  }
@@ -406,7 +410,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
406
410
  display: block;
407
411
  position: relative;
408
412
  }
409
- `],n([Er({type:Number,attribute:"max-choices"})],K.prototype,"maxChoices",2),n([Er({type:Number,attribute:"min-choices"})],K.prototype,"minChoices",2),n([Bs()],K.prototype,"_points",2);customElements.define("qti-select-point-interaction",K);import{css as zs,html as Ke,nothing as Pt}from"lit";import{property as oe,query as _r}from"lit/decorators.js";var C=class extends g{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()),Ke`<slot name="prompt"></slot>
413
+ `],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 Ws,html as Ke,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()),Ke`<slot name="prompt"></slot>
410
414
  <div id="slider" part="slider">
411
415
  ${this.csLive.getPropertyValue("--show-bounds")=="true"?Ke`<div id="bounds" part="bounds">
412
416
  <div>${this._min}</div>
@@ -418,17 +422,17 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
418
422
  ${this.csLive.getPropertyValue("--show-value")=="true"?Ke`<div id="value" part="value">${this.value}</div>`:Pt}
419
423
  </div>
420
424
  </div>
421
- </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([_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 Ws}from"lit";import{customElement as Js,property as Cr}from"lit/decorators.js";var ne=class extends g{constructor(){super(...arguments);this.countAttempt="true"}validate(){return!0}set response(e){}render(){return Ws`<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([Js("qti-end-attempt-interaction")],ne);import{LitElement as Zs,css as Gs,html as Qs}from"lit";var ze=class extends Zs{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return Qs` <slot name="qti-gap-img"></slot> `}};ze.styles=Gs`
425
+ </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=[Ws``],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 Js}from"lit";import{customElement as Zs,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 Js`<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([Zs("qti-end-attempt-interaction")],ne);import{LitElement as Gs,css as Qs,html as eo}from"lit";var ze=class extends Gs{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return eo` <slot name="qti-gap-img"></slot> `}};ze.styles=Qs`
422
426
  :host {
423
427
  position: absolute;
424
428
  }
425
- `;customElements.define("qti-associable-hotspot",ze);import{html as eo,LitElement as to}from"lit";import{property as ro}from"lit/decorators.js";var We=class extends to{constructor(){super(...arguments);this.tabindex=0}render(){return eo` <slot name="qti-gap-text"></slot>`}};n([ro({type:Number,reflect:!0})],We.prototype,"tabindex",2);customElements.define("qti-gap",We);import{LitElement as io}from"lit";import{property as so}from"lit/decorators.js";var Je=class extends io{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};n([so({type:Number,reflect:!0})],Je.prototype,"tabindex",2);customElements.define("qti-gap-img",Je);import{html as oo,LitElement as no}from"lit";import{property as ao}from"lit/decorators.js";var Ze=class extends no{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return oo`<slot></slot>`}};n([ao({type:Number,reflect:!0})],Ze.prototype,"tabindex",2);customElements.define("qti-gap-text",Ze);import{css as lo}from"lit";import{property as co}from"lit/decorators.js";var ve=class extends _{};ve.styles=lo`
429
+ `;customElements.define("qti-associable-hotspot",ze);import{html as to,LitElement as ro}from"lit";import{property as io}from"lit/decorators.js";var We=class extends ro{constructor(){super(...arguments);this.tabindex=0}render(){return to` <slot name="qti-gap-text"></slot>`}};n([io({type:Number,reflect:!0})],We.prototype,"tabindex",2);customElements.define("qti-gap",We);import{LitElement as so}from"lit";import{property as oo}from"lit/decorators.js";var Je=class extends so{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};n([oo({type:Number,reflect:!0})],Je.prototype,"tabindex",2);customElements.define("qti-gap-img",Je);import{html as no,LitElement as ao}from"lit";import{property as lo}from"lit/decorators.js";var Ze=class extends ao{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return no`<slot></slot>`}};n([lo({type:Number,reflect:!0})],Ze.prototype,"tabindex",2);customElements.define("qti-gap-text",Ze);import{css as co}from"lit";import{property as po}from"lit/decorators.js";var ve=class extends _{};ve.styles=co`
426
430
  :host {
427
431
  position: absolute;
428
432
  }
429
- `,n([co({attribute:"aria-ordervalue",type:Number,reflect:!0})],ve.prototype,"order",2);customElements.define("qti-hotspot-choice",ve);import{customElement as po}from"lit/decorators.js";import{html as uo}from"lit";var Ge=class extends _{render(){return uo`<div part="ch"><div part="cha"></div></div>
430
- <slot></slot> `}};Ge=n([po("qti-hottext")],Ge);import{LitElement as mo}from"lit";var Dt=class extends mo{};customElements.define("qti-inline-choice",Dt);import{customElement as ho}from"lit/decorators.js";import{css as fo,html as go}from"lit";var ye=class extends _{render(){return go`<div part="ch"><div part="cha"></div></div>
431
- <slot part="slot"></slot> `}};ye.styles=fo`
433
+ `,n([po({attribute:"aria-ordervalue",type:Number,reflect:!0})],ve.prototype,"order",2);customElements.define("qti-hotspot-choice",ve);import{customElement as uo}from"lit/decorators.js";import{html as mo}from"lit";var Ge=class extends _{render(){return mo`<div part="ch"><div part="cha"></div></div>
434
+ <slot></slot> `}};Ge=n([uo("qti-hottext")],Ge);import{LitElement as ho}from"lit";var Dt=class extends ho{};customElements.define("qti-inline-choice",Dt);import{customElement as fo}from"lit/decorators.js";import{css as bo,html as go}from"lit";var ye=class extends _{render(){return go`<div part="ch"><div part="cha"></div></div>
435
+ <slot part="slot"></slot> `}};ye.styles=bo`
432
436
  :host {
433
437
  display: flex;
434
438
  }
@@ -436,7 +440,7 @@ import{a as f,b as q,c as n}from"../chunk-343LZK3D.js";import{provide as wr}from
436
440
  width: 100%;
437
441
  display: block;
438
442
  }
439
- `,ye=n([ho("qti-simple-choice")],ye);export{g as Interaction,fe as QtPrintedVariable,Me as QtiAnd,A as QtiAssessmentItem,ze as QtiAssociableHotspot,ge as QtiAssociateInteraction,He as QtiBaseValue,_ as QtiChoice,G as QtiChoiceInteraction,Ce as QtiCompanionMaterialsInfo,w as QtiConditionExpression,bt as QtiContains,vt as QtiCorrect,ne as QtiEndAttemptInteraction,Ve as QtiEqual,Ne as QtiEqualRounded,m as QtiExpression,L as QtiExtendedTextInteraction,we as QtiFeedbackBlock,$e as QtiFeedbackInline,We as QtiGap,Je as QtiGapImg,Ue as QtiGapMatchInteraction,Ze as QtiGapText,V as QtiGraphicAssociateInteraction,Ie as QtiGraphicGapMatchInteraction,Fe as QtiGraphicOrderInteraction,yt as QtiGt,xt as QtiGte,ve as QtiHotspotChoice,Xe as QtiHotspotInteraction,Ge as QtiHottext,mt as QtiHottextInteraction,Dt as QtiInlineChoice,j as QtiInlineChoiceInteraction,Et as QtiIsNull,Le as QtiLookupOutcomeValue,_t as QtiLt,Ct as QtiLte,Pe as QtiMapResponse,ee as QtiMapping,At as QtiMatch,ie as QtiMatchInteraction,Ye as QtiMediaInteraction,kt as QtiMember,Te as QtiModalFeedback,wt as QtiMultiple,$t as QtiNot,Tt as QtiOr,se as QtiOrderInteraction,Rt as QtiOrdered,D as QtiOutcomeDeclaration,Ht as QtiPortableCustomInteraction,je as QtiPositionObjectStage,St as QtiProduct,Qe as QtiPrompt,ht as QtiResponseCondition,U as QtiResponseDeclaration,me as QtiResponseElse,gt as QtiResponseElseIf,he as QtiResponseIf,Q as QtiResponseProcessing,M as QtiRule,Be as QtiSPositionObjectInteraction,K as QtiSelectPointInteraction,ft as QtiSetOutcomeValue,Vt as QtiSimpleAssociableChoice,ye as QtiSimpleChoice,C as QtiSliderInteraction,De as QtiStringMatch,et as QtiStylesheet,Lt as QtiSum,R as QtiTextEntryInteraction,Mt as QtiVariable,P as itemContext,Wi as qtiAndMixin,qe as qtiContentBody,S as qtiRubricBlock};
443
+ `,ye=n([fo("qti-simple-choice")],ye);export{b as Interaction,fe as QtPrintedVariable,Me as QtiAnd,A as QtiAssessmentItem,ze as QtiAssociableHotspot,be as QtiAssociateInteraction,He as QtiBaseValue,_ as QtiChoice,Q as QtiChoiceInteraction,Ce as QtiCompanionMaterialsInfo,w as QtiConditionExpression,gt as QtiContains,vt as QtiCorrect,ne as QtiEndAttemptInteraction,Ve as QtiEqual,Ne as QtiEqualRounded,m as QtiExpression,L as QtiExtendedTextInteraction,we as QtiFeedbackBlock,$e as QtiFeedbackInline,We as QtiGap,Je as QtiGapImg,Ue as QtiGapMatchInteraction,Ze as QtiGapText,V as QtiGraphicAssociateInteraction,Ie as QtiGraphicGapMatchInteraction,Fe as QtiGraphicOrderInteraction,yt as QtiGt,xt as QtiGte,ve as QtiHotspotChoice,Xe as QtiHotspotInteraction,Ge as QtiHottext,mt as QtiHottextInteraction,Dt as QtiInlineChoice,j as QtiInlineChoiceInteraction,Et as QtiIsNull,Le as QtiLookupOutcomeValue,_t as QtiLt,Ct as QtiLte,Pe as QtiMapResponse,ee as QtiMapping,At as QtiMatch,ie as QtiMatchInteraction,Ye as QtiMediaInteraction,kt as QtiMember,Te as QtiModalFeedback,wt as QtiMultiple,$t as QtiNot,Tt as QtiOr,se as QtiOrderInteraction,Rt as QtiOrdered,D as QtiOutcomeDeclaration,Ht as QtiPortableCustomInteraction,je as QtiPositionObjectStage,St as QtiProduct,Qe as QtiPrompt,ht as QtiResponseCondition,U as QtiResponseDeclaration,me as QtiResponseElse,bt as QtiResponseElseIf,he as QtiResponseIf,K as QtiResponseProcessing,M as QtiRule,Be as QtiSPositionObjectInteraction,z as QtiSelectPointInteraction,ft as QtiSetOutcomeValue,Vt as QtiSimpleAssociableChoice,ye as QtiSimpleChoice,C as QtiSliderInteraction,De as QtiStringMatch,et as QtiStylesheet,Lt as QtiSum,R as QtiTextEntryInteraction,Mt as QtiVariable,P as itemContext,Ji as qtiAndMixin,qe as qtiContentBody,S as qtiRubricBlock};
440
444
  /*! Bundled license information:
441
445
 
442
446
  lit-html/node/lit-html.js: