@citolab/qti-components 7.0.5 → 7.0.6-next.1

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 (326) hide show
  1. package/cdn/chunk-2F5323DC.js +8 -0
  2. package/cdn/chunk-2WPNLHGH.js +43 -0
  3. package/cdn/chunk-3M77CJJH.js +8 -0
  4. package/cdn/chunk-4DFVJE2A.js +48 -0
  5. package/cdn/chunk-4HKDXRGE.js +5 -0
  6. package/cdn/chunk-5WCOPF7O.js +73 -0
  7. package/cdn/chunk-D4K2EXYX.js +8 -0
  8. package/cdn/chunk-II7AGB2E.js +11 -0
  9. package/cdn/chunk-KUOLGIA5.js +1 -0
  10. package/cdn/chunk-KXRA4DBZ.js +8 -0
  11. package/cdn/chunk-L4TDHAKL.js +24 -0
  12. package/cdn/chunk-LY27H7YF.js +1 -0
  13. package/cdn/chunk-M6AATWPS.js +59 -0
  14. package/cdn/{chunks/chunk-UIEC4LXR.js → chunk-MFWSHIPH.js} +1 -1
  15. package/cdn/chunk-NAARXANC.js +11 -0
  16. package/cdn/chunk-OEBYNBRS.js +129 -0
  17. package/cdn/chunk-RBATSYIS.js +43 -0
  18. package/cdn/chunk-RM352RXQ.js +5 -0
  19. package/cdn/{chunks/chunk-CFXQCNG6.js → chunk-SQDSHH6N.js} +18 -2
  20. package/cdn/chunk-V2RMP73O.js +1 -0
  21. package/cdn/chunk-WI7KK7NI.js +8 -0
  22. package/cdn/chunk-YHB534QY.js +8 -0
  23. package/cdn/chunk-YXST4IEX.js +5 -0
  24. package/cdn/qti-components/index.js +131 -116
  25. package/cdn/qti-item/core/index.global.js +149 -0
  26. package/cdn/qti-item/core/index.js +5 -0
  27. package/cdn/qti-loader/index.js +1 -23
  28. package/cdn/qti-test/components/index.global.js +1 -36
  29. package/cdn/qti-test/components/index.js +1 -3598
  30. package/cdn/qti-test/components/styles.js +1 -17
  31. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  32. package/cdn/qti-test/components/test-item-link.js +1 -24
  33. package/cdn/qti-test/components/test-next.js +1 -24
  34. package/cdn/qti-test/components/test-next.spec.global.js +25 -60
  35. package/cdn/qti-test/components/test-next.spec.js +247 -4749
  36. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
  37. package/cdn/qti-test/components/test-prev.js +1 -24
  38. package/cdn/qti-test/components/test-view.js +1 -11
  39. package/cdn/qti-test/core/index.global.js +205 -0
  40. package/cdn/qti-test/core/index.js +1 -0
  41. package/cdn/qti-transformers/index.js +1 -23
  42. package/dist/{chunks/chunk-Y6UWSECL.js → chunk-2CHF3TMY.js} +2 -2
  43. package/dist/chunk-2CHF3TMY.js.map +1 -0
  44. package/dist/{chunks/chunk-ZEFOMZNY.js → chunk-2GKDJDI5.js} +3 -3
  45. package/dist/chunk-2GKDJDI5.js.map +1 -0
  46. package/dist/{chunks/chunk-XDMSEAYC.js → chunk-2OA7E3E7.js} +1 -1
  47. package/dist/chunk-2OA7E3E7.js.map +1 -0
  48. package/dist/{chunks/chunk-PUBGXXTM.js → chunk-3F3DCHHM.js} +4 -4
  49. package/dist/chunk-3F3DCHHM.js.map +1 -0
  50. package/dist/{chunks/chunk-6YE2KJ4C.js → chunk-44VE5POH.js} +1 -1
  51. package/dist/{chunks/chunk-D3RGDWKP.js → chunk-4CSM2PCC.js} +1 -1
  52. package/dist/chunk-4CSM2PCC.js.map +1 -0
  53. package/dist/{chunks/chunk-ELDMXTUQ.js → chunk-4YG2FPKK.js} +1 -1
  54. package/dist/chunk-4YG2FPKK.js.map +1 -0
  55. package/dist/{chunks/chunk-W4B23OIP.js → chunk-4YR7ZPE3.js} +4 -4
  56. package/dist/chunk-4YR7ZPE3.js.map +1 -0
  57. package/dist/{chunks/chunk-XDFXD3BI.js → chunk-E3656TSN.js} +2 -2
  58. package/dist/chunk-E3656TSN.js.map +1 -0
  59. package/dist/{chunks/chunk-HWA4A3SR.js → chunk-ERLGA6TC.js} +4 -4
  60. package/dist/chunk-ERLGA6TC.js.map +1 -0
  61. package/dist/{chunks/chunk-3ROZMGAN.js → chunk-EXJQ3ZUE.js} +4 -4
  62. package/dist/chunk-EXJQ3ZUE.js.map +1 -0
  63. package/dist/chunk-KI3A6ZT6.js +50 -0
  64. package/dist/chunk-KI3A6ZT6.js.map +1 -0
  65. package/dist/{chunks/chunk-LKINC6JO.js → chunk-KVFH5VBC.js} +6 -6
  66. package/dist/chunk-KVFH5VBC.js.map +1 -0
  67. package/dist/chunk-LJU3MHXE.js +43 -0
  68. package/dist/chunk-LJU3MHXE.js.map +1 -0
  69. package/dist/chunk-MAC76UNI.js +1 -0
  70. package/dist/chunk-NUXEGEMP.js +65 -0
  71. package/dist/chunk-NUXEGEMP.js.map +1 -0
  72. package/dist/chunk-O3GIZH57.js +121 -0
  73. package/dist/chunk-O3GIZH57.js.map +1 -0
  74. package/dist/{qti-test/qti-test.js → chunk-QNR4WQAC.js} +307 -239
  75. package/dist/chunk-QNR4WQAC.js.map +1 -0
  76. package/dist/chunk-SLMQZKDH.js +568 -0
  77. package/dist/chunk-SLMQZKDH.js.map +1 -0
  78. package/dist/chunk-TAQAVEQ2.js +72 -0
  79. package/dist/chunk-TAQAVEQ2.js.map +1 -0
  80. package/dist/chunk-TLPISJ3Z.js +78 -0
  81. package/dist/chunk-TLPISJ3Z.js.map +1 -0
  82. package/dist/{chunks/chunk-4O5F7WV7.js → chunk-UB5K44DB.js} +1 -1
  83. package/dist/chunk-UB5K44DB.js.map +1 -0
  84. package/dist/chunk-UDWEOEOS.js +50 -0
  85. package/dist/chunk-UDWEOEOS.js.map +1 -0
  86. package/dist/qti-components/index.d.ts +2 -2
  87. package/dist/qti-components/index.js +12 -285
  88. package/dist/qti-components/index.js.map +1 -1
  89. package/dist/qti-components-jsx.d.ts +83 -83
  90. package/dist/qti-item/{components/item-container.d.ts → core/index.d.ts} +22 -1
  91. package/dist/{chunks/chunk-LROTNPC2.js → qti-item/core/index.js} +20 -9
  92. package/dist/qti-item/core/index.js.map +1 -0
  93. package/dist/qti-loader/index.d.ts +1 -1
  94. package/dist/qti-loader/index.js +6 -287
  95. package/dist/qti-loader/index.js.map +1 -1
  96. package/dist/{qti-simple-choice-DxWcdKHi.d.ts → qti-simple-choice-DB7hqAMS.d.ts} +1 -1
  97. package/dist/qti-test/components/index.d.ts +2 -4
  98. package/dist/qti-test/components/index.js +24 -4135
  99. package/dist/qti-test/components/index.js.map +1 -1
  100. package/dist/qti-test/components/styles.js +7 -22
  101. package/dist/qti-test/components/styles.js.map +1 -1
  102. package/dist/qti-test/components/test-component.abstract.d.ts +2 -3
  103. package/dist/qti-test/components/test-component.abstract.js +7 -145
  104. package/dist/qti-test/components/test-component.abstract.js.map +1 -1
  105. package/dist/qti-test/components/test-item-link.d.ts +2 -3
  106. package/dist/qti-test/components/test-item-link.js +9 -198
  107. package/dist/qti-test/components/test-item-link.js.map +1 -1
  108. package/dist/qti-test/components/test-next.d.ts +2 -3
  109. package/dist/qti-test/components/test-next.js +9 -205
  110. package/dist/qti-test/components/test-next.js.map +1 -1
  111. package/dist/qti-test/components/test-next.spec.d.ts +3 -7
  112. package/dist/qti-test/components/test-next.spec.js +140 -11152
  113. package/dist/qti-test/components/test-next.spec.js.map +1 -1
  114. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +2 -3
  115. package/dist/qti-test/components/test-paging-buttons-stamp.js +8 -214
  116. package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
  117. package/dist/qti-test/components/test-prev.d.ts +2 -3
  118. package/dist/qti-test/components/test-prev.js +9 -205
  119. package/dist/qti-test/components/test-prev.js.map +1 -1
  120. package/dist/qti-test/components/test-view.d.ts +2 -3
  121. package/dist/qti-test/components/test-view.js +8 -205
  122. package/dist/qti-test/components/test-view.js.map +1 -1
  123. package/dist/qti-test/core/index.d.ts +121 -0
  124. package/dist/qti-test/core/index.js +25 -0
  125. package/dist/qti-transformers/index.js +6 -287
  126. package/dist/qti-transformers/index.js.map +1 -1
  127. package/dist/test-component.abstract-DWJ0XNiI.d.ts +108 -0
  128. package/dist/{index-Cvrd4KQA.d.ts → test.context-DKSpQHyg.d.ts} +40 -56
  129. package/dist/{test-base-BJwG9Ie8.d.ts → test.context-K2w-1mWi.d.ts} +19 -29
  130. package/dist/vscode.html-custom-data.json +21 -21
  131. package/package.json +70 -75
  132. package/cdn/chunks/chunk-4UJBK6JO.js +0 -1
  133. package/cdn/chunks/chunk-5O3Z7TDV.js +0 -1
  134. package/cdn/chunks/chunk-65LFT33L.js +0 -8
  135. package/cdn/chunks/chunk-6D25UFJR.js +0 -8
  136. package/cdn/chunks/chunk-6UGPNL7M.js +0 -1
  137. package/cdn/chunks/chunk-CSUKVUZF.js +0 -3
  138. package/cdn/chunks/chunk-CSY3WI5A.js +0 -1
  139. package/cdn/chunks/chunk-DAZR7RUI.js +0 -0
  140. package/cdn/chunks/chunk-EOPEMJS3.js +0 -0
  141. package/cdn/chunks/chunk-G5O7EN45.js +0 -5
  142. package/cdn/chunks/chunk-GEFUIFM7.js +0 -0
  143. package/cdn/chunks/chunk-JLNHEMQG.js +0 -1
  144. package/cdn/chunks/chunk-LPWIM7QJ.js +0 -902
  145. package/cdn/chunks/chunk-M3YRM3AV.js +0 -1
  146. package/cdn/chunks/chunk-M6BOWL2U.js +0 -1
  147. package/cdn/chunks/chunk-P5IE36FO.js +0 -8
  148. package/cdn/chunks/chunk-PXH5KN5O.js +0 -1
  149. package/cdn/chunks/chunk-RBEI6NIF.js +0 -1
  150. package/cdn/chunks/chunk-SMKIYFFI.js +0 -1
  151. package/cdn/chunks/chunk-SRLMW23F.js +0 -0
  152. package/cdn/chunks/chunk-T3YDLD2H.js +0 -11
  153. package/cdn/chunks/chunk-T6IXJ4W4.js +0 -1
  154. package/cdn/chunks/chunk-TFAUBGP2.js +0 -0
  155. package/cdn/chunks/chunk-V44O3GTW.js +0 -0
  156. package/cdn/chunks/chunk-V6B54FQW.js +0 -5
  157. package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
  158. package/cdn/chunks/chunk-VYANBI35.js +0 -1
  159. package/cdn/chunks/chunk-XUJ7TXHW.js +0 -1
  160. package/cdn/chunks/chunk-ZIZLFFSG.js +0 -0
  161. package/cdn/index.css +0 -1
  162. package/cdn/index.global.js +0 -277
  163. package/cdn/index.js +0 -4503
  164. package/cdn/qti-item/components/index.css +0 -1
  165. package/cdn/qti-item/components/index.global.js +0 -149
  166. package/cdn/qti-item/components/index.js +0 -3549
  167. package/cdn/qti-item/components/item-container.css +0 -1
  168. package/cdn/qti-item/components/item-container.global.js +0 -149
  169. package/cdn/qti-item/components/item-container.js +0 -3549
  170. package/cdn/qti-item/index.css +0 -1
  171. package/cdn/qti-item/index.global.js +0 -149
  172. package/cdn/qti-item/index.js +0 -3549
  173. package/cdn/qti-item/qti-item.global.js +0 -114
  174. package/cdn/qti-item/qti-item.js +0 -1
  175. package/cdn/qti-test/components/index.css +0 -1
  176. package/cdn/qti-test/components/test-container.css +0 -1
  177. package/cdn/qti-test/components/test-container.global.js +0 -149
  178. package/cdn/qti-test/components/test-container.js +0 -3549
  179. package/cdn/qti-test/components/test-next.spec.css +0 -1
  180. package/cdn/qti-test/context/index.global.js +0 -58
  181. package/cdn/qti-test/context/index.js +0 -1
  182. package/cdn/qti-test/context/test.context.global.js +0 -58
  183. package/cdn/qti-test/context/test.context.js +0 -1
  184. package/cdn/qti-test/index.css +0 -1
  185. package/cdn/qti-test/index.global.js +0 -242
  186. package/cdn/qti-test/index.js +0 -3598
  187. package/cdn/qti-test/mixins/index.global.js +0 -1
  188. package/cdn/qti-test/mixins/index.js +0 -23
  189. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  190. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  191. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  192. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  193. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  194. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  195. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  196. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  197. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  198. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  199. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  200. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  201. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  202. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  203. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  204. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  205. package/cdn/qti-test/qti-test.global.js +0 -170
  206. package/cdn/qti-test/qti-test.js +0 -23
  207. package/cdn/qti-test/test-base.global.js +0 -170
  208. package/cdn/qti-test/test-base.js +0 -1
  209. package/dist/chunks/chunk-3G2DDBJW.js +0 -44
  210. package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
  211. package/dist/chunks/chunk-3NLCJYSX.js +0 -1
  212. package/dist/chunks/chunk-3OXGDCSU.js +0 -6253
  213. package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
  214. package/dist/chunks/chunk-3ROZMGAN.js.map +0 -1
  215. package/dist/chunks/chunk-4O5F7WV7.js.map +0 -1
  216. package/dist/chunks/chunk-AAQCM2FP.js +0 -56
  217. package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
  218. package/dist/chunks/chunk-D3RGDWKP.js.map +0 -1
  219. package/dist/chunks/chunk-DJLE6EV2.js +0 -36
  220. package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
  221. package/dist/chunks/chunk-ELDMXTUQ.js.map +0 -1
  222. package/dist/chunks/chunk-EW5CTHAD.js +0 -1
  223. package/dist/chunks/chunk-HWA4A3SR.js.map +0 -1
  224. package/dist/chunks/chunk-IKZWK2C5.js +0 -1
  225. package/dist/chunks/chunk-IKZWK2C5.js.map +0 -1
  226. package/dist/chunks/chunk-IP7JSYO6.js +0 -1
  227. package/dist/chunks/chunk-IP7JSYO6.js.map +0 -1
  228. package/dist/chunks/chunk-JE6BMXZU.js +0 -94
  229. package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
  230. package/dist/chunks/chunk-JSPJGWGT.js +0 -20
  231. package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
  232. package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
  233. package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
  234. package/dist/chunks/chunk-MTMT2RMF.js +0 -63
  235. package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
  236. package/dist/chunks/chunk-NDJZGJUR.js +0 -65
  237. package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
  238. package/dist/chunks/chunk-OE2LFIH2.js +0 -1
  239. package/dist/chunks/chunk-OE2LFIH2.js.map +0 -1
  240. package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
  241. package/dist/chunks/chunk-OJ2XGDWK.js.map +0 -1
  242. package/dist/chunks/chunk-PUBGXXTM.js.map +0 -1
  243. package/dist/chunks/chunk-QRCUNRP5.js +0 -75
  244. package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
  245. package/dist/chunks/chunk-S6JJYCO7.js +0 -51
  246. package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
  247. package/dist/chunks/chunk-U3AALKEP.js +0 -1
  248. package/dist/chunks/chunk-U3AALKEP.js.map +0 -1
  249. package/dist/chunks/chunk-UCQFSRYF.js +0 -34
  250. package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
  251. package/dist/chunks/chunk-URGVQ64M.js +0 -1
  252. package/dist/chunks/chunk-URGVQ64M.js.map +0 -1
  253. package/dist/chunks/chunk-V4FXK4TP.js +0 -128
  254. package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
  255. package/dist/chunks/chunk-W4B23OIP.js.map +0 -1
  256. package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
  257. package/dist/chunks/chunk-XDMSEAYC.js.map +0 -1
  258. package/dist/chunks/chunk-XPDS72XY.js +0 -29
  259. package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
  260. package/dist/chunks/chunk-Y6UWSECL.js.map +0 -1
  261. package/dist/chunks/chunk-ZEFOMZNY.js.map +0 -1
  262. package/dist/index.d.ts +0 -19
  263. package/dist/index.js +0 -11153
  264. package/dist/index.js.map +0 -1
  265. package/dist/qti-item/components/index.d.ts +0 -3
  266. package/dist/qti-item/components/index.js +0 -3856
  267. package/dist/qti-item/components/index.js.map +0 -1
  268. package/dist/qti-item/components/item-container.js +0 -3856
  269. package/dist/qti-item/components/item-container.js.map +0 -1
  270. package/dist/qti-item/index.d.ts +0 -4
  271. package/dist/qti-item/index.js +0 -3869
  272. package/dist/qti-item/index.js.map +0 -1
  273. package/dist/qti-item/qti-item.d.ts +0 -25
  274. package/dist/qti-item/qti-item.js +0 -26
  275. package/dist/qti-item/qti-item.js.map +0 -1
  276. package/dist/qti-test/components/test-container.d.ts +0 -37
  277. package/dist/qti-test/components/test-container.js +0 -3782
  278. package/dist/qti-test/components/test-container.js.map +0 -1
  279. package/dist/qti-test/context/index.d.ts +0 -6
  280. package/dist/qti-test/context/index.js +0 -9
  281. package/dist/qti-test/context/index.js.map +0 -1
  282. package/dist/qti-test/context/test.context.d.ts +0 -6
  283. package/dist/qti-test/context/test.context.js +0 -9
  284. package/dist/qti-test/context/test.context.js.map +0 -1
  285. package/dist/qti-test/index.d.ts +0 -14
  286. package/dist/qti-test/index.js +0 -4746
  287. package/dist/qti-test/index.js.map +0 -1
  288. package/dist/qti-test/mixins/index.d.ts +0 -8
  289. package/dist/qti-test/mixins/index.js +0 -350
  290. package/dist/qti-test/mixins/index.js.map +0 -1
  291. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  292. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  293. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  294. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  295. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  296. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  297. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  298. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  299. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  300. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  301. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  302. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  303. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  304. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  305. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  306. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  307. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  308. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  309. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  310. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  311. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  312. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  313. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  314. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  315. package/dist/qti-test/qti-test.d.ts +0 -68
  316. package/dist/qti-test/qti-test.js.map +0 -1
  317. package/dist/qti-test/test-base.d.ts +0 -6
  318. package/dist/qti-test/test-base.js +0 -137
  319. package/dist/qti-test/test-base.js.map +0 -1
  320. /package/cdn/{chunks/chunk-6DMSHH5X.js → chunk-22HAPLRD.js} +0 -0
  321. /package/cdn/{chunks/chunk-EHK76KRT.js → chunk-GPDDPZFH.js} +0 -0
  322. /package/cdn/{chunks/chunk-5FCXUJAG.js → chunk-LVW3MHTI.js} +0 -0
  323. /package/cdn/{chunks/chunk-T4HD2C4F.js → chunk-VI2WKTN4.js} +0 -0
  324. /package/dist/{chunks/chunk-3NLCJYSX.js.map → chunk-44VE5POH.js.map} +0 -0
  325. /package/dist/{chunks/chunk-6YE2KJ4C.js.map → chunk-MAC76UNI.js.map} +0 -0
  326. /package/dist/{chunks/chunk-EW5CTHAD.js.map → qti-test/core/index.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/qti-transformers/qti-transformers.ts","../../src/lib/qti-transformers/qti-transform-item.ts","../../src/lib/qti-transformers/qti-transform-manifest.ts","../../src/lib/qti-transformers/qti-transform-test.ts"],"sourcesContent":["const xml = String.raw;\n\n/* <!-- convert CDATA to comments -->\n <xsl:template match=\"text()[contains(., 'CDATA')]\">\n <xsl:comment>\n <xsl:value-of select=\".\"/>\n </xsl:comment>\n</xsl:template>\n*/\n\n/*\n <!-- remove xml comments -->\n <xsl:template match=\"comment()\" />\n */\n\nconst xmlToHTML = xml`<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n<xsl:output method=\"html\" version=\"5.0\" encoding=\"UTF-8\" indent=\"yes\" />\n <xsl:template match=\"@*|node()\">\n <xsl:copy>\n <xsl:apply-templates select=\"@*|node()\"/>\n </xsl:copy>\n </xsl:template>\n\n <!-- remove existing namespaces -->\n <xsl:template match=\"*\">\n <!-- remove element prefix -->\n <xsl:element name=\"{local-name()}\">\n <!-- process attributes -->\n <xsl:for-each select=\"@*\">\n <!-- remove attribute prefix -->\n <xsl:attribute name=\"{local-name()}\">\n <xsl:value-of select=\".\"/>\n </xsl:attribute>\n </xsl:for-each>\n <xsl:apply-templates/>\n </xsl:element>\n</xsl:template>\n</xsl:stylesheet>`;\n\n// Function to extend elements with a specific tag name by adding an extension suffix\nexport function extendElementName(xmlFragment: XMLDocument, tagName: string, extension: string) {\n xmlFragment.querySelectorAll(tagName).forEach(element => {\n const newTagName = `${tagName}-${extension}`;\n const newElement = createElementWithNewTagName(element, newTagName);\n element.replaceWith(newElement);\n });\n}\n\n// Function to extend any element with a specific class pattern (e.g., \"extend:suffix\")\nexport function extendElementsWithClass(xmlFragment: XMLDocument, classNamePattern: string) {\n xmlFragment.querySelectorAll('*').forEach(element => {\n const classList = element.classList;\n if (classList) {\n classList.forEach(className => {\n if (className.startsWith(`${classNamePattern}:`)) {\n const suffix = className.slice(`${classNamePattern}:`.length);\n const newTagName = `${element.nodeName}-${suffix}`;\n const newElement = createElementWithNewTagName(element, newTagName);\n element.replaceWith(newElement);\n }\n });\n }\n });\n}\n\n// Helper function to create a new element with a new tag name and copy attributes and children\nfunction createElementWithNewTagName(element, newTagName) {\n const newElement = document.createElement(newTagName);\n // Copy attributes\n for (const attr of element.attributes) {\n newElement.setAttribute(attr.name, attr.value);\n }\n // Copy child nodes\n while (element.firstChild) {\n newElement.appendChild(element.firstChild);\n }\n return newElement;\n}\n\nexport function itemsFromTest(xmlFragment: DocumentFragment) {\n const items: { identifier: string; href: string; category: string }[] = [];\n xmlFragment.querySelectorAll('qti-assessment-item-ref').forEach(el => {\n const identifier = el.getAttribute('identifier');\n const href = el.getAttribute('href');\n const category = el.getAttribute('category');\n items.push({ identifier, href, category });\n });\n return items;\n}\n\nlet currentRequest: XMLHttpRequest | null = null;\n\nexport function loadXML(url, cancelPreviousRequest = false) {\n if (cancelPreviousRequest && currentRequest !== null) {\n currentRequest.abort(); // Abort the ongoing request if there is one\n }\n\n return new Promise<XMLDocument | null>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n currentRequest = xhr; // Store the current request\n\n xhr.open('GET', url, true);\n xhr.responseType = 'document';\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseXML);\n } else {\n reject(xhr.statusText);\n }\n };\n\n xhr.onerror = () => {\n reject(xhr.statusText);\n };\n\n xhr.send();\n });\n}\n\nexport function parseXML(xmlDocument: string) {\n const parser = new DOMParser();\n const xmlFragment = parser.parseFromString(xmlDocument, 'text/xml');\n return xmlFragment;\n}\n\nexport function toHTML(xmlFragment: Document): DocumentFragment {\n const processor = new XSLTProcessor();\n const xsltDocument = new DOMParser().parseFromString(xmlToHTML, 'text/xml');\n processor.importStylesheet(xsltDocument);\n const itemHTMLFragment = processor.transformToFragment(xmlFragment, document);\n return itemHTMLFragment;\n}\n\nexport function setLocation(xmlFragment: DocumentFragment, location: string) {\n if (!location.endsWith('/')) {\n location += '/';\n }\n\n xmlFragment.querySelectorAll('[src],[href],[primary-path]').forEach(elWithSrc => {\n let attr: 'src' | 'href' | 'primary-path' | '' = '';\n\n if (elWithSrc.getAttribute('src')) {\n attr = 'src';\n }\n if (elWithSrc.getAttribute('href')) {\n attr = 'href';\n }\n if (elWithSrc.getAttribute('primary-path')) {\n attr = 'primary-path';\n }\n const attrValue = elWithSrc.getAttribute(attr)?.trim();\n\n if (!attrValue.startsWith('data:') && !attrValue.startsWith('http')) {\n const newSrcValue = location + encodeURI(attrValue);\n elWithSrc.setAttribute(attr, newSrcValue);\n }\n });\n}\n\nexport function convertCDATAtoComment(xmlFragment: DocumentFragment) {\n const cdataElements = xmlFragment.querySelectorAll('qti-custom-operator[class=\"js.org\"] > qti-base-value');\n cdataElements.forEach(element => {\n const commentText = document.createComment(element.textContent);\n element.replaceChild(commentText, element.firstChild);\n });\n}\n\nexport function stripStyleSheets(xmlFragment: DocumentFragment) {\n // remove qti-stylesheet tag\n xmlFragment.querySelectorAll('qti-stylesheet').forEach(stylesheet => stylesheet.remove());\n}\n","/**\n * Browser based QTI-XML to HTML transformer.\n * Returns an object with methods to load, parse, transform and serialize QTI XML items.\n * @returns An object with methods to load, parse, transform and serialize QTI XML items.\n * @example\n * const qtiTransformer = qtiTransformItem();\n * await qtiTransformer.load('path/to/xml/file.xml');\n * qtiTransformer.path('/assessmentItem/itemBody');\n * const html = qtiTransformer.html();\n * const xml = qtiTransformer.xml();\n * const htmldoc = qtiTransformer.htmldoc();\n * const xmldoc = qtiTransformer.xmldoc();\n *\n * qtiTransformItem().parse(storyXML).html()\n */\n\nimport {\n convertCDATAtoComment,\n extendElementName,\n extendElementsWithClass,\n loadXML,\n parseXML,\n setLocation,\n stripStyleSheets,\n toHTML\n} from './qti-transformers';\n\nexport type transformItemApi = {\n load: (uri: string, cancelPreviousRequest?: boolean) => Promise<transformItemApi>;\n parse: (xmlString: string) => transformItemApi;\n path: (location: string) => transformItemApi;\n fn: (fn: (xmlFragment: XMLDocument) => void) => transformItemApi;\n pciHooks: (uri: string) => transformItemApi;\n extendElementName: (elementName: string, extend: string) => transformItemApi;\n extendElementsWithClass: (param?: string) => transformItemApi;\n customInteraction: (baseRef: string, baseItem: string) => transformItemApi;\n convertCDATAtoComment: () => transformItemApi;\n stripStyleSheets: () => transformItemApi;\n html: () => string;\n xml: () => string;\n htmlDoc: () => DocumentFragment;\n xmlDoc: () => XMLDocument;\n};\n\nexport const qtiTransformItem = () => {\n let xmlFragment: XMLDocument;\n\n const api: transformItemApi = {\n async load(uri: string, cancelPreviousRequest = false): Promise<typeof api> {\n return new Promise<typeof api>(resolve => {\n loadXML(uri, cancelPreviousRequest).then(xml => {\n xmlFragment = xml;\n // set the base path for images and other resources,\n // you probably want to set the base path to the document root else you can use the path method to set it\n api.path(uri.substring(0, uri.lastIndexOf('/')));\n return resolve(api);\n });\n });\n },\n parse(xmlString: string): typeof api {\n xmlFragment = parseXML(xmlString);\n return api;\n },\n path: (location: string): typeof api => {\n setLocation(xmlFragment, location);\n return api;\n },\n fn(fn: (xmlFragment: XMLDocument) => void): typeof api {\n fn(xmlFragment);\n return api;\n },\n pciHooks(uri: string): typeof api {\n const attributes = ['hook', 'module'];\n const documentPath = uri.substring(0, uri.lastIndexOf('/'));\n for (const attribute of attributes) {\n const srcAttributes = xmlFragment.querySelectorAll('[' + attribute + ']');\n srcAttributes.forEach(node => {\n const srcValue = node.getAttribute(attribute)!;\n if (!srcValue.startsWith('data:') && !srcValue.startsWith('http')) {\n // Just paste the relative path of the src location after the documentrootPath\n // old pcis can have a .js, new pci's don't\n node.setAttribute('base-url', uri);\n node.setAttribute(\n 'module',\n documentPath + '/' + encodeURI(srcValue + (srcValue.endsWith('.js') ? '' : '.js'))\n );\n }\n });\n }\n return api;\n },\n extendElementName: (tagName: string, extension: string): typeof api => {\n extendElementName(xmlFragment, tagName, extension);\n return api;\n },\n extendElementsWithClass: (param: string = 'extend'): typeof api => {\n extendElementsWithClass(xmlFragment, param);\n return api;\n },\n customInteraction(baseRef: string, baseItem: string): typeof api {\n const qtiCustomInteraction = xmlFragment.querySelector('qti-custom-interaction');\n const qtiCustomInteractionObject = qtiCustomInteraction.querySelector('object');\n\n qtiCustomInteraction.setAttribute('data-base-ref', baseRef);\n qtiCustomInteraction.setAttribute('data-base-item', baseRef + baseItem);\n qtiCustomInteraction.setAttribute('data', qtiCustomInteractionObject.getAttribute('data'));\n qtiCustomInteraction.setAttribute('width', qtiCustomInteractionObject.getAttribute('width'));\n qtiCustomInteraction.setAttribute('height', qtiCustomInteractionObject.getAttribute('height'));\n\n qtiCustomInteraction.removeChild(qtiCustomInteractionObject);\n return api;\n },\n convertCDATAtoComment(): typeof api {\n convertCDATAtoComment(xmlFragment);\n return api;\n },\n stripStyleSheets(): typeof api {\n stripStyleSheets(xmlFragment);\n return api;\n },\n html() {\n return new XMLSerializer().serializeToString(toHTML(xmlFragment));\n },\n xml(): string {\n return new XMLSerializer().serializeToString(xmlFragment);\n },\n htmlDoc() {\n return toHTML(xmlFragment);\n },\n xmlDoc(): XMLDocument {\n return xmlFragment; // new XMLSerializer().serializeToString(xmlFragment);\n }\n };\n return api;\n};\n","import { loadXML, parseXML } from './qti-transformers';\n\nexport const qtiTransformManifest = (): {\n load: (uri: string) => Promise<typeof api>;\n assessmentTest: () => { href: string; identifier: string };\n} => {\n let xmlFragment: XMLDocument;\n\n const api = {\n async load(uri) {\n return new Promise<typeof api>(resolve => {\n loadXML(uri).then(xml => {\n xmlFragment = xml;\n return resolve(api);\n });\n });\n },\n parse(xmlString: string) {\n xmlFragment = parseXML(xmlString);\n },\n assessmentTest() {\n const el = xmlFragment.querySelector('resource[type=\"imsqti_test_xmlv3p0\"]');\n return { href: el.getAttribute('href'), identifier: el.getAttribute('identifier') };\n }\n };\n return api;\n};\n","/**\n * Returns an object with methods to load, parse and transform QTI tests.\n * @returns An object with methods to load, parse and transform QTI tests.\n * @example\n * const qtiTransformer = qtiTransformTest();\n * await qtiTransformer.load('https://example.com/test.xml');\n * const items = qtiTransformer.items();\n * const html = qtiTransformer.html();\n * const xml = qtiTransformer.xml();\n */\n\nimport { itemsFromTest, loadXML, parseXML, setLocation, toHTML } from './qti-transformers';\n\nexport type transformTestApi = {\n load: (uri: string) => Promise<transformTestApi>;\n parse: (xmlString: string) => transformTestApi;\n path: (location: string) => transformTestApi;\n fn: (fn: (xmlFragment: XMLDocument) => void) => transformTestApi;\n items: () => { identifier: string; href: string; category: string }[];\n html: () => string;\n xml: () => string;\n htmlDoc: () => DocumentFragment;\n xmlDoc: () => XMLDocument;\n};\n\nexport const qtiTransformTest = (): transformTestApi => {\n let xmlFragment: XMLDocument;\n\n const api: transformTestApi = {\n async load(uri) {\n return new Promise<transformTestApi>((resolve, _) => {\n loadXML(uri).then(xml => {\n xmlFragment = xml;\n\n api.path(uri.substring(0, uri.lastIndexOf('/')));\n return resolve(api);\n });\n });\n },\n parse(xmlString: string) {\n xmlFragment = parseXML(xmlString);\n return api;\n },\n path: (location: string): typeof api => {\n setLocation(xmlFragment, location);\n return api;\n },\n fn(fn: (xmlFragment: XMLDocument) => void) {\n fn(xmlFragment);\n return api;\n },\n items() {\n return itemsFromTest(xmlFragment);\n },\n html() {\n return new XMLSerializer().serializeToString(toHTML(xmlFragment));\n },\n xml(): string {\n return new XMLSerializer().serializeToString(xmlFragment);\n },\n htmlDoc() {\n return toHTML(xmlFragment);\n },\n xmlDoc(): XMLDocument {\n return xmlFragment;\n }\n };\n return api;\n};\n"],"mappings":"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","names":["xml","xml","xml"]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,108 @@
1
+ import { LitElement } from 'lit';
2
+ import * as lit_html from 'lit-html';
3
+ import { Q as QtiAssessmentItem, I as ItemContext, V as VariableDeclaration } from './qti-simple-choice-DB7hqAMS.js';
4
+
5
+ declare class QtiAssessmentItemRef extends LitElement {
6
+ category?: string;
7
+ identifier?: string;
8
+ required?: boolean;
9
+ fixed?: boolean;
10
+ href?: string;
11
+ _testContext?: TestContext;
12
+ weigths: Map<string, number>;
13
+ xmlDoc: DocumentFragment;
14
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
15
+ get assessmentItem(): QtiAssessmentItem | null;
16
+ connectedCallback(): Promise<void>;
17
+ render(): lit_html.TemplateResult<1>;
18
+ }
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ 'qti-assessment-item-ref': QtiAssessmentItemRef;
22
+ }
23
+ }
24
+
25
+ declare class QtiAssessmentSection extends LitElement {
26
+ identifier: string;
27
+ required: string;
28
+ fixed: boolean;
29
+ title: string;
30
+ visible: boolean;
31
+ keepTogether: boolean;
32
+ _testContext?: TestContext;
33
+ connectedCallback(): Promise<void>;
34
+ render(): lit_html.TemplateResult<1>;
35
+ }
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ 'qti-assessment-section': QtiAssessmentSection;
39
+ }
40
+ }
41
+
42
+ declare class QtiAssessmentTest extends LitElement {
43
+ identifier: string;
44
+ title: string;
45
+ _testContext?: TestContext;
46
+ connectedCallback(): Promise<void>;
47
+ render(): lit_html.TemplateResult<1>;
48
+ }
49
+ declare global {
50
+ interface HTMLElementTagNameMap {
51
+ 'qti-assessment-test': QtiAssessmentTest;
52
+ }
53
+ }
54
+
55
+ declare class QtiTestPart extends LitElement {
56
+ identifier: string;
57
+ title: string;
58
+ class: string;
59
+ NavigationMode: 'linear' | 'nonlinear';
60
+ submissionMode: 'individual' | 'simultaneous';
61
+ connectedCallback(): Promise<void>;
62
+ render(): lit_html.TemplateResult<1>;
63
+ }
64
+ declare global {
65
+ interface HTMLElementTagNameMap {
66
+ 'qti-test-part': QtiTestPart;
67
+ }
68
+ }
69
+
70
+ type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';
71
+ declare module '../context/test.context' {
72
+ interface TestContext {
73
+ view?: View;
74
+ }
75
+ }
76
+
77
+ interface TestContext {
78
+ items: (ItemContext & {
79
+ category?: string;
80
+ })[];
81
+ testOutcomeVariables: VariableDeclaration<string | string[]>[];
82
+ navPartId?: string | null;
83
+ navSectionId?: string | null;
84
+ navItemId?: string | null;
85
+ navItemLoading?: boolean;
86
+ navTestLoading?: boolean;
87
+ view?: View;
88
+ }
89
+ type TestElement = {
90
+ el: QtiAssessmentTest;
91
+ };
92
+
93
+ declare abstract class TestComponent extends LitElement {
94
+ disabled: boolean;
95
+ protected _testContext?: TestContext;
96
+ protected _testElement?: TestElement;
97
+ _handleTestElementChange(_oldValue: TestElement, newValue: TestElement): void;
98
+ protected _internals: ElementInternals;
99
+ protected items: any;
100
+ protected itemIndex: any;
101
+ protected view: any;
102
+ constructor();
103
+ protected willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
104
+ protected _switchView(view: string): void;
105
+ protected _requestItem(identifier: string): void;
106
+ }
107
+
108
+ export { TestComponent as T, type TestContext as a, type TestElement as b };
@@ -1,60 +1,6 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import { LitElement } from 'lit';
3
- import './qti-test/qti-assessment-test/qti-test-part.js';
4
- import { af as ItemContext, e as VariableDeclaration, j as QtiAssessmentItem } from './qti-simple-choice-DxWcdKHi.js';
5
-
6
- declare abstract class TestBase extends LitElement {
7
- protected _testContext: Readonly<TestContext>;
8
- protected testElement: TestElement;
9
- constructor();
10
- get context(): TestContext;
11
- set context(testContext: TestContext);
12
- private _updateItemVariablesInTestContext;
13
- /**
14
- * Updates the variables of an assessment item in the test context.
15
- * - Matches the assessment item with the corresponding test context item.
16
- * - If the item is not found, logs a warning.
17
- * - Updates variables in the test context if exactly one variable exists.
18
- * - Otherwise, syncs the assessment item's variables with the test context.
19
- *
20
- * @param assessmentItem - The assessment item to update.
21
- */
22
- private _updateItemInTestContext;
23
- connectedCallback(): void;
24
- }
25
-
26
- type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';
27
- declare module '../context' {
28
- interface TestContext {
29
- view?: View;
30
- }
31
- }
32
- type Constructor<T = {}> = abstract new (...args: any[]) => T;
33
- declare class TestViewInterface {
34
- }
35
- declare const TestViewMixin: <T extends Constructor<TestBase>>(superClass: T) => Constructor<TestViewInterface> & T;
36
-
37
- interface TestContext {
38
- items: (ItemContext & {
39
- category?: string;
40
- })[];
41
- testOutcomeVariables: VariableDeclaration<string | string[]>[];
42
- navPartId?: string | null;
43
- navSectionId?: string | null;
44
- navItemId?: string | null;
45
- navItemLoading?: boolean;
46
- navTestLoading?: boolean;
47
- view?: View;
48
- }
49
- declare const testContext: {
50
- __context__: Readonly<TestContext>;
51
- };
52
- type TestElement = {
53
- el: QtiAssessmentTest;
54
- };
55
- declare const testElement: {
56
- __context__: Readonly<TestElement>;
57
- };
3
+ import { Q as QtiAssessmentItem, I as ItemContext, V as VariableDeclaration } from './qti-simple-choice-DB7hqAMS.js';
58
4
 
