@citolab/qti-components 6.0.30 → 6.0.33
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/chunk-G7BJTOY4.cjs +17 -0
- package/dist/{chunk-3S2ODAEN.cjs → chunk-P55XHWZV.cjs} +7 -2
- package/dist/chunk-UE4QJK43.js +17 -0
- package/dist/{chunk-KT5PFIUE.js → chunk-X3ZKCOOQ.js} +8 -3
- package/dist/custom-elements.json +636 -530
- package/dist/index.cjs +70 -62
- package/dist/index.css +5 -0
- package/dist/index.d.cts +18 -5
- package/dist/index.d.ts +18 -5
- package/dist/index.js +67 -59
- package/dist/qti-components/index.cjs +41 -38
- package/dist/qti-components/index.d.cts +14 -4
- package/dist/qti-components/index.d.ts +14 -4
- package/dist/qti-components/index.js +70 -67
- package/dist/qti-item/index.cjs +1 -1
- package/dist/qti-item/index.js +1 -1
- package/dist/qti-item-react/index.cjs +1 -1
- package/dist/qti-item-react/index.d.cts +1 -1
- package/dist/qti-item-react/index.d.ts +1 -1
- package/dist/qti-item-react/index.js +1 -1
- package/dist/{qti-simple-choice-9a8c789b.d.ts → qti-simple-choice-e2bc67b1.d.ts} +6 -3
- package/dist/qti-transform/index.cjs +1 -1
- package/dist/qti-transform/index.js +1 -1
- package/package.json +41 -42
- package/dist/chunk-OO5TITDR.js +0 -17
- package/dist/chunk-Z2P5ZMVD.cjs +0 -17
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as yt,b as h}from"../chunk-QROD4MVT.js";import{a as vt}from"../chunk-5GG2XAUT.js";import{a as A,b as W,c as s}from"../chunk-343LZK3D.js";var xt={};var Et={};var qt={};var Ct={};var _t={};var kt={};var At={};var Tt={};var wt={};var Rt={ON_OUTCOME_CHANGED:"qti-outcome-changed",ON_INTERACTION_CHANGED:"on-interaction-changed",ON_REGISTER_VARIABLE:"on-register-variable",ON_REGISTER_FEEDBACK:"on-register-feedback",ON_REGISTER_INTERACTION:"on-register-interaction",ON_REGISTER_CHOICE:"on-register-choice",ON_REGISTER_HOTSPOT:"on-register-hotspot",ON_LOOSE_CHOICE:"on-loose-choice",ON_INTERACTION_RESPONSE:"on-interaction-response",ON_DROPDOWN_SELECTED:"on-dropdown-selected",ON_CHOICE_ELEMENT_SELECTED:"choice-element-selected"};var H=class{constructor(){this.value=null}},D=class{constructor(){this.value=null;this.candidateResponse=null;this.correctResponse=null}};import{customElement as er,property as oe}from"lit/decorators.js";import{html as tr,LitElement as rr}from"lit";var T=class extends rr{constructor(){super();this.variables=[];this.feedbackElements=[];this.interactionElements=[];this._numAttempts=0;this._handleDisabledChange=(e,t)=>{this.interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this.interactionElements.forEach(r=>r.readonly=t);this.addEventListener("qti-register-variable",this._registerVariable),this.addEventListener("qti-register-feedback",this.registerFeedbackElement),this.addEventListener("qti-register-interaction",this.registerInteractionElement),this.addEventListener("qti-outcome-changed",this.outcomeChanged),this.addEventListener("qti-interaction-response",this.interactionResponse)}render(){return tr`<slot></slot>`}firstUpdated(e){super.firstUpdated(e),this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0,detail:this}))}disconnectedCallback(){this.removeEventListener("qti-register-variable",this._registerVariable),this.removeEventListener("qti-register-feedback",this.registerFeedbackElement),this.removeEventListener("qti-register-interaction",this.registerInteractionElement),this.removeEventListener("qti-outcome-changed",this.outcomeChanged),this.removeEventListener("qti-interaction-response",this.interactionResponse)}_registerVariable(e){this.variables.push(e.detail.variable)}showCorrectResponse(){let e=this.variables.filter(t=>"correctResponse"in t&&t.correctResponse);this.responses=e.map(t=>({responseIdentifier:t.identifier,response:t.correctResponse}))}processResponse(){let e=this.querySelector("qti-response-processing");return e?e.process?(e.process(),this._numAttempts++,this.dispatchEvent(new CustomEvent("qti-response-processing")),!0):(console.info("Client side response webcomponents not available"),!1):(console.info("Client side response processing template not available"),!1)}set responses(e){if(e)for(let t of e){let r=this.interactionElements.find(n=>n.getAttribute("response-identifier")===t.responseIdentifier),o=this.getResponse(t.responseIdentifier);o&&(o.value=t.response),r&&(r.response=t.response)}}resetInteractions(){this.interactionElements.forEach(e=>e.reset())}validateResponses(){let e=!0;return this.interactionElements.forEach(t=>{t.validate()||(e=!1)}),e}getVariable(e){switch(e){case"numAttempts":return{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:this._numAttempts.toString()};default:{let t=this.variables.find(r=>r.identifier===e);return t||(console.warn(`Variable with identifier ${e} was not found`),null)}break}}getResponse(e){let t=this.variables.find(o=>o.identifier===e);return t instanceof D?t:null}getOutcome(e){let t=this.variables.find(r=>r.identifier===e);return t instanceof H?t:null}registerFeedbackElement(e){e.stopPropagation(),this.feedbackElements.push(e.detail)}registerInteractionElement(e){e.stopPropagation(),this.interactionElements.push(e.target)}interactionResponse(e){let t=e.detail,r=this.getResponse(t.responseIdentifier);r&&(r.value=t.response),e.stopImmediatePropagation();let o=this.getAttribute("identifier");o||console.warn("qti-assessment-item has no identifier specified"),this.dispatchEvent(new CustomEvent("qti-interaction-changed",{bubbles:!0,composed:!0,detail:{item:o,responseIdentifier:t.responseIdentifier,response:t.response}}))}outcomeChanged(e){this.showFeedback(e)}showFeedback(e){this.feedbackElements.forEach(t=>{t.checkShowFeedback(e.detail.outcomeIdentifier)})}setOutcomeValue(e,t){let r;switch(e){case"completionStatus":r={identifier:"completionStatus",cardinality:"single",baseType:"string",value:t};break;default:{if(r=this.getOutcome(e),!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}r.cardinality==="single"?r.value=t:r.value.push(t)}break}this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:r.value}}))}};s([oe({type:Boolean})],T.prototype,"disabled",2),s([oe({type:Boolean})],T.prototype,"readonly",2),s([oe({type:String})],T.prototype,"title",2),s([oe({type:String})],T.prototype,"identifier",2),s([h("disabled",{waitUntilFirstUpdate:!0})],T.prototype,"_handleDisabledChange",2),s([h("readonly",{waitUntilFirstUpdate:!0})],T.prototype,"_handleReadonlyChange",2),T=s([er("qti-assessment-item")],T);import{LitElement as ir}from"lit";var $e=class extends ir{constructor(){super()}connectedCallback(){super.connectedCallback();let e=this.closest("qti-assessment-item"),t=this.getAttribute("href");if(t!==null){let r=document.createElement("link");r.rel="stylesheet",r.type="text/css",r.media="screen",r.href=t,e.appendChild(r),this.styleLink=r}if(this.textContent!==null){let r=document.createElement("style");r.media="screen",r.textContent=this.textContent,e.appendChild(r),this.styleLink=r}}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",$e);import{customElement as or}from"lit/decorators.js";import{html as nr,LitElement as ar}from"lit";import{css as sr}from"lit";var Lt=sr`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
}
|
|
5
|
-
`;var $=class extends
|
|
5
|
+
`;var $=class extends ar{render(){return nr`<slot name="qti-rubric-block"></slot><slot></slot>`}};$.styles=Lt,$=s([or("qti-item-body")],$);import{html as lr,LitElement as cr}from"lit";var Oe=class extends cr{render(){return lr`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Oe);import{html as pr}from"lit/static-html.js";import{property as G}from"lit/decorators.js";import{LitElement as dr}from"lit";var ur={SPACE:32},y=class extends dr{constructor(){super(...arguments);this.tabindex=0;this.disabled=!1;this.readonly=!1;this.checked=!1}handleDisabledChange(e,t){t?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-register-choice",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-loose-choice",{bubbles:!0,cancelable:!1,composed:!0}))}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){if(!e.altKey)switch(e.keyCode){case ur.SPACE:e.preventDefault(),this._toggleChecked();break;default:}}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("qti-choice-element-selected",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier,checked:this.checked}})))}validateAllProps(){return!!this.getAttribute("identifier")}render(){return this.validateAllProps()||console.warn(`Invalid props for ${this.outerHTML}`,"missing identifier"),pr` <slot></slot> `}};s([G({type:String})],y.prototype,"identifier",2),s([G({type:Number,reflect:!0})],y.prototype,"tabindex",2),s([G({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:a=>a}})],y.prototype,"disabled",2),s([G({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:a=>a}})],y.prototype,"readonly",2),s([G({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:a=>a}})],y.prototype,"checked",2),s([h("disabled",{waitUntilFirstUpdate:!0})],y.prototype,"handleDisabledChange",1);import{html as mr,LitElement as hr}from"lit";var V=class extends hr{render(){return mr``}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",V);import{property as Pe}from"lit/decorators.js";var O=class extends V{connectedCallback(){super.connectedCallback();let e=new D;e.baseType=this.baseType,e.identifier=this.identifier,e.correctResponse=this.correctResponse,e.cardinality=this.cardinality||"single",e.mapping=this.mapping,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 o=0;o<r.length;o++)e.push(r[o].textContent),r[o].remove()}}return e}get mapping(){return this.querySelector("qti-mapping")}};s([Pe({type:String,attribute:"base-type"})],O.prototype,"baseType",2),s([Pe({type:String})],O.prototype,"identifier",2),s([Pe({type:String})],O.prototype,"cardinality",2);customElements.define("qti-response-declaration",O);import{property as Ie}from"lit/decorators.js";var P=class extends V{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 o=parseInt(r.getAttribute("source-value")),n=parseInt(r.getAttribute("target-value"));(isNaN(o)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(o,n)}}return null}connectedCallback(){super.connectedCallback();let e=new H;e.identifier=this.identifier,e.cardinality=this.cardinality,e.baseType=this.baseType,e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};s([Ie({type:String,attribute:"base-type"})],P.prototype,"baseType",2),s([Ie({type:String})],P.prototype,"identifier",2),s([Ie({type:String})],P.prototype,"cardinality",2);customElements.define("qti-outcome-declaration",P);import{LitElement as fr}from"lit";import{customElement as br}from"lit/decorators.js";var ne=class extends fr{};ne=s([br("qti-companion-materials-info")],ne);import{LitElement as gr,css as vr,html as yr}from"lit";import{customElement as xr,property as ae}from"lit/decorators.js";import{ContextConsumer as Er}from"@lit-labs/context";var w=class extends gr{constructor(){super(...arguments);this.logger=new Er(this,vt,e=>this.style.display=this.view===e.view?"block":"none",!0)}handleclassNamesChange(e,t){this.classNames.split(" ").forEach(o=>{switch(o){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return yr`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};w.styles=vr`
|
|
6
6
|
:host {
|
|
7
7
|
display: block;
|
|
8
8
|
}
|
|
9
|
-
`,s([ae({type:String})],
|
|
9
|
+
`,s([ae({type:String})],w.prototype,"id",2),s([ae({type:String})],w.prototype,"use",2),s([ae({type:String})],w.prototype,"view",2),s([ae({type:String,attribute:"class"})],w.prototype,"classNames",2),s([h("classNames",{waitUntilFirstUpdate:!0})],w.prototype,"handleclassNamesChange",1),w=s([xr("qti-rubric-block")],w);import{LitElement as qr,html as Cr}from"lit";import{customElement as _r}from"lit/decorators.js";var le=class extends qr{render(){return Cr`<slot></slot>`}};le=s([_r("qti-content-body")],le);import{css as Ar,html as Tr}from"lit";import{LitElement as kr}from"lit";import{property as ce}from"lit/decorators.js";var E=class extends kr{constructor(){super();this.showHide="show",this.showFeedback(this.showHide==="hide")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e){let t=this.closest("qti-assessment-item").getOutcome(e);if(this.outcomeIdentifier!==e||!t)return;let r=!1;Array.isArray(t.value)?r=t.baseType=="float"||t.baseType=="integer"?t.value.includes(this.identifier):t.value.includes(this.identifier):r=t.baseType=="float"||t.baseType=="integer"?this.identifier===t.value:this.identifier===t.value,this.showFeedback(r)}showFeedback(e){this.showStatus=e?"on":"off"}};s([ce({type:String,attribute:"show-hide"})],E.prototype,"showHide",2),s([ce({type:String,attribute:"outcome-identifier"})],E.prototype,"outcomeIdentifier",2),s([ce({type:String})],E.prototype,"identifier",2),s([ce({type:String,attribute:!1})],E.prototype,"showStatus",2);var pe=class extends E{constructor(){super(...arguments);this.render=()=>Tr` <slot part="feedback" class="${this.showStatus}"></slot> `}};pe.styles=Ar`
|
|
10
10
|
.on {
|
|
11
11
|
display: inline-block;
|
|
12
12
|
}
|
|
13
13
|
.off {
|
|
14
14
|
display: none;
|
|
15
15
|
}
|
|
16
|
-
`;customElements.define("qti-feedback-inline",pe);import{css as
|
|
16
|
+
`;customElements.define("qti-feedback-inline",pe);import{css as wr,html as Rr}from"lit";var de=class extends E{constructor(){super(...arguments);this.render=()=>Rr` <slot part="feedback" class="${this.showStatus}"></slot> `}};de.styles=wr`
|
|
17
17
|
.on {
|
|
18
18
|
display: inline-block;
|
|
19
19
|
}
|
|
20
20
|
.off {
|
|
21
21
|
display: none;
|
|
22
22
|
}
|
|
23
|
-
`;customElements.define("qti-modal-feedback",de);import{css as
|
|
23
|
+
`;customElements.define("qti-modal-feedback",de);import{css as Lr,html as Sr}from"lit";var ue=class extends E{render(){return Sr` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(i){this.checkShowFeedback(this.outcomeIdentifier)}};ue.styles=Lr`
|
|
24
|
+
:host {
|
|
25
|
+
display: block;
|
|
26
|
+
}
|
|
24
27
|
.on {
|
|
25
28
|
display: block;
|
|
26
29
|
}
|
|
27
30
|
.off {
|
|
28
31
|
display: none;
|
|
29
32
|
}
|
|
30
|
-
`;customElements.define("qti-feedback-block",ue);import{css as
|
|
33
|
+
`;customElements.define("qti-feedback-block",ue);import{css as Vr,html as Nr}from"lit";import{ifDefined as St}from"lit/directives/if-defined.js";import{property as Fe}from"lit/decorators.js";import{LitElement as Mr}from"lit";var f=class extends Mr{constructor(){super(...arguments);this.responseIdentifier="";this.disabled=!1;this.readonly=!1}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}}))}};s([Fe({attribute:"response-identifier"})],f.prototype,"responseIdentifier",2),s([Fe({reflect:!0,type:Boolean})],f.prototype,"disabled",2),s([Fe({reflect:!0,type:Boolean})],f.prototype,"readonly",2);import{customElement as Hr,property as me,state as Mt}from"lit/decorators.js";import{createRef as Dr}from"lit/directives/ref.js";var k=class extends f{constructor(){super(...arguments);this._value="";this._size=5;this.inputRef=Dr()}handleclassNamesChange(e,t){t.split(" ").forEach(o=>{if(o.startsWith("qti-input-width")){let n=o.replace("qti-input-width-","");this._size=parseInt(n)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[Vr`
|
|
31
34
|
:host {
|
|
32
35
|
display: inline-flex;
|
|
33
36
|
}
|
|
34
|
-
`]}render(){return
|
|
37
|
+
`]}render(){return Nr`
|
|
35
38
|
<input
|
|
36
39
|
part="input"
|
|
37
40
|
spellcheck="false"
|
|
@@ -40,14 +43,14 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
40
43
|
@keyup="${this.textChanged}"
|
|
41
44
|
@change="${this.textChanged}"
|
|
42
45
|
type="${this.patternMask=="[0-9]*"?"number":"text"}"
|
|
43
|
-
placeholder="${
|
|
46
|
+
placeholder="${St(this.placeholderText?this.placeholderText:void 0)}"
|
|
44
47
|
.value="${this._value}"
|
|
45
48
|
size="${this._size}"
|
|
46
|
-
pattern="${
|
|
49
|
+
pattern="${St(this.patternMask?this.patternMask:void 0)}"
|
|
47
50
|
?disabled="${this.disabled}"
|
|
48
51
|
?readonly="${this.readonly}"
|
|
49
52
|
/>
|
|
50
|
-
`}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")}};s([me({type:Number,attribute:"expected-length"})],
|
|
53
|
+
`}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")}};s([me({type:Number,attribute:"expected-length"})],k.prototype,"expectedLength",2),s([me({type:String,attribute:"pattern-mask"})],k.prototype,"patternMask",2),s([me({type:String,attribute:"placeholder-text"})],k.prototype,"placeholderText",2),s([Mt()],k.prototype,"_value",2),s([Mt()],k.prototype,"_size",2),s([me({type:String,attribute:"class"})],k.prototype,"classNames",2),s([h("classNames")],k.prototype,"handleclassNamesChange",1),k=s([Hr("qti-text-entry-interaction")],k);import{css as $r,html as Or}from"lit";import{ifDefined as Ue}from"lit/directives/if-defined.js";import{ref as Pr,createRef as Ir}from"lit/directives/ref.js";import{customElement as Fr,property as he,state as Ur}from"lit/decorators.js";var R=class extends f{constructor(){super(...arguments);this.textareaRef=Ir();this._value=""}handleclassNamesChange(e,t){this.classNames.split(" ").forEach(o=>{if(o.startsWith("qti-height-lines")){let n=o.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(n))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[$r`
|
|
51
54
|
/* PK: display host as block, else design will be collapsed */
|
|
52
55
|
:host {
|
|
53
56
|
display: block;
|
|
@@ -58,38 +61,38 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
58
61
|
height: 100%;
|
|
59
62
|
border: 0;
|
|
60
63
|
}
|
|
61
|
-
`]}render(){return
|
|
64
|
+
`]}render(){return Or`<textarea
|
|
62
65
|
part="textarea"
|
|
63
|
-
${
|
|
66
|
+
${Pr(this.textareaRef)}
|
|
64
67
|
spellcheck="false"
|
|
65
68
|
autocomplete="off"
|
|
66
69
|
@keydown="${e=>e.stopImmediatePropagation()}"
|
|
67
70
|
@keyup="${this.textChanged}"
|
|
68
71
|
@change="${this.textChanged}"
|
|
69
|
-
placeholder="${
|
|
70
|
-
maxlength="${
|
|
71
|
-
pattern="${
|
|
72
|
+
placeholder="${Ue(this.placeholderText?this.placeholderText:void 0)}"
|
|
73
|
+
maxlength="${Ue(this.expectedLength?this.expectedLength:void 0)}"
|
|
74
|
+
pattern="${Ue(this.patternMask?this.patternMask:void 0)}"
|
|
72
75
|
?disabled="${this.disabled}"
|
|
73
76
|
?readonly="${this.readonly}"
|
|
74
77
|
.value=${this._value}
|
|
75
|
-
></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")}};s([he({type:Number,attribute:"expected-length"})],R.prototype,"expectedLength",2),s([he({type:String,attribute:"pattern-mask"})],R.prototype,"patternMask",2),s([he({type:String,attribute:"placeholder-text"})],R.prototype,"placeholderText",2),s([
|
|
78
|
+
></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")}};s([he({type:Number,attribute:"expected-length"})],R.prototype,"expectedLength",2),s([he({type:String,attribute:"pattern-mask"})],R.prototype,"patternMask",2),s([he({type:String,attribute:"placeholder-text"})],R.prototype,"placeholderText",2),s([Ur()],R.prototype,"_value",2),s([he({type:String,attribute:"class"})],R.prototype,"classNames",2),s([h("classNames",{waitUntilFirstUpdate:!0})],R.prototype,"handleclassNamesChange",1),R=s([Fr("qti-extended-text-interaction")],R);import{html as Xr}from"lit";import{property as Vt}from"lit/decorators.js";var v=class extends f{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)}reset(){this._choiceElements.forEach(e=>{e.reset()})}validate(){return this._choiceElements.reduce((t,r)=>t+(r.checked?1:0),0)>=this.minChoices}set response(e){this._choiceElements.forEach(r=>{r.checked=!1}),(Array.isArray(e)?e:[e]).forEach(r=>{let o=this.querySelector(`[identifier='${r}']`);o&&(o.checked=!0)})}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)}};s([Vt({type:Number,attribute:"min-choices"})],v.prototype,"minChoices",2),s([Vt({type:Number,attribute:"max-choices"})],v.prototype,"maxChoices",2),s([h("disabled",{waitUntilFirstUpdate:!0})],v.prototype,"_handleDisabledChange",2),s([h("readonly",{waitUntilFirstUpdate:!0})],v.prototype,"_handleReadonlyChange",2),s([h("maxChoices",{waitUntilFirstUpdate:!0})],v.prototype,"_handleMaxChoicesChange",2);var Xe=class extends v{constructor(){super(...arguments);this.render=()=>Xr`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",Xe);import{css as Yr,html as Nt}from"lit";import{property as Br,state as zr}from"lit/decorators.js";var I=class extends f{constructor(){super(...arguments);this.options=[];this.dataPrompt="select"}static get styles(){return[Yr`
|
|
76
79
|
:host {
|
|
77
80
|
display: inline-block;
|
|
78
81
|
}
|
|
79
|
-
`]}render(){return
|
|
82
|
+
`]}render(){return Nt` <select
|
|
80
83
|
part="select"
|
|
81
84
|
@change="${this.choiceSelected}"
|
|
82
85
|
?disabled="${this.disabled}"
|
|
83
86
|
?readonly="${this.readonly}"
|
|
84
87
|
>
|
|
85
|
-
${this.options.map(e=>
|
|
86
|
-
</select>`}firstUpdated(e){super.firstUpdated(e),this.addEventListener(
|
|
88
|
+
${this.options.map(e=>Nt` <option value="${e.value}" ?selected="${e.selected}">${e.textContent}</option> `)}
|
|
89
|
+
</select>`}firstUpdated(e){super.firstUpdated(e),this.addEventListener(Rt.ON_DROPDOWN_SELECTED,this.choiceSelected);let t=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...t.map(r=>({textContent:r.innerHTML,value:r.getAttribute("identifier"),selected:!1}))]}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>W(A({},e),{selected:t===0}))}set response(e){this.options=this.options.map(t=>(e===t.value&&(t.selected=!0),t))}choiceSelected(e){let t=e.target.value;this.options=this.options.map(r=>W(A({},r),{selected:r.value===t})),this.saveResponse(t)}};I.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],s([zr()],I.prototype,"options",2),s([Br({attribute:"data-prompt",type:String})],I.prototype,"dataPrompt",2);customElements.define("qti-inline-choice-interaction",I);import{customElement as Kr,property as Wr}from"lit/decorators.js";import{html as Gr}from"lit";import{css as jr}from"lit";var Ht=jr`
|
|
87
90
|
:host {
|
|
88
91
|
display: flex;
|
|
89
92
|
flex-direction: column;
|
|
90
93
|
// align-items: flex-start;
|
|
91
94
|
}
|
|
92
|
-
`;var F=class extends v{
|
|
95
|
+
`;var F=class extends v{render(){return Gr` <slot name="prompt"></slot><slot part="slot"></slot>`}};F.styles=Ht,s([Wr({type:String})],F.prototype,"orientation",2),F=s([Kr("qti-choice-interaction")],F);import{customElement as Jr}from"lit/decorators.js";import{html as Zr,LitElement as Qr}from"lit";var Dt=`<qti-response-processing>
|
|
93
96
|
<qti-response-condition>
|
|
94
97
|
<qti-response-if>
|
|
95
98
|
<qti-match>
|
|
@@ -106,7 +109,7 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
106
109
|
</qti-set-outcome-value>
|
|
107
110
|
</qti-response-else>
|
|
108
111
|
</qti-response-condition>
|
|
109
|
-
</qti-response-processing
|
|
112
|
+
</qti-response-processing>`,$t=`<qti-response-processing>
|
|
110
113
|
<qti-response-condition>
|
|
111
114
|
<qti-response-if>
|
|
112
115
|
<qti-is-null>
|
|
@@ -122,7 +125,7 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
122
125
|
</qti-set-outcome-value>
|
|
123
126
|
</qti-response-else>
|
|
124
127
|
</qti-response-condition>
|
|
125
|
-
</qti-response-processing>`,
|
|
128
|
+
</qti-response-processing>`,Ot=`<qti-response-processing>
|
|
126
129
|
<qti-response-condition>
|
|
127
130
|
<qti-response-if>
|
|
128
131
|
<qti-is-null>
|
|
@@ -138,8 +141,8 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
138
141
|
</qti-set-outcome-value>
|
|
139
142
|
</qti-response-else>
|
|
140
143
|
</qti-response-condition>
|
|
141
|
-
</qti-response-processing>`;var U=class extends
|
|
142
|
-
${this._debug?Q`${JSON.stringify(this._result)}`:
|
|
144
|
+
</qti-response-processing>`;var U=class extends Qr{render(){return Zr`<slot></slot>`}static get observedAttributes(){return["identifier"]}process(){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($t));break}case"map_response_point":{this.appendChild(this.fragmentFromString(Ot));break}case"match_correct":this.appendChild(this.fragmentFromString(Dt));break}}let i=[...this.children];for(let e of i)e.process()}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};U=s([Jr("qti-response-processing")],U);import{customElement as ei}from"lit/decorators.js";import{html as ti,LitElement as ri}from"lit";var S=class extends ri{render(){return ti`<slot></slot>`}process(){throw new Error("Not implemented")}};S=s([ei("qti-rule")],S);import{html as ii}from"lit";var Ye=class extends S{render(){return ii`<slot></slot>`}process(){let i=[...this.children];for(let e=0;e<i.length;e++){let t=i[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",Ye);var Be=class extends S{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.closest("qti-assessment-item").setOutcomeValue(i,t)}};customElements.define("qti-set-outcome-value",Be);import{html as ni}from"lit";import{html as si,LitElement as oi}from"lit";var J=class extends oi{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return si` <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",J);var Z=class extends J{render(){return ni`${super.render()}`}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",Z);import{html as ai}from"lit";var ze=class extends Z{render(){return ai`${super.render()}`}};customElements.define("qti-response-else-if",ze);import{LitElement as li,css as ci,html as Q,nothing as je}from"lit";import{state as Pt}from"lit/decorators.js";var u=class extends li{constructor(){super(...arguments);this._error=[];this._debug=!1;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.calculate();return r.length>0?{baseType:r[0].baseType,value:r.map(o=>o.value),cardinality:"multiple"}: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.calculate().toString(),cardinality:"single"}}catch(t){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}set error(e){let t=this._error;this._error.push(e),this.requestUpdate("error",t)}render(){return Q`${this._debug?Q`${this._error.map(e=>Q`<div role="alert">${e}</div>`)}`:je}
|
|
145
|
+
${this._debug?Q`${JSON.stringify(this._result)}`:je} ${this._debug?Q`<slot></slot>`:je}`}calculate(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};u.styles=ci`
|
|
143
146
|
:host {
|
|
144
147
|
display: inline;
|
|
145
148
|
}
|
|
@@ -152,15 +155,15 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
152
155
|
border-radius: 5px;
|
|
153
156
|
margin-bottom: 3px;
|
|
154
157
|
}
|
|
155
|
-
`,s([$t()],u.prototype,"_result",2),s([$t()],u.prototype,"error",1);var q=class extends u{calculate(){throw new Error("Not implemented")}};var je=class extends q{calculate(){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-and, expected boolean"),null;return r}).every(e=>typeof e=="boolean"&&e)}};customElements.define("qti-and",je);import{property as li}from"lit/decorators.js";var fe=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};s([li({type:String,attribute:"base-type"})],fe.prototype,"baseType",2);customElements.define("qti-base-value",fe);var Ke=class extends q{calculate(){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,o=t.value;return r.filter(c=>o.includes(c)).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",Ke);var We=class extends u{get interpretation(){return this.getAttribute("interpretation")||""}calculate(){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",We);import{property as ci}from"lit/decorators.js";var w=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),o=parseInt(e,10);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`Cannot convert ${i} and/or ${e} to int.`);break}case"float":{let r=parseFloat(i),o=parseFloat(e);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`couldn't convert ${i} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=i.split(" ").sort(),o=e.split(" ").sort();if(r.length===2&&o.length===2)return t==="pair"&&(r.sort(),o.sort()),r.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${i} 2: ${e}`);break}}return!1}};var be=class extends u{constructor(){super(...arguments);this.toleranceMode="exact"}calculate(){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):w.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};s([ci({type:String})],be.prototype,"toleranceMode",2);customElements.define("qti-equal",be);import{property as pi}from"lit/decorators.js";var ge=class extends u{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}calculate(){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 o=parseFloat(t.value),n=parseFloat(r.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};s([pi({type:String})],ge.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",ge);var Ge=class extends u{calculate(){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",Ge);var Je=class extends q{calculate(){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",Je);var Ze=class extends u{calculate(){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",Ze);var Qe=class extends u{calculate(){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",Qe);var et=class extends q{calculate(){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",et);import{property as tt}from"lit/decorators.js";import{LitElement as di}from"lit";var X=class extends di{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")}))}};s([tt({attribute:"default-value",type:Number})],X.prototype,"defaultValue",2),s([tt({attribute:"lower-bound",type:Number})],X.prototype,"lowerBound",2),s([tt({attribute:"upper-bound",type:Number})],X.prototype,"upperBound",2);customElements.define("qti-mapping",X);import{property as ui}from"lit/decorators.js";var ve=class extends u{calculate(){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],o=0;for(let n of r){let l=t.mapEntries.find(c=>w.compareSingleValues(c.mapKey,n,e.baseType));l==null||l.mappedValue==null?o+=t.defaultValue:o+=l.mappedValue}return t.lowerBound!=null&&(o=Math.max(t.lowerBound,o)),t.upperBound!=null&&(o=Math.min(t.upperBound,o)),o}};s([ui({type:String})],ve.prototype,"identifier",2);customElements.define("qti-map-response",ve);var rt=class a extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return this._result=a.match(e,t),this._result}return console.error("unexpected number of children in match"),null}static match(i,e){if(e.cardinality==="single")return Array.isArray(i.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):w.compareSingleValues(i.value.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 t=0;for(let r of e.value){if(e.cardinality==="ordered"){let o=i[t];if(!w.compareSingleValues(r,o,e.baseType))return!1}else{let o=null;for(let n of i.value)if(w.compareSingleValues(r,n,e.baseType)){o=n;break}if(o!==null)i.value.splice(i.value.indexOf(o),1);else return!1}t++}return!0}}};customElements.define("qti-match",rt);var it=class extends u{calculate(){let i=this.getVariables();this.children.length!==2&&(this.error="The member operator takes two sub-expressions");let[e,t]=i;if(e.baseType!==t.baseType&&(this.error="Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||(this.error="and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&(this.error="The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&(this.error="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",it);var st=class extends u{calculate(){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",st);import{html as mi}from"lit";var ot=class extends u{render(){return mi`${super.render()}`}calculate(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",ot);import{html as hi}from"lit";var nt=class extends q{render(){return hi``}calculate(){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-and, expected boolean"),null;return r}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",nt);var at=class extends u{calculate(){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",at);import{LitElement as fi,html as Ot}from"lit";import{property as bi,state as gi}from"lit/decorators.js";var ee=class extends fi{constructor(){super();this.value="";this.closest("qti-assessment-item").addEventListener("qti-response-processing",()=>{this.value=this.calculate()})}render(){return Ot`${Array.isArray(this.value)?this.value.map(e=>Ot`${e}`):this.value}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};s([bi({type:String})],ee.prototype,"identifier",2),s([gi()],ee.prototype,"value",2);customElements.define("qti-printed-variable",ee);var lt=class extends u{calculate(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseInt(r.value.toString())}catch(o){console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",lt);var ct=class extends u{calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",ct);import{LitElement as vi,html as Pt}from"lit";var pt=class extends vi{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={},o=l=>{let c={},p=l.getAttribute("key");if(p){let d=Array.from(l.children),m=d.map(g=>g.getAttribute("key"));m.length>0&&!m.find(g=>!Number.isInteger(+g))?c[p]=d.map(g=>n(g)):c[p]=l.textContent}return c},n=l=>{if(l){let c={};for(let p of l.children)c=k(k({},c),o(p));return c}};for(let l of t)return l.getAttribute("key")||(r=k(k({},r),n(l))),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 o=t=="IMS"?{properties:this.dataset}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,o,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,o),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(l=>l.getAttribute("href")).forEach(l=>{let c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.media="screen",c.href=l,r.appendChild(c)})}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=>{define("qtiCustomInteractionContext",()=>({register:o=>{this.register(o)},notifyReady:()=>{}})),r([this.module],()=>{},o=>{this._errorMessage=o})},r=>{this._errorMessage=r})}render(){return Pt`<slot></slot>${this._errorMessage&&Pt`<div style="color:red">
|
|
158
|
+
`,s([Pt()],u.prototype,"_result",2),s([Pt()],u.prototype,"error",1);var q=class extends u{calculate(){throw new Error("Not implemented")}};var Ke=class extends q{calculate(){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-and, expected boolean"),null;return r}).every(e=>typeof e=="boolean"&&e)}};customElements.define("qti-and",Ke);import{property as pi}from"lit/decorators.js";var fe=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};s([pi({type:String,attribute:"base-type"})],fe.prototype,"baseType",2);customElements.define("qti-base-value",fe);var We=class extends q{calculate(){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,o=t.value;return r.filter(c=>o.includes(c)).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",We);var Ge=class extends u{get interpretation(){return this.getAttribute("interpretation")||""}calculate(){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",Ge);import{property as di}from"lit/decorators.js";var C=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),o=parseInt(e,10);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`Cannot convert ${i} and/or ${e} to int.`);break}case"float":{let r=parseFloat(i),o=parseFloat(e);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`couldn't convert ${i} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=i.split(" ").sort(),o=e.split(" ").sort();if(r.length===2&&o.length===2)return t==="pair"&&(r.sort(),o.sort()),r.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${i} 2: ${e}`);break}}return!1}};var be=class extends u{constructor(){super(...arguments);this.toleranceMode="exact"}calculate(){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):C.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};s([di({type:String})],be.prototype,"toleranceMode",2);customElements.define("qti-equal",be);import{property as ui}from"lit/decorators.js";var ge=class extends u{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}calculate(){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 o=parseFloat(t.value),n=parseFloat(r.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};s([ui({type:String})],ge.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",ge);var Je=class extends u{calculate(){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",Je);var Ze=class extends q{calculate(){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",Ze);var Qe=class extends u{calculate(){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",Qe);var et=class extends u{calculate(){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",et);var tt=class extends q{calculate(){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",tt);import{property as rt}from"lit/decorators.js";import{LitElement as mi}from"lit";var X=class extends mi{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")}))}};s([rt({attribute:"default-value",type:Number})],X.prototype,"defaultValue",2),s([rt({attribute:"lower-bound",type:Number})],X.prototype,"lowerBound",2),s([rt({attribute:"upper-bound",type:Number})],X.prototype,"upperBound",2);customElements.define("qti-mapping",X);import{property as hi}from"lit/decorators.js";var ve=class extends u{calculate(){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],o=0;for(let n of r){let l=t.mapEntries.find(c=>C.compareSingleValues(c.mapKey,n,e.baseType));l==null||l.mappedValue==null?o+=t.defaultValue:o+=l.mappedValue}return t.lowerBound!=null&&(o=Math.max(t.lowerBound,o)),t.upperBound!=null&&(o=Math.min(t.upperBound,o)),o}};s([hi({type:String})],ve.prototype,"identifier",2);customElements.define("qti-map-response",ve);var it=class a extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return this._result=a.match(e,t),this._result}return console.error("unexpected number of children in match"),null}static match(i,e){if(e.cardinality==="single")return Array.isArray(i.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):C.compareSingleValues(i.value.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 t=0;for(let r of e.value){if(e.cardinality==="ordered"){let o=i[t];if(!C.compareSingleValues(r,o,e.baseType))return!1}else{let o=null;for(let n of i.value)if(C.compareSingleValues(r,n,e.baseType)){o=n;break}if(o!==null)i.value.splice(i.value.indexOf(o),1);else return!1}t++}return!0}}};customElements.define("qti-match",it);var st=class extends u{calculate(){let i=this.getVariables();this.children.length!==2&&(this.error="The member operator takes two sub-expressions");let[e,t]=i;if(e.baseType!==t.baseType&&(this.error="Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||(this.error="and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&(this.error="The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&(this.error="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",st);var ot=class extends u{calculate(){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",ot);import{html as fi}from"lit";var nt=class extends u{render(){return fi`${super.render()}`}calculate(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",nt);import{html as bi}from"lit";var at=class extends q{render(){return bi``}calculate(){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",at);var lt=class extends u{calculate(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",lt);import{LitElement as gi,html as It}from"lit";import{property as vi,state as yi}from"lit/decorators.js";var ee=class extends gi{constructor(){super();this.value="";this.closest("qti-assessment-item").addEventListener("qti-response-processing",()=>{this.value=this.calculate()})}render(){return It`${Array.isArray(this.value)?this.value.map(e=>It`${e}`):this.value}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};s([vi({type:String})],ee.prototype,"identifier",2),s([yi()],ee.prototype,"value",2);customElements.define("qti-printed-variable",ee);var ct=class extends u{calculate(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseInt(r.value.toString())}catch(o){console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",ct);var pt=class extends u{calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",pt);import{property as xi}from"lit/decorators.js";var ye=class extends u{constructor(){super(...arguments);this.caseSensitive="true"}calculate(){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 o=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),n=this.caseSensitive==="true"?r.value:r.value.toLowerCase();return C.compareSingleValues(o,n,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};s([xi({type:String,attribute:"case-sensitive"})],ye.prototype,"caseSensitive",2);customElements.define("qti-string-match",ye);var dt=class extends u{calculate(){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",dt);import{LitElement as Ei,html as Ft}from"lit";var ut=class extends Ei{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={},o=l=>{let c={},p=l.getAttribute("key");if(p){let d=Array.from(l.children),m=d.map(g=>g.getAttribute("key"));m.length>0&&!m.find(g=>!Number.isInteger(+g))?c[p]=d.map(g=>n(g)):c[p]=l.textContent}return c},n=l=>{if(l){let c={};for(let p of l.children)c=A(A({},c),o(p));return c}};for(let l of t)return l.getAttribute("key")||(r=A(A({},r),n(l))),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 o=t=="IMS"?{properties:this.dataset}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,o,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,o),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(l=>l.getAttribute("href")).forEach(l=>{let c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.media="screen",c.href=l,r.appendChild(c)})}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=>{define("qtiCustomInteractionContext",()=>({register:o=>{this.register(o)},notifyReady:()=>{}})),r([this.module],()=>{},o=>{this._errorMessage=o})},r=>{this._errorMessage=r})}render(){return Ft`<slot></slot>${this._errorMessage&&Ft`<div style="color:red">
|
|
156
159
|
<h1>Error</h1>
|
|
157
160
|
${this._errorMessage}
|
|
158
|
-
</div>`}`}};customElements.define("qti-portable-custom-interaction",pt);import{LitElement as xi,css as Ei,html as Ut}from"lit";var ye=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 yi}from"lit/decorators.js";var It=(a,i,e)=>{class t extends a{constructor(){super(...arguments);this.disabled=!1}firstUpdated(n){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(n);let l=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),l.forEach(c=>{c.setAttribute("dropzone","move"),c.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(c)});for(let c of l)this.observer=new MutationObserver(p=>{p.forEach(d=>{if(d.type==="attributes")switch(d.attributeName){case"disabled":{c.hasAttribute("disabled")?this.removeHandler(c):this.attachHandler(c);break}}})}),this.observer.observe(c,{attributes:!0})}attachHandler(n){n.addEventListener("dragover",this.dragoverHandler),n.addEventListener("dragenter",this.dragenterHandler),n.addEventListener("drop",this.dropHandler)}removeHandler(n){n.removeEventListener("dragover",this.dragoverHandler),n.removeEventListener("dragenter",this.dragenterHandler),n.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var n;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(n=this.observer)==null||n.disconnect())}dragenterHandler(n){n.preventDefault()}dragoverHandler(n){return n.preventDefault(),n.currentTarget.setAttribute("active",""),n.dataTransfer.dropEffect="move",!1}dropHandler(n){n.preventDefault();let l=n.currentTarget,c=this.querySelector(`[identifier=${n.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${n.dataTransfer.getData("text")}`);return l?p.parentElement.getAttribute("identifier")!==l.getAttribute("identifier")&&l.appendChild(p):console.error(`cannot find droppable, target: ${n.target?JSON.stringify(n.target):"null"}`),l.removeAttribute("active"),!1}dragleaveHandler(n){return n.preventDefault(),n.currentTarget.removeAttribute("active"),n.dataTransfer.dropEffect="none",!1}}return s([yi({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var Ft=(a,i,e)=>{class t extends a{}return t};import{property as Y}from"lit/decorators.js";var L=(a,i,e,t)=>{class r extends Ft(It(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(l,c){if(this.classList.contains("qti-match-tabular"))return;l.filter(d=>!this.draggables||!this.draggables.get(d)).length>0&&(this.dragDropApi.addDraggables(l),l.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",m=>{m.dataTransfer.setData("text",m.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",m=>{if(m.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),(m.dataTransfer.dropEffect==="none"||m.dataTransfer.dropEffect===void 0)&&this.configuration.dragCanBePlacedBack){let C=m.currentTarget,g=this.draggables.get(C),De=g.index<g.parent.children.length?g.index:g.parent.children.length-1,b=g.parent,He=g.parent.children[De];b.insertBefore(C,He),this.saveResponse(),this.checkMaxMatchAssociations()}m.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())})}))}handleDragOptionsChanged(l,c){this.dragDropApi.copyStylesDragClone=c.copyStylesDragClone,this.dragDropApi.dragOnClick=c.dragOnClick}handleDisabledChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("disabled",""):d.removeAttribute("disabled"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}handleReadonlyChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("readonly",""):d.removeAttribute("readonly"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}firstUpdated(l){super.firstUpdated(l),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(t):this.querySelectorAll(t))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new ye,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}reset(l=!0){this.draggables.forEach((c,p)=>{let d=c.parent.children,m=c.index<d.length?c.index:d.length;c.parent.insertBefore(p,d[m])}),l&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(l=>{let p=+(l.getAttribute("match-max")||1)<=(l.children.length||0);p?l.setAttribute("disabled",""):l.removeAttribute("disabled"),p?l.removeAttribute("dropzone"):l.setAttribute("dropzone","move")})}set response(l){this.classList.contains("qti-match-tabular")||(this.reset(!1),l!==null&&Array.isArray(l)&&l.forEach(c=>{let[p,...d]=c.split(" ").reverse();if(p){let m=this.droppables.find(C=>C.getAttribute("identifier")===p);d.forEach(C=>{let g=this.querySelector(`[identifier=${C}]`);m?g?(m.appendChild(g),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${C}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let c=(e?Array.from(this.shadowRoot.querySelectorAll(t)):Array.from(this.querySelectorAll(t))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=c}saveResponse(){let l=this.droppables.map(c=>{var d;let p="";return((d=c.children)==null?void 0:d.length)>0&&(p+=Array.from(c.children).map(m=>m.getAttribute("identifier")).join(" ")+" "),p+=c.getAttribute("identifier"),p});this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:l}}))}}return s([gt(i)],r.prototype,"reInitDragAndDrop",1),s([Y({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),s([Y({attribute:!1,type:Object})],r.prototype,"configuration",2),s([h("configuration")],r.prototype,"handleDragOptionsChanged",1),s([Y({type:Boolean,reflect:!0})],r.prototype,"disabled",2),s([h("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),s([Y({type:Boolean,reflect:!0})],r.prototype,"readonly",2),s([h("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),s([Y({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),s([Y({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as qi}from"lit/decorators.js";var te=class extends L(xi,"qti-simple-associable-choice",!0,".dl"){render(){return Ut` <slot name="prompt"></slot>
|
|
161
|
+
</div>`}`}};customElements.define("qti-portable-custom-interaction",ut);import{LitElement as Ci,css as _i,html as Yt}from"lit";var xe=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 qi}from"lit/decorators.js";var Ut=(a,i,e)=>{class t extends a{constructor(){super(...arguments);this.disabled=!1}firstUpdated(n){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(n);let l=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),l.forEach(c=>{c.setAttribute("dropzone","move"),c.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(c)});for(let c of l)this.observer=new MutationObserver(p=>{p.forEach(d=>{if(d.type==="attributes")switch(d.attributeName){case"disabled":{c.hasAttribute("disabled")?this.removeHandler(c):this.attachHandler(c);break}}})}),this.observer.observe(c,{attributes:!0})}attachHandler(n){n.addEventListener("dragover",this.dragoverHandler),n.addEventListener("dragenter",this.dragenterHandler),n.addEventListener("drop",this.dropHandler)}removeHandler(n){n.removeEventListener("dragover",this.dragoverHandler),n.removeEventListener("dragenter",this.dragenterHandler),n.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var n;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(n=this.observer)==null||n.disconnect())}dragenterHandler(n){n.preventDefault()}dragoverHandler(n){return n.preventDefault(),n.currentTarget.setAttribute("active",""),n.dataTransfer.dropEffect="move",!1}dropHandler(n){n.preventDefault();let l=n.currentTarget,c=this.querySelector(`[identifier=${n.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${n.dataTransfer.getData("text")}`);return l?p.parentElement.getAttribute("identifier")!==l.getAttribute("identifier")&&l.appendChild(p):console.error(`cannot find droppable, target: ${n.target?JSON.stringify(n.target):"null"}`),l.removeAttribute("active"),!1}dragleaveHandler(n){return n.preventDefault(),n.currentTarget.removeAttribute("active"),n.dataTransfer.dropEffect="none",!1}}return s([qi({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var Xt=(a,i,e)=>{class t extends a{}return t};import{property as Y}from"lit/decorators.js";var L=(a,i,e,t)=>{class r extends Xt(Ut(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(l,c){if(this.classList.contains("qti-match-tabular"))return;l.filter(d=>!this.draggables||!this.draggables.get(d)).length>0&&(this.dragDropApi.addDraggables(l),l.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",m=>{m.dataTransfer.setData("text",m.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",m=>{if(m.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),(m.dataTransfer.dropEffect==="none"||m.dataTransfer.dropEffect===void 0)&&this.configuration.dragCanBePlacedBack){let _=m.currentTarget,g=this.draggables.get(_),He=g.index<g.parent.children.length?g.index:g.parent.children.length-1,b=g.parent,De=g.parent.children[He];b.insertBefore(_,De),this.saveResponse(),this.checkMaxMatchAssociations()}m.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())})}))}handleDragOptionsChanged(l,c){this.dragDropApi.copyStylesDragClone=c.copyStylesDragClone,this.dragDropApi.dragOnClick=c.dragOnClick}handleDisabledChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("disabled",""):d.removeAttribute("disabled"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}handleReadonlyChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("readonly",""):d.removeAttribute("readonly"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}firstUpdated(l){super.firstUpdated(l),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(t):this.querySelectorAll(t))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new xe,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}reset(l=!0){this.draggables.forEach((c,p)=>{let d=c.parent.children,m=c.index<d.length?c.index:d.length;c.parent.insertBefore(p,d[m])}),l&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(l=>{let p=+(l.getAttribute("match-max")||1)<=(l.children.length||0);p?l.setAttribute("disabled",""):l.removeAttribute("disabled"),p?l.removeAttribute("dropzone"):l.setAttribute("dropzone","move")})}set response(l){this.classList.contains("qti-match-tabular")||(this.reset(!1),l!==null&&Array.isArray(l)&&l.forEach(c=>{let[p,...d]=c.split(" ").reverse();if(p){let m=this.droppables.find(_=>_.getAttribute("identifier")===p);d.forEach(_=>{let g=this.querySelector(`[identifier=${_}]`);m?g?(m.appendChild(g),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${_}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let c=(e?Array.from(this.shadowRoot.querySelectorAll(t)):Array.from(this.querySelectorAll(t))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=c}saveResponse(){let l=this.droppables.map(c=>{var d;let p="";return((d=c.children)==null?void 0:d.length)>0&&(p+=Array.from(c.children).map(m=>m.getAttribute("identifier")).join(" ")+" "),p+=c.getAttribute("identifier"),p});this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:l}}))}}return s([yt(i)],r.prototype,"reInitDragAndDrop",1),s([Y({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),s([Y({attribute:!1,type:Object})],r.prototype,"configuration",2),s([h("configuration")],r.prototype,"handleDragOptionsChanged",1),s([Y({type:Boolean,reflect:!0})],r.prototype,"disabled",2),s([h("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),s([Y({type:Boolean,reflect:!0})],r.prototype,"readonly",2),s([h("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),s([Y({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),s([Y({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as ki}from"lit/decorators.js";var te=class extends L(Ci,"qti-simple-associable-choice",!0,".dl"){render(){return Yt` <slot name="prompt"></slot>
|
|
159
162
|
<slot name="qti-simple-associable-choice"></slot>
|
|
160
|
-
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>
|
|
163
|
+
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>Yt`<div part="associables-container">
|
|
161
164
|
<div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
|
|
162
165
|
<div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
|
|
163
|
-
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};te.styles=
|
|
166
|
+
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};te.styles=_i`
|
|
164
167
|
:host {
|
|
165
168
|
display: block; /* necessary to calculate scaling position */
|
|
166
169
|
}
|
|
@@ -169,8 +172,8 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
169
172
|
flex-wrap: wrap;
|
|
170
173
|
gap: 0.5rem;
|
|
171
174
|
}
|
|
172
|
-
`,s([
|
|
173
|
-
<slot part="drops"></slot>`}};
|
|
175
|
+
`,s([ki()],te.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",te);import{css as Ai,html as Ti,LitElement as wi}from"lit";var Ee=class extends L(wi,"qti-gap-text",!1,"qti-gap"){render(){return Ti` <slot part="drags" name="qti-gap-text"></slot>
|
|
176
|
+
<slot part="drops"></slot>`}};Ee.styles=[Ai`
|
|
174
177
|
:host {
|
|
175
178
|
display: flex;
|
|
176
179
|
align-items: flex-start;
|
|
@@ -193,14 +196,14 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
193
196
|
align-items: flex-start;
|
|
194
197
|
flex: 1;
|
|
195
198
|
}
|
|
196
|
-
`];customElements.define("qti-gap-match-interaction",
|
|
199
|
+
`];customElements.define("qti-gap-match-interaction",Ee);import{css as Ri,svg as Bt,html as Li}from"lit";function B(a,i,e,t){switch(a){case"circle":{let[r,o,n]=i,l=r/e.width*100,c=o/e.height*100,p=n/e.width*100;t.style.left=l-p+"%",t.style.top=c-p+"%",t.style.width=t.style.height=4*p+"px",t.style.borderRadius="9999px"}break;case"rect":{let[r,o,n,l]=i,c=r/e.width*100,p=o/e.height*100,d=n/e.width*100,m=l/e.height*100;t.style.left=c+"%",t.style.top=p+"%",t.style.width=d-c+"%",t.style.height=m-p+"%"}break;case"poly":{let r=i.reduce((b,De,gt,Zt)=>{if(gt%2===1){let Qt=b.pop();b[b.length]={x:Qt,y:Zt[gt]}}else b.push(De);return b},[]),o=Math.min(...r.map(b=>b.x)),n=Math.max(...r.map(b=>b.x)),l=Math.min(...r.map(b=>b.y)),c=Math.max(...r.map(b=>b.y)),p=o/e.width*100,d=l/e.height*100,m=n/e.width*100,_=c/e.height*100;t.style.left=o/e.width*100+"%",t.style.top=l/e.height*100+"%",t.style.width=m-p+"%",t.style.height=_-d+"%";let He=r.map(b=>({x:(b.x-o)/(n-o)*100,y:(b.y-l)/(c-l)*100})).map(b=>Math.round(b.x)+"% "+Math.round(b.y)+"%").join(",");t.style.clipPath=`polygon(${He})`}break;default:break}}import{query as Si,queryAssignedElements as Mi,state as mt}from"lit/decorators.js";import{repeat as Vi}from"lit/directives/repeat.js";import{ifDefined as zt}from"lit/directives/if-defined.js";var M=class extends f{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,o;return Li`<slot name="prompt"></slot>
|
|
197
200
|
<line-container>
|
|
198
201
|
<svg
|
|
199
|
-
width=${
|
|
200
|
-
height=${
|
|
202
|
+
width=${zt((e=this.grImage[0])==null?void 0:e.width)}
|
|
203
|
+
height=${zt((t=this.grImage[0])==null?void 0:t.height)}
|
|
201
204
|
viewbox="0 0 ${(r=this.grImage[0])==null?void 0:r.width} ${(o=this.grImage[0])==null?void 0:o.height}"
|
|
202
205
|
>
|
|
203
|
-
${
|
|
206
|
+
${Vi(this._lines,n=>n,(n,l)=>Bt`
|
|
204
207
|
<line
|
|
205
208
|
part="line"
|
|
206
209
|
x1=${parseInt(this.querySelector("[identifier="+n.split(" ")[0]+"]").style.left)}
|
|
@@ -212,7 +215,7 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
212
215
|
@click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,d)=>d!==l),this.saveResponse(this._lines)}}
|
|
213
216
|
/>
|
|
214
217
|
`)}
|
|
215
|
-
${this.startPoint&&
|
|
218
|
+
${this.startPoint&&Bt`<line
|
|
216
219
|
part="point"
|
|
217
220
|
x1=${this.startCoord.x}
|
|
218
221
|
y1=${this.startCoord.y}
|
|
@@ -223,7 +226,7 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
223
226
|
/>`}
|
|
224
227
|
</svg>
|
|
225
228
|
<slot></slot>
|
|
226
|
-
</line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),n=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(n,l,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=document.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};M.styles=[
|
|
229
|
+
</line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),n=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(n,l,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=document.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};M.styles=[Ri`
|
|
227
230
|
slot:not([name='prompt']) {
|
|
228
231
|
// position: relative; /* qti-hotspot-choice relative to the slot */
|
|
229
232
|
display: block;
|
|
@@ -246,8 +249,8 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
246
249
|
top: 0px;
|
|
247
250
|
left: 0px;
|
|
248
251
|
}
|
|
249
|
-
`],s([
|
|
250
|
-
<slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),n=r.split(",").map(l=>parseInt(l));switch(o){case"circle":{let[l,c,p]=n;t.style.left=l-p+"px",t.style.top=c-p+"px",t.style.width=t.style.height=2*p+"px"}break;case"rect":{let[l,c,p,d]=n;t.style.left=l+"px",t.style.top=c+"px",t.style.width=p-l+"px",t.style.height=d-c+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};
|
|
252
|
+
`],s([mt()],M.prototype,"_lines",2),s([mt()],M.prototype,"startCoord",2),s([mt()],M.prototype,"mouseCoord",2),s([Si("svg")],M.prototype,"svgContainer",2),s([Mi({selector:"img"})],M.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",M);import{css as Ni,html as Hi,LitElement as Di}from"lit";var qe=class extends L(Di,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return Hi` <slot></slot>
|
|
253
|
+
<slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),n=r.split(",").map(l=>parseInt(l));switch(o){case"circle":{let[l,c,p]=n;t.style.left=l-p+"px",t.style.top=c-p+"px",t.style.width=t.style.height=2*p+"px"}break;case"rect":{let[l,c,p,d]=n;t.style.left=l+"px",t.style.top=c+"px",t.style.width=p-l+"px",t.style.height=d-c+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};qe.styles=Ni`
|
|
251
254
|
:host {
|
|
252
255
|
display: inline-block;
|
|
253
256
|
position: relative;
|
|
@@ -256,12 +259,12 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
256
259
|
display: flex;
|
|
257
260
|
gap: 1rem;
|
|
258
261
|
}
|
|
259
|
-
`;customElements.define("qti-graphic-gap-match-interaction",
|
|
262
|
+
`;customElements.define("qti-graphic-gap-match-interaction",qe);import{css as $i,html as Oi}from"lit";var Ce=class extends v{render(){return Oi`
|
|
260
263
|
<slot name="prompt"></slot>
|
|
261
264
|
<!-- slot for the prompt -->
|
|
262
265
|
<slot></slot>
|
|
263
266
|
<!-- slot for the image and hotspots -->
|
|
264
|
-
`}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(n=>n.getAttribute("identifier")===t),o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(n=>n.order>0).length>=o){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(n=>!!n.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(n=>(n.order>n.order&&n.order--,n)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),n=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(n,l,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)}};
|
|
267
|
+
`}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(n=>n.getAttribute("identifier")===t),o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(n=>n.order>0).length>=o){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(n=>!!n.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(n=>(n.order>n.order&&n.order--,n)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),n=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(n,l,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)}};Ce.styles=[$i`
|
|
265
268
|
slot:not([name='prompt']) {
|
|
266
269
|
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
267
270
|
display: block;
|
|
@@ -272,12 +275,12 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
272
275
|
pointer-events: none;
|
|
273
276
|
user-select: none;
|
|
274
277
|
}
|
|
275
|
-
`];customElements.define("qti-graphic-order-interaction",
|
|
278
|
+
`];customElements.define("qti-graphic-order-interaction",Ce);import{css as Pi,html as Ii}from"lit";var _e=class extends v{render(){return Ii`
|
|
276
279
|
<slot name="prompt"></slot>
|
|
277
280
|
<!-- slot for the prompt -->
|
|
278
281
|
<slot></slot>
|
|
279
282
|
<!-- slot for the image and hotspots -->
|
|
280
|
-
`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),n=r.split(",").map(l=>parseInt(l));B(o,n,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};
|
|
283
|
+
`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),n=r.split(",").map(l=>parseInt(l));B(o,n,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};_e.styles=[Pi`
|
|
281
284
|
slot:not([name='prompt']) {
|
|
282
285
|
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
283
286
|
display: block;
|
|
@@ -289,18 +292,18 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
289
292
|
user-select: none;
|
|
290
293
|
/* width:100%; */
|
|
291
294
|
}
|
|
292
|
-
`];customElements.define("qti-hotspot-interaction",
|
|
295
|
+
`];customElements.define("qti-hotspot-interaction",_e);import{html as re,LitElement as Xi}from"lit";import{html as Fi,LitElement as Ui}from"lit";var ht=class extends Ui{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return Fi`
|
|
293
296
|
<slot></slot>
|
|
294
297
|
<slot name="qti-simple-associable-choice"></slot>
|
|
295
|
-
`}};customElements.define("qti-simple-associable-choice",
|
|
298
|
+
`}};customElements.define("qti-simple-associable-choice",ht);import{property as Yi,state as Bi}from"lit/decorators.js";import{unsafeHTML as jt}from"lit/directives/unsafe-html.js";var z=class extends L(Xi,"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")?re`
|
|
296
299
|
<slot name="prompt"></slot>
|
|
297
300
|
<table>
|
|
298
301
|
<tr>
|
|
299
302
|
<td></td>
|
|
300
|
-
${this.cols.map((e,t)=>re`<th part="r-header">${
|
|
303
|
+
${this.cols.map((e,t)=>re`<th part="r-header">${jt(e.innerHTML)}</th>`)}
|
|
301
304
|
</tr>
|
|
302
305
|
${this.rows.map((e,t)=>re`<tr>
|
|
303
|
-
<td part="c-header">${
|
|
306
|
+
<td part="c-header">${jt(e.innerHTML)}</td>
|
|
304
307
|
${this.cols.map((r,o)=>{let n=`${e.getAttribute("identifier")} ${r.getAttribute("identifier")}`;return re`<td>
|
|
305
308
|
<input
|
|
306
309
|
type="checkbox"
|
|
@@ -311,14 +314,14 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
311
314
|
</td>`})}
|
|
312
315
|
</tr>`)}
|
|
313
316
|
</table>
|
|
314
|
-
`:re`<slot name="prompt"></slot> <slot></slot>`}};z.styles=[],s([
|
|
315
|
-
<slot></slot>`}connectedCallback(){super.connectedCallback()}};
|
|
317
|
+
`:re`<slot name="prompt"></slot> <slot></slot>`}};z.styles=[],s([Bi()],z.prototype,"response",2),s([Yi({type:String,attribute:"response-identifier"})],z.prototype,"responseIdentifier",2);customElements.define("qti-match-interaction",z);import{css as zi,html as ji}from"lit";var ke=class extends f{constructor(){super()}reset(){}validate(){return!0}set response(e){}static get properties(){return W(A({},f.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return ji` <slot name="prompt"></slot>
|
|
318
|
+
<slot></slot>`}connectedCallback(){super.connectedCallback()}};ke.styles=[zi``];customElements.define("qti-media-interaction",ke);import{css as Ki,html as Kt,LitElement as Wi}from"lit";import{property as Gi}from"lit/decorators.js";var j=class extends L(Wi,"qti-simple-choice",!0,"drop-list"){render(){return Kt` <slot name="prompt"> </slot>
|
|
316
319
|
<div part="container">
|
|
317
320
|
<slot part="drags"> </slot>
|
|
318
321
|
<div part="drops">
|
|
319
|
-
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>
|
|
322
|
+
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>Kt`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
|
|
320
323
|
</div>
|
|
321
|
-
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};j.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],j.styles=[
|
|
324
|
+
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};j.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],j.styles=[Ki`
|
|
322
325
|
[part='drags'] {
|
|
323
326
|
display: flex;
|
|
324
327
|
align-items: flex-start;
|
|
@@ -366,7 +369,7 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
366
369
|
:host(.qti-choices-right) [part='container'] {
|
|
367
370
|
flex-direction: row-reverse;
|
|
368
371
|
}
|
|
369
|
-
`],s([
|
|
372
|
+
`],s([Gi({type:String})],j.prototype,"orientation",2);customElements.define("qti-order-interaction",j);import{LitElement as Ji,css as Zi,html as Qi}from"lit";var Ae=class extends Ji{render(){return Qi`<slot></slot>`}};Ae.styles=[Zi`
|
|
370
373
|
:host {
|
|
371
374
|
display: block;
|
|
372
375
|
}
|
|
@@ -377,22 +380,22 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
377
380
|
left: 50%;
|
|
378
381
|
transform: translateX(-50%);
|
|
379
382
|
}
|
|
380
|
-
`];customElements.define("qti-position-object-interaction",
|
|
383
|
+
`];customElements.define("qti-position-object-interaction",Ae);import{LitElement as es,css as ts,html as rs}from"lit";var Te=class extends es{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return rs`<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}connectedCallback(){super.connectedCallback(),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.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)}};Te.styles=[ts`
|
|
381
384
|
:host {
|
|
382
385
|
display: inline-block;
|
|
383
386
|
position: relative;
|
|
384
387
|
}
|
|
385
|
-
`];customElements.define("qti-position-object-stage",
|
|
388
|
+
`];customElements.define("qti-position-object-stage",Te);import{css as is,html as Wt}from"lit";import{property as Gt,state as ss}from"lit/decorators.js";import{repeat as os}from"lit/directives/repeat.js";import{styleMap as ns}from"lit/directives/style-map.js";var N=class extends f{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return Wt` <slot name="prompt"></slot>
|
|
386
389
|
<point-container>
|
|
387
|
-
${
|
|
390
|
+
${os(this._points,e=>e,(e,t)=>Wt`
|
|
388
391
|
<button
|
|
389
392
|
part="point"
|
|
390
|
-
style=${
|
|
393
|
+
style=${ns({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
|
|
391
394
|
@click=${r=>{r.stopPropagation(),this._points=this._points.filter((o,n)=>n!==t),this.saveResponse(this._points)}}
|
|
392
395
|
></button>
|
|
393
396
|
`)}
|
|
394
397
|
<slot></slot>
|
|
395
|
-
</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,o=t.offsetY;this._points=[...this._points,r+" "+o],this.saveResponse(this._points)})}disconnectedCallback(){super.disconnectedCallback()}};
|
|
398
|
+
</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,o=t.offsetY;this._points=[...this._points,r+" "+o],this.saveResponse(this._points)})}disconnectedCallback(){super.disconnectedCallback()}};N.styles=[is`
|
|
396
399
|
host() {
|
|
397
400
|
display: block;
|
|
398
401
|
}
|
|
@@ -400,29 +403,29 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
400
403
|
display: block;
|
|
401
404
|
position: relative;
|
|
402
405
|
}
|
|
403
|
-
`],s([
|
|
406
|
+
`],s([Gt({type:Number,attribute:"max-choices"})],N.prototype,"maxChoices",2),s([Gt({type:Number,attribute:"min-choices"})],N.prototype,"minChoices",2),s([ss()],N.prototype,"_points",2);customElements.define("qti-select-point-interaction",N);import{css as as,html as we,nothing as ft}from"lit";import{property as K,query as Jt}from"lit/decorators.js";var x=class extends f{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,t)=>{};this._handleReadonlyChange=(e,t)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let t=parseInt(e);if(Number.isNaN(t)){console.error("QtiSliderInteraction: response is not a number");return}this.value=t}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),we`<slot name="prompt"></slot>
|
|
404
407
|
<div id="slider" part="slider">
|
|
405
|
-
${this.csLive.getPropertyValue("--show-bounds")=="true"?
|
|
408
|
+
${this.csLive.getPropertyValue("--show-bounds")=="true"?we`<div id="bounds" part="bounds">
|
|
406
409
|
<div>${this._min}</div>
|
|
407
410
|
<div>${this._max}</div>
|
|
408
|
-
</div>`:
|
|
409
|
-
${this.csLive.getPropertyValue("--show-ticks")=="true"?
|
|
411
|
+
</div>`:ft}
|
|
412
|
+
${this.csLive.getPropertyValue("--show-ticks")=="true"?we`<div id="ticks" part="ticks"></div>`:ft}
|
|
410
413
|
<div id="rail" part="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove}>
|
|
411
414
|
<div id="knob" part="knob">
|
|
412
|
-
${this.csLive.getPropertyValue("--show-value")=="true"?
|
|
415
|
+
${this.csLive.getPropertyValue("--show-value")=="true"?we`<div id="value" part="value">${this.value}</div>`:ft}
|
|
413
416
|
</div>
|
|
414
417
|
</div>
|
|
415
|
-
</div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let t=l=>{let{x:c}=this.getPositionFromEvent(l),p=c-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),l.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:o}=this.getPositionFromEvent(e),n=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(n),e.stopPropagation()}_onMouseDown(e){let t=n=>{let l=n.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(l),n.preventDefault(),n.stopPropagation()},r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r);let o=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),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,o=r.touches[0]||r.changedTouches[0];t={x:o.pageX,y:o.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}};x.styles=[
|
|
418
|
+
</div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let t=l=>{let{x:c}=this.getPositionFromEvent(l),p=c-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),l.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:o}=this.getPositionFromEvent(e),n=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(n),e.stopPropagation()}_onMouseDown(e){let t=n=>{let l=n.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(l),n.preventDefault(),n.stopPropagation()},r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r);let o=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),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,o=r.touches[0]||r.changedTouches[0];t={x:o.pageX,y:o.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}};x.styles=[as``],s([Jt("#knob")],x.prototype,"_knob",2),s([Jt("#rail")],x.prototype,"_rail",2),s([K({type:Number})],x.prototype,"value",2),s([K({type:Boolean,attribute:"step-label"})],x.prototype,"stepLabel",2),s([K({type:Boolean})],x.prototype,"reverse",2),s([K({type:Number,attribute:"lower-bound"})],x.prototype,"min",1),s([K({type:Number,attribute:"upper-bound"})],x.prototype,"max",1),s([K({type:Number,attribute:"step"})],x.prototype,"step",1),s([h("disabled",{waitUntilFirstUpdate:!0})],x.prototype,"_handleDisabledChange",2),s([h("readonly",{waitUntilFirstUpdate:!0})],x.prototype,"_handleReadonlyChange",2);customElements.define("qti-slider-interaction",x);import{LitElement as ls,html as cs}from"lit";import{property as ps}from"lit/decorators.js";var Re=class extends ls{render(){return cs`<button @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.closest("qti-assessment-item").processResponse()}};s([ps({type:String})],Re.prototype,"title",2);customElements.define("qti-end-attempt-interaction",Re);import{LitElement as ds,css as us,html as ms}from"lit";var Le=class extends ds{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return ms` <slot name="qti-gap-img"></slot> `}};Le.styles=us`
|
|
416
419
|
:host {
|
|
417
420
|
position: absolute;
|
|
418
421
|
}
|
|
419
|
-
`;customElements.define("qti-associable-hotspot",
|
|
422
|
+
`;customElements.define("qti-associable-hotspot",Le);import{LitElement as hs}from"lit";import{property as fs}from"lit/decorators.js";var Se=class extends hs{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};s([fs({type:Number,reflect:!0})],Se.prototype,"tabindex",2);customElements.define("qti-gap-img",Se);import{html as bs,LitElement as gs}from"lit";import{property as vs}from"lit/decorators.js";var Me=class extends gs{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return bs`<slot></slot>`}};s([vs({type:Number,reflect:!0})],Me.prototype,"tabindex",2);customElements.define("qti-gap-text",Me);import{html as ys,LitElement as xs}from"lit";import{property as Es}from"lit/decorators.js";var Ve=class extends xs{constructor(){super(...arguments);this.tabindex=0}render(){return ys` <slot name="qti-gap-text"></slot>`}};s([Es({type:Number,reflect:!0})],Ve.prototype,"tabindex",2);customElements.define("qti-gap",Ve);import{css as qs}from"lit";import{property as Cs}from"lit/decorators.js";var ie=class extends y{};ie.styles=qs`
|
|
420
423
|
:host {
|
|
421
424
|
position: absolute;
|
|
422
425
|
}
|
|
423
|
-
`,s([
|
|
424
|
-
<slot></slot> `}};
|
|
425
|
-
<slot></slot> `}};se.styles=
|
|
426
|
+
`,s([Cs({attribute:"aria-ordervalue",type:Number,reflect:!0})],ie.prototype,"order",2);customElements.define("qti-hotspot-choice",ie);import{customElement as _s}from"lit/decorators.js";import{html as ks}from"lit";var Ne=class extends y{render(){return ks`<div part="ch"><div part="cha"></div></div>
|
|
427
|
+
<slot></slot> `}};Ne=s([_s("qti-hottext")],Ne);import{LitElement as As}from"lit";var bt=class extends As{};customElements.define("qti-inline-choice",bt);import{customElement as Ts}from"lit/decorators.js";import{css as ws,html as Rs}from"lit";var se=class extends y{render(){return Rs`<div part="ch"><div part="cha"></div></div>
|
|
428
|
+
<slot part="slot"></slot> `}};se.styles=ws`
|
|
426
429
|
:host {
|
|
427
430
|
display: flex;
|
|
428
431
|
}
|
|
@@ -430,4 +433,4 @@ import{a as gt,b as h}from"../chunk-QROD4MVT.js";import{a as bt}from"../chunk-5G
|
|
|
430
433
|
width: 100%;
|
|
431
434
|
display: block;
|
|
432
435
|
}
|
|
433
|
-
`,se=s([
|
|
436
|
+
`,se=s([Ts("qti-simple-choice")],se);export{Rt as Events,f as Interaction,H as OutcomeVariable,ee as QtPrintedVariable,Ke as QtiAnd,T as QtiAssessmentItem,Le as QtiAssociableHotspot,te as QtiAssociateInteraction,fe as QtiBaseValue,y as QtiChoice,wt as QtiChoiceElementSelected,F as QtiChoiceInteraction,ne as QtiCompanionMaterialsInfo,q as QtiConditionExpression,We as QtiContains,Ge as QtiCorrect,Re as QtiEndAttemptInteraction,be as QtiEqual,ge as QtiEqualRounded,u as QtiExpression,R as QtiExtendedTextInteraction,ue as QtiFeedbackBlock,pe as QtiFeedbackInline,Ve as QtiGap,Se as QtiGapImg,Ee as QtiGapMatchInteraction,Me as QtiGapText,M as QtiGraphicAssociateInteraction,qe as QtiGraphicGapMatchInteraction,Ce as QtiGraphicOrderInteraction,Je as QtiGt,Ze as QtiGte,ie as QtiHotspotChoice,_e as QtiHotspotInteraction,Ne as QtiHottext,Xe as QtiHottextInteraction,bt as QtiInlineChoice,I as QtiInlineChoiceInteraction,Et as QtiInteractionChanged,Tt as QtiInteractionResponse,Qe as QtiIsNull,At as QtiLooseChoice,et as QtiLt,tt as QtiLte,ve as QtiMapResponse,X as QtiMapping,it as QtiMatch,z as QtiMatchInteraction,ke as QtiMediaInteraction,st as QtiMember,de as QtiModalFeedback,ot as QtiMultiple,nt as QtiNot,at as QtiOr,j as QtiOrderInteraction,lt as QtiOrdered,xt as QtiOutcomeChanged,P as QtiOutcomeDeclaration,ut as QtiPortableCustomInteraction,Te as QtiPositionObjectStage,ct as QtiProduct,Oe as QtiPrompt,_t as QtiRegisterChoice,kt as QtiRegisterHotspot,Ct as QtiRegisterInteraction,qt as QtiRegisterVariable,Ye as QtiResponseCondition,O as QtiResponseDeclaration,J as QtiResponseElse,ze as QtiResponseElseIf,Z as QtiResponseIf,U as QtiResponseProcessing,S as QtiRule,Ae as QtiSPositionObjectInteraction,N as QtiSelectPointInteraction,Be as QtiSetOutcomeValue,ht as QtiSimpleAssociableChoice,se as QtiSimpleChoice,x as QtiSliderInteraction,ye as QtiStringMatch,$e as QtiStylesheet,dt as QtiSum,k as QtiTextEntryInteraction,pt as QtiVariable,D as ResponseVariable,le as qtiContentBody,w as qtiRubricBlock};
|