@citolab/qti-components 7.3.18 → 7.3.19

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 (154) hide show
  1. package/cdn/chunks/chunk-23JT53R2.js +1 -0
  2. package/cdn/chunks/chunk-2OA2G5PN.js +5 -0
  3. package/cdn/chunks/chunk-3HIY5HSB.js +1 -0
  4. package/cdn/chunks/chunk-3ZLIRREM.js +1466 -0
  5. package/cdn/chunks/chunk-4F3OLGZ4.js +5 -0
  6. package/cdn/chunks/chunk-6IY26BVE.js +23 -0
  7. package/cdn/chunks/chunk-7HEAECQ2.js +1466 -0
  8. package/cdn/chunks/chunk-7T6OJ2OQ.js +1482 -0
  9. package/cdn/chunks/chunk-B7NVY4AR.js +23 -0
  10. package/cdn/chunks/chunk-BFMN6REI.js +5 -0
  11. package/cdn/chunks/chunk-BSK7IIBZ.js +1 -0
  12. package/cdn/chunks/chunk-CYSQXIRZ.js +5 -0
  13. package/cdn/chunks/chunk-E6IOJ4MV.js +23 -0
  14. package/cdn/chunks/chunk-ECKBRC27.js +1482 -0
  15. package/cdn/chunks/chunk-ECLB2ECD.js +5 -0
  16. package/cdn/chunks/chunk-FDOVZYP4.js +5 -0
  17. package/cdn/chunks/chunk-FVIBMJDJ.js +5 -0
  18. package/cdn/chunks/chunk-GTSQO7SP.js +1 -0
  19. package/cdn/chunks/chunk-GVZHKB2Y.js +1482 -0
  20. package/cdn/chunks/chunk-IMHR3S57.js +1 -0
  21. package/cdn/chunks/chunk-JG53AUXR.js +1 -0
  22. package/cdn/chunks/chunk-JVW572MO.js +1 -0
  23. package/cdn/chunks/chunk-KM5SOM7G.js +1482 -0
  24. package/cdn/chunks/chunk-KY6SSNGO.js +5 -0
  25. package/cdn/chunks/chunk-M544CJHK.js +5 -0
  26. package/cdn/chunks/chunk-N4LMZHIZ.js +5 -0
  27. package/cdn/chunks/chunk-ODYPYZCY.js +5 -0
  28. package/cdn/chunks/chunk-P5MQE2M6.js +5 -0
  29. package/cdn/chunks/chunk-RKU2XDKG.js +2 -0
  30. package/cdn/chunks/chunk-SVVO2SFS.js +1 -0
  31. package/cdn/chunks/chunk-V2NH5MXS.js +5 -0
  32. package/cdn/chunks/chunk-VB3GRBCX.js +1 -0
  33. package/cdn/chunks/chunk-XHSJOTCJ.js +5 -0
  34. package/cdn/chunks/chunk-XLFLYMNJ.js +1482 -0
  35. package/cdn/index.global.js +1 -1
  36. package/cdn/index.js +1 -1
  37. package/cdn/qti-components/index.js +1 -1
  38. package/cdn/qti-item/components/item-container.js +1 -1
  39. package/cdn/qti-item/core/index.js +1 -1
  40. package/cdn/qti-loader/index.js +1 -1
  41. package/cdn/qti-test/components/index.js +1 -1
  42. package/cdn/qti-test/components/test-container.js +1 -1
  43. package/cdn/qti-test/components/test-navigation.js +1 -1
  44. package/cdn/qti-test/components/test-scoring-buttons.js +1 -1
  45. package/cdn/qti-test/components/test-scoring-feedback.js +1 -1
  46. package/cdn/qti-test/core/index.js +1 -1
  47. package/cdn/qti-transformers/index.js +1 -1
  48. package/dist/chunks/chunk-2EGQQQHL.js +31 -0
  49. package/dist/chunks/chunk-2EGQQQHL.js.map +1 -0
  50. package/dist/chunks/chunk-45FDEM7M.js +94 -0
  51. package/dist/chunks/chunk-45FDEM7M.js.map +1 -0
  52. package/dist/chunks/chunk-4B4DRCXO.js +94 -0
  53. package/dist/chunks/chunk-4B4DRCXO.js.map +1 -0
  54. package/dist/chunks/chunk-5IYIGX6A.js +94 -0
  55. package/dist/chunks/chunk-5IYIGX6A.js.map +1 -0
  56. package/dist/chunks/chunk-AH3ZDQHQ.js +913 -0
  57. package/dist/chunks/chunk-AH3ZDQHQ.js.map +1 -0
  58. package/dist/chunks/chunk-BAZMB7Z3.js +8009 -0
  59. package/dist/chunks/chunk-BAZMB7Z3.js.map +1 -0
  60. package/dist/chunks/chunk-BXUNJ6XB.js +78 -0
  61. package/dist/chunks/chunk-BXUNJ6XB.js.map +1 -0
  62. package/dist/chunks/chunk-CTESMSQO.js +56 -0
  63. package/dist/chunks/chunk-CTESMSQO.js.map +1 -0
  64. package/dist/chunks/chunk-CVMIO3DA.js +913 -0
  65. package/dist/chunks/chunk-CVMIO3DA.js.map +1 -0
  66. package/dist/chunks/chunk-DJWEI2NH.js +502 -0
  67. package/dist/chunks/chunk-DJWEI2NH.js.map +1 -0
  68. package/dist/chunks/chunk-E6V3JHVT.js +31 -0
  69. package/dist/chunks/chunk-E6V3JHVT.js.map +1 -0
  70. package/dist/chunks/chunk-EFY3NEXY.js +94 -0
  71. package/dist/chunks/chunk-EFY3NEXY.js.map +1 -0
  72. package/dist/chunks/chunk-EXBK4TXV.js +273 -0
  73. package/dist/chunks/chunk-EXBK4TXV.js.map +1 -0
  74. package/dist/chunks/chunk-FXO6HW6L.js +8084 -0
  75. package/dist/chunks/chunk-FXO6HW6L.js.map +1 -0
  76. package/dist/chunks/chunk-GIY6GNXQ.js +913 -0
  77. package/dist/chunks/chunk-GIY6GNXQ.js.map +1 -0
  78. package/dist/chunks/chunk-GT6TR4B6.js +94 -0
  79. package/dist/chunks/chunk-GT6TR4B6.js.map +1 -0
  80. package/dist/chunks/chunk-H67RKRFW.js +94 -0
  81. package/dist/chunks/chunk-H67RKRFW.js.map +1 -0
  82. package/dist/chunks/chunk-I5EA6DJB.js +92 -0
  83. package/dist/chunks/chunk-I5EA6DJB.js.map +1 -0
  84. package/dist/chunks/chunk-LU5A5PN5.js +8084 -0
  85. package/dist/chunks/chunk-LU5A5PN5.js.map +1 -0
  86. package/dist/chunks/chunk-NBENQI27.js +273 -0
  87. package/dist/chunks/chunk-NBENQI27.js.map +1 -0
  88. package/dist/chunks/chunk-NEAO4XCM.js +913 -0
  89. package/dist/chunks/chunk-NEAO4XCM.js.map +1 -0
  90. package/dist/chunks/chunk-NPZ3WHOS.js +94 -0
  91. package/dist/chunks/chunk-NPZ3WHOS.js.map +1 -0
  92. package/dist/chunks/chunk-OGAKPUCC.js +502 -0
  93. package/dist/chunks/chunk-OGAKPUCC.js.map +1 -0
  94. package/dist/chunks/chunk-RL3NBBKW.js +913 -0
  95. package/dist/chunks/chunk-RL3NBBKW.js.map +1 -0
  96. package/dist/chunks/chunk-SV356YP4.js +31 -0
  97. package/dist/chunks/chunk-SV356YP4.js.map +1 -0
  98. package/dist/chunks/chunk-TU6COU44.js +82 -0
  99. package/dist/chunks/chunk-TU6COU44.js.map +1 -0
  100. package/dist/chunks/chunk-VEASE2VL.js +913 -0
  101. package/dist/chunks/chunk-VEASE2VL.js.map +1 -0
  102. package/dist/chunks/chunk-VHSCCVNF.js +8024 -0
  103. package/dist/chunks/chunk-VHSCCVNF.js.map +1 -0
  104. package/dist/chunks/chunk-VRR4ODZY.js +8009 -0
  105. package/dist/chunks/chunk-VRR4ODZY.js.map +1 -0
  106. package/dist/chunks/chunk-WFUXZ4UT.js +502 -0
  107. package/dist/chunks/chunk-WFUXZ4UT.js.map +1 -0
  108. package/dist/chunks/chunk-Y3UM2YVB.js +8025 -0
  109. package/dist/chunks/chunk-Y3UM2YVB.js.map +1 -0
  110. package/dist/exports/computed-item.context.d.ts +1 -1
  111. package/dist/exports/computed.context.d.ts +2 -2
  112. package/dist/exports/interaction.d.ts +1 -1
  113. package/dist/exports/item.context.d.ts +1 -1
  114. package/dist/exports/qti-assessment-item.context.d.ts +1 -1
  115. package/dist/exports/qti-condition-expression.d.ts +1 -1
  116. package/dist/exports/qti-expression.d.ts +1 -1
  117. package/dist/exports/qti-test.d.ts +2 -2
  118. package/dist/exports/session.context.d.ts +2 -2
  119. package/dist/exports/test.context.d.ts +1 -1
  120. package/dist/exports/variables.d.ts +1 -1
  121. package/dist/index.d.ts +3 -3
  122. package/dist/index.js +10 -10
  123. package/dist/qti-components/index.d.ts +2 -2
  124. package/dist/qti-components/index.js +2 -2
  125. package/dist/qti-item/components/item-container.js +2 -2
  126. package/dist/qti-item/components/item-show-correct-response.d.ts +1 -1
  127. package/dist/qti-item/components/print-item-variables.d.ts +1 -1
  128. package/dist/qti-item/core/index.d.ts +1 -1
  129. package/dist/qti-item/core/index.js +3 -3
  130. package/dist/qti-loader/index.d.ts +1 -1
  131. package/dist/qti-loader/index.js +2 -2
  132. package/dist/qti-response-declaration-CIPGNbno.d.ts +1361 -0
  133. package/dist/qti-response-declaration-CXb5CI4-.d.ts +1361 -0
  134. package/dist/qti-test/components/index.d.ts +2 -2
  135. package/dist/qti-test/components/index.js +5 -5
  136. package/dist/qti-test/components/test-container.js +2 -2
  137. package/dist/qti-test/components/test-navigation.d.ts +2 -2
  138. package/dist/qti-test/components/test-navigation.js +1 -1
  139. package/dist/qti-test/components/test-next.d.ts +2 -2
  140. package/dist/qti-test/components/test-prev.d.ts +2 -2
  141. package/dist/qti-test/components/test-print-context.d.ts +2 -2
  142. package/dist/qti-test/components/test-print-item-variables.d.ts +2 -2
  143. package/dist/qti-test/components/test-scoring-buttons.d.ts +2 -2
  144. package/dist/qti-test/components/test-scoring-buttons.js +1 -1
  145. package/dist/qti-test/components/test-scoring-feedback.d.ts +2 -2
  146. package/dist/qti-test/components/test-scoring-feedback.js +1 -1
  147. package/dist/qti-test/components/test-show-correct-response.d.ts +2 -2
  148. package/dist/qti-test/core/index.d.ts +3 -3
  149. package/dist/qti-test/core/index.js +3 -3
  150. package/dist/qti-test-feedback-Ddb0QQyz.d.ts +91 -0
  151. package/dist/qti-test-feedback-TcrkevLg.d.ts +91 -0
  152. package/dist/qti-transformers/index.d.ts +17 -1
  153. package/dist/qti-transformers/index.js +1 -1
  154. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ import {
2
+ computedItemContext
3
+ } from "./chunk-4OGJBG35.js";
4
+ import {
5
+ __decorateClass
6
+ } from "./chunk-H2JE6IVU.js";
7
+
8
+ // src/lib/qti-item/core/qti-item.ts
9
+ import { provide } from "@lit/context";
10
+ import { html, LitElement } from "lit";
11
+ import { customElement, state } from "lit/decorators.js";
12
+ var QtiItem = class extends LitElement {
13
+ constructor() {
14
+ super();
15
+ // Store event handlers as instance properties
16
+ this._onItemContextChanged = this._handleItemContextChanged.bind(this);
17
+ this._onAssessmentItemConnected = this._handleAssessmentItemConnected.bind(this);
18
+ this._onHandleTestShowCorrectResponse = this._handleTestShowCorrectResponse.bind(this);
19
+ this.addEventListener("qti-item-context-updated", this._onItemContextChanged);
20
+ this.addEventListener("qti-assessment-item-connected", this._onAssessmentItemConnected);
21
+ this.addEventListener("item-show-correct-response", this._onHandleTestShowCorrectResponse);
22
+ }
23
+ _handleItemContextChanged(e) {
24
+ this._updateItemVariablesInTestContext(e.detail.itemContext.identifier, e.detail?.itemContext?.variables || []);
25
+ }
26
+ _handleAssessmentItemConnected(e) {
27
+ const fullVariables = e.detail._context.variables;
28
+ this._qtiAssessmentItem = e.detail;
29
+ this.computedContext = this.computedContext?.identifier === this._qtiAssessmentItem.identifier ? { ...this.computedContext, title: this._qtiAssessmentItem.title } : {
30
+ identifier: this._qtiAssessmentItem.identifier,
31
+ title: this._qtiAssessmentItem.title,
32
+ adaptive: this._qtiAssessmentItem.getAttribute("adaptive")?.toLowerCase() === "true" || false,
33
+ variables: fullVariables
34
+ };
35
+ this._updateItemVariablesInTestContext(this._qtiAssessmentItem.identifier, fullVariables || []);
36
+ }
37
+ _handleTestShowCorrectResponse(e) {
38
+ if (this._qtiAssessmentItem) {
39
+ this._qtiAssessmentItem.showCorrectResponse(e.detail);
40
+ }
41
+ }
42
+ _updateItemVariablesInTestContext(identifier, variables) {
43
+ const rawscore = variables?.find((vr) => vr.identifier == "SCORE")?.value;
44
+ const score = parseFloat(rawscore?.toString());
45
+ const completionStatus = variables?.find((v) => v.identifier === "completionStatus")?.value;
46
+ const correct = score !== void 0 && !isNaN(score) && score > 0;
47
+ const incorrect = score !== void 0 && !isNaN(score) && score <= 0;
48
+ const completed = completionStatus === "completed";
49
+ this.computedContext = {
50
+ ...this.computedContext,
51
+ identifier,
52
+ correct,
53
+ incorrect,
54
+ completed,
55
+ variables
56
+ };
57
+ }
58
+ render() {
59
+ return html`<slot></slot>`;
60
+ }
61
+ disconnectedCallback() {
62
+ super.disconnectedCallback();
63
+ this.removeEventListener("qti-item-context-changed", this._onItemContextChanged);
64
+ this.removeEventListener("qti-assessment-item-connected", this._onAssessmentItemConnected);
65
+ }
66
+ };
67
+ __decorateClass([
68
+ state(),
69
+ provide({ context: computedItemContext })
70
+ ], QtiItem.prototype, "computedContext", 2);
71
+ QtiItem = __decorateClass([
72
+ customElement("qti-item")
73
+ ], QtiItem);
74
+
75
+ export {
76
+ QtiItem
77
+ };
78
+ //# sourceMappingURL=chunk-BXUNJ6XB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-item/core/qti-item.ts"],"sourcesContent":["import { provide } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\n\nimport { computedItemContext } from '../../exports/computed-item.context';\n\nimport type { QtiAssessmentItem } from '../../qti-components';\nimport type { ItemContext } from '../../exports/item.context';\nimport type { VariableDeclaration } from '../../exports/variables';\nimport type { ComputedItemContext } from '../../exports/computed-item.context';\n\n/**\n * `<qti-item>` is a custom element designed for rendering a single `qti-assessment-item`.\n * It can also host some functionalities to interact with the item like scoring, showing feedback, etc.\n * Placing a mandatory `<item-container>` inside '<qti-item>' will load or parse the item and render it.\n * See `<item-container>` for more details.\n *\n * ```html\n * <qti-item>\n * <item-container class=\"m-4 bg-white\" item-url=\"./path/to/item.xml\"></item-container>\n * </qti-item>\n * ```\n */\n@customElement('qti-item')\nexport class QtiItem extends LitElement {\n @state()\n @provide({ context: computedItemContext })\n public computedContext: ComputedItemContext;\n private _qtiAssessmentItem?: QtiAssessmentItem;\n // Store event handlers as instance properties\n private _onItemContextChanged = this._handleItemContextChanged.bind(this);\n private _onAssessmentItemConnected = this._handleAssessmentItemConnected.bind(this);\n private _onHandleTestShowCorrectResponse = this._handleTestShowCorrectResponse.bind(this);\n constructor() {\n super();\n this.addEventListener('qti-item-context-updated', this._onItemContextChanged);\n this.addEventListener('qti-assessment-item-connected', this._onAssessmentItemConnected);\n this.addEventListener('item-show-correct-response', this._onHandleTestShowCorrectResponse);\n }\n\n private _handleItemContextChanged(e: CustomEvent<{ itemContext: ItemContext }>) {\n this._updateItemVariablesInTestContext(e.detail.itemContext.identifier, e.detail?.itemContext?.variables || []);\n }\n\n private _handleAssessmentItemConnected(e: CustomEvent<QtiAssessmentItem>) {\n const fullVariables = (e.detail as any)._context.variables;\n this._qtiAssessmentItem = e.detail;\n this.computedContext =\n this.computedContext?.identifier === this._qtiAssessmentItem.identifier\n ? { ...this.computedContext, title: this._qtiAssessmentItem.title }\n : ({\n identifier: this._qtiAssessmentItem.identifier,\n title: this._qtiAssessmentItem.title,\n adaptive: this._qtiAssessmentItem.getAttribute('adaptive')?.toLowerCase() === 'true' || false,\n variables: fullVariables\n } as ComputedItemContext);\n this._updateItemVariablesInTestContext(this._qtiAssessmentItem.identifier, fullVariables || []);\n }\n\n private _handleTestShowCorrectResponse(e: CustomEvent<boolean>) {\n if (this._qtiAssessmentItem) {\n this._qtiAssessmentItem.showCorrectResponse(e.detail);\n }\n }\n\n private _updateItemVariablesInTestContext(\n identifier: string,\n variables: readonly VariableDeclaration<string | string[] | null>[]\n ): void {\n const rawscore = variables?.find(vr => vr.identifier == 'SCORE')?.value;\n const score = parseFloat(rawscore?.toString());\n const completionStatus = variables?.find(v => v.identifier === 'completionStatus')?.value;\n\n const correct = score !== undefined && !isNaN(score) && score > 0;\n const incorrect = score !== undefined && !isNaN(score) && score <= 0;\n const completed = completionStatus === 'completed';\n this.computedContext = {\n ...this.computedContext,\n identifier,\n correct,\n incorrect,\n completed,\n variables\n };\n }\n\n render() {\n return html`<slot></slot>`;\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('qti-item-context-changed', this._onItemContextChanged);\n this.removeEventListener('qti-assessment-item-connected', this._onAssessmentItemConnected);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-item': QtiItem;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,aAAa;AAsB9B,IAAM,UAAN,cAAsB,WAAW;AAAA,EAStC,cAAc;AACZ,UAAM;AAJR;AAAA,SAAQ,wBAAwB,KAAK,0BAA0B,KAAK,IAAI;AACxE,SAAQ,6BAA6B,KAAK,+BAA+B,KAAK,IAAI;AAClF,SAAQ,mCAAmC,KAAK,+BAA+B,KAAK,IAAI;AAGtF,SAAK,iBAAiB,4BAA4B,KAAK,qBAAqB;AAC5E,SAAK,iBAAiB,iCAAiC,KAAK,0BAA0B;AACtF,SAAK,iBAAiB,8BAA8B,KAAK,gCAAgC;AAAA,EAC3F;AAAA,EAEQ,0BAA0B,GAA8C;AAC9E,SAAK,kCAAkC,EAAE,OAAO,YAAY,YAAY,EAAE,QAAQ,aAAa,aAAa,CAAC,CAAC;AAAA,EAChH;AAAA,EAEQ,+BAA+B,GAAmC;AACxE,UAAM,gBAAiB,EAAE,OAAe,SAAS;AACjD,SAAK,qBAAqB,EAAE;AAC5B,SAAK,kBACH,KAAK,iBAAiB,eAAe,KAAK,mBAAmB,aACzD,EAAE,GAAG,KAAK,iBAAiB,OAAO,KAAK,mBAAmB,MAAM,IAC/D;AAAA,MACC,YAAY,KAAK,mBAAmB;AAAA,MACpC,OAAO,KAAK,mBAAmB;AAAA,MAC/B,UAAU,KAAK,mBAAmB,aAAa,UAAU,GAAG,YAAY,MAAM,UAAU;AAAA,MACxF,WAAW;AAAA,IACb;AACN,SAAK,kCAAkC,KAAK,mBAAmB,YAAY,iBAAiB,CAAC,CAAC;AAAA,EAChG;AAAA,EAEQ,+BAA+B,GAAyB;AAC9D,QAAI,KAAK,oBAAoB;AAC3B,WAAK,mBAAmB,oBAAoB,EAAE,MAAM;AAAA,IACtD;AAAA,EACF;AAAA,EAEQ,kCACN,YACA,WACM;AACN,UAAM,WAAW,WAAW,KAAK,QAAM,GAAG,cAAc,OAAO,GAAG;AAClE,UAAM,QAAQ,WAAW,UAAU,SAAS,CAAC;AAC7C,UAAM,mBAAmB,WAAW,KAAK,OAAK,EAAE,eAAe,kBAAkB,GAAG;AAEpF,UAAM,UAAU,UAAU,UAAa,CAAC,MAAM,KAAK,KAAK,QAAQ;AAChE,UAAM,YAAY,UAAU,UAAa,CAAC,MAAM,KAAK,KAAK,SAAS;AACnE,UAAM,YAAY,qBAAqB;AACvC,SAAK,kBAAkB;AAAA,MACrB,GAAG,KAAK;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AAAA,EAES,uBAAuB;AAC9B,UAAM,qBAAqB;AAC3B,SAAK,oBAAoB,4BAA4B,KAAK,qBAAqB;AAC/E,SAAK,oBAAoB,iCAAiC,KAAK,0BAA0B;AAAA,EAC3F;AACF;AApES;AAAA,EAFN,MAAM;AAAA,EACN,QAAQ,EAAE,SAAS,oBAAoB,CAAC;AAAA,GAF9B,QAGJ;AAHI,UAAN;AAAA,EADN,cAAc,UAAU;AAAA,GACZ;","names":[]}
@@ -0,0 +1,56 @@
1
+ import {
2
+ computedContext
3
+ } from "./chunk-AZIKAG7K.js";
4
+ import {
5
+ __decorateClass
6
+ } from "./chunk-H2JE6IVU.js";
7
+
8
+ // src/lib/qti-test/components/test-scoring-feedback.ts
9
+ import { consume } from "@lit/context";
10
+ import { html, LitElement } from "lit";
11
+ import { customElement, property } from "lit/decorators.js";
12
+ var TestScoringFeedback = class extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.view = null;
16
+ }
17
+ render() {
18
+ const activeItem = this.computedContext?.testParts.flatMap((testPart) => testPart.sections.flatMap((section) => section.items)).find((item) => item.active);
19
+ if (!activeItem || !activeItem.variables) return html``;
20
+ if (activeItem["category"] === "dep-informational") return html`<div>${this.dataset.informational}</div>`;
21
+ const completionStatus = activeItem?.variables.find((v) => v.identifier === "completionStatus")?.value;
22
+ const scoreOutcome = activeItem?.variables.find((vr) => vr.identifier == "SCORE");
23
+ const score = parseFloat(scoreOutcome?.value);
24
+ const externalScored = activeItem["externalScored"];
25
+ const feedbackText = () => {
26
+ if (completionStatus !== "completed") {
27
+ return this.dataset.textNoResponse;
28
+ }
29
+ if (!externalScored && score !== void 0 && !Number.isNaN(score)) {
30
+ return score > 0 ? this.dataset.textCorrect : this.dataset.textIncorrect;
31
+ }
32
+ if (externalScored === "externalMachine") {
33
+ return Number.isNaN(score) || score === void 0 ? this.dataset.scoreUnknown : `We hebben je antwoord ${score === 0 ? "geen punten" : score == 1 ? "\xE9\xE9n punt" : `${score} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`;
34
+ }
35
+ if (externalScored === "human") {
36
+ return Number.isNaN(score) ? "" : "Deze score heb je zelf toegekend.";
37
+ }
38
+ return this.dataset.inProgress;
39
+ };
40
+ return html`<div>${feedbackText()}</div>`;
41
+ }
42
+ };
43
+ __decorateClass([
44
+ consume({ context: computedContext, subscribe: true })
45
+ ], TestScoringFeedback.prototype, "computedContext", 2);
46
+ __decorateClass([
47
+ property({ type: String, attribute: "view" })
48
+ ], TestScoringFeedback.prototype, "view", 2);
49
+ TestScoringFeedback = __decorateClass([
50
+ customElement("test-scoring-feedback")
51
+ ], TestScoringFeedback);
52
+
53
+ export {
54
+ TestScoringFeedback
55
+ };
56
+ //# sourceMappingURL=chunk-CTESMSQO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-test/components/test-scoring-feedback.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { computedContext } from '../../exports/computed.context';\n\nimport type { OutcomeVariable } from '../../exports/variables';\nimport type { ComputedContext } from '../../exports/computed.context';\nimport type { ViewMode } from 'storybook/internal/types';\n\n@customElement('test-scoring-feedback')\nexport class TestScoringFeedback extends LitElement {\n @consume({ context: computedContext, subscribe: true })\n protected computedContext?: ComputedContext;\n\n @property({ type: String, attribute: 'view' })\n public view: ViewMode = null;\n\n render() {\n const activeItem = this.computedContext?.testParts\n .flatMap(testPart => testPart.sections.flatMap(section => section.items))\n .find(item => item.active);\n\n if (!activeItem || !activeItem.variables) return html``;\n\n if (activeItem['category'] === 'dep-informational') return html`<div>${this.dataset.informational}</div>`;\n\n const completionStatus = activeItem?.variables.find(v => v.identifier === 'completionStatus')?.value;\n const scoreOutcome = activeItem?.variables.find(vr => vr.identifier == 'SCORE') as OutcomeVariable;\n\n const score = parseFloat(scoreOutcome?.value as string);\n const externalScored = activeItem['externalScored'];\n\n const feedbackText = () => {\n if (completionStatus !== 'completed') {\n return this.dataset.textNoResponse;\n }\n\n if (!externalScored && score !== undefined && !Number.isNaN(score)) {\n return score > 0 ? this.dataset.textCorrect : this.dataset.textIncorrect;\n }\n\n if (externalScored === 'externalMachine') {\n return Number.isNaN(score) || score === undefined\n ? this.dataset.scoreUnknown\n : `We hebben je antwoord ${score === 0 ? 'geen punten' : score == 1 ? 'één punt' : `${score} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`;\n }\n\n if (externalScored === 'human') {\n return Number.isNaN(score) ? '' : 'Deze score heb je zelf toegekend.';\n }\n\n return this.dataset.inProgress;\n };\n\n return html`<div>${feedbackText()}</div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-scoring-feedback': TestScoringFeedback;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,gBAAgB;AASjC,IAAM,sBAAN,cAAkC,WAAW;AAAA,EAA7C;AAAA;AAKL,SAAO,OAAiB;AAAA;AAAA,EAExB,SAAS;AACP,UAAM,aAAa,KAAK,iBAAiB,UACtC,QAAQ,cAAY,SAAS,SAAS,QAAQ,aAAW,QAAQ,KAAK,CAAC,EACvE,KAAK,UAAQ,KAAK,MAAM;AAE3B,QAAI,CAAC,cAAc,CAAC,WAAW,UAAW,QAAO;AAEjD,QAAI,WAAW,UAAU,MAAM,oBAAqB,QAAO,YAAY,KAAK,QAAQ,aAAa;AAEjG,UAAM,mBAAmB,YAAY,UAAU,KAAK,OAAK,EAAE,eAAe,kBAAkB,GAAG;AAC/F,UAAM,eAAe,YAAY,UAAU,KAAK,QAAM,GAAG,cAAc,OAAO;AAE9E,UAAM,QAAQ,WAAW,cAAc,KAAe;AACtD,UAAM,iBAAiB,WAAW,gBAAgB;AAElD,UAAM,eAAe,MAAM;AACzB,UAAI,qBAAqB,aAAa;AACpC,eAAO,KAAK,QAAQ;AAAA,MACtB;AAEA,UAAI,CAAC,kBAAkB,UAAU,UAAa,CAAC,OAAO,MAAM,KAAK,GAAG;AAClE,eAAO,QAAQ,IAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ;AAAA,MAC7D;AAEA,UAAI,mBAAmB,mBAAmB;AACxC,eAAO,OAAO,MAAM,KAAK,KAAK,UAAU,SACpC,KAAK,QAAQ,eACb,yBAAyB,UAAU,IAAI,gBAAgB,SAAS,IAAI,mBAAa,GAAG,KAAK,SAAS;AAAA,MACxG;AAEA,UAAI,mBAAmB,SAAS;AAC9B,eAAO,OAAO,MAAM,KAAK,IAAI,KAAK;AAAA,MACpC;AAEA,aAAO,KAAK,QAAQ;AAAA,IACtB;AAEA,WAAO,YAAY,aAAa,CAAC;AAAA,EACnC;AACF;AA5CY;AAAA,EADT,QAAQ,EAAE,SAAS,iBAAiB,WAAW,KAAK,CAAC;AAAA,GAD3C,oBAED;AAGH;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,WAAW,OAAO,CAAC;AAAA,GAJlC,oBAKJ;AALI,sBAAN;AAAA,EADN,cAAc,uBAAuB;AAAA,GACzB;","names":[]}