59
5
  declare class QtiAssessmentItemRef extends LitElement {
60
6
  category?: string;
@@ -106,4 +52,42 @@ declare global {
106
52
  }
107
53
  }
108
54
 
109
- export { QtiAssessmentItemRef as Q, type TestContext as T, type View as V, QtiAssessmentSection as a, QtiAssessmentTest as b, type TestElement as c, testElement as d, TestViewMixin as e, TestBase as f, testContext as t };
55
+ declare class QtiTestPart extends LitElement {
56
+ identifier: string;
57
+ title: string;
58
+ class: string;
59
+ NavigationMode: 'linear' | 'nonlinear';
60
+ submissionMode: 'individual' | 'simultaneous';
61
+ connectedCallback(): Promise<void>;
62
+ render(): lit_html.TemplateResult<1>;
63
+ }
64
+ declare global {
65
+ interface HTMLElementTagNameMap {
66
+ 'qti-test-part': QtiTestPart;
67
+ }
68
+ }
69
+
70
+ type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';
71
+ declare module '../context/test.context' {
72
+ interface TestContext {
73
+ view?: View;
74
+ }
75
+ }
76
+
77
+ interface TestContext {
78
+ items: (ItemContext & {
79
+ category?: string;
80
+ })[];
81
+ testOutcomeVariables: VariableDeclaration<string | string[]>[];
82
+ navPartId?: string | null;
83
+ navSectionId?: string | null;
84
+ navItemId?: string | null;
85
+ navItemLoading?: boolean;
86
+ navTestLoading?: boolean;
87
+ view?: View;
88
+ }
89
+ type TestElement = {
90
+ el: QtiAssessmentTest;
91
+ };
92
+
93
+ export { QtiAssessmentItemRef as Q, type TestContext as T, type TestElement as a, QtiAssessmentSection as b, QtiAssessmentTest as c, QtiTestPart as d };
@@ -1,7 +1,6 @@
1
- import './qti-test/qti-assessment-test/qti-test-part.js';
2
- import { LitElement } from 'lit';
3
1
  import * as lit_html from 'lit-html';
