@citolab/qti-components 8.2.0 → 9.1.0

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 (50) hide show
  1. package/cdn/index.global.js +1 -1
  2. package/cdn/index.js +190 -190
  3. package/dist/base.js +1 -1
  4. package/dist/{chunk-OVBG223G.js → chunk-3VQSUWCK.js} +173 -12
  5. package/dist/chunk-3VQSUWCK.js.map +1 -0
  6. package/dist/{chunk-Q6ZK4LRH.js → chunk-5BXJRO5O.js} +1792 -551
  7. package/dist/chunk-5BXJRO5O.js.map +1 -0
  8. package/dist/{chunk-OIUK5BFU.js → chunk-5SU3MP6Y.js} +811 -811
  9. package/dist/chunk-5SU3MP6Y.js.map +1 -0
  10. package/dist/{chunk-LMGJOBJA.js → chunk-DAUU2NJL.js} +5 -5
  11. package/dist/chunk-DAUU2NJL.js.map +1 -0
  12. package/dist/chunk-KCK27QBP.js +11 -0
  13. package/dist/chunk-KCK27QBP.js.map +1 -0
  14. package/dist/{chunk-M7K5C522.js → chunk-LDY4C2OT.js} +2 -2
  15. package/dist/chunk-MKZ374OJ.js +179 -0
  16. package/dist/chunk-MKZ374OJ.js.map +1 -0
  17. package/dist/{chunk-CRLXQZFA.js → chunk-QCPN7E6K.js} +14 -10
  18. package/dist/chunk-QCPN7E6K.js.map +1 -0
  19. package/dist/{chunk-U7YCXDYC.js → chunk-RT6WZ3P7.js} +2 -2
  20. package/dist/{chunk-7D3NKAGZ.js → chunk-WCWJPIUQ.js} +5 -4
  21. package/dist/chunk-WCWJPIUQ.js.map +1 -0
  22. package/dist/{chunk-YLRMOX6C.js → chunk-WKWCOV5P.js} +2 -2
  23. package/dist/chunk-XE7BALDO.js +7 -0
  24. package/dist/chunk-XE7BALDO.js.map +1 -0
  25. package/dist/{chunk-UC3T3NI3.js → chunk-XYQNTF5B.js} +2 -2
  26. package/dist/corrections.js +82 -7
  27. package/dist/corrections.js.map +1 -1
  28. package/dist/elements.js +3 -3
  29. package/dist/index.js +24 -24
  30. package/dist/interactions.js +14 -15
  31. package/dist/item.js +4 -4
  32. package/dist/processing.d.ts +26 -0
  33. package/dist/processing.js +3 -2
  34. package/dist/qti-components-jsx.d.ts +60 -4
  35. package/dist/test.js +5 -5
  36. package/package.json +7 -7
  37. package/dist/chunk-43XBJ47H.js +0 -1420
  38. package/dist/chunk-43XBJ47H.js.map +0 -1
  39. package/dist/chunk-7D3NKAGZ.js.map +0 -1
  40. package/dist/chunk-CRLXQZFA.js.map +0 -1
  41. package/dist/chunk-LMGJOBJA.js.map +0 -1
  42. package/dist/chunk-OIUK5BFU.js.map +0 -1
  43. package/dist/chunk-OVBG223G.js.map +0 -1
  44. package/dist/chunk-Q6ZK4LRH.js.map +0 -1
  45. package/dist/chunk-TLTYXWW7.js +0 -7
  46. package/dist/chunk-TLTYXWW7.js.map +0 -1
  47. /package/dist/{chunk-M7K5C522.js.map → chunk-LDY4C2OT.js.map} +0 -0
  48. /package/dist/{chunk-U7YCXDYC.js.map → chunk-RT6WZ3P7.js.map} +0 -0
  49. /package/dist/{chunk-YLRMOX6C.js.map → chunk-WKWCOV5P.js.map} +0 -0
  50. /package/dist/{chunk-UC3T3NI3.js.map → chunk-XYQNTF5B.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  qtiTestElements
3
- } from "./chunk-CRLXQZFA.js";
3
+ } from "./chunk-QCPN7E6K.js";
4
4
 
5
5
  // ../qti-test/dist/register.js
6
6
  for (const { tag, ctor } of qtiTestElements) {
@@ -8,4 +8,4 @@ for (const { tag, ctor } of qtiTestElements) {
8
8
  customElements.define(tag, ctor);
9
9
  }
10
10
  }
11
- //# sourceMappingURL=chunk-UC3T3NI3.js.map
11
+ //# sourceMappingURL=chunk-XYQNTF5B.js.map
@@ -34,15 +34,90 @@ import {
34
34
  TestNavigationCorrection,
35
35
  TestShowCorrectResponse,
36
36
  correctionPart
37
- } from "./chunk-OIUK5BFU.js";
38
- import "./chunk-CRLXQZFA.js";
39
- import "./chunk-YLRMOX6C.js";
40
- import "./chunk-Q6ZK4LRH.js";
41
- import "./chunk-LMGJOBJA.js";
42
- import "./chunk-TLTYXWW7.js";
37
+ } from "./chunk-5SU3MP6Y.js";
38
+ import {
39
+ qtiTestElements
40
+ } from "./chunk-QCPN7E6K.js";
41
+ import {
42
+ qtiContentElements
43
+ } from "./chunk-WKWCOV5P.js";
44
+ import {
45
+ qtiInteractionElements
46
+ } from "./chunk-5BXJRO5O.js";
47
+ import {
48
+ qtiItemElements
49
+ } from "./chunk-DAUU2NJL.js";
50
+ import "./chunk-XE7BALDO.js";
43
51
  import "./chunk-4DB4SC5K.js";
