@citolab/qti-components 7.0.8 → 7.0.9-beta.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 (545) 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/{dist/chunks/chunk-NZQKGIJP.js → cdn/chunks/chunk-DKMHSSEK.js} +13 -24
  7. package/cdn/chunks/chunk-EG3QNAM6.js +939 -0
  8. package/cdn/chunks/chunk-FB3WTNRH.js +8 -0
  9. package/cdn/chunks/chunk-GCKESRQG.js +1 -0
  10. package/cdn/chunks/{chunk-4ILXLVT5.js → chunk-I5J4YQIW.js} +13 -34
  11. package/cdn/chunks/chunk-IKDNYCM7.js +1 -0
  12. package/cdn/chunks/chunk-KDO3T66B.js +1 -0
  13. package/cdn/chunks/chunk-KQPTKMFJ.js +1 -0
  14. package/cdn/chunks/chunk-M5PPZ5M3.js +59 -0
  15. package/cdn/chunks/chunk-O5MMIBRR.js +10 -0
  16. package/cdn/chunks/chunk-OEXGDZO2.js +8 -0
  17. package/cdn/chunks/{chunk-RXKI3AO4.js → chunk-R45JL2ZY.js} +1 -1
  18. package/cdn/chunks/chunk-W2VSEYLY.js +8 -0
  19. package/cdn/chunks/chunk-WYDU2FBY.js +8 -0
  20. package/cdn/chunks/chunk-X7T7HK65.js +8 -0
  21. package/cdn/chunks/{chunk-X2KBNXRO.js → chunk-YIYKK4RV.js} +1 -1
  22. package/cdn/exports/computed.context.js +1 -0
  23. package/cdn/exports/config.context.js +1 -0
  24. package/cdn/exports/qti-assessment-item.context.js +1 -1
  25. package/cdn/exports/qti-condition-expression.js +1 -1
  26. package/cdn/exports/qti-expression.js +1 -1
  27. package/cdn/exports/session.context.js +1 -0
  28. package/cdn/exports/test.context.js +1 -0
  29. package/cdn/index.global.js +1 -1
  30. package/cdn/index.js +1 -1
  31. package/cdn/qti-components/index.js +1 -1
  32. package/cdn/qti-item/core/index.js +1 -1
  33. package/cdn/qti-test/components/index.js +1 -1
  34. package/cdn/qti-test/components/test-container.js +1 -3549
  35. package/cdn/qti-test/components/test-end-attempt.js +1 -1
  36. package/cdn/qti-test/components/test-item-link.js +1 -1
  37. package/cdn/qti-test/components/test-navigation.js +1 -0
  38. package/cdn/qti-test/components/test-next.js +1 -1
  39. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
  40. package/cdn/qti-test/components/test-prev.js +1 -1
  41. package/cdn/qti-test/components/test-show-correct-response.js +1 -1
  42. package/cdn/qti-test/components/test-view.js +1 -1
  43. package/cdn/qti-test/core/index.js +1 -1
  44. package/dist/chunks/chunk-3A4IOMBQ.js +8 -0
  45. package/dist/chunks/chunk-3A4IOMBQ.js.map +1 -0
  46. package/dist/chunks/{chunk-E4TWZ2DL.js → chunk-5E4OEZCA.js} +495 -179
  47. package/dist/chunks/chunk-5E4OEZCA.js.map +1 -0
  48. package/dist/chunks/{chunk-J2SHENRN.js → chunk-BH5H7BSS.js} +107 -21
  49. package/dist/chunks/chunk-BH5H7BSS.js.map +1 -0
  50. package/dist/chunks/chunk-CBYNKDSF.js +1 -0
  51. package/dist/chunks/{chunk-WWN5AD6V.js → chunk-CHINL5UJ.js} +12 -7
  52. package/dist/chunks/chunk-CHINL5UJ.js.map +1 -0
  53. package/dist/chunks/{chunk-W4272Q5U.js → chunk-CWCYTL3F.js} +18 -8
  54. package/dist/chunks/chunk-CWCYTL3F.js.map +1 -0
  55. package/dist/chunks/{chunk-GQ5P3NWC.js → chunk-FZVLLSCM.js} +18 -8
  56. package/dist/chunks/chunk-FZVLLSCM.js.map +1 -0
  57. package/dist/chunks/chunk-GNCPECOC.js +45 -0
  58. package/dist/chunks/chunk-GNCPECOC.js.map +1 -0
  59. package/dist/chunks/{chunk-YOXF6JPS.js → chunk-GRYVMG5Q.js} +135 -193
  60. package/dist/chunks/chunk-GRYVMG5Q.js.map +1 -0
  61. package/dist/chunks/{chunk-BPHQLJWE.js → chunk-I7HVKMDI.js} +2 -2
  62. package/dist/chunks/chunk-I7HVKMDI.js.map +1 -0
  63. package/dist/chunks/chunk-J4MM4JXS.js +8 -0
  64. package/dist/chunks/chunk-J4MM4JXS.js.map +1 -0
  65. package/dist/chunks/{chunk-FV7HWK54.js → chunk-JUAS2TVR.js} +1 -1
  66. package/dist/chunks/chunk-JUAS2TVR.js.map +1 -0
  67. package/dist/chunks/chunk-K6EUKFNW.js +43 -0
  68. package/dist/chunks/chunk-K6EUKFNW.js.map +1 -0
  69. package/dist/chunks/chunk-LZ7UIV5O.js +91 -0
  70. package/dist/chunks/chunk-LZ7UIV5O.js.map +1 -0
  71. package/dist/chunks/{chunk-KOEILLVS.js → chunk-NJNQOQUU.js} +1 -1
  72. package/dist/chunks/chunk-NJNQOQUU.js.map +1 -0
  73. package/dist/chunks/chunk-ODLYMQOS.js +8 -0
  74. package/dist/chunks/chunk-ODLYMQOS.js.map +1 -0
  75. package/dist/chunks/{chunk-XSI6FXGD.js → chunk-OOQLWOYU.js} +2 -2
  76. package/dist/chunks/{chunk-NHA53UTY.js → chunk-PR6AZWRP.js} +3 -6
  77. package/dist/chunks/chunk-PR6AZWRP.js.map +1 -0
  78. package/dist/chunks/chunk-QAA6MWGE.js +170 -0
  79. package/dist/chunks/chunk-QAA6MWGE.js.map +1 -0
  80. package/dist/{chunk-2CHF3TMY.js → chunks/chunk-QGPXAPBK.js} +119 -20
  81. package/dist/chunks/chunk-QGPXAPBK.js.map +1 -0
  82. package/dist/chunks/chunk-QTH3WLGY.js +8 -0
  83. package/dist/chunks/chunk-QTH3WLGY.js.map +1 -0
  84. package/dist/chunks/{chunk-DLUJN2FW.js → chunk-W7ZXKJ5O.js} +1 -1
  85. package/dist/chunks/chunk-W7ZXKJ5O.js.map +1 -0
  86. package/dist/chunks/{chunk-OIRWOI3E.js → chunk-WRHEO7NG.js} +1 -1
  87. package/dist/chunks/chunk-WRHEO7NG.js.map +1 -0
  88. package/dist/chunks/chunk-WXART76T.js +95 -0
  89. package/dist/chunks/chunk-WXART76T.js.map +1 -0
  90. package/dist/exports/computed.context.d.ts +30 -0
  91. package/dist/exports/computed.context.js +8 -0
  92. package/dist/exports/config.context.d.ts +8 -0
  93. package/dist/exports/config.context.js +8 -0
  94. package/dist/exports/interaction.js +1 -1
  95. package/dist/exports/item.context.d.ts +3 -3
  96. package/dist/exports/item.context.js +1 -1
  97. package/dist/exports/qti-assessment-item.context.d.ts +1 -1
  98. package/dist/exports/qti-assessment-item.context.js +1 -1
  99. package/dist/exports/qti-condition-expression.d.ts +1 -1
  100. package/dist/exports/qti-condition-expression.js +3 -3
  101. package/dist/exports/qti-expression.d.ts +1 -1
  102. package/dist/exports/qti-expression.js +2 -2
  103. package/dist/exports/session.context.d.ts +12 -0
  104. package/dist/exports/session.context.js +8 -0
  105. package/dist/exports/test.context.d.ts +16 -0
  106. package/dist/exports/test.context.js +8 -0
  107. package/dist/exports/variables.d.ts +1 -1
  108. package/dist/index.d.ts +11 -6
  109. package/dist/index.js +62 -55
  110. package/dist/item.css +7 -16
  111. package/dist/qti-components/index.d.ts +44 -26
  112. package/dist/qti-components/index.js +11 -7
  113. package/dist/qti-components-jsx.d.ts +144 -86
  114. package/dist/qti-item/core/index.js +2 -3
  115. package/dist/qti-loader/index.d.ts +2 -2
  116. package/dist/qti-loader/index.js +1 -1
  117. package/dist/{qti-response-declaration-Di9CsqiJ.d.ts → qti-response-declaration-CESClJ3_.d.ts} +7 -3
  118. package/dist/qti-test/components/index.d.ts +11 -5
  119. package/dist/qti-test/components/index.js +28 -19
  120. package/dist/qti-test/components/test-container.d.ts +3 -1
  121. package/dist/qti-test/components/test-container.js +6 -3778
  122. package/dist/qti-test/components/test-container.js.map +1 -1
  123. package/dist/qti-test/components/test-end-attempt.d.ts +4 -11
  124. package/dist/qti-test/components/test-end-attempt.js +3 -5
  125. package/dist/qti-test/components/test-item-link.d.ts +2 -11
  126. package/dist/qti-test/components/test-item-link.js +1 -5
  127. package/dist/qti-test/components/test-navigation.d.ts +35 -0
  128. package/dist/qti-test/components/test-navigation.js +12 -0
  129. package/dist/qti-test/components/test-navigation.js.map +1 -0
  130. package/dist/qti-test/components/test-next.d.ts +12 -12
  131. package/dist/qti-test/components/test-next.js +4 -4
  132. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +8 -15
  133. package/dist/qti-test/components/test-paging-buttons-stamp.js +2 -5
  134. package/dist/qti-test/components/test-prev.d.ts +11 -12
  135. package/dist/qti-test/components/test-prev.js +4 -4
  136. package/dist/qti-test/components/test-show-correct-response.d.ts +4 -11
  137. package/dist/qti-test/components/test-show-correct-response.js +3 -5
  138. package/dist/qti-test/components/test-view.d.ts +3 -12
  139. package/dist/qti-test/components/test-view.js +2 -4
  140. package/dist/qti-test/core/index.d.ts +18 -48
  141. package/dist/qti-test/core/index.js +7 -12
  142. package/dist/{test.context-C2LBA3w4.d.ts → qti-test-part-BAM_WUTL.d.ts} +17 -33
  143. package/dist/{variables-cO3DzqJy.d.ts → variables-DNDfraER.d.ts} +14 -1
  144. package/dist/vscode.html-custom-data.json +49 -30
  145. package/package.json +20 -19
  146. package/cdn/chunk-4DFVJE2A.js +0 -48
  147. package/cdn/chunk-4I75QSIL.js +0 -8
  148. package/cdn/chunk-5WCOPF7O.js +0 -73
  149. package/cdn/chunk-66PERJA3.js +0 -939
  150. package/cdn/chunk-6WNSQ7U6.js +0 -939
  151. package/cdn/chunk-AT2C24P4.js +0 -8
  152. package/cdn/chunk-BLKKKK6C.js +0 -11
  153. package/cdn/chunk-DC2R556M.js +0 -5
  154. package/cdn/chunk-GALSGMIP.js +0 -5
  155. package/cdn/chunk-IXSX4SJX.js +0 -1
  156. package/cdn/chunk-KYOTSBCX.js +0 -1
  157. package/cdn/chunk-L4TDHAKL.js +0 -24
  158. package/cdn/chunk-LVW3MHTI.js +0 -23
  159. package/cdn/chunk-M6AATWPS.js +0 -59
  160. package/cdn/chunk-MFWSHIPH.js +0 -17
  161. package/cdn/chunk-QGKK4T2J.js +0 -8
  162. package/cdn/chunk-ROXN2HIJ.js +0 -8
  163. package/cdn/chunk-SQDSHH6N.js +0 -3539
  164. package/cdn/chunk-TJMODUN5.js +0 -8
  165. package/cdn/chunk-VI2WKTN4.js +0 -1
  166. package/cdn/chunk-Z6SKK5ZX.js +0 -8
  167. package/cdn/chunks/chunk-3GO57DNP.js +0 -0
  168. package/cdn/chunks/chunk-3V6LA7B3.js +0 -8
  169. package/cdn/chunks/chunk-4PEUIMDK.js +0 -8
  170. package/cdn/chunks/chunk-4WXQYE2P.js +0 -8
  171. package/cdn/chunks/chunk-5P7CTN7Q.js +0 -11
  172. package/cdn/chunks/chunk-5X76K77R.js +0 -8
  173. package/cdn/chunks/chunk-6MCYE7P5.js +0 -1
  174. package/cdn/chunks/chunk-6PW2L463.js +0 -0
  175. package/cdn/chunks/chunk-6S4CDN3T.js +0 -43
  176. package/cdn/chunks/chunk-76VGZJCP.js +0 -934
  177. package/cdn/chunks/chunk-7RBGYKOX.js +0 -5
  178. package/cdn/chunks/chunk-7XYBFL7U.js +0 -934
  179. package/cdn/chunks/chunk-AJJJAZWM.js +0 -1
  180. package/cdn/chunks/chunk-ANDPD7F2.js +0 -5
  181. package/cdn/chunks/chunk-ARHBUT6F.js +0 -5
  182. package/cdn/chunks/chunk-AUHO2E7V.js +0 -934
  183. package/cdn/chunks/chunk-CZ3CSGCE.js +0 -934
  184. package/cdn/chunks/chunk-D3GR6AUG.js +0 -43
  185. package/cdn/chunks/chunk-DZCKF45D.js +0 -5
  186. package/cdn/chunks/chunk-EFU4L43Q.js +0 -8
  187. package/cdn/chunks/chunk-FM5C34DM.js +0 -934
  188. package/cdn/chunks/chunk-FRS2J3OS.js +0 -59
  189. package/cdn/chunks/chunk-GMK2YRB2.js +0 -934
  190. package/cdn/chunks/chunk-H2V2RXUW.js +0 -11
  191. package/cdn/chunks/chunk-HUMOYGEM.js +0 -43
  192. package/cdn/chunks/chunk-IMJOPCFR.js +0 -1
  193. package/cdn/chunks/chunk-IQZ7AOCQ.js +0 -8
  194. package/cdn/chunks/chunk-J3JSSCM6.js +0 -5
  195. package/cdn/chunks/chunk-KHLUVO6Y.js +0 -8
  196. package/cdn/chunks/chunk-LARBLB7K.js +0 -8
  197. package/cdn/chunks/chunk-LNFCEHB3.js +0 -934
  198. package/cdn/chunks/chunk-MJMONWKB.js +0 -3539
  199. package/cdn/chunks/chunk-N5OHGRGG.js +0 -8
  200. package/cdn/chunks/chunk-NDHSIO2G.js +0 -8
  201. package/cdn/chunks/chunk-NRY3WHJD.js +0 -5
  202. package/cdn/chunks/chunk-PKT2SJQD.js +0 -8
  203. package/cdn/chunks/chunk-PPWEIKLT.js +0 -1
  204. package/cdn/chunks/chunk-PT523RSK.js +0 -8
  205. package/cdn/chunks/chunk-QD3NT5PG.js +0 -934
  206. package/cdn/chunks/chunk-QTK4CPHP.js +0 -8
  207. package/cdn/chunks/chunk-QV6I5NVQ.js +0 -8
  208. package/cdn/chunks/chunk-R33OODNX.js +0 -1
  209. package/cdn/chunks/chunk-RIXTWE2H.js +0 -8
  210. package/cdn/chunks/chunk-ROZIP5LG.js +0 -8
  211. package/cdn/chunks/chunk-RPZVSBLM.js +0 -8
  212. package/cdn/chunks/chunk-SATSEEWJ.js +0 -934
  213. package/cdn/chunks/chunk-SXM25YH3.js +0 -934
  214. package/cdn/chunks/chunk-T2KKTMAT.js +0 -934
  215. package/cdn/chunks/chunk-TEYXRLTI.js +0 -8
  216. package/cdn/chunks/chunk-TQBDBMWL.js +0 -5
  217. package/cdn/chunks/chunk-TV3SPOLH.js +0 -8
  218. package/cdn/chunks/chunk-TVDTF6P6.js +0 -934
  219. package/cdn/chunks/chunk-U2TE6TOV.js +0 -934
  220. package/cdn/chunks/chunk-W5Y3ZU2W.js +0 -5
  221. package/cdn/chunks/chunk-WPGJ54IP.js +0 -1
  222. package/cdn/chunks/chunk-YHWMZAZD.js +0 -43
  223. package/cdn/chunks/chunk-YVZ742ID.js +0 -934
  224. package/cdn/chunks/chunk-YWH4TGMA.js +0 -5
  225. package/cdn/chunks/chunk-YXR6KSZI.js +0 -11
  226. package/cdn/qti-components/index.global.js +0 -226
  227. package/cdn/qti-item/components/index.global.js +0 -149
  228. package/cdn/qti-item/components/index.js +0 -3549
  229. package/cdn/qti-item/components/item-container.global.js +0 -149
  230. package/cdn/qti-item/components/item-container.js +0 -3549
  231. package/cdn/qti-item/core/index.global.js +0 -149
  232. package/cdn/qti-item/index.global.js +0 -149
  233. package/cdn/qti-item/index.js +0 -3549
  234. package/cdn/qti-item/qti-item.global.js +0 -114
  235. package/cdn/qti-item/qti-item.js +0 -1
  236. package/cdn/qti-loader/index.global.js +0 -1
  237. package/cdn/qti-test/components/index.global.js +0 -207
  238. package/cdn/qti-test/components/styles.global.js +0 -44
  239. package/cdn/qti-test/components/test-component.abstract.global.js +0 -170
  240. package/cdn/qti-test/components/test-component.abstract.js +0 -1
  241. package/cdn/qti-test/components/test-container.global.js +0 -149
  242. package/cdn/qti-test/components/test-item-link.global.js +0 -170
  243. package/cdn/qti-test/components/test-next.global.js +0 -170
  244. package/cdn/qti-test/components/test-next.spec.css +0 -1
  245. package/cdn/qti-test/components/test-next.spec.global.js +0 -64
  246. package/cdn/qti-test/components/test-next.spec.js +0 -713
  247. package/cdn/qti-test/components/test-paging-buttons-stamp.global.js +0 -207
  248. package/cdn/qti-test/components/test-prev.global.js +0 -170
  249. package/cdn/qti-test/components/test-view.global.js +0 -170
  250. package/cdn/qti-test/context/index.global.js +0 -58
  251. package/cdn/qti-test/context/index.js +0 -1
  252. package/cdn/qti-test/context/test.context.global.js +0 -58
  253. package/cdn/qti-test/context/test.context.js +0 -1
  254. package/cdn/qti-test/core/index.global.js +0 -205
  255. package/cdn/qti-test/index.global.js +0 -242
  256. package/cdn/qti-test/index.js +0 -3598
  257. package/cdn/qti-test/mixins/index.global.js +0 -1
  258. package/cdn/qti-test/mixins/index.js +0 -23
  259. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  260. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  261. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  262. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  263. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  264. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  265. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  266. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  267. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  268. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  269. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  270. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  271. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  272. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  273. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  274. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  275. package/cdn/qti-test/qti-test.global.js +0 -170
  276. package/cdn/qti-test/qti-test.js +0 -23
  277. package/cdn/qti-test/test-base.global.js +0 -170
  278. package/cdn/qti-test/test-base.js +0 -1
  279. package/cdn/qti-transformers/index.global.js +0 -1
  280. package/dist/chunk-2CHF3TMY.js.map +0 -1
  281. package/dist/chunk-2LWLX7WV.js +0 -6307
  282. package/dist/chunk-2LWLX7WV.js.map +0 -1
  283. package/dist/chunk-2OA7E3E7.js +0 -294
  284. package/dist/chunk-2OA7E3E7.js.map +0 -1
  285. package/dist/chunk-3G364JZC.js +0 -72
  286. package/dist/chunk-3G364JZC.js.map +0 -1
  287. package/dist/chunk-44VE5POH.js +0 -55
  288. package/dist/chunk-4YG2FPKK.js +0 -31
  289. package/dist/chunk-4YG2FPKK.js.map +0 -1
  290. package/dist/chunk-6TUE644E.js +0 -569
  291. package/dist/chunk-6TUE644E.js.map +0 -1
  292. package/dist/chunk-6ZMD232X.js +0 -78
  293. package/dist/chunk-6ZMD232X.js.map +0 -1
  294. package/dist/chunk-AYRSHIHA.js +0 -50
  295. package/dist/chunk-AYRSHIHA.js.map +0 -1
  296. package/dist/chunk-BN32D5J2.js +0 -43
  297. package/dist/chunk-BN32D5J2.js.map +0 -1
  298. package/dist/chunk-CJRXRBRQ.js +0 -50
  299. package/dist/chunk-CJRXRBRQ.js.map +0 -1
  300. package/dist/chunk-GPJ6WTE5.js +0 -118
  301. package/dist/chunk-GPJ6WTE5.js.map +0 -1
  302. package/dist/chunk-KAUHKHPH.js +0 -50
  303. package/dist/chunk-KAUHKHPH.js.map +0 -1
  304. package/dist/chunk-MAC76UNI.js +0 -1
  305. package/dist/chunk-QYN5S4EM.js +0 -107
  306. package/dist/chunk-QYN5S4EM.js.map +0 -1
  307. package/dist/chunk-UB5K44DB.js +0 -30
  308. package/dist/chunk-UB5K44DB.js.map +0 -1
  309. package/dist/chunk-UJTJIU3C.js +0 -43
  310. package/dist/chunk-UJTJIU3C.js.map +0 -1
  311. package/dist/chunk-XVQZ5JI5.js +0 -50
  312. package/dist/chunk-XVQZ5JI5.js.map +0 -1
  313. package/dist/chunk-XW3PQRKW.js +0 -6306
  314. package/dist/chunk-XW3PQRKW.js.map +0 -1
  315. package/dist/chunk-YQ7EXOAK.js +0 -10
  316. package/dist/chunk-YQ7EXOAK.js.map +0 -1
  317. package/dist/chunks/chunk-2V6LQV2K.js +0 -50
  318. package/dist/chunks/chunk-2V6LQV2K.js.map +0 -1
  319. package/dist/chunks/chunk-3EU75IUF.js +0 -118
  320. package/dist/chunks/chunk-3EU75IUF.js.map +0 -1
  321. package/dist/chunks/chunk-3QQFMVDS.js +0 -118
  322. package/dist/chunks/chunk-3QQFMVDS.js.map +0 -1
  323. package/dist/chunks/chunk-4GNVYCBN.js +0 -627
  324. package/dist/chunks/chunk-4GNVYCBN.js.map +0 -1
  325. package/dist/chunks/chunk-4MQV5IRV.js +0 -59
  326. package/dist/chunks/chunk-4MQV5IRV.js.map +0 -1
  327. package/dist/chunks/chunk-4WVLWWYJ.js +0 -50
  328. package/dist/chunks/chunk-4WVLWWYJ.js.map +0 -1
  329. package/dist/chunks/chunk-5KVGRLYT.js +0 -10
  330. package/dist/chunks/chunk-5KVGRLYT.js.map +0 -1
  331. package/dist/chunks/chunk-5PCD2B62.js +0 -6091
  332. package/dist/chunks/chunk-5PCD2B62.js.map +0 -1
  333. package/dist/chunks/chunk-5RTLOB3Q.js +0 -59
  334. package/dist/chunks/chunk-5RTLOB3Q.js.map +0 -1
  335. package/dist/chunks/chunk-6JXR63MH.js +0 -50
  336. package/dist/chunks/chunk-6JXR63MH.js.map +0 -1
  337. package/dist/chunks/chunk-6PAEJQSQ.js +0 -6058
  338. package/dist/chunks/chunk-6PAEJQSQ.js.map +0 -1
  339. package/dist/chunks/chunk-6QT4LIPL.js +0 -623
  340. package/dist/chunks/chunk-6QT4LIPL.js.map +0 -1
  341. package/dist/chunks/chunk-7QMCKYDR.js +0 -43
  342. package/dist/chunks/chunk-7QMCKYDR.js.map +0 -1
  343. package/dist/chunks/chunk-A24F75DB.js +0 -72
  344. package/dist/chunks/chunk-A24F75DB.js.map +0 -1
  345. package/dist/chunks/chunk-AUWATZ65.js +0 -10
  346. package/dist/chunks/chunk-AUWATZ65.js.map +0 -1
  347. package/dist/chunks/chunk-AXTEKPP5.js +0 -6084
  348. package/dist/chunks/chunk-AXTEKPP5.js.map +0 -1
  349. package/dist/chunks/chunk-B6MJCAOF.js +0 -6063
  350. package/dist/chunks/chunk-B6MJCAOF.js.map +0 -1
  351. package/dist/chunks/chunk-BJ2JLJIJ.js +0 -623
  352. package/dist/chunks/chunk-BJ2JLJIJ.js.map +0 -1
  353. package/dist/chunks/chunk-BPHQLJWE.js.map +0 -1
  354. package/dist/chunks/chunk-CD3E4M5Y.js +0 -107
  355. package/dist/chunks/chunk-CD3E4M5Y.js.map +0 -1
  356. package/dist/chunks/chunk-CEXAR7BF.js +0 -52
  357. package/dist/chunks/chunk-CEXAR7BF.js.map +0 -1
  358. package/dist/chunks/chunk-CWYAQA25.js +0 -6067
  359. package/dist/chunks/chunk-CWYAQA25.js.map +0 -1
  360. package/dist/chunks/chunk-D3QX5N57.js +0 -6117
  361. package/dist/chunks/chunk-D3QX5N57.js.map +0 -1
  362. package/dist/chunks/chunk-DLUJN2FW.js.map +0 -1
  363. package/dist/chunks/chunk-DNHDFXTV.js +0 -59
  364. package/dist/chunks/chunk-DNHDFXTV.js.map +0 -1
  365. package/dist/chunks/chunk-E4TWZ2DL.js.map +0 -1
  366. package/dist/chunks/chunk-FV7HWK54.js.map +0 -1
  367. package/dist/chunks/chunk-GQ5P3NWC.js.map +0 -1
  368. package/dist/chunks/chunk-GSWZT6N2.js +0 -50
  369. package/dist/chunks/chunk-GSWZT6N2.js.map +0 -1
  370. package/dist/chunks/chunk-HHVRU3AJ.js +0 -107
  371. package/dist/chunks/chunk-HHVRU3AJ.js.map +0 -1
  372. package/dist/chunks/chunk-HOTNM5DT.js +0 -1
  373. package/dist/chunks/chunk-IWG66KQQ.js +0 -107
  374. package/dist/chunks/chunk-IWG66KQQ.js.map +0 -1
  375. package/dist/chunks/chunk-J2SHENRN.js.map +0 -1
  376. package/dist/chunks/chunk-K6ATVWMP.js +0 -6091
  377. package/dist/chunks/chunk-K6ATVWMP.js.map +0 -1
  378. package/dist/chunks/chunk-KOEILLVS.js.map +0 -1
  379. package/dist/chunks/chunk-KYAIMBP5.js +0 -78
  380. package/dist/chunks/chunk-KYAIMBP5.js.map +0 -1
  381. package/dist/chunks/chunk-LNISKMIL.js +0 -6063
  382. package/dist/chunks/chunk-LNISKMIL.js.map +0 -1
  383. package/dist/chunks/chunk-LNKJEW5E.js +0 -627
  384. package/dist/chunks/chunk-LNKJEW5E.js.map +0 -1
  385. package/dist/chunks/chunk-LXJA3VP2.js +0 -72
  386. package/dist/chunks/chunk-LXJA3VP2.js.map +0 -1
  387. package/dist/chunks/chunk-MLT7V47R.js +0 -100
  388. package/dist/chunks/chunk-MLT7V47R.js.map +0 -1
  389. package/dist/chunks/chunk-N5FPZNMX.js +0 -43
  390. package/dist/chunks/chunk-N5FPZNMX.js.map +0 -1
  391. package/dist/chunks/chunk-NHA53UTY.js.map +0 -1
  392. package/dist/chunks/chunk-NZQKGIJP.js.map +0 -1
  393. package/dist/chunks/chunk-O6WEZVEM.js +0 -43
  394. package/dist/chunks/chunk-O6WEZVEM.js.map +0 -1
  395. package/dist/chunks/chunk-OIRWOI3E.js.map +0 -1
  396. package/dist/chunks/chunk-PWOY6REC.js +0 -6064
  397. package/dist/chunks/chunk-PWOY6REC.js.map +0 -1
  398. package/dist/chunks/chunk-QJELKGWM.js +0 -6061
  399. package/dist/chunks/chunk-QJELKGWM.js.map +0 -1
  400. package/dist/chunks/chunk-QUB54PXZ.js +0 -50
  401. package/dist/chunks/chunk-QUB54PXZ.js.map +0 -1
  402. package/dist/chunks/chunk-RX3BRYYI.js +0 -59
  403. package/dist/chunks/chunk-RX3BRYYI.js.map +0 -1
  404. package/dist/chunks/chunk-UEEMM6H2.js +0 -6090
  405. package/dist/chunks/chunk-UEEMM6H2.js.map +0 -1
  406. package/dist/chunks/chunk-UFYWCLXF.js +0 -10
  407. package/dist/chunks/chunk-UFYWCLXF.js.map +0 -1
  408. package/dist/chunks/chunk-UN2IFSGC.js +0 -1
  409. package/dist/chunks/chunk-VAPB5TN4.js +0 -46
  410. package/dist/chunks/chunk-VAPB5TN4.js.map +0 -1
  411. package/dist/chunks/chunk-VBF3GCZK.js +0 -50
  412. package/dist/chunks/chunk-VBF3GCZK.js.map +0 -1
  413. package/dist/chunks/chunk-W4272Q5U.js.map +0 -1
  414. package/dist/chunks/chunk-WWN5AD6V.js.map +0 -1
  415. package/dist/chunks/chunk-X226BX2U.js +0 -78
  416. package/dist/chunks/chunk-X226BX2U.js.map +0 -1
  417. package/dist/chunks/chunk-XCHS3RTZ.js +0 -107
  418. package/dist/chunks/chunk-XCHS3RTZ.js.map +0 -1
  419. package/dist/chunks/chunk-YFC3BVN2.js +0 -78
  420. package/dist/chunks/chunk-YFC3BVN2.js.map +0 -1
  421. package/dist/chunks/chunk-YOXF6JPS.js.map +0 -1
  422. package/dist/chunks/chunk-YQB6YLNW.js +0 -78
  423. package/dist/chunks/chunk-YQB6YLNW.js.map +0 -1
  424. package/dist/chunks/chunk-Z5THRO6Z.js +0 -46
  425. package/dist/chunks/chunk-Z5THRO6Z.js.map +0 -1
  426. package/dist/chunks/chunk-ZHAJ3CMP.js +0 -6091
  427. package/dist/chunks/chunk-ZHAJ3CMP.js.map +0 -1
  428. package/dist/chunks/chunk-ZPNJ2HP5.js +0 -71
  429. package/dist/chunks/chunk-ZPNJ2HP5.js.map +0 -1
  430. package/dist/chunks/chunk-ZQXZ6PK7.js +0 -649
  431. package/dist/chunks/chunk-ZQXZ6PK7.js.map +0 -1
  432. package/dist/custom-element-eslint-rules.js +0 -337
  433. package/dist/custom-elements.json +0 -27158
  434. package/dist/loader/index.d.ts +0 -20
  435. package/dist/loader/index.js +0 -310
  436. package/dist/loader/index.js.map +0 -1
  437. package/dist/qti-components/index.cjs +0 -6773
  438. package/dist/qti-components/index.cjs.map +0 -1
  439. package/dist/qti-components/index.d.cts +0 -150
  440. package/dist/qti-item/components/index.d.ts +0 -3
  441. package/dist/qti-item/components/index.js +0 -3856
  442. package/dist/qti-item/components/index.js.map +0 -1
  443. package/dist/qti-item/components/item-container.d.ts +0 -40
  444. package/dist/qti-item/components/item-container.js +0 -3856
  445. package/dist/qti-item/components/item-container.js.map +0 -1
  446. package/dist/qti-item/index.cjs +0 -89
  447. package/dist/qti-item/index.cjs.map +0 -1
  448. package/dist/qti-item/index.d.cts +0 -24
  449. package/dist/qti-item/index.d.ts +0 -4
  450. package/dist/qti-item/index.js +0 -3869
  451. package/dist/qti-item/index.js.map +0 -1
  452. package/dist/qti-item/qti-item.d.ts +0 -25
  453. package/dist/qti-item/qti-item.js +0 -26
  454. package/dist/qti-item/qti-item.js.map +0 -1
  455. package/dist/qti-loader/index.cjs +0 -332
  456. package/dist/qti-loader/index.cjs.map +0 -1
  457. package/dist/qti-loader/index.d.cts +0 -20
  458. package/dist/qti-response-declaration-DAeBp8HH.d.ts +0 -1008
  459. package/dist/qti-response-declaration-ucAqd0qK.d.ts +0 -1034
  460. package/dist/qti-simple-choice-3M44uWiN.d.ts +0 -1153
  461. package/dist/qti-simple-choice-B5GnzbqW.d.ts +0 -1080
  462. package/dist/qti-simple-choice-BOLF9wXz.d.ts +0 -1170
  463. package/dist/qti-simple-choice-BeixIkA0.d.ts +0 -1088
  464. package/dist/qti-simple-choice-BiEjEO6s.d.ts +0 -1152
  465. package/dist/qti-simple-choice-Bo_ikO6H.d.ts +0 -1198
  466. package/dist/qti-simple-choice-C0CcrtK5.d.ts +0 -1169
  467. package/dist/qti-simple-choice-Cgh1-Jbr.d.cts +0 -1185
  468. package/dist/qti-simple-choice-Cgh1-Jbr.d.ts +0 -1185
  469. package/dist/qti-simple-choice-Cn5y-Ta8.d.ts +0 -1158
  470. package/dist/qti-simple-choice-D0GiMrqD.d.ts +0 -1168
  471. package/dist/qti-simple-choice-DxWcdKHi.d.ts +0 -1158
  472. package/dist/qti-simple-choice-R_LxBTp8.d.ts +0 -1158
  473. package/dist/qti-simple-choice-hAIyfF0z.d.ts +0 -1114
  474. package/dist/qti-simple-choice-o4rje1RA.d.ts +0 -1176
  475. package/dist/qti-simple-choice-v2GxpPNh.d.ts +0 -1181
  476. package/dist/qti-test/components/test-component.abstract.d.ts +0 -26
  477. package/dist/qti-test/components/test-component.abstract.js +0 -11
  478. package/dist/qti-test/components/test-next.spec.css +0 -2481
  479. package/dist/qti-test/components/test-next.spec.css.map +0 -1
  480. package/dist/qti-test/components/test-next.spec.d.ts +0 -13
  481. package/dist/qti-test/components/test-next.spec.js +0 -45904
  482. package/dist/qti-test/components/test-next.spec.js.map +0 -1
  483. package/dist/qti-test/context/index.d.ts +0 -6
  484. package/dist/qti-test/context/index.js +0 -9
  485. package/dist/qti-test/context/index.js.map +0 -1
  486. package/dist/qti-test/context/test.context.d.ts +0 -6
  487. package/dist/qti-test/context/test.context.js +0 -9
  488. package/dist/qti-test/context/test.context.js.map +0 -1
  489. package/dist/qti-test/index.cjs +0 -4823
  490. package/dist/qti-test/index.cjs.map +0 -1
  491. package/dist/qti-test/index.d.cts +0 -304
  492. package/dist/qti-test/index.d.ts +0 -14
  493. package/dist/qti-test/index.js +0 -4746
  494. package/dist/qti-test/index.js.map +0 -1
  495. package/dist/qti-test/mixins/index.d.ts +0 -8
  496. package/dist/qti-test/mixins/index.js +0 -350
  497. package/dist/qti-test/mixins/index.js.map +0 -1
  498. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  499. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  500. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  501. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  502. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  503. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  504. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  505. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  506. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  507. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  508. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  509. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  510. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  511. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  512. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  513. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  514. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  515. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  516. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  517. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  518. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  519. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  520. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  521. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  522. package/dist/qti-test/qti-test.d.ts +0 -68
  523. package/dist/qti-test/qti-test.js +0 -500
  524. package/dist/qti-test/qti-test.js.map +0 -1
  525. package/dist/qti-test/test-base.d.ts +0 -6
  526. package/dist/qti-test/test-base.js +0 -137
  527. package/dist/qti-test/test-base.js.map +0 -1
  528. package/dist/qti-transformers/index.cjs +0 -316
  529. package/dist/qti-transformers/index.cjs.map +0 -1
  530. package/dist/qti-transformers/index.d.cts +0 -75
  531. package/dist/test-base-BJwG9Ie8.d.ts +0 -109
  532. package/dist/test.context-Bx-606B3.d.ts +0 -99
  533. package/dist/test.context-CB5V4xJz.d.ts +0 -99
  534. package/dist/test.context-CaENAJNk.d.ts +0 -101
  535. package/dist/test.context-CmsDQ8k2.d.ts +0 -99
  536. package/dist/transformers/index.d.ts +0 -76
  537. package/dist/transformers/index.js +0 -293
  538. package/dist/transformers/index.js.map +0 -1
  539. /package/cdn/{chunk-22HAPLRD.js → chunks/chunk-MTNLMWSG.js} +0 -0
  540. /package/dist/{chunk-44VE5POH.js.map → chunks/chunk-CBYNKDSF.js.map} +0 -0
  541. /package/dist/chunks/{chunk-XSI6FXGD.js.map → chunk-OOQLWOYU.js.map} +0 -0
  542. /package/dist/{chunk-MAC76UNI.js.map → exports/computed.context.js.map} +0 -0
  543. /package/dist/{chunks/chunk-HOTNM5DT.js.map → exports/config.context.js.map} +0 -0
  544. /package/dist/{chunks/chunk-UN2IFSGC.js.map → exports/session.context.js.map} +0 -0
  545. /package/dist/{qti-test/components/test-component.abstract.js.map → exports/test.context.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/qti-transformers/qti-transformers.ts","../../../src/lib/qti-transformers/qti-transform-item.ts","../../../src/lib/qti-test/mixins/test-loader.mixin.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 { LitElement } from 'lit';\nimport { qtiTransformItem } from '../../qti-transformers';\n\n// const setSessionData = <T>(key: string, value?: T): void => sessionStorage.setItem(key, JSON.stringify(value));\n// const getSessionData = <T>(key: string): T | null => (sessionStorage.getItem(key) ? JSON.parse(sessionStorage.getItem(key)!) : null);\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestLoaderInterface {}\nexport const TestLoaderMixin = <T extends Constructor<LitElement>>(superClass: T) => {\n abstract class TestLoaderClass extends superClass {\n // private testURL = '';\n\n constructor(...args: any[]) {\n super(...args);\n\n // this.addEventListener('qti-load-test-request', (e: CustomEvent /* 1. Request the test */) => {\n // const { testURL } = e.detail;\n // if (!testURL) {\n // console.warn(\n // 'No test found, there should be an attribute test-url with the path to the test on the test-container'\n // );\n // } else {\n // this.testURL = testURL;\n // }\n\n // e.detail.promise = (async () => {\n // e.preventDefault(); /* indicates that the event was catched and handled */\n // const api = await qtiTransformTest().load(`${this.testURL}`); /* 6. load the item */\n // return api.htmlDoc(); /* 3. Return html version of the assessment.xml */\n // })();\n // });\n\n this.addEventListener('qti-assessment-test-connected', () => {\n // this.context = getSessionData(`testcontext-${this.testURL}`); /* 4. Set the context */\n });\n\n this.addEventListener('qti-load-item-request' /* 5. Request the item */, ({ detail }: CustomEvent) => {\n // if (!this.testURL) return;\n detail.promise = (async () => {\n const api = await qtiTransformItem().load(\n `${detail.href}`,\n detail.cancelPreviousRequest\n ); /* 6. load the item */\n return api.htmlDoc(); /* 7. Return HTML version of the item.xml */\n })();\n });\n\n this.addEventListener('qti-interaction-changed', _e => {\n /* 8. Interaction changed */\n // const scoreOutcomeIdentifier = qtiAssessmentItem.variables.find(v => v.identifier === 'SCORE') as OutcomeVariable;\n // if (scoreOutcomeIdentifier.externalScored === null && qtiAssessmentItem.adaptive === 'false') {\n // qtiAssessmentItem.processResponse(); /* 9. Process the response */\n // }\n // setSessionData(`testcontext-${this.testURL}`, this.context); /* 10. Update the context */\n });\n\n this.addEventListener('qti-outcome-changed', () => {\n // setSessionData(`testcontext-${this.testURL}`, this.context); /* 10. Update the context */\n });\n }\n }\n\n return TestLoaderClass as Constructor<TestLoaderInterface> & T;\n};\n"],"mappings":"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","names":["xml"]}
@@ -1,22 +0,0 @@
1
- import { f as TestBase } from '../../test-base-BJwG9Ie8.js';
2
- import '../qti-assessment-test/qti-test-part.js';
3
- import 'lit-html';
4
- import 'lit';
5
- import '../../qti-simple-choice-DxWcdKHi.js';
6
- import 'lit-html/directives/ref.js';
7
-
8
- declare module '../context/test.context' {
9
- interface TestContext {
10
- navPartId?: string | null;
11
- navSectionId?: string | null;
12
- navItemId?: string | null;
13
- navItemLoading?: boolean;
14
- navTestLoading?: boolean;
15
- }
16
- }
17
- type Constructor<T = {}> = abstract new (...args: any[]) => T;
18
- declare class TestNavigationInterface {
19
- }
20
- declare const TestNavigationMixin: <T extends Constructor<TestBase>>(superClass: T) => Constructor<TestNavigationInterface> & T;
21
-
22
- export { TestNavigationMixin };
@@ -1,64 +0,0 @@
1
- // src/lib/qti-test/mixins/test-navigation.mixin.ts
2
- var TestNavigationMixin = (superClass) => {
3
- class TestNavigationClass extends superClass {
4
- constructor(...args) {
5
- super(...args);
6
- this.addEventListener("qti-request-test-item", ({ detail: navItemId }) => {
7
- if (!navItemId) return;
8
- this._clearLoadedItems();
9
- const itemRefEl = this.testElement.el.querySelector(
10
- `qti-assessment-item-ref[identifier="${navItemId}"]`
11
- );
12
- const promise = this._loadItemRequest(itemRefEl.href, false);
13
- const navPartId = itemRefEl.closest("qti-test-part").identifier;
14
- const navSectionId = itemRefEl.closest("qti-assessment-section").identifier;
15
- this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId, navItemLoading: true };
16
- if (promise) {
17
- promise.then((doc) => {
18
- itemRefEl.xmlDoc = doc;
19
- requestAnimationFrame(
20
- () => this.dispatchEvent(new CustomEvent("qti-item-connected", { bubbles: true, composed: true }))
21
- );
22
- this._testContext = { ...this._testContext, navItemLoading: false };
23
- }).catch((error) => console.error("Failed to load item:", error));
24
- } else {
25
- console.info("Load item request was not handled:", itemRefEl.href);
26
- }
27
- });
28
- this.addEventListener("qti-assessment-test-connected", () => {
29
- let navItemId = this._testContext.navItemId;
30
- if (!navItemId) {
31
- const itemRefEl = this.testElement.el.querySelector("qti-assessment-item-ref");
32
- navItemId = itemRefEl.identifier;
33
- }
34
- this.dispatchEvent(
35
- new CustomEvent("qti-request-test-item", { detail: navItemId, bubbles: true, composed: true })
36
- );
37
- });
38
- }
39
- _clearLoadedItems() {
40
- const itemRefEls = this.testElement.el.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);
41
- Array.from(itemRefEls).forEach((itemElement) => {
42
- itemElement.xmlDoc = null;
43
- });
44
- }
45
- _loadItemRequest(href, cancelPreviousRequest = true) {
46
- const event = new CustomEvent("qti-load-item-request", {
47
- bubbles: true,
48
- composed: true,
49
- detail: {
50
- href,
51
- promise: null,
52
- cancelPreviousRequest
53
- }
54
- });
55
- this.dispatchEvent(event);
56
- return event.detail.promise;
57
- }
58
- }
59
- return TestNavigationClass;
60
- };
61
- export {
62
- TestNavigationMixin
63
- };
64
- //# sourceMappingURL=test-navigation.mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/mixins/test-navigation.mixin.ts"],"sourcesContent":["import { QtiAssessmentItemRef } from '../qti-assessment-test';\nimport { TestBase } from '../test-base';\n\ndeclare module '../context/test.context' {\n interface TestContext {\n navPartId?: string | null;\n navSectionId?: string | null;\n navItemId?: string | null;\n navItemLoading?: boolean;\n navTestLoading?: boolean;\n }\n}\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestNavigationInterface {}\nexport const TestNavigationMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestNavigationClass extends superClass {\n constructor(...args: any[]) {\n super(...args);\n\n // this.addEventListener('qti-request-test-part', (e: CustomEvent) => {\n // this._clearLoadedItems();\n // });\n\n // Load all items of a section\n // this.addEventListener('qti-request-test-section', ({ detail: navSectionId }: CustomEvent<string>) => {\n // this._clearLoadedItems();\n\n // const sectionRefEl = this.testElement.el.querySelector<QtiAssessmentItemRef>(\n // `qti-assessment-section[identifier=\"${navSectionId}\"]`\n // );\n\n // const itemRefEls = this.testElement.el.querySelectorAll(\n // `qti-assessment-section[identifier=\"${navSectionId}\"] > qti-assessment-item-ref`\n // );\n\n // const navPartId = sectionRefEl.closest('qti-test-part').identifier;\n\n // this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId: null };\n\n // const items = Array.from(itemRefEls).map((itemRef: QtiAssessmentItemRef) => {\n // return { identifier: itemRef.identifier, href: itemRef.href, element: itemRef };\n // });\n\n // const promises = items.map((item, index) => {\n // return new Promise((resolve, reject) => {\n // return this._loadItemRequest(item.href, false)\n // .then(doc => (item.element.xmlDoc = doc))\n // .then(() => resolve(item))\n // .catch(error => console.error('Failed to load item:', error));\n // });\n // });\n\n // Promise.all(promises)\n // .then(results => {\n // requestAnimationFrame(() =>\n // this.dispatchEvent(new CustomEvent('qti-test-connected', { detail: results, bubbles: true, composed: true }))\n // );\n // })\n // .catch(error => console.error('One or more promises failed:', error));\n // });\n\n // load an item\n this.addEventListener('qti-request-test-item', ({ detail: navItemId }: CustomEvent<string>) => {\n if (!navItemId) return;\n this._clearLoadedItems();\n\n const itemRefEl = this.testElement.el.querySelector<QtiAssessmentItemRef>(\n `qti-assessment-item-ref[identifier=\"${navItemId}\"]`\n );\n\n const promise = this._loadItemRequest(itemRefEl.href, false);\n\n const navPartId = itemRefEl.closest('qti-test-part').identifier;\n const navSectionId = itemRefEl.closest('qti-assessment-section').identifier;\n this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId, navItemLoading: true };\n\n if (promise) {\n promise\n .then(doc => {\n itemRefEl.xmlDoc = doc;\n requestAnimationFrame(() =>\n this.dispatchEvent(new CustomEvent('qti-item-connected', { bubbles: true, composed: true }))\n );\n this._testContext = { ...this._testContext, navItemLoading: false };\n })\n .catch(error => console.error('Failed to load item:', error));\n } else {\n console.info('Load item request was not handled:', itemRefEl.href);\n }\n });\n\n this.addEventListener('qti-assessment-test-connected', () => {\n let navItemId = this._testContext.navItemId;\n if (!navItemId) {\n const itemRefEl = this.testElement.el.querySelector<QtiAssessmentItemRef>('qti-assessment-item-ref');\n navItemId = itemRefEl.identifier;\n }\n this.dispatchEvent(\n new CustomEvent('qti-request-test-item', { detail: navItemId, bubbles: true, composed: true })\n );\n });\n }\n\n private _clearLoadedItems(): void {\n const itemRefEls = this.testElement.el.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);\n Array.from(itemRefEls).forEach((itemElement: QtiAssessmentItemRef) => {\n itemElement.xmlDoc = null;\n });\n }\n\n private _loadItemRequest(href: string, cancelPreviousRequest: boolean = true): Promise<DocumentFragment> {\n const event = new CustomEvent('qti-load-item-request', {\n bubbles: true,\n composed: true,\n detail: {\n href: href,\n promise: null,\n cancelPreviousRequest\n }\n });\n this.dispatchEvent(event);\n\n return event.detail.promise;\n }\n }\n\n return TestNavigationClass as Constructor<TestNavigationInterface> & T;\n};\n"],"mappings":";AAgBO,IAAM,sBAAsB,CAAkC,eAAkB;AAAA,EACrF,MAAe,4BAA4B,WAAW;AAAA,IACpD,eAAe,MAAa;AAC1B,YAAM,GAAG,IAAI;AA6Cb,WAAK,iBAAiB,yBAAyB,CAAC,EAAE,QAAQ,UAAU,MAA2B;AAC7F,YAAI,CAAC,UAAW;AAChB,aAAK,kBAAkB;AAEvB,cAAM,YAAY,KAAK,YAAY,GAAG;AAAA,UACpC,uCAAuC,SAAS;AAAA,QAClD;AAEA,cAAM,UAAU,KAAK,iBAAiB,UAAU,MAAM,KAAK;AAE3D,cAAM,YAAY,UAAU,QAAQ,eAAe,EAAE;AACrD,cAAM,eAAe,UAAU,QAAQ,wBAAwB,EAAE;AACjE,aAAK,eAAe,EAAE,GAAG,KAAK,cAAc,WAAW,cAAc,WAAW,gBAAgB,KAAK;AAErG,YAAI,SAAS;AACX,kBACG,KAAK,SAAO;AACX,sBAAU,SAAS;AACnB;AAAA,cAAsB,MACpB,KAAK,cAAc,IAAI,YAAY,sBAAsB,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC,CAAC;AAAA,YAC7F;AACA,iBAAK,eAAe,EAAE,GAAG,KAAK,cAAc,gBAAgB,MAAM;AAAA,UACpE,CAAC,EACA,MAAM,WAAS,QAAQ,MAAM,wBAAwB,KAAK,CAAC;AAAA,QAChE,OAAO;AACL,kBAAQ,KAAK,sCAAsC,UAAU,IAAI;AAAA,QACnE;AAAA,MACF,CAAC;AAED,WAAK,iBAAiB,iCAAiC,MAAM;AAC3D,YAAI,YAAY,KAAK,aAAa;AAClC,YAAI,CAAC,WAAW;AACd,gBAAM,YAAY,KAAK,YAAY,GAAG,cAAoC,yBAAyB;AACnG,sBAAY,UAAU;AAAA,QACxB;AACA,aAAK;AAAA,UACH,IAAI,YAAY,yBAAyB,EAAE,QAAQ,WAAW,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,QAC/F;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEQ,oBAA0B;AAChC,YAAM,aAAa,KAAK,YAAY,GAAG,iBAAiB,6CAA6C;AACrG,YAAM,KAAK,UAAU,EAAE,QAAQ,CAAC,gBAAsC;AACpE,oBAAY,SAAS;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,IAEQ,iBAAiB,MAAc,wBAAiC,MAAiC;AACvG,YAAM,QAAQ,IAAI,YAAY,yBAAyB;AAAA,QACrD,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,UACN;AAAA,UACA,SAAS;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AACD,WAAK,cAAc,KAAK;AAExB,aAAO,MAAM,OAAO;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1,6 +0,0 @@
1
- export { e as TestViewMixin, V as View } from '../../test-base-BJwG9Ie8.js';
2
- import '../qti-assessment-test/qti-test-part.js';
3
- import 'lit-html';
4
- import 'lit';
5
- import '../../qti-simple-choice-DxWcdKHi.js';
6
- import 'lit-html/directives/ref.js';
@@ -1,50 +0,0 @@
1
- // src/lib/qti-test/mixins/test-view.mixin.ts
2
- var TestViewMixin = (superClass) => {
3
- class TestViewClass extends superClass {
4
- constructor(...args) {
5
- super(...args);
6
- this._testContext = { ...this._testContext, view: "candidate" };
7
- this.addEventListener("on-test-switch-view", (e) => {
8
- this._testContext = { ...this._testContext, view: e.detail };
9
- this._updateElementView();
10
- });
11
- this.addEventListener("qti-assessment-test-connected", () => {
12
- this._updateElementView();
13
- });
14
- this.addEventListener("qti-assessment-item-connected", (e) => {
15
- this._updateElementView();
16
- this._setCorrectResponseVisibility(e.detail);
17
- });
18
- }
19
- willUpdate(changedProperties) {
20
- super.willUpdate(changedProperties);
21
- if (changedProperties.has("_testContext")) {
22
- this._updateElementView();
23
- }
24
- }
25
- // Method to handle view updates for elements based on the current context view
26
- _updateElementView() {
27
- if (this.testElement && this.testElement.el) {
28
- const viewElements = Array.from(this.testElement.el.querySelectorAll("[view]"));
29
- viewElements.forEach((element) => {
30
- element.classList.toggle("show", element.getAttribute("view") === this._testContext.view);
31
- });
32
- const assessmentItem = this.testElement.el.querySelector(
33
- `qti-assessment-item[identifier="${this._testContext.navItemId}"]`
34
- );
35
- if (assessmentItem) {
36
- assessmentItem.showCorrectResponse(this._testContext.view === "scorer");
37
- }
38
- }
39
- }
40
- // Event handler for connected QTI assessment items
41
- _setCorrectResponseVisibility(assessmentItem) {
42
- assessmentItem.showCorrectResponse(this._testContext.view === "scorer");
43
- }
44
- }
45
- return TestViewClass;
46
- };
47
- export {
48
- TestViewMixin
49
- };
50
- //# sourceMappingURL=test-view.mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/mixins/test-view.mixin.ts"],"sourcesContent":["import { QtiAssessmentItem } from '../../qti-components';\nimport { TestBase } from '../test-base';\n\nexport type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';\n\ndeclare module '../context' {\n interface TestContext {\n view?: View;\n }\n}\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestViewInterface {}\n\nexport const TestViewMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestViewClass extends superClass {\n constructor(...args: any[]) {\n super(...args);\n this._testContext = { ...this._testContext, view: 'candidate' };\n\n this.addEventListener('on-test-switch-view', (e: CustomEvent<View>) => {\n this._testContext = { ...this._testContext, view: e.detail };\n this._updateElementView();\n });\n this.addEventListener('qti-assessment-test-connected', () => {\n this._updateElementView();\n });\n this.addEventListener('qti-assessment-item-connected', (e: CustomEvent) => {\n this._updateElementView();\n this._setCorrectResponseVisibility(e.detail);\n });\n }\n\n willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('_testContext')) {\n // if (previousContext && previousContext.view !== this._testContext.view) {\n this._updateElementView();\n // }\n }\n }\n\n // Method to handle view updates for elements based on the current context view\n private _updateElementView() {\n if (this.testElement && this.testElement.el) {\n const viewElements = Array.from(this.testElement.el.querySelectorAll('[view]'));\n\n viewElements.forEach((element: HTMLElement) => {\n element.classList.toggle('show', element.getAttribute('view') === this._testContext.view);\n });\n\n const assessmentItem = this.testElement.el.querySelector<QtiAssessmentItem>(\n `qti-assessment-item[identifier=\"${this._testContext.navItemId}\"]`\n );\n if (assessmentItem) {\n assessmentItem.showCorrectResponse(this._testContext.view === 'scorer');\n }\n }\n }\n\n // Event handler for connected QTI assessment items\n private _setCorrectResponseVisibility(assessmentItem: QtiAssessmentItem): void {\n assessmentItem.showCorrectResponse(this._testContext.view === 'scorer');\n }\n }\n\n return TestViewClass as Constructor<TestViewInterface> & T;\n};\n"],"mappings":";AAeO,IAAM,gBAAgB,CAAkC,eAAkB;AAAA,EAC/E,MAAe,sBAAsB,WAAW;AAAA,IAC9C,eAAe,MAAa;AAC1B,YAAM,GAAG,IAAI;AACb,WAAK,eAAe,EAAE,GAAG,KAAK,cAAc,MAAM,YAAY;AAE9D,WAAK,iBAAiB,uBAAuB,CAAC,MAAyB;AACrE,aAAK,eAAe,EAAE,GAAG,KAAK,cAAc,MAAM,EAAE,OAAO;AAC3D,aAAK,mBAAmB;AAAA,MAC1B,CAAC;AACD,WAAK,iBAAiB,iCAAiC,MAAM;AAC3D,aAAK,mBAAmB;AAAA,MAC1B,CAAC;AACD,WAAK,iBAAiB,iCAAiC,CAAC,MAAmB;AACzE,aAAK,mBAAmB;AACxB,aAAK,8BAA8B,EAAE,MAAM;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IAEA,WAAW,mBAA2D;AACpE,YAAM,WAAW,iBAAiB;AAClC,UAAI,kBAAkB,IAAI,cAAc,GAAG;AAEzC,aAAK,mBAAmB;AAAA,MAE1B;AAAA,IACF;AAAA;AAAA,IAGQ,qBAAqB;AAC3B,UAAI,KAAK,eAAe,KAAK,YAAY,IAAI;AAC3C,cAAM,eAAe,MAAM,KAAK,KAAK,YAAY,GAAG,iBAAiB,QAAQ,CAAC;AAE9E,qBAAa,QAAQ,CAAC,YAAyB;AAC7C,kBAAQ,UAAU,OAAO,QAAQ,QAAQ,aAAa,MAAM,MAAM,KAAK,aAAa,IAAI;AAAA,QAC1F,CAAC;AAED,cAAM,iBAAiB,KAAK,YAAY,GAAG;AAAA,UACzC,mCAAmC,KAAK,aAAa,SAAS;AAAA,QAChE;AACA,YAAI,gBAAgB;AAClB,yBAAe,oBAAoB,KAAK,aAAa,SAAS,QAAQ;AAAA,QACxE;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAGQ,8BAA8B,gBAAyC;AAC7E,qBAAe,oBAAoB,KAAK,aAAa,SAAS,QAAQ;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1,6 +0,0 @@
1
- export { Q as QtiAssessmentItemRef, a as QtiAssessmentSection, b as QtiAssessmentTest } from '../../test-base-BJwG9Ie8.js';
2
- export { QtiTestPart } from './qti-test-part.js';
3
- import 'lit';
4
- import 'lit-html';
5
- import '../../qti-simple-choice-DxWcdKHi.js';
6
- import 'lit-html/directives/ref.js';
@@ -1,221 +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/qti-assessment-test/qti-assessment-item-ref.ts
13
- import { consume } from "@lit/context";
14
- import { html, LitElement } from "lit";
15
- import { property } from "lit/decorators.js";
16
-
17
- // src/lib/qti-test/context/test.context.ts
18
- import { createContext } from "@lit/context";
19
- var testContext = createContext(Symbol("test"));
20
- var testElement = createContext(Symbol("testElement"));
21
-
22
- // src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts
23
- var stringToBooleanConverter = {
24
- fromAttribute(value) {
25
- return value === "true";
26
- },
27
- toAttribute(value) {
28
- return value ? "true" : "false";
29
- }
30
- };
31
- var QtiAssessmentItemRef = class extends LitElement {
32
- constructor() {
33
- super(...arguments);
34
- this.weigths = /* @__PURE__ */ new Map();
35
- }
36
- // the XMLDocument
37
- createRenderRoot() {
38
- return this;
39
- }
40
- get assessmentItem() {
41
- return this.renderRoot?.querySelector("qti-assessment-item");
42
- }
43
- async connectedCallback() {
44
- super.connectedCallback();
45
- await this.updateComplete;
46
- this.dispatchEvent(
47
- new CustomEvent("qti-assessment-item-ref-connected", {
48
- bubbles: true,
49
- composed: true,
50
- detail: { identifier: this.identifier, href: this.href, category: this.category }
51
- })
52
- );
53
- }
54
- render() {
55
- return html`${this.xmlDoc}`;
56
- }
57
- };
58
- __decorateClass([
59
- property({ type: String })
60
- ], QtiAssessmentItemRef.prototype, "category", 2);
61
- __decorateClass([
62
- property({ type: String })
63
- ], QtiAssessmentItemRef.prototype, "identifier", 2);
64
- __decorateClass([
65
- property({ type: Boolean, converter: stringToBooleanConverter })
66
- ], QtiAssessmentItemRef.prototype, "required", 2);
67
- __decorateClass([
68
- property({ type: Boolean, converter: stringToBooleanConverter })
69
- ], QtiAssessmentItemRef.prototype, "fixed", 2);
70
- __decorateClass([
71
- property({ type: String })
72
- ], QtiAssessmentItemRef.prototype, "href", 2);
73
- __decorateClass([
74
- consume({ context: testContext, subscribe: true })
75
- ], QtiAssessmentItemRef.prototype, "_testContext", 2);
76
- __decorateClass([
77
- property({ type: Object, attribute: false })
78
- ], QtiAssessmentItemRef.prototype, "xmlDoc", 2);
79
- if (!customElements.get("qti-assessment-item-ref")) {
80
- customElements.define("qti-assessment-item-ref", QtiAssessmentItemRef);
81
- }
82
-
83
- // src/lib/qti-test/qti-assessment-test/qti-assessment-section.ts
84
- import { consume as consume2 } from "@lit/context";
85
- import { html as html2, LitElement as LitElement2 } from "lit";
86
- import { property as property2 } from "lit/decorators.js";
87
- var stringToBooleanConverter2 = {
88
- fromAttribute(value) {
89
- return value === "true";
90
- },
91
- toAttribute(value) {
92
- return value ? "true" : "false";
93
- }
94
- };
95
- var QtiAssessmentSection = class extends LitElement2 {
96
- async connectedCallback() {
97
- super.connectedCallback();
98
- await this.updateComplete;
99
- this.dispatchEvent(
100
- new Event("qti-assessment-section-connected", {
101
- bubbles: true,
102
- composed: true
103
- })
104
- );
105
- }
106
- render() {
107
- return html2`<slot name="qti-rubric-block"></slot><slot></slot>`;
108
- }
109
- };
110
- __decorateClass([
111
- property2({ type: String })
112
- ], QtiAssessmentSection.prototype, "identifier", 2);
113
- __decorateClass([
114
- property2({ type: String })
115
- ], QtiAssessmentSection.prototype, "required", 2);
116
- __decorateClass([
117
- property2({ type: Boolean, converter: stringToBooleanConverter2 })
118
- ], QtiAssessmentSection.prototype, "fixed", 2);
119
- __decorateClass([
120
- property2({ type: String })
121
- ], QtiAssessmentSection.prototype, "title", 2);
122
- __decorateClass([
123
- property2({ type: Boolean, converter: stringToBooleanConverter2 })
124
- ], QtiAssessmentSection.prototype, "visible", 2);
125
- __decorateClass([
126
- property2({ type: Boolean, converter: stringToBooleanConverter2, attribute: "keep-together" })
127
- ], QtiAssessmentSection.prototype, "keepTogether", 2);
128
- __decorateClass([
129
- consume2({ context: testContext, subscribe: true })
130
- ], QtiAssessmentSection.prototype, "_testContext", 2);
131
- if (!customElements.get("qti-assessment-section")) {
132
- customElements.define("qti-assessment-section", QtiAssessmentSection);
133
- }
134
-
135
- // src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts
136
- import { consume as consume3 } from "@lit/context";
137
- import { html as html3, LitElement as LitElement3 } from "lit";
138
- import { customElement, property as property3 } from "lit/decorators.js";
139
- var QtiAssessmentTest = class extends LitElement3 {
140
- async connectedCallback() {
141
- super.connectedCallback();
142
- await this.updateComplete;
143
- this.dispatchEvent(
144
- new CustomEvent("qti-assessment-test-connected", {
145
- detail: this,
146
- bubbles: true,
147
- composed: true
148
- })
149
- );
150
- }
151
- render() {
152
- return html3` <slot></slot>`;
153
- }
154
- };
155
- __decorateClass([
156
- property3({ type: String })
157
- ], QtiAssessmentTest.prototype, "identifier", 2);
158
- __decorateClass([
159
- property3({ type: String })
160
- ], QtiAssessmentTest.prototype, "title", 2);
161
- __decorateClass([
162
- consume3({ context: testContext, subscribe: true })
163
- ], QtiAssessmentTest.prototype, "_testContext", 2);
164
- QtiAssessmentTest = __decorateClass([
165
- customElement("qti-assessment-test")
166
- ], QtiAssessmentTest);
167
-
168
- // src/lib/qti-test/qti-assessment-test/qti-test-part.ts
169
- import { html as html4, LitElement as LitElement4 } from "lit";
170
- import { customElement as customElement2, property as property4 } from "lit/decorators.js";
171
- var QtiTestPart = class extends LitElement4 {
172
- constructor() {
173
- super(...arguments);
174
- this.identifier = "";
175
- this.title = "";
176
- this.class = "";
177
- this.NavigationMode = "nonlinear";
178
- this.submissionMode = "individual";
179
- }
180
- async connectedCallback() {
181
- super.connectedCallback();
182
- await this.updateComplete;
183
- this.dispatchEvent(
184
- new Event("qti-test-part-connected", {
185
- bubbles: true,
186
- composed: true
187
- })
188
- );
189
- }
190
- render() {
191
- return html4` <slot></slot>`;
192
- }
193
- };
194
- __decorateClass([
195
- property4({ type: String })
196
- ], QtiTestPart.prototype, "identifier", 2);
197
- __decorateClass([
198
- property4({ type: String })
199
- ], QtiTestPart.prototype, "title", 2);
200
- __decorateClass([
201
- property4({ type: String })
202
- ], QtiTestPart.prototype, "class", 2);
203
- __decorateClass([
204
- property4({ type: String, attribute: "navigation-mode" })
205
- ], QtiTestPart.prototype, "NavigationMode", 2);
206
- __decorateClass([
207
- property4({ type: String, attribute: "submission-mode" })
208
- ], QtiTestPart.prototype, "submissionMode", 2);
209
- QtiTestPart = __decorateClass([
210
- customElement2("qti-test-part")
211
- ], QtiTestPart);
212
- if (!customElements.get("qti-test-part")) {
213
- customElements.define("qti-test-part", QtiTestPart);
214
- }
215
- export {
216
- QtiAssessmentItemRef,
217
- QtiAssessmentSection,
218
- QtiAssessmentTest,
219
- QtiTestPart
220
- };
221
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts","../../../src/lib/qti-test/context/test.context.ts","../../../src/lib/qti-test/qti-assessment-test/qti-assessment-section.ts","../../../src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts","../../../src/lib/qti-test/qti-assessment-test/qti-test-part.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\nimport { QtiAssessmentItem } from '../../qti-components';\n\n// Converter function to interpret \"true\" and \"false\" as booleans\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\n// @customElement('qti-assessment-item-ref')\nexport class QtiAssessmentItemRef extends LitElement {\n @property({ type: String }) category?: string;\n @property({ type: String }) identifier?: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) required?: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed?: boolean;\n @property({ type: String }) href?: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n weigths: Map<string, number> = new Map();\n\n @property({ type: Object, attribute: false })\n xmlDoc!: DocumentFragment; // the XMLDocument\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n get assessmentItem(): QtiAssessmentItem | null {\n return this.renderRoot?.querySelector('qti-assessment-item');\n }\n\n async connectedCallback(): Promise<void> {\n // debugger;\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-item-ref-connected', {\n bubbles: true,\n composed: true,\n detail: { identifier: this.identifier, href: this.href, category: this.category }\n })\n );\n }\n\n render() {\n return html`${this.xmlDoc}`;\n }\n}\n\nif (!customElements.get('qti-assessment-item-ref')) {\n customElements.define('qti-assessment-item-ref', QtiAssessmentItemRef);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-item-ref': QtiAssessmentItemRef;\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","import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\n\n// https://www.imsglobal.org/sites/default/files/spec/qti/v3/info/index.html#Root_AssessmentSection\n\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\nexport class QtiAssessmentSection extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) required: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed: boolean;\n @property({ type: String }) title: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) visible: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter, attribute: 'keep-together' }) keepTogether: boolean;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-assessment-section-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html`<slot name=\"qti-rubric-block\"></slot><slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-assessment-section')) {\n customElements.define('qti-assessment-section', QtiAssessmentSection);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-section': QtiAssessmentSection;\n }\n}\n","import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\n\n@customElement('qti-assessment-test')\nexport class QtiAssessmentTest extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) title: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-test-connected', {\n detail: this,\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-test': QtiAssessmentTest;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n@customElement('qti-test-part')\nexport class QtiTestPart extends LitElement {\n @property({ type: String }) identifier: string = '';\n @property({ type: String }) title: string = '';\n @property({ type: String }) class: string = '';\n\n @property({ type: String, attribute: 'navigation-mode' })\n NavigationMode: 'linear' | 'nonlinear' = 'nonlinear';\n\n @property({ type: String, attribute: 'submission-mode' })\n submissionMode: 'individual' | 'simultaneous' = 'individual';\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-test-part-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-test-part')) {\n customElements.define('qti-test-part', QtiTestPart);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-test-part': QtiTestPart;\n }\n}\n"],"mappings":"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","names":["consume","html","LitElement","property","stringToBooleanConverter","LitElement","html","property","consume","consume","html","LitElement","property","LitElement","html","property","consume","html","LitElement","customElement","property","LitElement","html","property","customElement"]}
@@ -1,6 +0,0 @@
1
- import 'lit-html';
2
- import 'lit';
3
- export { Q as QtiAssessmentItemRef } from '../../test-base-BJwG9Ie8.js';
4
- import '../../qti-simple-choice-DxWcdKHi.js';
5
- import './qti-test-part.js';
6
- import 'lit-html/directives/ref.js';
@@ -1,85 +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/qti-assessment-test/qti-assessment-item-ref.ts
13
- import { consume } from "@lit/context";
14
- import { html, LitElement } from "lit";
15
- import { property } from "lit/decorators.js";
16
-
17
- // src/lib/qti-test/context/test.context.ts
18
- import { createContext } from "@lit/context";
19
- var testContext = createContext(Symbol("test"));
20
- var testElement = createContext(Symbol("testElement"));
21
-
22
- // src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts
23
- var stringToBooleanConverter = {
24
- fromAttribute(value) {
25
- return value === "true";
26
- },
27
- toAttribute(value) {
28
- return value ? "true" : "false";
29
- }
30
- };
31
- var QtiAssessmentItemRef = class extends LitElement {
32
- constructor() {
33
- super(...arguments);
34
- this.weigths = /* @__PURE__ */ new Map();
35
- }
36
- // the XMLDocument
37
- createRenderRoot() {
38
- return this;
39
- }
40
- get assessmentItem() {
41
- return this.renderRoot?.querySelector("qti-assessment-item");
42
- }
43
- async connectedCallback() {
44
- super.connectedCallback();
45
- await this.updateComplete;
46
- this.dispatchEvent(
47
- new CustomEvent("qti-assessment-item-ref-connected", {
48
- bubbles: true,
49
- composed: true,
50
- detail: { identifier: this.identifier, href: this.href, category: this.category }
51
- })
52
- );
53
- }
54
- render() {
55
- return html`${this.xmlDoc}`;
56
- }
57
- };
58
- __decorateClass([
59
- property({ type: String })
60
- ], QtiAssessmentItemRef.prototype, "category", 2);
61
- __decorateClass([
62
- property({ type: String })
63
- ], QtiAssessmentItemRef.prototype, "identifier", 2);
64
- __decorateClass([
65
- property({ type: Boolean, converter: stringToBooleanConverter })
66
- ], QtiAssessmentItemRef.prototype, "required", 2);
67
- __decorateClass([
68
- property({ type: Boolean, converter: stringToBooleanConverter })
69
- ], QtiAssessmentItemRef.prototype, "fixed", 2);
70
- __decorateClass([
71
- property({ type: String })
72
- ], QtiAssessmentItemRef.prototype, "href", 2);
73
- __decorateClass([
74
- consume({ context: testContext, subscribe: true })
75
- ], QtiAssessmentItemRef.prototype, "_testContext", 2);
76
- __decorateClass([
77
- property({ type: Object, attribute: false })
78
- ], QtiAssessmentItemRef.prototype, "xmlDoc", 2);
79
- if (!customElements.get("qti-assessment-item-ref")) {
80
- customElements.define("qti-assessment-item-ref", QtiAssessmentItemRef);
81
- }
82
- export {
83
- QtiAssessmentItemRef
84
- };
85
- //# sourceMappingURL=qti-assessment-item-ref.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts","../../../src/lib/qti-test/context/test.context.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\nimport { QtiAssessmentItem } from '../../qti-components';\n\n// Converter function to interpret \"true\" and \"false\" as booleans\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\n// @customElement('qti-assessment-item-ref')\nexport class QtiAssessmentItemRef extends LitElement {\n @property({ type: String }) category?: string;\n @property({ type: String }) identifier?: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) required?: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed?: boolean;\n @property({ type: String }) href?: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n weigths: Map<string, number> = new Map();\n\n @property({ type: Object, attribute: false })\n xmlDoc!: DocumentFragment; // the XMLDocument\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n get assessmentItem(): QtiAssessmentItem | null {\n return this.renderRoot?.querySelector('qti-assessment-item');\n }\n\n async connectedCallback(): Promise<void> {\n // debugger;\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-item-ref-connected', {\n bubbles: true,\n composed: true,\n detail: { identifier: this.identifier, href: this.href, category: this.category }\n })\n );\n }\n\n render() {\n return html`${this.xmlDoc}`;\n }\n}\n\nif (!customElements.get('qti-assessment-item-ref')) {\n customElements.define('qti-assessment-item-ref', QtiAssessmentItemRef);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-item-ref': QtiAssessmentItemRef;\n }\n}\n","import { createContext } from '@lit/context';\nimport { QtiAssessmentTest } from '../qti-assessment-test';\nimport { ItemContext, VariableDeclaration } from '../../qti-components';\nimport { View } from '../mixins/test-view.mixin';\n\nexport interface TestContext {\n items: (ItemContext & { category?: string })[];\n testOutcomeVariables: VariableDeclaration<string | string[]>[];\n navPartId?: string | null;\n navSectionId?: string | null;\n navItemId?: string | null;\n navItemLoading?: boolean;\n navTestLoading?: boolean;\n view?: View;\n}\n\nexport const testContext = createContext<Readonly<TestContext>>(Symbol('test'));\n\nexport type TestElement = {\n el: QtiAssessmentTest;\n};\n\nexport const testElement = createContext<Readonly<TestElement>>(Symbol('testElement'));\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,gBAAgB;;;ACFzB,SAAS,qBAAqB;AAgBvB,IAAM,cAAc,cAAqC,OAAO,MAAM,CAAC;AAMvE,IAAM,cAAc,cAAqC,OAAO,aAAa,CAAC;;;ADfrF,IAAM,2BAA2B;AAAA,EAC/B,cAAc,OAAwB;AACpC,WAAO,UAAU;AAAA,EACnB;AAAA,EACA,YAAY,OAAwB;AAClC,WAAO,QAAQ,SAAS;AAAA,EAC1B;AACF;AAGO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAA9C;AAAA;AAUL,mBAA+B,oBAAI,IAAI;AAAA;AAAA;AAAA,EAK7B,mBAAmD;AAC3D,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,iBAA2C;AAC7C,WAAO,KAAK,YAAY,cAAc,qBAAqB;AAAA,EAC7D;AAAA,EAEA,MAAM,oBAAmC;AAEvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,YAAY,qCAAqC;AAAA,QACnD,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,EAAE,YAAY,KAAK,YAAY,MAAM,KAAK,MAAM,UAAU,KAAK,SAAS;AAAA,MAClF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO,OAAO,KAAK,MAAM;AAAA,EAC3B;AACF;AAtC8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,qBACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,qBAEiB;AACsC;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GAHrD,qBAGuD;AACA;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GAJrD,qBAIuD;AACtC;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,qBAKiB;AAGrB;AAAA,EADN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAPvC,qBAQJ;AAKP;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,MAAM,CAAC;AAAA,GAZjC,qBAaX;AA4BF,IAAI,CAAC,eAAe,IAAI,yBAAyB,GAAG;AAClD,iBAAe,OAAO,2BAA2B,oBAAoB;AACvE;","names":[]}
@@ -1,6 +0,0 @@
1
- import 'lit-html';
2
- import 'lit';
3
- export { a as QtiAssessmentSection } from '../../test-base-BJwG9Ie8.js';
4
- import './qti-test-part.js';
5
- import '../../qti-simple-choice-DxWcdKHi.js';
6
- import 'lit-html/directives/ref.js';