4
- import { j as QtiAssessmentItem, af as ItemContext, e as VariableDeclaration } from './qti-simple-choice-DxWcdKHi.js';
2
+ import { LitElement } from 'lit';
3
+ import { Q as QtiAssessmentItem, I as ItemContext, V as VariableDeclaration } from './qti-simple-choice-DB7hqAMS.js';
5
4
 
6
5
  declare class QtiAssessmentItemRef extends LitElement {
7
6
  category?: string;
@@ -53,16 +52,27 @@ declare global {
53
52
  }
54
53
  }
55
54
 
55
+ declare class QtiTestPart extends LitElement {
56
+ identifier: string;
57
+ title: string;
58
+ class: string;
59
+ NavigationMode: 'linear' | 'nonlinear';
60
+ submissionMode: 'individual' | 'simultaneous';
61
+ connectedCallback(): Promise<void>;
62
+ render(): lit_html.TemplateResult<1>;
63
+ }
64
+ declare global {
65
+ interface HTMLElementTagNameMap {
66
+ 'qti-test-part': QtiTestPart;
67
+ }
68
+ }
69
+
56
70
  type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';
57
- declare module '../context' {
71
+ declare module '../context/test.context' {
58
72
  interface TestContext {
59
73
  view?: View;
60
74
  }
61
75
  }
62
- type Constructor<T = {}> = abstract new (...args: any[]) => T;
63
- declare class TestViewInterface {
64
- }
65
- declare const TestViewMixin: <T extends Constructor<TestBase>>(superClass: T) => Constructor<TestViewInterface> & T;
66
76
 
67
77
  interface TestContext {
68
78
  items: (ItemContext & {
@@ -86,24 +96,4 @@ declare const testElement: {
86
96
  __context__: Readonly<TestElement>;
87
97
  };
88
98
 
89
- declare abstract class TestBase extends LitElement {
90
- protected _testContext: Readonly<TestContext>;
91
- protected testElement: TestElement;
92
- constructor();
93
- get context(): TestContext;
94
- set context(testContext: TestContext);
95
- private _updateItemVariablesInTestContext;
96
- /**
97
- * Updates the variables of an assessment item in the test context.
98
- * - Matches the assessment item with the corresponding test context item.
99
- * - If the item is not found, logs a warning.
100
- * - Updates variables in the test context if exactly one variable exists.
101
- * - Otherwise, syncs the assessment item's variables with the test context.
102
- *
103
- * @param assessmentItem - The assessment item to update.
104
- */
105
- private _updateItemInTestContext;
106
- connectedCallback(): void;
107
- }
108
-
109
- export { QtiAssessmentItemRef as Q, type TestContext as T, type View as V, QtiAssessmentSection as a, QtiAssessmentTest as b, type TestElement as c, testElement as d, TestViewMixin as e, TestBase as f, testContext as t };
99
+ export { QtiAssessmentItemRef as Q, type TestContext as T, type TestElement as a, QtiAssessmentSection as b, QtiAssessmentTest as c, QtiTestPart as d, testElement as e, testContext as t };
@@ -807,12 +807,6 @@
807
807
  ],
808
808
  "references": []
809
809
  },
810
- {
811
- "name": "qti-item",
812
- "description": "`<qti-item>` is a custom element designed for rendering a single `qti-assessment-item`.\nIt can also host some functionalities to interact with the item like scoring, showing feedback, etc.\nPlacing a mandatory `<item-container>` inside '<qti-item>' will load or parse the item and render it.\nSee `<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",
813
- "attributes": [],
814
- "references": []
815
- },
816
810
  {
817
811
  "name": "item-container",
818
812
  "description": "`<item-container>` is a custom element designed for hosting the qti-assessment-item.\nThe `qti-assessment-item` will be placed inside the shadow DOM of this element.\nThe element loads the item from the provided URL and renders it inside the shadow DOM.\n\n### Styling\nAdd a class to the element for styling.\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",
@@ -825,6 +819,12 @@
825
819
  ],
826
820
  "references": []
827
821
  },
822
+ {
823
+ "name": "qti-item",
824
+ "description": "`<qti-item>` is a custom element designed for rendering a single `qti-assessment-item`.\nIt can also host some functionalities to interact with the item like scoring, showing feedback, etc.\nPlacing a mandatory `<item-container>` inside '<qti-item>' will load or parse the item and render it.\nSee `<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",
825
+ "attributes": [],
826
+ "references": []
827
+ },
828
828
  {
829
829
  "name": "qti-assessment-item-ref",
830
830
  "description": "\n---\n\n\n### **Events:**\n - **qti-assessment-item-ref-connected**",
@@ -877,12 +877,6 @@
877
877
  ],
878
878
  "references": []
879
879
  },
