@citolab/qti-components 7.0.8 → 7.0.9-beta.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 (538) hide show
  1. package/cdn/chunks/chunk-3AHQU35T.js +1 -0
  2. package/cdn/chunks/chunk-4AGTWY6I.js +1 -0
  3. package/cdn/{chunk-A536ZOJJ.js → chunks/chunk-6EIGTAJQ.js} +2 -4
  4. package/cdn/chunks/chunk-6UEXCXHG.js +17 -0
  5. package/cdn/chunks/chunk-BJL2ZC5L.js +1 -0
  6. package/cdn/chunks/chunk-FB3WTNRH.js +8 -0
  7. package/cdn/chunks/chunk-GCKESRQG.js +1 -0
  8. package/{dist/chunks/chunk-NZQKGIJP.js → cdn/chunks/chunk-GVU44M3E.js} +6 -8
  9. package/cdn/chunks/{chunk-SATSEEWJ.js → chunk-I3HQJPKA.js} +84 -84
  10. package/cdn/chunks/chunk-IKDNYCM7.js +1 -0
  11. package/cdn/chunks/chunk-KDO3T66B.js +1 -0
  12. package/cdn/chunks/{chunk-T2KKTMAT.js → chunk-KGVJXME7.js} +84 -84
  13. package/cdn/chunks/chunk-KQPTKMFJ.js +1 -0
  14. package/cdn/chunks/{chunk-4ILXLVT5.js → chunk-LCKLXCUP.js} +6 -18
  15. package/cdn/chunks/chunk-M5PPZ5M3.js +59 -0
  16. package/cdn/chunks/chunk-O5MMIBRR.js +10 -0
  17. package/cdn/chunks/chunk-OEXGDZO2.js +8 -0
  18. package/cdn/chunks/{chunk-RXKI3AO4.js → chunk-R45JL2ZY.js} +1 -1
  19. package/cdn/chunks/chunk-W2VSEYLY.js +8 -0
  20. package/cdn/chunks/chunk-WYDU2FBY.js +8 -0
  21. package/cdn/chunks/chunk-X7T7HK65.js +8 -0
  22. package/cdn/chunks/{chunk-X2KBNXRO.js → chunk-YIYKK4RV.js} +1 -1
  23. package/cdn/exports/computed.context.js +1 -0
  24. package/cdn/exports/config.context.js +1 -0
  25. package/cdn/exports/qti-assessment-item.context.js +1 -1
  26. package/cdn/exports/qti-condition-expression.js +1 -1
  27. package/cdn/exports/qti-expression.js +1 -1
  28. package/cdn/exports/session.context.js +1 -0
  29. package/cdn/exports/test.context.js +1 -0
  30. package/cdn/index.global.js +1 -1
  31. package/cdn/index.js +1 -1
  32. package/cdn/qti-components/index.js +1 -1
  33. package/cdn/qti-item/core/index.js +1 -1
  34. package/cdn/qti-test/components/index.js +1 -1
  35. package/cdn/qti-test/components/test-container.js +1 -3549
  36. package/cdn/qti-test/components/test-end-attempt.js +1 -1
  37. package/cdn/qti-test/components/test-item-link.js +1 -1
  38. package/cdn/qti-test/components/test-navigation.js +1 -0
  39. package/cdn/qti-test/components/test-next.js +1 -1
  40. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
  41. package/cdn/qti-test/components/test-prev.js +1 -1
  42. package/cdn/qti-test/components/test-show-correct-response.js +1 -1
  43. package/cdn/qti-test/components/test-view.js +1 -1
  44. package/cdn/qti-test/core/index.js +1 -1
  45. package/dist/chunks/chunk-3A4IOMBQ.js +8 -0
  46. package/dist/chunks/chunk-3A4IOMBQ.js.map +1 -0
  47. package/dist/{chunk-2CHF3TMY.js → chunks/chunk-6MW3J6OM.js} +112 -4
  48. package/dist/chunks/chunk-6MW3J6OM.js.map +1 -0
  49. package/dist/chunks/chunk-CBYNKDSF.js +1 -0
  50. package/dist/chunks/{chunk-WWN5AD6V.js → chunk-CHINL5UJ.js} +12 -7
  51. package/dist/chunks/chunk-CHINL5UJ.js.map +1 -0
  52. package/dist/chunks/{chunk-W4272Q5U.js → chunk-CWCYTL3F.js} +18 -8
  53. package/dist/chunks/chunk-CWCYTL3F.js.map +1 -0
  54. package/dist/chunks/{chunk-GQ5P3NWC.js → chunk-FZVLLSCM.js} +18 -8
  55. package/dist/chunks/chunk-FZVLLSCM.js.map +1 -0
  56. package/dist/chunks/chunk-GNCPECOC.js +45 -0
  57. package/dist/chunks/chunk-GNCPECOC.js.map +1 -0
  58. package/dist/chunks/{chunk-YOXF6JPS.js → chunk-GRYVMG5Q.js} +135 -193
  59. package/dist/chunks/chunk-GRYVMG5Q.js.map +1 -0
  60. package/dist/chunks/{chunk-BPHQLJWE.js → chunk-I7HVKMDI.js} +2 -2
  61. package/dist/chunks/chunk-I7HVKMDI.js.map +1 -0
  62. package/dist/chunks/chunk-J4MM4JXS.js +8 -0
  63. package/dist/chunks/chunk-J4MM4JXS.js.map +1 -0
  64. package/dist/chunks/{chunk-FV7HWK54.js → chunk-JUAS2TVR.js} +1 -1
  65. package/dist/chunks/chunk-JUAS2TVR.js.map +1 -0
  66. package/dist/chunks/chunk-K6EUKFNW.js +43 -0
  67. package/dist/chunks/chunk-K6EUKFNW.js.map +1 -0
  68. package/dist/chunks/chunk-LZ7UIV5O.js +91 -0
  69. package/dist/chunks/chunk-LZ7UIV5O.js.map +1 -0
  70. package/dist/chunks/{chunk-J2SHENRN.js → chunk-MDWBTFKL.js} +100 -5
  71. package/dist/chunks/chunk-MDWBTFKL.js.map +1 -0
  72. package/dist/chunks/{chunk-KOEILLVS.js → chunk-NJNQOQUU.js} +1 -1
  73. package/dist/chunks/chunk-NJNQOQUU.js.map +1 -0
  74. package/dist/chunks/{chunk-E4TWZ2DL.js → chunk-NPHDN2TQ.js} +139 -113
  75. package/dist/chunks/chunk-NPHDN2TQ.js.map +1 -0
  76. package/dist/chunks/chunk-ODLYMQOS.js +8 -0
  77. package/dist/chunks/chunk-ODLYMQOS.js.map +1 -0
  78. package/dist/chunks/{chunk-XSI6FXGD.js → chunk-OOQLWOYU.js} +2 -2
  79. package/dist/chunks/{chunk-NHA53UTY.js → chunk-PR6AZWRP.js} +3 -6
  80. package/dist/chunks/chunk-PR6AZWRP.js.map +1 -0
  81. package/dist/chunks/chunk-QAA6MWGE.js +170 -0
  82. package/dist/chunks/chunk-QAA6MWGE.js.map +1 -0
  83. package/dist/chunks/chunk-QTH3WLGY.js +8 -0
  84. package/dist/chunks/chunk-QTH3WLGY.js.map +1 -0
  85. package/dist/chunks/{chunk-DLUJN2FW.js → chunk-W7ZXKJ5O.js} +1 -1
  86. package/dist/chunks/chunk-W7ZXKJ5O.js.map +1 -0
  87. package/dist/chunks/{chunk-OIRWOI3E.js → chunk-WRHEO7NG.js} +1 -1
  88. package/dist/chunks/chunk-WRHEO7NG.js.map +1 -0
  89. package/dist/chunks/chunk-WXART76T.js +95 -0
  90. package/dist/chunks/chunk-WXART76T.js.map +1 -0
  91. package/dist/exports/computed.context.d.ts +30 -0
  92. package/dist/exports/computed.context.js +8 -0
  93. package/dist/exports/config.context.d.ts +8 -0
  94. package/dist/exports/config.context.js +8 -0
  95. package/dist/exports/interaction.js +1 -1
  96. package/dist/exports/item.context.d.ts +2 -2
  97. package/dist/exports/item.context.js +1 -1
  98. package/dist/exports/qti-assessment-item.context.js +1 -1
  99. package/dist/exports/qti-condition-expression.js +3 -3
  100. package/dist/exports/qti-expression.js +2 -2
  101. package/dist/exports/session.context.d.ts +12 -0
  102. package/dist/exports/session.context.js +8 -0
  103. package/dist/exports/test.context.d.ts +16 -0
  104. package/dist/exports/test.context.js +8 -0
  105. package/dist/index.d.ts +9 -4
  106. package/dist/index.js +58 -55
  107. package/dist/qti-components/index.d.ts +2 -2
  108. package/dist/qti-components/index.js +7 -7
  109. package/dist/qti-components-jsx.d.ts +112 -86
  110. package/dist/qti-item/core/index.js +2 -3
  111. package/dist/qti-loader/index.d.ts +1 -1
  112. package/dist/qti-loader/index.js +1 -1
  113. package/dist/{qti-response-declaration-Di9CsqiJ.d.ts → qti-response-declaration-CyOeVboh.d.ts} +2 -2
  114. package/dist/qti-test/components/index.d.ts +10 -4
  115. package/dist/qti-test/components/index.js +28 -19
  116. package/dist/qti-test/components/test-container.d.ts +3 -1
  117. package/dist/qti-test/components/test-container.js +6 -3778
  118. package/dist/qti-test/components/test-container.js.map +1 -1
  119. package/dist/qti-test/components/test-end-attempt.d.ts +4 -11
  120. package/dist/qti-test/components/test-end-attempt.js +3 -5
  121. package/dist/qti-test/components/test-item-link.d.ts +2 -11
  122. package/dist/qti-test/components/test-item-link.js +1 -5
  123. package/dist/qti-test/components/test-navigation.d.ts +35 -0
  124. package/dist/qti-test/components/test-navigation.js +12 -0
  125. package/dist/qti-test/components/test-navigation.js.map +1 -0
  126. package/dist/qti-test/components/test-next.d.ts +12 -12
  127. package/dist/qti-test/components/test-next.js +4 -4
  128. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +8 -15
  129. package/dist/qti-test/components/test-paging-buttons-stamp.js +2 -5
  130. package/dist/qti-test/components/test-prev.d.ts +11 -12
  131. package/dist/qti-test/components/test-prev.js +4 -4
  132. package/dist/qti-test/components/test-show-correct-response.d.ts +4 -11
  133. package/dist/qti-test/components/test-show-correct-response.js +3 -5
  134. package/dist/qti-test/components/test-view.d.ts +3 -12
  135. package/dist/qti-test/components/test-view.js +2 -4
  136. package/dist/qti-test/core/index.d.ts +18 -48
  137. package/dist/qti-test/core/index.js +7 -12
  138. package/dist/{test.context-C2LBA3w4.d.ts → qti-test-part-zX9tOUbA.d.ts} +17 -33
  139. package/dist/vscode.html-custom-data.json +33 -30
  140. package/package.json +20 -19
  141. package/cdn/chunk-4DFVJE2A.js +0 -48
  142. package/cdn/chunk-4I75QSIL.js +0 -8
  143. package/cdn/chunk-5WCOPF7O.js +0 -73
  144. package/cdn/chunk-66PERJA3.js +0 -939
  145. package/cdn/chunk-6WNSQ7U6.js +0 -939
  146. package/cdn/chunk-AT2C24P4.js +0 -8
  147. package/cdn/chunk-BLKKKK6C.js +0 -11
  148. package/cdn/chunk-DC2R556M.js +0 -5
  149. package/cdn/chunk-GALSGMIP.js +0 -5
  150. package/cdn/chunk-IXSX4SJX.js +0 -1
  151. package/cdn/chunk-KYOTSBCX.js +0 -1
  152. package/cdn/chunk-L4TDHAKL.js +0 -24
  153. package/cdn/chunk-LVW3MHTI.js +0 -23
  154. package/cdn/chunk-M6AATWPS.js +0 -59
  155. package/cdn/chunk-MFWSHIPH.js +0 -17
  156. package/cdn/chunk-QGKK4T2J.js +0 -8
  157. package/cdn/chunk-ROXN2HIJ.js +0 -8
  158. package/cdn/chunk-SQDSHH6N.js +0 -3539
  159. package/cdn/chunk-TJMODUN5.js +0 -8
  160. package/cdn/chunk-VI2WKTN4.js +0 -1
  161. package/cdn/chunk-Z6SKK5ZX.js +0 -8
  162. package/cdn/chunks/chunk-3GO57DNP.js +0 -0
  163. package/cdn/chunks/chunk-3V6LA7B3.js +0 -8
  164. package/cdn/chunks/chunk-4PEUIMDK.js +0 -8
  165. package/cdn/chunks/chunk-4WXQYE2P.js +0 -8
  166. package/cdn/chunks/chunk-5P7CTN7Q.js +0 -11
  167. package/cdn/chunks/chunk-5X76K77R.js +0 -8
  168. package/cdn/chunks/chunk-6MCYE7P5.js +0 -1
  169. package/cdn/chunks/chunk-6PW2L463.js +0 -0
  170. package/cdn/chunks/chunk-6S4CDN3T.js +0 -43
  171. package/cdn/chunks/chunk-76VGZJCP.js +0 -934
  172. package/cdn/chunks/chunk-7RBGYKOX.js +0 -5
  173. package/cdn/chunks/chunk-7XYBFL7U.js +0 -934
  174. package/cdn/chunks/chunk-AJJJAZWM.js +0 -1
  175. package/cdn/chunks/chunk-ANDPD7F2.js +0 -5
  176. package/cdn/chunks/chunk-ARHBUT6F.js +0 -5
  177. package/cdn/chunks/chunk-AUHO2E7V.js +0 -934
  178. package/cdn/chunks/chunk-CZ3CSGCE.js +0 -934
  179. package/cdn/chunks/chunk-D3GR6AUG.js +0 -43
  180. package/cdn/chunks/chunk-DZCKF45D.js +0 -5
  181. package/cdn/chunks/chunk-EFU4L43Q.js +0 -8
  182. package/cdn/chunks/chunk-FM5C34DM.js +0 -934
  183. package/cdn/chunks/chunk-FRS2J3OS.js +0 -59
  184. package/cdn/chunks/chunk-GMK2YRB2.js +0 -934
  185. package/cdn/chunks/chunk-H2V2RXUW.js +0 -11
  186. package/cdn/chunks/chunk-HUMOYGEM.js +0 -43
  187. package/cdn/chunks/chunk-IMJOPCFR.js +0 -1
  188. package/cdn/chunks/chunk-IQZ7AOCQ.js +0 -8
  189. package/cdn/chunks/chunk-J3JSSCM6.js +0 -5
  190. package/cdn/chunks/chunk-KHLUVO6Y.js +0 -8
  191. package/cdn/chunks/chunk-LARBLB7K.js +0 -8
  192. package/cdn/chunks/chunk-LNFCEHB3.js +0 -934
  193. package/cdn/chunks/chunk-MJMONWKB.js +0 -3539
  194. package/cdn/chunks/chunk-N5OHGRGG.js +0 -8
  195. package/cdn/chunks/chunk-NDHSIO2G.js +0 -8
  196. package/cdn/chunks/chunk-NRY3WHJD.js +0 -5
  197. package/cdn/chunks/chunk-PKT2SJQD.js +0 -8
  198. package/cdn/chunks/chunk-PPWEIKLT.js +0 -1
  199. package/cdn/chunks/chunk-PT523RSK.js +0 -8
  200. package/cdn/chunks/chunk-QD3NT5PG.js +0 -934
  201. package/cdn/chunks/chunk-QTK4CPHP.js +0 -8
  202. package/cdn/chunks/chunk-QV6I5NVQ.js +0 -8
  203. package/cdn/chunks/chunk-R33OODNX.js +0 -1
  204. package/cdn/chunks/chunk-RIXTWE2H.js +0 -8
  205. package/cdn/chunks/chunk-ROZIP5LG.js +0 -8
  206. package/cdn/chunks/chunk-RPZVSBLM.js +0 -8
  207. package/cdn/chunks/chunk-SXM25YH3.js +0 -934
  208. package/cdn/chunks/chunk-TEYXRLTI.js +0 -8
  209. package/cdn/chunks/chunk-TQBDBMWL.js +0 -5
  210. package/cdn/chunks/chunk-TV3SPOLH.js +0 -8
  211. package/cdn/chunks/chunk-TVDTF6P6.js +0 -934
  212. package/cdn/chunks/chunk-U2TE6TOV.js +0 -934
  213. package/cdn/chunks/chunk-W5Y3ZU2W.js +0 -5
  214. package/cdn/chunks/chunk-WPGJ54IP.js +0 -1
  215. package/cdn/chunks/chunk-YHWMZAZD.js +0 -43
  216. package/cdn/chunks/chunk-YVZ742ID.js +0 -934
  217. package/cdn/chunks/chunk-YWH4TGMA.js +0 -5
  218. package/cdn/chunks/chunk-YXR6KSZI.js +0 -11
  219. package/cdn/qti-components/index.global.js +0 -226
  220. package/cdn/qti-item/components/index.global.js +0 -149
  221. package/cdn/qti-item/components/index.js +0 -3549
  222. package/cdn/qti-item/components/item-container.global.js +0 -149
  223. package/cdn/qti-item/components/item-container.js +0 -3549
  224. package/cdn/qti-item/core/index.global.js +0 -149
  225. package/cdn/qti-item/index.global.js +0 -149
  226. package/cdn/qti-item/index.js +0 -3549
  227. package/cdn/qti-item/qti-item.global.js +0 -114
  228. package/cdn/qti-item/qti-item.js +0 -1
  229. package/cdn/qti-loader/index.global.js +0 -1
  230. package/cdn/qti-test/components/index.global.js +0 -207
  231. package/cdn/qti-test/components/styles.global.js +0 -44
  232. package/cdn/qti-test/components/test-component.abstract.global.js +0 -170
  233. package/cdn/qti-test/components/test-component.abstract.js +0 -1
  234. package/cdn/qti-test/components/test-container.global.js +0 -149
  235. package/cdn/qti-test/components/test-item-link.global.js +0 -170
  236. package/cdn/qti-test/components/test-next.global.js +0 -170
  237. package/cdn/qti-test/components/test-next.spec.css +0 -1
  238. package/cdn/qti-test/components/test-next.spec.global.js +0 -64
  239. package/cdn/qti-test/components/test-next.spec.js +0 -713
  240. package/cdn/qti-test/components/test-paging-buttons-stamp.global.js +0 -207
  241. package/cdn/qti-test/components/test-prev.global.js +0 -170
  242. package/cdn/qti-test/components/test-view.global.js +0 -170
  243. package/cdn/qti-test/context/index.global.js +0 -58
  244. package/cdn/qti-test/context/index.js +0 -1
  245. package/cdn/qti-test/context/test.context.global.js +0 -58
  246. package/cdn/qti-test/context/test.context.js +0 -1
  247. package/cdn/qti-test/core/index.global.js +0 -205
  248. package/cdn/qti-test/index.global.js +0 -242
  249. package/cdn/qti-test/index.js +0 -3598
  250. package/cdn/qti-test/mixins/index.global.js +0 -1
  251. package/cdn/qti-test/mixins/index.js +0 -23
  252. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  253. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  254. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  255. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  256. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  257. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  258. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  259. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  260. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  261. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  262. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  263. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  264. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  265. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  266. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  267. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  268. package/cdn/qti-test/qti-test.global.js +0 -170
  269. package/cdn/qti-test/qti-test.js +0 -23
  270. package/cdn/qti-test/test-base.global.js +0 -170
  271. package/cdn/qti-test/test-base.js +0 -1
  272. package/cdn/qti-transformers/index.global.js +0 -1
  273. package/dist/chunk-2CHF3TMY.js.map +0 -1
  274. package/dist/chunk-2LWLX7WV.js +0 -6307
  275. package/dist/chunk-2LWLX7WV.js.map +0 -1
  276. package/dist/chunk-2OA7E3E7.js +0 -294
  277. package/dist/chunk-2OA7E3E7.js.map +0 -1
  278. package/dist/chunk-3G364JZC.js +0 -72
  279. package/dist/chunk-3G364JZC.js.map +0 -1
  280. package/dist/chunk-44VE5POH.js +0 -55
  281. package/dist/chunk-4YG2FPKK.js +0 -31
  282. package/dist/chunk-4YG2FPKK.js.map +0 -1
  283. package/dist/chunk-6TUE644E.js +0 -569
  284. package/dist/chunk-6TUE644E.js.map +0 -1
  285. package/dist/chunk-6ZMD232X.js +0 -78
  286. package/dist/chunk-6ZMD232X.js.map +0 -1
  287. package/dist/chunk-AYRSHIHA.js +0 -50
  288. package/dist/chunk-AYRSHIHA.js.map +0 -1
  289. package/dist/chunk-BN32D5J2.js +0 -43
  290. package/dist/chunk-BN32D5J2.js.map +0 -1
  291. package/dist/chunk-CJRXRBRQ.js +0 -50
  292. package/dist/chunk-CJRXRBRQ.js.map +0 -1
  293. package/dist/chunk-GPJ6WTE5.js +0 -118
  294. package/dist/chunk-GPJ6WTE5.js.map +0 -1
  295. package/dist/chunk-KAUHKHPH.js +0 -50
  296. package/dist/chunk-KAUHKHPH.js.map +0 -1
  297. package/dist/chunk-MAC76UNI.js +0 -1
  298. package/dist/chunk-QYN5S4EM.js +0 -107
  299. package/dist/chunk-QYN5S4EM.js.map +0 -1
  300. package/dist/chunk-UB5K44DB.js +0 -30
  301. package/dist/chunk-UB5K44DB.js.map +0 -1
  302. package/dist/chunk-UJTJIU3C.js +0 -43
  303. package/dist/chunk-UJTJIU3C.js.map +0 -1
  304. package/dist/chunk-XVQZ5JI5.js +0 -50
  305. package/dist/chunk-XVQZ5JI5.js.map +0 -1
  306. package/dist/chunk-XW3PQRKW.js +0 -6306
  307. package/dist/chunk-XW3PQRKW.js.map +0 -1
  308. package/dist/chunk-YQ7EXOAK.js +0 -10
  309. package/dist/chunk-YQ7EXOAK.js.map +0 -1
  310. package/dist/chunks/chunk-2V6LQV2K.js +0 -50
  311. package/dist/chunks/chunk-2V6LQV2K.js.map +0 -1
  312. package/dist/chunks/chunk-3EU75IUF.js +0 -118
  313. package/dist/chunks/chunk-3EU75IUF.js.map +0 -1
  314. package/dist/chunks/chunk-3QQFMVDS.js +0 -118
  315. package/dist/chunks/chunk-3QQFMVDS.js.map +0 -1
  316. package/dist/chunks/chunk-4GNVYCBN.js +0 -627
  317. package/dist/chunks/chunk-4GNVYCBN.js.map +0 -1
  318. package/dist/chunks/chunk-4MQV5IRV.js +0 -59
  319. package/dist/chunks/chunk-4MQV5IRV.js.map +0 -1
  320. package/dist/chunks/chunk-4WVLWWYJ.js +0 -50
  321. package/dist/chunks/chunk-4WVLWWYJ.js.map +0 -1
  322. package/dist/chunks/chunk-5KVGRLYT.js +0 -10
  323. package/dist/chunks/chunk-5KVGRLYT.js.map +0 -1
  324. package/dist/chunks/chunk-5PCD2B62.js +0 -6091
  325. package/dist/chunks/chunk-5PCD2B62.js.map +0 -1
  326. package/dist/chunks/chunk-5RTLOB3Q.js +0 -59
  327. package/dist/chunks/chunk-5RTLOB3Q.js.map +0 -1
  328. package/dist/chunks/chunk-6JXR63MH.js +0 -50
  329. package/dist/chunks/chunk-6JXR63MH.js.map +0 -1
  330. package/dist/chunks/chunk-6PAEJQSQ.js +0 -6058
  331. package/dist/chunks/chunk-6PAEJQSQ.js.map +0 -1
  332. package/dist/chunks/chunk-6QT4LIPL.js +0 -623
  333. package/dist/chunks/chunk-6QT4LIPL.js.map +0 -1
  334. package/dist/chunks/chunk-7QMCKYDR.js +0 -43
  335. package/dist/chunks/chunk-7QMCKYDR.js.map +0 -1
  336. package/dist/chunks/chunk-A24F75DB.js +0 -72
  337. package/dist/chunks/chunk-A24F75DB.js.map +0 -1
  338. package/dist/chunks/chunk-AUWATZ65.js +0 -10
  339. package/dist/chunks/chunk-AUWATZ65.js.map +0 -1
  340. package/dist/chunks/chunk-AXTEKPP5.js +0 -6084
  341. package/dist/chunks/chunk-AXTEKPP5.js.map +0 -1
  342. package/dist/chunks/chunk-B6MJCAOF.js +0 -6063
  343. package/dist/chunks/chunk-B6MJCAOF.js.map +0 -1
  344. package/dist/chunks/chunk-BJ2JLJIJ.js +0 -623
  345. package/dist/chunks/chunk-BJ2JLJIJ.js.map +0 -1
  346. package/dist/chunks/chunk-BPHQLJWE.js.map +0 -1
  347. package/dist/chunks/chunk-CD3E4M5Y.js +0 -107
  348. package/dist/chunks/chunk-CD3E4M5Y.js.map +0 -1
  349. package/dist/chunks/chunk-CEXAR7BF.js +0 -52
  350. package/dist/chunks/chunk-CEXAR7BF.js.map +0 -1
  351. package/dist/chunks/chunk-CWYAQA25.js +0 -6067
  352. package/dist/chunks/chunk-CWYAQA25.js.map +0 -1
  353. package/dist/chunks/chunk-D3QX5N57.js +0 -6117
  354. package/dist/chunks/chunk-D3QX5N57.js.map +0 -1
  355. package/dist/chunks/chunk-DLUJN2FW.js.map +0 -1
  356. package/dist/chunks/chunk-DNHDFXTV.js +0 -59
  357. package/dist/chunks/chunk-DNHDFXTV.js.map +0 -1
  358. package/dist/chunks/chunk-E4TWZ2DL.js.map +0 -1
  359. package/dist/chunks/chunk-FV7HWK54.js.map +0 -1
  360. package/dist/chunks/chunk-GQ5P3NWC.js.map +0 -1
  361. package/dist/chunks/chunk-GSWZT6N2.js +0 -50
  362. package/dist/chunks/chunk-GSWZT6N2.js.map +0 -1
  363. package/dist/chunks/chunk-HHVRU3AJ.js +0 -107
  364. package/dist/chunks/chunk-HHVRU3AJ.js.map +0 -1
  365. package/dist/chunks/chunk-HOTNM5DT.js +0 -1
  366. package/dist/chunks/chunk-IWG66KQQ.js +0 -107
  367. package/dist/chunks/chunk-IWG66KQQ.js.map +0 -1
  368. package/dist/chunks/chunk-J2SHENRN.js.map +0 -1
  369. package/dist/chunks/chunk-K6ATVWMP.js +0 -6091
  370. package/dist/chunks/chunk-K6ATVWMP.js.map +0 -1
  371. package/dist/chunks/chunk-KOEILLVS.js.map +0 -1
  372. package/dist/chunks/chunk-KYAIMBP5.js +0 -78
  373. package/dist/chunks/chunk-KYAIMBP5.js.map +0 -1
  374. package/dist/chunks/chunk-LNISKMIL.js +0 -6063
  375. package/dist/chunks/chunk-LNISKMIL.js.map +0 -1
  376. package/dist/chunks/chunk-LNKJEW5E.js +0 -627
  377. package/dist/chunks/chunk-LNKJEW5E.js.map +0 -1
  378. package/dist/chunks/chunk-LXJA3VP2.js +0 -72
  379. package/dist/chunks/chunk-LXJA3VP2.js.map +0 -1
  380. package/dist/chunks/chunk-MLT7V47R.js +0 -100
  381. package/dist/chunks/chunk-MLT7V47R.js.map +0 -1
  382. package/dist/chunks/chunk-N5FPZNMX.js +0 -43
  383. package/dist/chunks/chunk-N5FPZNMX.js.map +0 -1
  384. package/dist/chunks/chunk-NHA53UTY.js.map +0 -1
  385. package/dist/chunks/chunk-NZQKGIJP.js.map +0 -1
  386. package/dist/chunks/chunk-O6WEZVEM.js +0 -43
  387. package/dist/chunks/chunk-O6WEZVEM.js.map +0 -1
  388. package/dist/chunks/chunk-OIRWOI3E.js.map +0 -1
  389. package/dist/chunks/chunk-PWOY6REC.js +0 -6064
  390. package/dist/chunks/chunk-PWOY6REC.js.map +0 -1
  391. package/dist/chunks/chunk-QJELKGWM.js +0 -6061
  392. package/dist/chunks/chunk-QJELKGWM.js.map +0 -1
  393. package/dist/chunks/chunk-QUB54PXZ.js +0 -50
  394. package/dist/chunks/chunk-QUB54PXZ.js.map +0 -1
  395. package/dist/chunks/chunk-RX3BRYYI.js +0 -59
  396. package/dist/chunks/chunk-RX3BRYYI.js.map +0 -1
  397. package/dist/chunks/chunk-UEEMM6H2.js +0 -6090
  398. package/dist/chunks/chunk-UEEMM6H2.js.map +0 -1
  399. package/dist/chunks/chunk-UFYWCLXF.js +0 -10
  400. package/dist/chunks/chunk-UFYWCLXF.js.map +0 -1
  401. package/dist/chunks/chunk-UN2IFSGC.js +0 -1
  402. package/dist/chunks/chunk-VAPB5TN4.js +0 -46
  403. package/dist/chunks/chunk-VAPB5TN4.js.map +0 -1
  404. package/dist/chunks/chunk-VBF3GCZK.js +0 -50
  405. package/dist/chunks/chunk-VBF3GCZK.js.map +0 -1
  406. package/dist/chunks/chunk-W4272Q5U.js.map +0 -1
  407. package/dist/chunks/chunk-WWN5AD6V.js.map +0 -1
  408. package/dist/chunks/chunk-X226BX2U.js +0 -78
  409. package/dist/chunks/chunk-X226BX2U.js.map +0 -1
  410. package/dist/chunks/chunk-XCHS3RTZ.js +0 -107
  411. package/dist/chunks/chunk-XCHS3RTZ.js.map +0 -1
  412. package/dist/chunks/chunk-YFC3BVN2.js +0 -78
  413. package/dist/chunks/chunk-YFC3BVN2.js.map +0 -1
  414. package/dist/chunks/chunk-YOXF6JPS.js.map +0 -1
  415. package/dist/chunks/chunk-YQB6YLNW.js +0 -78
  416. package/dist/chunks/chunk-YQB6YLNW.js.map +0 -1
  417. package/dist/chunks/chunk-Z5THRO6Z.js +0 -46
  418. package/dist/chunks/chunk-Z5THRO6Z.js.map +0 -1
  419. package/dist/chunks/chunk-ZHAJ3CMP.js +0 -6091
  420. package/dist/chunks/chunk-ZHAJ3CMP.js.map +0 -1
  421. package/dist/chunks/chunk-ZPNJ2HP5.js +0 -71
  422. package/dist/chunks/chunk-ZPNJ2HP5.js.map +0 -1
  423. package/dist/chunks/chunk-ZQXZ6PK7.js +0 -649
  424. package/dist/chunks/chunk-ZQXZ6PK7.js.map +0 -1
  425. package/dist/custom-element-eslint-rules.js +0 -337
  426. package/dist/custom-elements.json +0 -27158
  427. package/dist/loader/index.d.ts +0 -20
  428. package/dist/loader/index.js +0 -310
  429. package/dist/loader/index.js.map +0 -1
  430. package/dist/qti-components/index.cjs +0 -6773
  431. package/dist/qti-components/index.cjs.map +0 -1
  432. package/dist/qti-components/index.d.cts +0 -150
  433. package/dist/qti-item/components/index.d.ts +0 -3
  434. package/dist/qti-item/components/index.js +0 -3856
  435. package/dist/qti-item/components/index.js.map +0 -1
  436. package/dist/qti-item/components/item-container.d.ts +0 -40
  437. package/dist/qti-item/components/item-container.js +0 -3856
  438. package/dist/qti-item/components/item-container.js.map +0 -1
  439. package/dist/qti-item/index.cjs +0 -89
  440. package/dist/qti-item/index.cjs.map +0 -1
  441. package/dist/qti-item/index.d.cts +0 -24
  442. package/dist/qti-item/index.d.ts +0 -4
  443. package/dist/qti-item/index.js +0 -3869
  444. package/dist/qti-item/index.js.map +0 -1
  445. package/dist/qti-item/qti-item.d.ts +0 -25
  446. package/dist/qti-item/qti-item.js +0 -26
  447. package/dist/qti-item/qti-item.js.map +0 -1
  448. package/dist/qti-loader/index.cjs +0 -332
  449. package/dist/qti-loader/index.cjs.map +0 -1
  450. package/dist/qti-loader/index.d.cts +0 -20
  451. package/dist/qti-response-declaration-DAeBp8HH.d.ts +0 -1008
  452. package/dist/qti-response-declaration-ucAqd0qK.d.ts +0 -1034
  453. package/dist/qti-simple-choice-3M44uWiN.d.ts +0 -1153
  454. package/dist/qti-simple-choice-B5GnzbqW.d.ts +0 -1080
  455. package/dist/qti-simple-choice-BOLF9wXz.d.ts +0 -1170
  456. package/dist/qti-simple-choice-BeixIkA0.d.ts +0 -1088
  457. package/dist/qti-simple-choice-BiEjEO6s.d.ts +0 -1152
  458. package/dist/qti-simple-choice-Bo_ikO6H.d.ts +0 -1198
  459. package/dist/qti-simple-choice-C0CcrtK5.d.ts +0 -1169
  460. package/dist/qti-simple-choice-Cgh1-Jbr.d.cts +0 -1185
  461. package/dist/qti-simple-choice-Cgh1-Jbr.d.ts +0 -1185
  462. package/dist/qti-simple-choice-Cn5y-Ta8.d.ts +0 -1158
  463. package/dist/qti-simple-choice-D0GiMrqD.d.ts +0 -1168
  464. package/dist/qti-simple-choice-DxWcdKHi.d.ts +0 -1158
  465. package/dist/qti-simple-choice-R_LxBTp8.d.ts +0 -1158
  466. package/dist/qti-simple-choice-hAIyfF0z.d.ts +0 -1114
  467. package/dist/qti-simple-choice-o4rje1RA.d.ts +0 -1176
  468. package/dist/qti-simple-choice-v2GxpPNh.d.ts +0 -1181
  469. package/dist/qti-test/components/test-component.abstract.d.ts +0 -26
  470. package/dist/qti-test/components/test-component.abstract.js +0 -11
  471. package/dist/qti-test/components/test-next.spec.css +0 -2481
  472. package/dist/qti-test/components/test-next.spec.css.map +0 -1
  473. package/dist/qti-test/components/test-next.spec.d.ts +0 -13
  474. package/dist/qti-test/components/test-next.spec.js +0 -45904
  475. package/dist/qti-test/components/test-next.spec.js.map +0 -1
  476. package/dist/qti-test/context/index.d.ts +0 -6
  477. package/dist/qti-test/context/index.js +0 -9
  478. package/dist/qti-test/context/index.js.map +0 -1
  479. package/dist/qti-test/context/test.context.d.ts +0 -6
  480. package/dist/qti-test/context/test.context.js +0 -9
  481. package/dist/qti-test/context/test.context.js.map +0 -1
  482. package/dist/qti-test/index.cjs +0 -4823
  483. package/dist/qti-test/index.cjs.map +0 -1
  484. package/dist/qti-test/index.d.cts +0 -304
  485. package/dist/qti-test/index.d.ts +0 -14
  486. package/dist/qti-test/index.js +0 -4746
  487. package/dist/qti-test/index.js.map +0 -1
  488. package/dist/qti-test/mixins/index.d.ts +0 -8
  489. package/dist/qti-test/mixins/index.js +0 -350
  490. package/dist/qti-test/mixins/index.js.map +0 -1
  491. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  492. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  493. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  494. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  495. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  496. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  497. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  498. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  499. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  500. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  501. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  502. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  503. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  504. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  505. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  506. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  507. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  508. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  509. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  510. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  511. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  512. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  513. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  514. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  515. package/dist/qti-test/qti-test.d.ts +0 -68
  516. package/dist/qti-test/qti-test.js +0 -500
  517. package/dist/qti-test/qti-test.js.map +0 -1
  518. package/dist/qti-test/test-base.d.ts +0 -6
  519. package/dist/qti-test/test-base.js +0 -137
  520. package/dist/qti-test/test-base.js.map +0 -1
  521. package/dist/qti-transformers/index.cjs +0 -316
  522. package/dist/qti-transformers/index.cjs.map +0 -1
  523. package/dist/qti-transformers/index.d.cts +0 -75
  524. package/dist/test-base-BJwG9Ie8.d.ts +0 -109
  525. package/dist/test.context-Bx-606B3.d.ts +0 -99
  526. package/dist/test.context-CB5V4xJz.d.ts +0 -99
  527. package/dist/test.context-CaENAJNk.d.ts +0 -101
  528. package/dist/test.context-CmsDQ8k2.d.ts +0 -99
  529. package/dist/transformers/index.d.ts +0 -76
  530. package/dist/transformers/index.js +0 -293
  531. package/dist/transformers/index.js.map +0 -1
  532. /package/cdn/{chunk-22HAPLRD.js → chunks/chunk-MTNLMWSG.js} +0 -0
  533. /package/dist/{chunk-44VE5POH.js.map → chunks/chunk-CBYNKDSF.js.map} +0 -0
  534. /package/dist/chunks/{chunk-XSI6FXGD.js.map → chunk-OOQLWOYU.js.map} +0 -0
  535. /package/dist/{chunk-MAC76UNI.js.map → exports/computed.context.js.map} +0 -0
  536. /package/dist/{chunks/chunk-HOTNM5DT.js.map → exports/config.context.js.map} +0 -0
  537. /package/dist/{chunks/chunk-UN2IFSGC.js.map → exports/session.context.js.map} +0 -0
  538. /package/dist/{qti-test/components/test-component.abstract.js.map → exports/test.context.js.map} +0 -0
