@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.
Files changed (51) hide show
  1. package/cdn/index.global.js +1 -1
  2. package/cdn/index.js +230 -212
  3. package/custom-elements.json +4214 -1176
  4. package/dist/base.d.ts +3 -2
  5. package/dist/base.js +1 -1
  6. package/dist/{chunk-TZMDZQFG.js → chunk-3HJE3KRM.js} +469 -221
  7. package/dist/chunk-3HJE3KRM.js.map +1 -0
  8. package/dist/{chunk-75ME6QG5.js → chunk-424AWLRU.js} +18 -18
  9. package/dist/{chunk-QUWFDFGZ.js → chunk-FFESMKSD.js} +277 -21
  10. package/dist/chunk-FFESMKSD.js.map +1 -0
  11. package/dist/{chunk-G5ZUC3OT.js → chunk-LQZCSHN5.js} +23 -23
  12. package/dist/chunk-LQZCSHN5.js.map +1 -0
  13. package/dist/{chunk-DG5TP35K.js → chunk-N7S3GNUP.js} +5 -5
  14. package/dist/{chunk-DG5TP35K.js.map → chunk-N7S3GNUP.js.map} +1 -1
  15. package/dist/{chunk-RXRKP6P7.js → chunk-SX63OCDZ.js} +2 -2
  16. package/dist/{chunk-K7HR6ZAY.js → chunk-UKPCQKPF.js} +2 -2
  17. package/dist/chunk-UKPCQKPF.js.map +1 -0
  18. package/dist/{chunk-KY3II5OX.js → chunk-XYTJOQRZ.js} +240 -202
  19. package/dist/chunk-XYTJOQRZ.js.map +1 -0
  20. package/dist/{chunk-GG36UR7F.js → chunk-YLIYPNMK.js} +1004 -12
  21. package/dist/chunk-YLIYPNMK.js.map +1 -0
  22. package/dist/{chunk-TORB5UN2.js → chunk-Z2SUBRH5.js} +304 -243
  23. package/dist/chunk-Z2SUBRH5.js.map +1 -0
  24. package/dist/elements.d.ts +67 -2
  25. package/dist/elements.js +10 -6
  26. package/dist/index.d.ts +5 -4
  27. package/dist/index.js +55 -11
  28. package/dist/interactions.d.ts +8 -7
  29. package/dist/interactions.js +3 -3
  30. package/dist/item.js +4 -4
  31. package/dist/loader.d.ts +2 -1
  32. package/dist/loader.js +2 -2
  33. package/dist/processing.d.ts +374 -17
  34. package/dist/processing.js +42 -2
  35. package/dist/qti-components-jsx.d.ts +1183 -126
  36. package/dist/{qti-rule-base-DGhWN-as.d.ts → qti-condition-expression-B1BYmCcq.d.ts} +1 -14
  37. package/dist/{qti-feedback-BZjWNyxP.d.ts → qti-feedback-ChmXhZuf.d.ts} +1 -1
  38. package/dist/qti-rule-base-ajOnfGXY.d.ts +16 -0
  39. package/dist/test.d.ts +2 -1
  40. package/dist/test.js +6 -6
  41. package/dist/transformers.js +1 -1
  42. package/package.json +11 -11
  43. package/dist/chunk-G5ZUC3OT.js.map +0 -1
  44. package/dist/chunk-GG36UR7F.js.map +0 -1
  45. package/dist/chunk-K7HR6ZAY.js.map +0 -1
  46. package/dist/chunk-KY3II5OX.js.map +0 -1
  47. package/dist/chunk-QUWFDFGZ.js.map +0 -1
  48. package/dist/chunk-TORB5UN2.js.map +0 -1
  49. package/dist/chunk-TZMDZQFG.js.map +0 -1
  50. /package/dist/{chunk-75ME6QG5.js.map → chunk-424AWLRU.js.map} +0 -0
  51. /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-QUWFDFGZ.js";