880
- {
881
- "name": "qti-test",
882
- "description": "`<qti-test>` is a custom element designed for rendering and interacting with QTI (Question and Test Interoperability) tests.\n\nThis component leverages several mixins to provide functionality for loading, navigating, processing, and displaying QTI test assessments.\n\n### Example Usage\n\nMinimal example including navigation:\n\n```html\n<qti-test>\n <test-container test-url=\"./path/to/assessment.xml\"></test-container>\n <nav class=\"flex\">\n <test-prev></test-prev>\n <test-next></test-next>\n </nav>\n</qti-test>\n```\n\nUse the following file structure\nA qti-test loads a QTI3.0 assessmenttest.xml file from a package folder.\n\n```plaintext\nRoot/\n├── index.html\n└── /assets/api/examples/\n ├── assessmenttest.xml\n └── imsmanifest.xml\n\n```\n\n### Test components\n\nUse test components inside the qti-test component for added functionality.\n### Test next\n`<test-next> | TestNext`\n\n### Test prev\n\n`<test-prev> | TestPrev`\n### Test components\n\nYou can use normal class names to style the elements.\nAnd you can use the `test-prev` and `test-next` elements to navigate through the test.\n---\n",
883
- "attributes": [],
884
- "references": []
885
- },
886
880
  {
887
881
  "name": "test-next",
888
882
  "description": "Represents a custom element for navigating to the next test item.\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
@@ -918,6 +912,21 @@
918
912
  "attributes": [{ "name": "item-id", "values": [] }],
919
913
  "references": []
920
914
  },
