@citolab/qti-components 6.0.15 → 6.0.17
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-2EOV63WT.js +2204 -0
- package/dist/chunk-FIJLDR56.js +2204 -0
- package/dist/chunk-HQKT4SJF.js +1 -0
- package/dist/chunk-L6436D6O.js +1 -0
- package/dist/chunk-RPGALUIV.js +1 -0
- package/dist/chunk-WFLR5TH7.js +1 -0
- package/dist/custom-elements.json +483 -495
- package/dist/decorators/index.d.ts +37 -0
- package/dist/decorators/index.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +63 -143
- package/dist/qti-components/index.d.ts +2 -2
- package/dist/qti-components/index.js +68 -148
- package/dist/qti-item/index.js +1 -1
- package/dist/qti-item-react/index.d.ts +1 -1
- package/dist/qti-item-react/index.js +1 -1
- package/dist/qti-simple-choice-ca9b86db.d.ts +352 -0
- package/package.json +53 -39
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as lt}from"../chunk-RPGALUIV.js";import{a as ct}from"../chunk-HQKT4SJF.js";import{a as g}from"../chunk-WFLR5TH7.js";import{a as C,b as O,c as s}from"../chunk-NMCIOGD2.js";var pt={};var dt={};var ut={};var mt={};var ht={};var ft={};var gt={};var bt={};var vt={};var yt={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 V=class{constructor({mapping:i,correctResponse:e,cardinality:t,baseType:r,identifier:o}){this._basetype="string";this._mapping=i,this._correctResponse=e,this._cardinality=t,this._basetype=r,this._identifier=o}get mapping(){return this._mapping}get correctResponse(){return this._correctResponse}get cardinality(){return this._cardinality}get baseType(){return this._basetype}get identifier(){return this._identifier}get value(){return this._candidateResponse}set value(i){this._candidateResponse=i}};var $=class{constructor(){this.value=0}};import{customElement as Pt,property as ee}from"lit/decorators.js";import{html as It,LitElement as Ft}from"lit";var q=class extends Ft{constructor(){super();this.variables=[];this.feedbackElements=[];this.interactionElements=[];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 It`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}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);this.responses=e.map(t=>({responseIdentifier:t.identifier,response:t.correctResponse}))}processResponse(){if(!this.validateResponses())return console.info("Item is not valid, call validateResponses first"),!1;let e=this.querySelector("qti-response-processing");return e?e.process?(e.process(),!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}getVariableValue(e){let t=this.variables.find(r=>r.identifier===e);return t?t.value:(console.warn(`Variable with identifier ${e} was not found`),null)}getResponse(e){let t=this.variables.find(o=>o.identifier===e);return t instanceof V?t:null}getOutcome(e){let t=this.variables.find(r=>r.identifier===e);return t instanceof $?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.feedbackElements.forEach(t=>{t.checkShowFeedback(e.detail.outcomeIdentifier,e.detail.value)})}setOutcomeValue(e,t){let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}r.value=t,this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:t}}))}};s([ee({type:Boolean})],q.prototype,"disabled",2),s([ee({type:Boolean})],q.prototype,"readonly",2),s([ee({type:String})],q.prototype,"title",2),s([ee({type:String})],q.prototype,"identifier",2),s([g("disabled",{waitUntilFirstUpdate:!0})],q.prototype,"_handleDisabledChange",2),s([g("readonly",{waitUntilFirstUpdate:!0})],q.prototype,"_handleReadonlyChange",2),q=s([Pt("qti-assessment-item")],q);import{LitElement as Xt}from"lit";var Re=class extends Xt{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",Re);import{customElement as Ut}from"lit/decorators.js";import{html as Bt,LitElement as Kt}from"lit";import{css as Yt}from"lit";var Et=Yt`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
}
|
|
5
|
-
`;var
|
|
6
|
-
<slot></slot>`}};
|
|
5
|
+
`;var P=class extends Kt{render(){return Bt` <slot name="qti-rubric-block"></slot>
|
|
6
|
+
<slot></slot>`}};P.styles=Et,P=s([Ut("qti-item-body")],P);import{html as jt,LitElement as zt}from"lit";var Se=class extends zt{render(){return jt` <slot></slot> `}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",Se);import{html as Gt}from"lit/static-html.js";import{property as j}from"lit/decorators.js";import{LitElement as Wt}from"lit";var Jt={SPACE:32},y=class extends Wt{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 Jt.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"),Gt` <slot></slot> `}};s([j({type:String})],y.prototype,"identifier",2),s([j({type:Number,reflect:!0})],y.prototype,"tabindex",2),s([j({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:n=>n}})],y.prototype,"disabled",2),s([j({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:n=>n}})],y.prototype,"readonly",2),s([j({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:n=>n}})],y.prototype,"checked",2),s([g("disabled",{waitUntilFirstUpdate:!0})],y.prototype,"handleDisabledChange",1);import{html as Zt,LitElement as Qt}from"lit";var N=class extends Qt{render(){return Zt``}};customElements.define("qti-variabledeclaration",N);import{property as Me}from"lit/decorators.js";var I=class extends N{connectedCallback(){super.connectedCallback();let e=new V({baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping});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([Me({type:String,attribute:"base-type"})],I.prototype,"baseType",2),s([Me({type:String,attribute:"identifier"})],I.prototype,"identifier",2),s([Me({type:String,attribute:"cardinality"})],I.prototype,"cardinality",2);customElements.define("qti-response-declaration",I);var Ne=class extends N{static get observedAttributes(){return["identifier","cardinality","base-type"]}get interpolationTable(){let i=this.querySelector("qti-interpolation-table");if(i){let e=new Map;for(let t of i.querySelectorAll("qti-interpolation-table-entry")){!t.getAttribute("source-value")&&t.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let r=parseInt(t.getAttribute("source-value")),o=parseInt(t.getAttribute("target-value"));(isNaN(r)||isNaN(o))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),e.set(r,o)}}return null}connectedCallback(){super.connectedCallback();let i=this.getAttribute("identifier"),e=new $;e.identifier=i,this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};customElements.define("qti-outcome-declaration",Ne);import{LitElement as er}from"lit";import{customElement as tr}from"lit/decorators.js";var te=class extends er{};te=s([tr("qti-companion-materials-info")],te);import{LitElement as rr,css as ir,html as sr}from"lit";import{customElement as or,property as re}from"lit/decorators.js";import{ContextConsumer as nr}from"@lit-labs/context";var _=class extends rr{constructor(){super(...arguments);this.logger=new nr(this,ct,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 sr`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};_.styles=ir`
|
|
7
7
|
:host {
|
|
8
8
|
display: block;
|
|
9
9
|
}
|
|
10
|
-
`,s([
|
|
10
|
+
`,s([re({type:String})],_.prototype,"id",2),s([re({type:String})],_.prototype,"use",2),s([re({type:String})],_.prototype,"view",2),s([re({type:String,attribute:"class"})],_.prototype,"classNames",2),s([g("classNames",{waitUntilFirstUpdate:!0})],_.prototype,"handleclassNamesChange",1),_=s([or("qti-rubric-block")],_);import{LitElement as ar,html as lr}from"lit";import{customElement as cr}from"lit/decorators.js";var ie=class extends ar{render(){return lr`<slot></slot>`}};ie=s([cr("qti-content-body")],ie);import{css as dr,html as ur}from"lit";import{LitElement as pr}from"lit";import{property as se}from"lit/decorators.js";var k=class extends pr{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,t){if(this.outcomeIdentifier!==e||!t)return;let r=Array.isArray(t)?t.includes(this.identifier):this.identifier===t.toString();this.showFeedback(r)}showFeedback(e){this.showStatus=e?"on":"off"}};s([se({type:String,attribute:"show-hide"})],k.prototype,"showHide",2),s([se({type:String,attribute:"outcome-identifier"})],k.prototype,"outcomeIdentifier",2),s([se({type:String})],k.prototype,"identifier",2),s([se({type:String,attribute:!1})],k.prototype,"showStatus",2);var oe=class extends k{constructor(){super(...arguments);this.render=()=>ur` <slot class="${this.showStatus}"></slot> `}};oe.styles=dr`
|
|
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",oe);import{html as mr}from"lit";var De=class extends k{render(){return mr`
|
|
18
18
|
<style>
|
|
19
19
|
.on {
|
|
20
20
|
display: inline-block;
|
|
@@ -26,87 +26,7 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
26
26
|
<div class="feedback ${this.showStatus}">
|
|
27
27
|
<slot></slot>
|
|
28
28
|
</div>
|
|
29
|
-
`}};customElements.define("qti-modal-feedback",
|
|
30
|
-
/***
|
|
31
|
-
The new CSS reset - version 1.4.9 (last updated 11.2.2022)
|
|
32
|
-
GitHub page: https://github.com/elad2412/the-new-css-reset
|
|
33
|
-
***/
|
|
34
|
-
|
|
35
|
-
/*
|
|
36
|
-
Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property
|
|
37
|
-
- The "symbol *" part is to solve Firefox SVG sprite bug
|
|
38
|
-
*/
|
|
39
|
-
*:where(:not(iframe, canvas, img, svg, video, object):not(svg *, symbol *)) {
|
|
40
|
-
all: unset;
|
|
41
|
-
display: revert;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Preferred box-sizing value */
|
|
45
|
-
*,
|
|
46
|
-
*::before,
|
|
47
|
-
*::after {
|
|
48
|
-
box-sizing: border-box;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Reapply the pointer cursor for anchor tags */
|
|
52
|
-
a,
|
|
53
|
-
button {
|
|
54
|
-
cursor: revert;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/* Remove list styles (bullets/numbers) */
|
|
58
|
-
ol,
|
|
59
|
-
ul,
|
|
60
|
-
menu {
|
|
61
|
-
list-style: none;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* For images to not be able to exceed their container */
|
|
65
|
-
img {
|
|
66
|
-
max-width: 100%;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/* removes spacing between cells in tables */
|
|
70
|
-
table {
|
|
71
|
-
border-collapse: collapse;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/* revert the 'white-space' property for textarea elements on Safari */
|
|
75
|
-
textarea {
|
|
76
|
-
white-space: revert;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* minimum style to allow to style meter element */
|
|
80
|
-
meter {
|
|
81
|
-
-webkit-appearance: revert;
|
|
82
|
-
appearance: revert;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/* reset default text opacity of input placeholder */
|
|
86
|
-
::placeholder {
|
|
87
|
-
all: unset;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/* fix the feature of 'hidden' attribute.
|
|
91
|
-
display:revert; revert to element instead of attribute */
|
|
92
|
-
:where([hidden]) {
|
|
93
|
-
display: none;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/* revert for bug in Chromium browsers
|
|
97
|
-
- fix for the content editable attribute will work properly. */
|
|
98
|
-
:where([contenteditable]) {
|
|
99
|
-
-moz-user-modify: read-write;
|
|
100
|
-
-webkit-user-modify: read-write;
|
|
101
|
-
overflow-wrap: break-word;
|
|
102
|
-
-webkit-line-break: after-white-space;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/* apply back the draggable feature - exist only in Chromium and Safari */
|
|
106
|
-
:where([draggable='true']) {
|
|
107
|
-
-webkit-user-drag: element;
|
|
108
|
-
}
|
|
109
|
-
`;import{customElement as yr,property as pe,state as xr}from"lit/decorators.js";var S=class extends f{constructor(){super(...arguments);this._value=""}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[Y,br`
|
|
29
|
+
`}};customElements.define("qti-modal-feedback",De);import{css as fr,html as gr}from"lit";import{ifDefined as Oe}from"lit/directives/if-defined.js";import{property as He}from"lit/decorators.js";import{LitElement as hr}from"lit";var m=class extends hr{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([He({attribute:"response-identifier"})],m.prototype,"responseIdentifier",2),s([He({reflect:!0,type:Boolean})],m.prototype,"disabled",2),s([He({reflect:!0,type:Boolean})],m.prototype,"readonly",2);import{customElement as br,property as ne,state as vr}from"lit/decorators.js";var R=class extends m{constructor(){super(...arguments);this._value=""}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[fr`
|
|
110
30
|
/* PK: display host as block, else design will be collapsed */
|
|
111
31
|
:host {
|
|
112
32
|
display: inline-block;
|
|
@@ -114,7 +34,7 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
114
34
|
input {
|
|
115
35
|
padding: var(--qti-padding, 0.5rem);
|
|
116
36
|
}
|
|
117
|
-
`]}render(){return
|
|
37
|
+
`]}render(){return gr` <input
|
|
118
38
|
part="input"
|
|
119
39
|
spellcheck="false"
|
|
120
40
|
autocomplete="off"
|
|
@@ -122,13 +42,13 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
122
42
|
@keyup="${this.textChanged}"
|
|
123
43
|
@change="${this.textChanged}"
|
|
124
44
|
type="text"
|
|
125
|
-
placeholder="${
|
|
45
|
+
placeholder="${Oe(this.placeholderText?this.placeholderText:void 0)}"
|
|
126
46
|
.value="${this._value}"
|
|
127
|
-
size="${
|
|
128
|
-
pattern="${
|
|
47
|
+
size="${Oe(this.expectedLength?this.expectedLength:void 0)}"
|
|
48
|
+
pattern="${Oe(this.patternMask?this.patternMask:void 0)}"
|
|
129
49
|
?disabled="${this.disabled}"
|
|
130
50
|
?readonly="${this.readonly}"
|
|
131
|
-
/>`}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([
|
|
51
|
+
/>`}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([ne({type:Number,attribute:"expected-length"})],R.prototype,"expectedLength",2),s([ne({type:String,attribute:"pattern-mask"})],R.prototype,"patternMask",2),s([ne({type:String,attribute:"placeholder-text"})],R.prototype,"placeholderText",2),s([vr()],R.prototype,"_value",2),s([ne({type:String,attribute:"class"})],R.prototype,"classNames",2),R=s([br("qti-text-entry-interaction")],R);import{css as yr,html as Er}from"lit";import{ifDefined as Ve}from"lit/directives/if-defined.js";import{ref as xr,createRef as Cr}from"lit/directives/ref.js";import{customElement as qr,property as ae,state as _r}from"lit/decorators.js";var A=class extends m{constructor(){super(...arguments);this.textareaRef=Cr();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[yr`
|
|
132
52
|
/* PK: display host as block, else design will be collapsed */
|
|
133
53
|
:host {
|
|
134
54
|
display: block;
|
|
@@ -138,21 +58,21 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
138
58
|
width: 100%;
|
|
139
59
|
height: 100%;
|
|
140
60
|
}
|
|
141
|
-
`]}render(){return
|
|
61
|
+
`]}render(){return Er`<textarea
|
|
142
62
|
part="textarea"
|
|
143
|
-
${
|
|
63
|
+
${xr(this.textareaRef)}
|
|
144
64
|
spellcheck="false"
|
|
145
65
|
autocomplete="off"
|
|
146
66
|
@keydown="${e=>e.stopImmediatePropagation()}"
|
|
147
67
|
@keyup="${this.textChanged}"
|
|
148
68
|
@change="${this.textChanged}"
|
|
149
|
-
placeholder="${
|
|
150
|
-
maxlength="${
|
|
151
|
-
pattern="${
|
|
69
|
+
placeholder="${Ve(this.placeholderText?this.placeholderText:void 0)}"
|
|
70
|
+
maxlength="${Ve(this.expectedLength?this.expectedLength:void 0)}"
|
|
71
|
+
pattern="${Ve(this.patternMask?this.patternMask:void 0)}"
|
|
152
72
|
?disabled="${this.disabled}"
|
|
153
73
|
?readonly="${this.readonly}"
|
|
154
74
|
.value=${this._value}
|
|
155
|
-
></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([
|
|
75
|
+
></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};s([ae({type:Number,attribute:"expected-length"})],A.prototype,"expectedLength",2),s([ae({type:String,attribute:"pattern-mask"})],A.prototype,"patternMask",2),s([ae({type:String,attribute:"placeholder-text"})],A.prototype,"placeholderText",2),s([_r()],A.prototype,"_value",2),s([ae({type:String,attribute:"class"})],A.prototype,"classNames",2),s([g("classNames",{waitUntilFirstUpdate:!0})],A.prototype,"handleclassNamesChange",1),A=s([qr("qti-extended-text-interaction")],A);import{html as kr}from"lit";import{property as xt}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([xt({type:Number,attribute:"min-choices"})],v.prototype,"minChoices",2),s([xt({type:Number,attribute:"max-choices"})],v.prototype,"maxChoices",2),s([g("disabled",{waitUntilFirstUpdate:!0})],v.prototype,"_handleDisabledChange",2),s([g("readonly",{waitUntilFirstUpdate:!0})],v.prototype,"_handleReadonlyChange",2),s([g("maxChoices",{waitUntilFirstUpdate:!0})],v.prototype,"_handleMaxChoicesChange",2);var $e=class extends v{constructor(){super(...arguments);this.render=()=>kr`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",$e);import{css as Ar,html as Ct}from"lit";var le=class extends m{constructor(){super();this.options=[];this.addEventListener(yt.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 O(C({},m.properties),{options:{type:Array,value:[],attribute:!1}})}connectedCallback(){super.connectedCallback()}static get styles(){return[Ar`
|
|
156
76
|
:host {
|
|
157
77
|
display: inline-block;
|
|
158
78
|
}
|
|
@@ -163,13 +83,13 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
163
83
|
?readonly="${this.readonly}"
|
|
164
84
|
>
|
|
165
85
|
${this.options.map(e=>Ct` <option value="${e.value}" ?selected="${e.selected}">${e.textContent}</option> `)}
|
|
166
|
-
</select>`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)
|
|
86
|
+
</select>`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>O(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=>O(C({},r),{selected:r.value===t})),this.saveResponse(t)}};le.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",le);import{customElement as Tr,property as Lr}from"lit/decorators.js";import{html as Rr}from"lit";import{css as wr}from"lit";var qt=wr`
|
|
167
87
|
:host {
|
|
168
88
|
display: flex;
|
|
169
89
|
flex-direction: column;
|
|
170
90
|
align-items: flex-start;
|
|
171
91
|
}
|
|
172
|
-
`;var D=class extends v{constructor(){super(...arguments);this.render=()=>
|
|
92
|
+
`;var D=class extends v{constructor(){super(...arguments);this.render=()=>Rr` <slot name="prompt"></slot><slot></slot>`}};D.styles=qt,s([Lr({type:String})],D.prototype,"orientation",2),D=s([Tr("qti-choice-interaction")],D);import{customElement as Sr}from"lit/decorators.js";import{html as Mr,LitElement as Nr}from"lit";var _t=`<qti-response-processing>
|
|
173
93
|
<qti-response-condition>
|
|
174
94
|
<qti-response-if>
|
|
175
95
|
<qti-match>
|
|
@@ -202,7 +122,7 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
202
122
|
</qti-set-outcome-value>
|
|
203
123
|
</qti-response-else>
|
|
204
124
|
</qti-response-condition>
|
|
205
|
-
</qti-response-processing>`,
|
|
125
|
+
</qti-response-processing>`,At=`<qti-response-processing>
|
|
206
126
|
<qti-response-condition>
|
|
207
127
|
<qti-response-if>
|
|
208
128
|
<qti-is-null>
|
|
@@ -218,15 +138,15 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
218
138
|
</qti-set-outcome-value>
|
|
219
139
|
</qti-response-else>
|
|
220
140
|
</qti-response-condition>
|
|
221
|
-
</qti-response-processing>`;var B=class extends Or{render(){return Hr`<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(kt));break}case"map_response_point":{this.appendChild(this.fragmentFromString(wt));break}case"match_correct":this.appendChild(this.fragmentFromString(_t));break}}let i=[...this.children];for(let e of i)e.process()}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};B=s([Nr("qti-response-processing")],B);import{customElement as Dr}from"lit/decorators.js";import{html as Vr,LitElement as Pr}from"lit";var M=class extends Pr{render(){return Vr``}process(){throw new Error("Not implemented")}};M=s([Dr("qti-rule")],M);import{html as $r}from"lit";var Ie=class extends M{render(){return $r`<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",Ie);var Fe=class extends M{process(){let i=this.getAttribute("identifier"),e=this.firstElementChild,t=e?e.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}this.closest("qti-assessment-item").setOutcomeValue(i,t)}};customElements.define("qti-set-outcome-value",Fe);import{html as Ur}from"lit";import{html as Ir,LitElement as Fr}from"lit";var Z=class extends Fr{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return Ir` <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",Z);var Q=class extends Z{render(){return Ur`${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",Q);import{html as Xr}from"lit";var Ue=class extends Q{render(){return Xr`${super.render()}`}};customElements.define("qti-response-else-if",Ue);import{LitElement as Yr,html as Br}from"lit";var u=class extends Yr{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.assessmentItem.getResponse(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:return null}}).filter(e=>e!==null)}render(){return Br``}calculate(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};customElements.define("qti-expression",u);var Xe=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",Xe);import{html as Kr}from"lit";var A=class extends u{render(){return Kr``}calculate(){throw new Error("Not implemented")}};var Ye=class extends A{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",Ye);var Be=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",Be);var Ke=class extends A{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",Ke);import{html as zr}from"lit";var ze=class extends A{render(){return zr``}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",ze);import{html as jr}from"lit";var je=class extends A{render(){return jr``}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 Gr}from"lit/decorators.js";var T=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),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 me=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):T.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};s([Gr({type:String})],me.prototype,"toleranceMode",2);customElements.define("qti-equal",me);import{property as Wr}from"lit/decorators.js";var he=class extends u{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}calculate(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(t.value),n=parseFloat(r.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};s([Wr({type:String})],he.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",he);import{property as Jr}from"lit/decorators.js";var fe=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};s([Jr({type:String})],fe.prototype,"baseType",2);customElements.define("qti-base-value",fe);var Ge=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",Ge);import{html as Zr}from"lit";var We=class extends u{render(){return Zr``}get interpretation(){return this.getAttribute("interpretation")||""}calculate(){let i=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(i);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",We);var Je=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",Je);import{property as Qr}from"lit/decorators.js";var ge=class extends u{calculate(){let e=this.assessmentItem.getResponse(this.identifier);if(!e)return console.warn(`Response ${this.identifier} can not be found`),null;let t=e.mapping,r=Array.isArray(e.value)?e.value:[e.value],o=0;for(let n of r){let l=t.mapEntries.find(c=>T.compareSingleValues(c.mapKey,n,e.baseType));l==null||l.mappedValue==null?o+=t.defaultValue:o+=l.mappedValue}return t.lowerBound!=null&&(o=Math.max(t.lowerBound,o)),t.upperBound!=null&&(o=Math.min(t.upperBound,o)),o}};s([Qr({type:String})],ge.prototype,"identifier",2);customElements.define("qti-map-response",ge);var Ze=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):T.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 n=e[r];if(!T.compareSingleValues(o,n,t.baseType))return!1}else{let n=null;for(let l of e.value)if(T.compareSingleValues(o,l,t.baseType)){n=l;break}if(n!==null)e.value.splice(e.value.indexOf(n),1);else return!1}r++}return!0}}return console.error("unexpected number of children in match"),null}};customElements.define("qti-match",Ze);import{html as ei}from"lit";var Qe=class extends u{render(){return ei``}calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariableValue(i)}};customElements.define("qti-variable",Qe);var et=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",et);var tt=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",tt);import{property as rt}from"lit/decorators.js";import{LitElement as ti}from"lit";var K=class extends ti{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};s([rt({attribute:"default-value",type:Number})],K.prototype,"defaultValue",2),s([rt({attribute:"lower-bound",type:Number})],K.prototype,"lowerBound",2),s([rt({attribute:"upper-bound",type:Number})],K.prototype,"upperBound",2);customElements.define("qti-mapping",K);import{LitElement as ri,html as At}from"lit";var it=class extends ri{constructor(){super(...arguments);this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},o=l=>{let c={},p=l.getAttribute("key");if(p){let d=Array.from(l.children),m=d.map(g=>g.getAttribute("key"));m.length>0&&!m.find(g=>!Number.isInteger(+g))?c[p]=d.map(g=>n(g)):c[p]=l.textContent}return c},n=l=>{if(l){let c={};for(let p of l.children)c=C(C({},c),o(p));return c}};for(let l of t)return l.getAttribute("key")||(r=C(C({},r),n(l))),r;console.log("Can not find qti-custom-interaction config")}register(e){let t=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",r=t=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");r.classList.add("qti-customInteraction"),t=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let o=t=="IMS"?{properties:this.dataset}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,o,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,o),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(l=>l.getAttribute("href")).forEach(l=>{let c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.media="screen",c.href=l,r.appendChild(c)})}connectedCallback(){super.connectedCallback();let e={context:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl,catchError:!0};if(window.requirePaths&&window.requireShim&&(e.paths=window.requirePaths,e.shim=window.requireShim),!globalThis.require){this._errorMessage="requirejs not found, load with cdn: https://cdnjs.com/libraries/require.js";return}requirejs.config(e)(["require"],r=>{define("qtiCustomInteractionContext",()=>({register:o=>{this.register(o)},notifyReady:()=>{}})),r([this.module],()=>{},o=>{this._errorMessage=o})},r=>{this._errorMessage=r})}render(){return At`<slot></slot>${this._errorMessage&&At`<div style="color:red">
|
|
141
|
+
</qti-response-processing>`;var F=class extends Nr{render(){return Mr`<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(kt));break}case"map_response_point":{this.appendChild(this.fragmentFromString(At));break}case"match_correct":this.appendChild(this.fragmentFromString(_t));break}}let i=[...this.children];for(let e of i)e.process()}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};F=s([Sr("qti-response-processing")],F);import{customElement as Dr}from"lit/decorators.js";import{html as Hr,LitElement as Or}from"lit";var S=class extends Or{render(){return Hr``}process(){throw new Error("Not implemented")}};S=s([Dr("qti-rule")],S);import{html as Vr}from"lit";var Pe=class extends S{render(){return Vr`<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",Pe);var Ie=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",Ie);import{html as Ir}from"lit";import{html as $r,LitElement as Pr}from"lit";var z=class extends Pr{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return $r` <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",z);var G=class extends z{render(){return Ir`${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 Fr}from"lit";var Fe=class extends G{render(){return Fr`${super.render()}`}};customElements.define("qti-response-else-if",Fe);import{LitElement as Xr,html as Yr}from"lit";var u=class extends Xr{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.assessmentItem.getResponse(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:return null}}).filter(e=>e!==null)}render(){return Yr``}calculate(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};customElements.define("qti-expression",u);var Xe=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",Xe);import{html as Ur}from"lit";var w=class extends u{render(){return Ur``}calculate(){throw new Error("Not implemented")}};var Ye=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",Ye);var Ue=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",Ue);var Be=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",Be);import{html as Br}from"lit";var Ke=class extends w{render(){return Br``}calculate(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate();if(typeof r=="string")if(r==="true")r=!0;else if(r==="false")r=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return r}).every(e=>typeof e=="boolean"&&e)}};customElements.define("qti-and",Ke);import{html as Kr}from"lit";var je=class extends w{render(){return Kr``}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 jr}from"lit/decorators.js";var T=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),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 ce=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):T.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};s([jr({type:String})],ce.prototype,"toleranceMode",2);customElements.define("qti-equal",ce);import{property as zr}from"lit/decorators.js";var pe=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([zr({type:String})],pe.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",pe);import{property as Gr}from"lit/decorators.js";var de=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};s([Gr({type:String})],de.prototype,"baseType",2);customElements.define("qti-base-value",de);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 Wr}from"lit";var Ge=class extends u{render(){return Wr``}get interpretation(){return this.getAttribute("interpretation")||""}calculate(){let i=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(i);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",Ge);var We=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",We);import{property as Jr}from"lit/decorators.js";var ue=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=>T.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([Jr({type:String})],ue.prototype,"identifier",2);customElements.define("qti-map-response",ue);var Je=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):T.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(!T.compareSingleValues(o,a,t.baseType))return!1}else{let a=null;for(let l of e.value)if(T.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",Je);import{html as Zr}from"lit";var Ze=class extends u{render(){return Zr``}calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariableValue(i)}};customElements.define("qti-variable",Ze);var Qe=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",Qe);var et=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",et);import{property as tt}from"lit/decorators.js";import{LitElement as Qr}from"lit";var X=class extends Qr{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};s([tt({attribute:"default-value",type:Number})],X.prototype,"defaultValue",2),s([tt({attribute:"lower-bound",type:Number})],X.prototype,"lowerBound",2),s([tt({attribute:"upper-bound",type:Number})],X.prototype,"upperBound",2);customElements.define("qti-mapping",X);import{LitElement as ei,html as wt}from"lit";var rt=class extends ei{constructor(){super(...arguments);this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},o=l=>{let c={},p=l.getAttribute("key");if(p){let d=Array.from(l.children),h=d.map(b=>b.getAttribute("key"));h.length>0&&!h.find(b=>!Number.isInteger(+b))?c[p]=d.map(b=>a(b)):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 wt`<slot></slot>${this._errorMessage&&wt`<div style="color:red">
|
|
222
142
|
<h1>Error</h1>
|
|
223
143
|
${this._errorMessage}
|
|
224
|
-
</div>`}`}};customElements.define("qti-portable-custom-interaction",it);import{LitElement as si,css as oi,html as St}from"lit";var H=class{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 H._instance?H._instance:(H._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 ii}from"lit/decorators.js";var Tt=(a,i,e)=>{class t extends a{constructor(){super(...arguments);this.disabled=!1}firstUpdated(n){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(n);let l=Array.from(i?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),l.forEach(c=>{c.setAttribute("dropzone","move"),c.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(c)});for(let c of l)this.observer=new MutationObserver(p=>{p.forEach(d=>{if(d.type==="attributes")switch(d.attributeName){case"disabled":{c.hasAttribute("disabled")?this.removeHandler(c):this.attachHandler(c);break}}})}),this.observer.observe(c,{attributes:!0})}attachHandler(n){n.addEventListener("dragover",this.dragoverHandler),n.addEventListener("drop",this.dropHandler)}removeHandler(n){n.removeEventListener("dragover",this.dragoverHandler),n.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var n;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(n=this.observer)==null||n.disconnect())}dragoverHandler(n){return n.preventDefault(),n.currentTarget.setAttribute("active",""),n.dataTransfer.dropEffect="move",!1}dropHandler(n){n.preventDefault();let l=n.currentTarget,c=this.querySelector(`[identifier=${n.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${n.dataTransfer.getData("text")}`);return l?p.parentElement.getAttribute("identifier")!==l.getAttribute("identifier")&&l.appendChild(p):console.error(`cannot find droppable, target: ${n.target?JSON.stringify(n.target):"null"}`),l.removeAttribute("active"),!1}dragleaveHandler(n){return n.preventDefault(),n.currentTarget.removeAttribute("active"),!1}}return s([ii({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var Lt=(a,i,e)=>{class t extends a{}return t};import{property as z}from"lit/decorators.js";function Rt(a,i){let e,t=C({},i);return(r,o)=>{let{connectedCallback:n,disconnectedCallback:l}=r;r.connectedCallback=function(){var d;n.call(this);let c=m=>{let E=Array.from(this.querySelectorAll(a));for(let g of m){let P=Array.from(g.addedNodes).map(R=>R),h=Array.from(g.addedNodes).map(R=>R);g.type==="childList"&&P.find(R=>E.includes(R))&&this[o](P,h)}};e=new MutationObserver(c),e.observe(this,{childList:!0,subtree:!0});let p=(d=this.querySelectorAll(a))!=null?d:[];this[o](Array.from(p),[])},r.disconnectedCallback=function(){l.call(this),e.disconnect()}}}var L=(a,i,e,t)=>{class r extends Lt(Tt(a,e,t),t,i){constructor(){super(...arguments);this.draggables=new Map;this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1}reInitDragAndDrop(l,c){if(this.classList.contains("qti-match-tabular"))return;l.filter(d=>!this.draggables||!this.draggables.get(d)).length>0&&(this.dragDropApi.addDraggables(l),l.forEach(d=>{this.draggables.set(d,{parent:d.parentElement,index:Array.from(d.parentNode.children).indexOf(d)}),d.setAttribute("qti-draggable","true"),d.addEventListener("dragstart",m=>{m.dataTransfer.setData("text",m.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",m=>{if(m.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),m.dataTransfer.dropEffect==="none"&&this.configuration.dragCanBePlacedBack){let E=m.currentTarget,g=this.draggables.get(E),P=g.index<g.parent.children.length?g.index:g.parent.children.length-1,h=g.parent,R=g.parent.children[P];h.insertBefore(E,R),this.saveResponse(),this.checkMaxMatchAssociations()}m.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())})}))}handleDragOptionsChanged(l,c){this.dragDropApi.copyStylesDragClone=c.copyStylesDragClone,this.dragDropApi.dragOnClick=c.dragOnClick}handleDisabledChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("disabled",""):d.removeAttribute("disabled"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}handleReadonlyChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("readonly",""):d.removeAttribute("readonly"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}firstUpdated(l){super.firstUpdated(l),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(t):this.querySelectorAll(t))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new H,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}reset(l=!0){this.draggables.forEach((c,p)=>{let d=c.parent.children,m=c.index<d.length?c.index:d.length;c.parent.insertBefore(p,d[m])}),l&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(l=>{let p=+(l.getAttribute("match-max")||1)<=(l.children.length||0);p?l.setAttribute("disabled",""):l.removeAttribute("disabled"),p?l.removeAttribute("dropzone"):l.setAttribute("dropzone","move")})}set response(l){this.classList.contains("qti-match-tabular")||(this.reset(!1),l!==null&&Array.isArray(l)&&l.forEach(c=>{let[p,...d]=c.split(" ").reverse();if(p){let m=this.droppables.find(E=>E.getAttribute("identifier")===p);d.forEach(E=>{let g=this.querySelector(`[identifier=${E}]`);m?g?(m.appendChild(g),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${E}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let c=(e?Array.from(this.shadowRoot.querySelectorAll(t)):Array.from(this.querySelectorAll(t))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=c}saveResponse(){let l=this.droppables.map(c=>{var d;let p="";return((d=c.children)==null?void 0:d.length)>0&&(p+=Array.from(c.children).map(m=>m.getAttribute("identifier")).join(" ")+" "),p+=c.getAttribute("identifier"),p});this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:l}}))}}return s([Rt(i)],r.prototype,"reInitDragAndDrop",1),s([z({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),s([z({attribute:!1,type:Object})],r.prototype,"configuration",2),s([b("configuration")],r.prototype,"handleDragOptionsChanged",1),s([z({type:Boolean,reflect:!0})],r.prototype,"disabled",2),s([b("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),s([z({type:Boolean,reflect:!0})],r.prototype,"readonly",2),s([b("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),s([z({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),s([z({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as ni}from"lit/decorators.js";var ee=class extends L(si,"qti-simple-associable-choice",!0,".dl"){render(){return St` <slot name="prompt"></slot>
|
|
144
|
+
</div>`}`}};customElements.define("qti-portable-custom-interaction",rt);import{LitElement as ri,css as ii,html as Rt}from"lit";var me=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 ti}from"lit/decorators.js";var Tt=(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([ti({type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var Lt=(n,i,e)=>{class t extends n{}return t};import{property as Y}from"lit/decorators.js";var L=(n,i,e,t)=>{class r extends Lt(Tt(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 x=h.currentTarget,b=this.draggables.get(x),Te=b.index<b.parent.children.length?b.index:b.parent.children.length-1,f=b.parent,Le=b.parent.children[Te];f.insertBefore(x,Le),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 me,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(x=>x.getAttribute("identifier")===p);d.forEach(x=>{let b=this.querySelector(`[identifier=${x}]`);h?b?(h.appendChild(b),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${x}`):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([lt(i)],r.prototype,"reInitDragAndDrop",1),s([Y({type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),s([Y({attribute:!1,type:Object})],r.prototype,"configuration",2),s([g("configuration")],r.prototype,"handleDragOptionsChanged",1),s([Y({type:Boolean,reflect:!0})],r.prototype,"disabled",2),s([g("disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),s([Y({type:Boolean,reflect:!0})],r.prototype,"readonly",2),s([g("readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),s([Y({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),s([Y({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};import{state as si}from"lit/decorators.js";var W=class extends L(ri,"qti-simple-associable-choice",!0,".dl"){render(){return Rt` <slot name="prompt"></slot>
|
|
225
145
|
<slot name="qti-simple-associable-choice"></slot>
|
|
226
|
-
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>
|
|
146
|
+
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>Rt`<div part="associables-container">
|
|
227
147
|
<div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
|
|
228
148
|
<div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
|
|
229
|
-
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};
|
|
149
|
+
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};W.styles=ii`
|
|
230
150
|
:host {
|
|
231
151
|
display: block; /* necessary to calculate scaling position */
|
|
232
152
|
}
|
|
@@ -235,8 +155,8 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
235
155
|
flex-wrap: wrap;
|
|
236
156
|
gap: 0.5rem;
|
|
237
157
|
}
|
|
238
|
-
`,s([
|
|
239
|
-
<slot part="drops"></slot>`}};
|
|
158
|
+
`,s([si()],W.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",W);import{css as oi,html as ni,LitElement as ai}from"lit";var he=class extends L(ai,"qti-gap-text",!1,"qti-gap"){render(){return ni` <slot part="drags" name="qti-gap-text"></slot>
|
|
159
|
+
<slot part="drops"></slot>`}};he.styles=[oi`
|
|
240
160
|
:host {
|
|
241
161
|
display: flex;
|
|
242
162
|
align-items: flex-start;
|
|
@@ -259,26 +179,26 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
259
179
|
align-items: flex-start;
|
|
260
180
|
flex: 1;
|
|
261
181
|
}
|
|
262
|
-
`];customElements.define("qti-gap-match-interaction",
|
|
182
|
+
`];customElements.define("qti-gap-match-interaction",he);import{css as li,svg as St,html as ci}from"lit";function U(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((f,Le,at,Vt)=>{if(at%2===1){let $t=f.pop();f[f.length]={x:$t,y:Vt[at]}}else f.push(Le);return f},[]),o=Math.min(...r.map(f=>f.x)),a=Math.max(...r.map(f=>f.x)),l=Math.min(...r.map(f=>f.y)),c=Math.max(...r.map(f=>f.y)),p=o/e.width*100,d=l/e.height*100,h=a/e.width*100,x=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=x-d+"%";let Te=r.map(f=>({x:(f.x-o)/(a-o)*100,y:(f.y-l)/(c-l)*100})).map(f=>Math.round(f.x)+"% "+Math.round(f.y)+"%").join(",");t.style.clipPath=`polygon(${Te})`}break;default:break}}import{query as pi,queryAssignedElements as di,state as it}from"lit/decorators.js";import{repeat as ui}from"lit/directives/repeat.js";import{ifDefined as Mt}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 ci`<slot name="prompt"></slot>
|
|
263
183
|
<line-container>
|
|
264
184
|
<svg
|
|
265
|
-
width=${
|
|
266
|
-
height=${
|
|
185
|
+
width=${Mt((e=this.grImage[0])==null?void 0:e.width)}
|
|
186
|
+
height=${Mt((t=this.grImage[0])==null?void 0:t.height)}
|
|
267
187
|
viewbox="0 0 ${(r=this.grImage[0])==null?void 0:r.width} ${(o=this.grImage[0])==null?void 0:o.height}"
|
|
268
188
|
>
|
|
269
|
-
${
|
|
189
|
+
${ui(this._lines,a=>a,(a,l)=>St`
|
|
270
190
|
<line
|
|
271
191
|
part="line"
|
|
272
|
-
x1=${parseInt(this.querySelector("[identifier="+
|
|
273
|
-
y1=${parseInt(this.querySelector("[identifier="+
|
|
274
|
-
x2=${parseInt(this.querySelector("[identifier="+
|
|
275
|
-
y2=${parseInt(this.querySelector("[identifier="+
|
|
192
|
+
x1=${parseInt(this.querySelector("[identifier="+a.split(" ")[0]+"]").style.left)}
|
|
193
|
+
y1=${parseInt(this.querySelector("[identifier="+a.split(" ")[0]+"]").style.top)}
|
|
194
|
+
x2=${parseInt(this.querySelector("[identifier="+a.split(" ")[1]+"]").style.left)}
|
|
195
|
+
y2=${parseInt(this.querySelector("[identifier="+a.split(" ")[1]+"]").style.top)}
|
|
276
196
|
stroke="red"
|
|
277
197
|
stroke-width="3"
|
|
278
198
|
@click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,d)=>d!==l),this.saveResponse(this._lines)}}
|
|
279
199
|
/>
|
|
280
200
|
`)}
|
|
281
|
-
${this.startPoint&&
|
|
201
|
+
${this.startPoint&&St`<line
|
|
282
202
|
part="point"
|
|
283
203
|
x1=${this.startCoord.x}
|
|
284
204
|
y1=${this.startCoord.y}
|
|
@@ -289,7 +209,7 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
289
209
|
/>`}
|
|
290
210
|
</svg>
|
|
291
211
|
<slot></slot>
|
|
292
|
-
</line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),
|
|
212
|
+
</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));U(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=[li`
|
|
293
213
|
slot:not([name='prompt']) {
|
|
294
214
|
// position: relative; /* qti-hotspot-choice relative to the slot */
|
|
295
215
|
display: block;
|
|
@@ -312,8 +232,8 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
312
232
|
top: 0px;
|
|
313
233
|
left: 0px;
|
|
314
234
|
}
|
|
315
|
-
`],s([
|
|
316
|
-
<slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),
|
|
235
|
+
`],s([it()],M.prototype,"_lines",2),s([it()],M.prototype,"startCoord",2),s([it()],M.prototype,"mouseCoord",2),s([pi("svg")],M.prototype,"svgContainer",2),s([di({selector:"img"})],M.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",M);import{css as mi,html as hi,LitElement as fi}from"lit";var fe=class extends L(fi,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return hi` <slot></slot>
|
|
236
|
+
<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)}};fe.styles=mi`
|
|
317
237
|
:host {
|
|
318
238
|
display: inline-block;
|
|
319
239
|
position: relative;
|
|
@@ -322,12 +242,12 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
322
242
|
display: flex;
|
|
323
243
|
gap: 1rem;
|
|
324
244
|
}
|
|
325
|
-
`;customElements.define("qti-graphic-gap-match-interaction",
|
|
245
|
+
`;customElements.define("qti-graphic-gap-match-interaction",fe);import{css as gi,html as bi}from"lit";var ge=class extends v{render(){return bi`
|
|
326
246
|
<slot name="prompt"></slot>
|
|
327
247
|
<!-- slot for the prompt -->
|
|
328
248
|
<slot></slot>
|
|
329
249
|
<!-- slot for the image and hotspots -->
|
|
330
|
-
`}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(
|
|
250
|
+
`}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));U(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)}};ge.styles=[gi`
|
|
331
251
|
slot:not([name='prompt']) {
|
|
332
252
|
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
333
253
|
display: block;
|
|
@@ -338,12 +258,12 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
338
258
|
pointer-events: none;
|
|
339
259
|
user-select: none;
|
|
340
260
|
}
|
|
341
|
-
`];customElements.define("qti-graphic-order-interaction",
|
|
261
|
+
`];customElements.define("qti-graphic-order-interaction",ge);import{css as vi,html as yi}from"lit";var be=class extends v{render(){return yi`
|
|
342
262
|
<slot name="prompt"></slot>
|
|
343
263
|
<!-- slot for the prompt -->
|
|
344
264
|
<slot></slot>
|
|
345
265
|
<!-- slot for the image and hotspots -->
|
|
346
|
-
`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),
|
|
266
|
+
`}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));U(o,a,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};be.styles=[vi`
|
|
347
267
|
slot:not([name='prompt']) {
|
|
348
268
|
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
349
269
|
display: block;
|
|
@@ -355,26 +275,26 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
355
275
|
user-select: none;
|
|
356
276
|
/* width:100%; */
|
|
357
277
|
}
|
|
358
|
-
`];customElements.define("qti-hotspot-interaction",
|
|
278
|
+
`];customElements.define("qti-hotspot-interaction",be);import{html as J,LitElement as Ci}from"lit";import{html as Ei,LitElement as xi}from"lit";var st=class extends xi{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return Ei`
|
|
359
279
|
<slot></slot>
|
|
360
280
|
<slot name="qti-simple-associable-choice"></slot>
|
|
361
|
-
`}};customElements.define("qti-simple-associable-choice",
|
|
281
|
+
`}};customElements.define("qti-simple-associable-choice",st);var ve=class extends L(Ci,"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")?J`<table>
|
|
362
282
|
<tr>
|
|
363
283
|
<td><slot name="prompt"></slot></td>
|
|
364
|
-
${this.cols.map((e,t)=>
|
|
284
|
+
${this.cols.map((e,t)=>J`<th>${e.innerHTML}</th>`)}
|
|
365
285
|
</tr>
|
|
366
|
-
${this.rows.map(e=>
|
|
286
|
+
${this.rows.map(e=>J`<tr>
|
|
367
287
|
<td>${e.innerHTML}</td>
|
|
368
|
-
${this.cols.map((t,r)=>
|
|
288
|
+
${this.cols.map((t,r)=>J`<td><input type="checkbox" /></td>`)}
|
|
369
289
|
</tr>`)}
|
|
370
|
-
</table>`:
|
|
371
|
-
<slot></slot>`}connectedCallback(){super.connectedCallback()}};
|
|
290
|
+
</table>`:J`<slot name="prompt"></slot> <slot></slot>`}};ve.styles=[];customElements.define("qti-match-interaction",ve);import{css as qi,html as _i}from"lit";var ye=class extends m{constructor(){super()}reset(){}validate(){return!0}set response(e){}static get properties(){return O(C({},m.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return _i` <slot name="prompt"></slot>
|
|
291
|
+
<slot></slot>`}connectedCallback(){super.connectedCallback()}};ye.styles=[qi``];customElements.define("qti-media-interaction",ye);import{css as ki,html as Nt,LitElement as Ai}from"lit";import{property as wi}from"lit/decorators.js";var B=class extends L(Ai,"qti-simple-choice",!0,"drop-list"){render(){return Nt` <slot name="prompt"> </slot>
|
|
372
292
|
<div part="container">
|
|
373
293
|
<slot part="drags"> </slot>
|
|
374
294
|
<div part="drops">
|
|
375
|
-
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>
|
|
295
|
+
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>Nt`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
|
|
376
296
|
</div>
|
|
377
|
-
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};
|
|
297
|
+
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};B.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],B.styles=[ki`
|
|
378
298
|
[part='drags'] {
|
|
379
299
|
display: flex;
|
|
380
300
|
align-items: flex-start;
|
|
@@ -422,7 +342,7 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
422
342
|
:host(.qti-choices-right) [part='container'] {
|
|
423
343
|
flex-direction: row-reverse;
|
|
424
344
|
}
|
|
425
|
-
`],s([
|
|
345
|
+
`],s([wi({type:String})],B.prototype,"orientation",2);customElements.define("qti-order-interaction",B);import{LitElement as Ti,css as Li,html as Ri}from"lit";var Ee=class extends Ti{render(){return Ri`<slot></slot>`}};Ee.styles=[Li`
|
|
426
346
|
:host {
|
|
427
347
|
display: block;
|
|
428
348
|
}
|
|
@@ -433,22 +353,22 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
433
353
|
left: 50%;
|
|
434
354
|
transform: translateX(-50%);
|
|
435
355
|
}
|
|
436
|
-
`];customElements.define("qti-position-object-interaction",
|
|
356
|
+
`];customElements.define("qti-position-object-interaction",Ee);import{LitElement as Si,css as Mi,html as Ni}from"lit";var xe=class extends Si{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return Ni`<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)}};xe.styles=[Mi`
|
|
437
357
|
:host {
|
|
438
358
|
display: inline-block;
|
|
439
359
|
position: relative;
|
|
440
360
|
}
|
|
441
|
-
`];customElements.define("qti-position-object-stage",
|
|
361
|
+
`];customElements.define("qti-position-object-stage",xe);import{css as Di,html as Dt}from"lit";import{property as Ht,state as Hi}from"lit/decorators.js";import{repeat as Oi}from"lit/directives/repeat.js";import{styleMap as Vi}from"lit/directives/style-map.js";var H=class extends m{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return Dt` <slot name="prompt"></slot>
|
|
442
362
|
<point-container>
|
|
443
|
-
${
|
|
363
|
+
${Oi(this._points,e=>e,(e,t)=>Dt`
|
|
444
364
|
<button
|
|
445
365
|
part="point"
|
|
446
|
-
style=${
|
|
447
|
-
@click=${r=>{r.stopPropagation(),this._points=this._points.filter((o,
|
|
366
|
+
style=${Vi({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
|
|
367
|
+
@click=${r=>{r.stopPropagation(),this._points=this._points.filter((o,a)=>a!==t),this.saveResponse(this._points)}}
|
|
448
368
|
></button>
|
|
449
369
|
`)}
|
|
450
370
|
<slot></slot>
|
|
451
|
-
</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()}};
|
|
371
|
+
</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()}};H.styles=[Di`
|
|
452
372
|
host() {
|
|
453
373
|
display: block;
|
|
454
374
|
}
|
|
@@ -456,26 +376,26 @@ import{a as b,b as ct}from"../chunk-DLLHO3W2.js";import{a as C,b as $,c as s}fro
|
|
|
456
376
|
display: block;
|
|
457
377
|
position: relative;
|
|
458
378
|
}
|
|
459
|
-
`],s([
|
|
379
|
+
`],s([Ht({type:Number,attribute:"max-choices"})],H.prototype,"maxChoices",2),s([Ht({type:Number,attribute:"min-choices"})],H.prototype,"minChoices",2),s([Hi()],H.prototype,"_points",2);customElements.define("qti-select-point-interaction",H);import{css as $i,html as Ce,nothing as ot}from"lit";import{property as K,query as Ot}from"lit/decorators.js";var E=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()),Ce`<slot name="prompt"></slot>
|
|
460
380
|
<div id="slider" part="slider">
|
|
461
|
-
${this.csLive.getPropertyValue("--show-bounds")=="true"?
|
|
381
|
+
${this.csLive.getPropertyValue("--show-bounds")=="true"?Ce`<div id="bounds" part="bounds">
|
|
462
382
|
<div>${this._min}</div>
|
|
463
383
|
<div>${this._max}</div>
|
|
464
|
-
</div>`:
|
|
465
|
-
${this.csLive.getPropertyValue("--show-ticks")=="true"?
|
|
384
|
+
</div>`:ot}
|
|
385
|
+
${this.csLive.getPropertyValue("--show-ticks")=="true"?Ce`<div id="ticks" part="ticks"></div>`:ot}
|
|
466
386
|
<div id="rail" part="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove}>
|
|
467
387
|
<div id="knob" part="knob">
|
|
468
|
-
${this.csLive.getPropertyValue("--show-value")=="true"?
|
|
388
|
+
${this.csLive.getPropertyValue("--show-value")=="true"?Ce`<div id="value" part="value">${this.value}</div>`:ot}
|
|
469
389
|
</div>
|
|
470
390
|
</div>
|
|
471
|
-
</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),
|
|
391
|
+
</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}};E.styles=[$i``],s([Ot("#knob")],E.prototype,"_knob",2),s([Ot("#rail")],E.prototype,"_rail",2),s([K({type:Number})],E.prototype,"value",2),s([K({type:Boolean,attribute:"step-label"})],E.prototype,"stepLabel",2),s([K({type:Boolean})],E.prototype,"reverse",2),s([K({type:Number,attribute:"lower-bound"})],E.prototype,"min",1),s([K({type:Number,attribute:"upper-bound"})],E.prototype,"max",1),s([K({type:Number,attribute:"step"})],E.prototype,"step",1),s([g("disabled",{waitUntilFirstUpdate:!0})],E.prototype,"_handleDisabledChange",2),s([g("readonly",{waitUntilFirstUpdate:!0})],E.prototype,"_handleReadonlyChange",2);customElements.define("qti-slider-interaction",E);import{LitElement as Pi,css as Ii,html as Fi}from"lit";var qe=class extends Pi{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return Fi` <slot name="qti-gap-img"></slot> `}};qe.styles=Ii`
|
|
472
392
|
:host {
|
|
473
393
|
position: absolute;
|
|
474
394
|
}
|
|
475
|
-
`;customElements.define("qti-associable-hotspot",
|
|
395
|
+
`;customElements.define("qti-associable-hotspot",qe);import{LitElement as Xi}from"lit";import{property as Yi}from"lit/decorators.js";var _e=class extends Xi{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};s([Yi({type:Number,reflect:!0})],_e.prototype,"tabindex",2);customElements.define("qti-gap-img",_e);import{html as Ui,LitElement as Bi}from"lit";import{property as Ki}from"lit/decorators.js";var ke=class extends Bi{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return Ui`<slot></slot>`}};s([Ki({type:Number,reflect:!0})],ke.prototype,"tabindex",2);customElements.define("qti-gap-text",ke);import{html as ji,LitElement as zi}from"lit";import{property as Gi}from"lit/decorators.js";var Ae=class extends zi{constructor(){super(...arguments);this.tabindex=0}render(){return ji` <slot name="qti-gap-text"></slot>`}};s([Gi({type:Number,reflect:!0})],Ae.prototype,"tabindex",2);customElements.define("qti-gap",Ae);import{css as Wi}from"lit";import{property as Ji}from"lit/decorators.js";var Z=class extends y{};Z.styles=Wi`
|
|
476
396
|
:host {
|
|
477
397
|
position: absolute;
|
|
478
398
|
}
|
|
479
|
-
`,s([
|
|
480
|
-
<slot></slot> `}};
|
|
481
|
-
<slot></slot> `}};
|
|
399
|
+
`,s([Ji({attribute:"aria-ordervalue",type:Number,reflect:!0})],Z.prototype,"order",2);customElements.define("qti-hotspot-choice",Z);import{customElement as Zi}from"lit/decorators.js";import{html as Qi}from"lit";var we=class extends y{render(){return Qi`<div part="ch"><div part="cha"></div></div>
|
|
400
|
+
<slot></slot> `}};we=s([Zi("qti-hottext")],we);import{LitElement as es}from"lit";var nt=class extends es{};customElements.define("qti-inline-choice",nt);import{customElement as ts}from"lit/decorators.js";import{html as rs}from"lit";var Q=class extends y{render(){return rs`<div part="ch"><div part="cha"></div></div>
|
|
401
|
+
<slot></slot> `}};Q=s([ts("qti-simple-choice")],Q);export{yt as Events,$ as OutcomeVariable,Ke as QtiAnd,q as QtiAssessmentItem,qe as QtiAssociableHotspot,W as QtiAssociateInteraction,de as QtiBaseValue,y as QtiChoice,vt as QtiChoiceElementSelected,te as QtiCompanionMaterialsInfo,ze as QtiContains,Ge as QtiCorrect,ce as QtiEqual,pe as QtiEqualRounded,u as QtiExpression,A as QtiExtendedTextInteraction,oe as QtiFeedbackInline,Ae as QtiGap,_e as QtiGapImg,he as QtiGapMatchInteraction,ke as QtiGapText,M as QtiGraphicAssociateInteraction,fe as QtiGraphicGapMatchInteraction,ge as QtiGraphicOrderInteraction,Xe as QtiGt,Ye as QtiGte,Z as QtiHotspotChoice,be as QtiHotspotInteraction,we as QtiHottext,$e as QtiHottextInteraction,nt as QtiInlineChoice,le as QtiInlineChoiceInteraction,dt as QtiInteractionChanged,bt as QtiInteractionResponse,We as QtiIsNull,gt as QtiLooseChoice,Ue as QtiLt,Be as QtiLte,ue as QtiMapResponse,X as QtiMapping,Je as QtiMatch,ve as QtiMatchInteraction,ye as QtiMediaInteraction,De as QtiModalFeedback,Qe as QtiMultiple,je as QtiOr,B as QtiOrderInteraction,et as QtiOrdered,pt as QtiOutcomeChanged,Ne as QtiOutcomeDeclaration,rt as QtiPortableCustomInteraction,xe as QtiPositionObjectStage,Se as QtiPrompt,ht as QtiRegisterChoice,ft as QtiRegisterHotspot,mt as QtiRegisterInteraction,ut as QtiRegisterVariable,Pe as QtiResponseCondition,I as QtiResponseDeclaration,z as QtiResponseElse,Fe as QtiResponseElseIf,G as QtiResponseIf,F as QtiResponseProcessing,S as QtiRule,Ee as QtiSPositionObjectInteraction,H as QtiSelectPointInteraction,Ie as QtiSetOutcomeValue,st as QtiSimpleAssociableChoice,E as QtiSliderInteraction,Re as QtiStylesheet,R as QtiTextEntryInteraction,Ze as QtiVariable,V as ResponseVariable,ie as qtiContentBody,_ as qtiRubricBlock};
|