3
+ } from "./chunk-FFESMKSD.js";
4
4
  import {
5
5
  item_default,
6
6
  m
7
- } from "./chunk-G5ZUC3OT.js";
7
+ } from "./chunk-LQZCSHN5.js";
8
8
  import {
9
9
  qtiTransformItem,
10
10
  qtiTransformTest
11
- } from "./chunk-K7HR6ZAY.js";
11
+ } from "./chunk-UKPCQKPF.js";
12
12
  import {
13
- E,
13
+ A,
14
14
  INITIAL_SESSION_CONTEXT,
15
15
  INITIAL_TEST_CONTEXT,
16
- W,
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
- w,
30
- watch,
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(e2) {
98
- this._testElement = e2.detail;
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(e2) {
105
- const itemRef = e2.detail;
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(e2) {
115
- e2.preventDefault();
116
- const { element, item } = e2;
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 = document.querySelector(
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((i4) => i4.identifier === itemId)?.state;
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", (e2) => {
515
- this.sessionContext = { ...this.sessionContext, view: e2.detail };
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", (e2) => {
517
+ this.addEventListener("qti-assessment-item-connected", (e3) => {
522
518
  this._updateElementView();
523
- this._setCorrectResponseVisibility(e2.detail);
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((i4) => i4?.identifier === identifier);
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((v) => v.identifier === variable.identifier);
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((v) => v.identifier === variable.identifier);
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", (e2) => {
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 = e2.detail;
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", (e2) => {
636
- const assessmentItem = e2.detail;
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(e2.detail);
637
+ this._updateItemInTestContext(e3.detail);
642
638
  });
643
- this.addEventListener("qti-item-context-updated", (e2) => {
639
+ this.addEventListener("qti-item-context-updated", (e3) => {
644
640
  this._updateItemVariablesInTestContext(
645
- e2.detail.itemContext.identifier,
646
- e2.detail.itemContext.variables,
647
- e2.detail.itemContext.state
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((v) => v.identifier === variable.identifier);
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", (e2) => {
689
+ this.addEventListener("qti-register-variable", (e3) => {
694
690
  this.testContext = {
695
691
  ...this.testContext,
696
- testOutcomeVariables: [...this.testContext.testOutcomeVariables || [], e2.detail.variable]
692
+ testOutcomeVariables: [...this.testContext.testOutcomeVariables || [], e3.detail.variable]
697
693
  };
698
- e2.stopPropagation();
694
+ e3.stopPropagation();
699
695
  });
700
696
  this.addEventListener(
701
697
  "qti-set-outcome-value",
702
- (e2) => {
703
- const { outcomeIdentifier, value } = e2.detail;
698
+ (e3) => {
699
+ const { outcomeIdentifier, value } = e3.detail;
704
700
  this.updateOutcomeVariable(outcomeIdentifier, value);
705
- e2.stopPropagation();
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((v) => {
725
- if (v.identifier !== identifier) {
726
- return v;
720
+ testOutcomeVariables: this.testContext.testOutcomeVariables?.map((v2) => {
721
+ if (v2.identifier !== identifier) {
722
+ return v2;
727
723
  }
728
724
  return {
729
- ...v,
730
- value: outcomeVariable.cardinality === "single" ? value : [...v.value, 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((v) => v.identifier === identifier) || null;
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 x`<slot></slot>`;
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 x`<slot name="qti-rubric-block"></slot><slot></slot>`;
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 x` <slot></slot>`;
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 x` <slot></slot>`;
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 x``;
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 x`<slot></slot>`;
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((i4) => i4.identifier === item.identifier)?.variables.find((v) => v.identifier === "completionStatus").value === "completed"
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((i4) => i4.identifier === item.identifier);
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((i4) => i4.identifier === item.identifier)
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((v) => v.identifier === "completionStatus")?.value;
1071
- const response = computedItem.variables?.find((v) => v.identifier === "RESPONSE")?.value || "";
1072
- const numAttempts = computedItem.variables?.find((v) => v.identifier === "numAttempts")?.value || 0;
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((v) => v.identifier === "SCORE");
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((i4) => i4.identifier === item.identifier),
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
- (r3) => r3.querySelector("qti-correct-response")
1297
+ (r4) => r4.querySelector("qti-correct-response")
1302
1298
  );
1303
- const containsMapping = Array.from(responseDeclarations).some((r3) => {
1304
- const mapping = r3.querySelector("qti-mapping");
1305
- const areaMapping = r3.querySelector("qti-area-mapping");
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", (e2) => {
1395
- e2.preventDefault();
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 x`<slot></slot>`;
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", (e2) => {
1463
- e2.preventDefault();
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 x`<slot></slot>`;
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 x`
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=${(e2) => {
1552
- const el = e2.target;
1547
+ @change=${(e3) => {
1548
+ const el = e3.target;
1553
1549
  this._switchView(el.value);
1554
1550
  }}
1555
1551
  >
1556
1552
  ${this._viewOptions.map(
1557
- (v) => x`<option value="${v}" ?selected=${v === this.sessionContext.view}>${v}</option>`
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 x` <slot></slot> `;
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 x` <slot></slot> `;
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((v) => v["correctResponse"]);
1674
- const containsMapping = !!activeItem?.variables?.some((v) => {
1675
- return v["mapping"]?.mapEntries?.length > 0 || v["areaMapping"]?.areaMapEntries?.length > 0;
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 x` <div @click="${__privateMethod(this, _TestShowCorrectResponse_instances, toggleState_fn)}">${__privateMethod(this, _TestShowCorrectResponse_instances, getDisplayedText_fn).call(this)}</div> `;
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 v = this.#input.substring(this.#tokenStart, this.#index + lookahead);
2136
+ const v2 = this.#input.substring(this.#tokenStart, this.#index + lookahead);
1896
2137
  if (lookahead === 0) {
1897
2138
  this.#clearValue();
1898
2139
  }
1899
- return v;
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 t2 = token(Kind.STRING, escapeString(this.#getValue()));
2159
+ const t3 = token(Kind.STRING, escapeString(this.#getValue()));
1919
2160
  this.#advance();
1920
- return t2;
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 t2 = token(Kind.GROUPER, value, PRECEDENCE[value]);
2221
+ const t3 = token(Kind.GROUPER, value, PRECEDENCE[value]);
1981
2222
  this.#advance(true);
1982
- return t2;
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 t2 = this.#tokenizer.nextToken();
2007
- this.#token = t2;
2008
- this.#kind = t2?.kind;
2009
- this.#value = t2?.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((e2) => e2.value) ?? [];
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
- "+": (a, b) => a + b,
2242
- "-": (a, b) => a - b,
2243
- "*": (a, b) => a * b,
2244
- "/": (a, b) => a / b,
2245
- "%": (a, b) => a % b,
2246
- "==": (a, b) => a == b,
2247
- "!=": (a, b) => a != b,
2248
- "===": (a, b) => a === b,
2249
- "!==": (a, b) => a !== b,
2250
- ">": (a, b) => a > b,
2251
- ">=": (a, b) => a >= b,
2252
- "<": (a, b) => a < b,
2253
- "<=": (a, b) => a <= b,
2254
- "||": (a, b) => a || b,
2255
- "&&": (a, b) => a && b,
2256
- "??": (a, b) => a ?? b,
2257
- "|": (a, f) => f(a),
2258
- "|>": (a, f) => f(a)
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
- "+": (a) => a,
2262
- "-": (a) => -a,
2263
- "!": (a) => !a
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(v) {
2519
+ literal(v2) {
2279
2520
  return {
2280
2521
  type: "Literal",
2281
- value: v,
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(v) {
2531
+ id(v2) {
2291
2532
  return {
2292
2533
  type: "ID",
2293
- value: v,
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 f = _UNARY_OPERATORS[op];
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 f(this.child.evaluate(scope));
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(l, op, r3) {
2320
- const f = _BINARY_OPERATORS[op];
2560
+ binary(l2, op, r4) {
2561
+ const f2 = _BINARY_OPERATORS[op];
2321
2562
  return {
2322
2563
  type: "Binary",
2323
2564
  operator: op,
2324
- left: l,
2325
- right: r3,
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 f(this.left.evaluate(scope), this.right.evaluate(scope));
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(g, n2) {
2596
+ getter(g2, n3) {
2356
2597
  return {
2357
2598
  type: "Getter",
2358
- receiver: g,
2359
- name: n2,
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 f = this.method ? receiver2?.[method] : receiver2;
2622
+ const f2 = this.method ? receiver2?.[method] : receiver2;
2382
2623
  const args2 = this.arguments ?? [];
2383
- const argValues = args2.map((a) => a?.evaluate(scope));
2384
- return f?.apply?.(_this, argValues);
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((a) => a?.getIds(idents));
2629
+ this.arguments?.forEach((a2) => a2?.getIds(idents));
2389
2630
  return idents;
2390
2631
  }
2391
2632
  };
2392
2633
  }
2393
- paren(e2) {
2394
- return e2;
2634
+ paren(e3) {
2635
+ return e3;
2395
2636
  }
2396
- index(e2, a) {
2637
+ index(e3, a2) {
2397
2638
  return {
2398
2639
  type: "Index",
2399
- receiver: e2,
2400
- argument: a,
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(c2, t2, f) {
2651
+ ternary(c3, t3, f2) {
2411
2652
  return {
2412
2653
  type: "Ternary",
2413
- condition: c2,
2414
- trueExpr: t2,
2415
- falseExpr: f,
2654
+ condition: c3,
2655
+ trueExpr: t3,
2656
+ falseExpr: f2,
2416
2657
  evaluate(scope) {
2417
- const c3 = this.condition.evaluate(scope);
2418
- if (c3) {
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(l) {
2703
+ list(l2) {
2463
2704
  return {
2464
2705
  type: "List",
2465
- items: l,
2706
+ items: l2,
2466
2707
  evaluate(scope) {
2467
- return this.items?.map((a) => a?.evaluate(scope));
2708
+ return this.items?.map((a2) => a2?.evaluate(scope));
2468
2709
  },
2469
2710
  getIds(idents) {
2470
- this.items?.forEach((i4) => i4?.getIds(idents));
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((p, i4) => [p, args[i4]]));
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 r2 = null;
2511
- var i3 = { boundAttributeSuffix: W.M, marker: W.P, markerMatch: W.A, HTML_RESULT: W.C, getTemplateHtml: W.L, overrideDirectiveResolve: (e2, t2) => class extends e2 {
2512
- _$AS(e3, r3) {
2513
- return t2(this, r3);
2514
- }
2515
- }, patchDirectiveResolve: (e2, t2) => {
2516
- if (e2.prototype._$AS.name !== t2.name) {
2517
- r2 ??= e2.prototype._$AS.name;
2518
- for (let i4 = e2.prototype; i4 !== Object.prototype; i4 = Object.getPrototypeOf(i4)) if (i4.hasOwnProperty(r2)) return void (i4[r2] = t2);
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(e2, t2) {
2522
- e2._$litDirective$ = t2;
2523
- }, getAttributePartCommittedValue: (e2, r3, i4) => {
2524
- let o = w;
2525
- return e2.j = (e3) => o = e3, e2._$AI(r3, e2, i4), o;
2526
- }, connectedDisconnectable: (e2) => ({ ...e2, _$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 };
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 } = i3;
2770
+ var { AttributePart, PropertyPart, BooleanAttributePart, EventPart } = i4;
2530
2771
  var astFactory = new EvalAstFactory();
2531
2772
  var expressionCache = /* @__PURE__ */ new Map();
2532
- var toCamelCase = (s) => s.replace(/-(-|\w)/g, (_, p1) => p1.toUpperCase());
2533
- var getSingleValue = (s, model) => {
2534
- let ast = expressionCache.get(s);
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(s)) {
2777
+ if (expressionCache.has(s2)) {
2537
2778
  return void 0;
2538
2779
  }
2539
- s = s.trim();
2540
- if (s.startsWith("{{") && s.endsWith("}}")) {
2541
- const expression = s.substring(2, s.length - 2).trim();
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(s, ast);
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 = (s) => /(?:\\{{)|(?:\\}})/g.test(s);
2557
- var unescapeBindingMarkers = (s) => s.replaceAll(/\\{{/g, "{{").replace(/\\}}/g, "}}");
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 i4 = 1; i4 < splitValue.length; i4 += 2) {
2767
- const exprText = splitValue[i4];
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[i4 + 1]));
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 i4 = 1; i4 < strings.length; i4 += 2) {
2793
- const exprText = strings[i4];
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[i4 + 1].replace("\\{{", "{{"));
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 e2 of elementsToRemove) {
2809
- e2.remove();
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 x``;
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 x` ${items.map((item) => this.myTemplate({ item, view: this.computedContext.view }))} `;
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 x`
3137
+ return T`
2897
3138
  ${__privateGet(this, _templateContent)}
2898
3139
  <slot></slot>
2899
- ${m(this.testDoc, x`<span>Loading...</span>`)}
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 : x``);
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 x``;
2938
- const responseVariables = activeItem.variables.filter((v) => v.type === "response");
2939
- const outcomeVariables = activeItem.variables.filter((v) => v.type === "outcome");
2940
- const renderTable = (variables, title) => x`
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((v) => {
2954
- const correctResponse = v.correctResponse ? Array.isArray(v.correctResponse) ? v.correctResponse.join(", ") : v.correctResponse : "";
2955
- const mapEntries = v.mapping?.mapEntries?.map((m2) => `${m2.mapKey}=${m2.mappedValue}pt`).join(", ") || "";
2956
- const areaMapEntries = v.areaMapping?.areaMapEntries?.map((m2) => `${m2.shape}(${m2.coords})=${m2.mappedValue}pt`).join(", ") || "";
2957
- return x`
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>${v.identifier}</td>
2960
- <td>${Array.isArray(v.value) ? v.value.join(", ") : v.value}</td>
2961
- <td>${v.cardinality}</td>
2962
- <td>${v.baseType}</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 x`
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 x``;
3263
+ if (!this.computedContext) return T``;
3023
3264
  const sections = this.computedContext.testParts.flatMap((testPart) => testPart.sections);
3024
- return x` ${sections.map((item) => this.myTemplate({ item }))} `;
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 x` <slot></slot> `;
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 x` <small><pre>${JSON.stringify(this.computedContext, null, 2)}</pre></small> `;
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 x` ${this.debug ? x`<small><pre>${JSON.stringify(this.stampContext, null, 2)}</pre></small>` : E}
3157
- ${this.myTemplate ? this.myTemplate(this.stampContext) : E}`;
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", (e2) => {
3184
- const target = e2.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 x``;
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 E;
3451
+ if (!maxScore || !scoreOutcome) return A;
3211
3452
  const scores = [...Array(Number(maxScore) + 1).keys()];
3212
- return x`${this.myTemplate ? this.myTemplate({ scores, score, disabled }) : E}`;
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 x`${this.myTemplate ? this.myTemplate({
3518
+ return T`${this.myTemplate ? this.myTemplate({
3278
3519
  view: this.sessionContext?.view
3279
- }) : E}`;
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 x``;
3298
- if (activeItem["category"] === "dep-informational") return x`<div>${this.dataset.informational}</div>`;
3299
- const completionStatus = activeItem?.variables.find((v) => v.identifier === "completionStatus")?.value;
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 x`<div>${feedbackText()}</div>`;
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 x` <slot></slot> `;
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-TZMDZQFG.js.map
3660
+ //# sourceMappingURL=chunk-3HJE3KRM.js.map