915
+ {
916
+ "name": "test-paging-buttons-stamp",
917
+ "description": "\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
918
+ "attributes": [
919
+ { "name": "max-displayed-items", "values": [] },
920
+ { "name": "skip-on-category", "values": [] }
921
+ ],
922
+ "references": []
923
+ },
924
+ {
925
+ "name": "qti-test",
926
+ "description": "`<qti-test>` is a custom element designed for rendering and interacting with QTI (Question and Test Interoperability) tests.\n\nThis component leverages several mixins to provide functionality for loading, navigating, processing, and displaying QTI test assessments.\n\n### Example Usage\n\nMinimal example including navigation:\n\n```html\n<qti-test>\n <test-container test-url=\"./path/to/assessment.xml\"></test-container>\n <nav class=\"flex\">\n <test-prev></test-prev>\n <test-next></test-next>\n </nav>\n</qti-test>\n```\n\nUse the following file structure\nA qti-test loads a QTI3.0 assessmenttest.xml file from a package folder.\n\n```plaintext\nRoot/\n├── index.html\n└── /assets/api/examples/\n ├── assessmenttest.xml\n └── imsmanifest.xml\n\n```\n\n### Test components\n\nUse test components inside the qti-test component for added functionality.\n### Test next\n`<test-next> | TestNext`\n\n### Test prev\n\n`<test-prev> | TestPrev`\n### Test components\n\nYou can use normal class names to style the elements.\nAnd you can use the `test-prev` and `test-next` elements to navigate through the test.\n---\n",
927
+ "attributes": [],
928
+ "references": []
929
+ },
921
930
  {
922
931
  "name": "test-container",
923
932
  "description": "`<test-container>` is a custom element designed for hosting the qti-assessment-item.\nThe `qti-assessment-test` will be placed inside the shadow DOM of this element.\nThe element loads the test from the provided URL and renders it inside the shadow DOM.\n\n```html\n<qti-test>\n <test-container class=\"m-4 bg-white\" test-url=\"./path/to/assessmenttest.xml\"></test-container>\n</qti-test>\n```\n---\n",
@@ -929,15 +938,6 @@
929
938
  }
