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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/cdn/chunks/chunk-3V6LA7B3.js +8 -0
  2. package/cdn/chunks/chunk-4WXQYE2P.js +8 -0
  3. package/cdn/chunks/chunk-5BR5CJFH.js +24 -0
  4. package/cdn/chunks/chunk-5GCSZ3CH.js +73 -0
  5. package/cdn/chunks/chunk-5P7CTN7Q.js +11 -0
  6. package/cdn/chunks/chunk-6MCYE7P5.js +1 -0
  7. package/cdn/chunks/chunk-6S4CDN3T.js +43 -0
  8. package/cdn/chunks/chunk-DZCKF45D.js +5 -0
  9. package/cdn/chunks/chunk-FRS2J3OS.js +59 -0
  10. package/cdn/chunks/chunk-FTKONGII.js +934 -0
  11. package/cdn/chunks/chunk-IAP2CEE7.js +1 -0
  12. package/cdn/chunks/chunk-IMJOPCFR.js +1 -0
  13. package/cdn/chunks/chunk-KWPDTFYH.js +1 -0
  14. package/cdn/chunks/{chunk-UIEC4LXR.js → chunk-L4CUWIE6.js} +1 -1
  15. package/cdn/chunks/chunk-LZZB4VGC.js +48 -0
  16. package/cdn/chunks/{chunk-CFXQCNG6.js → chunk-MJMONWKB.js} +18 -2
  17. package/cdn/chunks/chunk-PKT2SJQD.js +8 -0
  18. package/cdn/chunks/chunk-QQCGUVEV.js +1 -0
  19. package/cdn/chunks/chunk-R33OODNX.js +1 -0
  20. package/cdn/chunks/chunk-RXKI3AO4.js +1 -0
  21. package/cdn/chunks/chunk-TQBDBMWL.js +5 -0
  22. package/cdn/chunks/chunk-X2KBNXRO.js +6 -0
  23. package/cdn/exports/interaction.js +1 -0
  24. package/cdn/exports/item.context.js +1 -0
  25. package/cdn/exports/qti-assessment-item.context.js +1 -0
  26. package/cdn/exports/qti-condition-expression.js +1 -0
  27. package/cdn/exports/qti-expression.js +1 -0
  28. package/cdn/index.global.js +56 -107
  29. package/cdn/index.js +1 -4503
  30. package/cdn/qti-components/index.js +1 -924
  31. package/cdn/qti-item/core/index.js +1 -0
  32. package/cdn/qti-loader/index.js +1 -23
  33. package/cdn/qti-test/components/index.js +1 -3598
  34. package/cdn/qti-test/components/styles.js +1 -17
  35. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  36. package/cdn/qti-test/components/test-item-link.js +1 -24
  37. package/cdn/qti-test/components/test-next.js +1 -24
  38. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
  39. package/cdn/qti-test/components/test-prev.js +1 -24
  40. package/cdn/qti-test/components/test-view.js +1 -11
  41. package/cdn/qti-test/core/index.js +1 -0
  42. package/cdn/qti-transformers/index.js +1 -23
  43. package/dist/chunks/{chunk-PUBGXXTM.js → chunk-2V6LQV2K.js} +5 -5
  44. package/dist/chunks/{chunk-LKINC6JO.js → chunk-3EU75IUF.js} +6 -6
  45. package/dist/chunks/chunk-3EU75IUF.js.map +1 -0
  46. package/dist/chunks/chunk-4GNVYCBN.js +627 -0
  47. package/dist/chunks/chunk-4GNVYCBN.js.map +1 -0
  48. package/dist/chunks/{chunk-HWA4A3SR.js → chunk-4WVLWWYJ.js} +5 -5
  49. package/dist/chunks/chunk-6JXR63MH.js +50 -0
  50. package/dist/chunks/chunk-6JXR63MH.js.map +1 -0
  51. package/dist/chunks/{chunk-3ROZMGAN.js → chunk-7QMCKYDR.js} +3 -3
  52. package/dist/chunks/{chunk-W4B23OIP.js → chunk-A24F75DB.js} +3 -3
  53. package/dist/chunks/chunk-BPHQLJWE.js +102 -0
  54. package/dist/chunks/chunk-BPHQLJWE.js.map +1 -0
  55. package/dist/chunks/chunk-DLUJN2FW.js +22 -0
  56. package/dist/chunks/chunk-DLUJN2FW.js.map +1 -0
  57. package/dist/chunks/{chunk-3OXGDCSU.js → chunk-DU37U6PW.js} +4835 -4991
  58. package/dist/chunks/chunk-DU37U6PW.js.map +1 -0
  59. package/dist/chunks/{chunk-XPDS72XY.js → chunk-FV7HWK54.js} +1 -1
  60. package/dist/chunks/chunk-FV7HWK54.js.map +1 -0
  61. package/dist/chunks/chunk-GSWZT6N2.js +50 -0
  62. package/dist/chunks/chunk-GSWZT6N2.js.map +1 -0
  63. package/dist/{qti-item/qti-item.js → chunks/chunk-H2JE6IVU.js} +2 -13
  64. package/dist/chunks/{chunk-LROTNPC2.js → chunk-HHVRU3AJ.js} +21 -8
  65. package/dist/chunks/chunk-HHVRU3AJ.js.map +1 -0
  66. package/dist/chunks/{chunk-Y6UWSECL.js → chunk-J2SHENRN.js} +2 -2
  67. package/dist/chunks/chunk-J2SHENRN.js.map +1 -0
  68. package/dist/chunks/chunk-KOEILLVS.js +8 -0
  69. package/dist/chunks/chunk-KOEILLVS.js.map +1 -0
  70. package/dist/chunks/{chunk-ZEFOMZNY.js → chunk-KYAIMBP5.js} +3 -3
  71. package/dist/chunks/chunk-O6WEZVEM.js +43 -0
  72. package/dist/chunks/chunk-O6WEZVEM.js.map +1 -0
  73. package/dist/chunks/{chunk-XDFXD3BI.js → chunk-UFYWCLXF.js} +2 -2
  74. package/dist/chunks/chunk-UFYWCLXF.js.map +1 -0
  75. package/dist/chunks/chunk-UN2IFSGC.js +1 -0
  76. package/dist/chunks/chunk-XSI6FXGD.js +19 -0
  77. package/dist/chunks/chunk-XSI6FXGD.js.map +1 -0
  78. package/dist/chunks/chunk-ZPNJ2HP5.js +71 -0
  79. package/dist/chunks/chunk-ZPNJ2HP5.js.map +1 -0
  80. package/dist/exports/expression-result.d.ts +19 -0
  81. package/dist/exports/expression-result.js +1 -0
  82. package/dist/exports/interaction.d.ts +23 -0
  83. package/dist/exports/interaction.interface.d.ts +13 -0
  84. package/dist/exports/interaction.interface.js +1 -0
  85. package/dist/exports/interaction.js +8 -0
  86. package/dist/exports/item.context.d.ts +12 -0
  87. package/dist/exports/item.context.js +8 -0
  88. package/dist/exports/qti-assessment-item.context.d.ts +10 -0
  89. package/dist/exports/qti-assessment-item.context.js +8 -0
  90. package/dist/exports/qti-condition-expression.d.ts +13 -0
  91. package/dist/exports/qti-condition-expression.js +10 -0
  92. package/dist/exports/qti-expression.d.ts +21 -0
  93. package/dist/exports/qti-expression.js +9 -0
  94. package/dist/exports/variables.d.ts +3 -0
  95. package/dist/exports/variables.js +1 -0
  96. package/dist/exports/variables.js.map +1 -0
  97. package/dist/index.d.ts +12 -8
  98. package/dist/index.js +140 -11045
  99. package/dist/index.js.map +1 -1
  100. package/dist/qti-components/index.d.ts +36 -9
  101. package/dist/qti-components/index.js +95 -6438
  102. package/dist/qti-components/index.js.map +1 -1
  103. package/dist/qti-components-jsx.d.ts +371 -666
  104. package/dist/qti-item/{components/item-container.d.ts → core/index.d.ts} +22 -1
  105. package/dist/qti-item/core/index.js +13 -0
  106. package/dist/qti-item/core/index.js.map +1 -0
  107. package/dist/qti-loader/index.d.ts +7 -1
  108. package/dist/qti-loader/index.js +6 -305
  109. package/dist/qti-loader/index.js.map +1 -1
  110. package/dist/{qti-simple-choice-DxWcdKHi.d.ts → qti-response-declaration-DAeBp8HH.d.ts} +463 -613
  111. package/dist/qti-test/components/index.d.ts +8 -4
  112. package/dist/qti-test/components/index.js +24 -4135
  113. package/dist/qti-test/components/index.js.map +1 -1
  114. package/dist/qti-test/components/styles.js +7 -22
  115. package/dist/qti-test/components/styles.js.map +1 -1
  116. package/dist/qti-test/components/test-component.abstract.d.ts +8 -3
  117. package/dist/qti-test/components/test-component.abstract.js +7 -145
  118. package/dist/qti-test/components/test-component.abstract.js.map +1 -1
  119. package/dist/qti-test/components/test-item-link.d.ts +8 -3
  120. package/dist/qti-test/components/test-item-link.js +9 -198
  121. package/dist/qti-test/components/test-item-link.js.map +1 -1
  122. package/dist/qti-test/components/test-next.d.ts +8 -3
  123. package/dist/qti-test/components/test-next.js +9 -205
  124. package/dist/qti-test/components/test-next.js.map +1 -1
  125. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +8 -3
  126. package/dist/qti-test/components/test-paging-buttons-stamp.js +8 -214
  127. package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
  128. package/dist/qti-test/components/test-prev.d.ts +8 -3
  129. package/dist/qti-test/components/test-prev.js +9 -205
  130. package/dist/qti-test/components/test-prev.js.map +1 -1
  131. package/dist/qti-test/components/test-view.d.ts +8 -3
  132. package/dist/qti-test/components/test-view.js +8 -205
  133. package/dist/qti-test/components/test-view.js.map +1 -1
  134. package/dist/qti-test/core/index.d.ts +132 -0
  135. package/dist/qti-test/core/index.js +27 -0
  136. package/dist/qti-test/core/index.js.map +1 -0
  137. package/dist/qti-transformers/index.js +6 -287
  138. package/dist/qti-transformers/index.js.map +1 -1
  139. package/dist/{test-base-BJwG9Ie8.d.ts → test.context-CaENAJNk.d.ts} +22 -30
  140. package/dist/variables-cO3DzqJy.d.ts +33 -0
  141. package/dist/vscode.html-custom-data.json +226 -293
  142. package/package.json +83 -77
  143. package/cdn/chunks/chunk-5O3Z7TDV.js +0 -1
  144. package/cdn/chunks/chunk-65LFT33L.js +0 -8
  145. package/cdn/chunks/chunk-6D25UFJR.js +0 -8
  146. package/cdn/chunks/chunk-6UGPNL7M.js +0 -1
  147. package/cdn/chunks/chunk-CSUKVUZF.js +0 -3
  148. package/cdn/chunks/chunk-CSY3WI5A.js +0 -1
  149. package/cdn/chunks/chunk-G5O7EN45.js +0 -5
  150. package/cdn/chunks/chunk-JLNHEMQG.js +0 -1
  151. package/cdn/chunks/chunk-LPWIM7QJ.js +0 -902
  152. package/cdn/chunks/chunk-M3YRM3AV.js +0 -1
  153. package/cdn/chunks/chunk-M6BOWL2U.js +0 -1
  154. package/cdn/chunks/chunk-P5IE36FO.js +0 -8
  155. package/cdn/chunks/chunk-PXH5KN5O.js +0 -1
  156. package/cdn/chunks/chunk-RBEI6NIF.js +0 -1
  157. package/cdn/chunks/chunk-SMKIYFFI.js +0 -1
  158. package/cdn/chunks/chunk-SRLMW23F.js +0 -0
  159. package/cdn/chunks/chunk-T3YDLD2H.js +0 -11
  160. package/cdn/chunks/chunk-T4HD2C4F.js +0 -1
  161. package/cdn/chunks/chunk-T6IXJ4W4.js +0 -1
  162. package/cdn/chunks/chunk-TFAUBGP2.js +0 -0
  163. package/cdn/chunks/chunk-V44O3GTW.js +0 -0
  164. package/cdn/chunks/chunk-V6B54FQW.js +0 -5
  165. package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
  166. package/cdn/chunks/chunk-VYANBI35.js +0 -1
  167. package/cdn/chunks/chunk-ZIZLFFSG.js +0 -0
  168. package/cdn/index.css +0 -1
  169. package/cdn/qti-components/index.global.js +0 -226
  170. package/cdn/qti-item/components/index.css +0 -1
  171. package/cdn/qti-item/components/index.global.js +0 -149
  172. package/cdn/qti-item/components/index.js +0 -3549
  173. package/cdn/qti-item/components/item-container.css +0 -1
  174. package/cdn/qti-item/components/item-container.global.js +0 -149
  175. package/cdn/qti-item/components/item-container.js +0 -3549
  176. package/cdn/qti-item/index.css +0 -1
  177. package/cdn/qti-item/index.global.js +0 -149
  178. package/cdn/qti-item/index.js +0 -3549
  179. package/cdn/qti-item/qti-item.global.js +0 -114
  180. package/cdn/qti-item/qti-item.js +0 -1
  181. package/cdn/qti-loader/index.global.js +0 -1
  182. package/cdn/qti-test/components/index.css +0 -1
  183. package/cdn/qti-test/components/index.global.js +0 -242
  184. package/cdn/qti-test/components/styles.global.js +0 -44
  185. package/cdn/qti-test/components/test-component.abstract.global.js +0 -170
  186. package/cdn/qti-test/components/test-container.css +0 -1
  187. package/cdn/qti-test/components/test-container.global.js +0 -149
  188. package/cdn/qti-test/components/test-container.js +0 -3549
  189. package/cdn/qti-test/components/test-item-link.global.js +0 -170
  190. package/cdn/qti-test/components/test-next.global.js +0 -170
  191. package/cdn/qti-test/components/test-next.spec.css +0 -1
  192. package/cdn/qti-test/components/test-next.spec.global.js +0 -297
  193. package/cdn/qti-test/components/test-next.spec.js +0 -5215
  194. package/cdn/qti-test/components/test-paging-buttons-stamp.global.js +0 -207
  195. package/cdn/qti-test/components/test-prev.global.js +0 -170
  196. package/cdn/qti-test/components/test-view.global.js +0 -170
  197. package/cdn/qti-test/context/index.global.js +0 -58
  198. package/cdn/qti-test/context/index.js +0 -1
  199. package/cdn/qti-test/context/test.context.global.js +0 -58
  200. package/cdn/qti-test/context/test.context.js +0 -1
  201. package/cdn/qti-test/index.css +0 -1
  202. package/cdn/qti-test/index.global.js +0 -242
  203. package/cdn/qti-test/index.js +0 -3598
  204. package/cdn/qti-test/mixins/index.global.js +0 -1
  205. package/cdn/qti-test/mixins/index.js +0 -23
  206. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  207. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  208. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  209. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  210. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  211. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  212. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  213. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  214. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  215. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  216. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  217. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  218. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  219. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  220. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  221. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  222. package/cdn/qti-test/qti-test.global.js +0 -170
  223. package/cdn/qti-test/qti-test.js +0 -23
  224. package/cdn/qti-test/test-base.global.js +0 -170
  225. package/cdn/qti-test/test-base.js +0 -1
  226. package/cdn/qti-transformers/index.global.js +0 -1
  227. package/dist/chunks/chunk-3G2DDBJW.js +0 -44
  228. package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
  229. package/dist/chunks/chunk-3NLCJYSX.js +0 -1
  230. package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
  231. package/dist/chunks/chunk-6YE2KJ4C.js +0 -55
  232. package/dist/chunks/chunk-AAQCM2FP.js +0 -56
  233. package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
  234. package/dist/chunks/chunk-DJLE6EV2.js +0 -36
  235. package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
  236. package/dist/chunks/chunk-EW5CTHAD.js +0 -1
  237. package/dist/chunks/chunk-IKZWK2C5.js +0 -1
  238. package/dist/chunks/chunk-IP7JSYO6.js +0 -1
  239. package/dist/chunks/chunk-JE6BMXZU.js +0 -94
  240. package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
  241. package/dist/chunks/chunk-JSPJGWGT.js +0 -20
  242. package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
  243. package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
  244. package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
  245. package/dist/chunks/chunk-MTMT2RMF.js +0 -63
  246. package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
  247. package/dist/chunks/chunk-NDJZGJUR.js +0 -65
  248. package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
  249. package/dist/chunks/chunk-OE2LFIH2.js +0 -1
  250. package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
  251. package/dist/chunks/chunk-QRCUNRP5.js +0 -75
  252. package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
  253. package/dist/chunks/chunk-S6JJYCO7.js +0 -51
  254. package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
  255. package/dist/chunks/chunk-U3AALKEP.js +0 -1
  256. package/dist/chunks/chunk-UCQFSRYF.js +0 -34
  257. package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
  258. package/dist/chunks/chunk-URGVQ64M.js +0 -1
  259. package/dist/chunks/chunk-V4FXK4TP.js +0 -128
  260. package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
  261. package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
  262. package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
  263. package/dist/chunks/chunk-Y6UWSECL.js.map +0 -1
  264. package/dist/index-Cvrd4KQA.d.ts +0 -109
  265. package/dist/qti-item/components/index.d.ts +0 -3
  266. package/dist/qti-item/components/index.js +0 -3856
  267. package/dist/qti-item/components/index.js.map +0 -1
  268. package/dist/qti-item/components/item-container.js +0 -3856
  269. package/dist/qti-item/components/item-container.js.map +0 -1
  270. package/dist/qti-item/index.d.ts +0 -4
  271. package/dist/qti-item/index.js +0 -3869
  272. package/dist/qti-item/index.js.map +0 -1
  273. package/dist/qti-item/qti-item.d.ts +0 -25
  274. package/dist/qti-item/qti-item.js.map +0 -1
  275. package/dist/qti-test/components/test-container.d.ts +0 -37
  276. package/dist/qti-test/components/test-container.js +0 -3782
  277. package/dist/qti-test/components/test-container.js.map +0 -1
  278. package/dist/qti-test/components/test-next.spec.d.ts +0 -16
  279. package/dist/qti-test/components/test-next.spec.js +0 -56915
  280. package/dist/qti-test/components/test-next.spec.js.map +0 -1
  281. package/dist/qti-test/context/index.d.ts +0 -6
  282. package/dist/qti-test/context/index.js +0 -9
  283. package/dist/qti-test/context/index.js.map +0 -1
  284. package/dist/qti-test/context/test.context.d.ts +0 -6
  285. package/dist/qti-test/context/test.context.js +0 -9
  286. package/dist/qti-test/context/test.context.js.map +0 -1
  287. package/dist/qti-test/index.d.ts +0 -14
  288. package/dist/qti-test/index.js +0 -4746
  289. package/dist/qti-test/index.js.map +0 -1
  290. package/dist/qti-test/mixins/index.d.ts +0 -8
  291. package/dist/qti-test/mixins/index.js +0 -350
  292. package/dist/qti-test/mixins/index.js.map +0 -1
  293. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  294. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  295. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  296. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  297. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  298. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  299. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  300. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  301. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  302. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  303. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  304. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  305. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  306. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  307. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  308. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  309. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  310. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  311. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  312. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  313. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  314. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  315. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  316. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  317. package/dist/qti-test/qti-test.d.ts +0 -68
  318. package/dist/qti-test/qti-test.js +0 -500
  319. package/dist/qti-test/qti-test.js.map +0 -1
  320. package/dist/qti-test/test-base.d.ts +0 -6
  321. package/dist/qti-test/test-base.js +0 -137
  322. package/dist/qti-test/test-base.js.map +0 -1
  323. /package/cdn/chunks/{chunk-6DMSHH5X.js → chunk-3GO57DNP.js} +0 -0
  324. /package/cdn/{chunks/chunk-DAZR7RUI.js → exports/expression-result.js} +0 -0
  325. /package/cdn/{chunks/chunk-EOPEMJS3.js → exports/interaction.interface.js} +0 -0
  326. /package/cdn/{chunks/chunk-GEFUIFM7.js → exports/variables.js} +0 -0
  327. /package/dist/chunks/{chunk-PUBGXXTM.js.map → chunk-2V6LQV2K.js.map} +0 -0
  328. /package/dist/chunks/{chunk-HWA4A3SR.js.map → chunk-4WVLWWYJ.js.map} +0 -0
  329. /package/dist/chunks/{chunk-3ROZMGAN.js.map → chunk-7QMCKYDR.js.map} +0 -0
  330. /package/dist/chunks/{chunk-W4B23OIP.js.map → chunk-A24F75DB.js.map} +0 -0
  331. /package/dist/chunks/{chunk-3NLCJYSX.js.map → chunk-H2JE6IVU.js.map} +0 -0
  332. /package/dist/chunks/{chunk-ZEFOMZNY.js.map → chunk-KYAIMBP5.js.map} +0 -0
  333. /package/dist/chunks/{chunk-6YE2KJ4C.js.map → chunk-UN2IFSGC.js.map} +0 -0
  334. /package/dist/{chunks/chunk-EW5CTHAD.js.map → exports/expression-result.js.map} +0 -0
  335. /package/dist/{chunks/chunk-IKZWK2C5.js.map → exports/interaction.interface.js.map} +0 -0
  336. /package/dist/{chunks/chunk-IP7JSYO6.js.map → exports/interaction.js.map} +0 -0
  337. /package/dist/{chunks/chunk-OE2LFIH2.js.map → exports/item.context.js.map} +0 -0
  338. /package/dist/{chunks/chunk-OJ2XGDWK.js.map → exports/qti-assessment-item.context.js.map} +0 -0
  339. /package/dist/{chunks/chunk-U3AALKEP.js.map → exports/qti-condition-expression.js.map} +0 -0
  340. /package/dist/{chunks/chunk-URGVQ64M.js.map → exports/qti-expression.js.map} +0 -0
