@citolab/qti-components 6.0.19 → 6.0.22
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/audience-context-444478f4.d.ts +8 -0
- package/dist/chunk-3O4URV5U.cjs +1 -0
- package/dist/chunk-5GG2XAUT.js +1 -0
- package/dist/chunk-6RJ7J4AE.cjs +1 -0
- package/dist/{chunk-UD6XWG6V.js → chunk-GEVRCVN2.cjs} +7 -14
- package/dist/chunk-GGEPFBR7.cjs +1 -0
- package/dist/chunk-HOQW4KDA.cjs +1 -0
- package/dist/chunk-M7QOVOG6.js +1 -0
- package/dist/{chunk-FIJLDR56.js → chunk-YDFMBQT4.js} +6 -12
- package/dist/context/index.cjs +1 -0
- package/dist/context/index.d.cts +1 -0
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +1 -1
- package/dist/decorators/index.cjs +1 -0
- package/dist/decorators/index.d.cts +37 -0
- package/dist/decorators/index.js +1 -1
- package/dist/index.cjs +2889 -0
- package/dist/index.d.cts +1063 -0
- package/dist/index.d.ts +27 -16
- package/dist/index.js +79 -80
- package/dist/{qti-assessment-item-68bcc951.d.ts → qti-assessment-item-c1eb7de3.d.ts} +5 -5
- package/dist/qti-components/index.cjs +419 -0
- package/dist/qti-components/index.d.cts +560 -0
- package/dist/qti-components/index.d.ts +21 -12
- package/dist/qti-components/index.js +74 -68
- package/dist/qti-item/index.cjs +1 -0
- package/dist/qti-item/index.d.cts +4 -0
- package/dist/qti-item/index.d.ts +2 -2
- package/dist/qti-item/index.js +1 -1
- package/dist/{qti-item-8c26fa9e.d.ts → qti-item-e2edd87f.d.ts} +1 -1
- package/dist/qti-item-react/index.cjs +1 -0
- package/dist/qti-item-react/index.d.cts +30 -0
- package/dist/qti-item-react/index.d.ts +3 -3
- package/dist/qti-item-react/index.js +1 -1
- package/dist/{qti-simple-choice-ca9b86db.d.ts → qti-simple-choice-e28cfb34.d.ts} +6 -3
- package/dist/qti-transform/index.cjs +17 -0
- package/dist/qti-transform/index.d.cts +17 -0
- package/package.json +25 -15
- package/dist/chunk-HQKT4SJF.js +0 -1
- package/dist/chunk-RPGALUIV.js +0 -1
- package/dist/context-a957e50e.d.ts +0 -9
- package/dist/custom-elements.json +0 -6766
- package/dist/index.css +0 -2200
- package/dist/qti-assessment-item-f1fcf393.d.ts +0 -120
- package/dist/qti-item-e1fc6a70.d.ts +0 -30
- package/dist/qti-simple-choice-d1392d78.d.ts +0 -352
|
@@ -14,7 +14,7 @@ interface Calculate {
|
|
|
14
14
|
}
|
|
15
15
|
type float = number;
|
|
16
16
|
type integer = number;
|
|
17
|
-
type BaseType = 'boolean' | 'directedPair' | 'float' | 'integer' | 'string' | 'identifier' | 'pair';
|
|
17
|
+
type BaseType = 'boolean' | 'directedPair' | 'duration' | 'float' | 'integer' | 'string' | 'identifier' | 'pair';
|
|
18
18
|
type Multiple = string | string[][];
|
|
19
19
|
type Ordered = string | string[][];
|
|
20
20
|
type Cardinality = 'multiple' | 'ordered' | 'single';
|
|
@@ -60,11 +60,11 @@ declare class ResponseVariable implements VariableDeclaration<string | string[]>
|
|
|
60
60
|
set value(val: string | string[]);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
declare class OutcomeVariable implements VariableDeclaration<number | string | undefined> {
|
|
63
|
+
declare class OutcomeVariable implements VariableDeclaration<number | string | string[] | undefined> {
|
|
64
64
|
identifier: string;
|
|
65
65
|
cardinality: Cardinality;
|
|
66
66
|
baseType: BaseType;
|
|
67
|
-
value: number | string | undefined;
|
|
67
|
+
value: number | string | string[] | undefined;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/**
|
|
@@ -102,7 +102,7 @@ declare class QtiAssessmentItem extends LitElement {
|
|
|
102
102
|
set responses(myResponses: ResponseInteraction[]);
|
|
103
103
|
resetInteractions(): void;
|
|
104
104
|
validateResponses(): boolean;
|
|
105
|
-
|
|
105
|
+
getVariable(identifier: string): VariableDeclaration<any>;
|
|
106
106
|
getResponse(identifier: string): ResponseVariable | null;
|
|
107
107
|
getOutcome(identifier: string): OutcomeVariable | null;
|
|
108
108
|
private registerFeedbackElement;
|
|
@@ -110,7 +110,7 @@ declare class QtiAssessmentItem extends LitElement {
|
|
|
110
110
|
private interactionResponse;
|
|
111
111
|
private outcomeChanged;
|
|
112
112
|
private showFeedback;
|
|
113
|
-
setOutcomeValue(identifier: string, value: number): void;
|
|
113
|
+
setOutcomeValue(identifier: string, value: string | number): void;
|
|
114
114
|
}
|
|
115
115
|
declare global {
|
|
116
116
|
interface HTMLElementTagNameMap {
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6RJ7J4AEcjs = require('../chunk-6RJ7J4AE.cjs');var _chunkGGEPFBR7cjs = require('../chunk-GGEPFBR7.cjs');var _chunk3O4URV5Ucjs = require('../chunk-3O4URV5U.cjs');var _chunkHOQW4KDAcjs = require('../chunk-HOQW4KDA.cjs');var bt={};var gt={};var vt={};var yt={};var xt={};var Et={};var qt={};var Ct={};var _t={};var kt={ON_OUTCOME_CHANGED:"qti-outcome-changed",ON_INTERACTION_CHANGED:"on-interaction-changed",ON_REGISTER_VARIABLE:"on-register-variable",ON_REGISTER_FEEDBACK:"on-register-feedback",ON_REGISTER_INTERACTION:"on-register-interaction",ON_REGISTER_CHOICE:"on-register-choice",ON_REGISTER_HOTSPOT:"on-register-hotspot",ON_LOOSE_CHOICE:"on-loose-choice",ON_INTERACTION_RESPONSE:"on-interaction-response",ON_DROPDOWN_SELECTED:"on-dropdown-selected",ON_CHOICE_ELEMENT_SELECTED:"choice-element-selected"};var H=class{constructor({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 O=class{constructor(){this.value=void 0}};var _decoratorsjs = require('lit/decorators.js');var _lit = require('lit');var k=class extends _lit.LitElement{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 _lit.html`<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(){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}getVariable(e){let t=this.variables.find(r=>r.identifier===e);return t||(console.warn(`Variable with identifier ${e} was not found`),null)}getResponse(e){let t=this.variables.find(o=>o.identifier===e);return t instanceof H?t:null}getOutcome(e){let t=this.variables.find(r=>r.identifier===e);return t instanceof O?t:null}registerFeedbackElement(e){e.stopPropagation(),this.feedbackElements.push(e.detail)}registerInteractionElement(e){e.stopPropagation(),this.interactionElements.push(e.target)}interactionResponse(e){let t=e.detail,r=this.getResponse(t.responseIdentifier);r&&(r.value=t.response),e.stopImmediatePropagation();let o=this.getAttribute("identifier");o||console.warn("qti-assessment-item has no identifier specified"),this.dispatchEvent(new CustomEvent("qti-interaction-changed",{bubbles:!0,composed:!0,detail:{item:o,responseIdentifier:t.responseIdentifier,response:t.response}}))}outcomeChanged(e){this.showFeedback(e)}showFeedback(e){this.feedbackElements.forEach(t=>{t.checkShowFeedback(e.detail.outcomeIdentifier)})}setOutcomeValue(e,t){let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}r.cardinality==="single"?r.value=t:r.value.push(t),this.dispatchEvent(new CustomEvent("qti-outcome-changed",{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:t}}))}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean})],k.prototype,"disabled",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean})],k.prototype,"readonly",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],k.prototype,"title",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],k.prototype,"identifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "disabled",{waitUntilFirstUpdate:!0})],k.prototype,"_handleDisabledChange",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "readonly",{waitUntilFirstUpdate:!0})],k.prototype,"_handleReadonlyChange",2),k= exports.QtiAssessmentItem =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-assessment-item")],k);var Ne=class extends _lit.LitElement{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",Ne);var Rt=_lit.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: block;
|
|
4
|
+
}
|
|
5
|
+
`;var $=class extends _lit.LitElement{render(){return _lit.html` <slot name="qti-rubric-block"></slot>
|
|
6
|
+
<slot></slot>`}};$.styles=Rt,$=_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-item-body")],$);var De=class extends _lit.LitElement{render(){return _lit.html` <slot></slot> `}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};customElements.define("qti-prompt",De);var _statichtmljs = require('lit/static-html.js');var nr={SPACE:32},y= exports.QtiChoice =class extends _lit.LitElement{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 nr.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"),_statichtmljs.html` <slot></slot> `}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],y.prototype,"identifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,reflect:!0})],y.prototype,"tabindex",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:n=>n}})],y.prototype,"disabled",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:n=>n}})],y.prototype,"readonly",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:n=>n}})],y.prototype,"checked",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "disabled",{waitUntilFirstUpdate:!0})],y.prototype,"handleDisabledChange",1);var V=class extends _lit.LitElement{render(){return _lit.html``}};customElements.define("qti-variabledeclaration",V);var P=class extends V{connectedCallback(){super.connectedCallback();let e=new H({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")}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"base-type"})],P.prototype,"baseType",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],P.prototype,"identifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],P.prototype,"cardinality",2);customElements.define("qti-response-declaration",P);var I=class extends V{get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let r of e.querySelectorAll("qti-interpolation-table-entry")){!r.getAttribute("source-value")&&r.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let o=parseInt(r.getAttribute("source-value")),a=parseInt(r.getAttribute("target-value"));(isNaN(o)||isNaN(a))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(o,a)}}return null}connectedCallback(){super.connectedCallback();let e=new O;e.identifier=this.identifier,e.cardinality=this.cardinality,e.baseType=this.baseType,(e.cardinality==="multiple"||e.cardinality==="ordered")&&(e.value=[]);let t=Array.from(this.querySelectorAll("qti-default-value > qti-value")).map(r=>r.innerHTML);t.length>1&&(e.value=t),t.length===1&&(e.cardinality==="multiple"||e.cardinality==="ordered"?e.value=t:e.value=t[0]),t||(e.value=null),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"base-type"})],I.prototype,"baseType",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],I.prototype,"identifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],I.prototype,"cardinality",2);customElements.define("qti-outcome-declaration",I);var te=class extends _lit.LitElement{};te= exports.QtiCompanionMaterialsInfo =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-companion-materials-info")],te);var _context = require('@lit-labs/context');var R=class extends _lit.LitElement{constructor(){super(...arguments);this.logger=new (0, _context.ContextConsumer)(this,_chunkGGEPFBR7cjs.a,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 _lit.html`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};R.styles=_lit.css`
|
|
7
|
+
:host {
|
|
8
|
+
display: block;
|
|
9
|
+
}
|
|
10
|
+
`,_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],R.prototype,"id",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],R.prototype,"use",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],R.prototype,"view",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"class"})],R.prototype,"classNames",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "classNames",{waitUntilFirstUpdate:!0})],R.prototype,"handleclassNamesChange",1),R= exports.qtiRubricBlock =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-rubric-block")],R);var ie=class extends _lit.LitElement{render(){return _lit.html`<slot></slot>`}};ie= exports.qtiContentBody =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-content-body")],ie);var E=class extends _lit.LitElement{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){var o;let t=this.closest("qti-assessment-item").getOutcome(e);if(this.outcomeIdentifier!==e||!t)return;let r=Array.isArray(t)?t.includes(this.identifier):this.identifier===((o=t==null?void 0:t.value)==null?void 0:o.toString());this.showFeedback(r)}showFeedback(e){this.showStatus=e?"on":"off"}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"show-hide"})],E.prototype,"showHide",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"outcome-identifier"})],E.prototype,"outcomeIdentifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],E.prototype,"identifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:!1})],E.prototype,"showStatus",2);var oe=class extends E{constructor(){super(...arguments);this.render=()=>_lit.html` <slot class="${this.showStatus}"></slot> `}};oe.styles=_lit.css`
|
|
11
|
+
.on {
|
|
12
|
+
display: inline-block;
|
|
13
|
+
}
|
|
14
|
+
.off {
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
`;customElements.define("qti-feedback-inline",oe);var $e=class extends E{render(){return _lit.html`
|
|
18
|
+
<style>
|
|
19
|
+
.on {
|
|
20
|
+
display: inline-block;
|
|
21
|
+
}
|
|
22
|
+
.off {
|
|
23
|
+
display: none;
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
26
|
+
<div class="feedback ${this.showStatus}">
|
|
27
|
+
<slot></slot>
|
|
28
|
+
</div>
|
|
29
|
+
`}};customElements.define("qti-modal-feedback",$e);var Pe=class extends E{render(){return _lit.html`
|
|
30
|
+
<style>
|
|
31
|
+
.on {
|
|
32
|
+
display: inline-block;
|
|
33
|
+
}
|
|
34
|
+
.off {
|
|
35
|
+
display: none;
|
|
36
|
+
}
|
|
37
|
+
</style>
|
|
38
|
+
<div class="feedback ${this.showStatus}">
|
|
39
|
+
<slot></slot>
|
|
40
|
+
</div>
|
|
41
|
+
`}firstUpdated(i){this.checkShowFeedback(this.outcomeIdentifier)}};customElements.define("qti-feedback-block",Pe);var _ifdefinedjs = require('lit/directives/if-defined.js');var m=class extends _lit.LitElement{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}}))}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {attribute:"response-identifier"})],m.prototype,"responseIdentifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {reflect:!0,type:Boolean})],m.prototype,"disabled",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {reflect:!0,type:Boolean})],m.prototype,"readonly",2);var _refjs = require('lit/directives/ref.js');var _=class extends m{constructor(){super(...arguments);this._value="";this._size=5;this.inputRef=_refjs.createRef.call(void 0, )}handleclassNamesChange(e,t){t.split(" ").forEach(o=>{if(o.startsWith("qti-input-width")){let a=o.replace("qti-input-width-","");this._size=parseInt(a)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[_lit.css`
|
|
42
|
+
:host {
|
|
43
|
+
display: inline-flex;
|
|
44
|
+
}
|
|
45
|
+
`]}render(){return _lit.html` <input
|
|
46
|
+
part="input"
|
|
47
|
+
spellcheck="false"
|
|
48
|
+
autocomplete="off"
|
|
49
|
+
@keydown="${e=>e.stopImmediatePropagation()}"
|
|
50
|
+
@keyup="${this.textChanged}"
|
|
51
|
+
@change="${this.textChanged}"
|
|
52
|
+
type="text"
|
|
53
|
+
placeholder="${_ifdefinedjs.ifDefined.call(void 0, this.placeholderText?this.placeholderText:void 0)}"
|
|
54
|
+
.value="${this._value}"
|
|
55
|
+
size="${this._size}"
|
|
56
|
+
pattern="${_ifdefinedjs.ifDefined.call(void 0, this.patternMask?this.patternMask:void 0)}"
|
|
57
|
+
?disabled="${this.disabled}"
|
|
58
|
+
?readonly="${this.readonly}"
|
|
59
|
+
/>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"expected-length"})],_.prototype,"expectedLength",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"pattern-mask"})],_.prototype,"patternMask",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"placeholder-text"})],_.prototype,"placeholderText",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],_.prototype,"_value",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],_.prototype,"_size",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"class"})],_.prototype,"classNames",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "classNames")],_.prototype,"handleclassNamesChange",1),_= exports.QtiTextEntryInteraction =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-text-entry-interaction")],_);var A=class extends m{constructor(){super(...arguments);this.textareaRef=_refjs.createRef.call(void 0, );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[_lit.css`
|
|
60
|
+
/* PK: display host as block, else design will be collapsed */
|
|
61
|
+
:host {
|
|
62
|
+
display: block;
|
|
63
|
+
}
|
|
64
|
+
textarea {
|
|
65
|
+
width: 100%;
|
|
66
|
+
height: 100%;
|
|
67
|
+
border: 0;
|
|
68
|
+
}
|
|
69
|
+
`]}render(){return _lit.html`<textarea
|
|
70
|
+
part="textarea"
|
|
71
|
+
${_refjs.ref.call(void 0, this.textareaRef)}
|
|
72
|
+
spellcheck="false"
|
|
73
|
+
autocomplete="off"
|
|
74
|
+
@keydown="${e=>e.stopImmediatePropagation()}"
|
|
75
|
+
@keyup="${this.textChanged}"
|
|
76
|
+
@change="${this.textChanged}"
|
|
77
|
+
placeholder="${_ifdefinedjs.ifDefined.call(void 0, this.placeholderText?this.placeholderText:void 0)}"
|
|
78
|
+
maxlength="${_ifdefinedjs.ifDefined.call(void 0, this.expectedLength?this.expectedLength:void 0)}"
|
|
79
|
+
pattern="${_ifdefinedjs.ifDefined.call(void 0, this.patternMask?this.patternMask:void 0)}"
|
|
80
|
+
?disabled="${this.disabled}"
|
|
81
|
+
?readonly="${this.readonly}"
|
|
82
|
+
.value=${this._value}
|
|
83
|
+
></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this._value=t.value,this.saveResponse(t.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"expected-length"})],A.prototype,"expectedLength",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"pattern-mask"})],A.prototype,"patternMask",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"placeholder-text"})],A.prototype,"placeholderText",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],A.prototype,"_value",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"class"})],A.prototype,"classNames",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "classNames",{waitUntilFirstUpdate:!0})],A.prototype,"handleclassNamesChange",1),A= exports.QtiExtendedTextInteraction =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-extended-text-interaction")],A);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)}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"min-choices"})],v.prototype,"minChoices",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"max-choices"})],v.prototype,"maxChoices",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "disabled",{waitUntilFirstUpdate:!0})],v.prototype,"_handleDisabledChange",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "readonly",{waitUntilFirstUpdate:!0})],v.prototype,"_handleReadonlyChange",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "maxChoices",{waitUntilFirstUpdate:!0})],v.prototype,"_handleMaxChoicesChange",2);var Xe=class extends v{constructor(){super(...arguments);this.render=()=>_lit.html`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};customElements.define("qti-hottext-interaction",Xe);var le=class extends m{constructor(){super();this.options=[];this.addEventListener(kt.ON_DROPDOWN_SELECTED,this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:"select",value:"",selected:!1},...e.map(t=>({textContent:t.innerHTML,value:t.getAttribute("identifier"),selected:!1}))]}static get properties(){return _chunkHOQW4KDAcjs.b.call(void 0, _chunkHOQW4KDAcjs.a.call(void 0, {},m.properties),{options:{type:Array,value:[],attribute:!1}})}connectedCallback(){super.connectedCallback()}static get styles(){return[_lit.css`
|
|
84
|
+
:host {
|
|
85
|
+
display: inline-block;
|
|
86
|
+
}
|
|
87
|
+
`]}render(){return _lit.html` <select
|
|
88
|
+
part="select"
|
|
89
|
+
@change="${this.choiceSelected}"
|
|
90
|
+
?disabled="${this.disabled}"
|
|
91
|
+
?readonly="${this.readonly}"
|
|
92
|
+
>
|
|
93
|
+
${this.options.map(e=>_lit.html` <option value="${e.value}" ?selected="${e.selected}">${e.textContent}</option> `)}
|
|
94
|
+
</select>`}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>_chunkHOQW4KDAcjs.b.call(void 0, _chunkHOQW4KDAcjs.a.call(void 0, {},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=>_chunkHOQW4KDAcjs.b.call(void 0, _chunkHOQW4KDAcjs.a.call(void 0, {},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);var St=_lit.css`
|
|
95
|
+
:host {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
align-items: flex-start;
|
|
99
|
+
}
|
|
100
|
+
`;var F=class extends v{constructor(){super(...arguments);this.render=()=>_lit.html` <slot name="prompt"></slot><slot></slot>`}};F.styles=St,_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],F.prototype,"orientation",2),F= exports.QtiChoiceInteraction =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-choice-interaction")],F);var Mt=`<qti-response-processing>
|
|
101
|
+
<qti-response-condition>
|
|
102
|
+
<qti-response-if>
|
|
103
|
+
<qti-match>
|
|
104
|
+
<qti-variable identifier="RESPONSE"></qti-variable>
|
|
105
|
+
<qti-correct identifier="RESPONSE"></qti-correct>
|
|
106
|
+
</qti-match>
|
|
107
|
+
<qti-set-outcome-value identifier="SCORE">
|
|
108
|
+
<qti-base-value base-type="float">1</qti-base-value>
|
|
109
|
+
</qti-set-outcome-value>
|
|
110
|
+
</qti-response-if>
|
|
111
|
+
<qti-response-else>
|
|
112
|
+
<qti-set-outcome-value identifier="SCORE">
|
|
113
|
+
<qti-base-value base-type="float">0</qti-base-value>
|
|
114
|
+
</qti-set-outcome-value>
|
|
115
|
+
</qti-response-else>
|
|
116
|
+
</qti-response-condition>
|
|
117
|
+
</qti-response-processing>`,Vt=`<qti-response-processing>
|
|
118
|
+
<qti-response-condition>
|
|
119
|
+
<qti-response-if>
|
|
120
|
+
<qti-is-null>
|
|
121
|
+
<qti-variable identifier="RESPONSE"></qti-variable>
|
|
122
|
+
</qti-is-null>
|
|
123
|
+
<qti-set-outcome-value identifier="SCORE">
|
|
124
|
+
<qti-base-value base-type="float">0.0</qti-base-value>
|
|
125
|
+
</qti-set-outcome-value>
|
|
126
|
+
</qti-response-if>
|
|
127
|
+
<qti-response-else>
|
|
128
|
+
<qti-set-outcome-value identifier="SCORE">
|
|
129
|
+
<qti-map-response identifier="RESPONSE"> </qti-map-response>
|
|
130
|
+
</qti-set-outcome-value>
|
|
131
|
+
</qti-response-else>
|
|
132
|
+
</qti-response-condition>
|
|
133
|
+
</qti-response-processing>`,Nt=`<qti-response-processing>
|
|
134
|
+
<qti-response-condition>
|
|
135
|
+
<qti-response-if>
|
|
136
|
+
<qti-is-null>
|
|
137
|
+
<qti-variable identifier="RESPONSE"></qti-variable>
|
|
138
|
+
</qti-is-null>
|
|
139
|
+
<qti-set-outcome-value identifier="SCORE">
|
|
140
|
+
<qti-base-value base-type="float">0</qti-base-value>
|
|
141
|
+
</qti-set-outcome-value>
|
|
142
|
+
</qti-response-if>
|
|
143
|
+
<qti-response-else>
|
|
144
|
+
<qti-set-outcome-value identifier="SCORE">
|
|
145
|
+
<qti-map-response-point identifier="RESPONSE"></qti-map-response-point>
|
|
146
|
+
</qti-set-outcome-value>
|
|
147
|
+
</qti-response-else>
|
|
148
|
+
</qti-response-condition>
|
|
149
|
+
</qti-response-processing>`;var X=class extends _lit.LitElement{render(){return _lit.html`<slot></slot>`}static get observedAttributes(){return["identifier"]}process(){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":{this.appendChild(this.fragmentFromString(Vt));break}case"map_response_point":{this.appendChild(this.fragmentFromString(Nt));break}case"match_correct":this.appendChild(this.fragmentFromString(Mt));break}}let i=[...this.children];for(let e of i)e.process()}fragmentFromString(i){return document.createRange().createContextualFragment(i)}};X= exports.QtiResponseProcessing =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-response-processing")],X);var S=class extends _lit.LitElement{render(){return _lit.html``}process(){throw new Error("Not implemented")}};S= exports.QtiRule =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-rule")],S);var Ye=class extends S{render(){return _lit.html`<slot></slot>`}process(){let i=[...this.children];for(let e=0;e<i.length;e++){let t=i[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",Ye);var Ue=class extends S{process(){let i=this.getAttribute("identifier"),e=this.firstElementChild,t=e?e.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}this.closest("qti-assessment-item").setOutcomeValue(i,t)}};customElements.define("qti-set-outcome-value",Ue);var W=class extends _lit.LitElement{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return _lit.html` <slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let i=this.getSubRules();for(let e=0;e<i.length;e++)i[e].process()}};customElements.define("qti-response-else",W);var G=class extends W{render(){return _lit.html`${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);var Be=class extends G{render(){return _lit.html`${super.render()}`}};customElements.define("qti-response-else-if",Be);var u=class extends _lit.LitElement{constructor(){super(...arguments);this._error=[];this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.assessmentItem.getVariable(t)}case"qti-multiple":{let r=e.calculate();return r.length>0?{baseType:r[0].baseType,value:r.map(o=>o.value),cardinality:"multiple"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",r=this.assessmentItem.getResponse(t);return{baseType:r.baseType,value:r.correctResponse,cardinality:r.cardinality}}default:{try{return{baseType:"integer",value:e.calculate().toString(),cardinality:"single"}}catch(t){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}set error(e){let t=this._error;this._error.push(e),this.requestUpdate("error",t)}render(){return _lit.html`${this._error.map(e=>_lit.html`<div role="alert">${e}</div>`)}`}calculate(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};u.styles=_lit.css`
|
|
150
|
+
[role='alert'] {
|
|
151
|
+
border: 1px solid red;
|
|
152
|
+
background: pink;
|
|
153
|
+
color: red;
|
|
154
|
+
padding: 0.5rem 0.25rem;
|
|
155
|
+
font-size: small;
|
|
156
|
+
border-radius: 5px;
|
|
157
|
+
margin-bottom: 3px;
|
|
158
|
+
}
|
|
159
|
+
`,_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],u.prototype,"error",1);customElements.define("qti-expression",u);var ze=class extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",ze);var T=class extends u{render(){return _lit.html``}calculate(){throw new Error("Not implemented")}};var je=class extends T{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",je);var Ke=class extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",Ke);var We=class extends T{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];return e.baseType===t.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",We);var Ge=class extends T{render(){return _lit.html``}calculate(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate();if(typeof r=="string")if(r==="true")r=!0;else if(r==="false")r=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return r}).every(e=>typeof e=="boolean"&&e)}};customElements.define("qti-and",Ge);var ce=class extends u{constructor(){super(...arguments);this.mult=0;this.render=()=>_lit.html`<pre>${this.mult}</pre>`}calculate(){let t=this.getVariables().reduce((r,o)=>{if(o.baseType=="float"||o.baseType=="integer")try{return r*parseInt(o.value.toString())}catch(a){console.warn("can not convert to number")}else console.warn(`has another baseType ${o.baseType}`);return r},1);return this.mult=t,t}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],ce.prototype,"mult",2);customElements.define("qti-product",ce);var Je=class extends T{render(){return _lit.html``}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);var w=class{static compareSingleValues(i,e,t){switch(t){case"identifier":case"string":return i===e;case"integer":{let r=parseInt(i,10),o=parseInt(e,10);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`Cannot convert ${i} and/or ${e} to int.`);break}case"float":{let r=parseFloat(i),o=parseFloat(e);if(!isNaN(r)&&!isNaN(o))return r===o;console.error(`couldn't convert ${i} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=i.split(" ").sort(),o=e.split(" ").sort();if(r.length===2&&o.length===2)return t==="pair"&&(r.sort(),o.sort()),r.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${i} 2: ${e}`);break}}return!1}};var pe=class extends u{constructor(){super(...arguments);this.toleranceMode="exact"}calculate(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value)?(console.error("unexpected cardinality in qti equal"),!1):w.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],pe.prototype,"toleranceMode",2);customElements.define("qti-equal",pe);var de=class extends u{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}calculate(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(t.value),a=parseFloat(r.value);if(!isNaN(o)&&!isNaN(a))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===a.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(a*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${a}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],de.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",de);var ue=class extends u{constructor(){super(...arguments);this.baseType="string"}calculate(){return this.textContent}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"base-type"})],ue.prototype,"baseType",2);customElements.define("qti-base-value",ue);var Ze=class extends u{calculate(){let i=this.getVariables();if(this.children.length===2){let e=i[0],t=i[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let r=e.value,o=t.value;return r.filter(c=>o.includes(c)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let r=e.value;return t.value.includes(r)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",Ze);var Qe=class extends u{render(){return _lit.html``}get interpretation(){return this.getAttribute("interpretation")||""}calculate(){let i=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(i);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",Qe);var et=class extends u{calculate(){if(this.children.length===1){let i=this.getVariables();if(!i)return!0;let e=i[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",et);var tt=class extends u{render(){return _lit.html`${super.render()}`}calculate(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",tt);var me=class extends u{calculate(){let e=this.assessmentItem.getResponse(this.identifier);if(!e)return console.warn(`Response ${this.identifier} can not be found`),null;let t=e.mapping,r=Array.isArray(e.value)?e.value:[e.value],o=0;for(let a of r){let l=t.mapEntries.find(c=>w.compareSingleValues(c.mapKey,a,e.baseType));l==null||l.mappedValue==null?o+=t.defaultValue:o+=l.mappedValue}return t.lowerBound!=null&&(o=Math.max(t.lowerBound,o)),t.upperBound!=null&&(o=Math.min(t.upperBound,o)),o}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],me.prototype,"identifier",2);customElements.define("qti-map-response",me);var rt=class extends u{calculate(){if(this.children.length===2){let i=this.getVariables(),e=i[0],t=i[1];if(t.cardinality==="single")return Array.isArray(e.value)||Array.isArray(t.value)?(console.error("unexpected cardinality in qti match"),!1):w.compareSingleValues(e.value.toString(),t.value.toString(),t.baseType);{if(!Array.isArray(e.value)||!Array.isArray(t.value))return console.error("unexpected cardinality in qti match"),!1;if(e.value.length!==t.value.length)return!1;let r=0;for(let o of t.value){if(t.cardinality==="ordered"){let a=e[r];if(!w.compareSingleValues(o,a,t.baseType))return!1}else{let a=null;for(let l of e.value)if(w.compareSingleValues(o,l,t.baseType)){a=l;break}if(a!==null)e.value.splice(e.value.indexOf(a),1);else return!1}r++}return!0}}return console.error("unexpected number of children in match"),null}};customElements.define("qti-match",rt);var it=class extends u{render(){return _lit.html``}calculate(){let i=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(i).value}};customElements.define("qti-variable",it);var st=class extends u{calculate(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return i}};customElements.define("qti-multiple",st);var ot=class extends u{calculate(){let i=this.getVariables();if(i.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of i)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return i}};customElements.define("qti-ordered",ot);var he=class extends _lit.LitElement{constructor(){super();this.value="";this.closest("qti-assessment-item").addEventListener("qti-outcome-changed",()=>{this.value=this.calculate()})}render(){return _lit.html`${this.value}`}calculate(){let e=this.closest("qti-assessment-item"),t=this.getAttribute("identifier");return e.getVariable(t).value}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],he.prototype,"value",2);customElements.define("qti-printed-variable",he);var nt=class extends u{calculate(){let i=this.getVariables();this.children.length!==2&&(this.error="The member operator takes two sub-expressions");let[e,t]=i;if(e.baseType!==t.baseType&&(this.error="Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||(this.error="and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&(this.error="The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&(this.error="It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let r=e.value;return t.value.includes(r)}};customElements.define("qti-member",nt);var Y=class extends _lit.LitElement{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")}))}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {attribute:"default-value",type:Number})],Y.prototype,"defaultValue",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {attribute:"lower-bound",type:Number})],Y.prototype,"lowerBound",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {attribute:"upper-bound",type:Number})],Y.prototype,"upperBound",2);customElements.define("qti-mapping",Y);var lt=class extends _lit.LitElement{constructor(){super(...arguments);this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},o=l=>{let c={},p=l.getAttribute("key");if(p){let d=Array.from(l.children),h=d.map(g=>g.getAttribute("key"));h.length>0&&!h.find(g=>!Number.isInteger(+g))?c[p]=d.map(g=>a(g)):c[p]=l.textContent}return c},a=l=>{if(l){let c={};for(let p of l.children)c=_chunkHOQW4KDAcjs.a.call(void 0, _chunkHOQW4KDAcjs.a.call(void 0, {},c),o(p));return c}};for(let l of t)return l.getAttribute("key")||(r=_chunkHOQW4KDAcjs.a.call(void 0, _chunkHOQW4KDAcjs.a.call(void 0, {},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 _lit.html`<slot></slot>${this._errorMessage&&_lit.html`<div style="color:red">
|
|
160
|
+
<h1>Error</h1>
|
|
161
|
+
${this._errorMessage}
|
|
162
|
+
</div>`}`}};customElements.define("qti-portable-custom-interaction",lt);var fe=class n{constructor(){this._touchBegin=0;this._touchDown=null;this._lastClick=0;this._canDrag=!1;this._dragSrc=null;this._dragCopy=null;this._touchEndCalled=!1;this._dragRunning=!1;this._dataTransfer={data:{},setData:function(i,e){this.data[i]=e},getData:function(i){return this.data[i]},effectAllowed:"move"};this._copyOffset={x:0,y:0};this._lastTarget=null;this._currentDropContainer=null;this._handleClick=!0;this._DBLCLICKDELAY=500;this._CONTEXTMENUDELAY=1e3;this._DRAGDELTA=5;this._COPYOPACITY=.7;this.copyStylesDragClone=!0;this.dragOnClick=!1;this._createDragCopy=(i,e)=>{if(this._dragCopy===null&&this._dragRunning){this._dragSrc.style.opacity=this._COPYOPACITY,this._dragCopy=this._dragSrc.cloneNode(!0);let t=window.getComputedStyle(this._dragSrc);if(this._dragCopy.style="",this._dragCopy.setAttribute("dragclone",""),this.copyStylesDragClone)for(let r of t)this._dragCopy.style[r]=t.getPropertyValue(r);this._calculateDragCopyPosition(e),this._dragCopy.style.top=e.clientY-this._copyOffset.y+"px",this._dragCopy.style.left=e.clientX-this._copyOffset.x+"px",this._dragCopy.style.position="fixed",this._dragCopy.style.pointerEvents="none",this._dragCopy.style.zIndex="999999",this._dragCopy=document.body.appendChild(this._dragCopy),this._dispatchEvent(this._dragSrc,"dragstart")}if(this._dragRunning){let t=this;requestAnimationFrame(function(){t._touchEndCalled||t._dragCopy===null||(t._dragCopy.style.top=e.clientY-t._copyOffset.y+"px",t._dragCopy.style.left=e.clientX-t._copyOffset.x+"px")});let r=this._findDroppable(i);r!=this._lastTarget&&(this._dispatchEvent(r,"dragenter"),this._dispatchEvent(this._lastTarget,"dragleave"),this._lastTarget=r),this._currentDropContainer=r,this._currentDropContainer&&this._dispatchEvent(r,"dragover")}};return n._instance?n._instance:(n._instance=this,document.addEventListener("touchmove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("mousemove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchend",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("mouseup",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchcancel",this._touchCancel.bind(this),{passive:!1,capture:!1}),this)}addDraggables(i){i.forEach(e=>{e.addEventListener("touchstart",this._touchStart.bind(this),{passive:!1,capture:!1}),e.addEventListener("mousedown",this._touchStart.bind(this),{passive:!1,capture:!1})})}_touchStart(i){this._touchBegin=Date.now();let{x:e,y:t}=this._getPositionFromEvent(i);if(this._touchDown={x:e,y:t},this._dragSrc=i.currentTarget,this._canDrag=!0,this.dragOnClick){let r={clientX:e,clientY:t};this._dragRunning=!0,this._createDragCopy(i,r)}i.preventDefault()}_touchMove(i){if(this._canDrag&&this._dragSrc){let{x:e,y:t}=this._getPositionFromEvent(i),r={clientX:e,clientY:t};this._getDelta(r)>=this._DRAGDELTA&&(this._dragRunning=!0),this._createDragCopy(i,r),i.preventDefault()}}_touchEnd(i){var e;if(this._touchEndCalled=!0,this._canDrag=!1,this._currentDropContainer)this._dispatchEvent(this._currentDropContainer,"drop"),this._dispatchEvent(this._dragSrc,"dragend");else if(this._dragRunning){let t=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});t.dataTransfer={dropEffect:"none"},(e=this._dragSrc)==null||e.dispatchEvent(t)}this._reset()}_touchCancel(i){this._reset()}_findDroppable(i){let e,t=i.composedPath().find(r=>{if(r.nodeType===1&&r.nodeName!=="SLOT"&&r.hasAttribute("dropzone"))return r});if(t){let r=t.getRootNode(),o=this._getPoint(i);e=r.elementFromPoint(o.x,o.y)}return e}_getPoint(i,e){return i&&i.touches&&(i=i.touches[0]),{x:e?i.pageX:i.clientX,y:e?i.pageY:i.clientY}}_calculateDragCopyPosition(i){let e=this._dragSrc.getBoundingClientRect();this._copyOffset.x=i.clientX-e.left,this._copyOffset.y=i.clientY-e.top}_getDelta(i){let e=Math.abs(i.clientX-this._touchDown.x),t=Math.abs(i.clientY-this._touchDown.y);return e+t}_dispatchEvent(i,e,t=!0){if(!i)return!1;let r=new CustomEvent(e,{bubbles:t,cancelable:!0});return r.dataTransfer=this._dataTransfer,i.dispatchEvent(r),r.defaultPrevented}_reset(){this._dragRunning&&(this._dragSrc.style.opacity="1.0",this._dragCopy.parentElement.removeChild(this._dragCopy)),this._dragRunning=!1,this._dragSrc=null,this._dragCopy=null,this._canDrag=!1,this._touchBegin=0,this._touchDown=null,this._lastClick=0,this._touchEndCalled=!1,this._dataTransfer={data:{},setData:function(i,e){this.data[i]=e},getData:function(i){return this.data[i]},effectAllowed:"move"},this._copyOffset={x:0,y:0},this._lastTarget=null,this._currentDropContainer=null,this._handleClick=!0}_getPositionFromEvent(i){let e;if(i.type=="touchstart"||i.type=="touchmove"||i.type=="touchend"||i.type=="touchcancel"){let t=typeof i.originalEvent=="undefined"?i:i.originalEvent,r=t.touches[0]||t.changedTouches[0];e={x:r.pageX,y:r.pageY}}else(i.type=="mousedown"||i.type=="mouseup"||i.type=="mousemove"||i.type=="mouseover"||i.type=="mouseout"||i.type=="mouseenter"||i.type=="mouseleave")&&(e={x:i.clientX,y:i.clientY});return e}};var Ot=(n,i,e)=>{class t extends n{constructor(){super(...arguments);this.disabled=!1}firstUpdated(a){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(a);let l=Array.from(i?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),l.forEach(c=>{c.setAttribute("dropzone","move"),c.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(c)});for(let c of l)this.observer=new MutationObserver(p=>{p.forEach(d=>{if(d.type==="attributes")switch(d.attributeName){case"disabled":{c.hasAttribute("disabled")?this.removeHandler(c):this.attachHandler(c);break}}})}),this.observer.observe(c,{attributes:!0})}attachHandler(a){a.addEventListener("dragover",this.dragoverHandler),a.addEventListener("drop",this.dropHandler)}removeHandler(a){a.removeEventListener("dragover",this.dragoverHandler),a.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var a;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(a=this.observer)==null||a.disconnect())}dragoverHandler(a){return a.preventDefault(),a.currentTarget.setAttribute("active",""),a.dataTransfer.dropEffect="move",!1}dropHandler(a){a.preventDefault();let l=a.currentTarget,c=this.querySelector(`[identifier=${a.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${a.dataTransfer.getData("text")}`);return l?p.parentElement.getAttribute("identifier")!==l.getAttribute("identifier")&&l.appendChild(p):console.error(`cannot find droppable, target: ${a.target?JSON.stringify(a.target):"null"}`),l.removeAttribute("active"),!1}dragleaveHandler(a){return a.preventDefault(),a.currentTarget.removeAttribute("active"),!1}}return _chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean,reflect:!0})],t.prototype,"disabled",2),t};var $t=(n,i,e)=>{class t extends n{}return t};var L=(n,i,e,t)=>{class r extends $t(Ot(n,e,t),t,i){constructor(){super(...arguments);this.draggables=new Map;this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1}reInitDragAndDrop(l,c){if(this.classList.contains("qti-match-tabular"))return;l.filter(d=>!this.draggables||!this.draggables.get(d)).length>0&&(this.dragDropApi.addDraggables(l),l.forEach(d=>{this.draggables.set(d,{parent:d.parentElement,index:Array.from(d.parentNode.children).indexOf(d)}),d.setAttribute("qti-draggable","true"),d.addEventListener("dragstart",h=>{h.dataTransfer.setData("text",h.currentTarget.getAttribute("identifier")),d.setAttribute("dragging","")}),d.addEventListener("dragend",h=>{if(h.preventDefault(),d.removeAttribute("over"),d.removeAttribute("dragging"),h.dataTransfer.dropEffect==="none"&&this.configuration.dragCanBePlacedBack){let q=h.currentTarget,g=this.draggables.get(q),Me=g.index<g.parent.children.length?g.index:g.parent.children.length-1,b=g.parent,Ve=g.parent.children[Me];b.insertBefore(q,Ve),this.saveResponse(),this.checkMaxMatchAssociations()}h.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())})}))}handleDragOptionsChanged(l,c){this.dragDropApi.copyStylesDragClone=c.copyStylesDragClone,this.dragDropApi.dragOnClick=c.dragOnClick}handleDisabledChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("disabled",""):d.removeAttribute("disabled"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}handleReadonlyChange(l,c){this.draggables.forEach((p,d)=>{c?d.setAttribute("readonly",""):d.removeAttribute("readonly"),c?d.removeAttribute("qti-draggable"):d.setAttribute("qti-draggable","true")})}firstUpdated(l){super.firstUpdated(l),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(t):this.querySelectorAll(t))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new fe,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}reset(l=!0){this.draggables.forEach((c,p)=>{let d=c.parent.children,h=c.index<d.length?c.index:d.length;c.parent.insertBefore(p,d[h])}),l&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(l=>{let p=+(l.getAttribute("match-max")||1)<=(l.children.length||0);p?l.setAttribute("disabled",""):l.removeAttribute("disabled"),p?l.removeAttribute("dropzone"):l.setAttribute("dropzone","move")})}set response(l){this.classList.contains("qti-match-tabular")||(this.reset(!1),l!==null&&Array.isArray(l)&&l.forEach(c=>{let[p,...d]=c.split(" ").reverse();if(p){let h=this.droppables.find(q=>q.getAttribute("identifier")===p);d.forEach(q=>{let g=this.querySelector(`[identifier=${q}]`);h?g?(h.appendChild(g),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${q}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let c=(e?Array.from(this.shadowRoot.querySelectorAll(t)):Array.from(this.querySelectorAll(t))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=c}saveResponse(){let l=this.droppables.map(c=>{var d;let p="";return((d=c.children)==null?void 0:d.length)>0&&(p+=Array.from(c.children).map(h=>h.getAttribute("identifier")).join(" ")+" "),p+=c.getAttribute("identifier"),p});this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:l}}))}}return _chunkHOQW4KDAcjs.c.call(void 0, [_chunk6RJ7J4AEcjs.a.call(void 0, i)],r.prototype,"reInitDragAndDrop",1),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String,attribute:"response-identifier"})],r.prototype,"responseIdentifier",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {attribute:!1,type:Object})],r.prototype,"configuration",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "configuration")],r.prototype,"handleDragOptionsChanged",1),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean,reflect:!0})],r.prototype,"disabled",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "disabled",{waitUntilFirstUpdate:!0})],r.prototype,"handleDisabledChange",1),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean,reflect:!0})],r.prototype,"readonly",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "readonly",{waitUntilFirstUpdate:!0})],r.prototype,"handleReadonlyChange",1),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),r};var J=class extends L(_lit.LitElement,"qti-simple-associable-choice",!0,".dl"){render(){return _lit.html` <slot name="prompt"></slot>
|
|
163
|
+
<slot name="qti-simple-associable-choice"></slot>
|
|
164
|
+
${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>_lit.html`<div part="associables-container">
|
|
165
|
+
<div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
|
|
166
|
+
<div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
|
|
167
|
+
</div>`)}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};J.styles=_lit.css`
|
|
168
|
+
:host {
|
|
169
|
+
display: block; /* necessary to calculate scaling position */
|
|
170
|
+
}
|
|
171
|
+
slot[name='qti-simple-associable-choice'] {
|
|
172
|
+
display: flex;
|
|
173
|
+
flex-wrap: wrap;
|
|
174
|
+
gap: 0.5rem;
|
|
175
|
+
}
|
|
176
|
+
`,_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],J.prototype,"_childrenMap",2);customElements.define("qti-associate-interaction",J);var be=class extends L(_lit.LitElement,"qti-gap-text",!1,"qti-gap"){render(){return _lit.html` <slot part="drags" name="qti-gap-text"></slot>
|
|
177
|
+
<slot part="drops"></slot>`}};be.styles=[_lit.css`
|
|
178
|
+
:host {
|
|
179
|
+
display: flex;
|
|
180
|
+
align-items: flex-start;
|
|
181
|
+
gap: 0.5rem;
|
|
182
|
+
}
|
|
183
|
+
:host(.qti-choices-top) {
|
|
184
|
+
flex-direction: column;
|
|
185
|
+
}
|
|
186
|
+
:host(.qti-choices-bottom) {
|
|
187
|
+
flex-direction: column-reverse;
|
|
188
|
+
}
|
|
189
|
+
:host(.qti-choices-left) {
|
|
190
|
+
flex-direction: row;
|
|
191
|
+
}
|
|
192
|
+
:host(.qti-choices-right) {
|
|
193
|
+
flex-direction: row-reverse;
|
|
194
|
+
}
|
|
195
|
+
[part='drags'] {
|
|
196
|
+
display: flex;
|
|
197
|
+
align-items: flex-start;
|
|
198
|
+
flex: 1;
|
|
199
|
+
}
|
|
200
|
+
`];customElements.define("qti-gap-match-interaction",be);function B(n,i,e,t){switch(n){case"circle":{let[r,o,a]=i,l=r/e.width*100,c=o/e.height*100,p=a/e.width*100;t.style.left=l-p+"%",t.style.top=c-p+"%",t.style.width=t.style.height=4*p+"px",t.style.borderRadius="9999px"}break;case"rect":{let[r,o,a,l]=i,c=r/e.width*100,p=o/e.height*100,d=a/e.width*100,h=l/e.height*100;t.style.left=c+"%",t.style.top=p+"%",t.style.width=d-c+"%",t.style.height=h-p+"%"}break;case"poly":{let r=i.reduce((b,Ve,mt,zt)=>{if(mt%2===1){let jt=b.pop();b[b.length]={x:jt,y:zt[mt]}}else b.push(Ve);return b},[]),o=Math.min(...r.map(b=>b.x)),a=Math.max(...r.map(b=>b.x)),l=Math.min(...r.map(b=>b.y)),c=Math.max(...r.map(b=>b.y)),p=o/e.width*100,d=l/e.height*100,h=a/e.width*100,q=c/e.height*100;t.style.left=o/e.width*100+"%",t.style.top=l/e.height*100+"%",t.style.width=h-p+"%",t.style.height=q-d+"%";let Me=r.map(b=>({x:(b.x-o)/(a-o)*100,y:(b.y-l)/(c-l)*100})).map(b=>Math.round(b.x)+"% "+Math.round(b.y)+"%").join(",");t.style.clipPath=`polygon(${Me})`}break;default:break}}var _repeatjs = require('lit/directives/repeat.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 _lit.html`<slot name="prompt"></slot>
|
|
201
|
+
<line-container>
|
|
202
|
+
<svg
|
|
203
|
+
width=${_ifdefinedjs.ifDefined.call(void 0, (e=this.grImage[0])==null?void 0:e.width)}
|
|
204
|
+
height=${_ifdefinedjs.ifDefined.call(void 0, (t=this.grImage[0])==null?void 0:t.height)}
|
|
205
|
+
viewbox="0 0 ${(r=this.grImage[0])==null?void 0:r.width} ${(o=this.grImage[0])==null?void 0:o.height}"
|
|
206
|
+
>
|
|
207
|
+
${_repeatjs.repeat.call(void 0, this._lines,a=>a,(a,l)=>_lit.svg`
|
|
208
|
+
<line
|
|
209
|
+
part="line"
|
|
210
|
+
x1=${parseInt(this.querySelector("[identifier="+a.split(" ")[0]+"]").style.left)}
|
|
211
|
+
y1=${parseInt(this.querySelector("[identifier="+a.split(" ")[0]+"]").style.top)}
|
|
212
|
+
x2=${parseInt(this.querySelector("[identifier="+a.split(" ")[1]+"]").style.left)}
|
|
213
|
+
y2=${parseInt(this.querySelector("[identifier="+a.split(" ")[1]+"]").style.top)}
|
|
214
|
+
stroke="red"
|
|
215
|
+
stroke-width="3"
|
|
216
|
+
@click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,d)=>d!==l),this.saveResponse(this._lines)}}
|
|
217
|
+
/>
|
|
218
|
+
`)}
|
|
219
|
+
${this.startPoint&&_lit.svg`<line
|
|
220
|
+
part="point"
|
|
221
|
+
x1=${this.startCoord.x}
|
|
222
|
+
y1=${this.startCoord.y}
|
|
223
|
+
x2=${this.mouseCoord.x}
|
|
224
|
+
y2=${this.mouseCoord.y}
|
|
225
|
+
stroke="red"
|
|
226
|
+
stroke-width="3"
|
|
227
|
+
/>`}
|
|
228
|
+
</svg>
|
|
229
|
+
<slot></slot>
|
|
230
|
+
</line-container>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),a=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(a,l,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=document.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};M.styles=[_lit.css`
|
|
231
|
+
slot:not([name='prompt']) {
|
|
232
|
+
// position: relative; /* qti-hotspot-choice relative to the slot */
|
|
233
|
+
display: block;
|
|
234
|
+
width: fit-content; /* hotspots not stretching further if image is at max size */
|
|
235
|
+
}
|
|
236
|
+
::slotted(img) {
|
|
237
|
+
/* image not selectable anymore */
|
|
238
|
+
pointer-events: none;
|
|
239
|
+
user-select: none;
|
|
240
|
+
}
|
|
241
|
+
::slotted(qti-associable-hotspot) {
|
|
242
|
+
transform: translate(-50%, -50%);
|
|
243
|
+
}
|
|
244
|
+
line-container {
|
|
245
|
+
display: block;
|
|
246
|
+
position: relative;
|
|
247
|
+
}
|
|
248
|
+
svg {
|
|
249
|
+
position: absolute;
|
|
250
|
+
top: 0px;
|
|
251
|
+
left: 0px;
|
|
252
|
+
}
|
|
253
|
+
`],_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],M.prototype,"_lines",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],M.prototype,"startCoord",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],M.prototype,"mouseCoord",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.query.call(void 0, "svg")],M.prototype,"svgContainer",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.queryAssignedElements.call(void 0, {selector:"img"})],M.prototype,"grImage",2);customElements.define("qti-graphic-associate-interaction",M);var ge=class extends L(_lit.LitElement,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return _lit.html` <slot></slot>
|
|
254
|
+
<slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),a=r.split(",").map(l=>parseInt(l));switch(o){case"circle":{let[l,c,p]=a;t.style.left=l-p+"px",t.style.top=c-p+"px",t.style.width=t.style.height=2*p+"px"}break;case"rect":{let[l,c,p,d]=a;t.style.left=l+"px",t.style.top=c+"px",t.style.width=p-l+"px",t.style.height=d-c+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};ge.styles=_lit.css`
|
|
255
|
+
:host {
|
|
256
|
+
display: inline-block;
|
|
257
|
+
position: relative;
|
|
258
|
+
}
|
|
259
|
+
slot[name='qti-gap-img'] {
|
|
260
|
+
display: flex;
|
|
261
|
+
gap: 1rem;
|
|
262
|
+
}
|
|
263
|
+
`;customElements.define("qti-graphic-gap-match-interaction",ge);var ve=class extends v{render(){return _lit.html`
|
|
264
|
+
<slot name="prompt"></slot>
|
|
265
|
+
<!-- slot for the prompt -->
|
|
266
|
+
<slot></slot>
|
|
267
|
+
<!-- slot for the image and hotspots -->
|
|
268
|
+
`}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(a=>a.getAttribute("identifier")===t),o=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(a=>a.order>0).length>=o){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(a=>!!a.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(a=>(a.order>a.order&&a.order--,a)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,o=r.getAttribute("coords"),a=r.getAttribute("shape"),l=o.split(",").map(c=>parseInt(c));B(a,l,t,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this.setHotspotOrder),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this.setHotspotOrder),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};ve.styles=[_lit.css`
|
|
269
|
+
slot:not([name='prompt']) {
|
|
270
|
+
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
271
|
+
display: block;
|
|
272
|
+
width: fit-content; /* hotspots not stretching further if image is at max size */
|
|
273
|
+
}
|
|
274
|
+
::slotted(img) {
|
|
275
|
+
/* image not selectable anymore */
|
|
276
|
+
pointer-events: none;
|
|
277
|
+
user-select: none;
|
|
278
|
+
}
|
|
279
|
+
`];customElements.define("qti-graphic-order-interaction",ve);var ye=class extends v{render(){return _lit.html`
|
|
280
|
+
<slot name="prompt"></slot>
|
|
281
|
+
<!-- slot for the prompt -->
|
|
282
|
+
<slot></slot>
|
|
283
|
+
<!-- slot for the image and hotspots -->
|
|
284
|
+
`}positionHotspotOnRegister(i){let e=this.querySelector("img"),t=i.target,r=t.getAttribute("coords"),o=t.getAttribute("shape"),a=r.split(",").map(l=>parseInt(l));B(o,a,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};ye.styles=[_lit.css`
|
|
285
|
+
slot:not([name='prompt']) {
|
|
286
|
+
position: relative; /* qti-hotspot-choice relative to the slot */
|
|
287
|
+
display: block;
|
|
288
|
+
width: fit-content; /* hotspots not stretching further if image is at max size */
|
|
289
|
+
}
|
|
290
|
+
::slotted(img) {
|
|
291
|
+
/* image not selectable anymore */
|
|
292
|
+
pointer-events: none;
|
|
293
|
+
user-select: none;
|
|
294
|
+
/* width:100%; */
|
|
295
|
+
}
|
|
296
|
+
`];customElements.define("qti-hotspot-interaction",ye);var pt=class extends _lit.LitElement{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return _lit.html`
|
|
297
|
+
<slot></slot>
|
|
298
|
+
<slot name="qti-simple-associable-choice"></slot>
|
|
299
|
+
`}};customElements.define("qti-simple-associable-choice",pt);var xe=class extends L(_lit.LitElement,"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")?_lit.html`<table>
|
|
300
|
+
<tr>
|
|
301
|
+
<td><slot name="prompt"></slot></td>
|
|
302
|
+
${this.cols.map((e,t)=>_lit.html`<th>${e.innerHTML}</th>`)}
|
|
303
|
+
</tr>
|
|
304
|
+
${this.rows.map(e=>_lit.html`<tr>
|
|
305
|
+
<td>${e.innerHTML}</td>
|
|
306
|
+
${this.cols.map((t,r)=>_lit.html`<td><input type="checkbox" /></td>`)}
|
|
307
|
+
</tr>`)}
|
|
308
|
+
</table>`:_lit.html`<slot name="prompt"></slot> <slot></slot>`}};xe.styles=[];customElements.define("qti-match-interaction",xe);var Ee=class extends m{constructor(){super()}reset(){}validate(){return!0}set response(e){}static get properties(){return _chunkHOQW4KDAcjs.b.call(void 0, _chunkHOQW4KDAcjs.a.call(void 0, {},m.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return _lit.html` <slot name="prompt"></slot>
|
|
309
|
+
<slot></slot>`}connectedCallback(){super.connectedCallback()}};Ee.styles=[_lit.css``];customElements.define("qti-media-interaction",Ee);var z=class extends L(_lit.LitElement,"qti-simple-choice",!0,"drop-list"){render(){return _lit.html` <slot name="prompt"> </slot>
|
|
310
|
+
<div part="container">
|
|
311
|
+
<slot part="drags"> </slot>
|
|
312
|
+
<div part="drops">
|
|
313
|
+
${Array.from(this.querySelectorAll("qti-simple-choice")).map((e,t)=>_lit.html`<drop-list part="drop-list" identifier="droplist${t}"></drop-list>`)}
|
|
314
|
+
</div>
|
|
315
|
+
</div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(e=>e.setAttribute("part","qti-simple-choice"))}};z.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],z.styles=[_lit.css`
|
|
316
|
+
[part='drags'] {
|
|
317
|
+
display: flex;
|
|
318
|
+
align-items: flex-start;
|
|
319
|
+
flex: 1;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
[part='drops'] {
|
|
323
|
+
flex: 1;
|
|
324
|
+
display: grid;
|
|
325
|
+
grid-auto-flow: column;
|
|
326
|
+
grid-auto-columns: 1fr;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
:host([orientation='horizontal']) [part='drags'] {
|
|
330
|
+
flex-direction: row;
|
|
331
|
+
}
|
|
332
|
+
:host([orientation='horizontal']) [part='drops'] {
|
|
333
|
+
grid-auto-flow: column;
|
|
334
|
+
}
|
|
335
|
+
:host([orientation='vertical']) [part='drags'] {
|
|
336
|
+
flex-direction: column;
|
|
337
|
+
}
|
|
338
|
+
:host([orientation='vertical']) [part='drops'] {
|
|
339
|
+
grid-auto-flow: row;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
[part='drop-list'] {
|
|
343
|
+
display: block;
|
|
344
|
+
flex: 1;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
[part='container'] {
|
|
348
|
+
display: flex;
|
|
349
|
+
gap: 0.5rem;
|
|
350
|
+
}
|
|
351
|
+
:host(.qti-choices-top) [part='container'] {
|
|
352
|
+
flex-direction: column;
|
|
353
|
+
}
|
|
354
|
+
:host(.qti-choices-bottom) [part='container'] {
|
|
355
|
+
flex-direction: column-reverse;
|
|
356
|
+
}
|
|
357
|
+
:host(.qti-choices-left) [part='container'] {
|
|
358
|
+
flex-direction: row;
|
|
359
|
+
}
|
|
360
|
+
:host(.qti-choices-right) [part='container'] {
|
|
361
|
+
flex-direction: row-reverse;
|
|
362
|
+
}
|
|
363
|
+
`],_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],z.prototype,"orientation",2);customElements.define("qti-order-interaction",z);var qe=class extends _lit.LitElement{render(){return _lit.html`<slot></slot>`}};qe.styles=[_lit.css`
|
|
364
|
+
:host {
|
|
365
|
+
display: block;
|
|
366
|
+
}
|
|
367
|
+
::slotted(img) {
|
|
368
|
+
position: absolute;
|
|
369
|
+
cursor: move;
|
|
370
|
+
user-select: none;
|
|
371
|
+
left: 50%;
|
|
372
|
+
transform: translateX(-50%);
|
|
373
|
+
}
|
|
374
|
+
`];customElements.define("qti-position-object-interaction",qe);var Ce=class extends _lit.LitElement{constructor(){super();this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}render(){return _lit.html`<slot></slot>`}dragElementHandler(e){e.preventDefault();let t=e.clientX-this.startX,r=e.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+t+"px",this.dragElement.style.top=this.dragElement.offsetTop+r+"px",this.startX=e.clientX,this.startY=e.clientY}connectedCallback(){super.connectedCallback(),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(e){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};Ce.styles=[_lit.css`
|
|
375
|
+
:host {
|
|
376
|
+
display: inline-block;
|
|
377
|
+
position: relative;
|
|
378
|
+
}
|
|
379
|
+
`];customElements.define("qti-position-object-stage",Ce);var _stylemapjs = require('lit/directives/style-map.js');var N=class extends m{constructor(){super(...arguments);this.maxChoices=0;this.minChoices=0;this._points=[]}render(){return _lit.html` <slot name="prompt"></slot>
|
|
380
|
+
<point-container>
|
|
381
|
+
${_repeatjs.repeat.call(void 0, this._points,e=>e,(e,t)=>_lit.html`
|
|
382
|
+
<button
|
|
383
|
+
part="point"
|
|
384
|
+
style=${_stylemapjs.styleMap.call(void 0, {position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
|
|
385
|
+
@click=${r=>{r.stopPropagation(),this._points=this._points.filter((o,a)=>a!==t),this.saveResponse(this._points)}}
|
|
386
|
+
></button>
|
|
387
|
+
`)}
|
|
388
|
+
<slot></slot>
|
|
389
|
+
</point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set response(e){this._points=Array.isArray(e)?e:[e]}connectedCallback(){super.connectedCallback(),this.querySelector("img").addEventListener("click",t=>{let r=t.offsetX,o=t.offsetY;this._points=[...this._points,r+" "+o],this.saveResponse(this._points)})}disconnectedCallback(){super.disconnectedCallback()}};N.styles=[_lit.css`
|
|
390
|
+
host() {
|
|
391
|
+
display: block;
|
|
392
|
+
}
|
|
393
|
+
point-container {
|
|
394
|
+
display: block;
|
|
395
|
+
position: relative;
|
|
396
|
+
}
|
|
397
|
+
`],_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"max-choices"})],N.prototype,"maxChoices",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"min-choices"})],N.prototype,"minChoices",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.state.call(void 0, )],N.prototype,"_points",2);customElements.define("qti-select-point-interaction",N);var x=class extends m{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,t)=>{};this._handleReadonlyChange=(e,t)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let t=parseInt(e);if(Number.isNaN(t)){console.error("QtiSliderInteraction: response is not a number");return}this.value=t}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),_lit.html`<slot name="prompt"></slot>
|
|
398
|
+
<div id="slider" part="slider">
|
|
399
|
+
${this.csLive.getPropertyValue("--show-bounds")=="true"?_lit.html`<div id="bounds" part="bounds">
|
|
400
|
+
<div>${this._min}</div>
|
|
401
|
+
<div>${this._max}</div>
|
|
402
|
+
</div>`:_lit.nothing}
|
|
403
|
+
${this.csLive.getPropertyValue("--show-ticks")=="true"?_lit.html`<div id="ticks" part="ticks"></div>`:_lit.nothing}
|
|
404
|
+
<div id="rail" part="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove}>
|
|
405
|
+
<div id="knob" part="knob">
|
|
406
|
+
${this.csLive.getPropertyValue("--show-value")=="true"?_lit.html`<div id="value" part="value">${this.value}</div>`:_lit.nothing}
|
|
407
|
+
</div>
|
|
408
|
+
</div>
|
|
409
|
+
</div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let t=l=>{let{x:c}=this.getPositionFromEvent(l),p=c-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),l.stopPropagation()},r=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r),this.saveResponse(this.value.toString())};document.addEventListener("touchmove",t),document.addEventListener("touchend",r);let{x:o}=this.getPositionFromEvent(e),a=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(a),e.stopPropagation()}_onMouseDown(e){let t=a=>{let l=a.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(l),a.preventDefault(),a.stopPropagation()},r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r);let o=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),e.preventDefault(),e.stopPropagation()}calculateValue(e){let t=this.min+(this.max-this.min)*e/this._rail.getBoundingClientRect().width,r=this.min+Math.round((t-this.min)/this._step)*this._step;this.value=r}getPositionFromEvent(e){let t;if(e.type=="touchstart"||e.type=="touchmove"||e.type=="touchend"||e.type=="touchcancel"){let r=typeof e.originalEvent=="undefined"?e:e.originalEvent,o=r.touches[0]||r.changedTouches[0];t={x:o.pageX,y:o.pageY}}else(e.type=="mousedown"||e.type=="mouseup"||e.type=="mousemove"||e.type=="mouseover"||e.type=="mouseout"||e.type=="mouseenter"||e.type=="mouseleave")&&(t={x:e.clientX,y:e.clientY});return t}};x.styles=[_lit.css``],_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.query.call(void 0, "#knob")],x.prototype,"_knob",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.query.call(void 0, "#rail")],x.prototype,"_rail",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number})],x.prototype,"value",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean,attribute:"step-label"})],x.prototype,"stepLabel",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Boolean})],x.prototype,"reverse",2),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"lower-bound"})],x.prototype,"min",1),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"upper-bound"})],x.prototype,"max",1),_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,attribute:"step"})],x.prototype,"step",1),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "disabled",{waitUntilFirstUpdate:!0})],x.prototype,"_handleDisabledChange",2),_chunkHOQW4KDAcjs.c.call(void 0, [_chunk3O4URV5Ucjs.a.call(void 0, "readonly",{waitUntilFirstUpdate:!0})],x.prototype,"_handleReadonlyChange",2);customElements.define("qti-slider-interaction",x);var ke=class extends _lit.LitElement{render(){return _lit.html`<button @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.closest("qti-assessment-item").processResponse()}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:String})],ke.prototype,"title",2);customElements.define("qti-end-attempt-interaction",ke);var Re=class extends _lit.LitElement{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return _lit.html` <slot name="qti-gap-img"></slot> `}};Re.styles=_lit.css`
|
|
410
|
+
:host {
|
|
411
|
+
position: absolute;
|
|
412
|
+
}
|
|
413
|
+
`;customElements.define("qti-associable-hotspot",Re);var Ae=class extends _lit.LitElement{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,reflect:!0})],Ae.prototype,"tabindex",2);customElements.define("qti-gap-img",Ae);var Te=class extends _lit.LitElement{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return _lit.html`<slot></slot>`}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,reflect:!0})],Te.prototype,"tabindex",2);customElements.define("qti-gap-text",Te);var we=class extends _lit.LitElement{constructor(){super(...arguments);this.tabindex=0}render(){return _lit.html` <slot name="qti-gap-text"></slot>`}};_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {type:Number,reflect:!0})],we.prototype,"tabindex",2);customElements.define("qti-gap",we);var Q=class extends y{};Q.styles=_lit.css`
|
|
414
|
+
:host {
|
|
415
|
+
position: absolute;
|
|
416
|
+
}
|
|
417
|
+
`,_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.property.call(void 0, {attribute:"aria-ordervalue",type:Number,reflect:!0})],Q.prototype,"order",2);customElements.define("qti-hotspot-choice",Q);var Le=class extends y{render(){return _lit.html`<div part="ch"><div part="cha"></div></div>
|
|
418
|
+
<slot></slot> `}};Le= exports.QtiHottext =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-hottext")],Le);var ut=class extends _lit.LitElement{};customElements.define("qti-inline-choice",ut);var Se=class extends y{render(){return _lit.html`<div part="ch"><div part="cha"></div></div>
|
|
419
|
+
<slot></slot> `}};Se= exports.QtiSimpleChoice =_chunkHOQW4KDAcjs.c.call(void 0, [_decoratorsjs.customElement.call(void 0, "qti-simple-choice")],Se);exports.Events = kt; exports.OutcomeVariable = O; exports.QtPrintedVariable = he; exports.QtiAnd = Ge; exports.QtiAssessmentItem = k; exports.QtiAssociableHotspot = Re; exports.QtiAssociateInteraction = J; exports.QtiBaseValue = ue; exports.QtiChoice = y; exports.QtiChoiceElementSelected = _t; exports.QtiChoiceInteraction = F; exports.QtiCompanionMaterialsInfo = te; exports.QtiContains = Ze; exports.QtiCorrect = Qe; exports.QtiEndAttemptInteraction = ke; exports.QtiEqual = pe; exports.QtiEqualRounded = de; exports.QtiExpression = u; exports.QtiExtendedTextInteraction = A; exports.QtiFeedbackBlock = Pe; exports.QtiFeedbackInline = oe; exports.QtiGap = we; exports.QtiGapImg = Ae; exports.QtiGapMatchInteraction = be; exports.QtiGapText = Te; exports.QtiGraphicAssociateInteraction = M; exports.QtiGraphicGapMatchInteraction = ge; exports.QtiGraphicOrderInteraction = ve; exports.QtiGt = ze; exports.QtiGte = je; exports.QtiHotspotChoice = Q; exports.QtiHotspotInteraction = ye; exports.QtiHottext = Le; exports.QtiHottextInteraction = Xe; exports.QtiInlineChoice = ut; exports.QtiInlineChoiceInteraction = le; exports.QtiInteractionChanged = gt; exports.QtiInteractionResponse = Ct; exports.QtiIsNull = et; exports.QtiLooseChoice = qt; exports.QtiLt = Ke; exports.QtiLte = We; exports.QtiMapResponse = me; exports.QtiMapping = Y; exports.QtiMatch = rt; exports.QtiMatchInteraction = xe; exports.QtiMediaInteraction = Ee; exports.QtiMember = nt; exports.QtiModalFeedback = $e; exports.QtiMultiple = st; exports.QtiNot = tt; exports.QtiOr = Je; exports.QtiOrderInteraction = z; exports.QtiOrdered = ot; exports.QtiOutcomeChanged = bt; exports.QtiOutcomeDeclaration = I; exports.QtiPortableCustomInteraction = lt; exports.QtiPositionObjectStage = Ce; exports.QtiProduct = ce; exports.QtiPrompt = De; exports.QtiRegisterChoice = xt; exports.QtiRegisterHotspot = Et; exports.QtiRegisterInteraction = yt; exports.QtiRegisterVariable = vt; exports.QtiResponseCondition = Ye; exports.QtiResponseDeclaration = P; exports.QtiResponseElse = W; exports.QtiResponseElseIf = Be; exports.QtiResponseIf = G; exports.QtiResponseProcessing = X; exports.QtiRule = S; exports.QtiSPositionObjectInteraction = qe; exports.QtiSelectPointInteraction = N; exports.QtiSetOutcomeValue = Ue; exports.QtiSimpleAssociableChoice = pt; exports.QtiSimpleChoice = Se; exports.QtiSliderInteraction = x; exports.QtiStylesheet = Ne; exports.QtiTextEntryInteraction = _; exports.QtiVariable = it; exports.ResponseVariable = H; exports.qtiContentBody = ie; exports.qtiRubricBlock = R;
|