930
939
  ],
931
940
  "references": []
932
- },
933
- {
934
- "name": "test-paging-buttons-stamp",
935
- "description": "\n---\n\n\n### **Events:**\n - **on-test-switch-view**\n- **qti-request-test-item**",
936
- "attributes": [
937
- { "name": "max-displayed-items", "values": [] },
938
- { "name": "skip-on-category", "values": [] }
939
- ],
940
- "references": []
941
941
  }
942
942
  ]
943
943
  }
package/package.json CHANGED
@@ -21,21 +21,17 @@
21
21
  "engines": {
22
22
  "node": ">=20.0.0"
23
23
  },
24
- "version": "7.0.5",
24
+ "version": "7.0.6-next.1",
25
25
  "type": "module",
26
26
  "exports": {
27
- ".": {
28
- "types": "./dist/index.d.ts",
29
- "import": "./dist/index.js"
30
- },
31
27
  "./qti-components": "./dist/qti-components/index.js",
32
28
  "./qti-components/*": "./dist/qti-components/*",
33
- "./qti-test": "./dist/qti-test/index.js",
34
- "./qti-test/*": "./dist/qti-test/*",
35
- "./qti-item": "./dist/qti-test/index.js",
36
- "./qti-item/*": "./dist/qti-item/*",
37
- "./loader": "./dist/qti-loader/index.js",
38
- "./transformers": "./dist/qti-transformers/index.js",
29
+ "./qti-test/core": "./dist/qti-test/core/index.js",
30
+ "./qti-test/components/*": "./dist/qti-test/components/*",
31
+ "./qti-item/core": "./dist/qti-test/core/index.js",
32
+ "./qti-item/components/*": "./dist/qti-item/components/*",
33
+ "./qti-loader": "./dist/qti-loader/index.js",
34
+ "./qti-transformers": "./dist/qti-transformers/index.js",
39
35
  "./react": "./dist/qti-components-jsx.d.ts",
40
36
  "./item.css": "./dist/item.css"
41
37
  },