@@ -1,290 +1,9 @@
1
- // src/lib/qti-transformers/qti-transformers.ts
2
- var xml = String.raw;
3
- var xmlToHTML = xml`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
5
- <xsl:template match="@*|node()">
6
- <xsl:copy>
7
- <xsl:apply-templates select="@*|node()"/>
8
- </xsl:copy>
9
- </xsl:template>
10
-
11
- <!-- remove existing namespaces -->
12
- <xsl:template match="*">
13
- <!-- remove element prefix -->
14
- <xsl:element name="{local-name()}">
15
- <!-- process attributes -->
16
- <xsl:for-each select="@*">
17
- <!-- remove attribute prefix -->
18
- <xsl:attribute name="{local-name()}">
19
- <xsl:value-of select="."/>
20
- </xsl:attribute>
21
- </xsl:for-each>
22
- <xsl:apply-templates/>
23
- </xsl:element>
24
- </xsl:template>
25
- </xsl:stylesheet>`;
26
- function extendElementName(xmlFragment, tagName, extension) {
27
- xmlFragment.querySelectorAll(tagName).forEach((element) => {
28
- const newTagName = `${tagName}-${extension}`;
29
- const newElement = createElementWithNewTagName(element, newTagName);
30
- element.replaceWith(newElement);
31
- });
32
- }
33
- function extendElementsWithClass(xmlFragment, classNamePattern) {
34
- xmlFragment.querySelectorAll("*").forEach((element) => {
35
- const classList = element.classList;
36
- if (classList) {
37
- classList.forEach((className) => {
38
- if (className.startsWith(`${classNamePattern}:`)) {
39
- const suffix = className.slice(`${classNamePattern}:`.length);
40
- const newTagName = `${element.nodeName}-${suffix}`;
41
- const newElement = createElementWithNewTagName(element, newTagName);
42
- element.replaceWith(newElement);
43
- }
44
- });
45
- }
46
- });
47
- }
48
- function createElementWithNewTagName(element, newTagName) {
49
- const newElement = document.createElement(newTagName);
50
- for (const attr of element.attributes) {
51
- newElement.setAttribute(attr.name, attr.value);
52
- }
53
- while (element.firstChild) {
54
- newElement.appendChild(element.firstChild);
55
- }
56
- return newElement;
57
- }
58
- function itemsFromTest(xmlFragment) {
59
- const items = [];
60
- xmlFragment.querySelectorAll("qti-assessment-item-ref").forEach((el) => {
61
- const identifier = el.getAttribute("identifier");
62
- const href = el.getAttribute("href");
63
- const category = el.getAttribute("category");
64
- items.push({ identifier, href, category });
65
- });
66
- return items;
67
- }
68
- var currentRequest = null;
69
- function loadXML(url, cancelPreviousRequest = false) {
70
- if (cancelPreviousRequest && currentRequest !== null) {
71
- currentRequest.abort();
72
- }
73
- return new Promise((resolve, reject) => {
74
- const xhr = new XMLHttpRequest();
75
- currentRequest = xhr;
76
- xhr.open("GET", url, true);
77
- xhr.responseType = "document";
78
- xhr.onload = () => {
79
- if (xhr.status >= 200 && xhr.status < 300) {
80
- resolve(xhr.responseXML);
81
- } else {
82
- reject(xhr.statusText);
83
- }
84
- };
85
- xhr.onerror = () => {
86
- reject(xhr.statusText);
87
- };
88
- xhr.send();
89
- });
90
- }
91
- function parseXML(xmlDocument) {
92
- const parser = new DOMParser();
93
- const xmlFragment = parser.parseFromString(xmlDocument, "text/xml");
94
- return xmlFragment;
95
- }
96
- function toHTML(xmlFragment) {
97
- const processor = new XSLTProcessor();
98
- const xsltDocument = new DOMParser().parseFromString(xmlToHTML, "text/xml");
99
- processor.importStylesheet(xsltDocument);
100
- const itemHTMLFragment = processor.transformToFragment(xmlFragment, document);
101
- return itemHTMLFragment;
102
- }
103
- function setLocation(xmlFragment, location) {
104
- if (!location.endsWith("/")) {
105
- location += "/";
106
- }
107
- xmlFragment.querySelectorAll("[src],[href],[primary-path]").forEach((elWithSrc) => {
108
- let attr = "";
109
- if (elWithSrc.getAttribute("src")) {
110
- attr = "src";
111
- }
112
- if (elWithSrc.getAttribute("href")) {
113
- attr = "href";
114
- }
115
- if (elWithSrc.getAttribute("primary-path")) {
116
- attr = "primary-path";
117
- }
118
- const attrValue = elWithSrc.getAttribute(attr)?.trim();
119
- if (!attrValue.startsWith("data:") && !attrValue.startsWith("http")) {
120
- const newSrcValue = location + encodeURI(attrValue);
121
- elWithSrc.setAttribute(attr, newSrcValue);
122
- }
123
- });
124
- }
125
- function convertCDATAtoComment(xmlFragment) {
126
- const cdataElements = xmlFragment.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value');
127
- cdataElements.forEach((element) => {
128
- const commentText = document.createComment(element.textContent);
129
- element.replaceChild(commentText, element.firstChild);
130
- });
131
- }
132
- function stripStyleSheets(xmlFragment) {
133
- xmlFragment.querySelectorAll("qti-stylesheet").forEach((stylesheet) => stylesheet.remove());
134
- }
135
-
136
- // src/lib/qti-transformers/qti-transform-item.ts
137
- var qtiTransformItem = () => {
138
- let xmlFragment;
139
- const api = {
140
- async load(uri, cancelPreviousRequest = false) {
141
- return new Promise((resolve) => {
142
- loadXML(uri, cancelPreviousRequest).then((xml2) => {
143
- xmlFragment = xml2;
144
- api.path(uri.substring(0, uri.lastIndexOf("/")));
145
- return resolve(api);
146
- });
147
- });
148
- },
149
- parse(xmlString) {
150
- xmlFragment = parseXML(xmlString);
151
- return api;
152
- },
153
- path: (location) => {
154
- setLocation(xmlFragment, location);
155
- return api;
156
- },
157
- fn(fn) {
158
- fn(xmlFragment);
159
- return api;
160
- },
161
- pciHooks(uri) {
162
- const attributes = ["hook", "module"];
163
- const documentPath = uri.substring(0, uri.lastIndexOf("/"));
164
- for (const attribute of attributes) {
165
- const srcAttributes = xmlFragment.querySelectorAll("[" + attribute + "]");
166
- srcAttributes.forEach((node) => {
167
- const srcValue = node.getAttribute(attribute);
168
- if (!srcValue.startsWith("data:") && !srcValue.startsWith("http")) {
169
- node.setAttribute("base-url", uri);
170
- node.setAttribute(
171
- "module",
172
- documentPath + "/" + encodeURI(srcValue + (srcValue.endsWith(".js") ? "" : ".js"))
173
- );
174
- }
175
- });
176
- }
177
- return api;
178
- },
179
- extendElementName: (tagName, extension) => {
180
- extendElementName(xmlFragment, tagName, extension);
181
- return api;
182
- },
183
- extendElementsWithClass: (param = "extend") => {
184
- extendElementsWithClass(xmlFragment, param);
185
- return api;
186
- },
187
- customInteraction(baseRef, baseItem) {
188
- const qtiCustomInteraction = xmlFragment.querySelector("qti-custom-interaction");
189
- const qtiCustomInteractionObject = qtiCustomInteraction.querySelector("object");
190
- qtiCustomInteraction.setAttribute("data-base-ref", baseRef);
191
- qtiCustomInteraction.setAttribute("data-base-item", baseRef + baseItem);
192
- qtiCustomInteraction.setAttribute("data", qtiCustomInteractionObject.getAttribute("data"));
193
- qtiCustomInteraction.setAttribute("width", qtiCustomInteractionObject.getAttribute("width"));
194
- qtiCustomInteraction.setAttribute("height", qtiCustomInteractionObject.getAttribute("height"));
195
- qtiCustomInteraction.removeChild(qtiCustomInteractionObject);
196
- return api;
197
- },
198
- convertCDATAtoComment() {
199
- convertCDATAtoComment(xmlFragment);
200
- return api;
201
- },
202
- stripStyleSheets() {
203
- stripStyleSheets(xmlFragment);
204
- return api;
205
- },
206
- html() {
207
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
208
- },
209
- xml() {
210
- return new XMLSerializer().serializeToString(xmlFragment);
211
- },
212
- htmlDoc() {
213
- return toHTML(xmlFragment);
214
- },
215
- xmlDoc() {
216
- return xmlFragment;
217
- }
218
- };
219
- return api;
220
- };
221
-
222
- // src/lib/qti-transformers/qti-transform-manifest.ts
223
- var qtiTransformManifest = () => {
224
- let xmlFragment;
225
- const api = {
226
- async load(uri) {
227
- return new Promise((resolve) => {
228
- loadXML(uri).then((xml2) => {
229
- xmlFragment = xml2;
230
- return resolve(api);
231
- });
232
- });
233
- },
234
- parse(xmlString) {
235
- xmlFragment = parseXML(xmlString);
236
- },
237
- assessmentTest() {
238
- const el = xmlFragment.querySelector('resource[type="imsqti_test_xmlv3p0"]');
239
- return { href: el.getAttribute("href"), identifier: el.getAttribute("identifier") };
240
- }
241
- };
242
- return api;
243
- };
244
-
245
- // src/lib/qti-transformers/qti-transform-test.ts
246
- var qtiTransformTest = () => {
247
- let xmlFragment;
248
- const api = {
249
- async load(uri) {
250
- return new Promise((resolve, _) => {
251
- loadXML(uri).then((xml2) => {
252
- xmlFragment = xml2;
253
- api.path(uri.substring(0, uri.lastIndexOf("/")));
254
- return resolve(api);
255
- });
256
- });
257
- },
258
- parse(xmlString) {
259
- xmlFragment = parseXML(xmlString);
260
- return api;
261
- },
262
- path: (location) => {
263
- setLocation(xmlFragment, location);
264
- return api;
265
- },
266
- fn(fn) {
267
- fn(xmlFragment);
268
- return api;
269
- },
270
- items() {
271
- return itemsFromTest(xmlFragment);
272
- },
273
- html() {
274
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
275
- },
276
- xml() {
277
- return new XMLSerializer().serializeToString(xmlFragment);
278
- },
279
- htmlDoc() {
280
- return toHTML(xmlFragment);
281
- },
282
- xmlDoc() {
283
- return xmlFragment;
284
- }
285
- };
286
- return api;
287
- };
1
+ import {
2
+ qtiTransformItem,
3
+ qtiTransformManifest,
4
+ qtiTransformTest
5
+ } from "../chunks/chunk-XDMSEAYC.js";
6
+ import "../chunks/chunk-H2JE6IVU.js";
288
7
  export {
289
8
  qtiTransformItem,
290
9
  qtiTransformManifest,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/qti-transformers/qti-transformers.ts","../../src/lib/qti-transformers/qti-transform-item.ts","../../src/lib/qti-transformers/qti-transform-manifest.ts","../../src/lib/qti-transformers/qti-transform-test.ts"],"sourcesContent":["const xml = String.raw;\n\n/* <!-- convert CDATA to comments -->\n <xsl:template match=\"text()[contains(., 'CDATA')]\">\n <xsl:comment>\n <xsl:value-of select=\".\"/>\n </xsl:comment>\n</xsl:template>\n*/\n\n/*\n <!-- remove xml comments -->\n <xsl:template match=\"comment()\" />\n */\n\nconst xmlToHTML = xml`<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n<xsl:output method=\"html\" version=\"5.0\" encoding=\"UTF-8\" indent=\"yes\" />\n <xsl:template match=\"@*|node()\">\n <xsl:copy>\n <xsl:apply-templates select=\"@*|node()\"/>\n </xsl:copy>\n </xsl:template>\n\n <!-- remove existing namespaces -->\n <xsl:template match=\"*\">\n <!-- remove element prefix -->\n <xsl:element name=\"{local-name()}\">\n <!-- process attributes -->\n <xsl:for-each select=\"@*\">\n <!-- remove attribute prefix -->\n <xsl:attribute name=\"{local-name()}\">\n <xsl:value-of select=\".\"/>\n </xsl:attribute>\n </xsl:for-each>\n <xsl:apply-templates/>\n </xsl:element>\n</xsl:template>\n</xsl:stylesheet>`;\n\n// Function to extend elements with a specific tag name by adding an extension suffix\nexport function extendElementName(xmlFragment: XMLDocument, tagName: string, extension: string) {\n xmlFragment.querySelectorAll(tagName).forEach(element => {\n const newTagName = `${tagName}-${extension}`;\n const newElement = createElementWithNewTagName(element, newTagName);\n element.replaceWith(newElement);\n });\n}\n\n// Function to extend any element with a specific class pattern (e.g., \"extend:suffix\")\nexport function extendElementsWithClass(xmlFragment: XMLDocument, classNamePattern: string) {\n xmlFragment.querySelectorAll('*').forEach(element => {\n const classList = element.classList;\n if (classList) {\n classList.forEach(className => {\n if (className.startsWith(`${classNamePattern}:`)) {\n const suffix = className.slice(`${classNamePattern}:`.length);\n const newTagName = `${element.nodeName}-${suffix}`;\n const newElement = createElementWithNewTagName(element, newTagName);\n element.replaceWith(newElement);\n }\n });\n }\n });\n}\n\n// Helper function to create a new element with a new tag name and copy attributes and children\nfunction createElementWithNewTagName(element, newTagName) {\n const newElement = document.createElement(newTagName);\n // Copy attributes\n for (const attr of element.attributes) {\n newElement.setAttribute(attr.name, attr.value);\n }\n // Copy child nodes\n while (element.firstChild) {\n newElement.appendChild(element.firstChild);\n }\n return newElement;\n}\n\nexport function itemsFromTest(xmlFragment: DocumentFragment) {\n const items: { identifier: string; href: string; category: string }[] = [];\n xmlFragment.querySelectorAll('qti-assessment-item-ref').forEach(el => {\n const identifier = el.getAttribute('identifier');\n const href = el.getAttribute('href');\n const category = el.getAttribute('category');\n items.push({ identifier, href, category });\n });\n return items;\n}\n\nlet currentRequest: XMLHttpRequest | null = null;\n\nexport function loadXML(url, cancelPreviousRequest = false) {\n if (cancelPreviousRequest && currentRequest !== null) {\n currentRequest.abort(); // Abort the ongoing request if there is one\n }\n\n return new Promise<XMLDocument | null>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n currentRequest = xhr; // Store the current request\n\n xhr.open('GET', url, true);\n xhr.responseType = 'document';\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseXML);\n } else {\n reject(xhr.statusText);\n }\n };\n\n xhr.onerror = () => {\n reject(xhr.statusText);\n };\n\n xhr.send();\n });\n}\n\nexport function parseXML(xmlDocument: string) {\n const parser = new DOMParser();\n const xmlFragment = parser.parseFromString(xmlDocument, 'text/xml');\n return xmlFragment;\n}\n\nexport function toHTML(xmlFragment: Document): DocumentFragment {\n const processor = new XSLTProcessor();\n const xsltDocument = new DOMParser().parseFromString(xmlToHTML, 'text/xml');\n processor.importStylesheet(xsltDocument);\n const itemHTMLFragment = processor.transformToFragment(xmlFragment, document);\n return itemHTMLFragment;\n}\n\nexport function setLocation(xmlFragment: DocumentFragment, location: string) {\n if (!location.endsWith('/')) {\n location += '/';\n }\n\n xmlFragment.querySelectorAll('[src],[href],[primary-path]').forEach(elWithSrc => {\n let attr: 'src' | 'href' | 'primary-path' | '' = '';\n\n if (elWithSrc.getAttribute('src')) {\n attr = 'src';\n }\n if (elWithSrc.getAttribute('href')) {\n attr = 'href';\n }\n if (elWithSrc.getAttribute('primary-path')) {\n attr = 'primary-path';\n }\n const attrValue = elWithSrc.getAttribute(attr)?.trim();\n\n if (!attrValue.startsWith('data:') && !attrValue.startsWith('http')) {\n const newSrcValue = location + encodeURI(attrValue);\n elWithSrc.setAttribute(attr, newSrcValue);\n }\n });\n}\n\nexport function convertCDATAtoComment(xmlFragment: DocumentFragment) {\n const cdataElements = xmlFragment.querySelectorAll('qti-custom-operator[class=\"js.org\"] > qti-base-value');\n cdataElements.forEach(element => {\n const commentText = document.createComment(element.textContent);\n element.replaceChild(commentText, element.firstChild);\n });\n}\n\nexport function stripStyleSheets(xmlFragment: DocumentFragment) {\n // remove qti-stylesheet tag\n xmlFragment.querySelectorAll('qti-stylesheet').forEach(stylesheet => stylesheet.remove());\n}\n","/**\n * Browser based QTI-XML to HTML transformer.\n * Returns an object with methods to load, parse, transform and serialize QTI XML items.\n * @returns An object with methods to load, parse, transform and serialize QTI XML items.\n * @example\n * const qtiTransformer = qtiTransformItem();\n * await qtiTransformer.load('path/to/xml/file.xml');\n * qtiTransformer.path('/assessmentItem/itemBody');\n * const html = qtiTransformer.html();\n * const xml = qtiTransformer.xml();\n * const htmldoc = qtiTransformer.htmldoc();\n * const xmldoc = qtiTransformer.xmldoc();\n *\n * qtiTransformItem().parse(storyXML).html()\n */\n\nimport {\n convertCDATAtoComment,\n extendElementName,\n extendElementsWithClass,\n loadXML,\n parseXML,\n setLocation,\n stripStyleSheets,\n toHTML\n} from './qti-transformers';\n\nexport type transformItemApi = {\n load: (uri: string, cancelPreviousRequest?: boolean) => Promise<transformItemApi>;\n parse: (xmlString: string) => transformItemApi;\n path: (location: string) => transformItemApi;\n fn: (fn: (xmlFragment: XMLDocument) => void) => transformItemApi;\n pciHooks: (uri: string) => transformItemApi;\n extendElementName: (elementName: string, extend: string) => transformItemApi;\n extendElementsWithClass: (param?: string) => transformItemApi;\n customInteraction: (baseRef: string, baseItem: string) => transformItemApi;\n convertCDATAtoComment: () => transformItemApi;\n stripStyleSheets: () => transformItemApi;\n html: () => string;\n xml: () => string;\n htmlDoc: () => DocumentFragment;\n xmlDoc: () => XMLDocument;\n};\n\nexport const qtiTransformItem = () => {\n let xmlFragment: XMLDocument;\n\n const api: transformItemApi = {\n async load(uri: string, cancelPreviousRequest = false): Promise<typeof api> {\n return new Promise<typeof api>(resolve => {\n loadXML(uri, cancelPreviousRequest).then(xml => {\n xmlFragment = xml;\n // set the base path for images and other resources,\n // you probably want to set the base path to the document root else you can use the path method to set it\n api.path(uri.substring(0, uri.lastIndexOf('/')));\n return resolve(api);\n });\n });\n },\n parse(xmlString: string): typeof api {\n xmlFragment = parseXML(xmlString);\n return api;\n },\n path: (location: string): typeof api => {\n setLocation(xmlFragment, location);\n return api;\n },\n fn(fn: (xmlFragment: XMLDocument) => void): typeof api {\n fn(xmlFragment);\n return api;\n },\n pciHooks(uri: string): typeof api {\n const attributes = ['hook', 'module'];\n const documentPath = uri.substring(0, uri.lastIndexOf('/'));\n for (const attribute of attributes) {\n const srcAttributes = xmlFragment.querySelectorAll('[' + attribute + ']');\n srcAttributes.forEach(node => {\n const srcValue = node.getAttribute(attribute)!;\n if (!srcValue.startsWith('data:') && !srcValue.startsWith('http')) {\n // Just paste the relative path of the src location after the documentrootPath\n // old pcis can have a .js, new pci's don't\n node.setAttribute('base-url', uri);\n node.setAttribute(\n 'module',\n documentPath + '/' + encodeURI(srcValue + (srcValue.endsWith('.js') ? '' : '.js'))\n );\n }\n });\n }\n return api;\n },\n extendElementName: (tagName: string, extension: string): typeof api => {\n extendElementName(xmlFragment, tagName, extension);\n return api;\n },\n extendElementsWithClass: (param: string = 'extend'): typeof api => {\n extendElementsWithClass(xmlFragment, param);\n return api;\n },\n customInteraction(baseRef: string, baseItem: string): typeof api {\n const qtiCustomInteraction = xmlFragment.querySelector('qti-custom-interaction');\n const qtiCustomInteractionObject = qtiCustomInteraction.querySelector('object');\n\n qtiCustomInteraction.setAttribute('data-base-ref', baseRef);\n qtiCustomInteraction.setAttribute('data-base-item', baseRef + baseItem);\n qtiCustomInteraction.setAttribute('data', qtiCustomInteractionObject.getAttribute('data'));\n qtiCustomInteraction.setAttribute('width', qtiCustomInteractionObject.getAttribute('width'));\n qtiCustomInteraction.setAttribute('height', qtiCustomInteractionObject.getAttribute('height'));\n\n qtiCustomInteraction.removeChild(qtiCustomInteractionObject);\n return api;\n },\n convertCDATAtoComment(): typeof api {\n convertCDATAtoComment(xmlFragment);\n return api;\n },\n stripStyleSheets(): typeof api {\n stripStyleSheets(xmlFragment);\n return api;\n },\n html() {\n return new XMLSerializer().serializeToString(toHTML(xmlFragment));\n },\n xml(): string {\n return new XMLSerializer().serializeToString(xmlFragment);\n },\n htmlDoc() {\n return toHTML(xmlFragment);\n },\n xmlDoc(): XMLDocument {\n return xmlFragment; // new XMLSerializer().serializeToString(xmlFragment);\n }\n };\n return api;\n};\n","import { loadXML, parseXML } from './qti-transformers';\n\nexport const qtiTransformManifest = (): {\n load: (uri: string) => Promise<typeof api>;\n assessmentTest: () => { href: string; identifier: string };\n} => {\n let xmlFragment: XMLDocument;\n\n const api = {\n async load(uri) {\n return new Promise<typeof api>(resolve => {\n loadXML(uri).then(xml => {\n xmlFragment = xml;\n return resolve(api);\n });\n });\n },\n parse(xmlString: string) {\n xmlFragment = parseXML(xmlString);\n },\n assessmentTest() {\n const el = xmlFragment.querySelector('resource[type=\"imsqti_test_xmlv3p0\"]');\n return { href: el.getAttribute('href'), identifier: el.getAttribute('identifier') };\n }\n };\n return api;\n};\n","/**\n * Returns an object with methods to load, parse and transform QTI tests.\n * @returns An object with methods to load, parse and transform QTI tests.\n * @example\n * const qtiTransformer = qtiTransformTest();\n * await qtiTransformer.load('https://example.com/test.xml');\n * const items = qtiTransformer.items();\n * const html = qtiTransformer.html();\n * const xml = qtiTransformer.xml();\n */\n\nimport { itemsFromTest, loadXML, parseXML, setLocation, toHTML } from './qti-transformers';\n\nexport type transformTestApi = {\n load: (uri: string) => Promise<transformTestApi>;\n parse: (xmlString: string) => transformTestApi;\n path: (location: string) => transformTestApi;\n fn: (fn: (xmlFragment: XMLDocument) => void) => transformTestApi;\n items: () => { identifier: string; href: string; category: string }[];\n html: () => string;\n xml: () => string;\n htmlDoc: () => DocumentFragment;\n xmlDoc: () => XMLDocument;\n};\n\nexport const qtiTransformTest = (): transformTestApi => {\n let xmlFragment: XMLDocument;\n\n const api: transformTestApi = {\n async load(uri) {\n return new Promise<transformTestApi>((resolve, _) => {\n loadXML(uri).then(xml => {\n xmlFragment = xml;\n\n api.path(uri.substring(0, uri.lastIndexOf('/')));\n return resolve(api);\n });\n });\n },\n parse(xmlString: string) {\n xmlFragment = parseXML(xmlString);\n return api;\n },\n path: (location: string): typeof api => {\n setLocation(xmlFragment, location);\n return api;\n },\n fn(fn: (xmlFragment: XMLDocument) => void) {\n fn(xmlFragment);\n return api;\n },\n items() {\n return itemsFromTest(xmlFragment);\n },\n html() {\n return new XMLSerializer().serializeToString(toHTML(xmlFragment));\n },\n xml(): string {\n return new XMLSerializer().serializeToString(xmlFragment);\n },\n htmlDoc() {\n return toHTML(xmlFragment);\n },\n xmlDoc(): XMLDocument {\n return xmlFragment;\n }\n };\n return api;\n};\n"],"mappings":"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","names":["xml","xml","xml"]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,7 +1,8 @@
1
- import './qti-test/qti-assessment-test/qti-test-part.js';
2
- import { LitElement } from 'lit';
3
1
  import * as lit_html from 'lit-html';
4
- import { j as QtiAssessmentItem, af as ItemContext, e as VariableDeclaration } from './qti-simple-choice-DxWcdKHi.js';
2
+ import { LitElement } from 'lit';
3
+ import { V as VariableDeclaration } from './variables-cO3DzqJy.js';
4
+ import { ItemContext } from './exports/item.context.js';
5
+ import { Q as QtiAssessmentItem } from './qti-response-declaration-DAeBp8HH.js';
5
6
 
6
7
  declare class QtiAssessmentItemRef extends LitElement {
7
8
  category?: string;
@@ -53,22 +54,33 @@ declare global {
53
54
  }
54
55
  }
55
56
 
57
+ declare class QtiTestPart extends LitElement {
58
+ identifier: string;
59
+ title: string;
60
+ class: string;
61
+ NavigationMode: 'linear' | 'nonlinear';
62
+ submissionMode: 'individual' | 'simultaneous';
63
+ connectedCallback(): Promise<void>;
64
+ render(): lit_html.TemplateResult<1>;
65
+ }
66
+ declare global {
67
+ interface HTMLElementTagNameMap {
68
+ 'qti-test-part': QtiTestPart;
69
+ }
70
+ }
71
+
56
72
  type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';
57
- declare module '../context' {
73
+ declare module '../context/test.context' {
58
74
  interface TestContext {
59
75
  view?: View;
60
76
  }
61
77
  }
62
- type Constructor<T = {}> = abstract new (...args: any[]) => T;
63
- declare class TestViewInterface {
64
- }
65
- declare const TestViewMixin: <T extends Constructor<TestBase>>(superClass: T) => Constructor<TestViewInterface> & T;
66
78
 
67
79
  interface TestContext {
68
80
  items: (ItemContext & {
69
81
  category?: string;
70
82
  })[];
71
- testOutcomeVariables: VariableDeclaration<string | string[]>[];
83
+ testOutcomeVariables: VariableDeclaration<string | string[] | null>[];
72
84
  navPartId?: string | null;
73
85
  navSectionId?: string | null;
74
86
  navItemId?: string | null;
@@ -86,24 +98,4 @@ declare const testElement: {
86
98
  __context__: Readonly<TestElement>;
87
99
  };
88
100
 
89
- declare abstract class TestBase extends LitElement {
90
- protected _testContext: Readonly<TestContext>;
91
- protected testElement: TestElement;
92
- constructor();
93
- get context(): TestContext;
94
- set context(testContext: TestContext);
95
- private _updateItemVariablesInTestContext;
96
- /**
97
- * Updates the variables of an assessment item in the test context.
98
- * - Matches the assessment item with the corresponding test context item.
99
- * - If the item is not found, logs a warning.
100
- * - Updates variables in the test context if exactly one variable exists.
101
- * - Otherwise, syncs the assessment item's variables with the test context.
102
- *
103
- * @param assessmentItem - The assessment item to update.
104
- */
105
- private _updateItemInTestContext;
106
- connectedCallback(): void;
107
- }
108
-
109
- export { QtiAssessmentItemRef as Q, type TestContext as T, type View as V, QtiAssessmentSection as a, QtiAssessmentTest as b, type TestElement as c, testElement as d, TestViewMixin as e, TestBase as f, testContext as t };
101
+ export { QtiAssessmentItemRef as Q, type TestContext as T, QtiAssessmentSection as a, QtiAssessmentTest as b, QtiTestPart as c, type TestElement as d, testElement as e, testContext as t };
@@ -0,0 +1,33 @@
1
+ import { LitElement } from 'lit';
2
+ import { Cardinality, BaseType } from './exports/expression-result.js';
3
+
4
+ declare class QtiMapping extends LitElement {
5
+ defaultValue: number;
6
+ lowerBound: number;
7
+ upperBound: number;
8
+ get mapEntries(): {
9
+ mapKey: string;
10
+ mappedValue: number;
11
+ }[];
12
+ }
13
+
14
+ interface VariableValue<T> {
15
+ identifier: string;
16
+ value: Readonly<T>;
17
+ type: 'outcome' | 'response';
18
+ }
19
+ interface VariableDeclaration<T> extends VariableValue<T> {
20
+ cardinality?: Cardinality;
21
+ baseType?: BaseType;
22
+ }
23
+ interface OutcomeVariable extends VariableDeclaration<string | string[] | null> {
24
+ interpolationTable?: Map<number, number>;
25
+ externalScored?: 'human' | 'externalMachine' | null;
26
+ }
27
+ interface ResponseVariable extends VariableDeclaration<string | string[] | null> {
28
+ candidateResponse?: string | string[] | null;
29
+ mapping?: QtiMapping;
30
+ correctResponse?: string | string[] | null;
31
+ }
32
+
33
+ export { type OutcomeVariable as O, QtiMapping as Q, type ResponseVariable as R, type VariableDeclaration as V, type VariableValue as a };