@citolab/qti-components 7.1.5 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/cdn/chunks/chunk-2GVQHMFN.js +5 -0
  2. package/cdn/chunks/chunk-34TLO462.js +1 -0
  3. package/cdn/chunks/chunk-3AUZHOWF.js +5 -0
  4. package/cdn/chunks/chunk-3BTFQ7WO.js +5 -0
  5. package/cdn/chunks/chunk-3G52PPHF.js +1 -0
  6. package/cdn/chunks/chunk-3T7FMZJJ.js +5 -0
  7. package/cdn/chunks/chunk-3WMAQ764.js +23 -0
  8. package/cdn/chunks/chunk-3XYZ63C3.js +1 -0
  9. package/cdn/chunks/chunk-43VY76CQ.js +5 -0
  10. package/cdn/chunks/chunk-4VDQDT6F.js +1 -0
  11. package/cdn/chunks/chunk-4XDZ5XHU.js +1007 -0
  12. package/cdn/chunks/chunk-52V4Q43H.js +5 -0
  13. package/cdn/chunks/chunk-5DVS53XB.js +1007 -0
  14. package/cdn/chunks/chunk-6BZPFYLZ.js +1 -0
  15. package/cdn/chunks/chunk-7B6HAKFL.js +1 -0
  16. package/cdn/chunks/chunk-7BENQ76L.js +1 -0
  17. package/cdn/chunks/chunk-A6PJTNI7.js +23 -0
  18. package/cdn/chunks/chunk-AFBSMLI4.js +5 -0
  19. package/cdn/chunks/chunk-AU2GM346.js +23 -0
  20. package/cdn/chunks/chunk-B345O2HX.js +1 -0
  21. package/cdn/chunks/chunk-B3RMHCUZ.js +1 -0
  22. package/cdn/chunks/chunk-BFPXRWNH.js +5 -0
  23. package/cdn/chunks/chunk-BGBABJCL.js +5 -0
  24. package/cdn/chunks/chunk-BKSBIZJA.js +5 -0
  25. package/cdn/chunks/chunk-BWG4B5VP.js +0 -0
  26. package/cdn/chunks/chunk-C25LH4KA.js +1 -0
  27. package/cdn/chunks/chunk-CDCBI3YD.js +1 -0
  28. package/cdn/chunks/chunk-CQPD5NPM.js +1 -0
  29. package/cdn/chunks/chunk-CS6UCV2Q.js +5 -0
  30. package/cdn/chunks/chunk-D3C4N6YO.js +8 -0
  31. package/cdn/chunks/chunk-D74A6CWS.js +8 -0
  32. package/cdn/chunks/chunk-DFZQWABG.js +5 -0
  33. package/cdn/chunks/chunk-DHZMASGY.js +5 -0
  34. package/cdn/chunks/chunk-EZ7OIK2M.js +1007 -0
  35. package/cdn/chunks/chunk-F2WLIUYH.js +5 -0
  36. package/cdn/chunks/chunk-F3ZZJBV2.js +5 -0
  37. package/cdn/chunks/chunk-FCH2GIHD.js +1 -0
  38. package/cdn/chunks/chunk-FKUEIENC.js +5 -0
  39. package/cdn/chunks/chunk-FMCWO2FJ.js +17 -0
  40. package/cdn/chunks/chunk-FQW2YR3J.js +1 -0
  41. package/cdn/chunks/chunk-FVEUVB2H.js +23 -0
  42. package/cdn/chunks/chunk-GMF365YO.js +16 -0
  43. package/cdn/chunks/chunk-GWRXCQHZ.js +23 -0
  44. package/cdn/chunks/chunk-HAXNBTTE.js +1 -0
  45. package/cdn/chunks/chunk-HEAJ2NEA.js +1007 -0
  46. package/cdn/chunks/chunk-HKBOCCDM.js +5 -0
  47. package/cdn/chunks/chunk-HRLTVAPZ.js +5 -0
  48. package/cdn/chunks/chunk-HZ5STZXK.js +5 -0
  49. package/cdn/chunks/chunk-I5HGXKPD.js +1007 -0
  50. package/cdn/chunks/chunk-IELXBBZK.js +5 -0
  51. package/cdn/chunks/chunk-IHL5T5GX.js +5 -0
  52. package/cdn/chunks/chunk-J2M4UG43.js +1 -0
  53. package/cdn/chunks/chunk-JAMSX45C.js +1 -0
  54. package/cdn/chunks/chunk-JEPI46VU.js +5 -0
  55. package/cdn/chunks/chunk-JSQUXTN4.js +1033 -0
  56. package/cdn/chunks/chunk-JXDOR5ZC.js +1 -0
  57. package/cdn/chunks/chunk-JZCJOPJ4.js +1007 -0
  58. package/cdn/chunks/chunk-KKEW6E2D.js +5 -0
  59. package/cdn/chunks/chunk-L4UTGAI5.js +5 -0
  60. package/cdn/chunks/chunk-LMLG3NBM.js +5 -0
  61. package/cdn/chunks/chunk-MM2ZXHVH.js +5 -0
  62. package/cdn/chunks/chunk-NQQE76LE.js +1 -0
  63. package/cdn/chunks/chunk-O6CWZJXT.js +28 -0
  64. package/cdn/chunks/chunk-OSEDGNNB.js +1007 -0
  65. package/cdn/chunks/chunk-PJFHT7NY.js +5 -0
  66. package/cdn/chunks/chunk-PKWOG7OF.js +5 -0
  67. package/cdn/chunks/chunk-PTG4PTFS.js +5 -0
  68. package/cdn/chunks/chunk-QIRSCGXH.js +1007 -0
  69. package/cdn/chunks/chunk-RIPDQPTC.js +5 -0
  70. package/cdn/chunks/chunk-RO5THFZ6.js +5 -0
  71. package/cdn/chunks/chunk-SQ3RENJ6.js +5 -0
  72. package/cdn/chunks/chunk-SUOAWPV7.js +23 -0
  73. package/cdn/chunks/chunk-T43NJLH5.js +5 -0
  74. package/cdn/chunks/chunk-TIH5N4LQ.js +1007 -0
  75. package/cdn/chunks/chunk-TOUJRNTD.js +1007 -0
  76. package/cdn/chunks/chunk-TSMKXWWV.js +5 -0
  77. package/cdn/chunks/chunk-TU4L55WU.js +5 -0
  78. package/cdn/chunks/chunk-UDPQY4OA.js +1007 -0
  79. package/cdn/chunks/chunk-ULI6NOVG.js +23 -0
  80. package/cdn/chunks/chunk-UTEMKKYS.js +1 -0
  81. package/cdn/chunks/chunk-UV3CSMRU.js +5 -0
  82. package/cdn/chunks/chunk-V2RDHKE2.js +5 -0
  83. package/cdn/chunks/chunk-VQLIWL6K.js +5 -0
  84. package/cdn/chunks/chunk-VZEUFE5C.js +3455 -0
  85. package/cdn/chunks/chunk-W5B2MLGL.js +1 -0
  86. package/cdn/chunks/chunk-WJGOCWFB.js +1 -0
  87. package/cdn/chunks/chunk-WLQN7SVZ.js +1033 -0
  88. package/cdn/chunks/chunk-WUX2JPB5.js +17 -0
  89. package/cdn/chunks/chunk-X7FRU3B6.js +5 -0
  90. package/cdn/chunks/chunk-XS46RWY6.js +5 -0
  91. package/cdn/chunks/chunk-XTNESJMB.js +5 -0
  92. package/cdn/chunks/chunk-Y2EDF22E.js +16 -0
  93. package/cdn/chunks/chunk-YE4ZNHXG.js +23 -0
  94. package/cdn/chunks/chunk-YMFPA4QO.js +5 -0
  95. package/cdn/chunks/chunk-YRK3ZLQP.js +1033 -0
  96. package/cdn/index.global.js +1 -1
  97. package/cdn/index.js +1 -1
  98. package/cdn/qti-components/index.js +1 -1
  99. package/cdn/qti-item/components/item-container.js +1 -1
  100. package/cdn/qti-item/core/index.js +1 -1
  101. package/cdn/qti-loader/index.js +1 -1
  102. package/cdn/qti-test/components/index.js +1 -1
  103. package/cdn/qti-test/components/test-container.js +1 -1
  104. package/cdn/qti-test/components/test-navigation.js +1 -1
  105. package/cdn/qti-test/components/test-next.js +1 -1
  106. package/cdn/qti-test/components/test-scoring-buttons.js +1 -1
  107. package/cdn/qti-test/components/test-scoring-feedback.js +1 -1
  108. package/cdn/qti-test/components/test-show-correct-response.js +1 -1
  109. package/cdn/qti-test/components/test-stamp.js +1 -0
  110. package/cdn/qti-test/components/test-view-toggle.js +1 -1
  111. package/cdn/qti-test/core/index.js +1 -1
  112. package/cdn/qti-transformers/index.js +1 -1
  113. package/dist/chunks/chunk-2GPGOKL6.js +94 -0
  114. package/dist/chunks/chunk-2GPGOKL6.js.map +1 -0
  115. package/dist/chunks/chunk-2J22QBLB.js +94 -0
  116. package/dist/chunks/chunk-2J22QBLB.js.map +1 -0
  117. package/dist/chunks/chunk-34F2DVNP.js +85 -0
  118. package/dist/chunks/chunk-34F2DVNP.js.map +1 -0
  119. package/dist/chunks/chunk-3TM6VQEG.js +375 -0
  120. package/dist/chunks/chunk-3TM6VQEG.js.map +1 -0
  121. package/dist/chunks/chunk-3YVVZ2MO.js +374 -0
  122. package/dist/chunks/chunk-3YVVZ2MO.js.map +1 -0
  123. package/dist/chunks/chunk-46RFKXS6.js +94 -0
  124. package/dist/chunks/chunk-46RFKXS6.js.map +1 -0
  125. package/dist/chunks/chunk-47BWT37I.js +94 -0
  126. package/dist/chunks/chunk-47BWT37I.js.map +1 -0
  127. package/dist/chunks/chunk-4EXSIVXY.js +68 -0
  128. package/dist/chunks/chunk-4EXSIVXY.js.map +1 -0
  129. package/dist/chunks/chunk-4JL6LXWC.js +94 -0
  130. package/dist/chunks/chunk-4JL6LXWC.js.map +1 -0
  131. package/dist/chunks/chunk-4TQ3YR2O.js +31 -0
  132. package/dist/chunks/chunk-4TQ3YR2O.js.map +1 -0
  133. package/dist/chunks/chunk-4VEH63K4.js +854 -0
  134. package/dist/chunks/chunk-4VEH63K4.js.map +1 -0
  135. package/dist/chunks/chunk-5FKTC6XV.js +99 -0
  136. package/dist/chunks/chunk-5FKTC6XV.js.map +1 -0
  137. package/dist/chunks/chunk-5SZAGP4N.js +863 -0
  138. package/dist/chunks/chunk-5SZAGP4N.js.map +1 -0
  139. package/dist/chunks/chunk-64EQ3AQ4.js +240 -0
  140. package/dist/chunks/chunk-64EQ3AQ4.js.map +1 -0
  141. package/dist/chunks/chunk-6MECYIS2.js +94 -0
  142. package/dist/chunks/chunk-6MECYIS2.js.map +1 -0
  143. package/dist/chunks/chunk-6T5ICOX2.js +94 -0
  144. package/dist/chunks/chunk-6T5ICOX2.js.map +1 -0
  145. package/dist/chunks/chunk-6ZK4ZDQA.js +94 -0
  146. package/dist/chunks/chunk-6ZK4ZDQA.js.map +1 -0
  147. package/dist/chunks/chunk-7KTTLJUH.js +45 -0
  148. package/dist/chunks/chunk-7KTTLJUH.js.map +1 -0
  149. package/dist/chunks/chunk-7LFQ6D75.js +95 -0
  150. package/dist/chunks/chunk-7LFQ6D75.js.map +1 -0
  151. package/dist/chunks/chunk-7T5WVG7T.js +853 -0
  152. package/dist/chunks/chunk-7T5WVG7T.js.map +1 -0
  153. package/dist/chunks/chunk-A5IAS5VV.js +54 -0
  154. package/dist/chunks/chunk-A5IAS5VV.js.map +1 -0
  155. package/dist/chunks/chunk-A5W753FL.js +92 -0
  156. package/dist/chunks/chunk-A5W753FL.js.map +1 -0
  157. package/dist/chunks/chunk-ABDJRZ2V.js +78 -0
  158. package/dist/chunks/chunk-ABDJRZ2V.js.map +1 -0
  159. package/dist/chunks/chunk-AN33KA5S.js +94 -0
  160. package/dist/chunks/chunk-AN33KA5S.js.map +1 -0
  161. package/dist/chunks/chunk-B2SP77UV.js +818 -0
  162. package/dist/chunks/chunk-B2SP77UV.js.map +1 -0
  163. package/dist/chunks/chunk-BB7V3D2X.js +250 -0
  164. package/dist/chunks/chunk-BB7V3D2X.js.map +1 -0
  165. package/dist/chunks/chunk-BJAP2552.js +6893 -0
  166. package/dist/chunks/chunk-BJAP2552.js.map +1 -0
  167. package/dist/chunks/chunk-BSPLGP2R.js +627 -0
  168. package/dist/chunks/chunk-BSPLGP2R.js.map +1 -0
  169. package/dist/chunks/chunk-BWUEY6V5.js +818 -0
  170. package/dist/chunks/chunk-BWUEY6V5.js.map +1 -0
  171. package/dist/chunks/chunk-C7YUIKFQ.js +249 -0
  172. package/dist/chunks/chunk-C7YUIKFQ.js.map +1 -0
  173. package/dist/chunks/chunk-CIZ7HKZC.js +42 -0
  174. package/dist/chunks/chunk-CIZ7HKZC.js.map +1 -0
  175. package/dist/chunks/chunk-CJSBOJOH.js +6888 -0
  176. package/dist/chunks/chunk-CJSBOJOH.js.map +1 -0
  177. package/dist/chunks/chunk-CYB63HHS.js +31 -0
  178. package/dist/chunks/chunk-CYB63HHS.js.map +1 -0
  179. package/dist/chunks/chunk-DFSZKFKS.js +43 -0
  180. package/dist/chunks/chunk-DFSZKFKS.js.map +1 -0
  181. package/dist/chunks/chunk-DNRSH4DB.js +854 -0
  182. package/dist/chunks/chunk-DNRSH4DB.js.map +1 -0
  183. package/dist/chunks/chunk-DPDCXMHW.js +81 -0
  184. package/dist/chunks/chunk-DPDCXMHW.js.map +1 -0
  185. package/dist/chunks/chunk-DQ62VQEH.js +627 -0
  186. package/dist/chunks/chunk-DQ62VQEH.js.map +1 -0
  187. package/dist/chunks/chunk-E4G74EVO.js +99 -0
  188. package/dist/chunks/chunk-E4G74EVO.js.map +1 -0
  189. package/dist/chunks/chunk-EA7DHOYO.js +6903 -0
  190. package/dist/chunks/chunk-EA7DHOYO.js.map +1 -0
  191. package/dist/chunks/chunk-EAFJQRTV.js +56 -0
  192. package/dist/chunks/chunk-EAFJQRTV.js.map +1 -0
  193. package/dist/chunks/chunk-EL4TPH56.js +94 -0
  194. package/dist/chunks/chunk-EL4TPH56.js.map +1 -0
  195. package/dist/chunks/chunk-FI6LX4IS.js +853 -0
  196. package/dist/chunks/chunk-FI6LX4IS.js.map +1 -0
  197. package/dist/chunks/chunk-FORIPEB2.js +241 -0
  198. package/dist/chunks/chunk-FORIPEB2.js.map +1 -0
  199. package/dist/chunks/chunk-G3TG4ADZ.js +8 -0
  200. package/dist/chunks/chunk-G3TG4ADZ.js.map +1 -0
  201. package/dist/chunks/chunk-H4XZSMVR.js +375 -0
  202. package/dist/chunks/chunk-H4XZSMVR.js.map +1 -0
  203. package/dist/chunks/chunk-H6O2X4MD.js +42 -0
  204. package/dist/chunks/chunk-H6O2X4MD.js.map +1 -0
  205. package/dist/chunks/chunk-H7W3RQS4.js +627 -0
  206. package/dist/chunks/chunk-H7W3RQS4.js.map +1 -0
  207. package/dist/chunks/chunk-HMHM2W7Z.js +241 -0
  208. package/dist/chunks/chunk-HMHM2W7Z.js.map +1 -0
  209. package/dist/chunks/chunk-I3RHYDUK.js +6917 -0
  210. package/dist/chunks/chunk-I3RHYDUK.js.map +1 -0
  211. package/dist/chunks/chunk-IHNLBY62.js +42 -0
  212. package/dist/chunks/chunk-IHNLBY62.js.map +1 -0
  213. package/dist/chunks/chunk-ILA6BNIO.js +31 -0
  214. package/dist/chunks/chunk-ILA6BNIO.js.map +1 -0
  215. package/dist/chunks/chunk-JFZF77EN.js +31 -0
  216. package/dist/chunks/chunk-JFZF77EN.js.map +1 -0
  217. package/dist/chunks/chunk-JOQ2E6SE.js +92 -0
  218. package/dist/chunks/chunk-JOQ2E6SE.js.map +1 -0
  219. package/dist/chunks/chunk-JQBEZ43O.js +240 -0
  220. package/dist/chunks/chunk-JQBEZ43O.js.map +1 -0
  221. package/dist/chunks/chunk-JQQ755AG.js +854 -0
  222. package/dist/chunks/chunk-JQQ755AG.js.map +1 -0
  223. package/dist/chunks/chunk-JRDTY7YA.js +627 -0
  224. package/dist/chunks/chunk-JRDTY7YA.js.map +1 -0
  225. package/dist/chunks/chunk-JU7QJQ6F.js +853 -0
  226. package/dist/chunks/chunk-JU7QJQ6F.js.map +1 -0
  227. package/dist/chunks/chunk-K6LM7XK5.js +94 -0
  228. package/dist/chunks/chunk-K6LM7XK5.js.map +1 -0
  229. package/dist/chunks/chunk-K6PU3ZO4.js +853 -0
  230. package/dist/chunks/chunk-K6PU3ZO4.js.map +1 -0
  231. package/dist/chunks/chunk-KD26ZB2H.js +3445 -0
  232. package/dist/chunks/chunk-KD26ZB2H.js.map +1 -0
  233. package/dist/chunks/chunk-KGL6SIOD.js +6893 -0
  234. package/dist/chunks/chunk-KGL6SIOD.js.map +1 -0
  235. package/dist/chunks/chunk-KIRLKN6I.js +68 -0
  236. package/dist/chunks/chunk-KIRLKN6I.js.map +1 -0
  237. package/dist/chunks/chunk-L74KEUIS.js +94 -0
  238. package/dist/chunks/chunk-L74KEUIS.js.map +1 -0
  239. package/dist/chunks/chunk-LEXNKJYF.js +6888 -0
  240. package/dist/chunks/chunk-LEXNKJYF.js.map +1 -0
  241. package/dist/chunks/chunk-LVE5GKDT.js +94 -0
  242. package/dist/chunks/chunk-LVE5GKDT.js.map +1 -0
  243. package/dist/chunks/chunk-LVZHVB7F.js +31 -0
  244. package/dist/chunks/chunk-LVZHVB7F.js.map +1 -0
  245. package/dist/chunks/chunk-MGLNBEW4.js +33 -0
  246. package/dist/chunks/chunk-MGLNBEW4.js.map +1 -0
  247. package/dist/chunks/chunk-MS7YRGNG.js +56 -0
  248. package/dist/chunks/chunk-MS7YRGNG.js.map +1 -0
  249. package/dist/chunks/chunk-N25ZKAHQ.js +50 -0
  250. package/dist/chunks/chunk-N25ZKAHQ.js.map +1 -0
  251. package/dist/chunks/chunk-N46CJQRI.js +94 -0
  252. package/dist/chunks/chunk-N46CJQRI.js.map +1 -0
  253. package/dist/chunks/chunk-N4QWREF4.js +375 -0
  254. package/dist/chunks/chunk-N4QWREF4.js.map +1 -0
  255. package/dist/chunks/chunk-NM3JA4DH.js +6893 -0
  256. package/dist/chunks/chunk-NM3JA4DH.js.map +1 -0
  257. package/dist/chunks/chunk-NOHVLBCB.js +371 -0
  258. package/dist/chunks/chunk-NOHVLBCB.js.map +1 -0
  259. package/dist/chunks/chunk-NQSOVEFB.js +31 -0
  260. package/dist/chunks/chunk-NQSOVEFB.js.map +1 -0
  261. package/dist/chunks/chunk-OA7AFFCB.js +866 -0
  262. package/dist/chunks/chunk-OA7AFFCB.js.map +1 -0
  263. package/dist/chunks/chunk-OLNSD7FR.js +31 -0
  264. package/dist/chunks/chunk-OLNSD7FR.js.map +1 -0
  265. package/dist/chunks/chunk-OREE4FRY.js +42 -0
  266. package/dist/chunks/chunk-OREE4FRY.js.map +1 -0
  267. package/dist/chunks/chunk-P66WO2Q5.js +870 -0
  268. package/dist/chunks/chunk-P66WO2Q5.js.map +1 -0
  269. package/dist/chunks/chunk-PKOIFI5C.js +853 -0
  270. package/dist/chunks/chunk-PKOIFI5C.js.map +1 -0
  271. package/dist/chunks/chunk-QFV3VHZ4.js +43 -0
  272. package/dist/chunks/chunk-QFV3VHZ4.js.map +1 -0
  273. package/dist/chunks/chunk-QTKNSVUO.js +854 -0
  274. package/dist/chunks/chunk-QTKNSVUO.js.map +1 -0
  275. package/dist/chunks/chunk-RSGEN2FF.js +6917 -0
  276. package/dist/chunks/chunk-RSGEN2FF.js.map +1 -0
  277. package/dist/chunks/chunk-S6XGFD5B.js +6893 -0
  278. package/dist/chunks/chunk-S6XGFD5B.js.map +1 -0
  279. package/dist/chunks/chunk-SOT463MH.js +68 -0
  280. package/dist/chunks/chunk-SOT463MH.js.map +1 -0
  281. package/dist/chunks/chunk-SZMR2BFI.js +94 -0
  282. package/dist/chunks/chunk-SZMR2BFI.js.map +1 -0
  283. package/dist/chunks/chunk-TDKYWAGB.js +50 -0
  284. package/dist/chunks/chunk-TDKYWAGB.js.map +1 -0
  285. package/dist/chunks/chunk-TDNCAAAT.js +627 -0
  286. package/dist/chunks/chunk-TDNCAAAT.js.map +1 -0
  287. package/dist/chunks/chunk-TVOHUHS4.js +94 -0
  288. package/dist/chunks/chunk-TVOHUHS4.js.map +1 -0
  289. package/dist/chunks/chunk-UE3R54FP.js +853 -0
  290. package/dist/chunks/chunk-UE3R54FP.js.map +1 -0
  291. package/dist/chunks/chunk-UUEOV5NM.js +1 -0
  292. package/dist/chunks/chunk-UUEOV5NM.js.map +1 -0
  293. package/dist/chunks/chunk-UZRIKXLU.js +94 -0
  294. package/dist/chunks/chunk-UZRIKXLU.js.map +1 -0
  295. package/dist/chunks/chunk-VAYGVW5R.js +6903 -0
  296. package/dist/chunks/chunk-VAYGVW5R.js.map +1 -0
  297. package/dist/chunks/chunk-VEWD22O5.js +383 -0
  298. package/dist/chunks/chunk-VEWD22O5.js.map +1 -0
  299. package/dist/chunks/chunk-VF32HLF4.js +81 -0
  300. package/dist/chunks/chunk-VF32HLF4.js.map +1 -0
  301. package/dist/chunks/chunk-VY7QNZVM.js +6893 -0
  302. package/dist/chunks/chunk-VY7QNZVM.js.map +1 -0
  303. package/dist/chunks/chunk-W4FWEMCO.js +871 -0
  304. package/dist/chunks/chunk-W4FWEMCO.js.map +1 -0
  305. package/dist/chunks/chunk-W5VRVGBL.js +81 -0
  306. package/dist/chunks/chunk-W5VRVGBL.js.map +1 -0
  307. package/dist/chunks/chunk-WDGXLQLI.js +94 -0
  308. package/dist/chunks/chunk-WDGXLQLI.js.map +1 -0
  309. package/dist/chunks/chunk-WTTOJHIM.js +371 -0
  310. package/dist/chunks/chunk-WTTOJHIM.js.map +1 -0
  311. package/dist/chunks/chunk-WZZOX7S2.js +853 -0
  312. package/dist/chunks/chunk-WZZOX7S2.js.map +1 -0
  313. package/dist/chunks/chunk-X2G652U7.js +6903 -0
  314. package/dist/chunks/chunk-X2G652U7.js.map +1 -0
  315. package/dist/chunks/chunk-XKQP4R6O.js +380 -0
  316. package/dist/chunks/chunk-XKQP4R6O.js.map +1 -0
  317. package/dist/chunks/chunk-Z3SN77PI.js +31 -0
  318. package/dist/chunks/chunk-Z3SN77PI.js.map +1 -0
  319. package/dist/chunks/chunk-ZECYUSVI.js +43 -0
  320. package/dist/chunks/chunk-ZECYUSVI.js.map +1 -0
  321. package/dist/chunks/chunk-ZSPVMGE5.js +94 -0
  322. package/dist/chunks/chunk-ZSPVMGE5.js.map +1 -0
  323. package/dist/chunks/chunk-ZTXBJYUG.js +94 -0
  324. package/dist/chunks/chunk-ZTXBJYUG.js.map +1 -0
  325. package/dist/exports/computed-item.context.d.ts +1 -1
  326. package/dist/exports/computed.context.d.ts +1 -1
  327. package/dist/exports/interaction.d.ts +1 -1
  328. package/dist/exports/item.context.d.ts +1 -1
  329. package/dist/exports/qti-assessment-item.context.d.ts +1 -1
  330. package/dist/exports/qti-condition-expression.d.ts +1 -1
  331. package/dist/exports/qti-expression.d.ts +1 -1
  332. package/dist/exports/session.context.d.ts +2 -2
  333. package/dist/exports/test.context.d.ts +1 -1
  334. package/dist/exports/variables.d.ts +1 -1
  335. package/dist/index.d.ts +7 -2
  336. package/dist/index.js +39 -23
  337. package/dist/item.css +26 -130
  338. package/dist/qti-components/index.d.ts +2 -2
  339. package/dist/qti-components/index.js +2 -2
  340. package/dist/qti-components-jsx.d.ts +84 -2
  341. package/dist/qti-item/components/item-container.js +3 -3
  342. package/dist/qti-item/components/item-show-correct-response.d.ts +1 -1
  343. package/dist/qti-item/components/print-item-variables.d.ts +1 -1
  344. package/dist/qti-item/core/index.d.ts +1 -1
  345. package/dist/qti-item/core/index.js +3 -3
  346. package/dist/qti-loader/index.d.ts +1 -1
  347. package/dist/qti-loader/index.js +2 -2
  348. package/dist/qti-response-declaration-C3kpm650.d.ts +1171 -0
  349. package/dist/qti-test/components/index.d.ts +7 -2
  350. package/dist/qti-test/components/index.js +29 -13
  351. package/dist/qti-test/components/test-container.js +3 -3
  352. package/dist/qti-test/components/test-navigation.d.ts +3 -2
  353. package/dist/qti-test/components/test-navigation.js +1 -1
  354. package/dist/qti-test/components/test-next.d.ts +1 -1
  355. package/dist/qti-test/components/test-next.js +1 -1
  356. package/dist/qti-test/components/test-prev.d.ts +1 -1
  357. package/dist/qti-test/components/test-print-context.d.ts +1 -1
  358. package/dist/qti-test/components/test-print-item-variables.d.ts +1 -1
  359. package/dist/qti-test/components/test-scoring-buttons.d.ts +2 -1
  360. package/dist/qti-test/components/test-scoring-buttons.js +1 -1
  361. package/dist/qti-test/components/test-scoring-feedback.d.ts +9 -1273
  362. package/dist/qti-test/components/test-scoring-feedback.js +4 -60
  363. package/dist/qti-test/components/test-scoring-feedback.js.map +1 -1
  364. package/dist/qti-test/components/test-show-correct-response.d.ts +1 -1
  365. package/dist/qti-test/components/test-show-correct-response.js +1 -1
  366. package/dist/qti-test/components/test-stamp.d.ts +18 -0
  367. package/dist/qti-test/components/test-stamp.js +9 -0
  368. package/dist/qti-test/components/test-stamp.js.map +1 -0
  369. package/dist/qti-test/components/test-view-toggle.d.ts +2 -2
  370. package/dist/qti-test/components/test-view-toggle.js +1 -1
  371. package/dist/qti-test/core/index.d.ts +4 -4
  372. package/dist/qti-test/core/index.js +3 -3
  373. package/dist/qti-test-feedback-CG8nrjhS.d.ts +98 -0
  374. package/dist/qti-test-feedback-R38tNXBH.d.ts +98 -0
  375. package/dist/qti-transformers/index.d.ts +4 -1
  376. package/dist/qti-transformers/index.js +1 -1
  377. package/dist/vscode.html-custom-data.json +32 -7
  378. package/package.json +4 -4
