@citolab/qti-components 7.0.5 → 7.0.6-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/cdn/chunk-4DFVJE2A.js +48 -0
  2. package/cdn/chunk-4I75QSIL.js +8 -0
  3. package/cdn/chunk-5WCOPF7O.js +73 -0
  4. package/cdn/chunk-A536ZOJJ.js +43 -0
  5. package/cdn/chunk-BLKKKK6C.js +11 -0
  6. package/cdn/chunk-DC2R556M.js +5 -0
  7. package/cdn/chunk-GALSGMIP.js +5 -0
  8. package/cdn/chunk-IXSX4SJX.js +1 -0
  9. package/cdn/chunk-KYOTSBCX.js +1 -0
  10. package/cdn/chunk-L4TDHAKL.js +24 -0
  11. package/cdn/chunk-M6AATWPS.js +59 -0
  12. package/cdn/{chunks/chunk-UIEC4LXR.js → chunk-MFWSHIPH.js} +1 -1
  13. package/cdn/chunk-QGKK4T2J.js +8 -0
  14. package/cdn/chunk-ROXN2HIJ.js +8 -0
  15. package/cdn/{chunks/chunk-CFXQCNG6.js → chunk-SQDSHH6N.js} +18 -2
  16. package/cdn/chunk-T4A5AZCI.js +939 -0
  17. package/cdn/index.global.js +71 -71
  18. package/cdn/index.js +1 -4503
  19. package/cdn/qti-components/index.global.js +1 -1
  20. package/cdn/qti-components/index.js +1 -924
  21. package/cdn/qti-item/core/index.global.js +149 -0
  22. package/cdn/qti-item/core/index.js +1 -0
  23. package/cdn/qti-loader/index.js +1 -23
  24. package/cdn/qti-test/components/index.global.js +1 -36
  25. package/cdn/qti-test/components/index.js +1 -3598
  26. package/cdn/qti-test/components/styles.js +1 -17
  27. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  28. package/cdn/qti-test/components/test-item-link.js +1 -24
  29. package/cdn/qti-test/components/test-next.js +1 -24
  30. package/cdn/qti-test/components/test-next.spec.global.js +1 -234
  31. package/cdn/qti-test/components/test-next.spec.js +245 -4747
  32. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
  33. package/cdn/qti-test/components/test-prev.js +1 -24
  34. package/cdn/qti-test/components/test-view.js +1 -11
  35. package/cdn/qti-test/core/index.global.js +205 -0
  36. package/cdn/qti-test/core/index.js +1 -0
  37. package/cdn/qti-transformers/index.js +1 -23
  38. package/dist/{chunks/chunk-Y6UWSECL.js → chunk-2CHF3TMY.js} +2 -2
  39. package/dist/chunk-2CHF3TMY.js.map +1 -0
  40. package/dist/{chunks/chunk-XDMSEAYC.js → chunk-2OA7E3E7.js} +1 -1
  41. package/dist/chunk-2OA7E3E7.js.map +1 -0
  42. package/dist/{chunks/chunk-W4B23OIP.js → chunk-3TFUBCJW.js} +4 -4
  43. package/dist/chunk-3TFUBCJW.js.map +1 -0
  44. package/dist/{chunks/chunk-6YE2KJ4C.js → chunk-44VE5POH.js} +1 -1
  45. package/dist/{chunks/chunk-3ROZMGAN.js → chunk-4FH7P7YI.js} +4 -4
  46. package/dist/chunk-4FH7P7YI.js.map +1 -0
  47. package/dist/{chunks/chunk-ELDMXTUQ.js → chunk-4YG2FPKK.js} +1 -1
  48. package/dist/chunk-4YG2FPKK.js.map +1 -0
  49. package/dist/{chunks/chunk-HWA4A3SR.js → chunk-6SG3NMKU.js} +4 -4
  50. package/dist/chunk-6SG3NMKU.js.map +1 -0
  51. package/dist/{chunks/chunk-LKINC6JO.js → chunk-ANLIJZBL.js} +6 -6
  52. package/dist/chunk-ANLIJZBL.js.map +1 -0
  53. package/dist/{qti-test/qti-test.js → chunk-CNQYM52B.js} +308 -239
  54. package/dist/chunk-CNQYM52B.js.map +1 -0
  55. package/dist/{chunks/chunk-XDFXD3BI.js → chunk-F3NTI6TX.js} +2 -2
  56. package/dist/chunk-F3NTI6TX.js.map +1 -0
  57. package/dist/{chunks/chunk-ZEFOMZNY.js → chunk-F7HTXGGH.js} +3 -3
  58. package/dist/chunk-F7HTXGGH.js.map +1 -0
  59. package/dist/chunk-MAC76UNI.js +1 -0
  60. package/dist/{chunks/chunk-PUBGXXTM.js → chunk-OO6JSYLP.js} +4 -4
  61. package/dist/chunk-OO6JSYLP.js.map +1 -0
  62. package/dist/{chunks/chunk-LROTNPC2.js → chunk-QYN5S4EM.js} +22 -9
  63. package/dist/chunk-QYN5S4EM.js.map +1 -0
  64. package/dist/{chunks/chunk-4O5F7WV7.js → chunk-UB5K44DB.js} +1 -1
  65. package/dist/chunk-UB5K44DB.js.map +1 -0
  66. package/dist/{chunks/chunk-3OXGDCSU.js → chunk-UBZPSVSE.js} +83 -35
  67. package/dist/chunk-UBZPSVSE.js.map +1 -0
  68. package/dist/index.d.ts +5 -10
  69. package/dist/index.js +131 -11043
  70. package/dist/index.js.map +1 -1
  71. package/dist/qti-components/index.js +94 -6431
  72. package/dist/qti-components/index.js.map +1 -1
  73. package/dist/qti-components-jsx.d.ts +83 -83
  74. package/dist/qti-item/{components/item-container.d.ts → core/index.d.ts} +22 -1
  75. package/dist/qti-item/core/index.js +13 -0
  76. package/dist/qti-loader/index.js +6 -287
  77. package/dist/qti-loader/index.js.map +1 -1
  78. package/dist/qti-test/components/index.d.ts +1 -3
  79. package/dist/qti-test/components/index.js +23 -4135
  80. package/dist/qti-test/components/index.js.map +1 -1
  81. package/dist/qti-test/components/styles.js +7 -22
  82. package/dist/qti-test/components/styles.js.map +1 -1
  83. package/dist/qti-test/components/test-component.abstract.d.ts +1 -2
  84. package/dist/qti-test/components/test-component.abstract.js +6 -145
  85. package/dist/qti-test/components/test-component.abstract.js.map +1 -1
  86. package/dist/qti-test/components/test-item-link.d.ts +1 -2
  87. package/dist/qti-test/components/test-item-link.js +8 -198
  88. package/dist/qti-test/components/test-item-link.js.map +1 -1
  89. package/dist/qti-test/components/test-next.d.ts +1 -2
  90. package/dist/qti-test/components/test-next.js +8 -205
  91. package/dist/qti-test/components/test-next.js.map +1 -1
  92. package/{cdn/qti-test/components/test-container.js → dist/qti-test/components/test-next.spec.css} +224 -1292
  93. package/dist/qti-test/components/test-next.spec.css.map +1 -0
  94. package/dist/qti-test/components/test-next.spec.d.ts +3 -6
  95. package/dist/qti-test/components/test-next.spec.js +141 -11152
  96. package/dist/qti-test/components/test-next.spec.js.map +1 -1
  97. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +1 -2
  98. package/dist/qti-test/components/test-paging-buttons-stamp.js +7 -214
  99. package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
  100. package/dist/qti-test/components/test-prev.d.ts +1 -2
  101. package/dist/qti-test/components/test-prev.js +8 -205
  102. package/dist/qti-test/components/test-prev.js.map +1 -1
  103. package/dist/qti-test/components/test-view.d.ts +1 -2
  104. package/dist/qti-test/components/test-view.js +7 -205
  105. package/dist/qti-test/components/test-view.js.map +1 -1
  106. package/dist/qti-test/core/index.d.ts +121 -0
  107. package/dist/qti-test/core/index.js +27 -0
  108. package/dist/qti-transformers/index.js +6 -287
  109. package/dist/qti-transformers/index.js.map +1 -1
  110. package/dist/{test-base-BJwG9Ie8.d.ts → test.context-DbSTxKk_.d.ts} +18 -28
  111. package/dist/vscode.html-custom-data.json +21 -21
  112. package/package.json +90 -78
  113. package/cdn/chunks/chunk-4UJBK6JO.js +0 -1
  114. package/cdn/chunks/chunk-5O3Z7TDV.js +0 -1
  115. package/cdn/chunks/chunk-65LFT33L.js +0 -8
  116. package/cdn/chunks/chunk-6D25UFJR.js +0 -8
  117. package/cdn/chunks/chunk-6UGPNL7M.js +0 -1
  118. package/cdn/chunks/chunk-CSUKVUZF.js +0 -3
  119. package/cdn/chunks/chunk-CSY3WI5A.js +0 -1
  120. package/cdn/chunks/chunk-DAZR7RUI.js +0 -0
  121. package/cdn/chunks/chunk-EHK76KRT.js +0 -1
  122. package/cdn/chunks/chunk-EOPEMJS3.js +0 -0
  123. package/cdn/chunks/chunk-G5O7EN45.js +0 -5
  124. package/cdn/chunks/chunk-GEFUIFM7.js +0 -0
  125. package/cdn/chunks/chunk-JLNHEMQG.js +0 -1
  126. package/cdn/chunks/chunk-LPWIM7QJ.js +0 -902
  127. package/cdn/chunks/chunk-M3YRM3AV.js +0 -1
  128. package/cdn/chunks/chunk-M6BOWL2U.js +0 -1
  129. package/cdn/chunks/chunk-P5IE36FO.js +0 -8
  130. package/cdn/chunks/chunk-PXH5KN5O.js +0 -1
  131. package/cdn/chunks/chunk-RBEI6NIF.js +0 -1
  132. package/cdn/chunks/chunk-SMKIYFFI.js +0 -1
  133. package/cdn/chunks/chunk-SRLMW23F.js +0 -0
  134. package/cdn/chunks/chunk-T3YDLD2H.js +0 -11
  135. package/cdn/chunks/chunk-T6IXJ4W4.js +0 -1
  136. package/cdn/chunks/chunk-TFAUBGP2.js +0 -0
  137. package/cdn/chunks/chunk-V44O3GTW.js +0 -0
  138. package/cdn/chunks/chunk-V6B54FQW.js +0 -5
  139. package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
  140. package/cdn/chunks/chunk-VYANBI35.js +0 -1
  141. package/cdn/chunks/chunk-XUJ7TXHW.js +0 -1
  142. package/cdn/chunks/chunk-ZIZLFFSG.js +0 -0
  143. package/cdn/index.css +0 -1
  144. package/cdn/qti-item/components/index.css +0 -1
  145. package/cdn/qti-item/components/index.global.js +0 -149
  146. package/cdn/qti-item/components/index.js +0 -3549
  147. package/cdn/qti-item/components/item-container.css +0 -1
  148. package/cdn/qti-item/components/item-container.global.js +0 -149
  149. package/cdn/qti-item/components/item-container.js +0 -3549
  150. package/cdn/qti-item/index.css +0 -1
  151. package/cdn/qti-item/index.global.js +0 -149
  152. package/cdn/qti-item/index.js +0 -3549
  153. package/cdn/qti-item/qti-item.global.js +0 -114
  154. package/cdn/qti-item/qti-item.js +0 -1
  155. package/cdn/qti-test/components/index.css +0 -1
  156. package/cdn/qti-test/components/test-container.css +0 -1
  157. package/cdn/qti-test/components/test-container.global.js +0 -149
  158. package/cdn/qti-test/context/index.global.js +0 -58
  159. package/cdn/qti-test/context/index.js +0 -1
  160. package/cdn/qti-test/context/test.context.global.js +0 -58
  161. package/cdn/qti-test/context/test.context.js +0 -1
  162. package/cdn/qti-test/index.css +0 -1
  163. package/cdn/qti-test/index.global.js +0 -242
  164. package/cdn/qti-test/index.js +0 -3598
  165. package/cdn/qti-test/mixins/index.global.js +0 -1
  166. package/cdn/qti-test/mixins/index.js +0 -23
  167. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  168. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  169. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  170. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  171. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  172. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  173. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  174. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  175. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  176. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  177. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  178. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  179. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  180. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  181. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  182. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  183. package/cdn/qti-test/qti-test.global.js +0 -170
  184. package/cdn/qti-test/qti-test.js +0 -23
  185. package/cdn/qti-test/test-base.global.js +0 -170
  186. package/cdn/qti-test/test-base.js +0 -1
  187. package/dist/chunks/chunk-3G2DDBJW.js +0 -44
  188. package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
  189. package/dist/chunks/chunk-3NLCJYSX.js +0 -1
  190. package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
  191. package/dist/chunks/chunk-3ROZMGAN.js.map +0 -1
  192. package/dist/chunks/chunk-4O5F7WV7.js.map +0 -1
  193. package/dist/chunks/chunk-AAQCM2FP.js +0 -56
  194. package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
  195. package/dist/chunks/chunk-D3RGDWKP.js +0 -37
  196. package/dist/chunks/chunk-D3RGDWKP.js.map +0 -1
  197. package/dist/chunks/chunk-DJLE6EV2.js +0 -36
  198. package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
  199. package/dist/chunks/chunk-ELDMXTUQ.js.map +0 -1
  200. package/dist/chunks/chunk-EW5CTHAD.js +0 -1
  201. package/dist/chunks/chunk-HWA4A3SR.js.map +0 -1
  202. package/dist/chunks/chunk-IKZWK2C5.js +0 -1
  203. package/dist/chunks/chunk-IP7JSYO6.js +0 -1
  204. package/dist/chunks/chunk-IP7JSYO6.js.map +0 -1
  205. package/dist/chunks/chunk-JE6BMXZU.js +0 -94
  206. package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
  207. package/dist/chunks/chunk-JSPJGWGT.js +0 -20
  208. package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
  209. package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
  210. package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
  211. package/dist/chunks/chunk-MTMT2RMF.js +0 -63
  212. package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
  213. package/dist/chunks/chunk-NDJZGJUR.js +0 -65
  214. package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
  215. package/dist/chunks/chunk-OE2LFIH2.js +0 -1
  216. package/dist/chunks/chunk-OE2LFIH2.js.map +0 -1
  217. package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
  218. package/dist/chunks/chunk-OJ2XGDWK.js.map +0 -1
  219. package/dist/chunks/chunk-PUBGXXTM.js.map +0 -1
  220. package/dist/chunks/chunk-QRCUNRP5.js +0 -75
  221. package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
  222. package/dist/chunks/chunk-S6JJYCO7.js +0 -51
  223. package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
  224. package/dist/chunks/chunk-U3AALKEP.js +0 -1
  225. package/dist/chunks/chunk-U3AALKEP.js.map +0 -1
  226. package/dist/chunks/chunk-UCQFSRYF.js +0 -34
  227. package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
  228. package/dist/chunks/chunk-URGVQ64M.js +0 -1
  229. package/dist/chunks/chunk-URGVQ64M.js.map +0 -1
  230. package/dist/chunks/chunk-V4FXK4TP.js +0 -128
  231. package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
  232. package/dist/chunks/chunk-W4B23OIP.js.map +0 -1
  233. package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
  234. package/dist/chunks/chunk-XDMSEAYC.js.map +0 -1
  235. package/dist/chunks/chunk-XPDS72XY.js +0 -29
  236. package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
  237. package/dist/chunks/chunk-Y6UWSECL.js.map +0 -1
  238. package/dist/chunks/chunk-ZEFOMZNY.js.map +0 -1
  239. package/dist/index-Cvrd4KQA.d.ts +0 -109
  240. package/dist/qti-item/components/index.d.ts +0 -3
  241. package/dist/qti-item/components/index.js +0 -3856
  242. package/dist/qti-item/components/index.js.map +0 -1
  243. package/dist/qti-item/components/item-container.js +0 -3856
  244. package/dist/qti-item/components/item-container.js.map +0 -1
  245. package/dist/qti-item/index.d.ts +0 -4
  246. package/dist/qti-item/index.js +0 -3869
  247. package/dist/qti-item/index.js.map +0 -1
  248. package/dist/qti-item/qti-item.d.ts +0 -25
  249. package/dist/qti-item/qti-item.js +0 -26
  250. package/dist/qti-item/qti-item.js.map +0 -1
  251. package/dist/qti-test/components/test-container.d.ts +0 -37
  252. package/dist/qti-test/components/test-container.js +0 -3782
  253. package/dist/qti-test/components/test-container.js.map +0 -1
  254. package/dist/qti-test/context/index.d.ts +0 -6
  255. package/dist/qti-test/context/index.js +0 -9
  256. package/dist/qti-test/context/index.js.map +0 -1
  257. package/dist/qti-test/context/test.context.d.ts +0 -6
  258. package/dist/qti-test/context/test.context.js +0 -9
  259. package/dist/qti-test/context/test.context.js.map +0 -1
  260. package/dist/qti-test/index.d.ts +0 -14
  261. package/dist/qti-test/index.js +0 -4746
  262. package/dist/qti-test/index.js.map +0 -1
  263. package/dist/qti-test/mixins/index.d.ts +0 -8
  264. package/dist/qti-test/mixins/index.js +0 -350
  265. package/dist/qti-test/mixins/index.js.map +0 -1
  266. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  267. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  268. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  269. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  270. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  271. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  272. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  273. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  274. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  275. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  276. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  277. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  278. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  279. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  280. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  281. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  282. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  283. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  284. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  285. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  286. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  287. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  288. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  289. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  290. package/dist/qti-test/qti-test.d.ts +0 -68
  291. package/dist/qti-test/qti-test.js.map +0 -1
  292. package/dist/qti-test/test-base.d.ts +0 -6
  293. package/dist/qti-test/test-base.js +0 -137
  294. package/dist/qti-test/test-base.js.map +0 -1
  295. /package/cdn/{chunks/chunk-6DMSHH5X.js → chunk-22HAPLRD.js} +0 -0
  296. /package/cdn/{chunks/chunk-5FCXUJAG.js → chunk-LVW3MHTI.js} +0 -0
  297. /package/cdn/{chunks/chunk-T4HD2C4F.js → chunk-VI2WKTN4.js} +0 -0
  298. /package/dist/{chunks/chunk-3NLCJYSX.js.map → chunk-44VE5POH.js.map} +0 -0
  299. /package/dist/{chunks/chunk-6YE2KJ4C.js.map → chunk-MAC76UNI.js.map} +0 -0
  300. /package/dist/{chunks/chunk-EW5CTHAD.js.map → qti-item/core/index.js.map} +0 -0
  301. /package/dist/{chunks/chunk-IKZWK2C5.js.map → qti-test/core/index.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/components/test-item-link.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TestComponent } from './test-component.abstract';\nimport * as styles from './styles';\n\n@customElement('test-item-link')\nexport class TestItemLink extends TestComponent {\n static styles = css`\n :host {\n ${styles.btn};\n }\n :host([disabled]) {\n ${styles.dis};\n }\n `;\n\n @property({ type: String, attribute: 'item-id' })\n private itemId: string = null;\n\n constructor() {\n super();\n this.addEventListener('click', () => this._requestItem(this.itemId));\n }\n\n render() {\n return html` <slot></slot> `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-item-link': TestItemLink;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,KAAK,YAAY;AAC1B,SAAS,eAAe,gBAAgB;AAKjC,IAAM,eAAN,cAA2B,cAAc;AAAA,EAa9C,cAAc;AACZ,UAAM;AAHR,SAAQ,SAAiB;AAIvB,SAAK,iBAAiB,SAAS,MAAM,KAAK,aAAa,KAAK,MAAM,CAAC;AAAA,EACrE;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AArBa,aACJ,SAAS;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA;AAAA,QAGH,GAAG;AAAA;AAAA;AAKR;AAAA,EADP,SAAS,EAAE,MAAM,QAAQ,WAAW,UAAU,CAAC;AAAA,GAVrC,aAWH;AAXG,eAAN;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/components/styles.ts"],"sourcesContent":["// /* eslint-disable lit-plugin(no-invalid-css) */\nimport { css } from 'lit';\n\nexport const form = css`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n padding: 0.5rem 1rem;\n border-radius: 0.25rem;\n user-select: none;\n`;\n\nexport const btn = css`\n background-color: lightgray;\n ${form};\n`;\n\nexport const dis = css`\n cursor: not-allowed;\n opacity: 0.5;\n`;\n\nexport const ind = css`\n ${form};\n border: 1px solid gray;\n`;\n"],"mappings":";AACA,SAAS,WAAW;AAEb,IAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASb,IAAM,MAAM;AAAA;AAAA,IAEf,IAAI;AAAA;AAGD,IAAM,MAAM;AAAA;AAAA;AAAA;AAKZ,IAAM,MAAM;AAAA,IACf,IAAI;AAAA;AAAA;","names":[]}
@@ -1,56 +0,0 @@
1
- import {
2
- __decorateClass
3
- } from "./chunk-6YE2KJ4C.js";
4
-
5
- // src/lib/qti-test/qti-assessment-test/qti-test-part.ts
6
- import { html, LitElement } from "lit";
7
- import { customElement, property } from "lit/decorators.js";
8
- var QtiTestPart = class extends LitElement {
9
- constructor() {
10
- super(...arguments);
11
- this.identifier = "";
12
- this.title = "";
13
- this.class = "";
14
- this.NavigationMode = "nonlinear";
15
- this.submissionMode = "individual";
16
- }
17
- async connectedCallback() {
18
- super.connectedCallback();
19
- await this.updateComplete;
20
- this.dispatchEvent(
21
- new Event("qti-test-part-connected", {
22
- bubbles: true,
23
- composed: true
24
- })
25
- );
26
- }
27
- render() {
28
- return html` <slot></slot>`;
29
- }
30
- };
31
- __decorateClass([
32
- property({ type: String })
33
- ], QtiTestPart.prototype, "identifier", 2);
34
- __decorateClass([
35
- property({ type: String })
36
- ], QtiTestPart.prototype, "title", 2);
37
- __decorateClass([
38
- property({ type: String })
39
- ], QtiTestPart.prototype, "class", 2);
40
- __decorateClass([
41
- property({ type: String, attribute: "navigation-mode" })
42
- ], QtiTestPart.prototype, "NavigationMode", 2);
43
- __decorateClass([
44
- property({ type: String, attribute: "submission-mode" })
45
- ], QtiTestPart.prototype, "submissionMode", 2);
46
- QtiTestPart = __decorateClass([
47
- customElement("qti-test-part")
48
- ], QtiTestPart);
49
- if (!customElements.get("qti-test-part")) {
50
- customElements.define("qti-test-part", QtiTestPart);
51
- }
52
-
53
- export {
54
- QtiTestPart
55
- };
56
- //# sourceMappingURL=chunk-AAQCM2FP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/qti-assessment-test/qti-test-part.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n@customElement('qti-test-part')\nexport class QtiTestPart extends LitElement {\n @property({ type: String }) identifier: string = '';\n @property({ type: String }) title: string = '';\n @property({ type: String }) class: string = '';\n\n @property({ type: String, attribute: 'navigation-mode' })\n NavigationMode: 'linear' | 'nonlinear' = 'nonlinear';\n\n @property({ type: String, attribute: 'submission-mode' })\n submissionMode: 'individual' | 'simultaneous' = 'individual';\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-test-part-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-test-part')) {\n customElements.define('qti-test-part', QtiTestPart);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-test-part': QtiTestPart;\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,gBAAgB;AAEjC,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC;AAAA;AACuB,sBAAqB;AACrB,iBAAgB;AAChB,iBAAgB;AAG5C,0BAAyC;AAGzC,0BAAgD;AAAA;AAAA,EAEhD,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,MAAM,2BAA2B;AAAA,QACnC,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AAxB8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,YACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,YAEiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHf,YAGiB;AAG5B;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,kBAAkB,CAAC;AAAA,GAL7C,YAMX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,kBAAkB,CAAC;AAAA,GAR7C,YASX;AATW,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;AA2Bb,IAAI,CAAC,eAAe,IAAI,eAAe,GAAG;AACxC,iBAAe,OAAO,iBAAiB,WAAW;AACpD;","names":[]}
@@ -1,37 +0,0 @@
1
- // src/lib/decorators/live-query.ts
2
- function liveQuery(querySelector, _options) {
3
- let observer;
4
- return (proto, decoratedFnName) => {
5
- const { connectedCallback, disconnectedCallback } = proto;
6
- proto.connectedCallback = function() {
7
- connectedCallback.call(this);
8
- const callback = (mutationList) => {
9
- const elementsToWatch = Array.from(this.querySelectorAll(querySelector)).concat(
10
- Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])
11
- );
12
- for (const mutation of mutationList) {
13
- const addedNodes = Array.from(mutation.addedNodes).map((e) => e);
14
- const removedNodes = Array.from(mutation.addedNodes).map((e) => e);
15
- if (mutation.type === "childList" && addedNodes.find((n) => elementsToWatch.includes(n))) {
16
- this[decoratedFnName](addedNodes, removedNodes);
17
- }
18
- }
19
- };
20
- observer = new MutationObserver(callback);
21
- observer.observe(this, { childList: true, subtree: true });
22
- const elementsAdded = Array.from(this.querySelectorAll(querySelector)).concat(
23
- Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])
24
- );
25
- this[decoratedFnName](Array.from(elementsAdded), []);
26
- };
27
- proto.disconnectedCallback = function() {
28
- disconnectedCallback.call(this);
29
- observer.disconnect();
30
- };
31
- };
32
- }
33
-
34
- export {
35
- liveQuery
36
- };
37
- //# sourceMappingURL=chunk-D3RGDWKP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/decorators/live-query.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n\nimport type { LitElement } from 'lit';\n\ntype UpdateHandler = (prev?: unknown, next?: unknown) => void;\n\ntype NonUndefined<A> = A extends undefined ? never : A;\n\ntype UpdateHandlerFunctionKeys<T extends object> = {\n [K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;\n}[keyof T];\n\ninterface LiveQueryOptions {\n /**\n * If true, will only start watching after the initial update/render\n */\n}\n\nexport function liveQuery(querySelector: string, _options?: LiveQueryOptions) {\n let observer: MutationObserver;\n // const resolvedOptions: Required<LiveQueryOptions> = {\n // ...options\n // };\n return <ElemClass extends LitElement>(\n proto: ElemClass,\n decoratedFnName: UpdateHandlerFunctionKeys<ElemClass>\n ): void => {\n const { connectedCallback, disconnectedCallback } = proto;\n\n proto.connectedCallback = function (this: ElemClass) {\n connectedCallback.call(this);\n const callback = (mutationList: MutationRecord[]) => {\n const elementsToWatch = Array.from(this.querySelectorAll(querySelector)).concat(\n Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])\n );\n for (const mutation of mutationList) {\n const addedNodes = Array.from(mutation.addedNodes).map(e => e as Element);\n const removedNodes = Array.from(mutation.addedNodes).map(e => e as Element);\n if (mutation.type === 'childList' && addedNodes.find(n => elementsToWatch.includes(n))) {\n (this[decoratedFnName] as unknown as UpdateHandler)(addedNodes, removedNodes);\n }\n }\n };\n observer = new MutationObserver(callback);\n observer.observe(this, { childList: true, subtree: true });\n\n const elementsAdded = Array.from(this.querySelectorAll(querySelector)).concat(\n Array.from(this.shadowRoot?.querySelectorAll(querySelector) || [])\n );\n (this[decoratedFnName] as unknown as UpdateHandler)(Array.from(elementsAdded), []);\n };\n\n proto.disconnectedCallback = function (this: ElemClass) {\n disconnectedCallback.call(this);\n observer.disconnect();\n };\n };\n}\n"],"mappings":";AA8BO,SAAS,UAAU,eAAuB,UAA6B;AAC5E,MAAI;AAIJ,SAAO,CACL,OACA,oBACS;AACT,UAAM,EAAE,mBAAmB,qBAAqB,IAAI;AAEpD,UAAM,oBAAoB,WAA2B;AACnD,wBAAkB,KAAK,IAAI;AAC3B,YAAM,WAAW,CAAC,iBAAmC;AACnD,cAAM,kBAAkB,MAAM,KAAK,KAAK,iBAAiB,aAAa,CAAC,EAAE;AAAA,UACvE,MAAM,KAAK,KAAK,YAAY,iBAAiB,aAAa,KAAK,CAAC,CAAC;AAAA,QACnE;AACA,mBAAW,YAAY,cAAc;AACnC,gBAAM,aAAa,MAAM,KAAK,SAAS,UAAU,EAAE,IAAI,OAAK,CAAY;AACxE,gBAAM,eAAe,MAAM,KAAK,SAAS,UAAU,EAAE,IAAI,OAAK,CAAY;AAC1E,cAAI,SAAS,SAAS,eAAe,WAAW,KAAK,OAAK,gBAAgB,SAAS,CAAC,CAAC,GAAG;AACtF,YAAC,KAAK,eAAe,EAA+B,YAAY,YAAY;AAAA,UAC9E;AAAA,QACF;AAAA,MACF;AACA,iBAAW,IAAI,iBAAiB,QAAQ;AACxC,eAAS,QAAQ,MAAM,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAEzD,YAAM,gBAAgB,MAAM,KAAK,KAAK,iBAAiB,aAAa,CAAC,EAAE;AAAA,QACrE,MAAM,KAAK,KAAK,YAAY,iBAAiB,aAAa,KAAK,CAAC,CAAC;AAAA,MACnE;AACA,MAAC,KAAK,eAAe,EAA+B,MAAM,KAAK,aAAa,GAAG,CAAC,CAAC;AAAA,IACnF;AAEA,UAAM,uBAAuB,WAA2B;AACtD,2BAAqB,KAAK,IAAI;AAC9B,eAAS,WAAW;AAAA,IACtB;AAAA,EACF;AACF;","names":[]}
@@ -1,36 +0,0 @@
1
- import {
2
- TestLoaderMixin
3
- } from "./chunk-UCQFSRYF.js";
4
- import {
5
- TestNavigationMixin
6
- } from "./chunk-NDJZGJUR.js";
7
- import {
8
- TestViewMixin
9
- } from "./chunk-S6JJYCO7.js";
10
- import {
11
- TestBase
12
- } from "./chunk-V4FXK4TP.js";
13
- import {
14
- __decorateClass
15
- } from "./chunk-6YE2KJ4C.js";
16
-
17
- // src/lib/qti-test/qti-test.ts
18
- import { html } from "lit";
19
- import { customElement } from "lit/decorators.js";
20
- var QtiTest = class extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {
21
- /**
22
- * Renders the component's template.
23
- * Provides a default `<slot>` for content projection.
24
- */
25
- render() {
26
- return html`<slot></slot>`;
27
- }
28
- };
29
- QtiTest = __decorateClass([
30
- customElement("qti-test")
31
- ], QtiTest);
32
-
33
- export {
34
- QtiTest
35
- };
36
- //# sourceMappingURL=chunk-DJLE6EV2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/qti-test.ts"],"sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TestLoaderMixin, TestNavigationMixin, TestViewMixin } from './mixins';\nimport { TestBase } from './test-base';\n\n/**\n * `<qti-test>` is a custom element designed for rendering and interacting with QTI (Question and Test Interoperability) tests.\n *\n * This component leverages several mixins to provide functionality for loading, navigating, processing, and displaying QTI test assessments.\n *\n * ### Example Usage\n *\n * Minimal example including navigation:\n *\n * ```html\n * <qti-test>\n * <test-container test-url=\"./path/to/assessment.xml\"></test-container>\n * <nav class=\"flex\">\n * <test-prev></test-prev>\n * <test-next></test-next>\n * </nav>\n * </qti-test>\n * ```\n *\n * Use the following file structure\n * A qti-test loads a QTI3.0 assessmenttest.xml file from a package folder.\n *\n * ```plaintext\n * Root/\n * ├── index.html\n * └── /assets/api/examples/\n * ├── assessmenttest.xml\n * └── imsmanifest.xml\n *\n * ```\n *\n * ### Test components\n *\n * Use test components inside the qti-test component for added functionality.\n * ### Test next\n * `<test-next> | TestNext`\n *\n * ### Test prev\n *\n * `<test-prev> | TestPrev`\n * ### Test components\n *\n * You can use normal class names to style the elements.\n * And you can use the `test-prev` and `test-next` elements to navigate through the test.\n *\n */\n@customElement('qti-test')\nexport class QtiTest extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {\n /**\n * Renders the component's template.\n * Provides a default `<slot>` for content projection.\n */\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-test': QtiTest;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAmDvB,IAAM,UAAN,cAAsB,gBAAgB,oBAAoB,cAAc,QAAQ,CAAC,CAAC,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzF,SAAS;AACP,WAAO;AAAA,EACT;AACF;AARa,UAAN;AAAA,EADN,cAAc,UAAU;AAAA,GACZ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/decorators/watch.ts"],"sourcesContent":["import type { LitElement } from 'lit';\n\ntype UpdateHandler = (prev?: unknown, next?: unknown) => void;\n\ntype NonUndefined<A> = A extends undefined ? never : A;\n\nexport type UpdateHandlerFunctionKeys<T extends object> = {\n [K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;\n}[keyof T];\n\ninterface WatchOptions {\n /**\n * If true, will only start watching after the initial update/render\n */\n waitUntilFirstUpdate?: boolean;\n}\n\n/**\n * Runs when observed properties change, e.g. @property or @state, but before the component updates. To wait for an\n * update to complete after a change occurs, use `await this.updateComplete` in the handler. To start watching after the\n * initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n *\n * Usage:\n *\n * @watch('propName')\n * handlePropChange(oldValue, newValue) {\n * ...\n * }\n */\nexport function watch(propertyName: string | string[], options?: WatchOptions) {\n const resolvedOptions: Required<WatchOptions> = {\n waitUntilFirstUpdate: false,\n ...options\n };\n return <ElemClass extends LitElement>(\n proto: ElemClass,\n decoratedFnName: UpdateHandlerFunctionKeys<ElemClass> | any\n ) => {\n // @ts-expect-error - update is a protected property\n const { update } = proto;\n const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];\n\n // @ts-expect-error - update is a protected property\n proto.update = function (this: ElemClass, changedProps: Map<keyof ElemClass, ElemClass[keyof ElemClass]>) {\n watchedProperties.forEach(property => {\n const key = property as keyof ElemClass;\n if (changedProps.has(key)) {\n const oldValue = changedProps.get(key);\n const newValue = this[key];\n\n if (oldValue !== newValue) {\n if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {\n (this[decoratedFnName] as unknown as UpdateHandler)(oldValue, newValue);\n }\n }\n }\n });\n\n update.call(this, changedProps);\n };\n };\n}\n"],"mappings":";AA6BO,SAAS,MAAM,cAAiC,SAAwB;AAC7E,QAAM,kBAA0C;AAAA,IAC9C,sBAAsB;AAAA,IACtB,GAAG;AAAA,EACL;AACA,SAAO,CACL,OACA,oBACG;AAEH,UAAM,EAAE,OAAO,IAAI;AACnB,UAAM,oBAAoB,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,YAAY;AAGpF,UAAM,SAAS,SAA2B,cAAgE;AACxG,wBAAkB,QAAQ,cAAY;AACpC,cAAM,MAAM;AACZ,YAAI,aAAa,IAAI,GAAG,GAAG;AACzB,gBAAM,WAAW,aAAa,IAAI,GAAG;AACrC,gBAAM,WAAW,KAAK,GAAG;AAEzB,cAAI,aAAa,UAAU;AACzB,gBAAI,CAAC,gBAAgB,wBAAwB,KAAK,YAAY;AAC5D,cAAC,KAAK,eAAe,EAA+B,UAAU,QAAQ;AAAA,YACxE;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO,KAAK,MAAM,YAAY;AAAA,IAChC;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-EW5CTHAD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/components/test-prev.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TestComponent } from './test-component.abstract';\nimport * as styles from './styles';\n\n/**\n * Represents a custom element for navigating to the previous test item.\n *\n * @remarks\n * This element provides functionality for navigating to the previous test item.\n *\n * @example\n * ```html\n * <test-prev></test-prev>\n * ```\n */\n@customElement('test-prev')\nexport class TestPrev extends TestComponent {\n static styles = css`\n :host {\n ${styles.btn};\n }\n :host([disabled]) {\n ${styles.dis};\n }\n `;\n\n constructor() {\n super();\n this._internals.role = 'button';\n this._internals.ariaLabel = 'Next item';\n\n this.addEventListener('click', e => {\n e.preventDefault();\n if (!this.disabled) this._requestItem(this.items[this.itemIndex - 1].identifier);\n });\n }\n\n willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('_testContext')) {\n this.disabled = !this._testElement?.el || this.itemIndex === 0 || this.itemIndex === -1;\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-previous': TestPrev;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,KAAK,YAAY;AAC1B,SAAS,qBAAqB;AAgBvB,IAAM,WAAN,cAAuB,cAAc;AAAA,EAU1C,cAAc;AACZ,UAAM;AACN,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,YAAY;AAE5B,SAAK,iBAAiB,SAAS,OAAK;AAClC,QAAE,eAAe;AACjB,UAAI,CAAC,KAAK,SAAU,MAAK,aAAa,KAAK,MAAM,KAAK,YAAY,CAAC,EAAE,UAAU;AAAA,IACjF,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,mBAA2D;AACpE,UAAM,WAAW,iBAAiB;AAClC,QAAI,kBAAkB,IAAI,cAAc,GAAG;AACzC,WAAK,WAAW,CAAC,KAAK,cAAc,MAAM,KAAK,cAAc,KAAK,KAAK,cAAc;AAAA,IACvF;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AA/Ba,SACJ,SAAS;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA;AAAA,QAGH,GAAG;AAAA;AAAA;AANL,WAAN;AAAA,EADN,cAAc,WAAW;AAAA,GACb;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-IKZWK2C5.js.map
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-IP7JSYO6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,94 +0,0 @@
1
- import {
2
- item_default
3
- } from "./chunk-Y6UWSECL.js";
4
- import {
5
- watch
6
- } from "./chunk-ELDMXTUQ.js";
7
- import {
8
- qtiTransformTest
9
- } from "./chunk-XDMSEAYC.js";
10
- import {
11
- __decorateClass
12
- } from "./chunk-6YE2KJ4C.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-JE6BMXZU.js.map
@@ -1 +0,0 @@
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';\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-container class=\"m-4 bg-white\" test-url=\"./path/to/assessmenttest.xml\"></test-container>\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;AAiBf,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":[]}
@@ -1,20 +0,0 @@
1
- import {
2
- __decorateClass
3
- } from "./chunk-6YE2KJ4C.js";
4
-
5
- // src/lib/qti-item/qti-item.ts
6
- import { html, LitElement } from "lit";
7
- import { customElement } from "lit/decorators.js";
8
- var QtiItem = class extends LitElement {
9
- render() {
10
- return html`<slot></slot>`;
11
- }
12
- };
13
- QtiItem = __decorateClass([
14
- customElement("qti-item")
15
- ], QtiItem);
16
-
17
- export {
18
- QtiItem
19
- };
20
- //# sourceMappingURL=chunk-JSPJGWGT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-item/qti-item.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n/**\n * `<qti-item>` is a custom element designed for rendering a single `qti-assessment-item`.\n * It can also host some functionalities to interact with the item like scoring, showing feedback, etc.\n * Placing a mandatory `<item-container>` inside '<qti-item>' will load or parse the item and render it.\n * See `<item-container>` for more details.\n *\n * ```html\n * <qti-item>\n * <item-container class=\"m-4 bg-white\" item-url=\"./path/to/item.xml\"></item-container>\n * </qti-item>\n * ```\n */\n@customElement('qti-item')\nexport class QtiItem extends LitElement {\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-item': QtiItem;\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,MAAM,kBAAkB;AACjC,SAAS,qBAAqB;AAevB,IAAM,UAAN,cAAsB,WAAW;AAAA,EACtC,SAAS;AACP,WAAO;AAAA,EACT;AACF;AAJa,UAAN;AAAA,EADN,cAAc,UAAU;AAAA,GACZ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/components/test-component.abstract.ts","../../src/lib/decorators/prop-internal-state.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { propInternalState } from '../../decorators';\nimport { testContext, testElement, TestElement, TestContext } from '../context';\nimport { watch } from '../../decorators/watch';\n\nexport abstract class TestComponent extends LitElement {\n @propInternalState({\n type: Boolean,\n reflect: true,\n aria: 'ariaDisabled' // Maps to `aria-disabled` attribute\n })\n public disabled = true;\n\n @state()\n @consume({ context: testContext, subscribe: true })\n protected _testContext?: TestContext;\n\n @state()\n @consume({ context: testElement, subscribe: true })\n protected _testElement?: TestElement;\n @watch('_testElement')\n _handleTestElementChange(_oldValue: TestElement, newValue: TestElement) {\n if (newValue.el) {\n this.disabled = false;\n }\n }\n\n protected _internals: ElementInternals;\n\n protected items;\n protected itemIndex;\n protected view;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n protected willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has('_testContext')) {\n const { items = [], navItemId } = this._testContext ?? {};\n this.itemIndex = items.findIndex(item => item.identifier === navItemId);\n this.items = items;\n this.view = this._testContext?.view;\n }\n }\n\n protected _switchView(view: string) {\n this.dispatchEvent(\n new CustomEvent('on-test-switch-view', {\n composed: true,\n bubbles: true,\n detail: view\n })\n );\n }\n\n protected _requestItem(identifier: string): void {\n this.dispatchEvent(\n new CustomEvent('qti-request-test-item', {\n composed: true,\n bubbles: true,\n detail: identifier\n })\n );\n }\n}\n","import { ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { PropertyDeclaration } from 'lit';\n\n// Extended decorator options\ninterface InternalStateOptions extends PropertyDeclaration {\n aria?: string; // Corresponding ARIA attribute, e.g., 'aria-disabled'\n}\n\nexport function propInternalState(options: InternalStateOptions) {\n return (protoOrDescriptor: any, name: string) => {\n // Apply the default Lit `@property` decorator\n property(options)(protoOrDescriptor, name);\n\n // Intercept the property descriptor to enhance functionality\n const key = `__${name}`; // Internal backing field\n\n Object.defineProperty(protoOrDescriptor, name, {\n get() {\n return this[key];\n },\n set(value: any) {\n const oldValue = this[key];\n this[key] = value;\n\n // Trigger updates if value changes\n if (oldValue !== value) {\n // Update internals state\n if (this._internals?.states) {\n const stateName = name.toLowerCase();\n if (value) {\n this._internals.states.add(`--${stateName}`);\n } else {\n this._internals.states.delete(`--${stateName}`);\n }\n }\n\n // Update ARIA attributes if specified\n if (options.aria && this._internals) {\n const ariaAttribute = options.aria;\n if (value) {\n this._internals[ariaAttribute] = 'true';\n } else {\n this._internals[ariaAttribute] = null;\n }\n }\n\n // Request an update\n (this as ReactiveElement).requestUpdate(name, oldValue);\n }\n },\n configurable: true,\n enumerable: true\n });\n };\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAC3B,SAAS,aAAa;;;ACDtB,SAAS,gBAAgB;AAQlB,SAAS,kBAAkB,SAA+B;AAC/D,SAAO,CAAC,mBAAwB,SAAiB;AAE/C,aAAS,OAAO,EAAE,mBAAmB,IAAI;AAGzC,UAAM,MAAM,KAAK,IAAI;AAErB,WAAO,eAAe,mBAAmB,MAAM;AAAA,MAC7C,MAAM;AACJ,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,MACA,IAAI,OAAY;AACd,cAAM,WAAW,KAAK,GAAG;AACzB,aAAK,GAAG,IAAI;AAGZ,YAAI,aAAa,OAAO;AAEtB,cAAI,KAAK,YAAY,QAAQ;AAC3B,kBAAM,YAAY,KAAK,YAAY;AACnC,gBAAI,OAAO;AACT,mBAAK,WAAW,OAAO,IAAI,KAAK,SAAS,EAAE;AAAA,YAC7C,OAAO;AACL,mBAAK,WAAW,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,YAChD;AAAA,UACF;AAGA,cAAI,QAAQ,QAAQ,KAAK,YAAY;AACnC,kBAAM,gBAAgB,QAAQ;AAC9B,gBAAI,OAAO;AACT,mBAAK,WAAW,aAAa,IAAI;AAAA,YACnC,OAAO;AACL,mBAAK,WAAW,aAAa,IAAI;AAAA,YACnC;AAAA,UACF;AAGA,UAAC,KAAyB,cAAc,MAAM,QAAQ;AAAA,QACxD;AAAA,MACF;AAAA,MACA,cAAc;AAAA,MACd,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;ADhDO,IAAe,gBAAf,cAAqC,WAAW;AAAA,EA4BrD,cAAc;AACZ,UAAM;AAvBR,SAAO,WAAW;AAwBhB,SAAK,aAAa,KAAK,gBAAgB;AAAA,EACzC;AAAA,EAfA,yBAAyB,WAAwB,UAAuB;AACtE,QAAI,SAAS,IAAI;AACf,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AAAA,EAaU,WAAW,mBAA2D;AAC9E,QAAI,kBAAkB,IAAI,cAAc,GAAG;AACzC,YAAM,EAAE,QAAQ,CAAC,GAAG,UAAU,IAAI,KAAK,gBAAgB,CAAC;AACxD,WAAK,YAAY,MAAM,UAAU,UAAQ,KAAK,eAAe,SAAS;AACtE,WAAK,QAAQ;AACb,WAAK,OAAO,KAAK,cAAc;AAAA,IACjC;AAAA,EACF;AAAA,EAEU,YAAY,MAAc;AAClC,SAAK;AAAA,MACH,IAAI,YAAY,uBAAuB;AAAA,QACrC,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEU,aAAa,YAA0B;AAC/C,SAAK;AAAA,MACH,IAAI,YAAY,yBAAyB;AAAA,QACvC,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAvDS;AAAA,EALN,kBAAkB;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA;AAAA,EACR,CAAC;AAAA,GALmB,cAMb;AAIG;AAAA,EAFT,MAAM;AAAA,EACN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAT9B,cAUV;AAIA;AAAA,EAFT,MAAM;AAAA,EACN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAb9B,cAcV;AAEV;AAAA,EADC,MAAM,cAAc;AAAA,GAfD,cAgBpB;","names":[]}
@@ -1 +0,0 @@
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';\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 api = await qtiTransformItem().load(this.itemURL);\n this.itemDoc = 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;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":[]}
@@ -1,63 +0,0 @@
1
- import {
2
- testContext
3
- } from "./chunk-XDFXD3BI.js";
4
- import {
5
- __decorateClass
6
- } from "./chunk-6YE2KJ4C.js";
7
-
8
- // src/lib/qti-test/qti-assessment-test/qti-assessment-section.ts
9
- import { consume } from "@lit/context";
10
- import { html, LitElement } from "lit";
11
- import { property } from "lit/decorators.js";
12
- var stringToBooleanConverter = {
13
- fromAttribute(value) {
14
- return value === "true";
15
- },
16
- toAttribute(value) {
17
- return value ? "true" : "false";
18
- }
19
- };
20
- var QtiAssessmentSection = class extends LitElement {
21
- async connectedCallback() {
22
- super.connectedCallback();
23
- await this.updateComplete;
24
- this.dispatchEvent(
25
- new Event("qti-assessment-section-connected", {
26
- bubbles: true,
27
- composed: true
28
- })
29
- );
30
- }
31
- render() {
32
- return html`<slot name="qti-rubric-block"></slot><slot></slot>`;
33
- }
34
- };
35
- __decorateClass([
36
- property({ type: String })
37
- ], QtiAssessmentSection.prototype, "identifier", 2);
38
- __decorateClass([
39
- property({ type: String })
40
- ], QtiAssessmentSection.prototype, "required", 2);
41
- __decorateClass([
42
- property({ type: Boolean, converter: stringToBooleanConverter })
43
- ], QtiAssessmentSection.prototype, "fixed", 2);
44
- __decorateClass([
45
- property({ type: String })
46
- ], QtiAssessmentSection.prototype, "title", 2);
47
- __decorateClass([
48
- property({ type: Boolean, converter: stringToBooleanConverter })
49
- ], QtiAssessmentSection.prototype, "visible", 2);
50
- __decorateClass([
51
- property({ type: Boolean, converter: stringToBooleanConverter, attribute: "keep-together" })
52
- ], QtiAssessmentSection.prototype, "keepTogether", 2);
53
- __decorateClass([
54
- consume({ context: testContext, subscribe: true })
55
- ], QtiAssessmentSection.prototype, "_testContext", 2);
56
- if (!customElements.get("qti-assessment-section")) {
57
- customElements.define("qti-assessment-section", QtiAssessmentSection);
58
- }
59
-
60
- export {
61
- QtiAssessmentSection
62
- };
63
- //# sourceMappingURL=chunk-MTMT2RMF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/qti-assessment-test/qti-assessment-section.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\n\n// https://www.imsglobal.org/sites/default/files/spec/qti/v3/info/index.html#Root_AssessmentSection\n\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\nexport class QtiAssessmentSection extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) required: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed: boolean;\n @property({ type: String }) title: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) visible: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter, attribute: 'keep-together' }) keepTogether: boolean;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-assessment-section-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html`<slot name=\"qti-rubric-block\"></slot><slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-assessment-section')) {\n customElements.define('qti-assessment-section', QtiAssessmentSection);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-section': QtiAssessmentSection;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,gBAAgB;AAKzB,IAAM,2BAA2B;AAAA,EAC/B,cAAc,OAAwB;AACpC,WAAO,UAAU;AAAA,EACnB;AAAA,EACA,YAAY,OAAwB;AAClC,WAAO,QAAQ,SAAS;AAAA,EAC1B;AACF;AAEO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAWnD,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,MAAM,oCAAoC;AAAA,QAC5C,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AAxB8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,qBACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,qBAEiB;AACsC;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GAHrD,qBAGuD;AACtC;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJf,qBAIiB;AACsC;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GALrD,qBAKuD;AAC4B;AAAA,EAA7F,SAAS,EAAE,MAAM,SAAS,WAAW,0BAA0B,WAAW,gBAAgB,CAAC;AAAA,GANjF,qBAMmF;AAGvF;AAAA,EADN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GARvC,qBASJ;AAkBT,IAAI,CAAC,eAAe,IAAI,wBAAwB,GAAG;AACjD,iBAAe,OAAO,0BAA0B,oBAAoB;AACtE;","names":[]}
@@ -1,65 +0,0 @@
1
- // src/lib/qti-test/mixins/test-navigation.mixin.ts
2
- var TestNavigationMixin = (superClass) => {
3
- class TestNavigationClass extends superClass {
4
- constructor(...args) {
5
- super(...args);
6
- this.addEventListener("qti-request-test-item", ({ detail: navItemId }) => {
7
- if (!navItemId) return;
8
- this._clearLoadedItems();
9
- const itemRefEl = this.testElement.el.querySelector(
10
- `qti-assessment-item-ref[identifier="${navItemId}"]`
11
- );
12
- const promise = this._loadItemRequest(itemRefEl.href, false);
13
- const navPartId = itemRefEl.closest("qti-test-part").identifier;
14
- const navSectionId = itemRefEl.closest("qti-assessment-section").identifier;
15
- this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId, navItemLoading: true };
16
- if (promise) {
17
- promise.then((doc) => {
18
- itemRefEl.xmlDoc = doc;
19
- requestAnimationFrame(
20
- () => this.dispatchEvent(new CustomEvent("qti-item-connected", { bubbles: true, composed: true }))
21
- );
22
- this._testContext = { ...this._testContext, navItemLoading: false };
23
- }).catch((error) => console.error("Failed to load item:", error));
24
- } else {
25
- console.info("Load item request was not handled:", itemRefEl.href);
26
- }
27
- });
28
- this.addEventListener("qti-assessment-test-connected", () => {
29
- let navItemId = this._testContext.navItemId;
30
- if (!navItemId) {
31
- const itemRefEl = this.testElement.el.querySelector("qti-assessment-item-ref");
32
- navItemId = itemRefEl.identifier;
33
- }
34
- this.dispatchEvent(
35
- new CustomEvent("qti-request-test-item", { detail: navItemId, bubbles: true, composed: true })
36
- );
37
- });
38
- }
39
- _clearLoadedItems() {
40
- const itemRefEls = this.testElement.el.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);
41
- Array.from(itemRefEls).forEach((itemElement) => {
42
- itemElement.xmlDoc = null;
43
- });
44
- }
45
- _loadItemRequest(href, cancelPreviousRequest = true) {
46
- const event = new CustomEvent("qti-load-item-request", {
47
- bubbles: true,
48
- composed: true,
49
- detail: {
50
- href,
51
- promise: null,
52
- cancelPreviousRequest
53
- }
54
- });
55
- this.dispatchEvent(event);
56
- return event.detail.promise;
57
- }
58
- }
59
- return TestNavigationClass;
60
- };
61
-
62
- export {
63
- TestNavigationMixin
64
- };
65
- //# sourceMappingURL=chunk-NDJZGJUR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/mixins/test-navigation.mixin.ts"],"sourcesContent":["import { QtiAssessmentItemRef } from '../qti-assessment-test';\nimport { TestBase } from '../test-base';\n\ndeclare module '../context/test.context' {\n interface TestContext {\n navPartId?: string | null;\n navSectionId?: string | null;\n navItemId?: string | null;\n navItemLoading?: boolean;\n navTestLoading?: boolean;\n }\n}\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestNavigationInterface {}\nexport const TestNavigationMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestNavigationClass extends superClass {\n constructor(...args: any[]) {\n super(...args);\n\n // this.addEventListener('qti-request-test-part', (e: CustomEvent) => {\n // this._clearLoadedItems();\n // });\n\n // Load all items of a section\n // this.addEventListener('qti-request-test-section', ({ detail: navSectionId }: CustomEvent<string>) => {\n // this._clearLoadedItems();\n\n // const sectionRefEl = this.testElement.el.querySelector<QtiAssessmentItemRef>(\n // `qti-assessment-section[identifier=\"${navSectionId}\"]`\n // );\n\n // const itemRefEls = this.testElement.el.querySelectorAll(\n // `qti-assessment-section[identifier=\"${navSectionId}\"] > qti-assessment-item-ref`\n // );\n\n // const navPartId = sectionRefEl.closest('qti-test-part').identifier;\n\n // this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId: null };\n\n // const items = Array.from(itemRefEls).map((itemRef: QtiAssessmentItemRef) => {\n // return { identifier: itemRef.identifier, href: itemRef.href, element: itemRef };\n // });\n\n // const promises = items.map((item, index) => {\n // return new Promise((resolve, reject) => {\n // return this._loadItemRequest(item.href, false)\n // .then(doc => (item.element.xmlDoc = doc))\n // .then(() => resolve(item))\n // .catch(error => console.error('Failed to load item:', error));\n // });\n // });\n\n // Promise.all(promises)\n // .then(results => {\n // requestAnimationFrame(() =>\n // this.dispatchEvent(new CustomEvent('qti-test-connected', { detail: results, bubbles: true, composed: true }))\n // );\n // })\n // .catch(error => console.error('One or more promises failed:', error));\n // });\n\n // load an item\n this.addEventListener('qti-request-test-item', ({ detail: navItemId }: CustomEvent<string>) => {\n if (!navItemId) return;\n this._clearLoadedItems();\n\n const itemRefEl = this.testElement.el.querySelector<QtiAssessmentItemRef>(\n `qti-assessment-item-ref[identifier=\"${navItemId}\"]`\n );\n\n const promise = this._loadItemRequest(itemRefEl.href, false);\n\n const navPartId = itemRefEl.closest('qti-test-part').identifier;\n const navSectionId = itemRefEl.closest('qti-assessment-section').identifier;\n this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId, navItemLoading: true };\n\n if (promise) {\n promise\n .then(doc => {\n itemRefEl.xmlDoc = doc;\n requestAnimationFrame(() =>\n this.dispatchEvent(new CustomEvent('qti-item-connected', { bubbles: true, composed: true }))\n );\n this._testContext = { ...this._testContext, navItemLoading: false };\n })\n .catch(error => console.error('Failed to load item:', error));\n } else {\n console.info('Load item request was not handled:', itemRefEl.href);\n }\n });\n\n this.addEventListener('qti-assessment-test-connected', () => {\n let navItemId = this._testContext.navItemId;\n if (!navItemId) {\n const itemRefEl = this.testElement.el.querySelector<QtiAssessmentItemRef>('qti-assessment-item-ref');\n navItemId = itemRefEl.identifier;\n }\n this.dispatchEvent(\n new CustomEvent('qti-request-test-item', { detail: navItemId, bubbles: true, composed: true })\n );\n });\n }\n\n private _clearLoadedItems(): void {\n const itemRefEls = this.testElement.el.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);\n Array.from(itemRefEls).forEach((itemElement: QtiAssessmentItemRef) => {\n itemElement.xmlDoc = null;\n });\n }\n\n private _loadItemRequest(href: string, cancelPreviousRequest: boolean = true): Promise<DocumentFragment> {\n const event = new CustomEvent('qti-load-item-request', {\n bubbles: true,\n composed: true,\n detail: {\n href: href,\n promise: null,\n cancelPreviousRequest\n }\n });\n this.dispatchEvent(event);\n\n return event.detail.promise;\n }\n }\n\n return TestNavigationClass as Constructor<TestNavigationInterface> & T;\n};\n"],"mappings":";AAgBO,IAAM,sBAAsB,CAAkC,eAAkB;AAAA,EACrF,MAAe,4BAA4B,WAAW;AAAA,IACpD,eAAe,MAAa;AAC1B,YAAM,GAAG,IAAI;AA6Cb,WAAK,iBAAiB,yBAAyB,CAAC,EAAE,QAAQ,UAAU,MAA2B;AAC7F,YAAI,CAAC,UAAW;AAChB,aAAK,kBAAkB;AAEvB,cAAM,YAAY,KAAK,YAAY,GAAG;AAAA,UACpC,uCAAuC,SAAS;AAAA,QAClD;AAEA,cAAM,UAAU,KAAK,iBAAiB,UAAU,MAAM,KAAK;AAE3D,cAAM,YAAY,UAAU,QAAQ,eAAe,EAAE;AACrD,cAAM,eAAe,UAAU,QAAQ,wBAAwB,EAAE;AACjE,aAAK,eAAe,EAAE,GAAG,KAAK,cAAc,WAAW,cAAc,WAAW,gBAAgB,KAAK;AAErG,YAAI,SAAS;AACX,kBACG,KAAK,SAAO;AACX,sBAAU,SAAS;AACnB;AAAA,cAAsB,MACpB,KAAK,cAAc,IAAI,YAAY,sBAAsB,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC,CAAC;AAAA,YAC7F;AACA,iBAAK,eAAe,EAAE,GAAG,KAAK,cAAc,gBAAgB,MAAM;AAAA,UACpE,CAAC,EACA,MAAM,WAAS,QAAQ,MAAM,wBAAwB,KAAK,CAAC;AAAA,QAChE,OAAO;AACL,kBAAQ,KAAK,sCAAsC,UAAU,IAAI;AAAA,QACnE;AAAA,MACF,CAAC;AAED,WAAK,iBAAiB,iCAAiC,MAAM;AAC3D,YAAI,YAAY,KAAK,aAAa;AAClC,YAAI,CAAC,WAAW;AACd,gBAAM,YAAY,KAAK,YAAY,GAAG,cAAoC,yBAAyB;AACnG,sBAAY,UAAU;AAAA,QACxB;AACA,aAAK;AAAA,UACH,IAAI,YAAY,yBAAyB,EAAE,QAAQ,WAAW,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,QAC/F;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEQ,oBAA0B;AAChC,YAAM,aAAa,KAAK,YAAY,GAAG,iBAAiB,6CAA6C;AACrG,YAAM,KAAK,UAAU,EAAE,QAAQ,CAAC,gBAAsC;AACpE,oBAAY,SAAS;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,IAEQ,iBAAiB,MAAc,wBAAiC,MAAiC;AACvG,YAAM,QAAQ,IAAI,YAAY,yBAAyB;AAAA,QACrD,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,UACN;AAAA,UACA,SAAS;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AACD,WAAK,cAAc,KAAK;AAExB,aAAO,MAAM,OAAO;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-OE2LFIH2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-OJ2XGDWK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/components/test-next.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport * as styles from './styles';\nimport { TestComponent } from './test-component.abstract';\n\n/**\n * Represents a custom element for navigating to the next test item.\n *\n * @remarks\n * This element provides functionality for navigating to the next test item.\n *\n * @example\n * ```html\n * <test-next></test-next>\n * ```\n */\n@customElement('test-next')\nexport class TestNext extends TestComponent {\n static styles = css`\n :host {\n ${styles.btn};\n }\n :host([disabled]) {\n ${styles.dis};\n }\n `;\n\n constructor() {\n super();\n this._internals.role = 'button';\n this._internals.ariaLabel = 'Next item';\n\n this.addEventListener('click', e => {\n e.preventDefault();\n if (!this.disabled) this._requestItem(this.items[this.itemIndex + 1].identifier);\n });\n }\n\n willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('_testContext')) {\n this.disabled = !this._testElement?.el || this.itemIndex < 0 || this.itemIndex >= this.items.length - 1;\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-next': TestNext;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,KAAK,YAAY;AAC1B,SAAS,qBAAqB;AAgBvB,IAAM,WAAN,cAAuB,cAAc;AAAA,EAU1C,cAAc;AACZ,UAAM;AACN,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,YAAY;AAE5B,SAAK,iBAAiB,SAAS,OAAK;AAClC,QAAE,eAAe;AACjB,UAAI,CAAC,KAAK,SAAU,MAAK,aAAa,KAAK,MAAM,KAAK,YAAY,CAAC,EAAE,UAAU;AAAA,IACjF,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,mBAA2D;AACpE,UAAM,WAAW,iBAAiB;AAClC,QAAI,kBAAkB,IAAI,cAAc,GAAG;AACzC,WAAK,WAAW,CAAC,KAAK,cAAc,MAAM,KAAK,YAAY,KAAK,KAAK,aAAa,KAAK,MAAM,SAAS;AAAA,IACxG;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AA/Ba,SACJ,SAAS;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA;AAAA,QAGH,GAAG;AAAA;AAAA;AANL,WAAN;AAAA,EADN,cAAc,WAAW;AAAA,GACb;","names":[]}
@@ -1,75 +0,0 @@
1
- import {
2
- testContext
3
- } from "./chunk-XDFXD3BI.js";
4
- import {
5
- __decorateClass
6
- } from "./chunk-6YE2KJ4C.js";
7
-
8
- // src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts
9
- import { consume } from "@lit/context";
10
- import { html, LitElement } from "lit";
11
- import { property } from "lit/decorators.js";
12
- var stringToBooleanConverter = {
13
- fromAttribute(value) {
14
- return value === "true";
15
- },
16
- toAttribute(value) {
17
- return value ? "true" : "false";
18
- }
19
- };
20
- var QtiAssessmentItemRef = class extends LitElement {
21
- constructor() {
22
- super(...arguments);
23
- this.weigths = /* @__PURE__ */ new Map();
24
- }
25
- // the XMLDocument
26
- createRenderRoot() {
27
- return this;
28
- }
29
- get assessmentItem() {
30
- return this.renderRoot?.querySelector("qti-assessment-item");
31
- }
32
- async connectedCallback() {
33
- super.connectedCallback();
34
- await this.updateComplete;
35
- this.dispatchEvent(
36
- new CustomEvent("qti-assessment-item-ref-connected", {
37
- bubbles: true,
38
- composed: true,
39
- detail: { identifier: this.identifier, href: this.href, category: this.category }
40
- })
41
- );
42
- }
43
- render() {
44
- return html`${this.xmlDoc}`;
45
- }
46
- };
47
- __decorateClass([
48
- property({ type: String })
49
- ], QtiAssessmentItemRef.prototype, "category", 2);
50
- __decorateClass([
51
- property({ type: String })
52
- ], QtiAssessmentItemRef.prototype, "identifier", 2);
53
- __decorateClass([
54
- property({ type: Boolean, converter: stringToBooleanConverter })
55
- ], QtiAssessmentItemRef.prototype, "required", 2);
56
- __decorateClass([
57
- property({ type: Boolean, converter: stringToBooleanConverter })
58
- ], QtiAssessmentItemRef.prototype, "fixed", 2);
59
- __decorateClass([
60
- property({ type: String })
61
- ], QtiAssessmentItemRef.prototype, "href", 2);
62
- __decorateClass([
63
- consume({ context: testContext, subscribe: true })
64
- ], QtiAssessmentItemRef.prototype, "_testContext", 2);
65
- __decorateClass([
66
- property({ type: Object, attribute: false })
67
- ], QtiAssessmentItemRef.prototype, "xmlDoc", 2);
68
- if (!customElements.get("qti-assessment-item-ref")) {
69
- customElements.define("qti-assessment-item-ref", QtiAssessmentItemRef);
70
- }
71
-
72
- export {
73
- QtiAssessmentItemRef
74
- };
75
- //# sourceMappingURL=chunk-QRCUNRP5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\nimport { QtiAssessmentItem } from '../../qti-components';\n\n// Converter function to interpret \"true\" and \"false\" as booleans\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\n// @customElement('qti-assessment-item-ref')\nexport class QtiAssessmentItemRef extends LitElement {\n @property({ type: String }) category?: string;\n @property({ type: String }) identifier?: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) required?: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed?: boolean;\n @property({ type: String }) href?: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n weigths: Map<string, number> = new Map();\n\n @property({ type: Object, attribute: false })\n xmlDoc!: DocumentFragment; // the XMLDocument\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n get assessmentItem(): QtiAssessmentItem | null {\n return this.renderRoot?.querySelector('qti-assessment-item');\n }\n\n async connectedCallback(): Promise<void> {\n // debugger;\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-item-ref-connected', {\n bubbles: true,\n composed: true,\n detail: { identifier: this.identifier, href: this.href, category: this.category }\n })\n );\n }\n\n render() {\n return html`${this.xmlDoc}`;\n }\n}\n\nif (!customElements.get('qti-assessment-item-ref')) {\n customElements.define('qti-assessment-item-ref', QtiAssessmentItemRef);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-item-ref': QtiAssessmentItemRef;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,gBAAgB;AAKzB,IAAM,2BAA2B;AAAA,EAC/B,cAAc,OAAwB;AACpC,WAAO,UAAU;AAAA,EACnB;AAAA,EACA,YAAY,OAAwB;AAClC,WAAO,QAAQ,SAAS;AAAA,EAC1B;AACF;AAGO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAA9C;AAAA;AAUL,mBAA+B,oBAAI,IAAI;AAAA;AAAA;AAAA,EAK7B,mBAAmD;AAC3D,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,iBAA2C;AAC7C,WAAO,KAAK,YAAY,cAAc,qBAAqB;AAAA,EAC7D;AAAA,EAEA,MAAM,oBAAmC;AAEvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,YAAY,qCAAqC;AAAA,QACnD,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,EAAE,YAAY,KAAK,YAAY,MAAM,KAAK,MAAM,UAAU,KAAK,SAAS;AAAA,MAClF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO,OAAO,KAAK,MAAM;AAAA,EAC3B;AACF;AAtC8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,qBACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,qBAEiB;AACsC;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GAHrD,qBAGuD;AACA;AAAA,EAAjE,SAAS,EAAE,MAAM,SAAS,WAAW,yBAAyB,CAAC;AAAA,GAJrD,qBAIuD;AACtC;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,qBAKiB;AAGrB;AAAA,EADN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAPvC,qBAQJ;AAKP;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,MAAM,CAAC;AAAA,GAZjC,qBAaX;AA4BF,IAAI,CAAC,eAAe,IAAI,yBAAyB,GAAG;AAClD,iBAAe,OAAO,2BAA2B,oBAAoB;AACvE;","names":[]}