@citolab/qti-components 7.27.2 → 7.27.4
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/cdn/index.global.js +1 -1
- package/cdn/index.js +230 -212
- package/custom-elements.json +4214 -1176
- package/dist/base.d.ts +3 -2
- package/dist/base.js +1 -1
- package/dist/{chunk-TZMDZQFG.js → chunk-3HJE3KRM.js} +469 -221
- package/dist/chunk-3HJE3KRM.js.map +1 -0
- package/dist/{chunk-75ME6QG5.js → chunk-424AWLRU.js} +18 -18
- package/dist/{chunk-QUWFDFGZ.js → chunk-FFESMKSD.js} +277 -21
- package/dist/chunk-FFESMKSD.js.map +1 -0
- package/dist/{chunk-G5ZUC3OT.js → chunk-LQZCSHN5.js} +23 -23
- package/dist/chunk-LQZCSHN5.js.map +1 -0
- package/dist/{chunk-DG5TP35K.js → chunk-N7S3GNUP.js} +5 -5
- package/dist/{chunk-DG5TP35K.js.map → chunk-N7S3GNUP.js.map} +1 -1
- package/dist/{chunk-RXRKP6P7.js → chunk-SX63OCDZ.js} +2 -2
- package/dist/{chunk-K7HR6ZAY.js → chunk-UKPCQKPF.js} +2 -2
- package/dist/chunk-UKPCQKPF.js.map +1 -0
- package/dist/{chunk-KY3II5OX.js → chunk-XYTJOQRZ.js} +240 -202
- package/dist/chunk-XYTJOQRZ.js.map +1 -0
- package/dist/{chunk-GG36UR7F.js → chunk-YLIYPNMK.js} +1004 -12
- package/dist/chunk-YLIYPNMK.js.map +1 -0
- package/dist/{chunk-TORB5UN2.js → chunk-Z2SUBRH5.js} +304 -243
- package/dist/chunk-Z2SUBRH5.js.map +1 -0
- package/dist/elements.d.ts +67 -2
- package/dist/elements.js +10 -6
- package/dist/index.d.ts +5 -4
- package/dist/index.js +55 -11
- package/dist/interactions.d.ts +8 -7
- package/dist/interactions.js +3 -3
- package/dist/item.js +4 -4
- package/dist/loader.d.ts +2 -1
- package/dist/loader.js +2 -2
- package/dist/processing.d.ts +374 -17
- package/dist/processing.js +42 -2
- package/dist/qti-components-jsx.d.ts +1183 -126
- package/dist/{qti-rule-base-DGhWN-as.d.ts → qti-condition-expression-B1BYmCcq.d.ts} +1 -14
- package/dist/{qti-feedback-BZjWNyxP.d.ts → qti-feedback-ChmXhZuf.d.ts} +1 -1
- package/dist/qti-rule-base-ajOnfGXY.d.ts +16 -0
- package/dist/test.d.ts +2 -1
- package/dist/test.js +6 -6
- package/dist/transformers.js +1 -1
- package/package.json +11 -11
- package/dist/chunk-G5ZUC3OT.js.map +0 -1
- package/dist/chunk-GG36UR7F.js.map +0 -1
- package/dist/chunk-K7HR6ZAY.js.map +0 -1
- package/dist/chunk-KY3II5OX.js.map +0 -1
- package/dist/chunk-QUWFDFGZ.js.map +0 -1
- package/dist/chunk-TORB5UN2.js.map +0 -1
- package/dist/chunk-TZMDZQFG.js.map +0 -1
- /package/dist/{chunk-75ME6QG5.js.map → chunk-424AWLRU.js.map} +0 -0
- /package/dist/{chunk-RXRKP6P7.js.map → chunk-SX63OCDZ.js.map} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
QtiModalFeedback
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FFESMKSD.js";
|
|
4
4
|
import {
|
|
5
5
|
item_default,
|
|
6
6
|
m
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LQZCSHN5.js";
|
|
8
8
|
import {
|
|
9
9
|
qtiTransformItem,
|
|
10
10
|
qtiTransformTest
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UKPCQKPF.js";
|
|
12
12
|
import {
|
|
13
|
-
|
|
13
|
+
A,
|
|
14
14
|
INITIAL_SESSION_CONTEXT,
|
|
15
15
|
INITIAL_TEST_CONTEXT,
|
|
16
|
-
|
|
16
|
+
T,
|
|
17
17
|
c,
|
|
18
18
|
computedContext,
|
|
19
19
|
configContext,
|
|
@@ -26,10 +26,8 @@ import {
|
|
|
26
26
|
sessionContext,
|
|
27
27
|
t,
|
|
28
28
|
testContext,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
x
|
|
32
|
-
} from "./chunk-TORB5UN2.js";
|
|
29
|
+
watch
|
|
30
|
+
} from "./chunk-Z2SUBRH5.js";
|
|
33
31
|
import {
|
|
34
32
|
__decorateClass,
|
|
35
33
|
__privateAdd,
|
|
@@ -94,15 +92,15 @@ var TestNavigationMixin = (superClass) => {
|
|
|
94
92
|
this.addEventListener("qti-assessment-item-connected", this._handleItemConnected.bind(this));
|
|
95
93
|
this.addEventListener("qti-assessment-stimulus-ref-connected", this._handleStimulusRefConnected.bind(this));
|
|
96
94
|
}
|
|
97
|
-
_handleTestConnected(
|
|
98
|
-
this._testElement =
|
|
95
|
+
_handleTestConnected(e3) {
|
|
96
|
+
this._testElement = e3.detail;
|
|
99
97
|
this._initializeNavigation();
|
|
100
98
|
}
|
|
101
99
|
/**
|
|
102
100
|
* Handle item connection events - track connected items and discover stimulus references
|
|
103
101
|
*/
|
|
104
|
-
_handleItemConnected(
|
|
105
|
-
const itemRef =
|
|
102
|
+
_handleItemConnected(e3) {
|
|
103
|
+
const itemRef = e3.detail;
|
|
106
104
|
this._loadingState.connectedItems++;
|
|
107
105
|
const stimulusRefs = itemRef.querySelectorAll("qti-assessment-stimulus-ref");
|
|
108
106
|
this._loadingState.expectedStimulus += stimulusRefs.length;
|
|
@@ -111,9 +109,9 @@ var TestNavigationMixin = (superClass) => {
|
|
|
111
109
|
/**
|
|
112
110
|
* Handle stimulus reference connection events with duplicate prevention
|
|
113
111
|
*/
|
|
114
|
-
async _handleStimulusRefConnected(
|
|
115
|
-
|
|
116
|
-
const { element, item } =
|
|
112
|
+
async _handleStimulusRefConnected(e3) {
|
|
113
|
+
e3.preventDefault();
|
|
114
|
+
const { element, item } = e3;
|
|
117
115
|
console.info("Stimulus ref connected:", {
|
|
118
116
|
identifier: element.identifier,
|
|
119
117
|
href: element.href,
|
|
@@ -294,9 +292,7 @@ var TestNavigationMixin = (superClass) => {
|
|
|
294
292
|
return;
|
|
295
293
|
}
|
|
296
294
|
let targets = [];
|
|
297
|
-
const specificTarget =
|
|
298
|
-
`qti-assessment-item[identifier="${item.identifier}"] [data-stimulus-idref="${element.identifier}"]`
|
|
299
|
-
);
|
|
295
|
+
const specificTarget = item.querySelector(`[data-stimulus-idref="${element.identifier}"]`);
|
|
300
296
|
if (specificTarget) {
|
|
301
297
|
targets.push(specificTarget);
|
|
302
298
|
console.info("Found specific target:", specificTarget);
|
|
@@ -357,7 +353,7 @@ var TestNavigationMixin = (superClass) => {
|
|
|
357
353
|
validResults.forEach(({ itemRef }) => {
|
|
358
354
|
const itemId = itemRef?.identifier;
|
|
359
355
|
if (!itemRef || !itemId) return;
|
|
360
|
-
const savedState = this.testContext.items.find((
|
|
356
|
+
const savedState = this.testContext.items.find((i5) => i5.identifier === itemId)?.state;
|
|
361
357
|
if (savedState === void 0) return;
|
|
362
358
|
itemRef.updateComplete.then(() => {
|
|
363
359
|
const assessmentItem = itemRef.assessmentItem;
|
|
@@ -511,16 +507,16 @@ var TestViewMixin = (superClass) => {
|
|
|
511
507
|
constructor(...args) {
|
|
512
508
|
super(...args);
|
|
513
509
|
this.sessionContext = { ...this.sessionContext, view: "candidate" };
|
|
514
|
-
this.addEventListener("on-test-switch-view", (
|
|
515
|
-
this.sessionContext = { ...this.sessionContext, view:
|
|
510
|
+
this.addEventListener("on-test-switch-view", (e3) => {
|
|
511
|
+
this.sessionContext = { ...this.sessionContext, view: e3.detail };
|
|
516
512
|
this._updateElementView();
|
|
517
513
|
});
|
|
518
514
|
this.addEventListener("qti-assessment-test-connected", () => {
|
|
519
515
|
this._updateElementView();
|
|
520
516
|
});
|
|
521
|
-
this.addEventListener("qti-assessment-item-connected", (
|
|
517
|
+
this.addEventListener("qti-assessment-item-connected", (e3) => {
|
|
522
518
|
this._updateElementView();
|
|
523
|
-
this._setCorrectResponseVisibility(
|
|
519
|
+
this._setCorrectResponseVisibility(e3.detail);
|
|
524
520
|
});
|
|
525
521
|
}
|
|
526
522
|
willUpdate(changedProperties) {
|
|
@@ -573,7 +569,7 @@ var TestBaseMixin = (superClass) => {
|
|
|
573
569
|
const context = assessmentItem._context;
|
|
574
570
|
const identifier = context.identifier;
|
|
575
571
|
const fullVariables = context.variables;
|
|
576
|
-
const itemContext = this.testContext.items.find((
|
|
572
|
+
const itemContext = this.testContext.items.find((i5) => i5?.identifier === identifier);
|
|
577
573
|
if (!itemContext) {
|
|
578
574
|
console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);
|
|
579
575
|
return;
|
|
@@ -583,7 +579,7 @@ var TestBaseMixin = (superClass) => {
|
|
|
583
579
|
} else {
|
|
584
580
|
const newVariables = [...assessmentItem.variables];
|
|
585
581
|
for (const variable of itemContext.variables) {
|
|
586
|
-
const currentVariable = newVariables.find((
|
|
582
|
+
const currentVariable = newVariables.find((v2) => v2.identifier === variable.identifier);
|
|
587
583
|
if (currentVariable) {
|
|
588
584
|
currentVariable.value = variable.value;
|
|
589
585
|
} else {
|
|
@@ -599,7 +595,7 @@ var TestBaseMixin = (superClass) => {
|
|
|
599
595
|
const itemContext = this.testContext.items.find((item) => item.identifier === itemRefID);
|
|
600
596
|
if (itemContext) {
|
|
601
597
|
itemContext.variables = itemContext.variables.map((variable) => {
|
|
602
|
-
const updatedVariable = variables.find((
|
|
598
|
+
const updatedVariable = variables.find((v2) => v2.identifier === variable.identifier);
|
|
603
599
|
return updatedVariable ? { ...variable, ...updatedVariable } : variable;
|
|
604
600
|
});
|
|
605
601
|
}
|
|
@@ -611,11 +607,11 @@ var TestBaseMixin = (superClass) => {
|
|
|
611
607
|
}
|
|
612
608
|
}
|
|
613
609
|
_initializeEventListeners() {
|
|
614
|
-
this.addEventListener("qti-assessment-test-connected", (
|
|
610
|
+
this.addEventListener("qti-assessment-test-connected", (e3) => {
|
|
615
611
|
this.testContext = INITIAL_TEST_CONTEXT;
|
|
616
612
|
this.sessionContext = INITIAL_SESSION_CONTEXT;
|
|
617
613
|
if (this.testContext && this.testContext.items.length > 0) return;
|
|
618
|
-
this._testElement =
|
|
614
|
+
this._testElement = e3.detail;
|
|
619
615
|
const items = Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map((itemRef) => {
|
|
620
616
|
return {
|
|
621
617
|
href: itemRef.href,
|
|
@@ -632,19 +628,19 @@ var TestBaseMixin = (superClass) => {
|
|
|
632
628
|
});
|
|
633
629
|
this.testContext = { ...this.testContext, items };
|
|
634
630
|
});
|
|
635
|
-
this.addEventListener("qti-assessment-item-connected", (
|
|
636
|
-
const assessmentItem =
|
|
631
|
+
this.addEventListener("qti-assessment-item-connected", (e3) => {
|
|
632
|
+
const assessmentItem = e3.detail;
|
|
637
633
|
const assessmentRefId = assessmentItem.closest("qti-assessment-item-ref")?.identifier;
|
|
638
634
|
if (assessmentRefId) {
|
|
639
635
|
assessmentItem.assessmentItemRefId = assessmentRefId;
|
|
640
636
|
}
|
|
641
|
-
this._updateItemInTestContext(
|
|
637
|
+
this._updateItemInTestContext(e3.detail);
|
|
642
638
|
});
|
|
643
|
-
this.addEventListener("qti-item-context-updated", (
|
|
639
|
+
this.addEventListener("qti-item-context-updated", (e3) => {
|
|
644
640
|
this._updateItemVariablesInTestContext(
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
641
|
+
e3.detail.itemContext.identifier,
|
|
642
|
+
e3.detail.itemContext.variables,
|
|
643
|
+
e3.detail.itemContext.state
|
|
648
644
|
);
|
|
649
645
|
});
|
|
650
646
|
}
|
|
@@ -660,7 +656,7 @@ var TestBaseMixin = (superClass) => {
|
|
|
660
656
|
...itemContext,
|
|
661
657
|
// Keep other properties of the item context
|
|
662
658
|
variables: variables.map((variable) => {
|
|
663
|
-
const matchingVariable = itemContext.variables.find((
|
|
659
|
+
const matchingVariable = itemContext.variables.find((v2) => v2.identifier === variable.identifier);
|
|
664
660
|
return matchingVariable ? { ...matchingVariable, ...variable } : variable;
|
|
665
661
|
}),
|
|
666
662
|
...state !== void 0 ? { state: state ? { ...state } : void 0 } : {}
|
|
@@ -690,19 +686,19 @@ var TestProcessingMixin = (superClass) => {
|
|
|
690
686
|
class TestProcessingElement extends superClass {
|
|
691
687
|
constructor(...args) {
|
|
692
688
|
super(...args);
|
|
693
|
-
this.addEventListener("qti-register-variable", (
|
|
689
|
+
this.addEventListener("qti-register-variable", (e3) => {
|
|
694
690
|
this.testContext = {
|
|
695
691
|
...this.testContext,
|
|
696
|
-
testOutcomeVariables: [...this.testContext.testOutcomeVariables || [],
|
|
692
|
+
testOutcomeVariables: [...this.testContext.testOutcomeVariables || [], e3.detail.variable]
|
|
697
693
|
};
|
|
698
|
-
|
|
694
|
+
e3.stopPropagation();
|
|
699
695
|
});
|
|
700
696
|
this.addEventListener(
|
|
701
697
|
"qti-set-outcome-value",
|
|
702
|
-
(
|
|
703
|
-
const { outcomeIdentifier, value } =
|
|
698
|
+
(e3) => {
|
|
699
|
+
const { outcomeIdentifier, value } = e3.detail;
|
|
704
700
|
this.updateOutcomeVariable(outcomeIdentifier, value);
|
|
705
|
-
|
|
701
|
+
e3.stopPropagation();
|
|
706
702
|
}
|
|
707
703
|
);
|
|
708
704
|
}
|
|
@@ -721,13 +717,13 @@ var TestProcessingMixin = (superClass) => {
|
|
|
721
717
|
}
|
|
722
718
|
this.testContext = {
|
|
723
719
|
...this.testContext,
|
|
724
|
-
testOutcomeVariables: this.testContext.testOutcomeVariables?.map((
|
|
725
|
-
if (
|
|
726
|
-
return
|
|
720
|
+
testOutcomeVariables: this.testContext.testOutcomeVariables?.map((v2) => {
|
|
721
|
+
if (v2.identifier !== identifier) {
|
|
722
|
+
return v2;
|
|
727
723
|
}
|
|
728
724
|
return {
|
|
729
|
-
...
|
|
730
|
-
value: outcomeVariable.cardinality === "single" ? value : [...
|
|
725
|
+
...v2,
|
|
726
|
+
value: outcomeVariable.cardinality === "single" ? value : [...v2.value, value]
|
|
731
727
|
};
|
|
732
728
|
})
|
|
733
729
|
};
|
|
@@ -736,7 +732,7 @@ var TestProcessingMixin = (superClass) => {
|
|
|
736
732
|
return this.getVariable(identifier);
|
|
737
733
|
}
|
|
738
734
|
getVariable(identifier) {
|
|
739
|
-
return this.testContext.testOutcomeVariables?.find((
|
|
735
|
+
return this.testContext.testOutcomeVariables?.find((v2) => v2.identifier === identifier) || null;
|
|
740
736
|
}
|
|
741
737
|
/* --------------------------- ENABLED WHEN UNIT TESTING OUTCOME PROCESSING ------------------------------------ */
|
|
742
738
|
}
|
|
@@ -757,7 +753,7 @@ var QtiTest = class extends TestNavigationMixin(TestViewMixin(TestProcessingMixi
|
|
|
757
753
|
this.dispatchEvent(new CustomEvent("qti-test-connected", { detail: this }));
|
|
758
754
|
}
|
|
759
755
|
render() {
|
|
760
|
-
return
|
|
756
|
+
return T`<slot></slot>`;
|
|
761
757
|
}
|
|
762
758
|
};
|
|
763
759
|
QtiTest = __decorateClass([
|
|
@@ -855,7 +851,7 @@ var QtiAssessmentSection = class extends i2 {
|
|
|
855
851
|
);
|
|
856
852
|
}
|
|
857
853
|
render() {
|
|
858
|
-
return
|
|
854
|
+
return T`<slot name="qti-rubric-block"></slot><slot></slot>`;
|
|
859
855
|
}
|
|
860
856
|
};
|
|
861
857
|
__decorateClass([
|
|
@@ -907,7 +903,7 @@ var QtiAssessmentTest = class extends i2 {
|
|
|
907
903
|
);
|
|
908
904
|
}
|
|
909
905
|
render() {
|
|
910
|
-
return
|
|
906
|
+
return T` <slot></slot>`;
|
|
911
907
|
}
|
|
912
908
|
};
|
|
913
909
|
_title = new WeakMap();
|
|
@@ -954,7 +950,7 @@ var QtiTestPart = class extends i2 {
|
|
|
954
950
|
);
|
|
955
951
|
}
|
|
956
952
|
render() {
|
|
957
|
-
return
|
|
953
|
+
return T` <slot></slot>`;
|
|
958
954
|
}
|
|
959
955
|
};
|
|
960
956
|
_title2 = new WeakMap();
|
|
@@ -980,7 +976,7 @@ if (!customElements.get("qti-test-part")) {
|
|
|
980
976
|
// ../qti-test/src/components/qti-test-feedback/qti-test-feedback.ts
|
|
981
977
|
var QtiTestFeedback = class extends QtiModalFeedback {
|
|
982
978
|
render() {
|
|
983
|
-
return
|
|
979
|
+
return T``;
|
|
984
980
|
}
|
|
985
981
|
};
|
|
986
982
|
QtiTestFeedback.styles = i`
|
|
@@ -1038,7 +1034,7 @@ var TestNavigation = class extends i2 {
|
|
|
1038
1034
|
this.addEventListener("test-update-outcome-variable", __privateMethod(this, _TestNavigation_instances, handleTestUpdateOutcomeVariable_fn).bind(this));
|
|
1039
1035
|
}
|
|
1040
1036
|
render() {
|
|
1041
|
-
return
|
|
1037
|
+
return T`<slot></slot>`;
|
|
1042
1038
|
}
|
|
1043
1039
|
/* PK: on every change of the candidate we will recomputed the computedContext */
|
|
1044
1040
|
willUpdate(_changedProperties) {
|
|
@@ -1056,20 +1052,20 @@ var TestNavigation = class extends i2 {
|
|
|
1056
1052
|
...section,
|
|
1057
1053
|
active: this._sessionContext?.navSectionId === section.identifier || false,
|
|
1058
1054
|
completed: section.items.every(
|
|
1059
|
-
(item) => this._testContext.items.find((
|
|
1055
|
+
(item) => this._testContext.items.find((i5) => i5.identifier === item.identifier)?.variables.find((v2) => v2.identifier === "completionStatus").value === "completed"
|
|
1060
1056
|
),
|
|
1061
1057
|
items: section.items.map((item) => {
|
|
1062
|
-
const itemContext = this._testContext?.items.find((
|
|
1058
|
+
const itemContext = this._testContext?.items.find((i5) => i5.identifier === item.identifier);
|
|
1063
1059
|
const computedItem = {
|
|
1064
1060
|
...item,
|
|
1065
1061
|
...itemContext,
|
|
1066
|
-
...this.initContext?.find((
|
|
1062
|
+
...this.initContext?.find((i5) => i5.identifier === item.identifier)
|
|
1067
1063
|
};
|
|
1068
1064
|
const rawscore = computedItem.variables?.find((vr) => vr.identifier == "SCORE")?.value;
|
|
1069
1065
|
const score = rawscore === void 0 || rawscore === null ? null : parseFloat(rawscore?.toString());
|
|
1070
|
-
const completionStatus = computedItem.variables?.find((
|
|
1071
|
-
const response = computedItem.variables?.find((
|
|
1072
|
-
const numAttempts = computedItem.variables?.find((
|
|
1066
|
+
const completionStatus = computedItem.variables?.find((v2) => v2.identifier === "completionStatus")?.value;
|
|
1067
|
+
const response = computedItem.variables?.find((v2) => v2.identifier === "RESPONSE")?.value || "";
|
|
1068
|
+
const numAttempts = computedItem.variables?.find((v2) => v2.identifier === "numAttempts")?.value || 0;
|
|
1073
1069
|
const active = this._sessionContext?.navItemRefId === computedItem.identifier || false;
|
|
1074
1070
|
const index = item.categories.includes(this.configContext?.infoItemCategory) ? null : itemIndex++;
|
|
1075
1071
|
const rawMaxScore = item.variables?.find((vr) => vr.identifier == "MAXSCORE")?.value;
|
|
@@ -1170,7 +1166,7 @@ handleInteractionChanged_fn = function(_event) {
|
|
|
1170
1166
|
const assessmentItem = _event.composedPath()[0].closest(
|
|
1171
1167
|
"qti-assessment-item"
|
|
1172
1168
|
);
|
|
1173
|
-
const scoreOutcomeIdentifier = assessmentItem.variables.find((
|
|
1169
|
+
const scoreOutcomeIdentifier = assessmentItem.variables.find((v2) => v2.identifier === "SCORE");
|
|
1174
1170
|
if (scoreOutcomeIdentifier && scoreOutcomeIdentifier.externalScored === null && assessmentItem.adaptive === "false") {
|
|
1175
1171
|
const reportValidityAfterScoring = this.configContext?.reportValidityAfterScoring === true ? true : false;
|
|
1176
1172
|
assessmentItem.processResponse(true, reportValidityAfterScoring);
|
|
@@ -1227,7 +1223,7 @@ handleTestConnected_fn = function(event) {
|
|
|
1227
1223
|
identifier: section.identifier,
|
|
1228
1224
|
title: section.title,
|
|
1229
1225
|
items: itemElements.map((item) => ({
|
|
1230
|
-
...this.initContext?.find((
|
|
1226
|
+
...this.initContext?.find((i5) => i5.identifier === item.identifier),
|
|
1231
1227
|
active: false,
|
|
1232
1228
|
identifier: item.identifier,
|
|
1233
1229
|
categories: item.category ? item.category?.split(" ") : [],
|
|
@@ -1298,11 +1294,11 @@ handleItemConnected_fn = function(event) {
|
|
|
1298
1294
|
const externalScored = scoreOutcome?.getAttribute("externalScored");
|
|
1299
1295
|
const responseDeclarations = itemElement.querySelectorAll("qti-response-declaration");
|
|
1300
1296
|
const containsCorrectResponse = Array.from(responseDeclarations).some(
|
|
1301
|
-
(
|
|
1297
|
+
(r4) => r4.querySelector("qti-correct-response")
|
|
1302
1298
|
);
|
|
1303
|
-
const containsMapping = Array.from(responseDeclarations).some((
|
|
1304
|
-
const mapping =
|
|
1305
|
-
const areaMapping =
|
|
1299
|
+
const containsMapping = Array.from(responseDeclarations).some((r4) => {
|
|
1300
|
+
const mapping = r4.querySelector("qti-mapping");
|
|
1301
|
+
const areaMapping = r4.querySelector("qti-area-mapping");
|
|
1306
1302
|
return mapping?.querySelector("qti-map-entry") || areaMapping?.querySelector("qti-area-map-entry");
|
|
1307
1303
|
});
|
|
1308
1304
|
const hasCorrectResponse = containsCorrectResponse || containsMapping;
|
|
@@ -1391,8 +1387,8 @@ var TestNext = class extends i2 {
|
|
|
1391
1387
|
__privateSet(this, _internals, this.attachInternals());
|
|
1392
1388
|
__privateGet(this, _internals).role = "button";
|
|
1393
1389
|
__privateGet(this, _internals).ariaLabel = "Next item";
|
|
1394
|
-
this.addEventListener("click", (
|
|
1395
|
-
|
|
1390
|
+
this.addEventListener("click", (e3) => {
|
|
1391
|
+
e3.preventDefault();
|
|
1396
1392
|
if (!this._internalDisabled) this._requestItem(this.sectionItems[this.itemIndex + 1].identifier);
|
|
1397
1393
|
});
|
|
1398
1394
|
}
|
|
@@ -1429,7 +1425,7 @@ var TestNext = class extends i2 {
|
|
|
1429
1425
|
);
|
|
1430
1426
|
}
|
|
1431
1427
|
render() {
|
|
1432
|
-
return
|
|
1428
|
+
return T`<slot></slot>`;
|
|
1433
1429
|
}
|
|
1434
1430
|
};
|
|
1435
1431
|
_internals = new WeakMap();
|
|
@@ -1459,8 +1455,8 @@ var TestPrev = class extends i2 {
|
|
|
1459
1455
|
constructor() {
|
|
1460
1456
|
super();
|
|
1461
1457
|
this._internalDisabled = true;
|
|
1462
|
-
this.addEventListener("click", (
|
|
1463
|
-
|
|
1458
|
+
this.addEventListener("click", (e3) => {
|
|
1459
|
+
e3.preventDefault();
|
|
1464
1460
|
if (!this._internalDisabled) this._requestItem(this.sectionItems[this.itemIndex - 1].identifier);
|
|
1465
1461
|
});
|
|
1466
1462
|
}
|
|
@@ -1493,7 +1489,7 @@ var TestPrev = class extends i2 {
|
|
|
1493
1489
|
);
|
|
1494
1490
|
}
|
|
1495
1491
|
render() {
|
|
1496
|
-
return
|
|
1492
|
+
return T`<slot></slot>`;
|
|
1497
1493
|
}
|
|
1498
1494
|
};
|
|
1499
1495
|
TestPrev.styles = i`
|
|
@@ -1543,18 +1539,18 @@ var TestView = class extends i2 {
|
|
|
1543
1539
|
);
|
|
1544
1540
|
}
|
|
1545
1541
|
render() {
|
|
1546
|
-
return
|
|
1542
|
+
return T`
|
|
1547
1543
|
<label part="label" for="viewSelect">${this.label}</label>
|
|
1548
1544
|
<select
|
|
1549
1545
|
part="select"
|
|
1550
1546
|
id="viewSelect"
|
|
1551
|
-
@change=${(
|
|
1552
|
-
const el =
|
|
1547
|
+
@change=${(e3) => {
|
|
1548
|
+
const el = e3.target;
|
|
1553
1549
|
this._switchView(el.value);
|
|
1554
1550
|
}}
|
|
1555
1551
|
>
|
|
1556
1552
|
${this._viewOptions.map(
|
|
1557
|
-
(
|
|
1553
|
+
(v2) => T`<option value="${v2}" ?selected=${v2 === this.sessionContext.view}>${v2}</option>`
|
|
1558
1554
|
)}
|
|
1559
1555
|
</select>
|
|
1560
1556
|
`;
|
|
@@ -1609,7 +1605,7 @@ var TestItemLink = class extends i2 {
|
|
|
1609
1605
|
);
|
|
1610
1606
|
}
|
|
1611
1607
|
render() {
|
|
1612
|
-
return
|
|
1608
|
+
return T` <slot></slot> `;
|
|
1613
1609
|
}
|
|
1614
1610
|
};
|
|
1615
1611
|
TestItemLink.styles = i`
|
|
@@ -1634,7 +1630,7 @@ var TestEndAttempt = class extends i2 {
|
|
|
1634
1630
|
this.addEventListener("click", () => this.dispatchEvent(new CustomEvent("test-end-attempt", { bubbles: true })));
|
|
1635
1631
|
}
|
|
1636
1632
|
render() {
|
|
1637
|
-
return
|
|
1633
|
+
return T` <slot></slot> `;
|
|
1638
1634
|
}
|
|
1639
1635
|
};
|
|
1640
1636
|
TestEndAttempt.styles = i`
|
|
@@ -1670,9 +1666,9 @@ var TestShowCorrectResponse = class extends i2 {
|
|
|
1670
1666
|
__privateSet(this, _previousActiveItem, activeItem);
|
|
1671
1667
|
}
|
|
1672
1668
|
if (activeItem) {
|
|
1673
|
-
const containsCorrectResponse = !!activeItem?.variables?.some((
|
|
1674
|
-
const containsMapping = !!activeItem?.variables?.some((
|
|
1675
|
-
return
|
|
1669
|
+
const containsCorrectResponse = !!activeItem?.variables?.some((v2) => v2["correctResponse"]);
|
|
1670
|
+
const containsMapping = !!activeItem?.variables?.some((v2) => {
|
|
1671
|
+
return v2["mapping"]?.mapEntries?.length > 0 || v2["areaMapping"]?.areaMapEntries?.length > 0;
|
|
1676
1672
|
});
|
|
1677
1673
|
this.disabled = !containsCorrectResponse && !containsMapping;
|
|
1678
1674
|
} else {
|
|
@@ -1680,7 +1676,7 @@ var TestShowCorrectResponse = class extends i2 {
|
|
|
1680
1676
|
}
|
|
1681
1677
|
}
|
|
1682
1678
|
render() {
|
|
1683
|
-
return
|
|
1679
|
+
return T` <div @click="${__privateMethod(this, _TestShowCorrectResponse_instances, toggleState_fn)}">${__privateMethod(this, _TestShowCorrectResponse_instances, getDisplayedText_fn).call(this)}</div> `;
|
|
1684
1680
|
}
|
|
1685
1681
|
};
|
|
1686
1682
|
_previousActiveItem = new WeakMap();
|
|
@@ -1728,6 +1724,251 @@ TestShowCorrectResponse = __decorateClass([
|
|
|
1728
1724
|
t("test-show-correct-response")
|
|
1729
1725
|
], TestShowCorrectResponse);
|
|
1730
1726
|
|
|
1727
|
+
// ../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/node/lit-html.js
|
|
1728
|
+
var t2 = globalThis;
|
|
1729
|
+
var i3 = t2.trustedTypes;
|
|
1730
|
+
var s = i3 ? i3.createPolicy("lit-html", { createHTML: (t3) => t3 }) : void 0;
|
|
1731
|
+
var e2 = "$lit$";
|
|
1732
|
+
var h = `lit$${Math.random().toFixed(9).slice(2)}$`;
|
|
1733
|
+
var o = "?" + h;
|
|
1734
|
+
var n2 = `<${o}>`;
|
|
1735
|
+
var r2 = void 0 === t2.document ? { createTreeWalker: () => ({}) } : document;
|
|
1736
|
+
var l = () => r2.createComment("");
|
|
1737
|
+
var c2 = (t3) => null === t3 || "object" != typeof t3 && "function" != typeof t3;
|
|
1738
|
+
var a = Array.isArray;
|
|
1739
|
+
var u = (t3) => a(t3) || "function" == typeof t3?.[Symbol.iterator];
|
|
1740
|
+
var d = "[ \n\f\r]";
|
|
1741
|
+
var f = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g;
|
|
1742
|
+
var v = /-->/g;
|
|
1743
|
+
var _ = />/g;
|
|
1744
|
+
var m2 = RegExp(`>|${d}(?:([^\\s"'>=/]+)(${d}*=${d}*(?:[^
|
|
1745
|
+
\f\r"'\`<>=]|("|')|))|$)`, "g");
|
|
1746
|
+
var p = /'/g;
|
|
1747
|
+
var g = /"/g;
|
|
1748
|
+
var $ = /^(?:script|style|textarea|title)$/i;
|
|
1749
|
+
var y = (t3) => (i5, ...s2) => ({ _$litType$: t3, strings: i5, values: s2 });
|
|
1750
|
+
var x = y(1);
|
|
1751
|
+
var T2 = y(2);
|
|
1752
|
+
var b = y(3);
|
|
1753
|
+
var w = /* @__PURE__ */ Symbol.for("lit-noChange");
|
|
1754
|
+
var E = /* @__PURE__ */ Symbol.for("lit-nothing");
|
|
1755
|
+
var A2 = /* @__PURE__ */ new WeakMap();
|
|
1756
|
+
var C = r2.createTreeWalker(r2, 129);
|
|
1757
|
+
function P(t3, i5) {
|
|
1758
|
+
if (!a(t3) || !t3.hasOwnProperty("raw")) throw Error("invalid template strings array");
|
|
1759
|
+
return void 0 !== s ? s.createHTML(i5) : i5;
|
|
1760
|
+
}
|
|
1761
|
+
var V = (t3, i5) => {
|
|
1762
|
+
const s2 = t3.length - 1, o2 = [];
|
|
1763
|
+
let r4, l2 = 2 === i5 ? "<svg>" : 3 === i5 ? "<math>" : "", c3 = f;
|
|
1764
|
+
for (let i6 = 0; i6 < s2; i6++) {
|
|
1765
|
+
const s3 = t3[i6];
|
|
1766
|
+
let a2, u2, d2 = -1, y2 = 0;
|
|
1767
|
+
for (; y2 < s3.length && (c3.lastIndex = y2, u2 = c3.exec(s3), null !== u2); ) y2 = c3.lastIndex, c3 === f ? "!--" === u2[1] ? c3 = v : void 0 !== u2[1] ? c3 = _ : void 0 !== u2[2] ? ($.test(u2[2]) && (r4 = RegExp("</" + u2[2], "g")), c3 = m2) : void 0 !== u2[3] && (c3 = m2) : c3 === m2 ? ">" === u2[0] ? (c3 = r4 ?? f, d2 = -1) : void 0 === u2[1] ? d2 = -2 : (d2 = c3.lastIndex - u2[2].length, a2 = u2[1], c3 = void 0 === u2[3] ? m2 : '"' === u2[3] ? g : p) : c3 === g || c3 === p ? c3 = m2 : c3 === v || c3 === _ ? c3 = f : (c3 = m2, r4 = void 0);
|
|
1768
|
+
const x2 = c3 === m2 && t3[i6 + 1].startsWith("/>") ? " " : "";
|
|
1769
|
+
l2 += c3 === f ? s3 + n2 : d2 >= 0 ? (o2.push(a2), s3.slice(0, d2) + e2 + s3.slice(d2) + h + x2) : s3 + h + (-2 === d2 ? i6 : x2);
|
|
1770
|
+
}
|
|
1771
|
+
return [P(t3, l2 + (t3[s2] || "<?>") + (2 === i5 ? "</svg>" : 3 === i5 ? "</math>" : "")), o2];
|
|
1772
|
+
};
|
|
1773
|
+
var N = class _N {
|
|
1774
|
+
constructor({ strings: t3, _$litType$: s2 }, n3) {
|
|
1775
|
+
let r4;
|
|
1776
|
+
this.parts = [];
|
|
1777
|
+
let c3 = 0, a2 = 0;
|
|
1778
|
+
const u2 = t3.length - 1, d2 = this.parts, [f2, v2] = V(t3, s2);
|
|
1779
|
+
if (this.el = _N.createElement(f2, n3), C.currentNode = this.el.content, 2 === s2 || 3 === s2) {
|
|
1780
|
+
const t4 = this.el.content.firstChild;
|
|
1781
|
+
t4.replaceWith(...t4.childNodes);
|
|
1782
|
+
}
|
|
1783
|
+
for (; null !== (r4 = C.nextNode()) && d2.length < u2; ) {
|
|
1784
|
+
if (1 === r4.nodeType) {
|
|
1785
|
+
if (r4.hasAttributes()) for (const t4 of r4.getAttributeNames()) if (t4.endsWith(e2)) {
|
|
1786
|
+
const i5 = v2[a2++], s3 = r4.getAttribute(t4).split(h), e3 = /([.?@])?(.*)/.exec(i5);
|
|
1787
|
+
d2.push({ type: 1, index: c3, name: e3[2], strings: s3, ctor: "." === e3[1] ? H : "?" === e3[1] ? I : "@" === e3[1] ? L : R }), r4.removeAttribute(t4);
|
|
1788
|
+
} else t4.startsWith(h) && (d2.push({ type: 6, index: c3 }), r4.removeAttribute(t4));
|
|
1789
|
+
if ($.test(r4.tagName)) {
|
|
1790
|
+
const t4 = r4.textContent.split(h), s3 = t4.length - 1;
|
|
1791
|
+
if (s3 > 0) {
|
|
1792
|
+
r4.textContent = i3 ? i3.emptyScript : "";
|
|
1793
|
+
for (let i5 = 0; i5 < s3; i5++) r4.append(t4[i5], l()), C.nextNode(), d2.push({ type: 2, index: ++c3 });
|
|
1794
|
+
r4.append(t4[s3], l());
|
|
1795
|
+
}
|
|
1796
|
+
}
|
|
1797
|
+
} else if (8 === r4.nodeType) if (r4.data === o) d2.push({ type: 2, index: c3 });
|
|
1798
|
+
else {
|
|
1799
|
+
let t4 = -1;
|
|
1800
|
+
for (; -1 !== (t4 = r4.data.indexOf(h, t4 + 1)); ) d2.push({ type: 7, index: c3 }), t4 += h.length - 1;
|
|
1801
|
+
}
|
|
1802
|
+
c3++;
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
static createElement(t3, i5) {
|
|
1806
|
+
const s2 = r2.createElement("template");
|
|
1807
|
+
return s2.innerHTML = t3, s2;
|
|
1808
|
+
}
|
|
1809
|
+
};
|
|
1810
|
+
function S(t3, i5, s2 = t3, e3) {
|
|
1811
|
+
if (i5 === w) return i5;
|
|
1812
|
+
let h2 = void 0 !== e3 ? s2._$Co?.[e3] : s2._$Cl;
|
|
1813
|
+
const o2 = c2(i5) ? void 0 : i5._$litDirective$;
|
|
1814
|
+
return h2?.constructor !== o2 && (h2?._$AO?.(false), void 0 === o2 ? h2 = void 0 : (h2 = new o2(t3), h2._$AT(t3, s2, e3)), void 0 !== e3 ? (s2._$Co ??= [])[e3] = h2 : s2._$Cl = h2), void 0 !== h2 && (i5 = S(t3, h2._$AS(t3, i5.values), h2, e3)), i5;
|
|
1815
|
+
}
|
|
1816
|
+
var M = class {
|
|
1817
|
+
constructor(t3, i5) {
|
|
1818
|
+
this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i5;
|
|
1819
|
+
}
|
|
1820
|
+
get parentNode() {
|
|
1821
|
+
return this._$AM.parentNode;
|
|
1822
|
+
}
|
|
1823
|
+
get _$AU() {
|
|
1824
|
+
return this._$AM._$AU;
|
|
1825
|
+
}
|
|
1826
|
+
u(t3) {
|
|
1827
|
+
const { el: { content: i5 }, parts: s2 } = this._$AD, e3 = (t3?.creationScope ?? r2).importNode(i5, true);
|
|
1828
|
+
C.currentNode = e3;
|
|
1829
|
+
let h2 = C.nextNode(), o2 = 0, n3 = 0, l2 = s2[0];
|
|
1830
|
+
for (; void 0 !== l2; ) {
|
|
1831
|
+
if (o2 === l2.index) {
|
|
1832
|
+
let i6;
|
|
1833
|
+
2 === l2.type ? i6 = new k(h2, h2.nextSibling, this, t3) : 1 === l2.type ? i6 = new l2.ctor(h2, l2.name, l2.strings, this, t3) : 6 === l2.type && (i6 = new z(h2, this, t3)), this._$AV.push(i6), l2 = s2[++n3];
|
|
1834
|
+
}
|
|
1835
|
+
o2 !== l2?.index && (h2 = C.nextNode(), o2++);
|
|
1836
|
+
}
|
|
1837
|
+
return C.currentNode = r2, e3;
|
|
1838
|
+
}
|
|
1839
|
+
p(t3) {
|
|
1840
|
+
let i5 = 0;
|
|
1841
|
+
for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i5), i5 += s2.strings.length - 2) : s2._$AI(t3[i5])), i5++;
|
|
1842
|
+
}
|
|
1843
|
+
};
|
|
1844
|
+
var k = class _k {
|
|
1845
|
+
get _$AU() {
|
|
1846
|
+
return this._$AM?._$AU ?? this._$Cv;
|
|
1847
|
+
}
|
|
1848
|
+
constructor(t3, i5, s2, e3) {
|
|
1849
|
+
this.type = 2, this._$AH = E, this._$AN = void 0, this._$AA = t3, this._$AB = i5, this._$AM = s2, this.options = e3, this._$Cv = e3?.isConnected ?? true;
|
|
1850
|
+
}
|
|
1851
|
+
get parentNode() {
|
|
1852
|
+
let t3 = this._$AA.parentNode;
|
|
1853
|
+
const i5 = this._$AM;
|
|
1854
|
+
return void 0 !== i5 && 11 === t3?.nodeType && (t3 = i5.parentNode), t3;
|
|
1855
|
+
}
|
|
1856
|
+
get startNode() {
|
|
1857
|
+
return this._$AA;
|
|
1858
|
+
}
|
|
1859
|
+
get endNode() {
|
|
1860
|
+
return this._$AB;
|
|
1861
|
+
}
|
|
1862
|
+
_$AI(t3, i5 = this) {
|
|
1863
|
+
t3 = S(this, t3, i5), c2(t3) ? t3 === E || null == t3 || "" === t3 ? (this._$AH !== E && this._$AR(), this._$AH = E) : t3 !== this._$AH && t3 !== w && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : u(t3) ? this.k(t3) : this._(t3);
|
|
1864
|
+
}
|
|
1865
|
+
O(t3) {
|
|
1866
|
+
return this._$AA.parentNode.insertBefore(t3, this._$AB);
|
|
1867
|
+
}
|
|
1868
|
+
T(t3) {
|
|
1869
|
+
this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));
|
|
1870
|
+
}
|
|
1871
|
+
_(t3) {
|
|
1872
|
+
this._$AH !== E && c2(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(r2.createTextNode(t3)), this._$AH = t3;
|
|
1873
|
+
}
|
|
1874
|
+
$(t3) {
|
|
1875
|
+
const { values: i5, _$litType$: s2 } = t3, e3 = "number" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = N.createElement(P(s2.h, s2.h[0]), this.options)), s2);
|
|
1876
|
+
if (this._$AH?._$AD === e3) this._$AH.p(i5);
|
|
1877
|
+
else {
|
|
1878
|
+
const t4 = new M(e3, this), s3 = t4.u(this.options);
|
|
1879
|
+
t4.p(i5), this.T(s3), this._$AH = t4;
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
_$AC(t3) {
|
|
1883
|
+
let i5 = A2.get(t3.strings);
|
|
1884
|
+
return void 0 === i5 && A2.set(t3.strings, i5 = new N(t3)), i5;
|
|
1885
|
+
}
|
|
1886
|
+
k(t3) {
|
|
1887
|
+
a(this._$AH) || (this._$AH = [], this._$AR());
|
|
1888
|
+
const i5 = this._$AH;
|
|
1889
|
+
let s2, e3 = 0;
|
|
1890
|
+
for (const h2 of t3) e3 === i5.length ? i5.push(s2 = new _k(this.O(l()), this.O(l()), this, this.options)) : s2 = i5[e3], s2._$AI(h2), e3++;
|
|
1891
|
+
e3 < i5.length && (this._$AR(s2 && s2._$AB.nextSibling, e3), i5.length = e3);
|
|
1892
|
+
}
|
|
1893
|
+
_$AR(t3 = this._$AA.nextSibling, i5) {
|
|
1894
|
+
for (this._$AP?.(false, true, i5); t3 !== this._$AB; ) {
|
|
1895
|
+
const i6 = t3.nextSibling;
|
|
1896
|
+
t3.remove(), t3 = i6;
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
setConnected(t3) {
|
|
1900
|
+
void 0 === this._$AM && (this._$Cv = t3, this._$AP?.(t3));
|
|
1901
|
+
}
|
|
1902
|
+
};
|
|
1903
|
+
var R = class {
|
|
1904
|
+
get tagName() {
|
|
1905
|
+
return this.element.tagName;
|
|
1906
|
+
}
|
|
1907
|
+
get _$AU() {
|
|
1908
|
+
return this._$AM._$AU;
|
|
1909
|
+
}
|
|
1910
|
+
constructor(t3, i5, s2, e3, h2) {
|
|
1911
|
+
this.type = 1, this._$AH = E, this._$AN = void 0, this.element = t3, this.name = i5, this._$AM = e3, this.options = h2, s2.length > 2 || "" !== s2[0] || "" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = E;
|
|
1912
|
+
}
|
|
1913
|
+
_$AI(t3, i5 = this, s2, e3) {
|
|
1914
|
+
const h2 = this.strings;
|
|
1915
|
+
let o2 = false;
|
|
1916
|
+
if (void 0 === h2) t3 = S(this, t3, i5, 0), o2 = !c2(t3) || t3 !== this._$AH && t3 !== w, o2 && (this._$AH = t3);
|
|
1917
|
+
else {
|
|
1918
|
+
const e4 = t3;
|
|
1919
|
+
let n3, r4;
|
|
1920
|
+
for (t3 = h2[0], n3 = 0; n3 < h2.length - 1; n3++) r4 = S(this, e4[s2 + n3], i5, n3), r4 === w && (r4 = this._$AH[n3]), o2 ||= !c2(r4) || r4 !== this._$AH[n3], r4 === E ? t3 = E : t3 !== E && (t3 += (r4 ?? "") + h2[n3 + 1]), this._$AH[n3] = r4;
|
|
1921
|
+
}
|
|
1922
|
+
o2 && !e3 && this.j(t3);
|
|
1923
|
+
}
|
|
1924
|
+
j(t3) {
|
|
1925
|
+
t3 === E ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? "");
|
|
1926
|
+
}
|
|
1927
|
+
};
|
|
1928
|
+
var H = class extends R {
|
|
1929
|
+
constructor() {
|
|
1930
|
+
super(...arguments), this.type = 3;
|
|
1931
|
+
}
|
|
1932
|
+
j(t3) {
|
|
1933
|
+
this.element[this.name] = t3 === E ? void 0 : t3;
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
var I = class extends R {
|
|
1937
|
+
constructor() {
|
|
1938
|
+
super(...arguments), this.type = 4;
|
|
1939
|
+
}
|
|
1940
|
+
j(t3) {
|
|
1941
|
+
this.element.toggleAttribute(this.name, !!t3 && t3 !== E);
|
|
1942
|
+
}
|
|
1943
|
+
};
|
|
1944
|
+
var L = class extends R {
|
|
1945
|
+
constructor(t3, i5, s2, e3, h2) {
|
|
1946
|
+
super(t3, i5, s2, e3, h2), this.type = 5;
|
|
1947
|
+
}
|
|
1948
|
+
_$AI(t3, i5 = this) {
|
|
1949
|
+
if ((t3 = S(this, t3, i5, 0) ?? E) === w) return;
|
|
1950
|
+
const s2 = this._$AH, e3 = t3 === E && s2 !== E || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h2 = t3 !== E && (s2 === E || e3);
|
|
1951
|
+
e3 && this.element.removeEventListener(this.name, this, s2), h2 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;
|
|
1952
|
+
}
|
|
1953
|
+
handleEvent(t3) {
|
|
1954
|
+
"function" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);
|
|
1955
|
+
}
|
|
1956
|
+
};
|
|
1957
|
+
var z = class {
|
|
1958
|
+
constructor(t3, i5, s2) {
|
|
1959
|
+
this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i5, this.options = s2;
|
|
1960
|
+
}
|
|
1961
|
+
get _$AU() {
|
|
1962
|
+
return this._$AM._$AU;
|
|
1963
|
+
}
|
|
1964
|
+
_$AI(t3) {
|
|
1965
|
+
S(this, t3);
|
|
1966
|
+
}
|
|
1967
|
+
};
|
|
1968
|
+
var W = { M: e2, P: h, A: o, C: 1, L: V, R: M, D: u, V: S, I: k, H: R, N: I, U: L, B: H, F: z };
|
|
1969
|
+
var Z = t2.litHtmlPolyfillSupport;
|
|
1970
|
+
Z?.(N, k), (t2.litHtmlVersions ??= []).push("3.3.1");
|
|
1971
|
+
|
|
1731
1972
|
// ../../node_modules/.pnpm/@heximal+expressions@0.1.5/node_modules/@heximal/expressions/lib/constants.js
|
|
1732
1973
|
var KEYWORDS = ["this"];
|
|
1733
1974
|
var UNARY_OPERATORS = ["+", "-", "!"];
|
|
@@ -1892,11 +2133,11 @@ var Tokenizer = class {
|
|
|
1892
2133
|
}
|
|
1893
2134
|
}
|
|
1894
2135
|
#getValue(lookahead = 0) {
|
|
1895
|
-
const
|
|
2136
|
+
const v2 = this.#input.substring(this.#tokenStart, this.#index + lookahead);
|
|
1896
2137
|
if (lookahead === 0) {
|
|
1897
2138
|
this.#clearValue();
|
|
1898
2139
|
}
|
|
1899
|
-
return
|
|
2140
|
+
return v2;
|
|
1900
2141
|
}
|
|
1901
2142
|
#clearValue() {
|
|
1902
2143
|
this.#tokenStart = this.#index;
|
|
@@ -1915,9 +2156,9 @@ var Tokenizer = class {
|
|
|
1915
2156
|
}
|
|
1916
2157
|
this.#advance();
|
|
1917
2158
|
}
|
|
1918
|
-
const
|
|
2159
|
+
const t3 = token(Kind.STRING, escapeString(this.#getValue()));
|
|
1919
2160
|
this.#advance();
|
|
1920
|
-
return
|
|
2161
|
+
return t3;
|
|
1921
2162
|
}
|
|
1922
2163
|
#tokenizeIdentOrKeyword() {
|
|
1923
2164
|
do {
|
|
@@ -1977,9 +2218,9 @@ var Tokenizer = class {
|
|
|
1977
2218
|
}
|
|
1978
2219
|
#tokenizeGrouper() {
|
|
1979
2220
|
const value = String.fromCharCode(this.#next);
|
|
1980
|
-
const
|
|
2221
|
+
const t3 = token(Kind.GROUPER, value, PRECEDENCE[value]);
|
|
1981
2222
|
this.#advance(true);
|
|
1982
|
-
return
|
|
2223
|
+
return t3;
|
|
1983
2224
|
}
|
|
1984
2225
|
};
|
|
1985
2226
|
|
|
@@ -2003,10 +2244,10 @@ var Parser = class {
|
|
|
2003
2244
|
if (!this._matches(kind, value)) {
|
|
2004
2245
|
throw new Error(`Expected kind ${kind} (${value}), was ${this.#token?.kind} (${this.#token?.value})`);
|
|
2005
2246
|
}
|
|
2006
|
-
const
|
|
2007
|
-
this.#token =
|
|
2008
|
-
this.#kind =
|
|
2009
|
-
this.#value =
|
|
2247
|
+
const t3 = this.#tokenizer.nextToken();
|
|
2248
|
+
this.#token = t3;
|
|
2249
|
+
this.#kind = t3?.kind;
|
|
2250
|
+
this.#value = t3?.value;
|
|
2010
2251
|
}
|
|
2011
2252
|
_matches(kind, value) {
|
|
2012
2253
|
return !(kind && this.#kind !== kind || value && this.#value !== value);
|
|
@@ -2212,7 +2453,7 @@ var Parser = class {
|
|
|
2212
2453
|
if (this._matches(Kind.ARROW)) {
|
|
2213
2454
|
this.#advance();
|
|
2214
2455
|
const body = this.#parseExpression();
|
|
2215
|
-
const params = expressions?.map((
|
|
2456
|
+
const params = expressions?.map((e3) => e3.value) ?? [];
|
|
2216
2457
|
return this.#ast.arrowFunction(params, body);
|
|
2217
2458
|
} else {
|
|
2218
2459
|
return this.#ast.paren(expressions[0]);
|
|
@@ -2238,29 +2479,29 @@ var Parser = class {
|
|
|
2238
2479
|
// ../../node_modules/.pnpm/@heximal+expressions@0.1.5/node_modules/@heximal/expressions/lib/eval.js
|
|
2239
2480
|
var { hasOwn, fromEntries } = Object;
|
|
2240
2481
|
var _BINARY_OPERATORS = {
|
|
2241
|
-
"+": (
|
|
2242
|
-
"-": (
|
|
2243
|
-
"*": (
|
|
2244
|
-
"/": (
|
|
2245
|
-
"%": (
|
|
2246
|
-
"==": (
|
|
2247
|
-
"!=": (
|
|
2248
|
-
"===": (
|
|
2249
|
-
"!==": (
|
|
2250
|
-
">": (
|
|
2251
|
-
">=": (
|
|
2252
|
-
"<": (
|
|
2253
|
-
"<=": (
|
|
2254
|
-
"||": (
|
|
2255
|
-
"&&": (
|
|
2256
|
-
"??": (
|
|
2257
|
-
"|": (
|
|
2258
|
-
"|>": (
|
|
2482
|
+
"+": (a2, b2) => a2 + b2,
|
|
2483
|
+
"-": (a2, b2) => a2 - b2,
|
|
2484
|
+
"*": (a2, b2) => a2 * b2,
|
|
2485
|
+
"/": (a2, b2) => a2 / b2,
|
|
2486
|
+
"%": (a2, b2) => a2 % b2,
|
|
2487
|
+
"==": (a2, b2) => a2 == b2,
|
|
2488
|
+
"!=": (a2, b2) => a2 != b2,
|
|
2489
|
+
"===": (a2, b2) => a2 === b2,
|
|
2490
|
+
"!==": (a2, b2) => a2 !== b2,
|
|
2491
|
+
">": (a2, b2) => a2 > b2,
|
|
2492
|
+
">=": (a2, b2) => a2 >= b2,
|
|
2493
|
+
"<": (a2, b2) => a2 < b2,
|
|
2494
|
+
"<=": (a2, b2) => a2 <= b2,
|
|
2495
|
+
"||": (a2, b2) => a2 || b2,
|
|
2496
|
+
"&&": (a2, b2) => a2 && b2,
|
|
2497
|
+
"??": (a2, b2) => a2 ?? b2,
|
|
2498
|
+
"|": (a2, f2) => f2(a2),
|
|
2499
|
+
"|>": (a2, f2) => f2(a2)
|
|
2259
2500
|
};
|
|
2260
2501
|
var _UNARY_OPERATORS = {
|
|
2261
|
-
"+": (
|
|
2262
|
-
"-": (
|
|
2263
|
-
"!": (
|
|
2502
|
+
"+": (a2) => a2,
|
|
2503
|
+
"-": (a2) => -a2,
|
|
2504
|
+
"!": (a2) => !a2
|
|
2264
2505
|
};
|
|
2265
2506
|
var EvalAstFactory = class {
|
|
2266
2507
|
empty() {
|
|
@@ -2275,10 +2516,10 @@ var EvalAstFactory = class {
|
|
|
2275
2516
|
};
|
|
2276
2517
|
}
|
|
2277
2518
|
// TODO(justinfagnani): just use a JS literal?
|
|
2278
|
-
literal(
|
|
2519
|
+
literal(v2) {
|
|
2279
2520
|
return {
|
|
2280
2521
|
type: "Literal",
|
|
2281
|
-
value:
|
|
2522
|
+
value: v2,
|
|
2282
2523
|
evaluate(_scope) {
|
|
2283
2524
|
return this.value;
|
|
2284
2525
|
},
|
|
@@ -2287,10 +2528,10 @@ var EvalAstFactory = class {
|
|
|
2287
2528
|
}
|
|
2288
2529
|
};
|
|
2289
2530
|
}
|
|
2290
|
-
id(
|
|
2531
|
+
id(v2) {
|
|
2291
2532
|
return {
|
|
2292
2533
|
type: "ID",
|
|
2293
|
-
value:
|
|
2534
|
+
value: v2,
|
|
2294
2535
|
evaluate(scope) {
|
|
2295
2536
|
if (this.value === "this")
|
|
2296
2537
|
return scope;
|
|
@@ -2303,26 +2544,26 @@ var EvalAstFactory = class {
|
|
|
2303
2544
|
};
|
|
2304
2545
|
}
|
|
2305
2546
|
unary(op, expr) {
|
|
2306
|
-
const
|
|
2547
|
+
const f2 = _UNARY_OPERATORS[op];
|
|
2307
2548
|
return {
|
|
2308
2549
|
type: "Unary",
|
|
2309
2550
|
operator: op,
|
|
2310
2551
|
child: expr,
|
|
2311
2552
|
evaluate(scope) {
|
|
2312
|
-
return
|
|
2553
|
+
return f2(this.child.evaluate(scope));
|
|
2313
2554
|
},
|
|
2314
2555
|
getIds(idents) {
|
|
2315
2556
|
return this.child.getIds(idents);
|
|
2316
2557
|
}
|
|
2317
2558
|
};
|
|
2318
2559
|
}
|
|
2319
|
-
binary(
|
|
2320
|
-
const
|
|
2560
|
+
binary(l2, op, r4) {
|
|
2561
|
+
const f2 = _BINARY_OPERATORS[op];
|
|
2321
2562
|
return {
|
|
2322
2563
|
type: "Binary",
|
|
2323
2564
|
operator: op,
|
|
2324
|
-
left:
|
|
2325
|
-
right:
|
|
2565
|
+
left: l2,
|
|
2566
|
+
right: r4,
|
|
2326
2567
|
evaluate(scope) {
|
|
2327
2568
|
if (this.operator === "=") {
|
|
2328
2569
|
if (this.left.type !== "ID" && this.left.type !== "Getter" && this.left.type !== "Index") {
|
|
@@ -2343,7 +2584,7 @@ var EvalAstFactory = class {
|
|
|
2343
2584
|
}
|
|
2344
2585
|
return receiver === void 0 ? void 0 : receiver[property] = value;
|
|
2345
2586
|
}
|
|
2346
|
-
return
|
|
2587
|
+
return f2(this.left.evaluate(scope), this.right.evaluate(scope));
|
|
2347
2588
|
},
|
|
2348
2589
|
getIds(idents) {
|
|
2349
2590
|
this.left.getIds(idents);
|
|
@@ -2352,11 +2593,11 @@ var EvalAstFactory = class {
|
|
|
2352
2593
|
}
|
|
2353
2594
|
};
|
|
2354
2595
|
}
|
|
2355
|
-
getter(
|
|
2596
|
+
getter(g2, n3) {
|
|
2356
2597
|
return {
|
|
2357
2598
|
type: "Getter",
|
|
2358
|
-
receiver:
|
|
2359
|
-
name:
|
|
2599
|
+
receiver: g2,
|
|
2600
|
+
name: n3,
|
|
2360
2601
|
evaluate(scope) {
|
|
2361
2602
|
return this.receiver.evaluate(scope)?.[this.name];
|
|
2362
2603
|
},
|
|
@@ -2378,26 +2619,26 @@ var EvalAstFactory = class {
|
|
|
2378
2619
|
evaluate(scope) {
|
|
2379
2620
|
const receiver2 = this.receiver.evaluate(scope);
|
|
2380
2621
|
const _this = this.method ? receiver2 : scope?.["this"] ?? scope;
|
|
2381
|
-
const
|
|
2622
|
+
const f2 = this.method ? receiver2?.[method] : receiver2;
|
|
2382
2623
|
const args2 = this.arguments ?? [];
|
|
2383
|
-
const argValues = args2.map((
|
|
2384
|
-
return
|
|
2624
|
+
const argValues = args2.map((a2) => a2?.evaluate(scope));
|
|
2625
|
+
return f2?.apply?.(_this, argValues);
|
|
2385
2626
|
},
|
|
2386
2627
|
getIds(idents) {
|
|
2387
2628
|
this.receiver.getIds(idents);
|
|
2388
|
-
this.arguments?.forEach((
|
|
2629
|
+
this.arguments?.forEach((a2) => a2?.getIds(idents));
|
|
2389
2630
|
return idents;
|
|
2390
2631
|
}
|
|
2391
2632
|
};
|
|
2392
2633
|
}
|
|
2393
|
-
paren(
|
|
2394
|
-
return
|
|
2634
|
+
paren(e3) {
|
|
2635
|
+
return e3;
|
|
2395
2636
|
}
|
|
2396
|
-
index(
|
|
2637
|
+
index(e3, a2) {
|
|
2397
2638
|
return {
|
|
2398
2639
|
type: "Index",
|
|
2399
|
-
receiver:
|
|
2400
|
-
argument:
|
|
2640
|
+
receiver: e3,
|
|
2641
|
+
argument: a2,
|
|
2401
2642
|
evaluate(scope) {
|
|
2402
2643
|
return this.receiver.evaluate(scope)?.[this.argument.evaluate(scope)];
|
|
2403
2644
|
},
|
|
@@ -2407,15 +2648,15 @@ var EvalAstFactory = class {
|
|
|
2407
2648
|
}
|
|
2408
2649
|
};
|
|
2409
2650
|
}
|
|
2410
|
-
ternary(
|
|
2651
|
+
ternary(c3, t3, f2) {
|
|
2411
2652
|
return {
|
|
2412
2653
|
type: "Ternary",
|
|
2413
|
-
condition:
|
|
2414
|
-
trueExpr:
|
|
2415
|
-
falseExpr:
|
|
2654
|
+
condition: c3,
|
|
2655
|
+
trueExpr: t3,
|
|
2656
|
+
falseExpr: f2,
|
|
2416
2657
|
evaluate(scope) {
|
|
2417
|
-
const
|
|
2418
|
-
if (
|
|
2658
|
+
const c4 = this.condition.evaluate(scope);
|
|
2659
|
+
if (c4) {
|
|
2419
2660
|
return this.trueExpr.evaluate(scope);
|
|
2420
2661
|
} else {
|
|
2421
2662
|
return this.falseExpr.evaluate(scope);
|
|
@@ -2459,15 +2700,15 @@ var EvalAstFactory = class {
|
|
|
2459
2700
|
};
|
|
2460
2701
|
}
|
|
2461
2702
|
// TODO(justinfagnani): if the list is deeply literal
|
|
2462
|
-
list(
|
|
2703
|
+
list(l2) {
|
|
2463
2704
|
return {
|
|
2464
2705
|
type: "List",
|
|
2465
|
-
items:
|
|
2706
|
+
items: l2,
|
|
2466
2707
|
evaluate(scope) {
|
|
2467
|
-
return this.items?.map((
|
|
2708
|
+
return this.items?.map((a2) => a2?.evaluate(scope));
|
|
2468
2709
|
},
|
|
2469
2710
|
getIds(idents) {
|
|
2470
|
-
this.items?.forEach((
|
|
2711
|
+
this.items?.forEach((i5) => i5?.getIds(idents));
|
|
2471
2712
|
return idents;
|
|
2472
2713
|
}
|
|
2473
2714
|
};
|
|
@@ -2481,7 +2722,7 @@ var EvalAstFactory = class {
|
|
|
2481
2722
|
const params2 = this.params;
|
|
2482
2723
|
const body2 = this.body;
|
|
2483
2724
|
return function(...args) {
|
|
2484
|
-
const paramsObj = fromEntries(params2.map((
|
|
2725
|
+
const paramsObj = fromEntries(params2.map((p2, i5) => [p2, args[i5]]));
|
|
2485
2726
|
const newScope = new Proxy(scope ?? {}, {
|
|
2486
2727
|
set(target, prop, value) {
|
|
2487
2728
|
if (hasOwn(paramsObj, prop)) {
|
|
@@ -2507,40 +2748,40 @@ var EvalAstFactory = class {
|
|
|
2507
2748
|
};
|
|
2508
2749
|
|
|
2509
2750
|
// ../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/node/private-ssr-support.js
|
|
2510
|
-
var
|
|
2511
|
-
var
|
|
2512
|
-
_$AS(
|
|
2513
|
-
return
|
|
2514
|
-
}
|
|
2515
|
-
}, patchDirectiveResolve: (
|
|
2516
|
-
if (
|
|
2517
|
-
|
|
2518
|
-
for (let
|
|
2751
|
+
var r3 = null;
|
|
2752
|
+
var i4 = { boundAttributeSuffix: W.M, marker: W.P, markerMatch: W.A, HTML_RESULT: W.C, getTemplateHtml: W.L, overrideDirectiveResolve: (e3, t3) => class extends e3 {
|
|
2753
|
+
_$AS(e4, r4) {
|
|
2754
|
+
return t3(this, r4);
|
|
2755
|
+
}
|
|
2756
|
+
}, patchDirectiveResolve: (e3, t3) => {
|
|
2757
|
+
if (e3.prototype._$AS.name !== t3.name) {
|
|
2758
|
+
r3 ??= e3.prototype._$AS.name;
|
|
2759
|
+
for (let i5 = e3.prototype; i5 !== Object.prototype; i5 = Object.getPrototypeOf(i5)) if (i5.hasOwnProperty(r3)) return void (i5[r3] = t3);
|
|
2519
2760
|
throw Error("Internal error: It is possible that both dev mode and production mode Lit was mixed together during SSR. Please comment on the issue: https://github.com/lit/lit/issues/4527");
|
|
2520
2761
|
}
|
|
2521
|
-
}, setDirectiveClass(
|
|
2522
|
-
|
|
2523
|
-
}, getAttributePartCommittedValue: (
|
|
2524
|
-
let
|
|
2525
|
-
return
|
|
2526
|
-
}, connectedDisconnectable: (
|
|
2762
|
+
}, setDirectiveClass(e3, t3) {
|
|
2763
|
+
e3._$litDirective$ = t3;
|
|
2764
|
+
}, getAttributePartCommittedValue: (e3, r4, i5) => {
|
|
2765
|
+
let o2 = w;
|
|
2766
|
+
return e3.j = (e4) => o2 = e4, e3._$AI(r4, e3, i5), o2;
|
|
2767
|
+
}, connectedDisconnectable: (e3) => ({ ...e3, _$AU: true }), resolveDirective: W.V, AttributePart: W.H, PropertyPart: W.B, BooleanAttributePart: W.N, EventPart: W.U, ElementPart: W.F, TemplateInstance: W.R, isIterable: W.D, ChildPart: W.I };
|
|
2527
2768
|
|
|
2528
2769
|
// ../../node_modules/.pnpm/@heximal+templates@0.1.5/node_modules/@heximal/templates/index.js
|
|
2529
|
-
var { AttributePart, PropertyPart, BooleanAttributePart, EventPart } =
|
|
2770
|
+
var { AttributePart, PropertyPart, BooleanAttributePart, EventPart } = i4;
|
|
2530
2771
|
var astFactory = new EvalAstFactory();
|
|
2531
2772
|
var expressionCache = /* @__PURE__ */ new Map();
|
|
2532
|
-
var toCamelCase = (
|
|
2533
|
-
var getSingleValue = (
|
|
2534
|
-
let ast = expressionCache.get(
|
|
2773
|
+
var toCamelCase = (s2) => s2.replace(/-(-|\w)/g, (_2, p1) => p1.toUpperCase());
|
|
2774
|
+
var getSingleValue = (s2, model) => {
|
|
2775
|
+
let ast = expressionCache.get(s2);
|
|
2535
2776
|
if (ast === void 0) {
|
|
2536
|
-
if (expressionCache.has(
|
|
2777
|
+
if (expressionCache.has(s2)) {
|
|
2537
2778
|
return void 0;
|
|
2538
2779
|
}
|
|
2539
|
-
|
|
2540
|
-
if (
|
|
2541
|
-
const expression =
|
|
2780
|
+
s2 = s2.trim();
|
|
2781
|
+
if (s2.startsWith("{{") && s2.endsWith("}}")) {
|
|
2782
|
+
const expression = s2.substring(2, s2.length - 2).trim();
|
|
2542
2783
|
ast = new Parser(expression, astFactory).parse();
|
|
2543
|
-
expressionCache.set(
|
|
2784
|
+
expressionCache.set(s2, ast);
|
|
2544
2785
|
}
|
|
2545
2786
|
}
|
|
2546
2787
|
return ast?.evaluate(model);
|
|
@@ -2553,8 +2794,8 @@ var ifHandler = (template, model, handlers, renderers) => {
|
|
|
2553
2794
|
return void 0;
|
|
2554
2795
|
};
|
|
2555
2796
|
var bindingRegex = /(?<!\\){{(.*?)(?:(?<!\\)}})/g;
|
|
2556
|
-
var hasEscapedBindingMarkers = (
|
|
2557
|
-
var unescapeBindingMarkers = (
|
|
2797
|
+
var hasEscapedBindingMarkers = (s2) => /(?:\\{{)|(?:\\}})/g.test(s2);
|
|
2798
|
+
var unescapeBindingMarkers = (s2) => s2.replaceAll(/\\{{/g, "{{").replace(/\\}}/g, "}}");
|
|
2558
2799
|
var repeatHandler = (template, model, handlers, renderers) => {
|
|
2559
2800
|
const repeatAttribute = template.getAttribute("repeat");
|
|
2560
2801
|
if (repeatAttribute !== null) {
|
|
@@ -2763,10 +3004,10 @@ var makeLitTemplate = (template) => {
|
|
|
2763
3004
|
}
|
|
2764
3005
|
const strings = [unescapeBindingMarkers(splitValue[0])];
|
|
2765
3006
|
const exprs = [];
|
|
2766
|
-
for (let
|
|
2767
|
-
const exprText = splitValue[
|
|
3007
|
+
for (let i5 = 1; i5 < splitValue.length; i5 += 2) {
|
|
3008
|
+
const exprText = splitValue[i5];
|
|
2768
3009
|
exprs.push(parse(exprText, astFactory));
|
|
2769
|
-
strings.push(unescapeBindingMarkers(splitValue[
|
|
3010
|
+
strings.push(unescapeBindingMarkers(splitValue[i5 + 1]));
|
|
2770
3011
|
}
|
|
2771
3012
|
litTemplate.parts.push({
|
|
2772
3013
|
type: 1,
|
|
@@ -2789,15 +3030,15 @@ var makeLitTemplate = (template) => {
|
|
|
2789
3030
|
} else if (hasEscapedBindingMarkers(text)) {
|
|
2790
3031
|
textNode.textContent = unescapeBindingMarkers(text);
|
|
2791
3032
|
}
|
|
2792
|
-
for (let
|
|
2793
|
-
const exprText = strings[
|
|
3033
|
+
for (let i5 = 1; i5 < strings.length; i5 += 2) {
|
|
3034
|
+
const exprText = strings[i5];
|
|
2794
3035
|
const expr = parse(exprText, astFactory);
|
|
2795
3036
|
litTemplate.parts.push({
|
|
2796
3037
|
type: 2,
|
|
2797
3038
|
index: ++nodeIndex,
|
|
2798
3039
|
update: (model, _handlers) => expr.evaluate(model)
|
|
2799
3040
|
});
|
|
2800
|
-
const newTextNode = new Text(strings[
|
|
3041
|
+
const newTextNode = new Text(strings[i5 + 1].replace("\\{{", "{{"));
|
|
2801
3042
|
textNode.parentNode.insertBefore(newTextNode, textNode.nextSibling);
|
|
2802
3043
|
textNode.parentNode.insertBefore(document.createComment(""), textNode.nextSibling);
|
|
2803
3044
|
textNode = newTextNode;
|
|
@@ -2805,8 +3046,8 @@ var makeLitTemplate = (template) => {
|
|
|
2805
3046
|
}
|
|
2806
3047
|
}
|
|
2807
3048
|
}
|
|
2808
|
-
for (const
|
|
2809
|
-
|
|
3049
|
+
for (const e3 of elementsToRemove) {
|
|
3050
|
+
e3.remove();
|
|
2810
3051
|
}
|
|
2811
3052
|
return litTemplate;
|
|
2812
3053
|
};
|
|
@@ -2829,11 +3070,11 @@ var TestPagingButtonsStamp = class extends i2 {
|
|
|
2829
3070
|
this.myTemplate = prepareTemplate(templateElement);
|
|
2830
3071
|
}
|
|
2831
3072
|
render() {
|
|
2832
|
-
if (!this.computedContext) return
|
|
3073
|
+
if (!this.computedContext) return T``;
|
|
2833
3074
|
const items = this.computedContext.testParts.flatMap(
|
|
2834
3075
|
(testPart) => testPart.sections.flatMap((section) => section.items)
|
|
2835
3076
|
);
|
|
2836
|
-
return
|
|
3077
|
+
return T` ${items.map((item) => this.myTemplate({ item, view: this.computedContext.view }))} `;
|
|
2837
3078
|
}
|
|
2838
3079
|
};
|
|
2839
3080
|
_internals2 = new WeakMap();
|
|
@@ -2893,10 +3134,10 @@ var TestContainer = class extends i2 {
|
|
|
2893
3134
|
}
|
|
2894
3135
|
}
|
|
2895
3136
|
render() {
|
|
2896
|
-
return
|
|
3137
|
+
return T`
|
|
2897
3138
|
${__privateGet(this, _templateContent)}
|
|
2898
3139
|
<slot></slot>
|
|
2899
|
-
${m(this.testDoc,
|
|
3140
|
+
${m(this.testDoc, T`<span>Loading...</span>`)}
|
|
2900
3141
|
`;
|
|
2901
3142
|
}
|
|
2902
3143
|
};
|
|
@@ -2904,7 +3145,7 @@ _templateContent = new WeakMap();
|
|
|
2904
3145
|
_TestContainer_instances = new WeakSet();
|
|
2905
3146
|
initializeTemplateContent_fn = function() {
|
|
2906
3147
|
const template = this.querySelector("template");
|
|
2907
|
-
__privateSet(this, _templateContent, template ? template.content :
|
|
3148
|
+
__privateSet(this, _templateContent, template ? template.content : T``);
|
|
2908
3149
|
};
|
|
2909
3150
|
applyStyles_fn = function() {
|
|
2910
3151
|
const sheet = new CSSStyleSheet();
|
|
@@ -2934,10 +3175,10 @@ TestContainer = __decorateClass([
|
|
|
2934
3175
|
var TestPrintVariables = class extends i2 {
|
|
2935
3176
|
render() {
|
|
2936
3177
|
const activeItem = this.computedContext?.testParts.flatMap((testPart) => testPart.sections.flatMap((section) => section.items)).find((item) => item.active);
|
|
2937
|
-
if (!activeItem || !activeItem.variables) return
|
|
2938
|
-
const responseVariables = activeItem.variables.filter((
|
|
2939
|
-
const outcomeVariables = activeItem.variables.filter((
|
|
2940
|
-
const renderTable = (variables, title) =>
|
|
3178
|
+
if (!activeItem || !activeItem.variables) return T``;
|
|
3179
|
+
const responseVariables = activeItem.variables.filter((v2) => v2.type === "response");
|
|
3180
|
+
const outcomeVariables = activeItem.variables.filter((v2) => v2.type === "outcome");
|
|
3181
|
+
const renderTable = (variables, title) => T`
|
|
2941
3182
|
<h3>${title}</h3>
|
|
2942
3183
|
<table>
|
|
2943
3184
|
<thead>
|
|
@@ -2950,16 +3191,16 @@ var TestPrintVariables = class extends i2 {
|
|
|
2950
3191
|
</tr>
|
|
2951
3192
|
</thead>
|
|
2952
3193
|
<tbody>
|
|
2953
|
-
${variables.map((
|
|
2954
|
-
const correctResponse =
|
|
2955
|
-
const mapEntries =
|
|
2956
|
-
const areaMapEntries =
|
|
2957
|
-
return
|
|
3194
|
+
${variables.map((v2) => {
|
|
3195
|
+
const correctResponse = v2.correctResponse ? Array.isArray(v2.correctResponse) ? v2.correctResponse.join(", ") : v2.correctResponse : "";
|
|
3196
|
+
const mapEntries = v2.mapping?.mapEntries?.map((m3) => `${m3.mapKey}=${m3.mappedValue}pt`).join(", ") || "";
|
|
3197
|
+
const areaMapEntries = v2.areaMapping?.areaMapEntries?.map((m3) => `${m3.shape}(${m3.coords})=${m3.mappedValue}pt`).join(", ") || "";
|
|
3198
|
+
return T`
|
|
2958
3199
|
<tr>
|
|
2959
|
-
<td>${
|
|
2960
|
-
<td>${Array.isArray(
|
|
2961
|
-
<td>${
|
|
2962
|
-
<td>${
|
|
3200
|
+
<td>${v2.identifier}</td>
|
|
3201
|
+
<td>${Array.isArray(v2.value) ? v2.value.join(", ") : v2.value}</td>
|
|
3202
|
+
<td>${v2.cardinality}</td>
|
|
3203
|
+
<td>${v2.baseType}</td>
|
|
2963
3204
|
<td>${correctResponse || mapEntries || areaMapEntries}</td>
|
|
2964
3205
|
</tr>
|
|
2965
3206
|
`;
|
|
@@ -2967,7 +3208,7 @@ var TestPrintVariables = class extends i2 {
|
|
|
2967
3208
|
</tbody>
|
|
2968
3209
|
</table>
|
|
2969
3210
|
`;
|
|
2970
|
-
return
|
|
3211
|
+
return T`
|
|
2971
3212
|
${renderTable(responseVariables, "Response Variables")} ${renderTable(outcomeVariables, "Outcome Variables")}
|
|
2972
3213
|
`;
|
|
2973
3214
|
}
|
|
@@ -3019,9 +3260,9 @@ var TestSectionButtonsStamp = class extends i2 {
|
|
|
3019
3260
|
this.myTemplate = prepareTemplate(templateElement);
|
|
3020
3261
|
}
|
|
3021
3262
|
render() {
|
|
3022
|
-
if (!this.computedContext) return
|
|
3263
|
+
if (!this.computedContext) return T``;
|
|
3023
3264
|
const sections = this.computedContext.testParts.flatMap((testPart) => testPart.sections);
|
|
3024
|
-
return
|
|
3265
|
+
return T` ${sections.map((item) => this.myTemplate({ item }))} `;
|
|
3025
3266
|
}
|
|
3026
3267
|
};
|
|
3027
3268
|
_internals3 = new WeakMap();
|
|
@@ -3042,7 +3283,7 @@ var TestSectionLink = class extends i2 {
|
|
|
3042
3283
|
this.addEventListener("click", () => __privateMethod(this, _TestSectionLink_instances, requestItem_fn).call(this, this.sectionId));
|
|
3043
3284
|
}
|
|
3044
3285
|
render() {
|
|
3045
|
-
return
|
|
3286
|
+
return T` <slot></slot> `;
|
|
3046
3287
|
}
|
|
3047
3288
|
};
|
|
3048
3289
|
_TestSectionLink_instances = new WeakSet();
|
|
@@ -3076,7 +3317,7 @@ TestSectionLink = __decorateClass([
|
|
|
3076
3317
|
// ../qti-test/src/components/test-print-context/test-print-context.ts
|
|
3077
3318
|
var TestPrintContext = class extends i2 {
|
|
3078
3319
|
render() {
|
|
3079
|
-
return
|
|
3320
|
+
return T` <small><pre>${JSON.stringify(this.computedContext, null, 2)}</pre></small> `;
|
|
3080
3321
|
}
|
|
3081
3322
|
};
|
|
3082
3323
|
__decorateClass([
|
|
@@ -3153,8 +3394,8 @@ var TestStamp = class extends i2 {
|
|
|
3153
3394
|
);
|
|
3154
3395
|
}
|
|
3155
3396
|
render() {
|
|
3156
|
-
return
|
|
3157
|
-
${this.myTemplate ? this.myTemplate(this.stampContext) :
|
|
3397
|
+
return T` ${this.debug ? T`<small><pre>${JSON.stringify(this.stampContext, null, 2)}</pre></small>` : A}
|
|
3398
|
+
${this.myTemplate ? this.myTemplate(this.stampContext) : A}`;
|
|
3158
3399
|
}
|
|
3159
3400
|
};
|
|
3160
3401
|
__decorateClass([
|
|
@@ -3180,8 +3421,8 @@ var TestScoringButtons = class extends i2 {
|
|
|
3180
3421
|
this.view = "";
|
|
3181
3422
|
this.disabled = false;
|
|
3182
3423
|
this.myTemplate = null;
|
|
3183
|
-
this.addEventListener("click", (
|
|
3184
|
-
const target =
|
|
3424
|
+
this.addEventListener("click", (e3) => {
|
|
3425
|
+
const target = e3.target;
|
|
3185
3426
|
const value = parseFloat(target.value);
|
|
3186
3427
|
if (target.tagName === "INPUT") {
|
|
3187
3428
|
__privateMethod(this, _TestScoringButtons_instances, changeOutcomeScore_fn).call(this, value);
|
|
@@ -3202,14 +3443,14 @@ var TestScoringButtons = class extends i2 {
|
|
|
3202
3443
|
}
|
|
3203
3444
|
render() {
|
|
3204
3445
|
const activeItem = this.computedContext?.testParts.flatMap((testPart) => testPart.sections.flatMap((section) => section.items)).find((item) => item.active);
|
|
3205
|
-
if (!activeItem || !activeItem.variables) return
|
|
3446
|
+
if (!activeItem || !activeItem.variables) return T``;
|
|
3206
3447
|
const maxScore = activeItem.variables.find((vr) => vr.identifier == "MAXSCORE")?.value;
|
|
3207
3448
|
const scoreOutcome = activeItem.variables.find((vr) => vr.identifier == "SCORE");
|
|
3208
3449
|
const score = scoreOutcome?.value;
|
|
3209
3450
|
const disabled = !(scoreOutcome?.externalScored === "human");
|
|
3210
|
-
if (!maxScore || !scoreOutcome) return
|
|
3451
|
+
if (!maxScore || !scoreOutcome) return A;
|
|
3211
3452
|
const scores = [...Array(Number(maxScore) + 1).keys()];
|
|
3212
|
-
return
|
|
3453
|
+
return T`${this.myTemplate ? this.myTemplate({ scores, score, disabled }) : A}`;
|
|
3213
3454
|
}
|
|
3214
3455
|
};
|
|
3215
3456
|
_TestScoringButtons_instances = new WeakSet();
|
|
@@ -3274,9 +3515,9 @@ var TestViewToggle = class extends i2 {
|
|
|
3274
3515
|
});
|
|
3275
3516
|
}
|
|
3276
3517
|
render() {
|
|
3277
|
-
return
|
|
3518
|
+
return T`${this.myTemplate ? this.myTemplate({
|
|
3278
3519
|
view: this.sessionContext?.view
|
|
3279
|
-
}) :
|
|
3520
|
+
}) : A}`;
|
|
3280
3521
|
}
|
|
3281
3522
|
};
|
|
3282
3523
|
__decorateClass([
|
|
@@ -3294,9 +3535,9 @@ var TestScoringFeedback = class extends i2 {
|
|
|
3294
3535
|
}
|
|
3295
3536
|
render() {
|
|
3296
3537
|
const activeItem = this.computedContext?.testParts.flatMap((testPart) => testPart.sections.flatMap((section) => section.items)).find((item) => item.active);
|
|
3297
|
-
if (!activeItem || !activeItem.variables) return
|
|
3298
|
-
if (activeItem["category"] === "dep-informational") return
|
|
3299
|
-
const completionStatus = activeItem?.variables.find((
|
|
3538
|
+
if (!activeItem || !activeItem.variables) return T``;
|
|
3539
|
+
if (activeItem["category"] === "dep-informational") return T`<div>${this.dataset.informational}</div>`;
|
|
3540
|
+
const completionStatus = activeItem?.variables.find((v2) => v2.identifier === "completionStatus")?.value;
|
|
3300
3541
|
const scoreOutcome = activeItem?.variables.find((vr) => vr.identifier == "SCORE");
|
|
3301
3542
|
const score = parseFloat(scoreOutcome?.value);
|
|
3302
3543
|
const externalScored = activeItem["externalScored"];
|
|
@@ -3315,7 +3556,7 @@ var TestScoringFeedback = class extends i2 {
|
|
|
3315
3556
|
}
|
|
3316
3557
|
return this.dataset.inProgress;
|
|
3317
3558
|
};
|
|
3318
|
-
return
|
|
3559
|
+
return T`<div>${feedbackText()}</div>`;
|
|
3319
3560
|
}
|
|
3320
3561
|
};
|
|
3321
3562
|
__decorateClass([
|
|
@@ -3349,7 +3590,7 @@ var TestCheckItem = class extends i2 {
|
|
|
3349
3590
|
});
|
|
3350
3591
|
}
|
|
3351
3592
|
render() {
|
|
3352
|
-
return
|
|
3593
|
+
return T` <slot></slot> `;
|
|
3353
3594
|
}
|
|
3354
3595
|
};
|
|
3355
3596
|
TestCheckItem.styles = i`
|
|
@@ -3392,6 +3633,13 @@ export {
|
|
|
3392
3633
|
};
|
|
3393
3634
|
/*! Bundled license information:
|
|
3394
3635
|
|
|
3636
|
+
lit-html/node/lit-html.js:
|
|
3637
|
+
(**
|
|
3638
|
+
* @license
|
|
3639
|
+
* Copyright 2017 Google LLC
|
|
3640
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
3641
|
+
*)
|
|
3642
|
+
|
|
3395
3643
|
@heximal/expressions/lib/constants.js:
|
|
3396
3644
|
@heximal/expressions/lib/tokenizer.js:
|
|
3397
3645
|
@heximal/expressions/lib/parser.js:
|
|
@@ -3409,4 +3657,4 @@ lit-html/node/private-ssr-support.js:
|
|
|
3409
3657
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
3410
3658
|
*)
|
|
3411
3659
|
*/
|
|
3412
|
-
//# sourceMappingURL=chunk-
|
|
3660
|
+
//# sourceMappingURL=chunk-3HJE3KRM.js.map
|