@citolab/qti-components 6.0.22 → 6.0.24
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-BVYXUE3V.js +1 -0
- package/dist/chunk-C4C24R3I.cjs +1 -0
- package/dist/chunk-NT6UB5QT.cjs +17 -0
- package/dist/chunk-RGNNQ7CN.js +17 -0
- package/dist/{chunk-YDFMBQT4.js → chunk-WFE4NR22.js} +28 -6
- package/dist/{chunk-GEVRCVN2.cjs → chunk-XHNCXKJ6.cjs} +28 -6
- package/dist/custom-elements.json +6817 -0
- package/dist/decorators/index.cjs +1 -1
- package/dist/decorators/index.js +1 -1
- package/dist/index.cjs +84 -62
- package/dist/index.css +2215 -0
- package/dist/index.d.cts +30 -50
- package/dist/index.d.ts +30 -50
- package/dist/index.js +76 -54
- package/dist/qti-components/index.cjs +21 -21
- package/dist/qti-components/index.d.cts +11 -11
- package/dist/qti-components/index.d.ts +11 -11
- package/dist/qti-components/index.js +57 -57
- package/dist/qti-item/index.cjs +1 -1
- package/dist/qti-item/index.d.cts +1 -2
- package/dist/qti-item/index.d.ts +1 -2
- package/dist/qti-item/index.js +1 -1
- package/dist/qti-item-395a9535.d.ts +19 -0
- package/dist/qti-item-react/index.cjs +1 -1
- package/dist/qti-item-react/index.d.cts +7 -15
- package/dist/qti-item-react/index.d.ts +7 -15
- package/dist/qti-item-react/index.js +1 -1
- package/dist/{qti-simple-choice-e28cfb34.d.ts → qti-simple-choice-6d581309.d.ts} +109 -5
- package/dist/qti-transform/index.cjs +1 -17
- package/dist/qti-transform/index.js +1 -17
- package/package.json +3 -4
- package/dist/chunk-3O4URV5U.cjs +0 -1
- package/dist/chunk-6RJ7J4AE.cjs +0 -1
- package/dist/chunk-M7QOVOG6.js +0 -1
- package/dist/chunk-WFLR5TH7.js +0 -1
- package/dist/qti-assessment-item-c1eb7de3.d.ts +0 -121
- package/dist/qti-item-e2edd87f.d.ts +0 -30
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import{a as ft
|
|
1
|
+
import{a as ft,b as f}from"../chunk-BVYXUE3V.js";import{a as ht}from"../chunk-5GG2XAUT.js";import{a as C,b as N,c as s}from"../chunk-NMCIOGD2.js";var bt={};var gt={};var vt={};var yt={};var xt={};var Et={};var qt={};var Ct={};var _t={};var kt={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;this.candidateResponse=null;this.correctResponse=null}};var O=class{constructor(){this.value=null}};import{customElement as Wt,property as te}from"lit/decorators.js";import{html as Gt,LitElement as Jt}from"lit";var k=class extends Jt{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 Gt`<slot></slot>`}connectedCallback(){super.connectedCallback(),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(a=>a.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 H?t:null}getOutcome(e){let t=this.variables.find(r=>r.identifier===e);return t instanceof O?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([te({type:Boolean})],k.prototype,"disabled",2),s([te({type:Boolean})],k.prototype,"readonly",2),s([te({type:String})],k.prototype,"title",2),s([te({type:String})],k.prototype,"identifier",2),s([f("disabled",{waitUntilFirstUpdate:!0})],k.prototype,"_handleDisabledChange",2),s([f("readonly",{waitUntilFirstUpdate:!0})],k.prototype,"_handleReadonlyChange",2),k=s([Wt("qti-assessment-item")],k);import{LitElement as Zt}from"lit";var De=class extends Zt{constructor(){super()}connectedCallback(){super.connectedCallback();let e=this.closest("qti-assessment-item"),t=this.getAttribute("href"),r=document.createElement("link");r.rel="stylesheet",r.type="text/css",r.media="screen",r.href=t,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",De);import{customElement as er}from"lit/decorators.js";import{html as tr,LitElement as rr}from"lit";import{css as Qt}from"lit";var At=Qt`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
}
|
|
5
|
-
`;var $=class extends
|
|
6
|
-
<slot></slot>`}};$.styles=
|
|
5
|
+
`;var $=class extends rr{render(){return tr` <slot name="qti-rubric-block"></slot>
|
|
6
|
+
<slot></slot>`}};$.styles=At,$=s([er("qti-item-body")],$);import{html as ir,LitElement as sr}from"lit";var Ne=class extends sr{render(){return ir` <slot></slot> `}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Ne);import{html as or}from"lit/static-html.js";import{property as K}from"lit/decorators.js";import{LitElement as nr}from"lit";var ar={SPACE:32},y=class extends nr{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 ar.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"),or` <slot></slot> `}};s([K({type:String})],y.prototype,"identifier",2),s([K({type:Number,reflect:!0})],y.prototype,"tabindex",2),s([K({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:n=>n}})],y.prototype,"disabled",2),s([K({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:n=>n}})],y.prototype,"readonly",2),s([K({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:n=>n}})],y.prototype,"checked",2),s([f("disabled",{waitUntilFirstUpdate:!0})],y.prototype,"handleDisabledChange",1);import{html as lr,LitElement as cr}from"lit";var V=class extends cr{render(){return lr``}defaultValues(i){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0&&(i.cardinality==="multiple"||i.cardinality==="ordered"))return[];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 He}from"lit/decorators.js";var P=class extends V{connectedCallback(){super.connectedCallback();let e=new H;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([He({type:String,attribute:"base-type"})],P.prototype,"baseType",2),s([He({type:String})],P.prototype,"identifier",2),s([He({type:String})],P.prototype,"cardinality",2);customElements.define("qti-response-declaration",P);import{property as Oe}from"lit/decorators.js";var I=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")),a=parseInt(r.getAttribute("target-value"));(isNaN(o)||isNaN(a))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(o,a)}}return null}connectedCallback(){super.connectedCallback();let e=new O;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([Oe({type:String,attribute:"base-type"})],I.prototype,"baseType",2),s([Oe({type:String})],I.prototype,"identifier",2),s([Oe({type:String})],I.prototype,"cardinality",2);customElements.define("qti-outcome-declaration",I);import{LitElement as pr}from"lit";import{customElement as dr}from"lit/decorators.js";var re=class extends pr{};re=s([dr("qti-companion-materials-info")],re);import{LitElement as ur,css as mr,html as hr}from"lit";import{customElement as fr,property as ie}from"lit/decorators.js";import{ContextConsumer as br}from"@lit-labs/context";var A=class extends ur{constructor(){super(...arguments);this.logger=new br(this,ht,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 hr`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};A.styles=mr`
|
|
7
7
|
:host {
|
|
8
8
|
display: block;
|
|
9
9
|
}
|
|
10
|
-
`,s([
|
|
10
|
+
`,s([ie({type:String})],A.prototype,"id",2),s([ie({type:String})],A.prototype,"use",2),s([ie({type:String})],A.prototype,"view",2),s([ie({type:String,attribute:"class"})],A.prototype,"classNames",2),s([f("classNames",{waitUntilFirstUpdate:!0})],A.prototype,"handleclassNamesChange",1),A=s([fr("qti-rubric-block")],A);import{LitElement as gr,html as vr}from"lit";import{customElement as yr}from"lit/decorators.js";var se=class extends gr{render(){return vr`<slot></slot>`}};se=s([yr("qti-content-body")],se);import{css as Er,html as qr}from"lit";import{LitElement as xr}from"lit";import{property as oe}from"lit/decorators.js";var E=class extends xr{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([oe({type:String,attribute:"show-hide"})],E.prototype,"showHide",2),s([oe({type:String,attribute:"outcome-identifier"})],E.prototype,"outcomeIdentifier",2),s([oe({type:String})],E.prototype,"identifier",2),s([oe({type:String,attribute:!1})],E.prototype,"showStatus",2);var ne=class extends E{constructor(){super(...arguments);this.render=()=>qr` <slot class="${this.showStatus}"></slot> `}};ne.styles=Er`
|
|
11
11
|
.on {
|
|
12
12
|
display: inline-block;
|
|
13
13
|
}
|
|
14
14
|
.off {
|
|
15
15
|
display: none;
|
|
16
16
|
}
|
|
17
|
-
`;customElements.define("qti-feedback-inline",
|
|
17
|
+
`;customElements.define("qti-feedback-inline",ne);import{html as Cr}from"lit";var $e=class extends E{render(){return Cr`
|
|
18
18
|
<style>
|
|
19
19
|
.on {
|
|
20
20
|
display: inline-block;
|
|
@@ -26,7 +26,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
26
26
|
<div class="feedback ${this.showStatus}">
|
|
27
27
|
<slot></slot>
|
|
28
28
|
</div>
|
|
29
|
-
`}};customElements.define("qti-modal-feedback",$e);import{html as
|
|
29
|
+
`}};customElements.define("qti-modal-feedback",$e);import{html as _r}from"lit";var Pe=class extends E{render(){return _r`
|
|
30
30
|
<style>
|
|
31
31
|
.on {
|
|
32
32
|
display: inline-block;
|
|
@@ -38,11 +38,11 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
38
38
|
<div class="feedback ${this.showStatus}">
|
|
39
39
|
<slot></slot>
|
|
40
40
|
</div>
|
|
41
|
-
`}firstUpdated(i){this.checkShowFeedback(this.outcomeIdentifier)}};customElements.define("qti-feedback-block",Pe);import{css as
|
|
41
|
+
`}firstUpdated(i){this.checkShowFeedback(this.outcomeIdentifier)}};customElements.define("qti-feedback-block",Pe);import{css as Ar,html as Tr}from"lit";import{ifDefined as Tt}from"lit/directives/if-defined.js";import{property as Ie}from"lit/decorators.js";import{LitElement as kr}from"lit";var m=class extends kr{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([Ie({attribute:"response-identifier"})],m.prototype,"responseIdentifier",2),s([Ie({reflect:!0,type:Boolean})],m.prototype,"disabled",2),s([Ie({reflect:!0,type:Boolean})],m.prototype,"readonly",2);import{customElement as wr,property as ae,state as wt}from"lit/decorators.js";import{createRef as Rr}from"lit/directives/ref.js";var _=class extends m{constructor(){super(...arguments);this._value="";this._size=5;this.inputRef=Rr()}handleclassNamesChange(e,t){t.split(" ").forEach(o=>{if(o.startsWith("qti-input-width")){let a=o.replace("qti-input-width-","");this._size=parseInt(a)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[Ar`
|
|
42
42
|
:host {
|
|
43
43
|
display: inline-flex;
|
|
44
44
|
}
|
|
45
|
-
`]}render(){return
|
|
45
|
+
`]}render(){return Tr` <input
|
|
46
46
|
part="input"
|
|
47
47
|
spellcheck="false"
|
|
48
48
|
autocomplete="off"
|
|
@@ -50,13 +50,13 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
50
50
|
@keyup="${this.textChanged}"
|
|
51
51
|
@change="${this.textChanged}"
|
|
52
52
|
type="text"
|
|
53
|
-
placeholder="${
|
|
53
|
+
placeholder="${Tt(this.placeholderText?this.placeholderText:void 0)}"
|
|
54
54
|
.value="${this._value}"
|
|
55
55
|
size="${this._size}"
|
|
56
|
-
pattern="${
|
|
56
|
+
pattern="${Tt(this.patternMask?this.patternMask:void 0)}"
|
|
57
57
|
?disabled="${this.disabled}"
|
|
58
58
|
?readonly="${this.readonly}"
|
|
59
|
-
/>`}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([
|
|
59
|
+
/>`}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([ae({type:Number,attribute:"expected-length"})],_.prototype,"expectedLength",2),s([ae({type:String,attribute:"pattern-mask"})],_.prototype,"patternMask",2),s([ae({type:String,attribute:"placeholder-text"})],_.prototype,"placeholderText",2),s([wt()],_.prototype,"_value",2),s([wt()],_.prototype,"_size",2),s([ae({type:String,attribute:"class"})],_.prototype,"classNames",2),s([f("classNames")],_.prototype,"handleclassNamesChange",1),_=s([wr("qti-text-entry-interaction")],_);import{css as Lr,html as Sr}from"lit";import{ifDefined as Fe}from"lit/directives/if-defined.js";import{ref as Mr,createRef as Vr}from"lit/directives/ref.js";import{customElement as Dr,property as le,state as Nr}from"lit/decorators.js";var T=class extends m{constructor(){super(...arguments);this.textareaRef=Vr();this._value=""}handleclassNamesChange(e,t){this.classNames.split(" ").forEach(o=>{if(o.startsWith("qti-height-lines")){let a=o.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(a))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[Lr`
|
|
60
60
|
/* PK: display host as block, else design will be collapsed */
|
|
61
61
|
:host {
|
|
62
62
|
display: block;
|
|
@@ -66,9 +66,9 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
66
66
|
height: 100%;
|
|
67
67
|
border: 0;
|
|
68
68
|
}
|
|
69
|
-
`]}render(){return
|
|
69
|
+
`]}render(){return Sr`<textarea
|
|
70
70
|
part="textarea"
|
|
71
|
-
${
|
|
71
|
+
${Mr(this.textareaRef)}
|
|
72
72
|
spellcheck="false"
|
|
73
73
|
autocomplete="off"
|
|
74
74
|
@keydown="${e=>e.stopImmediatePropagation()}"
|
|
@@ -80,7 +80,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
80
80
|
?disabled="${this.disabled}"
|
|
81
81
|
?readonly="${this.readonly}"
|
|
82
82
|
.value=${this._value}
|
|
83
|
-
></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([
|
|
83
|
+
></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([le({type:Number,attribute:"expected-length"})],T.prototype,"expectedLength",2),s([le({type:String,attribute:"pattern-mask"})],T.prototype,"patternMask",2),s([le({type:String,attribute:"placeholder-text"})],T.prototype,"placeholderText",2),s([Nr()],T.prototype,"_value",2),s([le({type:String,attribute:"class"})],T.prototype,"classNames",2),s([f("classNames",{waitUntilFirstUpdate:!0})],T.prototype,"handleclassNamesChange",1),T=s([Dr("qti-extended-text-interaction")],T);import{html as Hr}from"lit";import{property as Rt}from"lit/decorators.js";var v=class extends m{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([Rt({type:Number,attribute:"min-choices"})],v.prototype,"minChoices",2),s([Rt({type:Number,attribute:"max-choices"})],v.prototype,"maxChoices",2),s([f("disabled",{waitUntilFirstUpdate:!0})],v.prototype,"_handleDisabledChange",2),s([f("readonly",{waitUntilFirstUpdate:!0})],v.prototype,"_handleReadonlyChange",2),s([f("maxChoices",{waitUntilFirstUpdate:!0})],v.prototype,"_handleMaxChoicesChange",2);var Xe=class extends v{constructor(){super(...arguments);this.render=()=>Hr`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",Xe);import{css as Or,html as Lt}from"lit";var ce=class extends m{constructor(){super();this.options=[];this.addEventListener(kt.ON_DROPDOWN_SELECTED,this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:"select",value:"",selected:!1},...e.map(t=>({textContent:t.innerHTML,value:t.getAttribute("identifier"),selected:!1}))]}static get properties(){return N(C({},m.properties),{options:{type:Array,value:[],attribute:!1}})}connectedCallback(){super.connectedCallback()}static get styles(){return[Or`
|
|
84
84
|
:host {
|
|
85
85
|
display: inline-block;
|
|
86
86
|
}
|
|
@@ -91,13 +91,13 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
91
91
|
?readonly="${this.readonly}"
|
|
92
92
|
>
|
|
93
93
|
${this.options.map(e=>Lt` <option value="${e.value}" ?selected="${e.selected}">${e.textContent}</option> `)}
|
|
94
|
-
</select>`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>
|
|
94
|
+
</select>`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>N(C({},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=>N(C({},r),{selected:r.value===t})),this.saveResponse(t)}};ce.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"];customElements.define("qti-inline-choice-interaction",ce);import{customElement as Pr,property as Ir}from"lit/decorators.js";import{html as Fr}from"lit";import{css as $r}from"lit";var St=$r`
|
|
95
95
|
:host {
|
|
96
96
|
display: flex;
|
|
97
97
|
flex-direction: column;
|
|
98
98
|
align-items: flex-start;
|
|
99
99
|
}
|
|
100
|
-
`;var F=class extends v{constructor(){super(...arguments);this.render=()=>
|
|
100
|
+
`;var F=class extends v{constructor(){super(...arguments);this.render=()=>Fr` <slot name="prompt"></slot><slot></slot>`}};F.styles=St,s([Ir({type:String})],F.prototype,"orientation",2),F=s([Pr("qti-choice-interaction")],F);import{customElement as Xr}from"lit/decorators.js";import{html as Yr,LitElement as Ur}from"lit";var Mt=`<qti-response-processing>
|
|
101
101
|
<qti-response-condition>
|
|
102
102
|
<qti-response-if>
|
|
103
103
|
<qti-match>
|
|
@@ -130,7 +130,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
130
130
|
</qti-set-outcome-value>
|
|
131
131
|
</qti-response-else>
|
|
132
132
|
</qti-response-condition>
|
|
133
|
-
</qti-response-processing>`,
|
|
133
|
+
</qti-response-processing>`,Dt=`<qti-response-processing>
|
|
134
134
|
<qti-response-condition>
|
|
135
135
|
<qti-response-if>
|
|
136
136
|
<qti-is-null>
|
|
@@ -146,7 +146,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
146
146
|
</qti-set-outcome-value>
|
|
147
147
|
</qti-response-else>
|
|
148
148
|
</qti-response-condition>
|
|
149
|
-
</qti-response-processing>`;var X=class extends
|
|
149
|
+
</qti-response-processing>`;var X=class extends Ur{render(){return Yr`<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(Vt));break}case"map_response_point":{this.appendChild(this.fragmentFromString(Dt));break}case"match_correct":this.appendChild(this.fragmentFromString(Mt));break}}let i=[...this.children];for(let e of i)e.process()}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};X=s([Xr("qti-response-processing")],X);import{customElement as Br}from"lit/decorators.js";import{html as zr,LitElement as jr}from"lit";var S=class extends jr{render(){return zr``}process(){throw new Error("Not implemented")}};S=s([Br("qti-rule")],S);import{html as Kr}from"lit";var Ye=class extends S{render(){return Kr`<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 Ue=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",Ue);import{html as Jr}from"lit";import{html as Wr,LitElement as Gr}from"lit";var W=class extends Gr{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return Wr` <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",W);var G=class extends W{render(){return Jr`${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",G);import{html as Zr}from"lit";var Be=class extends G{render(){return Zr`${super.render()}`}};customElements.define("qti-response-else-if",Be);import{LitElement as Qr,css as ei,html as Nt}from"lit";import{state as ti}from"lit/decorators.js";var u=class extends Qr{constructor(){super(...arguments);this._error=[];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 Nt`${this._error.map(e=>Nt`<div role="alert">${e}</div>`)}`}calculate(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};u.styles=ei`
|
|
150
150
|
[role='alert'] {
|
|
151
151
|
border: 1px solid red;
|
|
152
152
|
background: pink;
|
|
@@ -156,15 +156,15 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
156
156
|
border-radius: 5px;
|
|
157
157
|
margin-bottom: 3px;
|
|
158
158
|
}
|
|
159
|
-
`,s([ei()],u.prototype,"error",1);customElements.define("qti-expression",u);var ze=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",ze);import{html as ti}from"lit";var T=class extends u{render(){return ti``}calculate(){throw new Error("Not implemented")}};var je=class extends T{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 Ke=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",Ke);var We=class extends T{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",We);import{html as ri}from"lit";var Ge=class extends T{render(){return ri``}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",Ge);import{state as ii}from"lit/decorators.js";import{html as si}from"lit";var ce=class extends u{constructor(){super(...arguments);this.mult=0;this.render=()=>si`<pre>${this.mult}</pre>`}calculate(){let t=this.getVariables().reduce((r,o)=>{if(o.baseType=="float"||o.baseType=="integer")try{return r*parseInt(o.value.toString())}catch(a){console.warn("can not convert to number")}else console.warn(`has another baseType ${o.baseType}`);return r},1);return this.mult=t,t}};s([ii()],ce.prototype,"mult",2);customElements.define("qti-product",ce);import{html as oi}from"lit";var Je=class extends T{render(){return oi``}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",Je);import{property as ni}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 pe=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([ni({type:String})],pe.prototype,"toleranceMode",2);customElements.define("qti-equal",pe);import{property as ai}from"lit/decorators.js";var de=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),a=parseFloat(r.value);if(!isNaN(o)&&!isNaN(a))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===a.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(a*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${a}`);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([ai({type:String})],de.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",de);import{property as li}from"lit/decorators.js";var ue=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};s([li({type:String,attribute:"base-type"})],ue.prototype,"baseType",2);customElements.define("qti-base-value",ue);var Ze=class extends u{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",Ze);import{html as ci}from"lit";var Qe=class extends u{render(){return ci``}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",Qe);var et=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",et);import{html as pi}from"lit";var tt=class extends u{render(){return pi`${super.render()}`}calculate(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",tt);import{property as di}from"lit/decorators.js";var me=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 a of r){let l=t.mapEntries.find(c=>w.compareSingleValues(c.mapKey,a,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([di({type:String})],me.prototype,"identifier",2);customElements.define("qti-map-response",me);var rt=class extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(t.cardinality==="single")return Array.isArray(e.value)||Array.isArray(t.value)?(console.error("unexpected cardinality in qti match"),!1):w.compareSingleValues(e.value.toString(),t.value.toString(),t.baseType);{if(!Array.isArray(e.value)||!Array.isArray(t.value))return console.error("unexpected cardinality in qti match"),!1;if(e.value.length!==t.value.length)return!1;let r=0;for(let o of t.value){if(t.cardinality==="ordered"){let a=e[r];if(!w.compareSingleValues(o,a,t.baseType))return!1}else{let a=null;for(let l of e.value)if(w.compareSingleValues(o,l,t.baseType)){a=l;break}if(a!==null)e.value.splice(e.value.indexOf(a),1);else return!1}r++}return!0}}return console.error("unexpected number of children in match"),null}};customElements.define("qti-match",rt);import{html as ui}from"lit";var it=class extends u{render(){return ui``}calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",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);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!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",ot);import{LitElement as mi,html as hi}from"lit";import{property as fi}from"lit/decorators.js";var he=class extends mi{constructor(){super();this.value="";this.closest("qti-assessment-item").addEventListener("qti-outcome-changed",()=>{this.value=this.calculate()})}render(){return hi`${this.value}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.getAttribute("identifier");return e.getVariable(t).value}};s([fi({type:String})],he.prototype,"value",2);customElements.define("qti-printed-variable",he);var nt=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",nt);import{property as at}from"lit/decorators.js";import{LitElement as bi}from"lit";var Y=class extends bi{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([at({attribute:"default-value",type:Number})],Y.prototype,"defaultValue",2),s([at({attribute:"lower-bound",type:Number})],Y.prototype,"lowerBound",2),s([at({attribute:"upper-bound",type:Number})],Y.prototype,"upperBound",2);customElements.define("qti-mapping",Y);import{LitElement as gi,html as Ht}from"lit";var lt=class extends gi{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),h=d.map(g=>g.getAttribute("key"));h.length>0&&!h.find(g=>!Number.isInteger(+g))?c[p]=d.map(g=>a(g)):c[p]=l.textContent}return c},a=l=>{if(l){let c={};for(let p of l.children)c=C(C({},c),o(p));return c}};for(let l of t)return l.getAttribute("key")||(r=C(C({},r),a(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 Ht`<slot></slot>${this._errorMessage&&Ht`<div style="color:red">
|
|
159
|
+
`,s([ti()],u.prototype,"error",1);var ze=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",ze);import{html as ri}from"lit";var w=class extends u{render(){return ri``}calculate(){throw new Error("Not implemented")}};var je=class extends w{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 Ke=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",Ke);var We=class extends w{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",We);import{html as ii}from"lit";var Ge=class extends w{render(){return ii``}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",Ge);import{state as si}from"lit/decorators.js";import{html as oi}from"lit";var pe=class extends u{constructor(){super(...arguments);this.mult=0;this.render=()=>oi`<pre>${this.mult}</pre>`}calculate(){let t=this.getVariables().reduce((r,o)=>{if(o.baseType=="float"||o.baseType=="integer")try{return r*parseInt(o.value.toString())}catch(a){console.warn("can not convert to number")}else console.warn(`has another baseType ${o.baseType}`);return r},1);return this.mult=t,t}};s([si()],pe.prototype,"mult",2);customElements.define("qti-product",pe);import{html as ni}from"lit";var Je=class extends w{render(){return ni``}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",Je);import{property as ai}from"lit/decorators.js";var R=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),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 de=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):R.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};s([ai({type:String})],de.prototype,"toleranceMode",2);customElements.define("qti-equal",de);import{property as li}from"lit/decorators.js";var ue=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),a=parseFloat(r.value);if(!isNaN(o)&&!isNaN(a))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===a.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(a*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${a}`);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([li({type:String})],ue.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",ue);import{property as ci}from"lit/decorators.js";var me=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};s([ci({type:String,attribute:"base-type"})],me.prototype,"baseType",2);customElements.define("qti-base-value",me);var Ze=class extends u{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",Ze);import{html as pi}from"lit";var Qe=class extends u{render(){return pi``}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",Qe);var et=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",et);import{html as di}from"lit";var tt=class extends u{render(){return di`${super.render()}`}calculate(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",tt);import{property as ui}from"lit/decorators.js";var he=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 a of r){let l=t.mapEntries.find(c=>R.compareSingleValues(c.mapKey,a,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})],he.prototype,"identifier",2);customElements.define("qti-map-response",he);var rt=class extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(t.cardinality==="single")return Array.isArray(e.value)||Array.isArray(t.value)?(console.error("unexpected cardinality in qti match"),!1):R.compareSingleValues(e.value.toString(),t.value.toString(),t.baseType);{if(!Array.isArray(e.value)||!Array.isArray(t.value))return console.error("unexpected cardinality in qti match"),!1;if(e.value.length!==t.value.length)return!1;let r=0;for(let o of t.value){if(t.cardinality==="ordered"){let a=e[r];if(!R.compareSingleValues(o,a,t.baseType))return!1}else{let a=null;for(let l of e.value)if(R.compareSingleValues(o,l,t.baseType)){a=l;break}if(a!==null)e.value.splice(e.value.indexOf(a),1);else return!1}r++}return!0}}return console.error("unexpected number of children in match"),null}};customElements.define("qti-match",rt);import{html as mi}from"lit";var it=class extends u{render(){return mi``}calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",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);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!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",ot);import{LitElement as hi,html as Ht}from"lit";import{property as fi,state as bi}from"lit/decorators.js";var J=class extends hi{constructor(){super();this.value="";this.closest("qti-assessment-item").addEventListener("qti-response-processing",()=>{this.value=this.calculate()})}render(){return Ht`${Array.isArray(this.value)?this.value.map(e=>Ht`${e}`):this.value}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.identifier;return e.getVariable(t).value}};s([fi({type:String})],J.prototype,"identifier",2),s([bi()],J.prototype,"value",2);customElements.define("qti-printed-variable",J);var nt=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",nt);import{property as at}from"lit/decorators.js";import{LitElement as gi}from"lit";var Y=class extends gi{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([at({attribute:"default-value",type:Number})],Y.prototype,"defaultValue",2),s([at({attribute:"lower-bound",type:Number})],Y.prototype,"lowerBound",2),s([at({attribute:"upper-bound",type:Number})],Y.prototype,"upperBound",2);customElements.define("qti-mapping",Y);import{LitElement as vi,html as Ot}from"lit";var lt=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),h=d.map(g=>g.getAttribute("key"));h.length>0&&!h.find(g=>!Number.isInteger(+g))?c[p]=d.map(g=>a(g)):c[p]=l.textContent}return c},a=l=>{if(l){let c={};for(let p of l.children)c=C(C({},c),o(p));return c}};for(let l of t)return l.getAttribute("key")||(r=C(C({},r),a(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 Ot`<slot></slot>${this._errorMessage&&Ot`<div style="color:red">
|
|
160
160
|
<h1>Error</h1>
|
|
161
161
|
${this._errorMessage}
|
|
162
|
-
</div>`}`}};customElements.define("qti-portable-custom-interaction",lt);import{LitElement as yi,css as xi,html as Pt}from"lit";var fe=class n{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 n._instance?n._instance:(n._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._getPositionFromEvent(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._getPositionFromEvent(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,t=i.composedPath().find(r=>{if(r.nodeType===1&&r.nodeName!=="SLOT"&&r.hasAttribute("dropzone"))return r});if(t){let r=t.getRootNode(),o=this._getPoint(i);e=r.elementFromPoint(o.x,o.y)}return e}_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}_getPositionFromEvent(i){let e;if(i.type=="touchstart"||i.type=="touchmove"||i.type=="touchend"||i.type=="touchcancel"){let t=typeof i.originalEvent=="undefined"?i:i.originalEvent,r=t.touches[0]||t.changedTouches[0];e={x:r.pageX,y:r.pageY}}else(i.type=="mousedown"||i.type=="mouseup"||i.type=="mousemove"||i.type=="mouseover"||i.type=="mouseout"||i.type=="mouseenter"||i.type=="mouseleave")&&(e={x:i.clientX,y:i.clientY});return e}};import{property as vi}from"lit/decorators.js";var Ot=(n,i,e)=>{class t extends n{constructor(){super(...arguments);this.disabled=!1}firstUpdated(a){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(a);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.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(a){a.addEventListener("dragover",this.dragoverHandler),a.addEventListener("drop",this.dropHandler)}removeHandler(a){a.removeEventListener("dragover",this.dragoverHandler),a.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var a;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(a=this.observer)==null||a.disconnect())}dragoverHandler(a){return a.preventDefault(),a.currentTarget.setAttribute("active",""),a.dataTransfer.dropEffect="move",!1}dropHandler(a){a.preventDefault();let l=a.currentTarget,c=this.querySelector(`[identifier=${a.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${a.dataTransfer.getData("text")}`);return l?p.parentElement.getAttribute("identifier")!==l.getAttribute("identifier")&&l.appendChild(p):console.error(`cannot find droppable, target: ${a.target?JSON.stringify(a.target):"null"}`),l.removeAttribute("active"),!1}dragleaveHandler(a){return a.preventDefault(),a.currentTarget.removeAttribute("active"),!1}}return s([vi({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var $t=(n,i,e)=>{class t extends n{}return t};import{property as U}from"lit/decorators.js";var L=(n,i,e,t)=>{class r extends $t(Ot(n,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",h=>{h.dataTransfer.setData("text",h.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",h=>{if(h.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),h.dataTransfer.dropEffect==="none"&&this.configuration.dragCanBePlacedBack){let q=h.currentTarget,g=this.draggables.get(q),Me=g.index<g.parent.children.length?g.index:g.parent.children.length-1,b=g.parent,Ve=g.parent.children[Me];b.insertBefore(q,Ve),this.saveResponse(),this.checkMaxMatchAssociations()}h.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 fe,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,h=c.index<d.length?c.index:d.length;c.parent.insertBefore(p,d[h])}),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 h=this.droppables.find(q=>q.getAttribute("identifier")===p);d.forEach(q=>{let g=this.querySelector(`[identifier=${q}]`);h?g?(h.appendChild(g),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${q}`):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(h=>h.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([ft(i)],r.prototype,"reInitDragAndDrop",1),s([U({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),s([U({attribute:!1,type:Object})],r.prototype,"configuration",2),s([f("configuration")],r.prototype,"handleDragOptionsChanged",1),s([U({type:Boolean,reflect:!0})],r.prototype,"disabled",2),s([f("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),s([U({type:Boolean,reflect:!0})],r.prototype,"readonly",2),s([f("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),s([U({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),s([U({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as Ei}from"lit/decorators.js";var J=class extends L(yi,"qti-simple-associable-choice",!0,".dl"){render(){return Pt` <slot name="prompt"></slot>
|
|
162
|
+
</div>`}`}};customElements.define("qti-portable-custom-interaction",lt);import{LitElement as xi,css as Ei,html as It}from"lit";var fe=class n{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 n._instance?n._instance:(n._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._getPositionFromEvent(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._getPositionFromEvent(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,t=i.composedPath().find(r=>{if(r.nodeType===1&&r.nodeName!=="SLOT"&&r.hasAttribute("dropzone"))return r});if(t){let r=t.getRootNode(),o=this._getPoint(i);e=r.elementFromPoint(o.x,o.y)}return e}_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}_getPositionFromEvent(i){let e;if(i.type=="touchstart"||i.type=="touchmove"||i.type=="touchend"||i.type=="touchcancel"){let t=typeof i.originalEvent=="undefined"?i:i.originalEvent,r=t.touches[0]||t.changedTouches[0];e={x:r.pageX,y:r.pageY}}else(i.type=="mousedown"||i.type=="mouseup"||i.type=="mousemove"||i.type=="mouseover"||i.type=="mouseout"||i.type=="mouseenter"||i.type=="mouseleave")&&(e={x:i.clientX,y:i.clientY});return e}};import{property as yi}from"lit/decorators.js";var $t=(n,i,e)=>{class t extends n{constructor(){super(...arguments);this.disabled=!1}firstUpdated(a){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(a);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.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(a){a.addEventListener("dragover",this.dragoverHandler),a.addEventListener("drop",this.dropHandler)}removeHandler(a){a.removeEventListener("dragover",this.dragoverHandler),a.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var a;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(a=this.observer)==null||a.disconnect())}dragoverHandler(a){return a.preventDefault(),a.currentTarget.setAttribute("active",""),a.dataTransfer.dropEffect="move",!1}dropHandler(a){a.preventDefault();let l=a.currentTarget,c=this.querySelector(`[identifier=${a.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${a.dataTransfer.getData("text")}`);return l?p.parentElement.getAttribute("identifier")!==l.getAttribute("identifier")&&l.appendChild(p):console.error(`cannot find droppable, target: ${a.target?JSON.stringify(a.target):"null"}`),l.removeAttribute("active"),!1}dragleaveHandler(a){return a.preventDefault(),a.currentTarget.removeAttribute("active"),!1}}return s([yi({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var Pt=(n,i,e)=>{class t extends n{}return t};import{property as U}from"lit/decorators.js";var L=(n,i,e,t)=>{class r extends Pt($t(n,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",h=>{h.dataTransfer.setData("text",h.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",h=>{if(h.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),h.dataTransfer.dropEffect==="none"&&this.configuration.dragCanBePlacedBack){let q=h.currentTarget,g=this.draggables.get(q),Me=g.index<g.parent.children.length?g.index:g.parent.children.length-1,b=g.parent,Ve=g.parent.children[Me];b.insertBefore(q,Ve),this.saveResponse(),this.checkMaxMatchAssociations()}h.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 fe,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,h=c.index<d.length?c.index:d.length;c.parent.insertBefore(p,d[h])}),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 h=this.droppables.find(q=>q.getAttribute("identifier")===p);d.forEach(q=>{let g=this.querySelector(`[identifier=${q}]`);h?g?(h.appendChild(g),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${q}`):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(h=>h.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([ft(i)],r.prototype,"reInitDragAndDrop",1),s([U({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),s([U({attribute:!1,type:Object})],r.prototype,"configuration",2),s([f("configuration")],r.prototype,"handleDragOptionsChanged",1),s([U({type:Boolean,reflect:!0})],r.prototype,"disabled",2),s([f("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),s([U({type:Boolean,reflect:!0})],r.prototype,"readonly",2),s([f("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),s([U({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),s([U({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as qi}from"lit/decorators.js";var Z=class extends L(xi,"qti-simple-associable-choice",!0,".dl"){render(){return It` <slot name="prompt"></slot>
|
|
163
163
|
<slot name="qti-simple-associable-choice"></slot>
|
|
164
|
-
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>
|
|
164
|
+
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>It`<div part="associables-container">
|
|
165
165
|
<div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
|
|
166
166
|
<div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
|
|
167
|
-
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};
|
|
167
|
+
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};Z.styles=Ei`
|
|
168
168
|
:host {
|
|
169
169
|
display: block; /* necessary to calculate scaling position */
|
|
170
170
|
}
|
|
@@ -173,8 +173,8 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
173
173
|
flex-wrap: wrap;
|
|
174
174
|
gap: 0.5rem;
|
|
175
175
|
}
|
|
176
|
-
`,s([
|
|
177
|
-
<slot part="drops"></slot>`}};be.styles=[
|
|
176
|
+
`,s([qi()],Z.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",Z);import{css as Ci,html as _i,LitElement as ki}from"lit";var be=class extends L(ki,"qti-gap-text",!1,"qti-gap"){render(){return _i` <slot part="drags" name="qti-gap-text"></slot>
|
|
177
|
+
<slot part="drops"></slot>`}};be.styles=[Ci`
|
|
178
178
|
:host {
|
|
179
179
|
display: flex;
|
|
180
180
|
align-items: flex-start;
|
|
@@ -197,14 +197,14 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
197
197
|
align-items: flex-start;
|
|
198
198
|
flex: 1;
|
|
199
199
|
}
|
|
200
|
-
`];customElements.define("qti-gap-match-interaction",be);import{css as
|
|
200
|
+
`];customElements.define("qti-gap-match-interaction",be);import{css as Ai,svg as Ft,html as Ti}from"lit";function B(n,i,e,t){switch(n){case"circle":{let[r,o,a]=i,l=r/e.width*100,c=o/e.height*100,p=a/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,a,l]=i,c=r/e.width*100,p=o/e.height*100,d=a/e.width*100,h=l/e.height*100;t.style.left=c+"%",t.style.top=p+"%",t.style.width=d-c+"%",t.style.height=h-p+"%"}break;case"poly":{let r=i.reduce((b,Ve,mt,jt)=>{if(mt%2===1){let Kt=b.pop();b[b.length]={x:Kt,y:jt[mt]}}else b.push(Ve);return b},[]),o=Math.min(...r.map(b=>b.x)),a=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,h=a/e.width*100,q=c/e.height*100;t.style.left=o/e.width*100+"%",t.style.top=l/e.height*100+"%",t.style.width=h-p+"%",t.style.height=q-d+"%";let Me=r.map(b=>({x:(b.x-o)/(a-o)*100,y:(b.y-l)/(c-l)*100})).map(b=>Math.round(b.x)+"% "+Math.round(b.y)+"%").join(",");t.style.clipPath=`polygon(${Me})`}break;default:break}}import{query as wi,queryAssignedElements as Ri,state as ct}from"lit/decorators.js";import{repeat as Li}from"lit/directives/repeat.js";import{ifDefined as Xt}from"lit/directives/if-defined.js";var M=class extends m{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 Ti`<slot name="prompt"></slot>
|
|
201
201
|
<line-container>
|
|
202
202
|
<svg
|
|
203
|
-
width=${
|
|
204
|
-
height=${
|
|
203
|
+
width=${Xt((e=this.grImage[0])==null?void 0:e.width)}
|
|
204
|
+
height=${Xt((t=this.grImage[0])==null?void 0:t.height)}
|
|
205
205
|
viewbox="0 0 ${(r=this.grImage[0])==null?void 0:r.width} ${(o=this.grImage[0])==null?void 0:o.height}"
|
|
206
206
|
>
|
|
207
|
-
${
|
|
207
|
+
${Li(this._lines,a=>a,(a,l)=>Ft`
|
|
208
208
|
<line
|
|
209
209
|
part="line"
|
|
210
210
|
x1=${parseInt(this.querySelector("[identifier="+a.split(" ")[0]+"]").style.left)}
|
|
@@ -216,7 +216,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
216
216
|
@click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,d)=>d!==l),this.saveResponse(this._lines)}}
|
|
217
217
|
/>
|
|
218
218
|
`)}
|
|
219
|
-
${this.startPoint&&
|
|
219
|
+
${this.startPoint&&Ft`<line
|
|
220
220
|
part="point"
|
|
221
221
|
x1=${this.startCoord.x}
|
|
222
222
|
y1=${this.startCoord.y}
|
|
@@ -227,7 +227,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
227
227
|
/>`}
|
|
228
228
|
</svg>
|
|
229
229
|
<slot></slot>
|
|
230
|
-
</line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),a=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(a,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=[
|
|
230
|
+
</line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),a=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(a,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=[Ai`
|
|
231
231
|
slot:not([name='prompt']) {
|
|
232
232
|
// position: relative; /* qti-hotspot-choice relative to the slot */
|
|
233
233
|
display: block;
|
|
@@ -250,8 +250,8 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
250
250
|
top: 0px;
|
|
251
251
|
left: 0px;
|
|
252
252
|
}
|
|
253
|
-
`],s([ct()],M.prototype,"_lines",2),s([ct()],M.prototype,"startCoord",2),s([ct()],M.prototype,"mouseCoord",2),s([
|
|
254
|
-
<slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),a=r.split(",").map(l=>parseInt(l));switch(o){case"circle":{let[l,c,p]=a;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]=a;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)}};ge.styles=
|
|
253
|
+
`],s([ct()],M.prototype,"_lines",2),s([ct()],M.prototype,"startCoord",2),s([ct()],M.prototype,"mouseCoord",2),s([wi("svg")],M.prototype,"svgContainer",2),s([Ri({selector:"img"})],M.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",M);import{css as Si,html as Mi,LitElement as Vi}from"lit";var ge=class extends L(Vi,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return Mi` <slot></slot>
|
|
254
|
+
<slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),a=r.split(",").map(l=>parseInt(l));switch(o){case"circle":{let[l,c,p]=a;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]=a;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)}};ge.styles=Si`
|
|
255
255
|
:host {
|
|
256
256
|
display: inline-block;
|
|
257
257
|
position: relative;
|
|
@@ -260,12 +260,12 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
260
260
|
display: flex;
|
|
261
261
|
gap: 1rem;
|
|
262
262
|
}
|
|
263
|
-
`;customElements.define("qti-graphic-gap-match-interaction",ge);import{css as
|
|
263
|
+
`;customElements.define("qti-graphic-gap-match-interaction",ge);import{css as Di,html as Ni}from"lit";var ve=class extends v{render(){return Ni`
|
|
264
264
|
<slot name="prompt"></slot>
|
|
265
265
|
<!-- slot for the prompt -->
|
|
266
266
|
<slot></slot>
|
|
267
267
|
<!-- slot for the image and hotspots -->
|
|
268
|
-
`}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(a=>a.getAttribute("identifier")===t),o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(a=>a.order>0).length>=o){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(a=>!!a.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(a=>(a.order>a.order&&a.order--,a)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),a=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(a,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)}};ve.styles=[
|
|
268
|
+
`}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(a=>a.getAttribute("identifier")===t),o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(a=>a.order>0).length>=o){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(a=>!!a.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(a=>(a.order>a.order&&a.order--,a)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),a=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(a,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)}};ve.styles=[Di`
|
|
269
269
|
slot:not([name='prompt']) {
|
|
270
270
|
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
271
271
|
display: block;
|
|
@@ -276,12 +276,12 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
276
276
|
pointer-events: none;
|
|
277
277
|
user-select: none;
|
|
278
278
|
}
|
|
279
|
-
`];customElements.define("qti-graphic-order-interaction",ve);import{css as
|
|
279
|
+
`];customElements.define("qti-graphic-order-interaction",ve);import{css as Hi,html as Oi}from"lit";var ye=class extends v{render(){return Oi`
|
|
280
280
|
<slot name="prompt"></slot>
|
|
281
281
|
<!-- slot for the prompt -->
|
|
282
282
|
<slot></slot>
|
|
283
283
|
<!-- slot for the image and hotspots -->
|
|
284
|
-
`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),a=r.split(",").map(l=>parseInt(l));B(o,a,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};ye.styles=[
|
|
284
|
+
`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),a=r.split(",").map(l=>parseInt(l));B(o,a,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};ye.styles=[Hi`
|
|
285
285
|
slot:not([name='prompt']) {
|
|
286
286
|
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
287
287
|
display: block;
|
|
@@ -293,26 +293,26 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
293
293
|
user-select: none;
|
|
294
294
|
/* width:100%; */
|
|
295
295
|
}
|
|
296
|
-
`];customElements.define("qti-hotspot-interaction",ye);import{html as
|
|
296
|
+
`];customElements.define("qti-hotspot-interaction",ye);import{html as Q,LitElement as Ii}from"lit";import{html as $i,LitElement as Pi}from"lit";var pt=class extends Pi{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return $i`
|
|
297
297
|
<slot></slot>
|
|
298
298
|
<slot name="qti-simple-associable-choice"></slot>
|
|
299
|
-
`}};customElements.define("qti-simple-associable-choice",pt);var xe=class extends L(
|
|
299
|
+
`}};customElements.define("qti-simple-associable-choice",pt);var xe=class extends L(Ii,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice"){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"))}render(){return this.classList.contains("qti-match-tabular")?Q`<table>
|
|
300
300
|
<tr>
|
|
301
301
|
<td><slot name="prompt"></slot></td>
|
|
302
|
-
${this.cols.map((e,t)=>
|
|
302
|
+
${this.cols.map((e,t)=>Q`<th>${e.innerHTML}</th>`)}
|
|
303
303
|
</tr>
|
|
304
|
-
${this.rows.map(e=>
|
|
304
|
+
${this.rows.map(e=>Q`<tr>
|
|
305
305
|
<td>${e.innerHTML}</td>
|
|
306
|
-
${this.cols.map((t,r)=>
|
|
306
|
+
${this.cols.map((t,r)=>Q`<td><input type="checkbox" /></td>`)}
|
|
307
307
|
</tr>`)}
|
|
308
|
-
</table>`:
|
|
309
|
-
<slot></slot>`}connectedCallback(){super.connectedCallback()}};Ee.styles=[
|
|
308
|
+
</table>`:Q`<slot name="prompt"></slot> <slot></slot>`}};xe.styles=[];customElements.define("qti-match-interaction",xe);import{css as Fi,html as Xi}from"lit";var Ee=class extends m{constructor(){super()}reset(){}validate(){return!0}set response(e){}static get properties(){return N(C({},m.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return Xi` <slot name="prompt"></slot>
|
|
309
|
+
<slot></slot>`}connectedCallback(){super.connectedCallback()}};Ee.styles=[Fi``];customElements.define("qti-media-interaction",Ee);import{css as Yi,html as Yt,LitElement as Ui}from"lit";import{property as Bi}from"lit/decorators.js";var z=class extends L(Ui,"qti-simple-choice",!0,"drop-list"){render(){return Yt` <slot name="prompt"> </slot>
|
|
310
310
|
<div part="container">
|
|
311
311
|
<slot part="drags"> </slot>
|
|
312
312
|
<div part="drops">
|
|
313
|
-
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>
|
|
313
|
+
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>Yt`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
|
|
314
314
|
</div>
|
|
315
|
-
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};z.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],z.styles=[
|
|
315
|
+
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};z.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],z.styles=[Yi`
|
|
316
316
|
[part='drags'] {
|
|
317
317
|
display: flex;
|
|
318
318
|
align-items: flex-start;
|
|
@@ -360,7 +360,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
360
360
|
:host(.qti-choices-right) [part='container'] {
|
|
361
361
|
flex-direction: row-reverse;
|
|
362
362
|
}
|
|
363
|
-
`],s([
|
|
363
|
+
`],s([Bi({type:String})],z.prototype,"orientation",2);customElements.define("qti-order-interaction",z);import{LitElement as zi,css as ji,html as Ki}from"lit";var qe=class extends zi{render(){return Ki`<slot></slot>`}};qe.styles=[ji`
|
|
364
364
|
:host {
|
|
365
365
|
display: block;
|
|
366
366
|
}
|
|
@@ -371,22 +371,22 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
371
371
|
left: 50%;
|
|
372
372
|
transform: translateX(-50%);
|
|
373
373
|
}
|
|
374
|
-
`];customElements.define("qti-position-object-interaction",qe);import{LitElement as
|
|
374
|
+
`];customElements.define("qti-position-object-interaction",qe);import{LitElement as Wi,css as Gi,html as Ji}from"lit";var Ce=class extends Wi{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return Ji`<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)}};Ce.styles=[Gi`
|
|
375
375
|
:host {
|
|
376
376
|
display: inline-block;
|
|
377
377
|
position: relative;
|
|
378
378
|
}
|
|
379
|
-
`];customElements.define("qti-position-object-stage",Ce);import{css as
|
|
379
|
+
`];customElements.define("qti-position-object-stage",Ce);import{css as Zi,html as Ut}from"lit";import{property as Bt,state as Qi}from"lit/decorators.js";import{repeat as es}from"lit/directives/repeat.js";import{styleMap as ts}from"lit/directives/style-map.js";var D=class extends m{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return Ut` <slot name="prompt"></slot>
|
|
380
380
|
<point-container>
|
|
381
|
-
${
|
|
381
|
+
${es(this._points,e=>e,(e,t)=>Ut`
|
|
382
382
|
<button
|
|
383
383
|
part="point"
|
|
384
|
-
style=${
|
|
384
|
+
style=${ts({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
|
|
385
385
|
@click=${r=>{r.stopPropagation(),this._points=this._points.filter((o,a)=>a!==t),this.saveResponse(this._points)}}
|
|
386
386
|
></button>
|
|
387
387
|
`)}
|
|
388
388
|
<slot></slot>
|
|
389
|
-
</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()}};
|
|
389
|
+
</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()}};D.styles=[Zi`
|
|
390
390
|
host() {
|
|
391
391
|
display: block;
|
|
392
392
|
}
|
|
@@ -394,7 +394,7 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
394
394
|
display: block;
|
|
395
395
|
position: relative;
|
|
396
396
|
}
|
|
397
|
-
`],s([
|
|
397
|
+
`],s([Bt({type:Number,attribute:"max-choices"})],D.prototype,"maxChoices",2),s([Bt({type:Number,attribute:"min-choices"})],D.prototype,"minChoices",2),s([Qi()],D.prototype,"_points",2);customElements.define("qti-select-point-interaction",D);import{css as rs,html as _e,nothing as dt}from"lit";import{property as j,query as zt}from"lit/decorators.js";var x=class extends m{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()),_e`<slot name="prompt"></slot>
|
|
398
398
|
<div id="slider" part="slider">
|
|
399
399
|
${this.csLive.getPropertyValue("--show-bounds")=="true"?_e`<div id="bounds" part="bounds">
|
|
400
400
|
<div>${this._min}</div>
|
|
@@ -406,14 +406,14 @@ import{a as ft}from"../chunk-M7QOVOG6.js";import{a as ht}from"../chunk-5GG2XAUT.
|
|
|
406
406
|
${this.csLive.getPropertyValue("--show-value")=="true"?_e`<div id="value" part="value">${this.value}</div>`:dt}
|
|
407
407
|
</div>
|
|
408
408
|
</div>
|
|
409
|
-
</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),a=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(a),e.stopPropagation()}_onMouseDown(e){let t=a=>{let l=a.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(l),a.preventDefault(),a.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=[
|
|
409
|
+
</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),a=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(a),e.stopPropagation()}_onMouseDown(e){let t=a=>{let l=a.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(l),a.preventDefault(),a.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=[rs``],s([zt("#knob")],x.prototype,"_knob",2),s([zt("#rail")],x.prototype,"_rail",2),s([j({type:Number})],x.prototype,"value",2),s([j({type:Boolean,attribute:"step-label"})],x.prototype,"stepLabel",2),s([j({type:Boolean})],x.prototype,"reverse",2),s([j({type:Number,attribute:"lower-bound"})],x.prototype,"min",1),s([j({type:Number,attribute:"upper-bound"})],x.prototype,"max",1),s([j({type:Number,attribute:"step"})],x.prototype,"step",1),s([f("disabled",{waitUntilFirstUpdate:!0})],x.prototype,"_handleDisabledChange",2),s([f("readonly",{waitUntilFirstUpdate:!0})],x.prototype,"_handleReadonlyChange",2);customElements.define("qti-slider-interaction",x);import{LitElement as is,html as ss}from"lit";import{property as os}from"lit/decorators.js";var ke=class extends is{render(){return ss`<button @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.closest("qti-assessment-item").processResponse()}};s([os({type:String})],ke.prototype,"title",2);customElements.define("qti-end-attempt-interaction",ke);import{LitElement as ns,css as as,html as ls}from"lit";var Ae=class extends ns{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return ls` <slot name="qti-gap-img"></slot> `}};Ae.styles=as`
|
|
410
410
|
:host {
|
|
411
411
|
position: absolute;
|
|
412
412
|
}
|
|
413
|
-
`;customElements.define("qti-associable-hotspot",
|
|
413
|
+
`;customElements.define("qti-associable-hotspot",Ae);import{LitElement as cs}from"lit";import{property as ps}from"lit/decorators.js";var Te=class extends cs{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};s([ps({type:Number,reflect:!0})],Te.prototype,"tabindex",2);customElements.define("qti-gap-img",Te);import{html as ds,LitElement as us}from"lit";import{property as ms}from"lit/decorators.js";var we=class extends us{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return ds`<slot></slot>`}};s([ms({type:Number,reflect:!0})],we.prototype,"tabindex",2);customElements.define("qti-gap-text",we);import{html as hs,LitElement as fs}from"lit";import{property as bs}from"lit/decorators.js";var Re=class extends fs{constructor(){super(...arguments);this.tabindex=0}render(){return hs` <slot name="qti-gap-text"></slot>`}};s([bs({type:Number,reflect:!0})],Re.prototype,"tabindex",2);customElements.define("qti-gap",Re);import{css as gs}from"lit";import{property as vs}from"lit/decorators.js";var ee=class extends y{};ee.styles=gs`
|
|
414
414
|
:host {
|
|
415
415
|
position: absolute;
|
|
416
416
|
}
|
|
417
|
-
`,s([
|
|
418
|
-
<slot></slot> `}};Le=s([
|
|
419
|
-
<slot></slot> `}};Se=s([
|
|
417
|
+
`,s([vs({attribute:"aria-ordervalue",type:Number,reflect:!0})],ee.prototype,"order",2);customElements.define("qti-hotspot-choice",ee);import{customElement as ys}from"lit/decorators.js";import{html as xs}from"lit";var Le=class extends y{render(){return xs`<div part="ch"><div part="cha"></div></div>
|
|
418
|
+
<slot></slot> `}};Le=s([ys("qti-hottext")],Le);import{LitElement as Es}from"lit";var ut=class extends Es{};customElements.define("qti-inline-choice",ut);import{customElement as qs}from"lit/decorators.js";import{html as Cs}from"lit";var Se=class extends y{render(){return Cs`<div part="ch"><div part="cha"></div></div>
|
|
419
|
+
<slot></slot> `}};Se=s([qs("qti-simple-choice")],Se);export{kt as Events,O as OutcomeVariable,J as QtPrintedVariable,Ge as QtiAnd,k as QtiAssessmentItem,Ae as QtiAssociableHotspot,Z as QtiAssociateInteraction,me as QtiBaseValue,y as QtiChoice,_t as QtiChoiceElementSelected,F as QtiChoiceInteraction,re as QtiCompanionMaterialsInfo,Ze as QtiContains,Qe as QtiCorrect,ke as QtiEndAttemptInteraction,de as QtiEqual,ue as QtiEqualRounded,u as QtiExpression,T as QtiExtendedTextInteraction,Pe as QtiFeedbackBlock,ne as QtiFeedbackInline,Re as QtiGap,Te as QtiGapImg,be as QtiGapMatchInteraction,we as QtiGapText,M as QtiGraphicAssociateInteraction,ge as QtiGraphicGapMatchInteraction,ve as QtiGraphicOrderInteraction,ze as QtiGt,je as QtiGte,ee as QtiHotspotChoice,ye as QtiHotspotInteraction,Le as QtiHottext,Xe as QtiHottextInteraction,ut as QtiInlineChoice,ce as QtiInlineChoiceInteraction,gt as QtiInteractionChanged,Ct as QtiInteractionResponse,et as QtiIsNull,qt as QtiLooseChoice,Ke as QtiLt,We as QtiLte,he as QtiMapResponse,Y as QtiMapping,rt as QtiMatch,xe as QtiMatchInteraction,Ee as QtiMediaInteraction,nt as QtiMember,$e as QtiModalFeedback,st as QtiMultiple,tt as QtiNot,Je as QtiOr,z as QtiOrderInteraction,ot as QtiOrdered,bt as QtiOutcomeChanged,I as QtiOutcomeDeclaration,lt as QtiPortableCustomInteraction,Ce as QtiPositionObjectStage,pe as QtiProduct,Ne as QtiPrompt,xt as QtiRegisterChoice,Et as QtiRegisterHotspot,yt as QtiRegisterInteraction,vt as QtiRegisterVariable,Ye as QtiResponseCondition,P as QtiResponseDeclaration,W as QtiResponseElse,Be as QtiResponseElseIf,G as QtiResponseIf,X as QtiResponseProcessing,S as QtiRule,qe as QtiSPositionObjectInteraction,D as QtiSelectPointInteraction,Ue as QtiSetOutcomeValue,pt as QtiSimpleAssociableChoice,Se as QtiSimpleChoice,x as QtiSliderInteraction,De as QtiStylesheet,_ as QtiTextEntryInteraction,it as QtiVariable,H as ResponseVariable,se as qtiContentBody,A as qtiRubricBlock};
|