@@ -63,71 +59,8 @@
63
59
  "storybook:docs:build": "wireit",
64
60
  "chromatic": "node chromatic-runner.cjs",
65
61
  "----hooks----": "-",
66
- "prepublishOnly": "npm run build",
67
62
  "prepare": "husky"
68
63
  },
69
- "wireit": {
70
- "storybook": {
71
- "command": "storybook dev -p 6006",
72
- "dependencies": [
73
- "storybook:cem:watch"
74
- ]
75
- },
76
- "build": {
77
- "command": "tsup",
78
- "dependencies": [
79
- "cem",
80
- "css"
81
- ],
82
- "files": [
83
- "src/**/*.ts",
84
- "tsconfig.json",
85
- "package.json",
86
- "tsup.config.ts"
87
- ]
88
- },
89
- "cem": {
90
- "command": "cem analyze"
91
- },
92
- "test-storybook": {
93
- "command": "test-storybook --excludeTags no-tests"
94
- },
95
- "css": {
96
- "command": "postcss src/item.css -d dist -m"
97
- },
98
- "test": {
99
- "command": "vitest run",
100
- "dependencies": [
101
- "build"
102
- ]
103
- },
104
- "storybook:docs": {
105
- "command": "storybook dev --docs -c .storybook-docs",
106
- "dependencies": [
107
- "storybook:cem:watch"
108
- ]
109
- },
110
- "storybook:docs:build": {
111
- "command": "storybook build --docs -c .storybook-docs --output-dir docs",
112
- "dependencies": [
113
- "cem"
114
- ]
115
- },
116
- "storybook:cem:watch": {
117
- "command": "cem analyze --watch",
118
- "service": {
119
- "readyWhen": {
120
- "lineMatches": "Created new manifest."
121
- }
122
- }
123
- },
124
- "attw": {
125
- "command": "attw --profile esm-only --pack --exclude-entrypoints ./item.css",
126
- "dependencies": [
127
- "build"
128
- ]
129
- }
130
- },
131
64
  "dependencies": {},
132
65
  "peerDependencies": {
133
66
  "@lit/context": "^1.1.3",
@@ -216,5 +149,67 @@
216
149
  "bugs": {
217
150
  "url": "https://github.com/Citolab/qti-components/issues"
218
151
  },
219
- "homepage": "https://github.com/Citolab/qti-components#readme"
152
+ "homepage": "https://github.com/Citolab/qti-components#readme",
153
+ "wireit": {
154
+ "storybook": {
155
+ "command": "storybook dev -p 6006",
156
+ "dependencies": [
157
+ "storybook:cem:watch"
158
+ ]
159
+ },
160
+ "build": {
161
+ "command": "tsup",
162
+ "dependencies": [
163
+ "cem",
164
+ "css"
165
+ ],
166
+ "files": [
167
+ "src/**/*.ts",
168
+ "tsconfig.json",
169
+ "package.json",
170
+ "tsup.config.ts"
171
+ ]
172
+ },
173
+ "cem": {
174
+ "command": "cem analyze"
175
+ },
176
+ "test-storybook": {
177
+ "command": "test-storybook --excludeTags no-tests"
178
+ },
179
+ "css": {
180
+ "command": "postcss src/item.css -d dist -m"
181
+ },
182
+ "test": {
183
+ "command": "vitest run",
184
+ "dependencies": [
185
+ "build"
186
+ ]
187
+ },
188
+ "storybook:docs": {
189
+ "command": "storybook dev --docs -c .storybook-docs",
190
+ "dependencies": [
191
+ "storybook:cem:watch"
192
+ ]
193
+ },
194
+ "storybook:docs:build": {
195
+ "command": "storybook build --docs -c .storybook-docs --output-dir docs",
196
+ "dependencies": [
197
+ "cem"
198
+ ]
199
+ },
200
+ "storybook:cem:watch": {
201
+ "command": "cem analyze --watch",
202
+ "service": {
203
+ "readyWhen": {
204
+ "lineMatches": "Created new manifest."
205
+ }
206
+ }
207
+ },
208
+ "attw": {
209
+ "command": "attw --profile esm-only --pack --exclude-entrypoints ./item.css ./react",
210
+ "dependencies": [
211
+ "build"
212
+ ]
213
+ }
214
+ }
220
215
  }