44
52
  import "./chunk-HDEG6BAZ.js";
45
- import "./chunk-7D3NKAGZ.js";
53
+ import {
54
+ qtiProcessingElements
55
+ } from "./chunk-3VQSUWCK.js";
56
+ import {
57
+ qtiBaseElements
58
+ } from "./chunk-WCWJPIUQ.js";
59
+
60
+ // ../qti-corrections/dist/elements.js
61
+ var qtiCorrectionElements = [
62
+ { tag: "item-correct-response-mode", ctor: ItemCorrectResponseMode },
63
+ { tag: "item-show-candidate-correction", ctor: ItemShowCandidateCorrection },
64
+ { tag: "item-show-correct-response", ctor: ItemShowCorrectResponse },
65
+ { tag: "test-show-correct-response", ctor: TestShowCorrectResponse },
66
+ { tag: "test-check-item", ctor: TestCheckItemCorrection },
67
+ { tag: "test-navigation", ctor: TestNavigationCorrection },
68
+ { tag: "qti-assessment-item", ctor: QtiAssessmentItemCorrection },
69
+ { tag: "qti-associate-interaction", ctor: QtiAssociateInteractionCorrection },
70
+ { tag: "qti-choice-interaction", ctor: QtiChoiceInteractionCorrection },
71
+ { tag: "qti-extended-text-interaction", ctor: QtiExtendedTextInteractionCorrection },
72
+ { tag: "qti-gap-text", ctor: QtiGapTextCorrection },
73
+ { tag: "qti-gap-match-interaction", ctor: QtiGapMatchInteractionCorrection },
74
+ { tag: "qti-graphic-associate-interaction", ctor: QtiGraphicAssociateInteractionCorrection },
75
+ { tag: "qti-graphic-gap-match-interaction", ctor: QtiGraphicGapMatchInteractionCorrection },
76
+ { tag: "qti-graphic-order-interaction", ctor: QtiGraphicOrderInteractionCorrection },
77
+ { tag: "qti-hotspot-interaction", ctor: QtiHotspotInteractionCorrection },
78
+ { tag: "qti-hotspot-choice", ctor: QtiHotspotChoiceCorrection },
79
+ { tag: "qti-hottext-interaction", ctor: QtiHottextInteractionCorrection },
80
+ { tag: "qti-hottext", ctor: QtiHottextCorrection },
81
+ { tag: "qti-inline-choice-interaction", ctor: QtiInlineChoiceInteractionCorrection },
82
+ { tag: "qti-item", ctor: QtiItemCorrection },
83
+ { tag: "qti-test", ctor: QtiTestCorrection },
84
+ { tag: "qti-match-interaction", ctor: QtiMatchInteractionCorrection },
85
+ { tag: "qti-order-interaction", ctor: QtiOrderInteractionCorrection },
86
+ { tag: "qti-portable-custom-interaction", ctor: QtiPortableCustomInteractionCorrection },
87
+ { tag: "qti-select-point-interaction", ctor: QtiSelectPointInteractionCorrection },
88
+ { tag: "qti-simple-associable-choice", ctor: QtiSimpleAssociableChoiceCorrection },
89
+ { tag: "qti-simple-choice", ctor: QtiSimpleChoiceCorrection },
90
+ { tag: "qti-slider-interaction", ctor: QtiSliderInteractionCorrection },
91
+ { tag: "qti-text-entry-interaction", ctor: QtiTextEntryInteractionCorrection }
92
+ ];
93
+
94
+ // src/corrections.ts
95
+ var standardElements = [
96
+ ...qtiBaseElements,
97
+ ...qtiProcessingElements,
98
+ ...qtiContentElements,
99
+ ...qtiItemElements,
100
+ ...qtiTestElements,
101
+ ...qtiInteractionElements
102
+ ];
103
+ var correctionByTag = new Map(
104
+ qtiCorrectionElements.map(({ tag, ctor }) => [tag, ctor])
105
+ );
106
+ var alreadyTaken = qtiCorrectionElements.filter(({ tag, ctor }) => {
107
+ const registered = customElements.get(tag);
108
+ return registered !== void 0 && registered !== ctor;
109
+ }).map(({ tag }) => tag);
110
+ if (alreadyTaken.length > 0) {
111
+ console.warn(
112
+ `[@citolab/qti-components/corrections] ${alreadyTaken.length} tag(s) were already registered by another entry point, so the correction variants for them are inactive: ${alreadyTaken.join(", ")}. Import EITHER '@citolab/qti-components' OR '@citolab/qti-components/corrections', not both.`
113
+ );
114
+ }
115
+ for (const { tag, ctor } of standardElements) {
116
+ if (!customElements.get(tag)) customElements.define(tag, correctionByTag.get(tag) ?? ctor);
117
+ }
118
+ for (const { tag, ctor } of qtiCorrectionElements) {
119
+ if (!customElements.get(tag)) customElements.define(tag, ctor);
120
+ }
46
121
  export {
47
122
  CandidateCorrectionMixin,
48
123
  ChoiceCorrectionMixin,
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../qti-corrections/src/elements.ts","../src/corrections.ts"],"sourcesContent":["import { ItemCorrectResponseMode } from './components/item-correct-response-mode/item-correct-response-mode';\nimport { ItemShowCandidateCorrection } from './components/item-show-candidate-correction/item-show-candidate-correction';\nimport { ItemShowCorrectResponse } from './components/item-show-correct-response/item-show-correct-response';\nimport { TestShowCorrectResponse } from './components/test-show-correct-response/test-show-correct-response';\nimport {\n QtiGapTextCorrection,\n QtiHotspotChoiceCorrection,\n QtiHottextCorrection,\n QtiSimpleAssociableChoiceCorrection,\n QtiSimpleChoiceCorrection\n} from './elements/index';\nimport {\n QtiAssociateInteractionCorrection,\n QtiChoiceInteractionCorrection,\n QtiExtendedTextInteractionCorrection,\n QtiGapMatchInteractionCorrection,\n QtiGraphicAssociateInteractionCorrection,\n QtiGraphicGapMatchInteractionCorrection,\n QtiGraphicOrderInteractionCorrection,\n QtiHotspotInteractionCorrection,\n QtiHottextInteractionCorrection,\n QtiInlineChoiceInteractionCorrection,\n QtiMatchInteractionCorrection,\n QtiOrderInteractionCorrection,\n QtiPortableCustomInteractionCorrection,\n QtiSelectPointInteractionCorrection,\n QtiSliderInteractionCorrection,\n QtiTextEntryInteractionCorrection\n} from './interactions';\nimport { QtiAssessmentItemCorrection } from './components/qti-assessment-item-correction';\nimport { QtiItemCorrection } from './components/qti-item-correction';\nimport {\n QtiTestCorrection,\n TestCheckItemCorrection,\n TestNavigationCorrection\n} from './components/test-correction-elements';\n\n/** Correction constructors keyed by their standard QTI tag names. */\nexport const qtiCorrectionElements = [\n { tag: 'item-correct-response-mode', ctor: ItemCorrectResponseMode },\n { tag: 'item-show-candidate-correction', ctor: ItemShowCandidateCorrection },\n { tag: 'item-show-correct-response', ctor: ItemShowCorrectResponse },\n { tag: 'test-show-correct-response', ctor: TestShowCorrectResponse },\n { tag: 'test-check-item', ctor: TestCheckItemCorrection },\n { tag: 'test-navigation', ctor: TestNavigationCorrection },\n { tag: 'qti-assessment-item', ctor: QtiAssessmentItemCorrection },\n { tag: 'qti-associate-interaction', ctor: QtiAssociateInteractionCorrection },\n { tag: 'qti-choice-interaction', ctor: QtiChoiceInteractionCorrection },\n { tag: 'qti-extended-text-interaction', ctor: QtiExtendedTextInteractionCorrection },\n { tag: 'qti-gap-text', ctor: QtiGapTextCorrection },\n { tag: 'qti-gap-match-interaction', ctor: QtiGapMatchInteractionCorrection },\n { tag: 'qti-graphic-associate-interaction', ctor: QtiGraphicAssociateInteractionCorrection },\n { tag: 'qti-graphic-gap-match-interaction', ctor: QtiGraphicGapMatchInteractionCorrection },\n { tag: 'qti-graphic-order-interaction', ctor: QtiGraphicOrderInteractionCorrection },\n { tag: 'qti-hotspot-interaction', ctor: QtiHotspotInteractionCorrection },\n { tag: 'qti-hotspot-choice', ctor: QtiHotspotChoiceCorrection },\n { tag: 'qti-hottext-interaction', ctor: QtiHottextInteractionCorrection },\n { tag: 'qti-hottext', ctor: QtiHottextCorrection },\n { tag: 'qti-inline-choice-interaction', ctor: QtiInlineChoiceInteractionCorrection },\n { tag: 'qti-item', ctor: QtiItemCorrection },\n { tag: 'qti-test', ctor: QtiTestCorrection },\n { tag: 'qti-match-interaction', ctor: QtiMatchInteractionCorrection },\n { tag: 'qti-order-interaction', ctor: QtiOrderInteractionCorrection },\n { tag: 'qti-portable-custom-interaction', ctor: QtiPortableCustomInteractionCorrection },\n { tag: 'qti-select-point-interaction', ctor: QtiSelectPointInteractionCorrection },\n { tag: 'qti-simple-associable-choice', ctor: QtiSimpleAssociableChoiceCorrection },\n { tag: 'qti-simple-choice', ctor: QtiSimpleChoiceCorrection },\n { tag: 'qti-slider-interaction', ctor: QtiSliderInteractionCorrection },\n { tag: 'qti-text-entry-interaction', ctor: QtiTextEntryInteractionCorrection }\n] as const;\n","/**\n * Correction-mode entry point: the standard delivery elements with the correction variants\n * substituted, registered globally.\n *\n * <script type=\"module\">import '@citolab/qti-components/corrections';</script>\n *\n * The sibling of the package root. `@citolab/qti-components` registers the standard elements;\n * this registers the same set with the correction variants winning for the tags they cover, plus\n * the correction-only controls (`item-show-correct-response`, `test-show-correct-response`,\n * `item-correct-response-mode`, `item-show-candidate-correction`). Import ONE of the two.\n *\n * Why substitution rather than \"corrections on top\": the correction classes are keyed by the\n * STANDARD tag names — `QtiChoiceInteractionCorrection` is `ChoiceCorrectionMixin(\n * QtiChoiceInteraction)` registered as `qti-choice-interaction`. A registry holds one constructor\n * per tag, so this is a replacement, never an addition. Everything without a correction variant —\n * the processing operators, most test controls, interactions like media and upload — still gets\n * its standard constructor, because a page needs those to work at all.\n *\n * Every import below is a `/elements` subpath, deliberately. The package ROOTS run their\n * `register.ts` on evaluation and would define the standard constructors before this file gets to\n * choose; `/elements` exports the `{ tag, ctor }` arrays and defines nothing.\n */\nimport { qtiBaseElements } from '@qti-components/base/elements';\nimport { qtiContentElements } from '@qti-components/elements/elements';\nimport { qtiItemElements } from '@qti-components/item/elements';\nimport { qtiProcessingElements } from '@qti-components/processing/elements';\nimport { qtiTestElements } from '@qti-components/test/elements';\nimport { qtiInteractionElements } from '@qti-components/interactions/elements';\nimport { qtiCorrectionElements } from '@qti-components/corrections/elements';\n\nconst standardElements = [\n ...qtiBaseElements,\n ...qtiProcessingElements,\n ...qtiContentElements,\n ...qtiItemElements,\n ...qtiTestElements,\n ...qtiInteractionElements\n];\n\n// Keyed as `string`, not the inferred literal union: the lookup below is driven by the standard\n// tag lists, most of whose tags have no correction variant.\nconst correctionByTag = new Map<string, CustomElementConstructor>(\n qtiCorrectionElements.map(({ tag, ctor }) => [tag, ctor])\n);\n\n/**\n * Registration is first-wins and silent — every `register.ts` in the workspace guards with\n * `if (!customElements.get(tag))` so that a module graph holding two copies of a package does not\n * throw `NotSupportedError` on the second define.\n *\n * That guard makes the failure mode here invisible: if anything already pulled in\n * `@citolab/qti-components` (or a package root) the standard constructor holds the tag, this file\n * skips it, and the page renders correctly EXCEPT that nothing ever shows a correct answer.\n * Nothing throws and nothing logs. So say it out loud.\n */\nconst alreadyTaken = qtiCorrectionElements\n .filter(({ tag, ctor }) => {\n const registered = customElements.get(tag);\n return registered !== undefined && registered !== ctor;\n })\n .map(({ tag }) => tag);\n\nif (alreadyTaken.length > 0) {\n console.warn(\n `[@citolab/qti-components/corrections] ${alreadyTaken.length} tag(s) were already registered ` +\n `by another entry point, so the correction variants for them are inactive: ` +\n `${alreadyTaken.join(', ')}. Import EITHER '@citolab/qti-components' OR ` +\n `'@citolab/qti-components/corrections', not both.`\n );\n}\n\nfor (const { tag, ctor } of standardElements) {\n if (!customElements.get(tag)) customElements.define(tag, correctionByTag.get(tag) ?? ctor);\n}\n\n// The correction-only controls, which replace no standard tag.\nfor (const { tag, ctor } of qtiCorrectionElements) {\n if (!customElements.get(tag)) customElements.define(tag, ctor);\n}\n\nexport * from '@qti-components/corrections';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCO,IAAM,wBAAwB;EACnC,EAAE,KAAK,8BAA8B,MAAM,wBAAuB;EAClE,EAAE,KAAK,kCAAkC,MAAM,4BAA2B;EAC1E,EAAE,KAAK,8BAA8B,MAAM,wBAAuB;EAClE,EAAE,KAAK,8BAA8B,MAAM,wBAAuB;EAClE,EAAE,KAAK,mBAAmB,MAAM,wBAAuB;EACvD,EAAE,KAAK,mBAAmB,MAAM,yBAAwB;EACxD,EAAE,KAAK,uBAAuB,MAAM,4BAA2B;EAC/D,EAAE,KAAK,6BAA6B,MAAM,kCAAiC;EAC3E,EAAE,KAAK,0BAA0B,MAAM,+BAA8B;EACrE,EAAE,KAAK,iCAAiC,MAAM,qCAAoC;EAClF,EAAE,KAAK,gBAAgB,MAAM,qBAAoB;EACjD,EAAE,KAAK,6BAA6B,MAAM,iCAAgC;EAC1E,EAAE,KAAK,qCAAqC,MAAM,yCAAwC;EAC1F,EAAE,KAAK,qCAAqC,MAAM,wCAAuC;EACzF,EAAE,KAAK,iCAAiC,MAAM,qCAAoC;EAClF,EAAE,KAAK,2BAA2B,MAAM,gCAA+B;EACvE,EAAE,KAAK,sBAAsB,MAAM,2BAA0B;EAC7D,EAAE,KAAK,2BAA2B,MAAM,gCAA+B;EACvE,EAAE,KAAK,eAAe,MAAM,qBAAoB;EAChD,EAAE,KAAK,iCAAiC,MAAM,qCAAoC;EAClF,EAAE,KAAK,YAAY,MAAM,kBAAiB;EAC1C,EAAE,KAAK,YAAY,MAAM,kBAAiB;EAC1C,EAAE,KAAK,yBAAyB,MAAM,8BAA6B;EACnE,EAAE,KAAK,yBAAyB,MAAM,8BAA6B;EACnE,EAAE,KAAK,mCAAmC,MAAM,uCAAsC;EACtF,EAAE,KAAK,gCAAgC,MAAM,oCAAmC;EAChF,EAAE,KAAK,gCAAgC,MAAM,oCAAmC;EAChF,EAAE,KAAK,qBAAqB,MAAM,0BAAyB;EAC3D,EAAE,KAAK,0BAA0B,MAAM,+BAA8B;EACrE,EAAE,KAAK,8BAA8B,MAAM,kCAAiC;;;;ACtC9E,IAAM,mBAAmB;AAAA,EACvB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAIA,IAAM,kBAAkB,IAAI;AAAA,EAC1B,sBAAsB,IAAI,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;AAC1D;AAYA,IAAM,eAAe,sBAClB,OAAO,CAAC,EAAE,KAAK,KAAK,MAAM;AACzB,QAAM,aAAa,eAAe,IAAI,GAAG;AACzC,SAAO,eAAe,UAAa,eAAe;AACpD,CAAC,EACA,IAAI,CAAC,EAAE,IAAI,MAAM,GAAG;AAEvB,IAAI,aAAa,SAAS,GAAG;AAC3B,UAAQ;AAAA,IACN,yCAAyC,aAAa,MAAM,6GAEvD,aAAa,KAAK,IAAI,CAAC;AAAA,EAE9B;AACF;AAEA,WAAW,EAAE,KAAK,KAAK,KAAK,kBAAkB;AAC5C,MAAI,CAAC,eAAe,IAAI,GAAG,EAAG,gBAAe,OAAO,KAAK,gBAAgB,IAAI,GAAG,KAAK,IAAI;AAC3F;AAGA,WAAW,EAAE,KAAK,KAAK,KAAK,uBAAuB;AACjD,MAAI,CAAC,eAAe,IAAI,GAAG,EAAG,gBAAe,OAAO,KAAK,IAAI;AAC/D;","names":[]}
package/dist/elements.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunk-U7YCXDYC.js";
1
+ import "./chunk-RT6WZ3P7.js";
2
2
  import {
3
3
  QtiAssessmentItem,
4
4
  QtiAssessmentStimulusRef,
@@ -19,10 +19,10 @@ import {
19
19
  QtiTemplateConstraint,
20
20
  QtiTemplateDeclaration,
21
21
  QtiTemplateProcessing
22
- } from "./chunk-YLRMOX6C.js";
22
+ } from "./chunk-WKWCOV5P.js";
23
23
  import "./chunk-4DB4SC5K.js";
24
24
  import "./chunk-HDEG6BAZ.js";
25
- import "./chunk-7D3NKAGZ.js";
25
+ import "./chunk-WCWJPIUQ.js";
26
26
  export {
27
27
  QtiAssessmentItem,
28
28
  QtiAssessmentStimulusRef,
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunk-UC3T3NI3.js";
1
+ import "./chunk-XYQNTF5B.js";
2
2
  import {
3
3
  CandidateCorrectionMixin,
4
4
  ChoiceCorrectionMixin,
@@ -35,7 +35,7 @@ import {
35
35
  TestNavigationCorrection,
36
36
  TestShowCorrectResponse,
37
37
  correctionPart
38
- } from "./chunk-OIUK5BFU.js";
38
+ } from "./chunk-5SU3MP6Y.js";
39
39
  import {
40
40
  QtiAssessmentItemRef,
41
41
  QtiAssessmentSection,
@@ -73,8 +73,8 @@ import {
73
73
  TestView,
74
74
  TestViewToggle,
75
75
  ttsContext
76
- } from "./chunk-CRLXQZFA.js";
77
- import "./chunk-U7YCXDYC.js";
76
+ } from "./chunk-QCPN7E6K.js";
77
+ import "./chunk-RT6WZ3P7.js";
78
78
  import {
79
79
  QtiAssessmentItem,
80
80
  QtiAssessmentStimulusRef,
@@ -95,25 +95,17 @@ import {
95
95
  QtiTemplateConstraint,
96
96
  QtiTemplateDeclaration,
97
97
  QtiTemplateProcessing
98
- } from "./chunk-YLRMOX6C.js";
98
+ } from "./chunk-WKWCOV5P.js";
99
+ import "./chunk-MKZ374OJ.js";
99
100
  import {
100
101
  QtiAssociableHotspot,
102
+ QtiAssociateInteraction,
103
+ QtiChoiceInteraction,
101
104
  QtiCustomInteraction,
102
105
  QtiEndAttemptInteraction,
106
+ QtiExtendedTextInteraction,
103
107
  QtiGap,
104
108
  QtiGapImg,
105
- QtiInlineChoice,
106
- QtiMediaInteraction,
107
- QtiPositionObjectInteraction,
108
- QtiPositionObjectStage,
109
- QtiPrompt,
110
- QtiUploadInteraction,
111
- qtiInteractionElements
112
- } from "./chunk-43XBJ47H.js";
113
- import {
114
- QtiAssociateInteraction,
115
- QtiChoiceInteraction,
116
- QtiExtendedTextInteraction,
117
109
  QtiGapMatchInteraction,
118
110
  QtiGapText,
119
111
  QtiGraphicAssociateInteraction,
@@ -123,23 +115,30 @@ import {
123
115
  QtiHotspotInteraction,
124
116
  QtiHottext,
125
117
  QtiHottextInteraction,
118
+ QtiInlineChoice,
126
119
  QtiInlineChoiceInteraction,
127
120
  QtiMatchInteraction,
121
+ QtiMediaInteraction,
128
122
  QtiOrderInteraction,
129
123
  QtiPortableCustomInteraction,
124
+ QtiPositionObjectInteraction,
125
+ QtiPositionObjectStage,
126
+ QtiPrompt,
130
127
  QtiSelectPointInteraction,
131
128
  QtiSimpleAssociableChoice,
132
129
  QtiSimpleChoice,
133
130
  QtiSliderInteraction,
134
- QtiTextEntryInteraction
135
- } from "./chunk-Q6ZK4LRH.js";
136
- import "./chunk-M7K5C522.js";
131
+ QtiTextEntryInteraction,
132
+ QtiUploadInteraction,
133
+ qtiInteractionElements
134
+ } from "./chunk-5BXJRO5O.js";
135
+ import "./chunk-LDY4C2OT.js";
137
136
  import {
138
137
  ItemContainer,
139
138
  ItemPrintVariables,
140
139
  QtiItem
141
- } from "./chunk-LMGJOBJA.js";
142
- import "./chunk-TLTYXWW7.js";
140
+ } from "./chunk-DAUU2NJL.js";
141
+ import "./chunk-XE7BALDO.js";
143
142
  import "./chunk-4DB4SC5K.js";
144
143
  import {
145
144
  getItemByUri,
@@ -150,6 +149,7 @@ import {
150
149
  qtiTransformManifest,
151
150
  qtiTransformTest
152
151
  } from "./chunk-HDEG6BAZ.js";
152
+ import "./chunk-KCK27QBP.js";
153
153
  import {
154
154
  QtiAnd,
155
155
  QtiAnyN,
@@ -223,7 +223,7 @@ import {
223
223
  QtiVariable,
224
224
  qtiAndMixin,
225
225
  qtiSubtractMixin
226
- } from "./chunk-OVBG223G.js";
226
+ } from "./chunk-3VQSUWCK.js";
227
227
  import {
228
228
  CustomStateSetShim,
229
229
  INITIAL_SESSION_CONTEXT,
@@ -263,7 +263,7 @@ import {
263
263
  sessionContext,
264
264
  testContext,
265
265
  validationMessage
266
- } from "./chunk-7D3NKAGZ.js";
266
+ } from "./chunk-WCWJPIUQ.js";
267
267
  export {
268
268
  CandidateCorrectionMixin,
269
269
  ChoiceCorrectionMixin,
@@ -1,21 +1,13 @@
1
+ import "./chunk-MKZ374OJ.js";
1
2
  import {
2
3
  QtiAssociableHotspot,
4
+ QtiAssociateInteraction,
5
+ QtiChoiceInteraction,
3
6
  QtiCustomInteraction,
4
7
  QtiEndAttemptInteraction,
8
+ QtiExtendedTextInteraction,
5
9
  QtiGap,
6
10
  QtiGapImg,
7
- QtiInlineChoice,
8
- QtiMediaInteraction,
9
- QtiPositionObjectInteraction,
10
- QtiPositionObjectStage,
11
- QtiPrompt,
12
- QtiUploadInteraction,
13
- qtiInteractionElements
14
- } from "./chunk-43XBJ47H.js";
15
- import {
16
- QtiAssociateInteraction,
17
- QtiChoiceInteraction,
18
- QtiExtendedTextInteraction,
19
11
  QtiGapMatchInteraction,
20
12
  QtiGapText,
21
13
  QtiGraphicAssociateInteraction,
@@ -25,18 +17,25 @@ import {
25
17
  QtiHotspotInteraction,
26
18
  QtiHottext,
27
19
  QtiHottextInteraction,
20
+ QtiInlineChoice,
28
21
  QtiInlineChoiceInteraction,
29
22
  QtiMatchInteraction,
23
+ QtiMediaInteraction,
30
24
  QtiOrderInteraction,
31
25
  QtiPortableCustomInteraction,
26
+ QtiPositionObjectInteraction,
27
+ QtiPositionObjectStage,
28
+ QtiPrompt,
32
29
  QtiSelectPointInteraction,
33
30
  QtiSimpleAssociableChoice,
34
31
  QtiSimpleChoice,
35
32
  QtiSliderInteraction,
36
- QtiTextEntryInteraction
37
- } from "./chunk-Q6ZK4LRH.js";
33
+ QtiTextEntryInteraction,
34
+ QtiUploadInteraction,
35
+ qtiInteractionElements
36
+ } from "./chunk-5BXJRO5O.js";
38
37
  import "./chunk-4DB4SC5K.js";
39
- import "./chunk-7D3NKAGZ.js";
38
+ import "./chunk-WCWJPIUQ.js";
40
39
  export {
41
40
  QtiAssociableHotspot,
42
41
  QtiAssociateInteraction,
package/dist/item.js CHANGED
@@ -1,13 +1,13 @@
1
- import "./chunk-M7K5C522.js";
1
+ import "./chunk-LDY4C2OT.js";
2
2
  import {
3
3
  ItemContainer,
4
4
  ItemPrintVariables,
5
5
  QtiItem
6
- } from "./chunk-LMGJOBJA.js";
7
- import "./chunk-TLTYXWW7.js";
6
+ } from "./chunk-DAUU2NJL.js";
7
+ import "./chunk-XE7BALDO.js";
8
8
  import "./chunk-4DB4SC5K.js";
9
9
  import "./chunk-HDEG6BAZ.js";
10
- import "./chunk-7D3NKAGZ.js";
10
+ import "./chunk-WCWJPIUQ.js";
11
11
  export {
12
12
  ItemContainer,
13
13
  ItemPrintVariables,
@@ -551,8 +551,34 @@ declare class QtiPatternMatch extends QtiExpression<boolean | null> {
551
551
  getResult(): boolean | null;
552
552
  }
553
553
 
554
+ /**
555
+ * @summary Prints the value of an item variable into the item body.
556
+ * @documentation https://www.imsglobal.org/spec/qti/v3p0/info/index.html#printedVariable
557
+ *
558
+ * A container variable is printed as its values joined by `delimiter`; a record as
559
+ * `name<mapping-indicator>value` pairs joined by the same delimiter. A NULL variable — absent,
560
+ * null, or an empty container — prints nothing at all.
561
+ *
562
+ * @attr {string} identifier - Required. Identifier of the variable to print.
563
+ * @attr {string} [format] - printf-style conversion string, e.g. `%.2f` or `Score: %d`. Applies
564
+ * to each value printed. Takes precedence over `base` and `power-form`.
565
+ * @attr {number} [base=10] - Number base used when printing an integer variable.
566
+ * @attr {number} [index] - 1-based index selecting a single value of an ordered variable.
567
+ * @attr {boolean} [power-form=false] - Print numeric values in exponential form.
568
+ * @attr {string} [field] - Field of a record variable to print, instead of the whole record.
569
+ * @attr {string} [delimiter=;] - Separator between the values of an ordered/multiple/record variable.
570
+ * @attr {string} [mapping-indicator==] - Separator between a record field's name and its value.
571
+ */
554
572
  declare class QtiPrintedVariable extends LitElement {
573
+ #private;
555
574
  identifier: string;
575
+ format?: string;
576
+ base: number;
577
+ index?: number;
578
+ powerForm: boolean;
579
+ field?: string;
580
+ delimiter: string;
581
+ mappingIndicator: string;
556
582
  protected context?: ItemContext;
557
583
  render(): lit.TemplateResult<1> | typeof nothing;
558
584
  calculate(): VariableDeclaration<string | string[]>;
@@ -1,3 +1,4 @@
1
+ import "./chunk-KCK27QBP.js";
1
2
  import {
2
3
  QtiAnd,
3
4
  QtiAnyN,
@@ -71,8 +72,8 @@ import {
71
72
  QtiVariable,
72
73
  qtiAndMixin,
73
74
  qtiSubtractMixin
74
- } from "./chunk-OVBG223G.js";
75
- import "./chunk-7D3NKAGZ.js";
75
+ } from "./chunk-3VQSUWCK.js";
76
+ import "./chunk-WCWJPIUQ.js";
76
77
  export {
77
78
  QtiAnd,
78
79
  QtiAnyN,
@@ -5700,13 +5700,53 @@ export type QtiPowerSolidJsProps = {
5700
5700
  };
5701
5701
 
5702
5702
  export type QtiPrintedVariableProps = {
5703
- /** */
5703
+ /** Required. Identifier of the variable to print. */
5704
5704
  identifier?: QtiPrintedVariable["identifier"] | undefined;
5705
+ /** printf-style conversion string, e.g. `%.2f` or `Score: %d`. Applies to each value printed. Takes precedence over `base` and `power-form`. */
5706
+ format?: QtiPrintedVariable["format"] | undefined;
5707
+ /** Number base used when printing an integer variable. */
5708
+ base?: QtiPrintedVariable["base"] | undefined;
5709
+ /** 1-based index selecting a single value of an ordered variable. */
5710
+ index?: QtiPrintedVariable["index"] | undefined;
5711
+ /** Print numeric values in exponential form. */
5712
+ "power-form"?: QtiPrintedVariable["powerForm"] | undefined;
5713
+ /** Print numeric values in exponential form. */
5714
+ powerForm?: QtiPrintedVariable["powerForm"] | undefined;
5715
+ /** Field of a record variable to print, instead of the whole record. */
5716
+ field?: QtiPrintedVariable["field"] | undefined;
5717
+ /** Separator between the values of an ordered/multiple/record variable. */
5718
+ delimiter?: QtiPrintedVariable["delimiter"] | undefined;
5719
+ /** */
5720
+ undefined?: unknown | undefined;
5721
+ /** */
5722
+ "mapping-indicator"?: QtiPrintedVariable["mappingIndicator"] | undefined;
5723
+ /** */
5724
+ mappingIndicator?: QtiPrintedVariable["mappingIndicator"] | undefined;
5705
5725
  };
5706
5726
 
5707
5727
  export type QtiPrintedVariableSolidJsProps = {
5708
- /** */
5728
+ /** Required. Identifier of the variable to print. */
5709
5729
  "prop:identifier"?: QtiPrintedVariable["identifier"] | undefined;
5730
+ /** printf-style conversion string, e.g. `%.2f` or `Score: %d`. Applies to each value printed. Takes precedence over `base` and `power-form`. */
5731
+ "prop:format"?: QtiPrintedVariable["format"] | undefined;
5732
+ /** Number base used when printing an integer variable. */
5733
+ "prop:base"?: QtiPrintedVariable["base"] | undefined;
5734
+ /** 1-based index selecting a single value of an ordered variable. */
5735
+ "prop:index"?: QtiPrintedVariable["index"] | undefined;
5736
+ /** Print numeric values in exponential form. */
5737
+ "bool:power-form"?: QtiPrintedVariable["powerForm"] | undefined;
5738
+ /** Print numeric values in exponential form. */
5739
+ "prop:powerForm"?: QtiPrintedVariable["powerForm"] | undefined;
5740
+ /** Field of a record variable to print, instead of the whole record. */
5741
+ "prop:field"?: QtiPrintedVariable["field"] | undefined;
5742
+ /** Separator between the values of an ordered/multiple/record variable. */
5743
+ "prop:delimiter"?: QtiPrintedVariable["delimiter"] | undefined;
5744
+ /** */
5745
+ "prop:undefined"?: unknown | undefined;
5746
+ /** */
5747
+ "attr:mapping-indicator"?: QtiPrintedVariable["mappingIndicator"] | undefined;
5748
+ /** */
5749
+ "prop:mappingIndicator"?: QtiPrintedVariable["mappingIndicator"] | undefined;
5710
5750
 
5711
5751
  /** Set the innerHTML of the element */
5712
5752
  innerHTML?: string | undefined;
@@ -10412,7 +10452,15 @@ export type CustomElements = {
10412
10452
  *
10413
10453
  * Component attributes and properties that can be applied to the element or by using JavaScript.
10414
10454
  *
10415
- * - `identifier`: undefined
10455
+ * - `identifier`: Required. Identifier of the variable to print.
10456
+ * - `format`: printf-style conversion string, e.g. `%.2f` or `Score: %d`. Applies to each value printed. Takes precedence over `base` and `power-form`.
10457
+ * - `base`: Number base used when printing an integer variable.
10458
+ * - `index`: 1-based index selecting a single value of an ordered variable.
10459
+ * - `power-form`/`powerForm`: Print numeric values in exponential form.
10460
+ * - `field`: Field of a record variable to print, instead of the whole record.
10461
+ * - `delimiter`: Separator between the values of an ordered/multiple/record variable.
10462
+ * - `undefined`: undefined (property only)
10463
+ * - `mapping-indicator`/`mappingIndicator`: undefined
10416
10464
  *
10417
10465
  * ## Methods
10418
10466
  *
@@ -15380,7 +15428,15 @@ export type CustomElementsSolidJs = {
15380
15428
  *
15381
15429
  * Component attributes and properties that can be applied to the element or by using JavaScript.
15382
15430
  *
15383
- * - `identifier`: undefined
15431
+ * - `identifier`: Required. Identifier of the variable to print.
15432
+ * - `format`: printf-style conversion string, e.g. `%.2f` or `Score: %d`. Applies to each value printed. Takes precedence over `base` and `power-form`.
15433
+ * - `base`: Number base used when printing an integer variable.
15434
+ * - `index`: 1-based index selecting a single value of an ordered variable.
15435
+ * - `power-form`/`powerForm`: Print numeric values in exponential form.
15436
+ * - `field`: Field of a record variable to print, instead of the whole record.
15437
+ * - `delimiter`: Separator between the values of an ordered/multiple/record variable.
15438
+ * - `undefined`: undefined (property only)
15439
+ * - `mapping-indicator`/`mappingIndicator`: undefined
15384
15440
  *
15385
15441
  * ## Methods
15386
15442
  *
package/dist/test.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunk-UC3T3NI3.js";
1
+ import "./chunk-XYQNTF5B.js";
2
2
  import {
3
3
  QtiAssessmentItemRef,
4
4
  QtiAssessmentSection,
@@ -36,12 +36,12 @@ import {
36
36
  TestView,
37
37
  TestViewToggle,
38
38
  ttsContext
39
- } from "./chunk-CRLXQZFA.js";
40
- import "./chunk-YLRMOX6C.js";
41
- import "./chunk-TLTYXWW7.js";
39
+ } from "./chunk-QCPN7E6K.js";
40
+ import "./chunk-WKWCOV5P.js";
41
+ import "./chunk-XE7BALDO.js";
42
42
  import "./chunk-4DB4SC5K.js";
43
43
  import "./chunk-HDEG6BAZ.js";
44
- import "./chunk-7D3NKAGZ.js";
44
+ import "./chunk-WCWJPIUQ.js";
45
45
  export {
46
46
  QtiAssessmentItemRef,
47
47
  QtiAssessmentSection,
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@citolab/qti-components",
3
3
  "description": "QTI component utilities",
4
- "version": "8.2.0",
4
+ "version": "9.1.0",
5
5
  "author": "",
6
6
  "dependencies": {
7
7
  "@heximal/templates": "^0.1.5",
8
8
  "@lit/context": "^1.1.6",
9
- "lit": "^3.3.3"
9
+ "lit": "^3.3.1"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@qti-components/base": "^2.2.0",
13
13
  "@qti-components/corrections": "^0.3.0",
14
14
  "@qti-components/elements": "^1.7.0",
15
15
  "@qti-components/interactions": "^1.10.4",
16
- "@qti-components/item": "^1.4.3",
16
+ "@qti-components/item": "^1.4.4",
17
17
  "@qti-components/loader": "^1.3.3",
18
- "@qti-components/processing": "^1.4.1",
19
- "@qti-components/test": "^1.6.0",
20
- "@qti-components/theme": "^2.1.0",
18
+ "@qti-components/processing": "^1.5.0",
19
+ "@qti-components/test": "^1.6.2",
20
+ "@qti-components/theme": "^2.2.0",
21
21
  "@qti-components/transformers": "^1.7.2"
22
22
  },
23
23
  "exports": {
@@ -92,7 +92,7 @@
92
92
  "scripts": {
93
93
  "-": "---build---",
94
94
  "attw": "attw --pack --profile esm-only --format table",
95
- "build": "run-s cem:react-types cem:react-types:patch-ref build:bundle",
95
+ "build": "pnpm run clean && run-s cem:react-types cem:react-types:patch-ref build:bundle",
96
96
  "build:bundle": "run-p tsup css",
97
97
  "cem:react-types": "CEM_OUTDIR=packages/qti-components/ pnpm -C ../.. run cem:core && node -e \"require('fs').writeFileSync('dist/qti-components-jsx.js','export {};\\n')\"",
98
98
  "cem:react-types:patch-ref": "node ../../tools/build/patch-jsx-react-ref.mjs dist/qti-components-jsx.d.ts",