@citolab/qti-components 7.3.19 → 7.3.21

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 (556) hide show
  1. package/cdn/chunks/chunk-26QYN3JJ.js +1482 -0
  2. package/cdn/chunks/chunk-2BSPQRNR.js +6 -0
  3. package/cdn/chunks/chunk-2IJBTWWT.js +2 -0
  4. package/cdn/chunks/chunk-2N2XIR3B.js +5 -0
  5. package/cdn/chunks/chunk-2PXIZTCM.js +1 -0
  6. package/cdn/chunks/chunk-3BPUHYAN.js +1 -0
  7. package/cdn/chunks/chunk-3CVBBZDT.js +17 -0
  8. package/cdn/chunks/chunk-3H3ITD2Q.js +5 -0
  9. package/cdn/chunks/chunk-3IBGLVHA.js +1 -0
  10. package/cdn/chunks/chunk-3PVCPEFY.js +5 -0
  11. package/cdn/chunks/chunk-3WY3AI3D.js +1482 -0
  12. package/cdn/chunks/chunk-3YF52BZZ.js +41 -0
  13. package/cdn/chunks/chunk-3ZFHDJHW.js +3636 -0
  14. package/cdn/chunks/chunk-426N5A5I.js +1 -0
  15. package/cdn/chunks/chunk-453G3A34.js +8 -0
  16. package/cdn/chunks/chunk-4AGE7DVK.js +48 -0
  17. package/cdn/chunks/chunk-4DXCBZFR.js +3698 -0
  18. package/cdn/chunks/chunk-4FBS7ODL.js +6 -0
  19. package/cdn/chunks/chunk-4IWCVQQJ.js +8 -0
  20. package/cdn/chunks/chunk-4YPL4JG2.js +1 -0
  21. package/cdn/chunks/chunk-522JFYKC.js +6 -0
  22. package/cdn/chunks/chunk-5ICSVSCW.js +1482 -0
  23. package/cdn/chunks/chunk-5L5JXKEA.js +1 -0
  24. package/cdn/chunks/chunk-5TEGKCEI.js +48 -0
  25. package/cdn/chunks/chunk-5WLHU3FH.js +8 -0
  26. package/cdn/chunks/chunk-5WPKWVLA.js +1 -0
  27. package/cdn/chunks/chunk-63C5YDWF.js +1482 -0
  28. package/cdn/chunks/chunk-6ELXCFB2.js +1 -0
  29. package/cdn/chunks/chunk-6FSYASNZ.js +1 -0
  30. package/cdn/chunks/chunk-6H26KONO.js +1482 -0
  31. package/cdn/chunks/chunk-6OUX6PKB.js +5 -0
  32. package/cdn/chunks/chunk-6Q3S6QYF.js +1471 -0
  33. package/cdn/chunks/chunk-6SGFGN34.js +8 -0
  34. package/cdn/chunks/chunk-6XVY32RS.js +1 -0
  35. package/cdn/chunks/chunk-6ZE2IMSJ.js +1471 -0
  36. package/cdn/chunks/chunk-73RDXCTO.js +1 -0
  37. package/cdn/chunks/chunk-73YTM4JU.js +8 -0
  38. package/cdn/chunks/chunk-74FJHIJ5.js +8 -0
  39. package/cdn/chunks/chunk-77U2O27N.js +1 -0
  40. package/cdn/chunks/chunk-7AX6K3VW.js +1 -0
  41. package/cdn/chunks/chunk-7LCGB3GF.js +6 -0
  42. package/cdn/chunks/chunk-7NHDLON4.js +5 -0
  43. package/cdn/chunks/chunk-A57EJSRU.js +1 -0
  44. package/cdn/chunks/chunk-AAZIKH5Z.js +3650 -0
  45. package/cdn/chunks/chunk-AMJIIPBQ.js +48 -0
  46. package/cdn/chunks/chunk-ARUVWWSO.js +5 -0
  47. package/cdn/chunks/chunk-BGFVQO5N.js +8 -0
  48. package/cdn/chunks/chunk-BGWSUBMK.js +1482 -0
  49. package/cdn/chunks/chunk-BRXZ5HLX.js +8 -0
  50. package/cdn/chunks/chunk-BSBPPIVO.js +5 -0
  51. package/cdn/chunks/chunk-BUGBHX3F.js +5 -0
  52. package/cdn/chunks/chunk-BURSTFDF.js +2 -0
  53. package/cdn/chunks/chunk-BXEEPJPF.js +48 -0
  54. package/cdn/chunks/chunk-BXTNMGCF.js +1 -0
  55. package/cdn/chunks/chunk-C25DJHRW.js +5 -0
  56. package/cdn/chunks/chunk-C3XRHLQX.js +1 -0
  57. package/cdn/chunks/chunk-C7AO3IVZ.js +48 -0
  58. package/cdn/chunks/chunk-CGI4LREF.js +1 -0
  59. package/cdn/chunks/chunk-CLAUENYE.js +8 -0
  60. package/cdn/chunks/chunk-CTNAGYH7.js +1 -0
  61. package/cdn/chunks/chunk-DD55IQIL.js +6 -0
  62. package/cdn/chunks/chunk-DESMFZJW.js +5 -0
  63. package/cdn/chunks/chunk-DHNKVZRG.js +1 -0
  64. package/cdn/chunks/chunk-DNBBQ7LY.js +1 -0
  65. package/cdn/chunks/chunk-DP5FVJRS.js +21 -0
  66. package/cdn/chunks/chunk-DXF4ZBJ2.js +1 -0
  67. package/cdn/chunks/chunk-E2UBGM45.js +1 -0
  68. package/cdn/chunks/chunk-E46BCOOW.js +1 -0
  69. package/cdn/chunks/chunk-EGFC4XQG.js +5 -0
  70. package/cdn/chunks/chunk-EINATJIA.js +1 -0
  71. package/cdn/chunks/chunk-EQ4LUVQK.js +8 -0
  72. package/cdn/chunks/chunk-EXMUQYL6.js +5 -0
  73. package/cdn/chunks/chunk-EXVHRHST.js +8 -0
  74. package/cdn/chunks/chunk-FC7HXYUV.js +8 -0
  75. package/cdn/chunks/chunk-FDV6POVV.js +6 -0
  76. package/cdn/chunks/chunk-FEJUVLN4.js +6 -0
  77. package/cdn/chunks/chunk-FLQBFTRW.js +37 -0
  78. package/cdn/chunks/chunk-FOE7HRKJ.js +10 -0
  79. package/cdn/chunks/chunk-FUGKKQ6E.js +1 -0
  80. package/cdn/chunks/chunk-FWFPMNDO.js +5 -0
  81. package/cdn/chunks/chunk-FYXNIYGH.js +1 -0
  82. package/cdn/chunks/chunk-G2DN6BDN.js +8 -0
  83. package/cdn/chunks/chunk-GBAAEAYK.js +5 -0
  84. package/cdn/chunks/chunk-GDRPZEZJ.js +5 -0
  85. package/cdn/chunks/chunk-GFO3YUEH.js +1 -0
  86. package/cdn/chunks/chunk-GFXQHIPI.js +1482 -0
  87. package/cdn/chunks/chunk-GY74IPZ2.js +8 -0
  88. package/cdn/chunks/chunk-HA6MFZZU.js +48 -0
  89. package/cdn/chunks/chunk-HAE5ZHID.js +1 -0
  90. package/cdn/chunks/chunk-HCXHHI6V.js +18 -0
  91. package/cdn/chunks/chunk-HDMF4QZO.js +48 -0
  92. package/cdn/chunks/chunk-HHALXPVF.js +5 -0
  93. package/cdn/chunks/chunk-HKUIQBCM.js +1 -0
  94. package/cdn/chunks/chunk-HKWYQB5Z.js +37 -0
  95. package/cdn/chunks/chunk-HO6JOQX4.js +25 -0
  96. package/cdn/chunks/chunk-HPX7CBTS.js +1 -0
  97. package/cdn/chunks/chunk-HTH5YCZO.js +8 -0
  98. package/cdn/chunks/chunk-I3PDGPL6.js +48 -0
  99. package/cdn/chunks/chunk-I4G5VXGD.js +5 -0
  100. package/cdn/chunks/chunk-IHVTWACH.js +8 -0
  101. package/cdn/chunks/chunk-IJBHBPIR.js +1 -0
  102. package/cdn/chunks/chunk-ILEDSBLL.js +8 -0
  103. package/cdn/chunks/chunk-IPISUVWE.js +8 -0
  104. package/cdn/chunks/chunk-IYZLVTNL.js +5 -0
  105. package/cdn/chunks/chunk-J3NAMJRF.js +55 -0
  106. package/cdn/chunks/chunk-J5P2GBPV.js +1 -0
  107. package/cdn/chunks/chunk-JHMA3APO.js +3638 -0
  108. package/cdn/chunks/chunk-JJNOTSC4.js +5 -0
  109. package/cdn/chunks/chunk-JVPQQZNX.js +5 -0
  110. package/cdn/chunks/chunk-JYF2SOPC.js +6 -0
  111. package/cdn/chunks/chunk-K42MGICV.js +1 -0
  112. package/cdn/chunks/chunk-K7NB4LHE.js +1 -0
  113. package/cdn/chunks/chunk-KASON6Y7.js +17 -0
  114. package/cdn/chunks/chunk-KKQK6WIG.js +1 -0
  115. package/cdn/chunks/chunk-KP6MWEDW.js +5 -0
  116. package/cdn/chunks/chunk-KWDCU3P6.js +1482 -0
  117. package/cdn/chunks/chunk-KY3OKCFK.js +8 -0
  118. package/cdn/chunks/chunk-LBMZYOKF.js +8 -0
  119. package/cdn/chunks/chunk-LC7KE332.js +1 -0
  120. package/cdn/chunks/chunk-LIUOA3YV.js +1 -0
  121. package/cdn/chunks/chunk-LO2NM3CE.js +1 -0
  122. package/cdn/chunks/chunk-LO4MJ72X.js +8 -0
  123. package/cdn/chunks/chunk-LRGALTZX.js +1 -0
  124. package/cdn/chunks/chunk-LRIOWAOJ.js +8 -0
  125. package/cdn/chunks/chunk-LS3OPHR4.js +8 -0
  126. package/cdn/chunks/chunk-LVKOQVTZ.js +17 -0
  127. package/cdn/chunks/chunk-M4VO4BD3.js +1471 -0
  128. package/cdn/chunks/chunk-M53CKFQE.js +5 -0
  129. package/cdn/chunks/chunk-M5UOISZJ.js +1482 -0
  130. package/cdn/chunks/chunk-MAPVFADC.js +5 -0
  131. package/cdn/chunks/chunk-MD33BNWM.js +1 -0
  132. package/cdn/chunks/chunk-MICRS5DH.js +8 -0
  133. package/cdn/chunks/chunk-MLEUGPRW.js +8 -0
  134. package/cdn/chunks/chunk-MM76ZODZ.js +8 -0
  135. package/cdn/chunks/chunk-MQVMYZ75.js +1 -0
  136. package/cdn/chunks/chunk-MRQ46JRY.js +8 -0
  137. package/cdn/chunks/chunk-MSOBQUON.js +10 -0
  138. package/cdn/chunks/chunk-MVGI4SNI.js +17 -0
  139. package/cdn/chunks/chunk-MYXD4BOJ.js +2 -0
  140. package/cdn/chunks/chunk-MZRZP33C.js +1 -0
  141. package/cdn/chunks/chunk-NDMZ2RAB.js +48 -0
  142. package/cdn/chunks/chunk-NHHA3O6Y.js +1 -0
  143. package/cdn/chunks/chunk-NJ3OVLBF.js +1 -0
  144. package/cdn/chunks/chunk-NJP4VZB3.js +8 -0
  145. package/cdn/chunks/chunk-NO3TZB6T.js +5 -0
  146. package/cdn/chunks/chunk-NRY6IJSD.js +5 -0
  147. package/cdn/chunks/chunk-NVZTYSGS.js +1 -0
  148. package/cdn/chunks/chunk-NXQQIB7Y.js +5 -0
  149. package/cdn/chunks/chunk-O4RAJ3LM.js +25 -0
  150. package/cdn/chunks/chunk-OENDUEU2.js +5 -0
  151. package/cdn/chunks/chunk-OEZI5WCY.js +18 -0
  152. package/cdn/chunks/chunk-ON6ISIIV.js +1 -0
  153. package/cdn/chunks/chunk-OOEY4RSQ.js +1 -0
  154. package/cdn/chunks/chunk-OR67S36X.js +5 -0
  155. package/cdn/chunks/chunk-OSLUHYFD.js +8 -0
  156. package/cdn/chunks/chunk-OUQFWBVG.js +8 -0
  157. package/cdn/chunks/chunk-P6L4B5GC.js +1 -0
  158. package/cdn/chunks/chunk-PF74FX32.js +1 -0
  159. package/cdn/chunks/chunk-PFCJVHJ3.js +10 -0
  160. package/cdn/chunks/chunk-PMYTST5N.js +17 -0
  161. package/cdn/chunks/chunk-PP62N3C4.js +8 -0
  162. package/cdn/chunks/chunk-PPSGCGRR.js +8 -0
  163. package/cdn/chunks/chunk-PQLJWD6V.js +21 -0
  164. package/cdn/chunks/chunk-PTQFS3S5.js +2 -0
  165. package/cdn/chunks/chunk-PU7OABT3.js +1 -0
  166. package/cdn/chunks/chunk-Q2CKZUYX.js +1 -0
  167. package/cdn/chunks/chunk-Q4EENVQD.js +1 -0
  168. package/cdn/chunks/chunk-Q64V7VQU.js +1 -0
  169. package/cdn/chunks/chunk-QCDT25GU.js +8 -0
  170. package/cdn/chunks/chunk-QEFO63QX.js +8 -0
  171. package/cdn/chunks/chunk-QIZBL4QP.js +1 -0
  172. package/cdn/chunks/chunk-QYCLNTAQ.js +1 -0
  173. package/cdn/chunks/chunk-RGNFAPWY.js +2 -0
  174. package/cdn/chunks/chunk-RHEBGA4B.js +1 -0
  175. package/cdn/chunks/chunk-RQSAQ6H4.js +1 -0
  176. package/cdn/chunks/chunk-RTVTE2XY.js +1482 -0
  177. package/cdn/chunks/chunk-S5QDLZ6J.js +1 -0
  178. package/cdn/chunks/chunk-SBACDLL6.js +73 -0
  179. package/cdn/chunks/chunk-SBWSYKE5.js +5 -0
  180. package/cdn/chunks/chunk-SVWD3DJK.js +1 -0
  181. package/cdn/chunks/chunk-SXRIA7VB.js +8 -0
  182. package/cdn/chunks/chunk-SYTQX5DA.js +1 -0
  183. package/cdn/chunks/chunk-TLK5RNXE.js +1 -0
  184. package/cdn/chunks/chunk-TOK64KBR.js +5 -0
  185. package/cdn/chunks/chunk-TR7WXOQR.js +1 -0
  186. package/cdn/chunks/chunk-UMDZKG6K.js +1 -0
  187. package/cdn/chunks/chunk-UNK5GKOK.js +5 -0
  188. package/cdn/chunks/chunk-V2AJKKRF.js +1470 -0
  189. package/cdn/chunks/chunk-V3EJROZX.js +3649 -0
  190. package/cdn/chunks/chunk-VEG7LKS3.js +48 -0
  191. package/cdn/chunks/chunk-VNZCEVYY.js +24 -0
  192. package/cdn/chunks/chunk-VQ2JX2OE.js +5 -0
  193. package/cdn/chunks/chunk-VUJWHOI6.js +1482 -0
  194. package/cdn/chunks/chunk-W73FT5JE.js +48 -0
  195. package/cdn/chunks/chunk-W7O6UFTQ.js +5 -0
  196. package/cdn/chunks/chunk-WCCTDLQ4.js +8 -0
  197. package/cdn/chunks/chunk-WOKUXDJR.js +8 -0
  198. package/cdn/chunks/chunk-WPXZSIUM.js +5 -0
  199. package/cdn/chunks/chunk-WTUHCDEZ.js +10 -0
  200. package/cdn/chunks/chunk-WV5B4HNF.js +1471 -0
  201. package/cdn/chunks/chunk-WWMMW7RJ.js +1 -0
  202. package/cdn/chunks/chunk-X3JAXGAZ.js +8 -0
  203. package/cdn/chunks/chunk-X4FA36TC.js +1 -0
  204. package/cdn/chunks/chunk-XA25EXKN.js +1 -0
  205. package/cdn/chunks/chunk-XBLYTLX6.js +5 -0
  206. package/cdn/chunks/chunk-XH36X5UJ.js +1482 -0
  207. package/cdn/chunks/chunk-XJ2CFTZP.js +1 -0
  208. package/cdn/chunks/chunk-XJWUPDZ4.js +10 -0
  209. package/cdn/chunks/chunk-XMKJLLUL.js +1 -0
  210. package/cdn/chunks/chunk-XMS6AFBV.js +5 -0
  211. package/cdn/chunks/chunk-XSVPZFGN.js +1 -0
  212. package/cdn/chunks/chunk-XYWB7S55.js +1482 -0
  213. package/cdn/chunks/chunk-Y2P4IF3E.js +1 -0
  214. package/cdn/chunks/chunk-Y3BICHQ5.js +6 -0
  215. package/cdn/chunks/chunk-YCBNF5QU.js +17 -0
  216. package/cdn/chunks/chunk-YEGYR7SL.js +5 -0
  217. package/cdn/chunks/chunk-YEK2E3FB.js +8 -0
  218. package/cdn/chunks/chunk-YHLQ2JQ2.js +1 -0
  219. package/cdn/chunks/chunk-YIRZSKIP.js +2 -0
  220. package/cdn/chunks/chunk-YM5QNYGZ.js +5 -0
  221. package/cdn/chunks/chunk-YOTJAW26.js +6 -0
  222. package/cdn/chunks/chunk-Z7KIJX7V.js +1482 -0
  223. package/cdn/chunks/chunk-ZCQFKXZ3.js +48 -0
  224. package/cdn/chunks/chunk-ZKOKGZBL.js +5 -0
  225. package/cdn/chunks/chunk-ZO5G6CHW.js +1470 -0
  226. package/cdn/chunks/chunk-ZPCQH3EY.js +10 -0
  227. package/cdn/chunks/chunk-ZUQ72RIQ.js +8 -0
  228. package/cdn/chunks/chunk-ZZNCHSYH.js +5 -0
  229. package/cdn/exports/computed-item.context.js +1 -1
  230. package/cdn/exports/computed.context.js +1 -1
  231. package/cdn/exports/config.context.js +1 -1
  232. package/cdn/exports/interaction.js +1 -1
  233. package/cdn/exports/item.context.js +1 -1
  234. package/cdn/exports/qti-assessment-item.context.js +1 -1
  235. package/cdn/exports/qti-condition-expression.js +1 -1
  236. package/cdn/exports/qti-expression.js +1 -1
  237. package/cdn/exports/qti.context.js +1 -0
  238. package/cdn/exports/session.context.js +1 -1
  239. package/cdn/exports/test.context.js +1 -1
  240. package/cdn/index.global.js +1 -1
  241. package/cdn/index.js +1 -1
  242. package/cdn/qti-components/index.js +1 -1
  243. package/cdn/qti-item/components/item-container.js +1 -1
  244. package/cdn/qti-item/components/item-correct-response-mode.js +10 -0
  245. package/cdn/qti-item/components/item-show-candidate-correction.js +8 -0
  246. package/cdn/qti-item/components/item-show-correct-response.js +1 -1
  247. package/cdn/qti-item/components/print-item-variables.js +1 -1
  248. package/cdn/qti-item/components/styles.js +1 -1
  249. package/cdn/qti-item/core/index.js +1 -1
  250. package/cdn/qti-loader/index.js +1 -1
  251. package/cdn/qti-test/components/index.js +1 -1
  252. package/cdn/qti-test/components/styles.js +1 -1
  253. package/cdn/qti-test/components/test-check-item.js +1 -1
  254. package/cdn/qti-test/components/test-container.js +1 -1
  255. package/cdn/qti-test/components/test-end-attempt.js +1 -1
  256. package/cdn/qti-test/components/test-item-link.js +1 -1
  257. package/cdn/qti-test/components/test-navigation.js +1 -1
  258. package/cdn/qti-test/components/test-next.js +1 -1
  259. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
  260. package/cdn/qti-test/components/test-prev.js +1 -1
  261. package/cdn/qti-test/components/test-print-context.js +1 -1
  262. package/cdn/qti-test/components/test-print-item-variables.js +1 -1
  263. package/cdn/qti-test/components/test-scoring-buttons.js +1 -1
  264. package/cdn/qti-test/components/test-scoring-feedback.js +1 -1
  265. package/cdn/qti-test/components/test-section-buttons-stamp.js +1 -1
  266. package/cdn/qti-test/components/test-section-link.js +1 -1
  267. package/cdn/qti-test/components/test-show-correct-response.js +1 -1
  268. package/cdn/qti-test/components/test-stamp.js +1 -1
  269. package/cdn/qti-test/components/test-view-toggle.js +1 -1
  270. package/cdn/qti-test/components/test-view.js +1 -1
  271. package/cdn/qti-test/core/index.js +1 -1
  272. package/cdn/qti-transformers/index.js +1 -1
  273. package/dist/chunks/chunk-32TQEF77.js +142 -0
  274. package/dist/chunks/chunk-32TQEF77.js.map +1 -0
  275. package/dist/chunks/chunk-34THNRGC.js +8093 -0
  276. package/dist/chunks/chunk-34THNRGC.js.map +1 -0
  277. package/dist/chunks/chunk-3JJM4BKK.js +367 -0
  278. package/dist/chunks/chunk-3JJM4BKK.js.map +1 -0
  279. package/dist/chunks/chunk-3LX4O663.js +3688 -0
  280. package/dist/chunks/chunk-3LX4O663.js.map +1 -0
  281. package/dist/chunks/chunk-3O3BVPXQ.js +8655 -0
  282. package/dist/chunks/chunk-3O3BVPXQ.js.map +1 -0
  283. package/dist/chunks/chunk-3SABVS4P.js +19 -0
  284. package/dist/chunks/chunk-3SABVS4P.js.map +1 -0
  285. package/dist/chunks/chunk-4A6SHFWN.js +8093 -0
  286. package/dist/chunks/chunk-4A6SHFWN.js.map +1 -0
  287. package/dist/chunks/chunk-4D3G23AV.js +94 -0
  288. package/dist/chunks/chunk-4D3G23AV.js.map +1 -0
  289. package/dist/chunks/chunk-4PG2PZHY.js +8924 -0
  290. package/dist/chunks/chunk-4PG2PZHY.js.map +1 -0
  291. package/dist/chunks/chunk-55C6NAK5.js +142 -0
  292. package/dist/chunks/chunk-55C6NAK5.js.map +1 -0
  293. package/dist/chunks/chunk-565QP4OA.js +94 -0
  294. package/dist/chunks/chunk-565QP4OA.js.map +1 -0
  295. package/dist/chunks/chunk-5MAENJ2J.js +913 -0
  296. package/dist/chunks/chunk-5MAENJ2J.js.map +1 -0
  297. package/dist/chunks/chunk-5P64MALP.js +3640 -0
  298. package/dist/chunks/chunk-5P64MALP.js.map +1 -0
  299. package/dist/chunks/chunk-65YQSKWV.js +94 -0
  300. package/dist/chunks/chunk-65YQSKWV.js.map +1 -0
  301. package/dist/chunks/chunk-6EQ4U5EP.js +142 -0
  302. package/dist/chunks/chunk-6EQ4U5EP.js.map +1 -0
  303. package/dist/chunks/chunk-6NLDLAQA.js +367 -0
  304. package/dist/chunks/chunk-6NLDLAQA.js.map +1 -0
  305. package/dist/chunks/chunk-6OB2U3VU.js +287 -0
  306. package/dist/chunks/chunk-6OB2U3VU.js.map +1 -0
  307. package/dist/chunks/chunk-7XIK3UQX.js +3628 -0
  308. package/dist/chunks/chunk-7XIK3UQX.js.map +1 -0
  309. package/dist/chunks/chunk-7Z7KA2QQ.js +142 -0
  310. package/dist/chunks/chunk-7Z7KA2QQ.js.map +1 -0
  311. package/dist/chunks/chunk-ARBFS6D6.js +8924 -0
  312. package/dist/chunks/chunk-ARBFS6D6.js.map +1 -0
  313. package/dist/chunks/chunk-AVMYQQT2.js +94 -0
  314. package/dist/chunks/chunk-AVMYQQT2.js.map +1 -0
  315. package/dist/chunks/chunk-B2IUQFUU.js +913 -0
  316. package/dist/chunks/chunk-B2IUQFUU.js.map +1 -0
  317. package/dist/chunks/chunk-B2O3YM5H.js +8093 -0
  318. package/dist/chunks/chunk-B2O3YM5H.js.map +1 -0
  319. package/dist/chunks/chunk-D2VLZ4I5.js +8755 -0
  320. package/dist/chunks/chunk-D2VLZ4I5.js.map +1 -0
  321. package/dist/chunks/chunk-DDSFGYAK.js +913 -0
  322. package/dist/chunks/chunk-DDSFGYAK.js.map +1 -0
  323. package/dist/chunks/chunk-DJUWVE3Q.js +8655 -0
  324. package/dist/chunks/chunk-DJUWVE3Q.js.map +1 -0
  325. package/dist/chunks/chunk-DPJNXSTI.js +19 -0
  326. package/dist/chunks/chunk-DPJNXSTI.js.map +1 -0
  327. package/dist/chunks/chunk-E7DT7SMT.js +8655 -0
  328. package/dist/chunks/chunk-E7DT7SMT.js.map +1 -0
  329. package/dist/chunks/chunk-EB3ZESWL.js +367 -0
  330. package/dist/chunks/chunk-EB3ZESWL.js.map +1 -0
  331. package/dist/chunks/chunk-EBODGAT7.js +113 -0
  332. package/dist/chunks/chunk-EBODGAT7.js.map +1 -0
  333. package/dist/chunks/chunk-EMOJR4QG.js +913 -0
  334. package/dist/chunks/chunk-EMOJR4QG.js.map +1 -0
  335. package/dist/chunks/chunk-ERYHQVOT.js +8 -0
  336. package/dist/chunks/chunk-ERYHQVOT.js.map +1 -0
  337. package/dist/chunks/chunk-F6RSPPVW.js +94 -0
  338. package/dist/chunks/chunk-F6RSPPVW.js.map +1 -0
  339. package/dist/chunks/chunk-FL72PF4D.js +19 -0
  340. package/dist/chunks/chunk-FL72PF4D.js.map +1 -0
  341. package/dist/chunks/chunk-GFCOR6TX.js +146 -0
  342. package/dist/chunks/chunk-GFCOR6TX.js.map +1 -0
  343. package/dist/chunks/chunk-GMXDW4I3.js +913 -0
  344. package/dist/chunks/chunk-GMXDW4I3.js.map +1 -0
  345. package/dist/chunks/chunk-GQUBYVP3.js +913 -0
  346. package/dist/chunks/chunk-GQUBYVP3.js.map +1 -0
  347. package/dist/chunks/chunk-H6KHXSIO.js +8 -0
  348. package/dist/chunks/chunk-H6KHXSIO.js.map +1 -0
  349. package/dist/chunks/chunk-HEP5QRPW.js +94 -0
  350. package/dist/chunks/chunk-HEP5QRPW.js.map +1 -0
  351. package/dist/chunks/chunk-HFAUM56X.js +208 -0
  352. package/dist/chunks/chunk-HFAUM56X.js.map +1 -0
  353. package/dist/chunks/chunk-HYMSLOZ7.js +103 -0
  354. package/dist/chunks/chunk-HYMSLOZ7.js.map +1 -0
  355. package/dist/chunks/chunk-IAEGLQ4C.js +144 -0
  356. package/dist/chunks/chunk-IAEGLQ4C.js.map +1 -0
  357. package/dist/chunks/chunk-J2HZTWER.js +8093 -0
  358. package/dist/chunks/chunk-J2HZTWER.js.map +1 -0
  359. package/dist/chunks/chunk-JARLFKS7.js +913 -0
  360. package/dist/chunks/chunk-JARLFKS7.js.map +1 -0
  361. package/dist/chunks/chunk-JATNQ3KB.js +913 -0
  362. package/dist/chunks/chunk-JATNQ3KB.js.map +1 -0
  363. package/dist/chunks/chunk-JOASLKRQ.js +914 -0
  364. package/dist/chunks/chunk-JOASLKRQ.js.map +1 -0
  365. package/dist/chunks/chunk-K4QJBUIX.js +367 -0
  366. package/dist/chunks/chunk-K4QJBUIX.js.map +1 -0
  367. package/dist/chunks/chunk-KCTFNJO4.js +8748 -0
  368. package/dist/chunks/chunk-KCTFNJO4.js.map +1 -0
  369. package/dist/chunks/chunk-KJQYKXDV.js +173 -0
  370. package/dist/chunks/chunk-KJQYKXDV.js.map +1 -0
  371. package/dist/chunks/chunk-KXVYWSJU.js +8068 -0
  372. package/dist/chunks/chunk-KXVYWSJU.js.map +1 -0
  373. package/dist/chunks/chunk-KYN4AAHS.js +8839 -0
  374. package/dist/chunks/chunk-KYN4AAHS.js.map +1 -0
  375. package/dist/chunks/chunk-LUZGWGSR.js +913 -0
  376. package/dist/chunks/chunk-LUZGWGSR.js.map +1 -0
  377. package/dist/chunks/chunk-MI7IF36Z.js +367 -0
  378. package/dist/chunks/chunk-MI7IF36Z.js.map +1 -0
  379. package/dist/chunks/chunk-MLRMRXGZ.js +367 -0
  380. package/dist/chunks/chunk-MLRMRXGZ.js.map +1 -0
  381. package/dist/chunks/chunk-MOBVIJE2.js +913 -0
  382. package/dist/chunks/chunk-MOBVIJE2.js.map +1 -0
  383. package/dist/chunks/chunk-MOIHNOX3.js +94 -0
  384. package/dist/chunks/chunk-MOIHNOX3.js.map +1 -0
  385. package/dist/chunks/chunk-NJ5O743W.js +311 -0
  386. package/dist/chunks/chunk-NJ5O743W.js.map +1 -0
  387. package/dist/chunks/chunk-NMQ4USN7.js +913 -0
  388. package/dist/chunks/chunk-NMQ4USN7.js.map +1 -0
  389. package/dist/chunks/chunk-NRKCQIQS.js +8 -0
  390. package/dist/chunks/chunk-NRKCQIQS.js.map +1 -0
  391. package/dist/chunks/chunk-NRNSOUTF.js +913 -0
  392. package/dist/chunks/chunk-NRNSOUTF.js.map +1 -0
  393. package/dist/chunks/chunk-OBAABB63.js +8093 -0
  394. package/dist/chunks/chunk-OBAABB63.js.map +1 -0
  395. package/dist/chunks/chunk-OREGQJ7H.js +19 -0
  396. package/dist/chunks/chunk-OREGQJ7H.js.map +1 -0
  397. package/dist/chunks/chunk-P2PRB5IZ.js +94 -0
  398. package/dist/chunks/chunk-P2PRB5IZ.js.map +1 -0
  399. package/dist/chunks/chunk-PF5X3SZR.js +94 -0
  400. package/dist/chunks/chunk-PF5X3SZR.js.map +1 -0
  401. package/dist/chunks/chunk-QCB6P7DH.js +146 -0
  402. package/dist/chunks/chunk-QCB6P7DH.js.map +1 -0
  403. package/dist/chunks/chunk-QU7KR7VX.js +367 -0
  404. package/dist/chunks/chunk-QU7KR7VX.js.map +1 -0
  405. package/dist/chunks/chunk-RJZ4D6XM.js +88 -0
  406. package/dist/chunks/chunk-RJZ4D6XM.js.map +1 -0
  407. package/dist/chunks/chunk-RTSIFU3A.js +8924 -0
  408. package/dist/chunks/chunk-RTSIFU3A.js.map +1 -0
  409. package/dist/chunks/chunk-S72IAWSO.js +8770 -0
  410. package/dist/chunks/chunk-S72IAWSO.js.map +1 -0
  411. package/dist/chunks/chunk-SDN2PXF7.js +94 -0
  412. package/dist/chunks/chunk-SDN2PXF7.js.map +1 -0
  413. package/dist/chunks/chunk-SRJF5RCP.js +8772 -0
  414. package/dist/chunks/chunk-SRJF5RCP.js.map +1 -0
  415. package/dist/chunks/chunk-SZ3DDAJ7.js +142 -0
  416. package/dist/chunks/chunk-SZ3DDAJ7.js.map +1 -0
  417. package/dist/chunks/chunk-SZTQ6IWR.js +8835 -0
  418. package/dist/chunks/chunk-SZTQ6IWR.js.map +1 -0
  419. package/dist/chunks/chunk-TBHIUG43.js +19 -0
  420. package/dist/chunks/chunk-TBHIUG43.js.map +1 -0
  421. package/dist/chunks/chunk-TDIRV53C.js +3626 -0
  422. package/dist/chunks/chunk-TDIRV53C.js.map +1 -0
  423. package/dist/chunks/chunk-TJNZKBEN.js +88 -0
  424. package/dist/chunks/chunk-TJNZKBEN.js.map +1 -0
  425. package/dist/chunks/chunk-UHQVQBCL.js +89 -0
  426. package/dist/chunks/chunk-UHQVQBCL.js.map +1 -0
  427. package/dist/chunks/chunk-UUM4KYBV.js +914 -0
  428. package/dist/chunks/chunk-UUM4KYBV.js.map +1 -0
  429. package/dist/chunks/chunk-V4L4ONOK.js +914 -0
  430. package/dist/chunks/chunk-V4L4ONOK.js.map +1 -0
  431. package/dist/chunks/chunk-V7ACRMW7.js +914 -0
  432. package/dist/chunks/chunk-V7ACRMW7.js.map +1 -0
  433. package/dist/chunks/chunk-V7DSDBTC.js +142 -0
  434. package/dist/chunks/chunk-V7DSDBTC.js.map +1 -0
  435. package/dist/chunks/chunk-VCFCYQB4.js +315 -0
  436. package/dist/chunks/chunk-VCFCYQB4.js.map +1 -0
  437. package/dist/chunks/chunk-WEKBCXNI.js +8839 -0
  438. package/dist/chunks/chunk-WEKBCXNI.js.map +1 -0
  439. package/dist/chunks/chunk-WN6TJQI2.js +103 -0
  440. package/dist/chunks/chunk-WN6TJQI2.js.map +1 -0
  441. package/dist/chunks/chunk-WUSKUUQL.js +3639 -0
  442. package/dist/chunks/chunk-WUSKUUQL.js.map +1 -0
  443. package/dist/chunks/chunk-WVB7FS2F.js +913 -0
  444. package/dist/chunks/chunk-WVB7FS2F.js.map +1 -0
  445. package/dist/chunks/chunk-WY5BKP4C.js +19 -0
  446. package/dist/chunks/chunk-WY5BKP4C.js.map +1 -0
  447. package/dist/chunks/chunk-XFJJETQG.js +913 -0
  448. package/dist/chunks/chunk-XFJJETQG.js.map +1 -0
  449. package/dist/chunks/chunk-XM2JOPVU.js +914 -0
  450. package/dist/chunks/chunk-XM2JOPVU.js.map +1 -0
  451. package/dist/chunks/chunk-XNMAPACM.js +19 -0
  452. package/dist/chunks/chunk-XNMAPACM.js.map +1 -0
  453. package/dist/chunks/chunk-Y2DMMGRW.js +8657 -0
  454. package/dist/chunks/chunk-Y2DMMGRW.js.map +1 -0
  455. package/dist/chunks/chunk-Y4DXEVZM.js +8770 -0
  456. package/dist/chunks/chunk-Y4DXEVZM.js.map +1 -0
  457. package/dist/chunks/chunk-Y4VJXTG5.js +8754 -0
  458. package/dist/chunks/chunk-Y4VJXTG5.js.map +1 -0
  459. package/dist/chunks/chunk-YFTXNRNZ.js +913 -0
  460. package/dist/chunks/chunk-YFTXNRNZ.js.map +1 -0
  461. package/dist/chunks/chunk-YRVKKM47.js +365 -0
  462. package/dist/chunks/chunk-YRVKKM47.js.map +1 -0
  463. package/dist/chunks/chunk-YWEWSQJR.js +40 -0
  464. package/dist/chunks/chunk-YWEWSQJR.js.map +1 -0
  465. package/dist/chunks/chunk-Z3PFCZLH.js +913 -0
  466. package/dist/chunks/chunk-Z3PFCZLH.js.map +1 -0
  467. package/dist/chunks/chunk-ZB27F2HA.js +366 -0
  468. package/dist/chunks/chunk-ZB27F2HA.js.map +1 -0
  469. package/dist/chunks/chunk-ZZIDNW4D.js +914 -0
  470. package/dist/chunks/chunk-ZZIDNW4D.js.map +1 -0
  471. package/dist/exports/computed-item.context.d.ts +3 -1
  472. package/dist/exports/computed.context.d.ts +4 -2
  473. package/dist/exports/config.context.d.ts +4 -1
  474. package/dist/exports/config.context.js +1 -1
  475. package/dist/exports/expression-result.d.ts +2 -2
  476. package/dist/exports/interaction.d.ts +3 -1
  477. package/dist/exports/interaction.js +5 -1
  478. package/dist/exports/item.context.d.ts +3 -1
  479. package/dist/exports/qti-assessment-item.context.d.ts +3 -1
  480. package/dist/exports/qti-condition-expression.d.ts +3 -1
  481. package/dist/exports/qti-condition-expression.js +3 -2
  482. package/dist/exports/qti-expression.d.ts +3 -1
  483. package/dist/exports/qti-expression.js +2 -1
  484. package/dist/exports/qti-test.d.ts +5 -3
  485. package/dist/exports/qti.context.d.ts +14 -0
  486. package/dist/exports/qti.context.js +8 -0
  487. package/dist/exports/qti.context.js.map +1 -0
  488. package/dist/exports/session.context.d.ts +4 -2
  489. package/dist/exports/test.context.d.ts +3 -1
  490. package/dist/exports/variables.d.ts +3 -1
  491. package/dist/index.d.ts +5 -4
  492. package/dist/index.js +75 -55
  493. package/dist/item.css +90 -18
  494. package/dist/qti-components/index.d.ts +159 -5
  495. package/dist/qti-components/index.js +28 -6
  496. package/dist/qti-components-jsx.d.ts +3787 -1466
  497. package/dist/qti-item/components/item-container.js +2 -2
  498. package/dist/qti-item/components/item-correct-response-mode.d.ts +17 -0
  499. package/dist/qti-item/components/item-correct-response-mode.js +62 -0
  500. package/dist/qti-item/components/item-correct-response-mode.js.map +1 -0
  501. package/dist/qti-item/components/item-show-candidate-correction.d.ts +34 -0
  502. package/dist/qti-item/components/item-show-candidate-correction.js +88 -0
  503. package/dist/qti-item/components/item-show-candidate-correction.js.map +1 -0
  504. package/dist/qti-item/components/item-show-correct-response.d.ts +3 -1
  505. package/dist/qti-item/components/item-show-correct-response.js +1 -1
  506. package/dist/qti-item/components/print-item-variables.d.ts +3 -1
  507. package/dist/qti-item/core/index.d.ts +10 -3
  508. package/dist/qti-item/core/index.js +8 -7
  509. package/dist/qti-loader/index.d.ts +3 -1
  510. package/dist/qti-response-declaration-B7a6N0wt.d.ts +1380 -0
  511. package/dist/qti-response-declaration-BKOw2_Pl.d.ts +1378 -0
  512. package/dist/qti-response-declaration-BTiPhwZv.d.ts +1370 -0
  513. package/dist/qti-response-declaration-Bthfzhwd.d.ts +1385 -0
  514. package/dist/qti-response-declaration-CNP03Vcb.d.ts +1386 -0
  515. package/dist/qti-response-declaration-CTRNB113.d.ts +1385 -0
  516. package/dist/qti-response-declaration-Cbj7E4ND.d.ts +1372 -0
  517. package/dist/qti-response-declaration-DKr08ANy.d.ts +1397 -0
  518. package/dist/qti-response-declaration-DRNG6zLy.d.ts +1370 -0
  519. package/dist/qti-response-declaration-DuRT3sKx.d.ts +1380 -0
  520. package/dist/qti-response-declaration-Dz6D30cF.d.ts +1397 -0
  521. package/dist/qti-response-declaration-GPP3SVur.d.ts +1372 -0
  522. package/dist/qti-response-declaration-d_tAAEFq.d.ts +1378 -0
  523. package/dist/qti-response-declaration-xVcD4HvN.d.ts +1386 -0
  524. package/dist/qti-test/components/index.d.ts +4 -3
  525. package/dist/qti-test/components/index.js +32 -32
  526. package/dist/qti-test/components/test-container.js +2 -2
  527. package/dist/qti-test/components/test-navigation.d.ts +16 -3
  528. package/dist/qti-test/components/test-navigation.js +3 -2
  529. package/dist/qti-test/components/test-next.d.ts +4 -2
  530. package/dist/qti-test/components/test-next.js +1 -2
  531. package/dist/qti-test/components/test-prev.d.ts +4 -2
  532. package/dist/qti-test/components/test-prev.js +1 -2
  533. package/dist/qti-test/components/test-print-context.d.ts +4 -2
  534. package/dist/qti-test/components/test-print-item-variables.d.ts +4 -2
  535. package/dist/qti-test/components/test-scoring-buttons.d.ts +4 -2
  536. package/dist/qti-test/components/test-scoring-feedback.d.ts +4 -2
  537. package/dist/qti-test/components/test-show-correct-response.d.ts +4 -2
  538. package/dist/qti-test/components/test-view.js +2 -2
  539. package/dist/qti-test/core/index.d.ts +5 -3
  540. package/dist/qti-test/core/index.js +10 -9
  541. package/dist/qti-test-feedback-B0W2B5wQ.d.ts +91 -0
  542. package/dist/qti-test-feedback-B1kTnqnI.d.ts +91 -0
  543. package/dist/qti-test-feedback-BAUInn-q.d.ts +91 -0
  544. package/dist/qti-test-feedback-BWerRaNG.d.ts +91 -0
  545. package/dist/qti-test-feedback-BXdbgpY8.d.ts +91 -0
  546. package/dist/qti-test-feedback-Bbt2VWE1.d.ts +91 -0
  547. package/dist/qti-test-feedback-Bskvq3FE.d.ts +91 -0
  548. package/dist/qti-test-feedback-C-PQYZWl.d.ts +91 -0
  549. package/dist/qti-test-feedback-CZsbp6z4.d.ts +91 -0
  550. package/dist/qti-test-feedback-CuTA6S46.d.ts +91 -0
  551. package/dist/qti-test-feedback-DUxJARNH.d.ts +91 -0
  552. package/dist/qti-test-feedback-SkEfQjOR.d.ts +91 -0
  553. package/dist/qti-test-feedback-dSr4W5Ft.d.ts +91 -0
  554. package/dist/qti-test-feedback-jBGxkr5n.d.ts +91 -0
  555. package/dist/vscode.html-custom-data.json +163 -39
  556. package/package.json +62 -65