@@ -1,137 +0,0 @@
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/test-base.ts
13
- import { provide } from "@lit/context";
14
- import { LitElement } from "lit";
15
- import { state } 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/test-base.ts
23
- var TestBase = class extends LitElement {
24
- constructor() {
25
- super();
26
- this._testContext = { items: [], testOutcomeVariables: [] };
27
- this.testElement = { el: null };
28
- /**
29
- * Updates the variables of an assessment item in the test context.
30
- * - Matches the assessment item with the corresponding test context item.
31
- * - If the item is not found, logs a warning.
32
- * - Updates variables in the test context if exactly one variable exists.
33
- * - Otherwise, syncs the assessment item's variables with the test context.
34
- *
35
- * @param assessmentItem - The assessment item to update.
36
- */
37
- this._updateItemInTestContext = (assessmentItem) => {
38
- const { identifier, variables } = assessmentItem;
39
- const itemContext = this._testContext.items.find((i) => i?.identifier === identifier);
40
- if (!itemContext) {
41
- console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);
42
- return;
43
- }
44
- if (itemContext.variables?.length === 1) {
45
- this._updateItemVariablesInTestContext(identifier, variables);
46
- } else {
47
- assessmentItem.variables = [...itemContext.variables || []];
48
- }
49
- };
50
- this.addEventListener("qti-assessment-test-connected", (e) => {
51
- const qtiAssessmentTest = e.detail;
52
- const items = Array.from(qtiAssessmentTest.querySelectorAll("qti-assessment-item-ref")).map(
53
- (itemRef) => ({
54
- href: itemRef.href,
55
- identifier: itemRef.identifier,
56
- category: itemRef.category,
57
- variables: [{ identifier: "completionStatus", value: "not_attempted", type: "outcome" }]
58
- })
59
- );
60
- this.testElement = { el: qtiAssessmentTest };
61
- this._testContext = { ...this._testContext, items };
62
- });
63
- this.addEventListener("qti-assessment-item-connected", (e) => {
64
- this._updateItemInTestContext(e.detail);
65
- });
66
- this.addEventListener("qti-outcome-changed", (e) => {
67
- const assessmentitem = e.composedPath()[0];
68
- this._updateItemVariablesInTestContext(assessmentitem.identifier, assessmentitem.variables);
69
- });
70
- }
71
- get context() {
72
- return this._testContext;
73
- }
74
- // /* restores the context by updating existing items and adding new items from the "contextToRestore" parameter into the "this._context.items" array. */
75
- set context(testContext2) {
76
- if (testContext2 === null || testContext2 === void 0) return;
77
- this._testContext = { ...testContext2 };
78
- testContext2.items?.forEach((itemContext) => {
79
- const existingItemContext = this._testContext.items.find((i) => i.identifier === itemContext.identifier);
80
- if (existingItemContext) {
81
- existingItemContext.variables = itemContext.variables;
82
- } else {
83
- this._testContext.items.push(itemContext);
84
- }
85
- });
86
- }
87
- _updateItemVariablesInTestContext(identifier, variables) {
88
- this._testContext = {
89
- ...this._testContext,
90
- // Spread existing test context properties
91
- items: this._testContext.items.map((itemContext) => {
92
- if (itemContext.identifier !== identifier) {
93
- return itemContext;
94
- }
95
- return {
96
- ...itemContext,
97
- // Keep other properties of the item context
98
- variables: variables.map((variable) => {
99
- const matchingVariable = itemContext.variables.find((v) => v.identifier === variable.identifier);
100
- return matchingVariable ? { ...matchingVariable, ...variable } : variable;
101
- })
102
- };
103
- })
104
- };
105
- }
106
- // private _addItemToTestContext(
107
- // e: CustomEvent<{ href: string; identifier: string; category: string }> & { target: QtiAssessmentItemRef }
108
- // ): void {
109
- // const { href, identifier, category } = e.detail;
110
- // // Update test context items, adding a new item if the identifier is not already in the list
111
- // if (!this._testContext.items.some(item => item.identifier === identifier)) {
112
- // this._testContext.items.push({
113
- // href,
114
- // identifier,
115
- // category,
116
- // variables: [{ identifier: 'completionStatus', value: 'not_attempted', type: 'outcome' }]
117
- // // category: e.target.category
118
- // });
119
- // }
120
- // }
121
- connectedCallback() {
122
- super.connectedCallback();
123
- this.setAttribute("qti-test", "");
124
- }
125
- };
126
- __decorateClass([
127
- state(),
128
- provide({ context: testContext })
129
- ], TestBase.prototype, "_testContext", 2);
130
- __decorateClass([
131
- state(),
132
- provide({ context: testElement })
133
- ], TestBase.prototype, "testElement", 2);
134
- export {
135
- TestBase
136
- };
137
- //# sourceMappingURL=test-base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/test-base.ts","../../src/lib/qti-test/context/test.context.ts"],"sourcesContent":["import { provide } from '@lit/context';\nimport { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { TestContext, testContext, TestElement, testElement } from './context';\nimport { QtiAssessmentTest } from './qti-assessment-test';\nimport { ItemContext, QtiAssessmentItem, VariableValue } from '../qti-components';\n\nexport abstract class TestBase extends LitElement {\n @state()\n @provide({ context: testContext })\n protected _testContext: Readonly<TestContext> = { items: [], testOutcomeVariables: [] };\n\n @state()\n @provide({ context: testElement })\n protected testElement: TestElement = { el: null };\n\n constructor() {\n super();\n\n this.addEventListener('qti-assessment-test-connected', (e: CustomEvent<QtiAssessmentTest>) => {\n const qtiAssessmentTest = e.detail;\n\n const items = Array.from(qtiAssessmentTest.querySelectorAll('qti-assessment-item-ref')).map(\n (itemRef): ItemContext & { category: string } => ({\n href: itemRef.href,\n identifier: itemRef.identifier,\n category: itemRef.category,\n variables: [{ identifier: 'completionStatus', value: 'not_attempted', type: 'outcome' }]\n })\n );\n this.testElement = { el: qtiAssessmentTest };\n this._testContext = { ...this._testContext, items };\n });\n this.addEventListener('qti-assessment-item-connected', (e: CustomEvent<QtiAssessmentItem>) => {\n this._updateItemInTestContext(e.detail);\n });\n this.addEventListener('qti-outcome-changed', e => {\n const assessmentitem = e.composedPath()[0] as QtiAssessmentItem;\n this._updateItemVariablesInTestContext(assessmentitem.identifier, assessmentitem.variables);\n });\n\n // this.addEventListener(\n // 'qti-assessment-item-ref-connected',\n // (e: CustomEvent<{ href: string; identifier: string; category: string }> & { target: QtiAssessmentItemRef }) => {\n // this._addItemToTestContext(e);\n // }\n // );\n }\n\n get context(): TestContext {\n return this._testContext;\n }\n\n // /* restores the context by updating existing items and adding new items from the \"contextToRestore\" parameter into the \"this._context.items\" array. */\n set context(testContext: TestContext) {\n if (testContext === null || testContext === undefined) return;\n this._testContext = { ...testContext }; // Clone the context to avoid modifying the original object\n // // append the items that are not yet in the context and replace the ones that are\n testContext.items?.forEach(itemContext => {\n const existingItemContext = this._testContext.items.find(i => i.identifier === itemContext.identifier);\n if (existingItemContext) {\n existingItemContext.variables = itemContext.variables;\n } else {\n this._testContext.items.push(itemContext);\n }\n });\n }\n\n private _updateItemVariablesInTestContext(\n identifier: string,\n variables: VariableValue<string | string[] | null>[]\n ): void {\n // Update the test context with modified variables for the specified item\n this._testContext = {\n ...this._testContext, // Spread existing test context properties\n items: this._testContext.items.map(itemContext => {\n // If the item identifier doesn't match, keep it unchanged\n if (itemContext.identifier !== identifier) {\n return itemContext;\n }\n\n // Update the matching item with new variables\n return {\n ...itemContext, // Keep other properties of the item context\n variables: variables.map(variable => {\n // Find a matching variable in the current item context\n const matchingVariable = itemContext.variables.find(v => v.identifier === variable.identifier);\n\n // Merge matching variable with the new one, or use the new variable if no match\n return matchingVariable ? { ...matchingVariable, ...variable } : variable;\n })\n };\n })\n };\n }\n\n /**\n * Updates the variables of an assessment item in the test context.\n * - Matches the assessment item with the corresponding test context item.\n * - If the item is not found, logs a warning.\n * - Updates variables in the test context if exactly one variable exists.\n * - Otherwise, syncs the assessment item's variables with the test context.\n *\n * @param assessmentItem - The assessment item to update.\n */\n private _updateItemInTestContext = (assessmentItem: QtiAssessmentItem): void => {\n const { identifier, variables } = assessmentItem;\n\n // console.log(this._testContext);\n\n // Find the corresponding item in the test context by identifier\n const itemContext = this._testContext.items.find(i => i?.identifier === identifier);\n\n if (!itemContext) {\n console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);\n return;\n }\n\n // Update variables in the test context or sync them to the assessment item\n if (itemContext.variables?.length === 1) {\n // The loaded qti-assessment-item itself has variables which are not in test context yet.\n this._updateItemVariablesInTestContext(identifier, variables);\n } else {\n // Sync the assessment item's variables with the test context\n assessmentItem.variables = [...(itemContext.variables || [])];\n }\n };\n\n // private _addItemToTestContext(\n // e: CustomEvent<{ href: string; identifier: string; category: string }> & { target: QtiAssessmentItemRef }\n // ): void {\n // const { href, identifier, category } = e.detail;\n\n // // Update test context items, adding a new item if the identifier is not already in the list\n // if (!this._testContext.items.some(item => item.identifier === identifier)) {\n // this._testContext.items.push({\n // href,\n // identifier,\n // category,\n // variables: [{ identifier: 'completionStatus', value: 'not_attempted', type: 'outcome' }]\n // // category: e.target.category\n // });\n // }\n // }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('qti-test', '');\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":"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","names":["testContext"]}
@@ -1,316 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/lib/qti-transformers/index.ts
20
- var qti_transformers_exports = {};
21
- __export(qti_transformers_exports, {
22
- qtiTransformItem: () => qtiTransformItem,
23
- qtiTransformManifest: () => qtiTransformManifest,
24
- qtiTransformTest: () => qtiTransformTest
25
- });
26
- module.exports = __toCommonJS(qti_transformers_exports);
27
-
28
- // src/lib/qti-transformers/qti-transformers.ts
29
- var xml = String.raw;
30
- var xmlToHTML = xml`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
31
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
32
- <xsl:template match="@*|node()">
33
- <xsl:copy>
34
- <xsl:apply-templates select="@*|node()"/>
35
- </xsl:copy>
36
- </xsl:template>
37
-
38
- <!-- remove existing namespaces -->
39
- <xsl:template match="*">
40
- <!-- remove element prefix -->
41
- <xsl:element name="{local-name()}">
42
- <!-- process attributes -->
43
- <xsl:for-each select="@*">
44
- <!-- remove attribute prefix -->
45
- <xsl:attribute name="{local-name()}">
46
- <xsl:value-of select="."/>
47
- </xsl:attribute>
48
- </xsl:for-each>
49
- <xsl:apply-templates/>
50
- </xsl:element>
51
- </xsl:template>
52
- </xsl:stylesheet>`;
53
- function extendElementName(xmlFragment, tagName, extension) {
54
- xmlFragment.querySelectorAll(tagName).forEach((element) => {
55
- const newTagName = `${tagName}-${extension}`;
56
- const newElement = createElementWithNewTagName(element, newTagName);
57
- element.replaceWith(newElement);
58
- });
59
- }
60
- function extendElementsWithClass(xmlFragment, classNamePattern) {
61
- xmlFragment.querySelectorAll("*").forEach((element) => {
62
- const classList = element.classList;
63
- if (classList) {
64
- classList.forEach((className) => {
65
- if (className.startsWith(`${classNamePattern}:`)) {
66
- const suffix = className.slice(`${classNamePattern}:`.length);
67
- const newTagName = `${element.nodeName}-${suffix}`;
68
- const newElement = createElementWithNewTagName(element, newTagName);
69
- element.replaceWith(newElement);
70
- }
71
- });
72
- }
73
- });
74
- }
75
- function createElementWithNewTagName(element, newTagName) {
76
- const newElement = document.createElement(newTagName);
77
- for (const attr of element.attributes) {
78
- newElement.setAttribute(attr.name, attr.value);
79
- }
80
- while (element.firstChild) {
81
- newElement.appendChild(element.firstChild);
82
- }
83
- return newElement;
84
- }
85
- function itemsFromTest(xmlFragment) {
86
- const items = [];
87
- xmlFragment.querySelectorAll("qti-assessment-item-ref").forEach((el) => {
88
- const identifier = el.getAttribute("identifier");
89
- const href = el.getAttribute("href");
90
- const category = el.getAttribute("category");
91
- items.push({ identifier, href, category });
92
- });
93
- return items;
94
- }
95
- var currentRequest = null;
96
- function loadXML(url, cancelPreviousRequest = false) {
97
- if (cancelPreviousRequest && currentRequest !== null) {
98
- currentRequest.abort();
99
- }
100
- return new Promise((resolve, reject) => {
101
- const xhr = new XMLHttpRequest();
102
- currentRequest = xhr;
103
- xhr.open("GET", url, true);
104
- xhr.responseType = "document";
105
- xhr.onload = () => {
106
- if (xhr.status >= 200 && xhr.status < 300) {
107
- resolve(xhr.responseXML);
108
- } else {
109
- reject(xhr.statusText);
110
- }
111
- };
112
- xhr.onerror = () => {
113
- reject(xhr.statusText);
114
- };
115
- xhr.send();
116
- });
117
- }
118
- function parseXML(xmlDocument) {
119
- const parser = new DOMParser();
120
- const xmlFragment = parser.parseFromString(xmlDocument, "text/xml");
121
- return xmlFragment;
122
- }
123
- function toHTML(xmlFragment) {
124
- const processor = new XSLTProcessor();
125
- const xsltDocument = new DOMParser().parseFromString(xmlToHTML, "text/xml");
126
- processor.importStylesheet(xsltDocument);
127
- const itemHTMLFragment = processor.transformToFragment(xmlFragment, document);
128
- return itemHTMLFragment;
129
- }
130
- function setLocation(xmlFragment, location) {
131
- if (!location.endsWith("/")) {
132
- location += "/";
133
- }
134
- xmlFragment.querySelectorAll("[src],[href],[primary-path]").forEach((elWithSrc) => {
135
- let attr = "";
136
- if (elWithSrc.getAttribute("src")) {
137
- attr = "src";
138
- }
139
- if (elWithSrc.getAttribute("href")) {
140
- attr = "href";
141
- }
142
- if (elWithSrc.getAttribute("primary-path")) {
143
- attr = "primary-path";
144
- }
145
- const attrValue = elWithSrc.getAttribute(attr)?.trim();
146
- if (!attrValue.startsWith("data:") && !attrValue.startsWith("http")) {
147
- const newSrcValue = location + encodeURI(attrValue);
148
- elWithSrc.setAttribute(attr, newSrcValue);
149
- }
150
- });
151
- }
152
- function convertCDATAtoComment(xmlFragment) {
153
- const cdataElements = xmlFragment.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value');
154
- cdataElements.forEach((element) => {
155
- const commentText = document.createComment(element.textContent);
156
- element.replaceChild(commentText, element.firstChild);
157
- });
158
- }
159
- function stripStyleSheets(xmlFragment) {
160
- xmlFragment.querySelectorAll("qti-stylesheet").forEach((stylesheet) => stylesheet.remove());
161
- }
162
-
163
- // src/lib/qti-transformers/qti-transform-item.ts
164
- var qtiTransformItem = () => {
165
- let xmlFragment;
166
- const api = {
167
- async load(uri, cancelPreviousRequest = false) {
168
- return new Promise((resolve) => {
169
- loadXML(uri, cancelPreviousRequest).then((xml2) => {
170
- xmlFragment = xml2;
171
- api.path(uri.substring(0, uri.lastIndexOf("/")));
172
- return resolve(api);
173
- });
174
- });
175
- },
176
- parse(xmlString) {
177
- xmlFragment = parseXML(xmlString);
178
- return api;
179
- },
180
- path: (location) => {
181
- setLocation(xmlFragment, location);
182
- return api;
183
- },
184
- fn(fn) {
185
- fn(xmlFragment);
186
- return api;
187
- },
188
- pciHooks(uri) {
189
- const attributes = ["hook", "module"];
190
- const documentPath = uri.substring(0, uri.lastIndexOf("/"));
191
- for (const attribute of attributes) {
192
- const srcAttributes = xmlFragment.querySelectorAll("[" + attribute + "]");
193
- srcAttributes.forEach((node) => {
194
- const srcValue = node.getAttribute(attribute);
195
- if (!srcValue.startsWith("data:") && !srcValue.startsWith("http")) {
196
- node.setAttribute("base-url", uri);
197
- node.setAttribute(
198
- "module",
199
- documentPath + "/" + encodeURI(srcValue + (srcValue.endsWith(".js") ? "" : ".js"))
200
- );
201
- }
202
- });
203
- }
204
- return api;
205
- },
206
- extendElementName: (tagName, extension) => {
207
- extendElementName(xmlFragment, tagName, extension);
208
- return api;
209
- },
210
- extendElementsWithClass: (param = "extend") => {
211
- extendElementsWithClass(xmlFragment, param);
212
- return api;
213
- },
214
- customInteraction(baseRef, baseItem) {
215
- const qtiCustomInteraction = xmlFragment.querySelector("qti-custom-interaction");
216
- const qtiCustomInteractionObject = qtiCustomInteraction.querySelector("object");
217
- qtiCustomInteraction.setAttribute("data-base-ref", baseRef);
218
- qtiCustomInteraction.setAttribute("data-base-item", baseRef + baseItem);
219
- qtiCustomInteraction.setAttribute("data", qtiCustomInteractionObject.getAttribute("data"));
220
- qtiCustomInteraction.setAttribute("width", qtiCustomInteractionObject.getAttribute("width"));
221
- qtiCustomInteraction.setAttribute("height", qtiCustomInteractionObject.getAttribute("height"));
222
- qtiCustomInteraction.removeChild(qtiCustomInteractionObject);
223
- return api;
224
- },
225
- convertCDATAtoComment() {
226
- convertCDATAtoComment(xmlFragment);
227
- return api;
228
- },
229
- stripStyleSheets() {
230
- stripStyleSheets(xmlFragment);
231
- return api;
232
- },
233
- html() {
234
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
235
- },
236
- xml() {
237
- return new XMLSerializer().serializeToString(xmlFragment);
238
- },
239
- htmlDoc() {
240
- return toHTML(xmlFragment);
241
- },
242
- xmlDoc() {
243
- return xmlFragment;
244
- }
245
- };
246
- return api;
247
- };
248
-
249
- // src/lib/qti-transformers/qti-transform-manifest.ts
250
- var qtiTransformManifest = () => {
251
- let xmlFragment;
252
- const api = {
253
- async load(uri) {
254
- return new Promise((resolve) => {
255
- loadXML(uri).then((xml2) => {
256
- xmlFragment = xml2;
257
- return resolve(api);
258
- });
259
- });
260
- },
261
- parse(xmlString) {
262
- xmlFragment = parseXML(xmlString);
263
- },
264
- assessmentTest() {
265
- const el = xmlFragment.querySelector('resource[type="imsqti_test_xmlv3p0"]');
266
- return { href: el.getAttribute("href"), identifier: el.getAttribute("identifier") };
267
- }
268
- };
269
- return api;
270
- };
271
-
272
- // src/lib/qti-transformers/qti-transform-test.ts
273
- var qtiTransformTest = () => {
274
- let xmlFragment;
275
- const api = {
276
- async load(uri) {
277
- return new Promise((resolve, _) => {
278
- loadXML(uri).then((xml2) => {
279
- xmlFragment = xml2;
280
- return resolve(api);
281
- });
282
- });
283
- },
284
- parse(xmlString) {
285
- xmlFragment = parseXML(xmlString);
286
- return api;
287
- },
288
- fn(fn) {
289
- fn(xmlFragment);
290
- return api;
291
- },
292
- items() {
293
- return itemsFromTest(xmlFragment);
294
- },
295
- html() {
296
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
297
- },
298
- xml() {
299
- return new XMLSerializer().serializeToString(xmlFragment);
300
- },
301
- htmlDoc() {
302
- return toHTML(xmlFragment);
303
- },
304
- xmlDoc() {
305
- return xmlFragment;
306
- }
307
- };
308
- return api;
309
- };
310
- // Annotate the CommonJS export names for ESM import in node:
311
- 0 && (module.exports = {
312
- qtiTransformItem,
313
- qtiTransformManifest,
314
- qtiTransformTest
315
- });
316
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-transformers/index.ts","../../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":["export * from './qti-transform-item';\nexport * from './qti-transform-manifest';\nexport * from './qti-transform-test';\n\n","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, toHTML } from './qti-transformers';\n\nexport type transformTestApi = {\n load: (uri: string) => Promise<transformTestApi>;\n parse: (xmlString: 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 return resolve(api);\n });\n });\n },\n parse(xmlString: string) {\n xmlFragment = parseXML(xmlString);\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":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAM,MAAM,OAAO;AAenB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBX,SAAS,kBAAkB,aAA0B,SAAiB,WAAmB;AAC9F,cAAY,iBAAiB,OAAO,EAAE,QAAQ,aAAW;AACvD,UAAM,aAAa,GAAG,OAAO,IAAI,SAAS;AAC1C,UAAM,aAAa,4BAA4B,SAAS,UAAU;AAClE,YAAQ,YAAY,UAAU;AAAA,EAChC,CAAC;AACH;AAGO,SAAS,wBAAwB,aAA0B,kBAA0B;AAC1F,cAAY,iBAAiB,GAAG,EAAE,QAAQ,aAAW;AACnD,UAAM,YAAY,QAAQ;AAC1B,QAAI,WAAW;AACb,gBAAU,QAAQ,eAAa;AAC7B,YAAI,UAAU,WAAW,GAAG,gBAAgB,GAAG,GAAG;AAChD,gBAAM,SAAS,UAAU,MAAM,GAAG,gBAAgB,IAAI,MAAM;AAC5D,gBAAM,aAAa,GAAG,QAAQ,QAAQ,IAAI,MAAM;AAChD,gBAAM,aAAa,4BAA4B,SAAS,UAAU;AAClE,kBAAQ,YAAY,UAAU;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAGA,SAAS,4BAA4B,SAAS,YAAY;AACxD,QAAM,aAAa,SAAS,cAAc,UAAU;AAEpD,aAAW,QAAQ,QAAQ,YAAY;AACrC,eAAW,aAAa,KAAK,MAAM,KAAK,KAAK;AAAA,EAC/C;AAEA,SAAO,QAAQ,YAAY;AACzB,eAAW,YAAY,QAAQ,UAAU;AAAA,EAC3C;AACA,SAAO;AACT;AAEO,SAAS,cAAc,aAA+B;AAC3D,QAAM,QAAkE,CAAC;AACzE,cAAY,iBAAiB,yBAAyB,EAAE,QAAQ,QAAM;AACpE,UAAM,aAAa,GAAG,aAAa,YAAY;AAC/C,UAAM,OAAO,GAAG,aAAa,MAAM;AACnC,UAAM,WAAW,GAAG,aAAa,UAAU;AAC3C,UAAM,KAAK,EAAE,YAAY,MAAM,SAAS,CAAC;AAAA,EAC3C,CAAC;AACD,SAAO;AACT;AAEA,IAAI,iBAAwC;AAErC,SAAS,QAAQ,KAAK,wBAAwB,OAAO;AAC1D,MAAI,yBAAyB,mBAAmB,MAAM;AACpD,mBAAe,MAAM;AAAA,EACvB;AAEA,SAAO,IAAI,QAA4B,CAAC,SAAS,WAAW;AAC1D,UAAM,MAAM,IAAI,eAAe;AAC/B,qBAAiB;AAEjB,QAAI,KAAK,OAAO,KAAK,IAAI;AACzB,QAAI,eAAe;AAEnB,QAAI,SAAS,MAAM;AACjB,UAAI,IAAI,UAAU,OAAO,IAAI,SAAS,KAAK;AACzC,gBAAQ,IAAI,WAAW;AAAA,MACzB,OAAO;AACL,eAAO,IAAI,UAAU;AAAA,MACvB;AAAA,IACF;AAEA,QAAI,UAAU,MAAM;AAClB,aAAO,IAAI,UAAU;AAAA,IACvB;AAEA,QAAI,KAAK;AAAA,EACX,CAAC;AACH;AAEO,SAAS,SAAS,aAAqB;AAC5C,QAAM,SAAS,IAAI,UAAU;AAC7B,QAAM,cAAc,OAAO,gBAAgB,aAAa,UAAU;AAClE,SAAO;AACT;AAEO,SAAS,OAAO,aAAyC;AAC9D,QAAM,YAAY,IAAI,cAAc;AACpC,QAAM,eAAe,IAAI,UAAU,EAAE,gBAAgB,WAAW,UAAU;AAC1E,YAAU,iBAAiB,YAAY;AACvC,QAAM,mBAAmB,UAAU,oBAAoB,aAAa,QAAQ;AAC5E,SAAO;AACT;AAEO,SAAS,YAAY,aAA+B,UAAkB;AAC3E,MAAI,CAAC,SAAS,SAAS,GAAG,GAAG;AAC3B,gBAAY;AAAA,EACd;AAEA,cAAY,iBAAiB,6BAA6B,EAAE,QAAQ,eAAa;AAC/E,QAAI,OAA6C;AAEjD,QAAI,UAAU,aAAa,KAAK,GAAG;AACjC,aAAO;AAAA,IACT;AACA,QAAI,UAAU,aAAa,MAAM,GAAG;AAClC,aAAO;AAAA,IACT;AACA,QAAI,UAAU,aAAa,cAAc,GAAG;AAC1C,aAAO;AAAA,IACT;AACA,UAAM,YAAY,UAAU,aAAa,IAAI,GAAG,KAAK;AAErD,QAAI,CAAC,UAAU,WAAW,OAAO,KAAK,CAAC,UAAU,WAAW,MAAM,GAAG;AACnE,YAAM,cAAc,WAAW,UAAU,SAAS;AAClD,gBAAU,aAAa,MAAM,WAAW;AAAA,IAC1C;AAAA,EACF,CAAC;AACH;AAEO,SAAS,sBAAsB,aAA+B;AACnE,QAAM,gBAAgB,YAAY,iBAAiB,sDAAsD;AACzG,gBAAc,QAAQ,aAAW;AAC/B,UAAM,cAAc,SAAS,cAAc,QAAQ,WAAW;AAC9D,YAAQ,aAAa,aAAa,QAAQ,UAAU;AAAA,EACtD,CAAC;AACH;AAEO,SAAS,iBAAiB,aAA+B;AAE9D,cAAY,iBAAiB,gBAAgB,EAAE,QAAQ,gBAAc,WAAW,OAAO,CAAC;AAC1F;;;AC/HO,IAAM,mBAAmB,MAAM;AACpC,MAAI;AAEJ,QAAM,MAAwB;AAAA,IAC5B,MAAM,KAAK,KAAa,wBAAwB,OAA4B;AAC1E,aAAO,IAAI,QAAoB,aAAW;AACxC,gBAAQ,KAAK,qBAAqB,EAAE,KAAK,CAAAA,SAAO;AAC9C,wBAAcA;AAGd,cAAI,KAAK,IAAI,UAAU,GAAG,IAAI,YAAY,GAAG,CAAC,CAAC;AAC/C,iBAAO,QAAQ,GAAG;AAAA,QACpB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,MAAM,WAA+B;AACnC,oBAAc,SAAS,SAAS;AAChC,aAAO;AAAA,IACT;AAAA,IACA,MAAM,CAAC,aAAiC;AACtC,kBAAY,aAAa,QAAQ;AACjC,aAAO;AAAA,IACT;AAAA,IACA,GAAG,IAAoD;AACrD,SAAG,WAAW;AACd,aAAO;AAAA,IACT;AAAA,IACA,SAAS,KAAyB;AAChC,YAAM,aAAa,CAAC,QAAQ,QAAQ;AACpC,YAAM,eAAe,IAAI,UAAU,GAAG,IAAI,YAAY,GAAG,CAAC;AAC1D,iBAAW,aAAa,YAAY;AAClC,cAAM,gBAAgB,YAAY,iBAAiB,MAAM,YAAY,GAAG;AACxE,sBAAc,QAAQ,UAAQ;AAC5B,gBAAM,WAAW,KAAK,aAAa,SAAS;AAC5C,cAAI,CAAC,SAAS,WAAW,OAAO,KAAK,CAAC,SAAS,WAAW,MAAM,GAAG;AAGjE,iBAAK,aAAa,YAAY,GAAG;AACjC,iBAAK;AAAA,cACH;AAAA,cACA,eAAe,MAAM,UAAU,YAAY,SAAS,SAAS,KAAK,IAAI,KAAK,MAAM;AAAA,YACnF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB,CAAC,SAAiB,cAAkC;AACrE,wBAAkB,aAAa,SAAS,SAAS;AACjD,aAAO;AAAA,IACT;AAAA,IACA,yBAAyB,CAAC,QAAgB,aAAyB;AACjE,8BAAwB,aAAa,KAAK;AAC1C,aAAO;AAAA,IACT;AAAA,IACA,kBAAkB,SAAiB,UAA8B;AAC/D,YAAM,uBAAuB,YAAY,cAAc,wBAAwB;AAC/E,YAAM,6BAA6B,qBAAqB,cAAc,QAAQ;AAE9E,2BAAqB,aAAa,iBAAiB,OAAO;AAC1D,2BAAqB,aAAa,kBAAkB,UAAU,QAAQ;AACtE,2BAAqB,aAAa,QAAQ,2BAA2B,aAAa,MAAM,CAAC;AACzF,2BAAqB,aAAa,SAAS,2BAA2B,aAAa,OAAO,CAAC;AAC3F,2BAAqB,aAAa,UAAU,2BAA2B,aAAa,QAAQ,CAAC;AAE7F,2BAAqB,YAAY,0BAA0B;AAC3D,aAAO;AAAA,IACT;AAAA,IACA,wBAAoC;AAClC,4BAAsB,WAAW;AACjC,aAAO;AAAA,IACT;AAAA,IACA,mBAA+B;AAC7B,uBAAiB,WAAW;AAC5B,aAAO;AAAA,IACT;AAAA,IACA,OAAO;AACL,aAAO,IAAI,cAAc,EAAE,kBAAkB,OAAO,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,MAAc;AACZ,aAAO,IAAI,cAAc,EAAE,kBAAkB,WAAW;AAAA,IAC1D;AAAA,IACA,UAAU;AACR,aAAO,OAAO,WAAW;AAAA,IAC3B;AAAA,IACA,SAAsB;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;;;ACpIO,IAAM,uBAAuB,MAG/B;AACH,MAAI;AAEJ,QAAM,MAAM;AAAA,IACV,MAAM,KAAK,KAAK;AACd,aAAO,IAAI,QAAoB,aAAW;AACxC,gBAAQ,GAAG,EAAE,KAAK,CAAAC,SAAO;AACvB,wBAAcA;AACd,iBAAO,QAAQ,GAAG;AAAA,QACpB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,MAAM,WAAmB;AACvB,oBAAc,SAAS,SAAS;AAAA,IAClC;AAAA,IACA,iBAAiB;AACf,YAAM,KAAK,YAAY,cAAc,sCAAsC;AAC3E,aAAO,EAAE,MAAM,GAAG,aAAa,MAAM,GAAG,YAAY,GAAG,aAAa,YAAY,EAAE;AAAA,IACpF;AAAA,EACF;AACA,SAAO;AACT;;;ACFO,IAAM,mBAAmB,MAAwB;AACtD,MAAI;AAEJ,QAAM,MAAwB;AAAA,IAC5B,MAAM,KAAK,KAAK;AACd,aAAO,IAAI,QAA0B,CAAC,SAAS,MAAM;AACnD,gBAAQ,GAAG,EAAE,KAAK,CAAAC,SAAO;AACvB,wBAAcA;AACd,iBAAO,QAAQ,GAAG;AAAA,QACpB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,MAAM,WAAmB;AACvB,oBAAc,SAAS,SAAS;AAChC,aAAO;AAAA,IACT;AAAA,IACA,GAAG,IAAwC;AACzC,SAAG,WAAW;AACd,aAAO;AAAA,IACT;AAAA,IACA,QAAQ;AACN,aAAO,cAAc,WAAW;AAAA,IAClC;AAAA,IACA,OAAO;AACL,aAAO,IAAI,cAAc,EAAE,kBAAkB,OAAO,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,MAAc;AACZ,aAAO,IAAI,cAAc,EAAE,kBAAkB,WAAW;AAAA,IAC1D;AAAA,IACA,UAAU;AACR,aAAO,OAAO,WAAW;AAAA,IAC3B;AAAA,IACA,SAAsB;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":["xml","xml","xml"]}
@@ -1,75 +0,0 @@
1
- /**
2
- * Browser based QTI-XML to HTML transformer.
3
- * Returns an object with methods to load, parse, transform and serialize QTI XML items.
4
- * @returns An object with methods to load, parse, transform and serialize QTI XML items.
5
- * @example
6
- * const qtiTransformer = qtiTransformItem();
7
- * await qtiTransformer.load('path/to/xml/file.xml');
8
- * qtiTransformer.path('/assessmentItem/itemBody');
9
- * const html = qtiTransformer.html();
10
- * const xml = qtiTransformer.xml();
11
- * const htmldoc = qtiTransformer.htmldoc();
12
- * const xmldoc = qtiTransformer.xmldoc();
13
- *
14
- * qtiTransformItem().parse(storyXML).html()
15
- */
16
- type transformItemApi = {
17
- load: (uri: string, cancelPreviousRequest?: boolean) => Promise<transformItemApi>;
18
- parse: (xmlString: string) => transformItemApi;
19
- path: (location: string) => transformItemApi;
20
- fn: (fn: (xmlFragment: XMLDocument) => void) => transformItemApi;
21
- pciHooks: (uri: string) => transformItemApi;
22
- extendElementName: (elementName: string, extend: string) => transformItemApi;
23
- extendElementsWithClass: (param?: string) => transformItemApi;
24
- customInteraction: (baseRef: string, baseItem: string) => transformItemApi;
25
- convertCDATAtoComment: () => transformItemApi;
26
- stripStyleSheets: () => transformItemApi;
27
- html: () => string;
28
- xml: () => string;
29
- htmlDoc: () => DocumentFragment;
30
- xmlDoc: () => XMLDocument;
31
- };
32
- declare const qtiTransformItem: () => transformItemApi;
33
-
34
- declare const qtiTransformManifest: () => {
35
- load: (uri: string) => Promise<{
36
- load(uri: any): Promise</*elided*/ any>;
37
- parse(xmlString: string): void;
38
- assessmentTest(): {
39
- href: string;
40
- identifier: string;
41
- };
42
- }>;
43
- assessmentTest: () => {
44
- href: string;
45
- identifier: string;
46
- };
47
- };
48
-
49
- /**
50
- * Returns an object with methods to load, parse and transform QTI tests.
51
- * @returns An object with methods to load, parse and transform QTI tests.
52
- * @example
53
- * const qtiTransformer = qtiTransformTest();
54
- * await qtiTransformer.load('https://example.com/test.xml');
55
- * const items = qtiTransformer.items();
56
- * const html = qtiTransformer.html();
57
- * const xml = qtiTransformer.xml();
58
- */
59
- type transformTestApi = {
60
- load: (uri: string) => Promise<transformTestApi>;
61
- parse: (xmlString: string) => transformTestApi;
62
- fn: (fn: (xmlFragment: XMLDocument) => void) => transformTestApi;
63
- items: () => {
64
- identifier: string;
65
- href: string;
66
- category: string;
67
- }[];
68
- html: () => string;
69
- xml: () => string;
70
- htmlDoc: () => DocumentFragment;
71
- xmlDoc: () => XMLDocument;
72
- };
73
- declare const qtiTransformTest: () => transformTestApi;
74
-
75
- export { qtiTransformItem, qtiTransformManifest, qtiTransformTest, type transformItemApi, type transformTestApi };