@citolab/qti-components 6.5.2 → 6.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom-elements.json +1126 -1126
- package/dist/index.cjs +87 -48
- package/dist/index.d.cts +46 -1
- package/dist/index.d.ts +46 -1
- package/dist/index.js +86 -47
- package/dist/qti-components/index.cjs +23 -19
- package/dist/qti-components/index.d.cts +1 -0
- package/dist/qti-components/index.d.ts +1 -0
- package/dist/qti-components/index.js +50 -46
- package/dist/styles.bundled.css +3 -0
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
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),
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
156
|
-
|
|
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"))}};
|
|
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([
|
|
178
|
-
<slot part="drops"></slot>`}};Ue.styles=[
|
|
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
|
|
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=${
|
|
205
|
-
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
|
-
${
|
|
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&&
|
|
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([
|
|
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=
|
|
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
|
|
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=[
|
|
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
|
|
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=[
|
|
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
|
|
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
|
|
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)=>
|
|
309
|
+
${this.cols.map((e,t)=>ge`<th part="r-header">${vr(e.innerHTML)}</th>`)}
|
|
306
310
|
</tr>
|
|
307
|
-
${this.rows.map((e,t)=>
|
|
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
|
|
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
|
-
`:
|
|
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=[
|
|
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=[
|
|
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([
|
|
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
|
|
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
|
|
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
|
-
${
|
|
396
|
+
${Ks(this._points,e=>e,(e,t)=>xr`
|
|
393
397
|
<button
|
|
394
398
|
part="point"
|
|
395
|
-
style=${
|
|
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()}};
|
|
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"})],
|
|
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=[
|
|
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
|
|
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([
|
|
430
|
-
<slot></slot> `}};Ge=n([
|
|
431
|
-
<slot part="slot"></slot> `}};ye.styles=
|
|
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([
|
|
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:
|