@@ -1 +0,0 @@
1
- import{a as i,b as o,c as r}from"./chunk-5FCXUJAG.js";var h=async s=>{let t=s.substring(0,s.lastIndexOf("/")),e=await o().load(`${s}`).then(n=>n.assessmentTest()),m=await r().load(`${t}/${e.href}`).then(n=>n.htmlDoc()),f=await r().load(`${t}/${e.href}`).then(n=>n.items()),a=`${t}/${e.href}`,c=`${t}/${e.href.substring(0,e.href.lastIndexOf("/"))}`;return{testHTMLDoc:m,testURI:c,testURL:a,items:f,testIdentifier:e.identifier}},d=async s=>i().load(s).then(t=>t.htmlDoc().firstElementChild);export{h as a,d as b};
@@ -1 +0,0 @@
1
- import{a as e}from"./chunk-5FCXUJAG.js";var c=s=>{class r extends s{constructor(...n){super(...n),this.addEventListener("qti-assessment-test-connected",()=>{}),this.addEventListener("qti-load-item-request",({detail:t})=>{t.promise=(async()=>(await e().load(`${t.href}`,t.cancelPreviousRequest)).htmlDoc())()}),this.addEventListener("qti-interaction-changed",t=>{}),this.addEventListener("qti-outcome-changed",()=>{})}}return r};export{c as a};
@@ -1,8 +0,0 @@
1
- import{b as l,c as n}from"./chunk-UIEC4LXR.js";import{a as i}from"./chunk-JLNHEMQG.js";import{e as s}from"./chunk-T4HD2C4F.js";import{css as r,html as o}from"lit";import{customElement as m}from"lit/decorators.js";var t=class extends i{constructor(){super(),this._internals.role="button",this._internals.ariaLabel="Next item",this.addEventListener("click",e=>{e.preventDefault(),this.disabled||this._requestItem(this.items[this.itemIndex-1].identifier)})}willUpdate(e){super.willUpdate(e),e.has("_testContext")&&(this.disabled=!this._testElement?.el||this.itemIndex===0||this.itemIndex===-1)}render(){return o`<slot></slot>`}};t.styles=r`
2
- :host {
3
- ${l};
4
- }
5
- :host([disabled]) {
6
- ${n};
7
- }
8
- `,t=s([m("test-prev")],t);export{t as a};
@@ -1,8 +0,0 @@
1
- import{b as r,c as i}from"./chunk-UIEC4LXR.js";import{a as s}from"./chunk-JLNHEMQG.js";import{e}from"./chunk-T4HD2C4F.js";import{css as o,html as l}from"lit";import{customElement as m,property as a}from"lit/decorators.js";var t=class extends s{constructor(){super();this.itemId=null;this.addEventListener("click",()=>this._requestItem(this.itemId))}render(){return l` <slot></slot> `}};t.styles=o`
2
- :host {
3
- ${r};
4
- }
5
- :host([disabled]) {
6
- ${i};
7
- }
8
- `,e([a({type:String,attribute:"item-id"})],t.prototype,"itemId",2),t=e([m("test-item-link")],t);export{t as a};
@@ -1 +0,0 @@
1
- var r=i=>{class n extends i{constructor(...t){super(...t),this._testContext={...this._testContext,view:"candidate"},this.addEventListener("on-test-switch-view",e=>{this._testContext={...this._testContext,view:e.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",e=>{this._updateElementView(),this._setCorrectResponseVisibility(e.detail)})}willUpdate(t){super.willUpdate(t),t.has("_testContext")&&this._updateElementView()}_updateElementView(){if(this.testElement&&this.testElement.el){Array.from(this.testElement.el.querySelectorAll("[view]")).forEach(s=>{s.classList.toggle("show",s.getAttribute("view")===this._testContext.view)});let e=this.testElement.el.querySelector(`qti-assessment-item[identifier="${this._testContext.navItemId}"]`);e&&e.showCorrectResponse(this._testContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this._testContext.view==="scorer")}}return n};export{r as a};
@@ -1,3 +0,0 @@
1
- import{a as m}from"./chunk-JLNHEMQG.js";import{e as n}from"./chunk-T4HD2C4F.js";import{html as v}from"lit";import{customElement as b,property as l}from"lit/decorators.js";import{prepareTemplate as _}from"stampino";var s=class extends m{constructor(){super();this.maxDisplayedItems=2;this.skipOnCategory="dep-informational";this._internals.ariaLabel="pagination"}createRenderRoot(){return this}render(){let i=this._testContext.items.reduce((t,r)=>{let o=r.category?.split(" ").includes(this.skipOnCategory)?"i":t.counter++;return t.result.push({...r,newIndex:o}),t},{counter:0,result:[]}).result,p=i.findIndex(t=>t.identifier===this._testContext.navItemId),d=Math.max(0,p-this.maxDisplayedItems),u=Math.min(i.length,p+this.maxDisplayedItems+1),h=i.slice(d,u);return v`
2
- ${h.map(t=>{let r=t.variables.find(c=>c.identifier=="SCORE"),e=parseInt(r?.value?.toString()),o=t.variables.find(c=>c.identifier==="completionStatus")?.value,a=t.category!==this.skipOnCategory?"regular":"info",f=this._testContext.navItemId===t.identifier,y=this._testContext.view==="scorer"&&a=="regular"&&e!==void 0&&!isNaN(e)&&e>0,I=this._testContext.view==="scorer"&&a=="regular"&&e!==void 0&&!isNaN(e)&&e<=0,x=this._testContext.view==="candidate"&&o==="completed"&&t.category!==this.skipOnCategory,g={...t,type:a,active:f,correct:y,incorrect:I,answered:x},C=this.firstElementChild;return _(C)({item:g})})}
3
- `}};n([l({type:Number,attribute:"max-displayed-items"})],s.prototype,"maxDisplayedItems",2),n([l({type:String,attribute:"skip-on-category"})],s.prototype,"skipOnCategory",2),s=n([b("test-paging-buttons-stamp")],s);export{s as a};
@@ -1 +0,0 @@
1
- import{createContext as t}from"@lit/context";var n=t(Symbol("test")),o=t(Symbol("testElement"));export{n as a,o as b};
File without changes
File without changes
@@ -1,5 +0,0 @@
1
- import{a as l}from"./chunk-CFXQCNG6.js";import{a}from"./chunk-XUJ7TXHW.js";import{c as s}from"./chunk-5FCXUJAG.js";import{e as r}from"./chunk-T4HD2C4F.js";import{LitElement as n,html as i}from"lit";import{customElement as p,property as c,state as o}from"lit/decorators.js";import{until as h}from"lit/directives/until.js";var e=class extends n{constructor(){super(...arguments);this.testURL=null;this.testDoc=null;this.testXML=null;this.templateContent=null}async handleTestURLChange(){if(this.testURL)try{let t=await s().load(this.testURL);this.testDoc=t.htmlDoc()}catch(t){console.error("Error loading or parsing XML:",t)}}handleTestXMLChange(){if(this.testXML)try{this.testDoc=s().parse(this.testXML).htmlDoc()}catch(t){console.error("Error parsing XML:",t)}}async connectedCallback(){super.connectedCallback(),this.initializeTemplateContent(),this.applyStyles(),this.testURL&&this.handleTestURLChange(),this.testXML&&this.handleTestXMLChange()}initializeTemplateContent(){let t=this.querySelector("template");this.templateContent=t?t.content:i``}applyStyles(){let t=new CSSStyleSheet;t.replaceSync(l),this.shadowRoot.adoptedStyleSheets=[t]}render(){return i`
2
- ${this.templateContent}
3
- <slot></slot>
4
- ${h(this.testDoc,i`<span>Loading...</span>`)}
5
- `}};r([c({type:String,attribute:"test-url"})],e.prototype,"testURL",2),r([o()],e.prototype,"testDoc",2),r([o()],e.prototype,"testXML",2),r([a("testURL",{waitUntilFirstUpdate:!0})],e.prototype,"handleTestURLChange",1),r([a("testXML",{waitUntilFirstUpdate:!0})],e.prototype,"handleTestXMLChange",1),e=r([p("test-container")],e);export{e as a};
File without changes
@@ -1 +0,0 @@
1
- import{a as d}from"./chunk-XUJ7TXHW.js";import{a as m,b as c}from"./chunk-CSY3WI5A.js";import{e as n}from"./chunk-T4HD2C4F.js";import{consume as u}from"@lit/context";import{LitElement as b}from"lit";import{state as h}from"lit/decorators.js";import{property as f}from"lit/decorators.js";function p(a){return(l,t)=>{f(a)(l,t);let e=`__${t}`;Object.defineProperty(l,t,{get(){return this[e]},set(r){let o=this[e];if(this[e]=r,o!==r){if(this._internals?.states){let i=t.toLowerCase();r?this._internals.states.add(`--${i}`):this._internals.states.delete(`--${i}`)}if(a.aria&&this._internals){let i=a.aria;r?this._internals[i]="true":this._internals[i]=null}this.requestUpdate(t,o)}},configurable:!0,enumerable:!0})}}var s=class extends b{constructor(){super();this.disabled=!0;this._internals=this.attachInternals()}_handleTestElementChange(t,e){e.el&&(this.disabled=!1)}willUpdate(t){if(t.has("_testContext")){let{items:e=[],navItemId:r}=this._testContext??{};this.itemIndex=e.findIndex(o=>o.identifier===r),this.items=e,this.view=this._testContext?.view}}_switchView(t){this.dispatchEvent(new CustomEvent("on-test-switch-view",{composed:!0,bubbles:!0,detail:t}))}_requestItem(t){this.dispatchEvent(new CustomEvent("qti-request-test-item",{composed:!0,bubbles:!0,detail:t}))}};n([p({type:Boolean,reflect:!0,aria:"ariaDisabled"})],s.prototype,"disabled",2),n([h(),u({context:m,subscribe:!0})],s.prototype,"_testContext",2),n([h(),u({context:c,subscribe:!0})],s.prototype,"_testElement",2),n([d("_testElement")],s.prototype,"_handleTestElementChange",1);export{s as a};