@@ -0,0 +1,914 @@
1
+ import {
2
+ INITIAL_SESSION_CONTEXT,
3
+ sessionContext
4
+ } from "./chunk-22IRJWWY.js";
5
+ import {
6
+ QtiModalFeedback
7
+ } from "./chunk-SZTQ6IWR.js";
8
+ import {
9
+ qtiTransformItem
10
+ } from "./chunk-WFUXZ4UT.js";
11
+ import {
12
+ INITIAL_TEST_CONTEXT,
13
+ testContext
14
+ } from "./chunk-CJADUWEC.js";
15
+ import {
16
+ __decorateClass
17
+ } from "./chunk-H2JE6IVU.js";
18
+
19
+ // src/lib/qti-test/core/qti-test.ts
20
+ import { html } from "lit";
21
+ import { customElement } from "lit/decorators.js";
22
+
23
+ // src/lib/qti-test/core/mixins/test-navigation.mixin.ts
24
+ import { property } from "lit/decorators.js";
25
+ var NavigationErrorType = /* @__PURE__ */ ((NavigationErrorType2) => {
26
+ NavigationErrorType2["ITEM_NOT_FOUND"] = "item-not-found";
27
+ NavigationErrorType2["SECTION_NOT_FOUND"] = "section-not-found";
28
+ NavigationErrorType2["LOAD_ERROR"] = "load-error";
29
+ NavigationErrorType2["NETWORK_ERROR"] = "network-error";
30
+ NavigationErrorType2["TIMEOUT_ERROR"] = "timeout-error";
31
+ return NavigationErrorType2;
32
+ })(NavigationErrorType || {});
33
+ var TestNavigationMixin = (superClass) => {
34
+ class TestNavigationClass extends superClass {
35
+ constructor(...args) {
36
+ super(...args);
37
+ this.navigate = null;
38
+ this.cacheTransform = false;
39
+ this.requestTimeout = 3e4;
40
+ this.showLoadingIndicators = true;
41
+ this._activeRequests = [];
42
+ this._navigationInProgress = false;
43
+ this._lastError = null;
44
+ this._lastNavigationRequestId = null;
45
+ this._targetNavigation = null;
46
+ this.addEventListener(
47
+ "qti-request-navigation",
48
+ async ({ detail }) => {
49
+ if (!detail?.id) return;
50
+ const navigationRequestId = `nav_${Date.now()}_${Math.random()}`;
51
+ this._lastNavigationRequestId = navigationRequestId;
52
+ try {
53
+ this._navigationInProgress = true;
54
+ this._lastError = null;
55
+ this._dispatchStatusEvent({ loading: true, type: detail.type, id: detail.id });
56
+ this._cancelActiveRequests();
57
+ this._targetNavigation = { type: detail.type, id: detail.id };
58
+ if (detail.type === "item") {
59
+ await this._navigateToItem(detail.id);
60
+ } else if (detail.type === "section") {
61
+ await this._navigateToSection(detail.id);
62
+ }
63
+ if (this._lastNavigationRequestId !== navigationRequestId) {
64
+ console.log("Navigation was superseded by a newer request");
65
+ return;
66
+ }
67
+ } catch (error) {
68
+ if (this._lastNavigationRequestId === navigationRequestId) {
69
+ const navError = this._normalizeError(error, detail.type, detail.id);
70
+ this._lastError = navError;
71
+ this._dispatchErrorEvent(navError);
72
+ console.error(`Navigation error (${navError.type}):`, navError.message, navError.details);
73
+ }
74
+ } finally {
75
+ if (this._lastNavigationRequestId === navigationRequestId) {
76
+ this._navigationInProgress = false;
77
+ this._dispatchStatusEvent({ loading: false, type: detail.type, id: detail.id });
78
+ }
79
+ }
80
+ }
81
+ );
82
+ this.addEventListener("qti-assessment-test-connected", (e) => {
83
+ this._testElement = e.detail;
84
+ this._initializeNavigation();
85
+ });
86
+ }
87
+ /**
88
+ * Initialize navigation when test is first connected
89
+ */
90
+ _initializeNavigation() {
91
+ let id;
92
+ if (this.navigate === "section") {
93
+ id = this._testElement.querySelector("qti-assessment-section")?.identifier;
94
+ }
95
+ if (this.navigate === "item") {
96
+ id = this.sessionContext.navItemRefId ?? this._testElement.querySelector("qti-assessment-item-ref")?.identifier;
97
+ }
98
+ if (id) {
99
+ this.dispatchEvent(
100
+ new CustomEvent("qti-request-navigation", {
101
+ detail: { type: this.navigate === "section" ? "section" : "item", id },
102
+ bubbles: true,
103
+ composed: true
104
+ })
105
+ );
106
+ }
107
+ }
108
+ navigateTo(type, id) {
109
+ if (!id) {
110
+ if (type === "section") {
111
+ id = this._testElement?.querySelector("qti-assessment-section")?.identifier;
112
+ }
113
+ if (type === "item") {
114
+ id = this._testElement?.querySelector("qti-assessment-item-ref")?.identifier;
115
+ }
116
+ }
117
+ this.dispatchEvent(
118
+ new CustomEvent("qti-request-navigation", {
119
+ detail: { type, id },
120
+ bubbles: true,
121
+ composed: true
122
+ })
123
+ );
124
+ }
125
+ /**
126
+ * Navigates to a specific item
127
+ */
128
+ async _navigateToItem(itemId) {
129
+ const itemRefEl = this._testElement?.querySelector(
130
+ `qti-assessment-item-ref[identifier="${itemId}"]`
131
+ );
132
+ if (!itemRefEl) {
133
+ throw {
134
+ type: "item-not-found" /* ITEM_NOT_FOUND */,
135
+ message: `Item with identifier "${itemId}" not found.`,
136
+ itemId
137
+ };
138
+ }
139
+ const navPartId = itemRefEl.closest("qti-test-part")?.identifier;
140
+ const navSectionId = itemRefEl.closest("qti-assessment-section")?.identifier;
141
+ this.sessionContext = {
142
+ ...this.sessionContext,
143
+ navPartId,
144
+ navSectionId,
145
+ navItemRefId: itemId,
146
+ navItemLoading: true
147
+ };
148
+ try {
149
+ await this._loadItems([itemId]);
150
+ } finally {
151
+ this.sessionContext = {
152
+ ...this.sessionContext,
153
+ navItemLoading: false
154
+ };
155
+ }
156
+ }
157
+ /**
158
+ * Navigates to a specific section
159
+ */
160
+ async _navigateToSection(sectionId) {
161
+ const sectionRefEl = this._testElement?.querySelector(
162
+ `qti-assessment-section[identifier="${sectionId}"]`
163
+ );
164
+ if (!sectionRefEl) {
165
+ throw {
166
+ type: "section-not-found" /* SECTION_NOT_FOUND */,
167
+ message: `Section with identifier "${sectionId}" not found.`,
168
+ sectionId
169
+ };
170
+ }
171
+ const navPartId = sectionRefEl.closest("qti-test-part")?.identifier;
172
+ this.sessionContext = {
173
+ ...this.sessionContext,
174
+ navPartId,
175
+ navSectionId: sectionId,
176
+ navItemRefId: null,
177
+ navItemLoading: true
178
+ };
179
+ try {
180
+ const itemIds = this._getSectionItemIds(sectionId);
181
+ await this._loadItems(itemIds);
182
+ } finally {
183
+ this.sessionContext = {
184
+ ...this.sessionContext,
185
+ navItemLoading: false
186
+ };
187
+ }
188
+ }
189
+ /**
190
+ * Normalize different error types into a consistent NavigationError format
191
+ */
192
+ _normalizeError(error, navigationType, id) {
193
+ if (error && error.type && Object.values(NavigationErrorType).includes(error.type)) {
194
+ return error;
195
+ }
196
+ if (error instanceof DOMException && error.name === "AbortError") {
197
+ return {
198
+ type: "network-error" /* NETWORK_ERROR */,
199
+ message: "Navigation was cancelled because a new navigation was requested.",
200
+ details: error
201
+ };
202
+ }
203
+ if (error.name === "TimeoutError" || error.message && error.message.includes("timeout")) {
204
+ return {
205
+ type: "timeout-error" /* TIMEOUT_ERROR */,
206
+ message: "Request timed out. Please check your network connection.",
207
+ details: error
208
+ };
209
+ }
210
+ if (error instanceof TypeError && error.message.includes("network")) {
211
+ return {
212
+ type: "network-error" /* NETWORK_ERROR */,
213
+ message: "A network error occurred. Please check your connection.",
214
+ details: error
215
+ };
216
+ }
217
+ return {
218
+ type: "load-error" /* LOAD_ERROR */,
219
+ message: `Failed to load ${navigationType}: ${id}`,
220
+ details: error,
221
+ itemId: navigationType === "item" ? id : void 0,
222
+ sectionId: navigationType === "section" ? id : void 0
223
+ };
224
+ }
225
+ /**
226
+ * Dispatch error event to notify the UI
227
+ */
228
+ _dispatchErrorEvent(error) {
229
+ this.dispatchEvent(
230
+ new CustomEvent("qti-navigation-error", {
231
+ detail: error,
232
+ bubbles: true,
233
+ composed: true
234
+ })
235
+ );
236
+ }
237
+ /**
238
+ * Dispatch status event to indicate loading state
239
+ */
240
+ _dispatchStatusEvent(status) {
241
+ if (this.showLoadingIndicators) {
242
+ this.dispatchEvent(
243
+ new CustomEvent("qti-navigation-status", {
244
+ detail: status,
245
+ bubbles: true,
246
+ composed: true
247
+ })
248
+ );
249
+ }
250
+ }
251
+ /**
252
+ * Cancels all active HTTP requests
253
+ */
254
+ _cancelActiveRequests() {
255
+ if (this._activeRequests.length > 0) {
256
+ console.info(`Cancelling ${this._activeRequests.length} pending requests`);
257
+ this._activeRequests.forEach((request) => {
258
+ if (request && request.readyState !== 4) {
259
+ request.abort();
260
+ }
261
+ });
262
+ this._activeRequests = [];
263
+ }
264
+ }
265
+ /**
266
+ * Load items with improved error handling and timeout
267
+ */
268
+ async _loadItems(itemIds) {
269
+ if (!this._testElement || itemIds.length === 0) return;
270
+ const itemRefEls = itemIds.map(
271
+ (id) => this._testElement.querySelector(`qti-assessment-item-ref[identifier="${id}"]`)
272
+ );
273
+ const missingItems = itemRefEls.reduce((missing, el, index) => {
274
+ if (!el) missing.push(itemIds[index]);
275
+ return missing;
276
+ }, []);
277
+ if (missingItems.length > 0) {
278
+ const error = {
279
+ type: "item-not-found" /* ITEM_NOT_FOUND */,
280
+ message: `One or more items not found: ${missingItems.join(", ")}`,
281
+ details: { missingItems }
282
+ };
283
+ throw error;
284
+ }
285
+ this._clearLoadedItems();
286
+ const itemLoadPromises = itemRefEls.map(async (itemRef) => {
287
+ if (!itemRef) return null;
288
+ const timeoutPromise = new Promise((_, reject) => {
289
+ setTimeout(() => {
290
+ reject({
291
+ name: "TimeoutError",
292
+ message: `Request for item ${itemRef.identifier} timed out after ${this.requestTimeout}ms`
293
+ });
294
+ }, this.requestTimeout);
295
+ });
296
+ try {
297
+ const { promise, request } = qtiTransformItem(this.cacheTransform).load(itemRef.href);
298
+ if (request instanceof XMLHttpRequest) {
299
+ this._activeRequests.push(request);
300
+ }
301
+ const apiResult = await Promise.race([promise, timeoutPromise]);
302
+ return {
303
+ itemRef,
304
+ doc: apiResult.htmlDoc(),
305
+ request
306
+ };
307
+ } catch (error) {
308
+ if (error instanceof DOMException && error.name === "AbortError" || error && error.name === "TimeoutError") {
309
+ console.log(
310
+ `Request for item ${itemRef.identifier} was ${error.name === "TimeoutError" ? "timed out" : "aborted"}`
311
+ );
312
+ return null;
313
+ }
314
+ error.itemId = itemRef.identifier;
315
+ throw error;
316
+ }
317
+ });
318
+ try {
319
+ const results = await Promise.all(itemLoadPromises);
320
+ const validResults = results.filter((result) => result !== null);
321
+ validResults.forEach(({ itemRef, doc }) => {
322
+ if (itemRef && doc) itemRef.xmlDoc = doc;
323
+ });
324
+ this._activeRequests = [];
325
+ requestAnimationFrame(() => {
326
+ this.dispatchEvent(
327
+ new CustomEvent("qti-test-loaded", {
328
+ detail: validResults.map(({ itemRef }) => ({
329
+ identifier: itemRef?.identifier,
330
+ element: itemRef
331
+ })),
332
+ bubbles: true,
333
+ composed: true
334
+ })
335
+ );
336
+ });
337
+ if (validResults.length === 0 && itemIds.length > 0) {
338
+ throw {
339
+ type: "load-error" /* LOAD_ERROR */,
340
+ message: "All item requests failed to load",
341
+ details: { itemIds }
342
+ };
343
+ }
344
+ return validResults;
345
+ } catch (error) {
346
+ console.error("Error loading items:", error);
347
+ throw error;
348
+ }
349
+ }
350
+ /**
351
+ * Gets all item IDs in a section
352
+ */
353
+ _getSectionItemIds(navSectionId) {
354
+ const sectionRefEl = this._testElement?.querySelector(
355
+ `qti-assessment-section[identifier="${navSectionId}"]`
356
+ );
357
+ if (!sectionRefEl) {
358
+ throw {
359
+ type: "section-not-found" /* SECTION_NOT_FOUND */,
360
+ message: `Section with identifier "${navSectionId}" not found.`,
361
+ sectionId: navSectionId
362
+ };
363
+ }
364
+ return Array.from(
365
+ this._testElement.querySelectorAll(
366
+ `qti-assessment-section[identifier="${navSectionId}"] > qti-assessment-item-ref`
367
+ )
368
+ ).map((itemRef) => itemRef.identifier);
369
+ }
370
+ /**
371
+ * Clears all loaded items
372
+ */
373
+ _clearLoadedItems() {
374
+ const itemRefEls = this._testElement?.querySelectorAll(
375
+ `qti-assessment-test qti-assessment-item-ref`
376
+ );
377
+ Array.from(itemRefEls || []).forEach((itemElement) => {
378
+ itemElement.xmlDoc = null;
379
+ });
380
+ }
381
+ /**
382
+ * Retry the last failed navigation
383
+ */
384
+ retryNavigation() {
385
+ if (this._lastError) {
386
+ const type = this._lastError.itemId ? "item" : "section";
387
+ const id = this._lastError.itemId || this._lastError.sectionId;
388
+ if (id) {
389
+ this.dispatchEvent(
390
+ new CustomEvent("qti-request-navigation", {
391
+ detail: { type, id },
392
+ bubbles: true,
393
+ composed: true
394
+ })
395
+ );
396
+ }
397
+ } else if (this._targetNavigation) {
398
+ this.dispatchEvent(
399
+ new CustomEvent("qti-request-navigation", {
400
+ detail: this._targetNavigation,
401
+ bubbles: true,
402
+ composed: true
403
+ })
404
+ );
405
+ }
406
+ }
407
+ }
408
+ __decorateClass([
409
+ property({ type: String })
410
+ ], TestNavigationClass.prototype, "navigate", 2);
411
+ __decorateClass([
412
+ property({ type: Boolean, attribute: "cache-transform" })
413
+ ], TestNavigationClass.prototype, "cacheTransform", 2);
414
+ __decorateClass([
415
+ property({ type: Number })
416
+ ], TestNavigationClass.prototype, "requestTimeout", 2);
417
+ __decorateClass([
418
+ property({ type: Boolean })
419
+ ], TestNavigationClass.prototype, "showLoadingIndicators", 2);
420
+ return TestNavigationClass;
421
+ };
422
+
423
+ // src/lib/qti-test/core/mixins/test-view.mixin.ts
424
+ var TestViewMixin = (superClass) => {
425
+ class TestViewClass extends superClass {
426
+ constructor(...args) {
427
+ super(...args);
428
+ this.sessionContext = { ...this.sessionContext, view: "candidate" };
429
+ this.addEventListener("on-test-switch-view", (e) => {
430
+ this.sessionContext = { ...this.sessionContext, view: e.detail };
431
+ this._updateElementView();
432
+ });
433
+ this.addEventListener("qti-assessment-test-connected", () => {
434
+ this._updateElementView();
435
+ });
436
+ this.addEventListener("qti-assessment-item-connected", (e) => {
437
+ this._updateElementView();
438
+ this._setCorrectResponseVisibility(e.detail);
439
+ });
440
+ }
441
+ willUpdate(changedProperties) {
442
+ super.willUpdate(changedProperties);
443
+ if (changedProperties.has("sessionContext")) {
444
+ this._updateElementView();
445
+ }
446
+ }
447
+ // Method to handle view updates for elements based on the current context view
448
+ _updateElementView() {
449
+ if (this._testElement) {
450
+ const viewElements = Array.from(this._testElement.querySelectorAll("[view]"));
451
+ viewElements.forEach((element) => {
452
+ element.classList.toggle("show", element.getAttribute("view") === this.sessionContext.view);
453
+ });
454
+ const assessmentItemRef = this._testElement.querySelector(
455
+ `qti-assessment-item-ref[identifier="${this.sessionContext.navItemRefId}"]`
456
+ );
457
+ const assessmentItem = assessmentItemRef?.assessmentItem;
458
+ if (assessmentItem) {
459
+ assessmentItem.showCorrectResponse(this.sessionContext.view === "scorer");
460
+ }
461
+ }
462
+ }
463
+ // Event handler for connected QTI assessment items
464
+ _setCorrectResponseVisibility(assessmentItem) {
465
+ assessmentItem.showCorrectResponse(this.sessionContext.view === "scorer");
466
+ }
467
+ }
468
+ return TestViewClass;
469
+ };
470
+
471
+ // src/lib/qti-test/core/test-base.ts
472
+ import { provide } from "@lit/context";
473
+ import { LitElement } from "lit";
474
+ import { property as property2 } from "lit/decorators.js";
475
+ var TestBase = class extends LitElement {
476
+ constructor() {
477
+ super();
478
+ this.testContext = INITIAL_TEST_CONTEXT;
479
+ this.sessionContext = INITIAL_SESSION_CONTEXT;
480
+ /**
481
+ * Updates the variables of an assessment item in the test context.
482
+ * - Matches the assessment item with the corresponding test context item.
483
+ * - If the item is not found, logs a warning.
484
+ * - Updates variables in the test context if exactly one variable exists.
485
+ * - Otherwise, syncs the assessment item's variables with the test context.
486
+ *
487
+ * @param assessmentItem - The assessment item to update.
488
+ */
489
+ this._updateItemInTestContext = (assessmentItem) => {
490
+ const context = assessmentItem._context;
491
+ const identifier = context.identifier;
492
+ const fullVariables = context.variables;
493
+ const itemContext = this.testContext.items.find((i) => i?.identifier === identifier);
494
+ if (!itemContext) {
495
+ console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);
496
+ return;
497
+ }
498
+ if (itemContext.variables?.length === 1) {
499
+ this._updateItemVariablesInTestContext(identifier, fullVariables);
500
+ } else {
501
+ assessmentItem.variables = [...itemContext.variables || []];
502
+ }
503
+ };
504
+ this.addEventListener("qti-assessment-test-connected", (e) => {
505
+ this.testContext = INITIAL_TEST_CONTEXT;
506
+ this.sessionContext = INITIAL_SESSION_CONTEXT;
507
+ if (this.testContext && this.testContext.items.length > 0) return;
508
+ this._testElement = e.detail;
509
+ const items = Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map((itemRef) => {
510
+ return {
511
+ href: itemRef.href,
512
+ identifier: itemRef.identifier,
513
+ category: itemRef.category,
514
+ variables: [
515
+ {
516
+ identifier: "completionStatus",
517
+ value: "not_attempted",
518
+ type: "outcome"
519
+ }
520
+ ]
521
+ };
522
+ });
523
+ this.testContext = { ...this.testContext, items };
524
+ });
525
+ this.addEventListener("qti-assessment-item-connected", (e) => {
526
+ const assessmentItem = e.detail;
527
+ const assessmentRefId = assessmentItem.closest("qti-assessment-item-ref")?.identifier;
528
+ if (assessmentRefId) {
529
+ assessmentItem.assessmentItemRefId = assessmentRefId;
530
+ }
531
+ this._updateItemInTestContext(e.detail);
532
+ });
533
+ this.addEventListener("qti-item-context-updated", (e) => {
534
+ this._updateItemVariablesInTestContext(e.detail.itemContext.identifier, e.detail.itemContext.variables);
535
+ });
536
+ }
537
+ updateItemVariables(itemRefID, variables) {
538
+ const itemContext = this.testContext.items.find((item) => item.identifier === itemRefID);
539
+ if (itemContext) {
540
+ itemContext.variables = itemContext.variables.map((variable) => {
541
+ const updatedVariable = variables.find((v) => v.identifier === variable.identifier);
542
+ return updatedVariable ? { ...variable, ...updatedVariable } : variable;
543
+ });
544
+ }
545
+ const itemRef = this._testElement.querySelector(
546
+ `qti-assessment-item-ref[identifier="${itemRefID}"]`
547
+ );
548
+ if (itemRef && itemRef.assessmentItem) {
549
+ if (itemRef.assessmentItem) {
550
+ itemRef.assessmentItem.variables = variables;
551
+ }
552
+ }
553
+ }
554
+ _updateItemVariablesInTestContext(identifier, variables) {
555
+ this.testContext = {
556
+ ...this.testContext,
557
+ // Spread existing test context properties
558
+ items: this.testContext.items.map((itemContext) => {
559
+ if (itemContext.identifier !== identifier) {
560
+ return itemContext;
561
+ }
562
+ return {
563
+ ...itemContext,
564
+ // Keep other properties of the item context
565
+ variables: variables.map((variable) => {
566
+ const matchingVariable = itemContext.variables.find((v) => v.identifier === variable.identifier);
567
+ return matchingVariable ? { ...matchingVariable, ...variable } : variable;
568
+ })
569
+ };
570
+ })
571
+ };
572
+ this.dispatchEvent(
573
+ new CustomEvent("qti-test-context-updated", { detail: this.testContext, bubbles: false, composed: false })
574
+ );
575
+ }
576
+ };
577
+ __decorateClass([
578
+ property2({ attribute: false, type: Object }),
579
+ provide({ context: testContext })
580
+ ], TestBase.prototype, "testContext", 2);
581
+ __decorateClass([
582
+ property2({ attribute: false, type: Object }),
583
+ provide({ context: sessionContext })
584
+ ], TestBase.prototype, "sessionContext", 2);
585
+
586
+ // src/lib/qti-test/core/mixins/test-processing.mixin.ts
587
+ var TestProcessingMixin = (superClass) => {
588
+ class TestProcessingElement extends superClass {
589
+ constructor(...args) {
590
+ super(...args);
591
+ this.addEventListener("qti-register-variable", (e) => {
592
+ this.testContext = {
593
+ ...this.testContext,
594
+ testOutcomeVariables: [...this.testContext.testOutcomeVariables || [], e.detail.variable]
595
+ };
596
+ e.stopPropagation();
597
+ });
598
+ this.addEventListener(
599
+ "qti-set-outcome-value",
600
+ (e) => {
601
+ const { outcomeIdentifier, value } = e.detail;
602
+ this.updateOutcomeVariable(outcomeIdentifier, value);
603
+ e.stopPropagation();
604
+ }
605
+ );
606
+ }
607
+ outcomeProcessing() {
608
+ const outcomeProcessor = this.querySelector("qti-outcome-processing");
609
+ if (!outcomeProcessor) return false;
610
+ outcomeProcessor?.process();
611
+ return true;
612
+ }
613
+ /* --------------------------- ENABLED WHEN UNIT TESTING OUTCOME PROCESSING ------------------------------------ */
614
+ updateOutcomeVariable(identifier, value) {
615
+ const outcomeVariable = this.getOutcome(identifier);
616
+ if (!outcomeVariable) {
617
+ console.warn(`Can not set qti-outcome-identifier: ${identifier}, it is not available`);
618
+ return;
619
+ }
620
+ this.testContext = {
621
+ ...this.testContext,
622
+ testOutcomeVariables: this.testContext.testOutcomeVariables?.map((v) => {
623
+ if (v.identifier !== identifier) {
624
+ return v;
625
+ }
626
+ return {
627
+ ...v,
628
+ value: outcomeVariable.cardinality === "single" ? value : [...v.value, value]
629
+ };
630
+ })
631
+ };
632
+ }
633
+ getOutcome(identifier) {
634
+ return this.getVariable(identifier);
635
+ }
636
+ getVariable(identifier) {
637
+ return this.testContext.testOutcomeVariables?.find((v) => v.identifier === identifier) || null;
638
+ }
639
+ /* --------------------------- ENABLED WHEN UNIT TESTING OUTCOME PROCESSING ------------------------------------ */
640
+ }
641
+ return TestProcessingElement;
642
+ };
643
+
644
+ // src/lib/qti-test/core/qti-test.ts
645
+ var QtiTest = class extends TestNavigationMixin(TestViewMixin(TestProcessingMixin(TestBase))) {
646
+ // export class QtiTest extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {
647
+ /**
648
+ * Renders the component's template.
649
+ * Provides a default `<slot>` for content projection.
650
+ */
651
+ async connectedCallback() {
652
+ super.connectedCallback();
653
+ await this.updateComplete;
654
+ this.dispatchEvent(new CustomEvent("qti-test-connected", { detail: this }));
655
+ }
656
+ render() {
657
+ return html`<slot></slot>`;
658
+ }
659
+ };
660
+ QtiTest = __decorateClass([
661
+ customElement("qti-test")
662
+ ], QtiTest);
663
+
664
+ // src/lib/qti-test/core/qti-assessment-test/qti-assessment-item-ref.ts
665
+ import { LitElement as LitElement2 } from "lit";
666
+ import { property as property3 } from "lit/decorators.js";
667
+ import { prepareTemplate } from "@heximal/templates";
668
+ var stringToBooleanConverter = {
669
+ fromAttribute(value) {
670
+ return value === "true";
671
+ },
672
+ toAttribute(value) {
673
+ return value ? "true" : "false";
674
+ }
675
+ };
676
+ var QtiAssessmentItemRef = class extends LitElement2 {
677
+ constructor() {
678
+ super(...arguments);
679
+ // @consume({ context: computedContext, subscribe: true })
680
+ // private computedContext: ComputedContext;
681
+ this.weigths = /* @__PURE__ */ new Map();
682
+ }
683
+ // the XMLDocument
684
+ createRenderRoot() {
685
+ return this;
686
+ }
687
+ get assessmentItem() {
688
+ return this.renderRoot?.querySelector("qti-assessment-item");
689
+ }
690
+ async connectedCallback() {
691
+ super.connectedCallback();
692
+ const templateElement = this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");
693
+ if (templateElement) this.myTemplate = prepareTemplate(templateElement);
694
+ await this.updateComplete;
695
+ this.dispatchEvent(
696
+ new CustomEvent("qti-assessment-item-ref-connected", {
697
+ bubbles: true,
698
+ composed: true,
699
+ detail: { identifier: this.identifier, href: this.href, category: this.category }
700
+ })
701
+ );
702
+ }
703
+ render() {
704
+ return this.myTemplate ? this.myTemplate({ xmlDoc: this.xmlDoc }) : this.xmlDoc;
705
+ }
706
+ };
707
+ __decorateClass([
708
+ property3({ type: String })
709
+ ], QtiAssessmentItemRef.prototype, "category", 2);
710
+ __decorateClass([
711
+ property3({ type: String })
712
+ ], QtiAssessmentItemRef.prototype, "identifier", 2);
713
+ __decorateClass([
714
+ property3({ type: Boolean, converter: stringToBooleanConverter })
715
+ ], QtiAssessmentItemRef.prototype, "required", 2);
716
+ __decorateClass([
717
+ property3({ type: Boolean, converter: stringToBooleanConverter })
718
+ ], QtiAssessmentItemRef.prototype, "fixed", 2);
719
+ __decorateClass([
720
+ property3({ type: String })
721
+ ], QtiAssessmentItemRef.prototype, "href", 2);
722
+ __decorateClass([
723
+ property3({ type: Object, attribute: false })
724
+ ], QtiAssessmentItemRef.prototype, "xmlDoc", 2);
725
+ if (!customElements.get("qti-assessment-item-ref")) {
726
+ customElements.define("qti-assessment-item-ref", QtiAssessmentItemRef);
727
+ }
728
+
729
+ // src/lib/qti-test/core/qti-assessment-test/qti-assessment-section.ts
730
+ import { consume } from "@lit/context";
731
+ import { html as html2, LitElement as LitElement3 } from "lit";
732
+ import { property as property4 } from "lit/decorators.js";
733
+ var stringToBooleanConverter2 = {
734
+ fromAttribute(value) {
735
+ return value === "true";
736
+ },
737
+ toAttribute(value) {
738
+ return value ? "true" : "false";
739
+ }
740
+ };
741
+ var QtiAssessmentSection = class extends LitElement3 {
742
+ constructor() {
743
+ super(...arguments);
744
+ this._title = "";
745
+ }
746
+ get title() {
747
+ return this._title;
748
+ }
749
+ set title(value) {
750
+ this._title = value;
751
+ this.removeAttribute("title");
752
+ this.setAttribute("data-title", value);
753
+ }
754
+ async connectedCallback() {
755
+ this._title = this.getAttribute("title") || "";
756
+ super.connectedCallback();
757
+ await this.updateComplete;
758
+ this.dispatchEvent(
759
+ new Event("qti-assessment-section-connected", {
760
+ bubbles: true,
761
+ composed: true
762
+ })
763
+ );
764
+ }
765
+ render() {
766
+ return html2`<slot name="qti-rubric-block"></slot><slot></slot>`;
767
+ }
768
+ };
769
+ __decorateClass([
770
+ property4({ type: String })
771
+ ], QtiAssessmentSection.prototype, "identifier", 2);
772
+ __decorateClass([
773
+ property4({ type: String })
774
+ ], QtiAssessmentSection.prototype, "required", 2);
775
+ __decorateClass([
776
+ property4({ type: Boolean, converter: stringToBooleanConverter2 })
777
+ ], QtiAssessmentSection.prototype, "fixed", 2);
778
+ __decorateClass([
779
+ property4({ type: Boolean, converter: stringToBooleanConverter2 })
780
+ ], QtiAssessmentSection.prototype, "visible", 2);
781
+ __decorateClass([
782
+ property4({ type: Boolean, converter: stringToBooleanConverter2, attribute: "keep-together" })
783
+ ], QtiAssessmentSection.prototype, "keepTogether", 2);
784
+ __decorateClass([
785
+ consume({ context: testContext, subscribe: true })
786
+ ], QtiAssessmentSection.prototype, "_testContext", 2);
787
+ if (!customElements.get("qti-assessment-section")) {
788
+ customElements.define("qti-assessment-section", QtiAssessmentSection);
789
+ }
790
+
791
+ // src/lib/qti-test/core/qti-assessment-test/qti-assessment-test.ts
792
+ import { consume as consume2 } from "@lit/context";
793
+ import { html as html3, LitElement as LitElement4 } from "lit";
794
+ import { customElement as customElement2, property as property5 } from "lit/decorators.js";
795
+ var QtiAssessmentTest = class extends LitElement4 {
796
+ constructor() {
797
+ super(...arguments);
798
+ this._title = "";
799
+ }
800
+ get title() {
801
+ return this._title;
802
+ }
803
+ set title(value) {
804
+ this._title = value;
805
+ this.removeAttribute("title");
806
+ this.setAttribute("data-title", value);
807
+ }
808
+ async connectedCallback() {
809
+ super.connectedCallback();
810
+ await this.updateComplete;
811
+ this.dispatchEvent(
812
+ new CustomEvent("qti-assessment-test-connected", {
813
+ detail: this,
814
+ bubbles: true,
815
+ composed: true
816
+ })
817
+ );
818
+ }
819
+ render() {
820
+ return html3` <slot></slot>`;
821
+ }
822
+ };
823
+ __decorateClass([
824
+ property5({ type: String })
825
+ ], QtiAssessmentTest.prototype, "identifier", 2);
826
+ __decorateClass([
827
+ property5({ type: String })
828
+ ], QtiAssessmentTest.prototype, "title", 1);
829
+ __decorateClass([
830
+ consume2({ context: testContext, subscribe: true })
831
+ ], QtiAssessmentTest.prototype, "_testContext", 2);
832
+ QtiAssessmentTest = __decorateClass([
833
+ customElement2("qti-assessment-test")
834
+ ], QtiAssessmentTest);
835
+
836
+ // src/lib/qti-test/core/qti-assessment-test/qti-test-part.ts
837
+ import { html as html4, LitElement as LitElement5 } from "lit";
838
+ import { customElement as customElement3, property as property6 } from "lit/decorators.js";
839
+ var QtiTestPart = class extends LitElement5 {
840
+ constructor() {
841
+ super(...arguments);
842
+ this.identifier = "";
843
+ this.class = "";
844
+ this.navigationMode = "nonlinear";
845
+ this.submissionMode = "individual";
846
+ this._title = "";
847
+ }
848
+ get title() {
849
+ return this._title;
850
+ }
851
+ set title(value) {
852
+ this._title = value;
853
+ this.removeAttribute("title");
854
+ this.setAttribute("data-title", value);
855
+ }
856
+ async connectedCallback() {
857
+ super.connectedCallback();
858
+ await this.updateComplete;
859
+ this.dispatchEvent(
860
+ new Event("qti-test-part-connected", {
861
+ bubbles: true,
862
+ composed: true
863
+ })
864
+ );
865
+ }
866
+ render() {
867
+ return html4` <slot></slot>`;
868
+ }
869
+ };
870
+ __decorateClass([
871
+ property6({ type: String })
872
+ ], QtiTestPart.prototype, "identifier", 2);
873
+ __decorateClass([
874
+ property6({ type: String })
875
+ ], QtiTestPart.prototype, "class", 2);
876
+ __decorateClass([
877
+ property6({ type: String, attribute: "navigation-mode" })
878
+ ], QtiTestPart.prototype, "navigationMode", 2);
879
+ __decorateClass([
880
+ property6({ type: String, attribute: "submission-mode" })
881
+ ], QtiTestPart.prototype, "submissionMode", 2);
882
+ QtiTestPart = __decorateClass([
883
+ customElement3("qti-test-part")
884
+ ], QtiTestPart);
885
+ if (!customElements.get("qti-test-part")) {
886
+ customElements.define("qti-test-part", QtiTestPart);
887
+ }
888
+
889
+ // src/lib/qti-test/core/qti-assessment-test/qti-test-feedback.ts
890
+ import { customElement as customElement4 } from "lit/decorators.js";
891
+ import { css, html as html5 } from "lit";
892
+ var QtiTestFeedback = class extends QtiModalFeedback {
893
+ render() {
894
+ return html5``;
895
+ }
896
+ };
897
+ QtiTestFeedback.styles = css`
898
+ :host {
899
+ color: gray;
900
+ }
901
+ `;
902
+ QtiTestFeedback = __decorateClass([
903
+ customElement4("qti-test-feedback")
904
+ ], QtiTestFeedback);
905
+
906
+ export {
907
+ QtiTest,
908
+ QtiAssessmentItemRef,
909
+ QtiAssessmentSection,
910
+ QtiAssessmentTest,
911
+ QtiTestPart,
912
+ QtiTestFeedback
913
+ };
914
+ //# sourceMappingURL=chunk-V4L4ONOK.js.map