@citolab/qti-components 7.0.5 → 7.0.6-next.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 (246) hide show
  1. package/cdn/{chunks/chunk-M6BOWL2U.js → chunk-7BKWTY4S.js} +1 -1
  2. package/cdn/{chunks/chunk-PXH5KN5O.js → chunk-7CQ4ETXL.js} +1 -1
  3. package/cdn/{chunks/chunk-5O3Z7TDV.js → chunk-7ENNZNJ4.js} +1 -1
  4. package/cdn/{chunks/chunk-JLNHEMQG.js → chunk-7LGM2TQA.js} +1 -1
  5. package/cdn/{chunks/chunk-4UJBK6JO.js → chunk-DLMFCDQX.js} +1 -1
  6. package/cdn/{chunks/chunk-P5IE36FO.js → chunk-EQGXFSYL.js} +1 -1
  7. package/cdn/{chunks/chunk-VYANBI35.js → chunk-F5VW77RE.js} +1 -1
  8. package/cdn/{chunks/chunk-RBEI6NIF.js → chunk-FNVXN5CO.js} +1 -1
  9. package/cdn/{chunks/chunk-65LFT33L.js → chunk-GBB54IPA.js} +1 -1
  10. package/cdn/{chunks/chunk-G5O7EN45.js → chunk-IV7UP34N.js} +1 -1
  11. package/cdn/{chunks/chunk-SMKIYFFI.js → chunk-JS4S7ZI7.js} +1 -1
  12. package/cdn/{chunks/chunk-M3YRM3AV.js → chunk-POT65ZY7.js} +1 -1
  13. package/cdn/{chunks/chunk-V6B54FQW.js → chunk-Q7PVZA43.js} +1 -1
  14. package/cdn/chunk-QJPHXAUE.js +1 -0
  15. package/cdn/{chunks/chunk-T3YDLD2H.js → chunk-QP57JHGY.js} +1 -1
  16. package/cdn/{chunks/chunk-CSUKVUZF.js → chunk-RB6CONZW.js} +1 -1
  17. package/cdn/chunk-RSRX5JYB.js +1 -0
  18. package/cdn/{chunks/chunk-LPWIM7QJ.js → chunk-W7X6GNEX.js} +1 -1
  19. package/cdn/{chunks/chunk-6D25UFJR.js → chunk-ZEX7TYC7.js} +1 -1
  20. package/cdn/index.js +1 -4503
  21. package/cdn/qti-components/index.js +1 -924
  22. package/cdn/qti-item/components/index.js +1 -3549
  23. package/cdn/qti-item/components/item-container.js +1 -3549
  24. package/cdn/qti-item/index.js +1 -3549
  25. package/cdn/qti-item/qti-item.js +1 -1
  26. package/cdn/qti-loader/index.js +1 -23
  27. package/cdn/qti-test/components/index.js +1 -3598
  28. package/cdn/qti-test/components/styles.js +1 -17
  29. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  30. package/cdn/qti-test/components/test-container.js +1 -3549
  31. package/cdn/qti-test/components/test-item-link.js +1 -24
  32. package/cdn/qti-test/components/test-next.js +1 -24
  33. package/cdn/qti-test/components/test-next.spec.js +247 -4749
  34. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
  35. package/cdn/qti-test/components/test-prev.js +1 -24
  36. package/cdn/qti-test/components/test-view.js +1 -11
  37. package/cdn/qti-test/context/index.js +1 -1
  38. package/cdn/qti-test/context/test.context.js +1 -1
  39. package/cdn/qti-test/index.js +1 -3598
  40. package/cdn/qti-test/mixins/index.js +1 -23
  41. package/cdn/qti-test/mixins/test-loader.mixin.js +1 -23
  42. package/cdn/qti-test/mixins/test-navigation.mixin.js +1 -1
  43. package/cdn/qti-test/mixins/test-view.mixin.js +1 -1
  44. package/cdn/qti-test/qti-assessment-test/index.js +1 -1
  45. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +1 -1
  46. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +1 -1
  47. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +1 -1
  48. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +1 -1
  49. package/cdn/qti-test/qti-test.js +1 -23
  50. package/cdn/qti-test/test-base.js +1 -1
  51. package/cdn/qti-transformers/index.js +1 -23
  52. package/dist/{chunks/chunk-XDMSEAYC.js → chunk-2OA7E3E7.js} +1 -1
  53. package/dist/chunk-2OA7E3E7.js.map +1 -0
  54. package/dist/chunk-37X6KZO3.js +1 -0
  55. package/dist/{chunks/chunk-Y6UWSECL.js → chunk-3WLCQQN7.js} +1 -1
  56. package/dist/chunk-3YVIK6LO.js +1 -0
  57. package/dist/{chunks/chunk-6YE2KJ4C.js → chunk-44VE5POH.js} +1 -1
  58. package/dist/{chunks/chunk-D3RGDWKP.js → chunk-4CSM2PCC.js} +1 -1
  59. package/dist/chunk-4CSM2PCC.js.map +1 -0
  60. package/dist/{chunks/chunk-ELDMXTUQ.js → chunk-4YG2FPKK.js} +1 -1
  61. package/dist/chunk-4YG2FPKK.js.map +1 -0
  62. package/dist/{chunks/chunk-3G2DDBJW.js → chunk-7A6KCSAU.js} +3 -3
  63. package/dist/chunk-7A6KCSAU.js.map +1 -0
  64. package/dist/{chunks/chunk-LKINC6JO.js → chunk-ENVUIH2A.js} +4 -4
  65. package/dist/chunk-ENVUIH2A.js.map +1 -0
  66. package/dist/{chunks/chunk-JSPJGWGT.js → chunk-ENZVY5X6.js} +2 -2
  67. package/dist/chunk-ENZVY5X6.js.map +1 -0
  68. package/dist/{chunks/chunk-3OXGDCSU.js → chunk-EUCEENQQ.js} +5 -5
  69. package/dist/chunk-EUCEENQQ.js.map +1 -0
  70. package/dist/{chunks/chunk-AAQCM2FP.js → chunk-FNFNAV3G.js} +2 -2
  71. package/dist/chunk-FNFNAV3G.js.map +1 -0
  72. package/dist/chunk-GSFDTSLL.js +1 -0
  73. package/dist/{chunks/chunk-3ROZMGAN.js → chunk-GTYLWGDG.js} +4 -4
  74. package/dist/chunk-GTYLWGDG.js.map +1 -0
  75. package/dist/{chunks/chunk-XPDS72XY.js → chunk-IAFQ5ZPI.js} +2 -2
  76. package/dist/chunk-IAFQ5ZPI.js.map +1 -0
  77. package/dist/{chunks/chunk-ZEFOMZNY.js → chunk-JDHBXMKF.js} +3 -3
  78. package/dist/chunk-JDHBXMKF.js.map +1 -0
  79. package/dist/{chunks/chunk-PUBGXXTM.js → chunk-L7MBIXEX.js} +4 -4
  80. package/dist/chunk-L7MBIXEX.js.map +1 -0
  81. package/dist/chunk-LYFMLDNV.js +1 -0
  82. package/dist/chunk-NNPTSZGC.js +1 -0
  83. package/dist/chunk-NQM35JUI.js +1 -0
  84. package/dist/{chunks/chunk-NDJZGJUR.js → chunk-ODUHPWTX.js} +1 -1
  85. package/dist/chunk-ODUHPWTX.js.map +1 -0
  86. package/dist/{chunks/chunk-DJLE6EV2.js → chunk-OGHHCP23.js} +6 -6
  87. package/dist/chunk-OGHHCP23.js.map +1 -0
  88. package/dist/{chunks/chunk-QRCUNRP5.js → chunk-OQZW2B47.js} +3 -3
  89. package/dist/chunk-OQZW2B47.js.map +1 -0
  90. package/dist/{chunks/chunk-MTMT2RMF.js → chunk-OXDOQVRL.js} +3 -3
  91. package/dist/chunk-OXDOQVRL.js.map +1 -0
  92. package/dist/{chunks/chunk-V4FXK4TP.js → chunk-PBSMP6VF.js} +3 -3
  93. package/dist/chunk-PBSMP6VF.js.map +1 -0
  94. package/dist/chunk-Q7OPFS4A.js +1 -0
  95. package/dist/{chunks/chunk-XDFXD3BI.js → chunk-R4HSV7U7.js} +1 -1
  96. package/dist/chunk-R4HSV7U7.js.map +1 -0
  97. package/dist/{chunks/chunk-HWA4A3SR.js → chunk-TXRSYXG3.js} +4 -4
  98. package/dist/chunk-TXRSYXG3.js.map +1 -0
  99. package/dist/{chunks/chunk-S6JJYCO7.js → chunk-U3RLYKL5.js} +1 -1
  100. package/dist/chunk-U3RLYKL5.js.map +1 -0
  101. package/dist/{chunks/chunk-4O5F7WV7.js → chunk-UB5K44DB.js} +1 -1
  102. package/dist/chunk-UB5K44DB.js.map +1 -0
  103. package/dist/{chunks/chunk-W4B23OIP.js → chunk-VODOQFTJ.js} +4 -4
  104. package/dist/chunk-VODOQFTJ.js.map +1 -0
  105. package/dist/{chunks/chunk-UCQFSRYF.js → chunk-VW7VIQBE.js} +2 -2
  106. package/dist/chunk-VW7VIQBE.js.map +1 -0
  107. package/dist/{chunks/chunk-JE6BMXZU.js → chunk-X4ZBUCOD.js} +5 -5
  108. package/dist/chunk-X4ZBUCOD.js.map +1 -0
  109. package/dist/chunk-XFHB6KQW.js +1 -0
  110. package/dist/{chunks/chunk-LROTNPC2.js → chunk-XNBWN7N2.js} +5 -5
  111. package/dist/chunk-XNBWN7N2.js.map +1 -0
  112. package/dist/index.js +163 -11038
  113. package/dist/index.js.map +1 -1
  114. package/dist/qti-components/index.js +95 -6431
  115. package/dist/qti-components/index.js.map +1 -1
  116. package/dist/qti-item/components/index.js +8 -3852
  117. package/dist/qti-item/components/index.js.map +1 -1
  118. package/dist/qti-item/components/item-container.js +7 -3852
  119. package/dist/qti-item/components/item-container.js.map +1 -1
  120. package/dist/qti-item/index.js +12 -3864
  121. package/dist/qti-item/index.js.map +1 -1
  122. package/dist/qti-item/qti-item.js +4 -22
  123. package/dist/qti-item/qti-item.js.map +1 -1
  124. package/dist/qti-loader/index.js +6 -305
  125. package/dist/qti-loader/index.js.map +1 -1
  126. package/dist/qti-test/components/index.js +30 -4134
  127. package/dist/qti-test/components/index.js.map +1 -1
  128. package/dist/qti-test/components/styles.js +7 -22
  129. package/dist/qti-test/components/styles.js.map +1 -1
  130. package/dist/qti-test/components/test-component.abstract.js +8 -145
  131. package/dist/qti-test/components/test-component.abstract.js.map +1 -1
  132. package/dist/qti-test/components/test-container.js +7 -3778
  133. package/dist/qti-test/components/test-container.js.map +1 -1
  134. package/dist/qti-test/components/test-item-link.js +10 -198
  135. package/dist/qti-test/components/test-item-link.js.map +1 -1
  136. package/dist/qti-test/components/test-next.js +10 -205
  137. package/dist/qti-test/components/test-next.js.map +1 -1
  138. package/dist/qti-test/components/test-next.spec.js +160 -11152
  139. package/dist/qti-test/components/test-next.spec.js.map +1 -1
  140. package/dist/qti-test/components/test-paging-buttons-stamp.js +9 -214
  141. package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
  142. package/dist/qti-test/components/test-prev.js +10 -205
  143. package/dist/qti-test/components/test-prev.js.map +1 -1
  144. package/dist/qti-test/components/test-view.js +9 -205
  145. package/dist/qti-test/components/test-view.js.map +1 -1
  146. package/dist/qti-test/context/index.js +6 -4
  147. package/dist/qti-test/context/index.js.map +1 -1
  148. package/dist/qti-test/context/test.context.js +5 -4
  149. package/dist/qti-test/context/test.context.js.map +1 -1
  150. package/dist/qti-test/index.js +55 -4729
  151. package/dist/qti-test/index.js.map +1 -1
  152. package/dist/qti-test/mixins/index.js +12 -344
  153. package/dist/qti-test/mixins/index.js.map +1 -1
  154. package/dist/qti-test/mixins/test-loader.mixin.js +5 -236
  155. package/dist/qti-test/mixins/test-loader.mixin.js.map +1 -1
  156. package/dist/qti-test/mixins/test-navigation.mixin.js +4 -60
  157. package/dist/qti-test/mixins/test-navigation.mixin.js.map +1 -1
  158. package/dist/qti-test/mixins/test-view.mixin.js +4 -46
  159. package/dist/qti-test/mixins/test-view.mixin.js.map +1 -1
  160. package/dist/qti-test/qti-assessment-test/index.js +16 -214
  161. package/dist/qti-test/qti-assessment-test/index.js.map +1 -1
  162. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +6 -81
  163. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +1 -1
  164. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +6 -69
  165. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +1 -1
  166. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +6 -50
  167. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +1 -1
  168. package/dist/qti-test/qti-assessment-test/qti-test-part.js +4 -58
  169. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +1 -1
  170. package/dist/qti-test/qti-test.js +12 -496
  171. package/dist/qti-test/qti-test.js.map +1 -1
  172. package/dist/qti-test/test-base.js +6 -133
  173. package/dist/qti-test/test-base.js.map +1 -1
  174. package/dist/qti-transformers/index.js +6 -287
  175. package/dist/qti-transformers/index.js.map +1 -1
  176. package/package.json +1 -2
  177. package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
  178. package/cdn/index.css +0 -1
  179. package/cdn/qti-item/components/index.css +0 -1
  180. package/cdn/qti-item/components/item-container.css +0 -1
  181. package/cdn/qti-item/index.css +0 -1
  182. package/cdn/qti-test/components/index.css +0 -1
  183. package/cdn/qti-test/components/test-container.css +0 -1
  184. package/cdn/qti-test/components/test-next.spec.css +0 -1
  185. package/cdn/qti-test/index.css +0 -1
  186. package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
  187. package/dist/chunks/chunk-3NLCJYSX.js +0 -1
  188. package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
  189. package/dist/chunks/chunk-3ROZMGAN.js.map +0 -1
  190. package/dist/chunks/chunk-4O5F7WV7.js.map +0 -1
  191. package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
  192. package/dist/chunks/chunk-D3RGDWKP.js.map +0 -1
  193. package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
  194. package/dist/chunks/chunk-ELDMXTUQ.js.map +0 -1
  195. package/dist/chunks/chunk-EW5CTHAD.js +0 -1
  196. package/dist/chunks/chunk-HWA4A3SR.js.map +0 -1
  197. package/dist/chunks/chunk-IKZWK2C5.js +0 -1
  198. package/dist/chunks/chunk-IP7JSYO6.js +0 -1
  199. package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
  200. package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
  201. package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
  202. package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
  203. package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
  204. package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
  205. package/dist/chunks/chunk-OE2LFIH2.js +0 -1
  206. package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
  207. package/dist/chunks/chunk-PUBGXXTM.js.map +0 -1
  208. package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
  209. package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
  210. package/dist/chunks/chunk-U3AALKEP.js +0 -1
  211. package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
  212. package/dist/chunks/chunk-URGVQ64M.js +0 -1
  213. package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
  214. package/dist/chunks/chunk-W4B23OIP.js.map +0 -1
  215. package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
  216. package/dist/chunks/chunk-XDMSEAYC.js.map +0 -1
  217. package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
  218. package/dist/chunks/chunk-ZEFOMZNY.js.map +0 -1
  219. package/dist/index-Cvrd4KQA.d.ts +0 -109
  220. /package/cdn/{chunks/chunk-XUJ7TXHW.js → chunk-25BMUTLC.js} +0 -0
  221. /package/cdn/{chunks/chunk-6UGPNL7M.js → chunk-3DWLPGTE.js} +0 -0
  222. /package/cdn/{chunks/chunk-6DMSHH5X.js → chunk-CYJMNT76.js} +0 -0
  223. /package/cdn/{chunks/chunk-T6IXJ4W4.js → chunk-DPR6SGCZ.js} +0 -0
  224. /package/cdn/{chunks/chunk-DAZR7RUI.js → chunk-GB7DLBFM.js} +0 -0
  225. /package/cdn/{chunks/chunk-EHK76KRT.js → chunk-GPDDPZFH.js} +0 -0
  226. /package/cdn/{chunks/chunk-EOPEMJS3.js → chunk-H4A34YRT.js} +0 -0
  227. /package/cdn/{chunks/chunk-GEFUIFM7.js → chunk-ITXNNGVQ.js} +0 -0
  228. /package/cdn/{chunks/chunk-SRLMW23F.js → chunk-IZZ36JQV.js} +0 -0
  229. /package/cdn/{chunks/chunk-CSY3WI5A.js → chunk-JNT54FPI.js} +0 -0
  230. /package/cdn/{chunks/chunk-UIEC4LXR.js → chunk-L26FOTPN.js} +0 -0
  231. /package/cdn/{chunks/chunk-TFAUBGP2.js → chunk-LA7TBIPQ.js} +0 -0
  232. /package/cdn/{chunks/chunk-5FCXUJAG.js → chunk-LVW3MHTI.js} +0 -0
  233. /package/cdn/{chunks/chunk-V44O3GTW.js → chunk-TG6AE3DB.js} +0 -0
  234. /package/cdn/{chunks/chunk-ZIZLFFSG.js → chunk-V6YPUNZC.js} +0 -0
  235. /package/cdn/{chunks/chunk-T4HD2C4F.js → chunk-VI2WKTN4.js} +0 -0
  236. /package/cdn/{chunks/chunk-CFXQCNG6.js → chunk-Y63VPWCG.js} +0 -0
  237. /package/dist/{chunks/chunk-3NLCJYSX.js.map → chunk-37X6KZO3.js.map} +0 -0
  238. /package/dist/{chunks/chunk-Y6UWSECL.js.map → chunk-3WLCQQN7.js.map} +0 -0
  239. /package/dist/{chunks/chunk-6YE2KJ4C.js.map → chunk-3YVIK6LO.js.map} +0 -0
  240. /package/dist/{chunks/chunk-EW5CTHAD.js.map → chunk-44VE5POH.js.map} +0 -0
  241. /package/dist/{chunks/chunk-IKZWK2C5.js.map → chunk-GSFDTSLL.js.map} +0 -0
  242. /package/dist/{chunks/chunk-IP7JSYO6.js.map → chunk-LYFMLDNV.js.map} +0 -0
  243. /package/dist/{chunks/chunk-OE2LFIH2.js.map → chunk-NNPTSZGC.js.map} +0 -0
  244. /package/dist/{chunks/chunk-OJ2XGDWK.js.map → chunk-NQM35JUI.js.map} +0 -0
  245. /package/dist/{chunks/chunk-U3AALKEP.js.map → chunk-Q7OPFS4A.js.map} +0 -0
  246. /package/dist/{chunks/chunk-URGVQ64M.js.map → chunk-XFHB6KQW.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/qti-assessment-test/qti-assessment-section.ts","../../../src/lib/qti-test/context/test.context.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\n\n// https://www.imsglobal.org/sites/default/files/spec/qti/v3/info/index.html#Root_AssessmentSection\n\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\nexport class QtiAssessmentSection extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) required: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed: boolean;\n @property({ type: String }) title: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) visible: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter, attribute: 'keep-together' }) keepTogether: boolean;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-assessment-section-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html`<slot name=\"qti-rubric-block\"></slot><slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-assessment-section')) {\n customElements.define('qti-assessment-section', QtiAssessmentSection);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-section': QtiAssessmentSection;\n }\n}\n","import { createContext } from '@lit/context';\nimport { QtiAssessmentTest } from '../qti-assessment-test';\nimport { ItemContext, VariableDeclaration } from '../../qti-components';\nimport { View } from '../mixins/test-view.mixin';\n\nexport interface TestContext {\n items: (ItemContext & { category?: string })[];\n testOutcomeVariables: VariableDeclaration<string | string[]>[];\n navPartId?: string | null;\n navSectionId?: string | null;\n navItemId?: string | null;\n navItemLoading?: boolean;\n navTestLoading?: boolean;\n view?: View;\n}\n\nexport const testContext = createContext<Readonly<TestContext>>(Symbol('test'));\n\nexport type TestElement = {\n el: QtiAssessmentTest;\n};\n\nexport const testElement = createContext<Readonly<TestElement>>(Symbol('testElement'));\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,gBAAgB;;;ACFzB,SAAS,qBAAqB;AAgBvB,IAAM,cAAc,cAAqC,OAAO,MAAM,CAAC;AAMvE,IAAM,cAAc,cAAqC,OAAO,aAAa,CAAC;;;ADfrF,IAAM,2BAA2B;AAAA,EAC/B,cAAc,OAAwB;AACpC,WAAO,UAAU;AAAA,EACnB;AAAA,EACA,YAAY,OAAwB;AAClC,WAAO,QAAQ,SAAS;AAAA,EAC1B;AACF;AAEO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAWnD,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,MAAM,oCAAoC;AAAA,QAC5C,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AAxB8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,qBACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,qBAEiB;AACsC;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GAHrD,qBAGuD;AACtC;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJf,qBAIiB;AACsC;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GALrD,qBAKuD;AAC4B;AAAA,EAA7F,SAAS,EAAE,MAAM,SAAS,WAAW,0BAA0B,WAAW,gBAAgB,CAAC;AAAA,GANjF,qBAMmF;AAGvF;AAAA,EADN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GARvC,qBASJ;AAkBT,IAAI,CAAC,eAAe,IAAI,wBAAwB,GAAG;AACjD,iBAAe,OAAO,0BAA0B,oBAAoB;AACtE;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,53 +1,9 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result) __defProp(target, key, result);
9
- return result;
10
- };
11
-
12
- // src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts
13
- import { consume } from "@lit/context";
14
- import { html, LitElement } from "lit";
15
- import { customElement, property } from "lit/decorators.js";
16
-
17
- // src/lib/qti-test/context/test.context.ts
18
- import { createContext } from "@lit/context";
19
- var testContext = createContext(Symbol("test"));
20
- var testElement = createContext(Symbol("testElement"));
21
-
22
- // src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts
23
- var QtiAssessmentTest = class extends LitElement {
24
- async connectedCallback() {
25
- super.connectedCallback();
26
- await this.updateComplete;
27
- this.dispatchEvent(
28
- new CustomEvent("qti-assessment-test-connected", {
29
- detail: this,
30
- bubbles: true,
31
- composed: true
32
- })
33
- );
34
- }
35
- render() {
36
- return html` <slot></slot>`;
37
- }
38
- };
39
- __decorateClass([
40
- property({ type: String })
41
- ], QtiAssessmentTest.prototype, "identifier", 2);
42
- __decorateClass([
43
- property({ type: String })
44
- ], QtiAssessmentTest.prototype, "title", 2);
45
- __decorateClass([
46
- consume({ context: testContext, subscribe: true })
47
- ], QtiAssessmentTest.prototype, "_testContext", 2);
48
- QtiAssessmentTest = __decorateClass([
49
- customElement("qti-assessment-test")
50
- ], QtiAssessmentTest);
1
+ import {
2
+ QtiAssessmentTest
3
+ } from "../../chunk-7A6KCSAU.js";
4
+ import "../../chunk-XFHB6KQW.js";
5
+ import "../../chunk-R4HSV7U7.js";
6
+ import "../../chunk-44VE5POH.js";
51
7
  export {
52
8
  QtiAssessmentTest
53
9
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts","../../../src/lib/qti-test/context/test.context.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\n\n@customElement('qti-assessment-test')\nexport class QtiAssessmentTest extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) title: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-test-connected', {\n detail: this,\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-test': QtiAssessmentTest;\n }\n}\n","import { createContext } from '@lit/context';\nimport { QtiAssessmentTest } from '../qti-assessment-test';\nimport { ItemContext, VariableDeclaration } from '../../qti-components';\nimport { View } from '../mixins/test-view.mixin';\n\nexport interface TestContext {\n items: (ItemContext & { category?: string })[];\n testOutcomeVariables: VariableDeclaration<string | string[]>[];\n navPartId?: string | null;\n navSectionId?: string | null;\n navItemId?: string | null;\n navItemLoading?: boolean;\n navTestLoading?: boolean;\n view?: View;\n}\n\nexport const testContext = createContext<Readonly<TestContext>>(Symbol('test'));\n\nexport type TestElement = {\n el: QtiAssessmentTest;\n};\n\nexport const testElement = createContext<Readonly<TestElement>>(Symbol('testElement'));\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,gBAAgB;;;ACFxC,SAAS,qBAAqB;AAgBvB,IAAM,cAAc,cAAqC,OAAO,MAAM,CAAC;AAMvE,IAAM,cAAc,cAAqC,OAAO,aAAa,CAAC;;;ADhB9E,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAOhD,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,YAAY,iCAAiC;AAAA,QAC/C,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AArB8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,kBACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,kBAEiB;AAGrB;AAAA,EADN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAJvC,kBAKJ;AALI,oBAAN;AAAA,EADN,cAAc,qBAAqB;AAAA,GACvB;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,61 +1,7 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result) __defProp(target, key, result);
9
- return result;
10
- };
11
-
12
- // src/lib/qti-test/qti-assessment-test/qti-test-part.ts
13
- import { html, LitElement } from "lit";
14
- import { customElement, property } from "lit/decorators.js";
15
- var QtiTestPart = class extends LitElement {
16
- constructor() {
17
- super(...arguments);
18
- this.identifier = "";
19
- this.title = "";
20
- this.class = "";
21
- this.NavigationMode = "nonlinear";
22
- this.submissionMode = "individual";
23
- }
24
- async connectedCallback() {
25
- super.connectedCallback();
26
- await this.updateComplete;
27
- this.dispatchEvent(
28
- new Event("qti-test-part-connected", {
29
- bubbles: true,
30
- composed: true
31
- })
32
- );
33
- }
34
- render() {
35
- return html` <slot></slot>`;
36
- }
37
- };
38
- __decorateClass([
39
- property({ type: String })
40
- ], QtiTestPart.prototype, "identifier", 2);
41
- __decorateClass([
42
- property({ type: String })
43
- ], QtiTestPart.prototype, "title", 2);
44
- __decorateClass([
45
- property({ type: String })
46
- ], QtiTestPart.prototype, "class", 2);
47
- __decorateClass([
48
- property({ type: String, attribute: "navigation-mode" })
49
- ], QtiTestPart.prototype, "NavigationMode", 2);
50
- __decorateClass([
51
- property({ type: String, attribute: "submission-mode" })
52
- ], QtiTestPart.prototype, "submissionMode", 2);
53
- QtiTestPart = __decorateClass([
54
- customElement("qti-test-part")
55
- ], QtiTestPart);
56
- if (!customElements.get("qti-test-part")) {
57
- customElements.define("qti-test-part", QtiTestPart);
58
- }
1
+ import {
2
+ QtiTestPart
3
+ } from "../../chunk-FNFNAV3G.js";
4
+ import "../../chunk-44VE5POH.js";
59
5
  export {
60
6
  QtiTestPart
61
7
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/qti-assessment-test/qti-test-part.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n@customElement('qti-test-part')\nexport class QtiTestPart extends LitElement {\n @property({ type: String }) identifier: string = '';\n @property({ type: String }) title: string = '';\n @property({ type: String }) class: string = '';\n\n @property({ type: String, attribute: 'navigation-mode' })\n NavigationMode: 'linear' | 'nonlinear' = 'nonlinear';\n\n @property({ type: String, attribute: 'submission-mode' })\n submissionMode: 'individual' | 'simultaneous' = 'individual';\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-test-part-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-test-part')) {\n customElements.define('qti-test-part', QtiTestPart);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-test-part': QtiTestPart;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,gBAAgB;AAEjC,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC;AAAA;AACuB,sBAAqB;AACrB,iBAAgB;AAChB,iBAAgB;AAG5C,0BAAyC;AAGzC,0BAAgD;AAAA;AAAA,EAEhD,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,MAAM,2BAA2B;AAAA,QACnC,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AAxB8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,YACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,YAEiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHf,YAGiB;AAG5B;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,kBAAkB,CAAC;AAAA,GAL7C,YAMX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,kBAAkB,CAAC;AAAA,GAR7C,YASX;AATW,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;AA2Bb,IAAI,CAAC,eAAe,IAAI,eAAe,GAAG;AACxC,iBAAe,OAAO,iBAAiB,WAAW;AACpD;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,499 +1,15 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result) __defProp(target, key, result);
9
- return result;
10
- };
11
-
12
- // src/lib/qti-test/qti-test.ts
13
- import { html } from "lit";
14
- import { customElement } from "lit/decorators.js";
15
-
16
- // src/lib/qti-transformers/qti-transformers.ts
17
- var xml = String.raw;
18
- var xmlToHTML = xml`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
19
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
20
- <xsl:template match="@*|node()">
21
- <xsl:copy>
22
- <xsl:apply-templates select="@*|node()"/>
23
- </xsl:copy>
24
- </xsl:template>
25
-
26
- <!-- remove existing namespaces -->
27
- <xsl:template match="*">
28
- <!-- remove element prefix -->
29
- <xsl:element name="{local-name()}">
30
- <!-- process attributes -->
31
- <xsl:for-each select="@*">
32
- <!-- remove attribute prefix -->
33
- <xsl:attribute name="{local-name()}">
34
- <xsl:value-of select="."/>
35
- </xsl:attribute>
36
- </xsl:for-each>
37
- <xsl:apply-templates/>
38
- </xsl:element>
39
- </xsl:template>
40
- </xsl:stylesheet>`;
41
- function extendElementName(xmlFragment, tagName, extension) {
42
- xmlFragment.querySelectorAll(tagName).forEach((element) => {
43
- const newTagName = `${tagName}-${extension}`;
44
- const newElement = createElementWithNewTagName(element, newTagName);
45
- element.replaceWith(newElement);
46
- });
47
- }
48
- function extendElementsWithClass(xmlFragment, classNamePattern) {
49
- xmlFragment.querySelectorAll("*").forEach((element) => {
50
- const classList = element.classList;
51
- if (classList) {
52
- classList.forEach((className) => {
53
- if (className.startsWith(`${classNamePattern}:`)) {
54
- const suffix = className.slice(`${classNamePattern}:`.length);
55
- const newTagName = `${element.nodeName}-${suffix}`;
56
- const newElement = createElementWithNewTagName(element, newTagName);
57
- element.replaceWith(newElement);
58
- }
59
- });
60
- }
61
- });
62
- }
63
- function createElementWithNewTagName(element, newTagName) {
64
- const newElement = document.createElement(newTagName);
65
- for (const attr of element.attributes) {
66
- newElement.setAttribute(attr.name, attr.value);
67
- }
68
- while (element.firstChild) {
69
- newElement.appendChild(element.firstChild);
70
- }
71
- return newElement;
72
- }
73
- var currentRequest = null;
74
- function loadXML(url, cancelPreviousRequest = false) {
75
- if (cancelPreviousRequest && currentRequest !== null) {
76
- currentRequest.abort();
77
- }
78
- return new Promise((resolve, reject) => {
79
- const xhr = new XMLHttpRequest();
80
- currentRequest = xhr;
81
- xhr.open("GET", url, true);
82
- xhr.responseType = "document";
83
- xhr.onload = () => {
84
- if (xhr.status >= 200 && xhr.status < 300) {
85
- resolve(xhr.responseXML);
86
- } else {
87
- reject(xhr.statusText);
88
- }
89
- };
90
- xhr.onerror = () => {
91
- reject(xhr.statusText);
92
- };
93
- xhr.send();
94
- });
95
- }
96
- function parseXML(xmlDocument) {
97
- const parser = new DOMParser();
98
- const xmlFragment = parser.parseFromString(xmlDocument, "text/xml");
99
- return xmlFragment;
100
- }
101
- function toHTML(xmlFragment) {
102
- const processor = new XSLTProcessor();
103
- const xsltDocument = new DOMParser().parseFromString(xmlToHTML, "text/xml");
104
- processor.importStylesheet(xsltDocument);
105
- const itemHTMLFragment = processor.transformToFragment(xmlFragment, document);
106
- return itemHTMLFragment;
107
- }
108
- function setLocation(xmlFragment, location) {
109
- if (!location.endsWith("/")) {
110
- location += "/";
111
- }
112
- xmlFragment.querySelectorAll("[src],[href],[primary-path]").forEach((elWithSrc) => {
113
- let attr = "";
114
- if (elWithSrc.getAttribute("src")) {
115
- attr = "src";
116
- }
117
- if (elWithSrc.getAttribute("href")) {
118
- attr = "href";
119
- }
120
- if (elWithSrc.getAttribute("primary-path")) {
121
- attr = "primary-path";
122
- }
123
- const attrValue = elWithSrc.getAttribute(attr)?.trim();
124
- if (!attrValue.startsWith("data:") && !attrValue.startsWith("http")) {
125
- const newSrcValue = location + encodeURI(attrValue);
126
- elWithSrc.setAttribute(attr, newSrcValue);
127
- }
128
- });
129
- }
130
- function convertCDATAtoComment(xmlFragment) {
131
- const cdataElements = xmlFragment.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value');
132
- cdataElements.forEach((element) => {
133
- const commentText = document.createComment(element.textContent);
134
- element.replaceChild(commentText, element.firstChild);
135
- });
136
- }
137
- function stripStyleSheets(xmlFragment) {
138
- xmlFragment.querySelectorAll("qti-stylesheet").forEach((stylesheet) => stylesheet.remove());
139
- }
140
-
141
- // src/lib/qti-transformers/qti-transform-item.ts
142
- var qtiTransformItem = () => {
143
- let xmlFragment;
144
- const api = {
145
- async load(uri, cancelPreviousRequest = false) {
146
- return new Promise((resolve) => {
147
- loadXML(uri, cancelPreviousRequest).then((xml2) => {
148
- xmlFragment = xml2;
149
- api.path(uri.substring(0, uri.lastIndexOf("/")));
150
- return resolve(api);
151
- });
152
- });
153
- },
154
- parse(xmlString) {
155
- xmlFragment = parseXML(xmlString);
156
- return api;
157
- },
158
- path: (location) => {
159
- setLocation(xmlFragment, location);
160
- return api;
161
- },
162
- fn(fn) {
163
- fn(xmlFragment);
164
- return api;
165
- },
166
- pciHooks(uri) {
167
- const attributes = ["hook", "module"];
168
- const documentPath = uri.substring(0, uri.lastIndexOf("/"));
169
- for (const attribute of attributes) {
170
- const srcAttributes = xmlFragment.querySelectorAll("[" + attribute + "]");
171
- srcAttributes.forEach((node) => {
172
- const srcValue = node.getAttribute(attribute);
173
- if (!srcValue.startsWith("data:") && !srcValue.startsWith("http")) {
174
- node.setAttribute("base-url", uri);
175
- node.setAttribute(
176
- "module",
177
- documentPath + "/" + encodeURI(srcValue + (srcValue.endsWith(".js") ? "" : ".js"))
178
- );
179
- }
180
- });
181
- }
182
- return api;
183
- },
184
- extendElementName: (tagName, extension) => {
185
- extendElementName(xmlFragment, tagName, extension);
186
- return api;
187
- },
188
- extendElementsWithClass: (param = "extend") => {
189
- extendElementsWithClass(xmlFragment, param);
190
- return api;
191
- },
192
- customInteraction(baseRef, baseItem) {
193
- const qtiCustomInteraction = xmlFragment.querySelector("qti-custom-interaction");
194
- const qtiCustomInteractionObject = qtiCustomInteraction.querySelector("object");
195
- qtiCustomInteraction.setAttribute("data-base-ref", baseRef);
196
- qtiCustomInteraction.setAttribute("data-base-item", baseRef + baseItem);
197
- qtiCustomInteraction.setAttribute("data", qtiCustomInteractionObject.getAttribute("data"));
198
- qtiCustomInteraction.setAttribute("width", qtiCustomInteractionObject.getAttribute("width"));
199
- qtiCustomInteraction.setAttribute("height", qtiCustomInteractionObject.getAttribute("height"));
200
- qtiCustomInteraction.removeChild(qtiCustomInteractionObject);
201
- return api;
202
- },
203
- convertCDATAtoComment() {
204
- convertCDATAtoComment(xmlFragment);
205
- return api;
206
- },
207
- stripStyleSheets() {
208
- stripStyleSheets(xmlFragment);
209
- return api;
210
- },
211
- html() {
212
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
213
- },
214
- xml() {
215
- return new XMLSerializer().serializeToString(xmlFragment);
216
- },
217
- htmlDoc() {
218
- return toHTML(xmlFragment);
219
- },
220
- xmlDoc() {
221
- return xmlFragment;
222
- }
223
- };
224
- return api;
225
- };
226
-
227
- // src/lib/qti-test/mixins/test-loader.mixin.ts
228
- var TestLoaderMixin = (superClass) => {
229
- class TestLoaderClass extends superClass {
230
- // private testURL = '';
231
- constructor(...args) {
232
- super(...args);
233
- this.addEventListener("qti-assessment-test-connected", () => {
234
- });
235
- this.addEventListener("qti-load-item-request", ({ detail }) => {
236
- detail.promise = (async () => {
237
- const api = await qtiTransformItem().load(
238
- `${detail.href}`,
239
- detail.cancelPreviousRequest
240
- );
241
- return api.htmlDoc();
242
- })();
243
- });
244
- this.addEventListener("qti-interaction-changed", (_e) => {
245
- });
246
- this.addEventListener("qti-outcome-changed", () => {
247
- });
248
- }
249
- }
250
- return TestLoaderClass;
251
- };
252
-
253
- // src/lib/qti-test/mixins/test-navigation.mixin.ts
254
- var TestNavigationMixin = (superClass) => {
255
- class TestNavigationClass extends superClass {
256
- constructor(...args) {
257
- super(...args);
258
- this.addEventListener("qti-request-test-item", ({ detail: navItemId }) => {
259
- if (!navItemId) return;
260
- this._clearLoadedItems();
261
- const itemRefEl = this.testElement.el.querySelector(
262
- `qti-assessment-item-ref[identifier="${navItemId}"]`
263
- );
264
- const promise = this._loadItemRequest(itemRefEl.href, false);
265
- const navPartId = itemRefEl.closest("qti-test-part").identifier;
266
- const navSectionId = itemRefEl.closest("qti-assessment-section").identifier;
267
- this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId, navItemLoading: true };
268
- if (promise) {
269
- promise.then((doc) => {
270
- itemRefEl.xmlDoc = doc;
271
- requestAnimationFrame(
272
- () => this.dispatchEvent(new CustomEvent("qti-item-connected", { bubbles: true, composed: true }))
273
- );
274
- this._testContext = { ...this._testContext, navItemLoading: false };
275
- }).catch((error) => console.error("Failed to load item:", error));
276
- } else {
277
- console.info("Load item request was not handled:", itemRefEl.href);
278
- }
279
- });
280
- this.addEventListener("qti-assessment-test-connected", () => {
281
- let navItemId = this._testContext.navItemId;
282
- if (!navItemId) {
283
- const itemRefEl = this.testElement.el.querySelector("qti-assessment-item-ref");
284
- navItemId = itemRefEl.identifier;
285
- }
286
- this.dispatchEvent(
287
- new CustomEvent("qti-request-test-item", { detail: navItemId, bubbles: true, composed: true })
288
- );
289
- });
290
- }
291
- _clearLoadedItems() {
292
- const itemRefEls = this.testElement.el.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);
293
- Array.from(itemRefEls).forEach((itemElement) => {
294
- itemElement.xmlDoc = null;
295
- });
296
- }
297
- _loadItemRequest(href, cancelPreviousRequest = true) {
298
- const event = new CustomEvent("qti-load-item-request", {
299
- bubbles: true,
300
- composed: true,
301
- detail: {
302
- href,
303
- promise: null,
304
- cancelPreviousRequest
305
- }
306
- });
307
- this.dispatchEvent(event);
308
- return event.detail.promise;
309
- }
310
- }
311
- return TestNavigationClass;
312
- };
313
-
314
- // src/lib/qti-test/mixins/test-view.mixin.ts
315
- var TestViewMixin = (superClass) => {
316
- class TestViewClass extends superClass {
317
- constructor(...args) {
318
- super(...args);
319
- this._testContext = { ...this._testContext, view: "candidate" };
320
- this.addEventListener("on-test-switch-view", (e) => {
321
- this._testContext = { ...this._testContext, view: e.detail };
322
- this._updateElementView();
323
- });
324
- this.addEventListener("qti-assessment-test-connected", () => {
325
- this._updateElementView();
326
- });
327
- this.addEventListener("qti-assessment-item-connected", (e) => {
328
- this._updateElementView();
329
- this._setCorrectResponseVisibility(e.detail);
330
- });
331
- }
332
- willUpdate(changedProperties) {
333
- super.willUpdate(changedProperties);
334
- if (changedProperties.has("_testContext")) {
335
- this._updateElementView();
336
- }
337
- }
338
- // Method to handle view updates for elements based on the current context view
339
- _updateElementView() {
340
- if (this.testElement && this.testElement.el) {
341
- const viewElements = Array.from(this.testElement.el.querySelectorAll("[view]"));
342
- viewElements.forEach((element) => {
343
- element.classList.toggle("show", element.getAttribute("view") === this._testContext.view);
344
- });
345
- const assessmentItem = this.testElement.el.querySelector(
346
- `qti-assessment-item[identifier="${this._testContext.navItemId}"]`
347
- );
348
- if (assessmentItem) {
349
- assessmentItem.showCorrectResponse(this._testContext.view === "scorer");
350
- }
351
- }
352
- }
353
- // Event handler for connected QTI assessment items
354
- _setCorrectResponseVisibility(assessmentItem) {
355
- assessmentItem.showCorrectResponse(this._testContext.view === "scorer");
356
- }
357
- }
358
- return TestViewClass;
359
- };
360
-
361
- // src/lib/qti-test/test-base.ts
362
- import { provide } from "@lit/context";
363
- import { LitElement } from "lit";
364
- import { state } from "lit/decorators.js";
365
-
366
- // src/lib/qti-test/context/test.context.ts
367
- import { createContext } from "@lit/context";
368
- var testContext = createContext(Symbol("test"));
369
- var testElement = createContext(Symbol("testElement"));
370
-
371
- // src/lib/qti-test/test-base.ts
372
- var TestBase = class extends LitElement {
373
- constructor() {
374
- super();
375
- this._testContext = { items: [], testOutcomeVariables: [] };
376
- this.testElement = { el: null };
377
- /**
378
- * Updates the variables of an assessment item in the test context.
379
- * - Matches the assessment item with the corresponding test context item.
380
- * - If the item is not found, logs a warning.
381
- * - Updates variables in the test context if exactly one variable exists.
382
- * - Otherwise, syncs the assessment item's variables with the test context.
383
- *
384
- * @param assessmentItem - The assessment item to update.
385
- */
386
- this._updateItemInTestContext = (assessmentItem) => {
387
- const { identifier, variables } = assessmentItem;
388
- const itemContext = this._testContext.items.find((i) => i?.identifier === identifier);
389
- if (!itemContext) {
390
- console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);
391
- return;
392
- }
393
- if (itemContext.variables?.length === 1) {
394
- this._updateItemVariablesInTestContext(identifier, variables);
395
- } else {
396
- assessmentItem.variables = [...itemContext.variables || []];
397
- }
398
- };
399
- this.addEventListener("qti-assessment-test-connected", (e) => {
400
- const qtiAssessmentTest = e.detail;
401
- const items = Array.from(qtiAssessmentTest.querySelectorAll("qti-assessment-item-ref")).map(
402
- (itemRef) => ({
403
- href: itemRef.href,
404
- identifier: itemRef.identifier,
405
- category: itemRef.category,
406
- variables: [{ identifier: "completionStatus", value: "not_attempted", type: "outcome" }]
407
- })
408
- );
409
- this.testElement = { el: qtiAssessmentTest };
410
- this._testContext = { ...this._testContext, items };
411
- });
412
- this.addEventListener("qti-assessment-item-connected", (e) => {
413
- this._updateItemInTestContext(e.detail);
414
- });
415
- this.addEventListener("qti-outcome-changed", (e) => {
416
- const assessmentitem = e.composedPath()[0];
417
- this._updateItemVariablesInTestContext(assessmentitem.identifier, assessmentitem.variables);
418
- });
419
- }
420
- get context() {
421
- return this._testContext;
422
- }
423
- // /* restores the context by updating existing items and adding new items from the "contextToRestore" parameter into the "this._context.items" array. */
424
- set context(testContext2) {
425
- if (testContext2 === null || testContext2 === void 0) return;
426
- this._testContext = { ...testContext2 };
427
- testContext2.items?.forEach((itemContext) => {
428
- const existingItemContext = this._testContext.items.find((i) => i.identifier === itemContext.identifier);
429
- if (existingItemContext) {
430
- existingItemContext.variables = itemContext.variables;
431
- } else {
432
- this._testContext.items.push(itemContext);
433
- }
434
- });
435
- }
436
- _updateItemVariablesInTestContext(identifier, variables) {
437
- this._testContext = {
438
- ...this._testContext,
439
- // Spread existing test context properties
440
- items: this._testContext.items.map((itemContext) => {
441
- if (itemContext.identifier !== identifier) {
442
- return itemContext;
443
- }
444
- return {
445
- ...itemContext,
446
- // Keep other properties of the item context
447
- variables: variables.map((variable) => {
448
- const matchingVariable = itemContext.variables.find((v) => v.identifier === variable.identifier);
449
- return matchingVariable ? { ...matchingVariable, ...variable } : variable;
450
- })
451
- };
452
- })
453
- };
454
- }
455
- // private _addItemToTestContext(
456
- // e: CustomEvent<{ href: string; identifier: string; category: string }> & { target: QtiAssessmentItemRef }
457
- // ): void {
458
- // const { href, identifier, category } = e.detail;
459
- // // Update test context items, adding a new item if the identifier is not already in the list
460
- // if (!this._testContext.items.some(item => item.identifier === identifier)) {
461
- // this._testContext.items.push({
462
- // href,
463
- // identifier,
464
- // category,
465
- // variables: [{ identifier: 'completionStatus', value: 'not_attempted', type: 'outcome' }]
466
- // // category: e.target.category
467
- // });
468
- // }
469
- // }
470
- connectedCallback() {
471
- super.connectedCallback();
472
- this.setAttribute("qti-test", "");
473
- }
474
- };
475
- __decorateClass([
476
- state(),
477
- provide({ context: testContext })
478
- ], TestBase.prototype, "_testContext", 2);
479
- __decorateClass([
480
- state(),
481
- provide({ context: testElement })
482
- ], TestBase.prototype, "testElement", 2);
483
-
484
- // src/lib/qti-test/qti-test.ts
485
- var QtiTest = class extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {
486
- /**
487
- * Renders the component's template.
488
- * Provides a default `<slot>` for content projection.
489
- */
490
- render() {
491
- return html`<slot></slot>`;
492
- }
493
- };
494
- QtiTest = __decorateClass([
495
- customElement("qti-test")
496
- ], QtiTest);
1
+ import {
2
+ QtiTest
3
+ } from "../chunk-OGHHCP23.js";
4
+ import "../chunk-37X6KZO3.js";
5
+ import "../chunk-VW7VIQBE.js";
6
+ import "../chunk-ODUHPWTX.js";
7
+ import "../chunk-U3RLYKL5.js";
8
+ import "../chunk-2OA7E3E7.js";
9
+ import "../chunk-PBSMP6VF.js";
10
+ import "../chunk-XFHB6KQW.js";
11
+ import "../chunk-R4HSV7U7.js";
12
+ import "../chunk-44VE5POH.js";
497
13
  export {
498
14
  QtiTest
499
15
  };