@@ -0,0 +1,94 @@
1
+ import {
2
+ item_default
3
+ } from "./chunk-NQPY5GBW.js";
4
+ import {
5
+ watch
6
+ } from "./chunk-ELDMXTUQ.js";
7
+ import {
8
+ qtiTransformTest
9
+ } from "./chunk-XKQP4R6O.js";
10
+ import {
11
+ __decorateClass
12
+ } from "./chunk-H2JE6IVU.js";
13
+
14
+ // src/lib/qti-test/components/test-container.ts
15
+ import { LitElement, html } from "lit";
16
+ import { customElement, property, state } from "lit/decorators.js";
17
+ import { until } from "lit/directives/until.js";
18
+ var TestContainer = class extends LitElement {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.testURL = null;
22
+ this.testDoc = null;
23
+ this.testXML = null;
24
+ /** Template content if provided */
25
+ this.templateContent = null;
26
+ }
27
+ async handleTestURLChange() {
28
+ if (!this.testURL) return;
29
+ try {
30
+ const api = await qtiTransformTest().load(this.testURL);
31
+ this.testDoc = api.htmlDoc();
32
+ } catch (error) {
33
+ console.error("Error loading or parsing XML:", error);
34
+ }
35
+ }
36
+ handleTestXMLChange() {
37
+ if (!this.testXML) return;
38
+ try {
39
+ this.testDoc = qtiTransformTest().parse(this.testXML).htmlDoc();
40
+ } catch (error) {
41
+ console.error("Error parsing XML:", error);
42
+ }
43
+ }
44
+ async connectedCallback() {
45
+ super.connectedCallback();
46
+ this.initializeTemplateContent();
47
+ this.applyStyles();
48
+ if (this.testURL) {
49
+ this.handleTestURLChange();
50
+ }
51
+ if (this.testXML) {
52
+ this.handleTestXMLChange();
53
+ }
54
+ }
55
+ initializeTemplateContent() {
56
+ const template = this.querySelector("template");
57
+ this.templateContent = template ? template.content : html``;
58
+ }
59
+ applyStyles() {
60
+ const sheet = new CSSStyleSheet();
61
+ sheet.replaceSync(item_default);
62
+ this.shadowRoot.adoptedStyleSheets = [sheet];
63
+ }
64
+ render() {
65
+ return html`
66
+ ${this.templateContent}
67
+ <slot></slot>
68
+ ${until(this.testDoc, html`<span>Loading...</span>`)}
69
+ `;
70
+ }
71
+ };
72
+ __decorateClass([
73
+ property({ type: String, attribute: "test-url" })
74
+ ], TestContainer.prototype, "testURL", 2);
75
+ __decorateClass([
76
+ state()
77
+ ], TestContainer.prototype, "testDoc", 2);
78
+ __decorateClass([
79
+ state()
80
+ ], TestContainer.prototype, "testXML", 2);
81
+ __decorateClass([
82
+ watch("testURL", { waitUntilFirstUpdate: true })
83
+ ], TestContainer.prototype, "handleTestURLChange", 1);
84
+ __decorateClass([
85
+ watch("testXML", { waitUntilFirstUpdate: true })
86
+ ], TestContainer.prototype, "handleTestXMLChange", 1);
87
+ TestContainer = __decorateClass([
88
+ customElement("test-container")
89
+ ], TestContainer);
90
+
91
+ export {
92
+ TestContainer
93
+ };
94
+ //# sourceMappingURL=chunk-LVE5GKDT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-test/components/test-container.ts"],"sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\n\nimport { watch } from '../../decorators/watch';\nimport itemCss from '../../../item.css?inline';\nimport { qtiTransformTest } from '../../qti-transformers';\n\n/**\n * `<test-container>` is a custom element designed for hosting the qti-assessment-item.\n * The `qti-assessment-test` will be placed inside the shadow DOM of this element.\n * The element loads the test from the provided URL and renders it inside the shadow DOM.\n *\n * ```html\n * <qti-test>\n * <test-navigation>\n * <test-container class=\"m-4 bg-white\" test-url=\"./path/to/assessmenttest.xml\"></test-container>\n * </test-navigation>\n * </qti-test>\n * ```\n */\n@customElement('test-container')\nexport class TestContainer extends LitElement {\n /** URL of the item to load */\n @property({ type: String, attribute: 'test-url' })\n testURL: string = null;\n\n /** A parsed HTML document */\n @state()\n testDoc: DocumentFragment = null;\n\n /** The raw XML string */\n @state()\n testXML: string = null;\n\n /** Template content if provided */\n private templateContent = null;\n\n @watch('testURL', { waitUntilFirstUpdate: true })\n protected async handleTestURLChange() {\n if (!this.testURL) return;\n try {\n const api = await qtiTransformTest().load(this.testURL);\n this.testDoc = api.htmlDoc();\n } catch (error) {\n console.error('Error loading or parsing XML:', error);\n }\n }\n\n @watch('testXML', { waitUntilFirstUpdate: true })\n protected handleTestXMLChange() {\n if (!this.testXML) return;\n try {\n this.testDoc = qtiTransformTest().parse(this.testXML).htmlDoc();\n } catch (error) {\n console.error('Error parsing XML:', error);\n }\n }\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n this.initializeTemplateContent();\n this.applyStyles();\n if (this.testURL) {\n this.handleTestURLChange();\n }\n if (this.testXML) {\n this.handleTestXMLChange();\n }\n }\n\n private initializeTemplateContent() {\n const template = this.querySelector('template') as HTMLTemplateElement;\n this.templateContent = template ? template.content : html``;\n }\n\n private applyStyles() {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(itemCss);\n this.shadowRoot.adoptedStyleSheets = [sheet];\n }\n\n render() {\n return html`\n ${this.templateContent}\n <slot></slot>\n ${until(this.testDoc, html`<span>Loading...</span>`)}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-container': TestContainer;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,YAAY,YAAY;AACjC,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,aAAa;AAoBf,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAAvC;AAAA;AAGL,mBAAkB;AAIlB,mBAA4B;AAI5B,mBAAkB;AAGlB;AAAA,SAAQ,kBAAkB;AAAA;AAAA,EAG1B,MAAgB,sBAAsB;AACpC,QAAI,CAAC,KAAK,QAAS;AACnB,QAAI;AACF,YAAM,MAAM,MAAM,iBAAiB,EAAE,KAAK,KAAK,OAAO;AACtD,WAAK,UAAU,IAAI,QAAQ;AAAA,IAC7B,SAAS,OAAO;AACd,cAAQ,MAAM,iCAAiC,KAAK;AAAA,IACtD;AAAA,EACF;AAAA,EAGU,sBAAsB;AAC9B,QAAI,CAAC,KAAK,QAAS;AACnB,QAAI;AACF,WAAK,UAAU,iBAAiB,EAAE,MAAM,KAAK,OAAO,EAAE,QAAQ;AAAA,IAChE,SAAS,OAAO;AACd,cAAQ,MAAM,sBAAsB,KAAK;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,SAAK,0BAA0B;AAC/B,SAAK,YAAY;AACjB,QAAI,KAAK,SAAS;AAChB,WAAK,oBAAoB;AAAA,IAC3B;AACA,QAAI,KAAK,SAAS;AAChB,WAAK,oBAAoB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEQ,4BAA4B;AAClC,UAAM,WAAW,KAAK,cAAc,UAAU;AAC9C,SAAK,kBAAkB,WAAW,SAAS,UAAU;AAAA,EACvD;AAAA,EAEQ,cAAc;AACpB,UAAM,QAAQ,IAAI,cAAc;AAChC,UAAM,YAAY,YAAO;AACzB,SAAK,WAAW,qBAAqB,CAAC,KAAK;AAAA,EAC7C;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,QACH,KAAK,eAAe;AAAA;AAAA,QAEpB,MAAM,KAAK,SAAS,6BAA6B,CAAC;AAAA;AAAA,EAExD;AACF;AAhEE;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,WAAW,CAAC;AAAA,GAFtC,cAGX;AAIA;AAAA,EADC,MAAM;AAAA,GANI,cAOX;AAIA;AAAA,EADC,MAAM;AAAA,GAVI,cAWX;AAMgB;AAAA,EADf,MAAM,WAAW,EAAE,sBAAsB,KAAK,CAAC;AAAA,GAhBrC,cAiBK;AAWN;AAAA,EADT,MAAM,WAAW,EAAE,sBAAsB,KAAK,CAAC;AAAA,GA3BrC,cA4BD;AA5BC,gBAAN;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB;","names":[]}
@@ -0,0 +1,31 @@
1
+ import {
2
+ qtiTransformItem,
3
+ qtiTransformManifest,
4
+ qtiTransformTest
5
+ } from "./chunk-VEWD22O5.js";
6
+
7
+ // src/lib/qti-loader/qti-loader.ts
8
+ var getManifestInfo = async (manifestURL) => {
9
+ const baseURI = manifestURL.substring(0, manifestURL.lastIndexOf("/"));
10
+ const test = await qtiTransformManifest().load(`${manifestURL}`).then((api) => api.assessmentTest());
11
+ const testHTMLDoc = await qtiTransformTest().load(`${baseURI}/${test.href}`).then((api) => api.htmlDoc());
12
+ const items = await qtiTransformTest().load(`${baseURI}/${test.href}`).then((api) => api.items());
13
+ const testURL = `${baseURI}/${test.href}`;
14
+ const testURI = `${baseURI}/${test.href.substring(0, test.href.lastIndexOf("/"))}`;
15
+ return {
16
+ testHTMLDoc,
17
+ testURI,
18
+ testURL,
19
+ items,
20
+ testIdentifier: test.identifier
21
+ };
22
+ };
23
+ var getItemByUri = async (itemUri) => {
24
+ return qtiTransformItem().load(itemUri).promise.then((api) => api.htmlDoc().firstElementChild);
25
+ };
26
+
27
+ export {
28
+ getManifestInfo,
29
+ getItemByUri
30
+ };
31
+ //# sourceMappingURL=chunk-LVZHVB7F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-loader/qti-loader.ts"],"sourcesContent":["import { qtiTransformItem, qtiTransformTest } from '../qti-transformers';\nimport { qtiTransformManifest } from '../qti-transformers/qti-transform-manifest';\n\nimport type { QtiAssessmentItem } from '../qti-components';\n\nexport type ManifestInfo = {\n testIdentifier: string;\n testHTMLDoc: DocumentFragment;\n testURI: string;\n testURL: string;\n items: {\n identifier: string;\n href: string;\n category: string;\n }[];\n};\n\n// Utility function to ensure package URIs end with a '/'\n// const normalizeUri = (uri: string) => (uri.endsWith('/') ? uri : `${uri}/`);\n\n// Fetches assessment data from the manifest\nexport const getManifestInfo = async (manifestURL: string): Promise<ManifestInfo> => {\n const baseURI = manifestURL.substring(0, manifestURL.lastIndexOf('/'));\n\n const test = await qtiTransformManifest()\n .load(`${manifestURL}`)\n .then(api => api.assessmentTest());\n\n const testHTMLDoc = await qtiTransformTest()\n .load(`${baseURI}/${test.href}`)\n .then(api => api.htmlDoc());\n\n const items = await qtiTransformTest()\n .load(`${baseURI}/${test.href}`)\n .then(api => api.items());\n\n const testURL = `${baseURI}/${test.href}`;\n const testURI = `${baseURI}/${test.href.substring(0, test.href.lastIndexOf('/'))}`;\n\n return {\n testHTMLDoc,\n testURI,\n testURL,\n items,\n testIdentifier: test.identifier\n };\n};\n\n// Fetches a single item by URI\nexport const getItemByUri = async (itemUri: string): Promise<QtiAssessmentItem> => {\n return qtiTransformItem()\n .load(itemUri)\n .promise.then(api => api.htmlDoc().firstElementChild as QtiAssessmentItem);\n};\n"],"mappings":";;;;;;;AAqBO,IAAM,kBAAkB,OAAO,gBAA+C;AACnF,QAAM,UAAU,YAAY,UAAU,GAAG,YAAY,YAAY,GAAG,CAAC;AAErE,QAAM,OAAO,MAAM,qBAAqB,EACrC,KAAK,GAAG,WAAW,EAAE,EACrB,KAAK,SAAO,IAAI,eAAe,CAAC;AAEnC,QAAM,cAAc,MAAM,iBAAiB,EACxC,KAAK,GAAG,OAAO,IAAI,KAAK,IAAI,EAAE,EAC9B,KAAK,SAAO,IAAI,QAAQ,CAAC;AAE5B,QAAM,QAAQ,MAAM,iBAAiB,EAClC,KAAK,GAAG,OAAO,IAAI,KAAK,IAAI,EAAE,EAC9B,KAAK,SAAO,IAAI,MAAM,CAAC;AAE1B,QAAM,UAAU,GAAG,OAAO,IAAI,KAAK,IAAI;AACvC,QAAM,UAAU,GAAG,OAAO,IAAI,KAAK,KAAK,UAAU,GAAG,KAAK,KAAK,YAAY,GAAG,CAAC,CAAC;AAEhF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,KAAK;AAAA,EACvB;AACF;AAGO,IAAM,eAAe,OAAO,YAAgD;AACjF,SAAO,iBAAiB,EACrB,KAAK,OAAO,EACZ,QAAQ,KAAK,SAAO,IAAI,QAAQ,EAAE,iBAAsC;AAC7E;","names":[]}
@@ -0,0 +1,33 @@
1
+ import {
2
+ computedContext
3
+ } from "./chunk-G3TG4ADZ.js";
4
+ import {
5
+ __decorateClass
6
+ } from "./chunk-H2JE6IVU.js";
7
+
8
+ // src/lib/qti-test/components/test-print-context.ts
9
+ import { html, LitElement } from "lit";
10
+ import { consume } from "@lit/context";
11
+ import { customElement } from "lit/decorators.js";
12
+ var TestPrintContext = class extends LitElement {
13
+ render() {
14
+ const activeItems = this.computedContext?.testParts.flatMap(
15
+ (testPart) => testPart.sections.flatMap((section) => section.items).find((item) => item.active)
16
+ );
17
+ if (!activeItems) return html``;
18
+ const activeItem = activeItems.length > 0 ? activeItems[0] : null;
19
+ delete activeItem?.variables;
20
+ return html` <small><pre>${JSON.stringify(activeItem, null, 2)}</pre></small> `;
21
+ }
22
+ };
23
+ __decorateClass([
24
+ consume({ context: computedContext, subscribe: true })
25
+ ], TestPrintContext.prototype, "computedContext", 2);
26
+ TestPrintContext = __decorateClass([
27
+ customElement("test-print-context")
28
+ ], TestPrintContext);
29
+
30
+ export {
31
+ TestPrintContext
32
+ };
33
+ //# sourceMappingURL=chunk-MGLNBEW4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-test/components/test-print-context.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { consume } from '@lit/context';\nimport { customElement } from 'lit/decorators.js';\n\nimport { computedContext } from '../../exports/computed.context';\n\nimport type { ComputedContext } from '../../exports/computed.context';\n\n@customElement('test-print-context')\nexport class TestPrintContext extends LitElement {\n @consume({ context: computedContext, subscribe: true })\n public computedContext?: ComputedContext;\n\n render() {\n const activeItems = this.computedContext?.testParts.flatMap(testPart =>\n testPart.sections.flatMap(section => section.items).find(item => item.active)\n );\n if (!activeItems) return html``;\n const activeItem = activeItems.length > 0 ? activeItems[0] : null;\n delete activeItem?.variables;\n return html` <small><pre>${JSON.stringify(activeItem, null, 2)}</pre></small> `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-print-context': TestPrintContext;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAOvB,IAAM,mBAAN,cAA+B,WAAW;AAAA,EAI/C,SAAS;AACP,UAAM,cAAc,KAAK,iBAAiB,UAAU;AAAA,MAAQ,cAC1D,SAAS,SAAS,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,MAAM;AAAA,IAC9E;AACA,QAAI,CAAC,YAAa,QAAO;AACzB,UAAM,aAAa,YAAY,SAAS,IAAI,YAAY,CAAC,IAAI;AAC7D,WAAO,YAAY;AACnB,WAAO,oBAAoB,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAAA,EAChE;AACF;AAXS;AAAA,EADN,QAAQ,EAAE,SAAS,iBAAiB,WAAW,KAAK,CAAC;AAAA,GAD3C,iBAEJ;AAFI,mBAAN;AAAA,EADN,cAAc,oBAAoB;AAAA,GACtB;","names":[]}
@@ -0,0 +1,56 @@
1
+ import {
2
+ computedContext
3
+ } from "./chunk-6Z5YR5U2.js";
4
+ import {
5
+ __decorateClass
6
+ } from "./chunk-H2JE6IVU.js";
7
+
8
+ // src/lib/qti-test/components/test-scoring-feedback.ts
9
+ import { consume } from "@lit/context";
10
+ import { html, LitElement } from "lit";
11
+ import { customElement, property } from "lit/decorators.js";
12
+ var TestScoringFeedback = class extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.view = null;
16
+ }
17
+ render() {
18
+ const activeItem = this.computedContext?.testParts.flatMap((testPart) => testPart.sections.flatMap((section) => section.items)).find((item) => item.active);
19
+ if (!activeItem || !activeItem.variables) return html``;
20
+ if (activeItem["category"] === "dep-informational") return html`<div>${this.dataset.informational}</div>`;
21
+ const completionStatus = activeItem?.variables.find((v) => v.identifier === "completionStatus")?.value;
22
+ const scoreOutcome = activeItem?.variables.find((vr) => vr.identifier == "SCORE");
23
+ const score = parseInt(scoreOutcome?.value);
24
+ const externalScored = activeItem["externalScored"];
25
+ const feedbackText = () => {
26
+ if (completionStatus !== "completed") {
27
+ return this.dataset.textNoResponse;
28
+ }
29
+ if (!externalScored && score !== void 0 && !Number.isNaN(score)) {
30
+ return score > 0 ? this.dataset.textCorrect : this.dataset.textIncorrect;
31
+ }
32
+ if (externalScored === "externalMachine") {
33
+ return Number.isNaN(score) || score === void 0 ? "We konden je antwoord geen score geven, omdat we te weinig antwoorden konden vinden die op jouw antwoord leken. Kijk je antwoord zelf na." : `We hebben je antwoord ${score === 0 ? "geen punten" : score == 1 ? "\xE9\xE9n punt" : `${score} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`;
34
+ }
35
+ if (externalScored === "human") {
36
+ return Number.isNaN(score) ? "" : "Deze score heb je zelf toegekend.";
37
+ }
38
+ return this.dataset.scoreUnknown;
39
+ };
40
+ return html`<div>${feedbackText()}</div>`;
41
+ }
42
+ };
43
+ __decorateClass([
44
+ consume({ context: computedContext, subscribe: true })
45
+ ], TestScoringFeedback.prototype, "computedContext", 2);
46
+ __decorateClass([
47
+ property({ type: String, attribute: "view" })
48
+ ], TestScoringFeedback.prototype, "view", 2);
49
+ TestScoringFeedback = __decorateClass([
50
+ customElement("test-scoring-feedback")
51
+ ], TestScoringFeedback);
52
+
53
+ export {
54
+ TestScoringFeedback
55
+ };
56
+ //# sourceMappingURL=chunk-MS7YRGNG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-test/components/test-scoring-feedback.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { computedContext } from '../../exports/computed.context';\n\nimport type { OutcomeVariable } from '../../exports/variables';\nimport type { ComputedContext } from '../../exports/computed.context';\nimport type { ViewMode } from 'storybook/internal/types';\n\n@customElement('test-scoring-feedback')\nexport class TestScoringFeedback extends LitElement {\n @consume({ context: computedContext, subscribe: true })\n protected computedContext?: ComputedContext;\n\n @property({ type: String, attribute: 'view' })\n public view: ViewMode = null;\n\n render() {\n const activeItem = this.computedContext?.testParts\n .flatMap(testPart => testPart.sections.flatMap(section => section.items))\n .find(item => item.active);\n\n if (!activeItem || !activeItem.variables) return html``;\n\n if (activeItem['category'] === 'dep-informational') return html`<div>${this.dataset.informational}</div>`;\n\n const completionStatus = activeItem?.variables.find(v => v.identifier === 'completionStatus')?.value;\n const scoreOutcome = activeItem?.variables.find(vr => vr.identifier == 'SCORE') as OutcomeVariable;\n\n const score = parseInt(scoreOutcome?.value as string);\n const externalScored = activeItem['externalScored'];\n\n const feedbackText = () => {\n if (completionStatus !== 'completed') {\n return this.dataset.textNoResponse;\n }\n\n if (!externalScored && score !== undefined && !Number.isNaN(score)) {\n return score > 0 ? this.dataset.textCorrect : this.dataset.textIncorrect;\n }\n\n if (externalScored === 'externalMachine') {\n return Number.isNaN(score) || score === undefined\n ? 'We konden je antwoord geen score geven, omdat we te weinig antwoorden konden vinden die op jouw antwoord leken. Kijk je antwoord zelf na.'\n : `We hebben je antwoord ${score === 0 ? 'geen punten' : score == 1 ? 'één punt' : `${score} punten`} gegeven. Je kunt je score zelf aanpassen als je denkt dat dat niet klopt.`;\n }\n\n if (externalScored === 'human') {\n return Number.isNaN(score) ? '' : 'Deze score heb je zelf toegekend.';\n }\n\n return this.dataset.scoreUnknown;\n };\n\n return html`<div>${feedbackText()}</div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-scoring-feedback': TestScoringFeedback;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,gBAAgB;AASjC,IAAM,sBAAN,cAAkC,WAAW;AAAA,EAA7C;AAAA;AAKL,SAAO,OAAiB;AAAA;AAAA,EAExB,SAAS;AACP,UAAM,aAAa,KAAK,iBAAiB,UACtC,QAAQ,cAAY,SAAS,SAAS,QAAQ,aAAW,QAAQ,KAAK,CAAC,EACvE,KAAK,UAAQ,KAAK,MAAM;AAE3B,QAAI,CAAC,cAAc,CAAC,WAAW,UAAW,QAAO;AAEjD,QAAI,WAAW,UAAU,MAAM,oBAAqB,QAAO,YAAY,KAAK,QAAQ,aAAa;AAEjG,UAAM,mBAAmB,YAAY,UAAU,KAAK,OAAK,EAAE,eAAe,kBAAkB,GAAG;AAC/F,UAAM,eAAe,YAAY,UAAU,KAAK,QAAM,GAAG,cAAc,OAAO;AAE9E,UAAM,QAAQ,SAAS,cAAc,KAAe;AACpD,UAAM,iBAAiB,WAAW,gBAAgB;AAElD,UAAM,eAAe,MAAM;AACzB,UAAI,qBAAqB,aAAa;AACpC,eAAO,KAAK,QAAQ;AAAA,MACtB;AAEA,UAAI,CAAC,kBAAkB,UAAU,UAAa,CAAC,OAAO,MAAM,KAAK,GAAG;AAClE,eAAO,QAAQ,IAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ;AAAA,MAC7D;AAEA,UAAI,mBAAmB,mBAAmB;AACxC,eAAO,OAAO,MAAM,KAAK,KAAK,UAAU,SACpC,8IACA,yBAAyB,UAAU,IAAI,gBAAgB,SAAS,IAAI,mBAAa,GAAG,KAAK,SAAS;AAAA,MACxG;AAEA,UAAI,mBAAmB,SAAS;AAC9B,eAAO,OAAO,MAAM,KAAK,IAAI,KAAK;AAAA,MACpC;AAEA,aAAO,KAAK,QAAQ;AAAA,IACtB;AAEA,WAAO,YAAY,aAAa,CAAC;AAAA,EACnC;AACF;AA5CY;AAAA,EADT,QAAQ,EAAE,SAAS,iBAAiB,WAAW,KAAK,CAAC;AAAA,GAD3C,oBAED;AAGH;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,WAAW,OAAO,CAAC;AAAA,GAJlC,oBAKJ;AALI,sBAAN;AAAA,EADN,cAAc,uBAAuB;AAAA,GACzB;","names":[]}
@@ -0,0 +1,50 @@
1
+ import {
2
+ computedContext
3
+ } from "./chunk-6Z5YR5U2.js";
4
+ import {
5
+ __decorateClass
6
+ } from "./chunk-H2JE6IVU.js";
7
+
8
+ // src/lib/qti-test/components/test-stamp.ts
9
+ import { html, LitElement } from "lit";
10
+ import { customElement } from "lit/decorators.js";
11
+ import { prepareTemplate } from "stampino";
12
+ import { consume } from "@lit/context";
13
+ var TestStamp = class extends LitElement {
14
+ createRenderRoot() {
15
+ return this;
16
+ }
17
+ connectedCallback() {
18
+ super.connectedCallback();
19
+ const templateElement = this.querySelector("template");
20
+ this.myTemplate = prepareTemplate(templateElement);
21
+ }
22
+ render() {
23
+ if (!this.computedContext) return html``;
24
+ const activeTestPart = this.computedContext?.testParts.find((testPart) => testPart.active);
25
+ const activeSection = this.computedContext?.testParts.flatMap(
26
+ (testPart) => testPart.sections.find((section) => section.active)
27
+ )[0];
28
+ const activeItems = this.computedContext?.testParts.flatMap(
29
+ (testPart) => testPart.sections.flatMap((section) => section.items).find((item) => item.active)
30
+ );
31
+ const activeItem = activeItems && activeItems.length > 0 ? activeItems[0] : null;
32
+ if (!activeItem) return html``;
33
+ return html`${this.myTemplate({
34
+ testpart: activeTestPart,
35
+ section: activeSection,
36
+ item: activeItem
37
+ })}`;
38
+ }
39
+ };
40
+ __decorateClass([
41
+ consume({ context: computedContext, subscribe: true })
42
+ ], TestStamp.prototype, "computedContext", 2);
43
+ TestStamp = __decorateClass([
44
+ customElement("test-stamp")
45
+ ], TestStamp);
46
+
47
+ export {
48
+ TestStamp
49
+ };
50
+ //# sourceMappingURL=chunk-N25ZKAHQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-test/components/test-stamp.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { prepareTemplate } from 'stampino';\nimport { consume } from '@lit/context';\n\nimport { computedContext } from '../../exports/computed.context';\n\nimport type { ComputedContext } from '../../exports/computed.context';\nimport type { TemplateFunction } from 'stampino';\n\n@customElement('test-stamp')\nexport class TestStamp extends LitElement {\n @consume({ context: computedContext, subscribe: true })\n private computedContext: ComputedContext;\n\n myTemplate: TemplateFunction;\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n const templateElement = this.querySelector<HTMLTemplateElement>('template');\n this.myTemplate = prepareTemplate(templateElement);\n }\n\n render() {\n if (!this.computedContext) return html``;\n const activeTestPart = this.computedContext?.testParts.find(testPart => testPart.active);\n const activeSection = this.computedContext?.testParts.flatMap(testPart =>\n testPart.sections.find(section => section.active)\n )[0];\n const activeItems = this.computedContext?.testParts.flatMap(testPart =>\n testPart.sections.flatMap(section => section.items).find(item => item.active)\n );\n const activeItem = activeItems && activeItems.length > 0 ? activeItems[0] : null;\n if (!activeItem) return html``;\n return html`${this.myTemplate({\n testpart: activeTestPart,\n section: activeSection,\n item: activeItem\n })}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-stamp': TestStamp;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,MAAM,kBAAkB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,eAAe;AAQjB,IAAM,YAAN,cAAwB,WAAW;AAAA,EAM9B,mBAAmD;AAC3D,WAAO;AAAA,EACT;AAAA,EAEA,oBAA0B;AACxB,UAAM,kBAAkB;AACxB,UAAM,kBAAkB,KAAK,cAAmC,UAAU;AAC1E,SAAK,aAAa,gBAAgB,eAAe;AAAA,EACnD;AAAA,EAEA,SAAS;AACP,QAAI,CAAC,KAAK,gBAAiB,QAAO;AAClC,UAAM,iBAAiB,KAAK,iBAAiB,UAAU,KAAK,cAAY,SAAS,MAAM;AACvF,UAAM,gBAAgB,KAAK,iBAAiB,UAAU;AAAA,MAAQ,cAC5D,SAAS,SAAS,KAAK,aAAW,QAAQ,MAAM;AAAA,IAClD,EAAE,CAAC;AACH,UAAM,cAAc,KAAK,iBAAiB,UAAU;AAAA,MAAQ,cAC1D,SAAS,SAAS,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,MAAM;AAAA,IAC9E;AACA,UAAM,aAAa,eAAe,YAAY,SAAS,IAAI,YAAY,CAAC,IAAI;AAC5E,QAAI,CAAC,WAAY,QAAO;AACxB,WAAO,OAAO,KAAK,WAAW;AAAA,MAC5B,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC,CAAC;AAAA,EACJ;AACF;AA/BU;AAAA,EADP,QAAQ,EAAE,SAAS,iBAAiB,WAAW,KAAK,CAAC;AAAA,GAD3C,UAEH;AAFG,YAAN;AAAA,EADN,cAAc,YAAY;AAAA,GACd;","names":[]}
@@ -0,0 +1,94 @@
1
+ import {
2
+ item_default
3
+ } from "./chunk-KD26ZB2H.js";
4
+ import {
5
+ watch
6
+ } from "./chunk-ELDMXTUQ.js";
7
+ import {
8
+ qtiTransformItem
9
+ } from "./chunk-VEWD22O5.js";
10
+ import {
11
+ __decorateClass
12
+ } from "./chunk-H2JE6IVU.js";
13
+
14
+ // src/lib/qti-item/components/item-container.ts
15
+ import { LitElement, html } from "lit";
16
+ import { customElement, property, state } from "lit/decorators.js";
17
+ import { until } from "lit/directives/until.js";
18
+ var ItemContainer = class extends LitElement {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.itemURL = null;
22
+ this.itemDoc = null;
23
+ this.itemXML = null;
24
+ /** Template content if provided */
25
+ this.templateContent = null;
26
+ }
27
+ async handleItemURLChange() {
28
+ if (!this.itemURL) return;
29
+ try {
30
+ const { promise: api } = await qtiTransformItem().load(this.itemURL);
31
+ this.itemDoc = (await api).htmlDoc();
32
+ } catch (error) {
33
+ console.error("Error loading or parsing XML:", error);
34
+ }
35
+ }
36
+ handleItemXMLChange() {
37
+ if (!this.itemXML) return;
38
+ try {
39
+ this.itemDoc = qtiTransformItem().parse(this.itemXML).htmlDoc();
40
+ } catch (error) {
41
+ console.error("Error parsing XML:", error);
42
+ }
43
+ }
44
+ async connectedCallback() {
45
+ super.connectedCallback();
46
+ this.initializeTemplateContent();
47
+ this.applyStyles();
48
+ if (this.itemURL) {
49
+ this.handleItemURLChange();
50
+ }
51
+ if (this.itemXML) {
52
+ this.handleItemXMLChange();
53
+ }
54
+ }
55
+ initializeTemplateContent() {
56
+ const template = this.querySelector("template");
57
+ this.templateContent = template ? template.content : html``;
58
+ }
59
+ applyStyles() {
60
+ const sheet = new CSSStyleSheet();
61
+ sheet.replaceSync(item_default);
62
+ this.shadowRoot.adoptedStyleSheets = [sheet];
63
+ }
64
+ render() {
65
+ return html`
66
+ ${this.templateContent}
67
+ <slot></slot>
68
+ ${until(this.itemDoc, html`<span>Loading...</span>`)}
69
+ `;
70
+ }
71
+ };
72
+ __decorateClass([
73
+ property({ type: String, attribute: "item-url" })
74
+ ], ItemContainer.prototype, "itemURL", 2);
75
+ __decorateClass([
76
+ state()
77
+ ], ItemContainer.prototype, "itemDoc", 2);
78
+ __decorateClass([
79
+ state()
80
+ ], ItemContainer.prototype, "itemXML", 2);
81
+ __decorateClass([
82
+ watch("itemURL", { waitUntilFirstUpdate: true })
83
+ ], ItemContainer.prototype, "handleItemURLChange", 1);
84
+ __decorateClass([
85
+ watch("itemXML", { waitUntilFirstUpdate: true })
86
+ ], ItemContainer.prototype, "handleItemXMLChange", 1);
87
+ ItemContainer = __decorateClass([
88
+ customElement("item-container")
89
+ ], ItemContainer);
90
+
91
+ export {
92
+ ItemContainer
93
+ };
94
+ //# sourceMappingURL=chunk-N46CJQRI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/qti-item/components/item-container.ts"],"sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\n\nimport { watch } from '../../decorators/watch';\nimport itemCss from '../../../item.css?inline';\nimport { qtiTransformItem } from '../../qti-transformers';\n\n/**\n * `<item-container>` is a custom element designed for hosting the qti-assessment-item.\n * The `qti-assessment-item` will be placed inside the shadow DOM of this element.\n * The element loads the item from the provided URL and renders it inside the shadow DOM.\n *\n * ### Styling\n * Add a class to the element for styling.\n *\n * ```html\n * <qti-item>\n * <item-container class=\"m-4 bg-white\" item-url=\"./path/to/item.xml\"></item-container>\n * </qti-item>\n * ```\n */\n@customElement('item-container')\nexport class ItemContainer extends LitElement {\n /** URL of the item to load */\n @property({ type: String, attribute: 'item-url' })\n itemURL: string = null;\n\n /** A parsed HTML document */\n @state()\n itemDoc: DocumentFragment = null;\n\n /** The raw XML string */\n @state()\n itemXML: string = null;\n\n /** Template content if provided */\n private templateContent = null;\n\n @watch('itemURL', { waitUntilFirstUpdate: true })\n protected async handleItemURLChange() {\n if (!this.itemURL) return;\n try {\n const { promise: api } = await qtiTransformItem().load(this.itemURL);\n this.itemDoc = (await api).htmlDoc();\n } catch (error) {\n console.error('Error loading or parsing XML:', error);\n }\n }\n\n @watch('itemXML', { waitUntilFirstUpdate: true })\n protected handleItemXMLChange() {\n if (!this.itemXML) return;\n try {\n this.itemDoc = qtiTransformItem().parse(this.itemXML).htmlDoc();\n } catch (error) {\n console.error('Error parsing XML:', error);\n }\n }\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n this.initializeTemplateContent();\n this.applyStyles();\n if (this.itemURL) {\n this.handleItemURLChange();\n }\n if (this.itemXML) {\n this.handleItemXMLChange();\n }\n }\n\n private initializeTemplateContent() {\n const template = this.querySelector('template') as HTMLTemplateElement;\n this.templateContent = template ? template.content : html``;\n }\n\n private applyStyles() {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(itemCss);\n this.shadowRoot.adoptedStyleSheets = [sheet];\n }\n\n render() {\n return html`\n ${this.templateContent}\n <slot></slot>\n ${until(this.itemDoc, html`<span>Loading...</span>`)}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'item-container': ItemContainer;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,YAAY,YAAY;AACjC,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,aAAa;AAqBf,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAAvC;AAAA;AAGL,mBAAkB;AAIlB,mBAA4B;AAI5B,mBAAkB;AAGlB;AAAA,SAAQ,kBAAkB;AAAA;AAAA,EAG1B,MAAgB,sBAAsB;AACpC,QAAI,CAAC,KAAK,QAAS;AACnB,QAAI;AACF,YAAM,EAAE,SAAS,IAAI,IAAI,MAAM,iBAAiB,EAAE,KAAK,KAAK,OAAO;AACnE,WAAK,WAAW,MAAM,KAAK,QAAQ;AAAA,IACrC,SAAS,OAAO;AACd,cAAQ,MAAM,iCAAiC,KAAK;AAAA,IACtD;AAAA,EACF;AAAA,EAGU,sBAAsB;AAC9B,QAAI,CAAC,KAAK,QAAS;AACnB,QAAI;AACF,WAAK,UAAU,iBAAiB,EAAE,MAAM,KAAK,OAAO,EAAE,QAAQ;AAAA,IAChE,SAAS,OAAO;AACd,cAAQ,MAAM,sBAAsB,KAAK;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,SAAK,0BAA0B;AAC/B,SAAK,YAAY;AACjB,QAAI,KAAK,SAAS;AAChB,WAAK,oBAAoB;AAAA,IAC3B;AACA,QAAI,KAAK,SAAS;AAChB,WAAK,oBAAoB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEQ,4BAA4B;AAClC,UAAM,WAAW,KAAK,cAAc,UAAU;AAC9C,SAAK,kBAAkB,WAAW,SAAS,UAAU;AAAA,EACvD;AAAA,EAEQ,cAAc;AACpB,UAAM,QAAQ,IAAI,cAAc;AAChC,UAAM,YAAY,YAAO;AACzB,SAAK,WAAW,qBAAqB,CAAC,KAAK;AAAA,EAC7C;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,QACH,KAAK,eAAe;AAAA;AAAA,QAEpB,MAAM,KAAK,SAAS,6BAA6B,CAAC;AAAA;AAAA,EAExD;AACF;AAhEE;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,WAAW,CAAC;AAAA,GAFtC,cAGX;AAIA;AAAA,EADC,MAAM;AAAA,GANI,cAOX;AAIA;AAAA,EADC,MAAM;AAAA,GAVI,cAWX;AAMgB;AAAA,EADf,MAAM,WAAW,EAAE,sBAAsB,KAAK,CAAC;AAAA,GAhBrC,cAiBK;AAWN;AAAA,EADT,MAAM,WAAW,EAAE,sBAAsB,KAAK,CAAC;AAAA,GA3BrC,cA4BD;AA5BC,gBAAN;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB;","names":[]}