@citolab/qti-components 7.0.5 → 7.0.6-next.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 (246) hide show
  1. package/cdn/{chunks/chunk-M6BOWL2U.js → chunk-7BKWTY4S.js} +1 -1
  2. package/cdn/{chunks/chunk-PXH5KN5O.js → chunk-7CQ4ETXL.js} +1 -1
  3. package/cdn/{chunks/chunk-5O3Z7TDV.js → chunk-7ENNZNJ4.js} +1 -1
  4. package/cdn/{chunks/chunk-JLNHEMQG.js → chunk-7LGM2TQA.js} +1 -1
  5. package/cdn/{chunks/chunk-4UJBK6JO.js → chunk-DLMFCDQX.js} +1 -1
  6. package/cdn/{chunks/chunk-P5IE36FO.js → chunk-EQGXFSYL.js} +1 -1
  7. package/cdn/{chunks/chunk-VYANBI35.js → chunk-F5VW77RE.js} +1 -1
  8. package/cdn/{chunks/chunk-RBEI6NIF.js → chunk-FNVXN5CO.js} +1 -1
  9. package/cdn/{chunks/chunk-65LFT33L.js → chunk-GBB54IPA.js} +1 -1
  10. package/cdn/{chunks/chunk-G5O7EN45.js → chunk-IV7UP34N.js} +1 -1
  11. package/cdn/{chunks/chunk-SMKIYFFI.js → chunk-JS4S7ZI7.js} +1 -1
  12. package/cdn/{chunks/chunk-M3YRM3AV.js → chunk-POT65ZY7.js} +1 -1
  13. package/cdn/{chunks/chunk-V6B54FQW.js → chunk-Q7PVZA43.js} +1 -1
  14. package/cdn/chunk-QJPHXAUE.js +1 -0
  15. package/cdn/{chunks/chunk-T3YDLD2H.js → chunk-QP57JHGY.js} +1 -1
  16. package/cdn/{chunks/chunk-CSUKVUZF.js → chunk-RB6CONZW.js} +1 -1
  17. package/cdn/chunk-RSRX5JYB.js +1 -0
  18. package/cdn/{chunks/chunk-LPWIM7QJ.js → chunk-W7X6GNEX.js} +1 -1
  19. package/cdn/{chunks/chunk-6D25UFJR.js → chunk-ZEX7TYC7.js} +1 -1
  20. package/cdn/index.js +1 -4503
  21. package/cdn/qti-components/index.js +1 -924
  22. package/cdn/qti-item/components/index.js +1 -3549
  23. package/cdn/qti-item/components/item-container.js +1 -3549
  24. package/cdn/qti-item/index.js +1 -3549
  25. package/cdn/qti-item/qti-item.js +1 -1
  26. package/cdn/qti-loader/index.js +1 -23
  27. package/cdn/qti-test/components/index.js +1 -3598
  28. package/cdn/qti-test/components/styles.js +1 -17
  29. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  30. package/cdn/qti-test/components/test-container.js +1 -3549
  31. package/cdn/qti-test/components/test-item-link.js +1 -24
  32. package/cdn/qti-test/components/test-next.js +1 -24
  33. package/cdn/qti-test/components/test-next.spec.js +247 -4749
  34. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
  35. package/cdn/qti-test/components/test-prev.js +1 -24
  36. package/cdn/qti-test/components/test-view.js +1 -11
  37. package/cdn/qti-test/context/index.js +1 -1
  38. package/cdn/qti-test/context/test.context.js +1 -1
  39. package/cdn/qti-test/index.js +1 -3598
  40. package/cdn/qti-test/mixins/index.js +1 -23
  41. package/cdn/qti-test/mixins/test-loader.mixin.js +1 -23
  42. package/cdn/qti-test/mixins/test-navigation.mixin.js +1 -1
  43. package/cdn/qti-test/mixins/test-view.mixin.js +1 -1
  44. package/cdn/qti-test/qti-assessment-test/index.js +1 -1
  45. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +1 -1
  46. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +1 -1
  47. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +1 -1
  48. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +1 -1
  49. package/cdn/qti-test/qti-test.js +1 -23
  50. package/cdn/qti-test/test-base.js +1 -1
  51. package/cdn/qti-transformers/index.js +1 -23
  52. package/dist/{chunks/chunk-XDMSEAYC.js → chunk-2OA7E3E7.js} +1 -1
  53. package/dist/chunk-2OA7E3E7.js.map +1 -0
  54. package/dist/chunk-37X6KZO3.js +1 -0
  55. package/dist/{chunks/chunk-Y6UWSECL.js → chunk-3WLCQQN7.js} +1 -1
  56. package/dist/chunk-3YVIK6LO.js +1 -0
  57. package/dist/{chunks/chunk-6YE2KJ4C.js → chunk-44VE5POH.js} +1 -1
  58. package/dist/{chunks/chunk-D3RGDWKP.js → chunk-4CSM2PCC.js} +1 -1
  59. package/dist/chunk-4CSM2PCC.js.map +1 -0
  60. package/dist/{chunks/chunk-ELDMXTUQ.js → chunk-4YG2FPKK.js} +1 -1
  61. package/dist/chunk-4YG2FPKK.js.map +1 -0
  62. package/dist/{chunks/chunk-3G2DDBJW.js → chunk-7A6KCSAU.js} +3 -3
  63. package/dist/chunk-7A6KCSAU.js.map +1 -0
  64. package/dist/{chunks/chunk-LKINC6JO.js → chunk-ENVUIH2A.js} +4 -4
  65. package/dist/chunk-ENVUIH2A.js.map +1 -0
  66. package/dist/{chunks/chunk-JSPJGWGT.js → chunk-ENZVY5X6.js} +2 -2
  67. package/dist/chunk-ENZVY5X6.js.map +1 -0
  68. package/dist/{chunks/chunk-3OXGDCSU.js → chunk-EUCEENQQ.js} +5 -5
  69. package/dist/chunk-EUCEENQQ.js.map +1 -0
  70. package/dist/{chunks/chunk-AAQCM2FP.js → chunk-FNFNAV3G.js} +2 -2
  71. package/dist/chunk-FNFNAV3G.js.map +1 -0
  72. package/dist/chunk-GSFDTSLL.js +1 -0
  73. package/dist/{chunks/chunk-3ROZMGAN.js → chunk-GTYLWGDG.js} +4 -4
  74. package/dist/chunk-GTYLWGDG.js.map +1 -0
  75. package/dist/{chunks/chunk-XPDS72XY.js → chunk-IAFQ5ZPI.js} +2 -2
  76. package/dist/chunk-IAFQ5ZPI.js.map +1 -0
  77. package/dist/{chunks/chunk-ZEFOMZNY.js → chunk-JDHBXMKF.js} +3 -3
  78. package/dist/chunk-JDHBXMKF.js.map +1 -0
  79. package/dist/{chunks/chunk-PUBGXXTM.js → chunk-L7MBIXEX.js} +4 -4
  80. package/dist/chunk-L7MBIXEX.js.map +1 -0
  81. package/dist/chunk-LYFMLDNV.js +1 -0
  82. package/dist/chunk-NNPTSZGC.js +1 -0
  83. package/dist/chunk-NQM35JUI.js +1 -0
  84. package/dist/{chunks/chunk-NDJZGJUR.js → chunk-ODUHPWTX.js} +1 -1
  85. package/dist/chunk-ODUHPWTX.js.map +1 -0
  86. package/dist/{chunks/chunk-DJLE6EV2.js → chunk-OGHHCP23.js} +6 -6
  87. package/dist/chunk-OGHHCP23.js.map +1 -0
  88. package/dist/{chunks/chunk-QRCUNRP5.js → chunk-OQZW2B47.js} +3 -3
  89. package/dist/chunk-OQZW2B47.js.map +1 -0
  90. package/dist/{chunks/chunk-MTMT2RMF.js → chunk-OXDOQVRL.js} +3 -3
  91. package/dist/chunk-OXDOQVRL.js.map +1 -0
  92. package/dist/{chunks/chunk-V4FXK4TP.js → chunk-PBSMP6VF.js} +3 -3
  93. package/dist/chunk-PBSMP6VF.js.map +1 -0
  94. package/dist/chunk-Q7OPFS4A.js +1 -0
  95. package/dist/{chunks/chunk-XDFXD3BI.js → chunk-R4HSV7U7.js} +1 -1
  96. package/dist/chunk-R4HSV7U7.js.map +1 -0
  97. package/dist/{chunks/chunk-HWA4A3SR.js → chunk-TXRSYXG3.js} +4 -4
  98. package/dist/chunk-TXRSYXG3.js.map +1 -0
  99. package/dist/{chunks/chunk-S6JJYCO7.js → chunk-U3RLYKL5.js} +1 -1
  100. package/dist/chunk-U3RLYKL5.js.map +1 -0
  101. package/dist/{chunks/chunk-4O5F7WV7.js → chunk-UB5K44DB.js} +1 -1
  102. package/dist/chunk-UB5K44DB.js.map +1 -0
  103. package/dist/{chunks/chunk-W4B23OIP.js → chunk-VODOQFTJ.js} +4 -4
  104. package/dist/chunk-VODOQFTJ.js.map +1 -0
  105. package/dist/{chunks/chunk-UCQFSRYF.js → chunk-VW7VIQBE.js} +2 -2
  106. package/dist/chunk-VW7VIQBE.js.map +1 -0
  107. package/dist/{chunks/chunk-JE6BMXZU.js → chunk-X4ZBUCOD.js} +5 -5
  108. package/dist/chunk-X4ZBUCOD.js.map +1 -0
  109. package/dist/chunk-XFHB6KQW.js +1 -0
  110. package/dist/{chunks/chunk-LROTNPC2.js → chunk-XNBWN7N2.js} +5 -5
  111. package/dist/chunk-XNBWN7N2.js.map +1 -0
  112. package/dist/index.js +163 -11038
  113. package/dist/index.js.map +1 -1
  114. package/dist/qti-components/index.js +95 -6431
  115. package/dist/qti-components/index.js.map +1 -1
  116. package/dist/qti-item/components/index.js +8 -3852
  117. package/dist/qti-item/components/index.js.map +1 -1
  118. package/dist/qti-item/components/item-container.js +7 -3852
  119. package/dist/qti-item/components/item-container.js.map +1 -1
  120. package/dist/qti-item/index.js +12 -3864
  121. package/dist/qti-item/index.js.map +1 -1
  122. package/dist/qti-item/qti-item.js +4 -22
  123. package/dist/qti-item/qti-item.js.map +1 -1
  124. package/dist/qti-loader/index.js +6 -305
  125. package/dist/qti-loader/index.js.map +1 -1
  126. package/dist/qti-test/components/index.js +30 -4134
  127. package/dist/qti-test/components/index.js.map +1 -1
  128. package/dist/qti-test/components/styles.js +7 -22
  129. package/dist/qti-test/components/styles.js.map +1 -1
  130. package/dist/qti-test/components/test-component.abstract.js +8 -145
  131. package/dist/qti-test/components/test-component.abstract.js.map +1 -1
  132. package/dist/qti-test/components/test-container.js +7 -3778
  133. package/dist/qti-test/components/test-container.js.map +1 -1
  134. package/dist/qti-test/components/test-item-link.js +10 -198
  135. package/dist/qti-test/components/test-item-link.js.map +1 -1
  136. package/dist/qti-test/components/test-next.js +10 -205
  137. package/dist/qti-test/components/test-next.js.map +1 -1
  138. package/dist/qti-test/components/test-next.spec.js +160 -11152
  139. package/dist/qti-test/components/test-next.spec.js.map +1 -1
  140. package/dist/qti-test/components/test-paging-buttons-stamp.js +9 -214
  141. package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
  142. package/dist/qti-test/components/test-prev.js +10 -205
  143. package/dist/qti-test/components/test-prev.js.map +1 -1
  144. package/dist/qti-test/components/test-view.js +9 -205
  145. package/dist/qti-test/components/test-view.js.map +1 -1
  146. package/dist/qti-test/context/index.js +6 -4
  147. package/dist/qti-test/context/index.js.map +1 -1
  148. package/dist/qti-test/context/test.context.js +5 -4
  149. package/dist/qti-test/context/test.context.js.map +1 -1
  150. package/dist/qti-test/index.js +55 -4729
  151. package/dist/qti-test/index.js.map +1 -1
  152. package/dist/qti-test/mixins/index.js +12 -344
  153. package/dist/qti-test/mixins/index.js.map +1 -1
  154. package/dist/qti-test/mixins/test-loader.mixin.js +5 -236
  155. package/dist/qti-test/mixins/test-loader.mixin.js.map +1 -1
  156. package/dist/qti-test/mixins/test-navigation.mixin.js +4 -60
  157. package/dist/qti-test/mixins/test-navigation.mixin.js.map +1 -1
  158. package/dist/qti-test/mixins/test-view.mixin.js +4 -46
  159. package/dist/qti-test/mixins/test-view.mixin.js.map +1 -1
  160. package/dist/qti-test/qti-assessment-test/index.js +16 -214
  161. package/dist/qti-test/qti-assessment-test/index.js.map +1 -1
  162. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +6 -81
  163. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +1 -1
  164. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +6 -69
  165. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +1 -1
  166. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +6 -50
  167. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +1 -1
  168. package/dist/qti-test/qti-assessment-test/qti-test-part.js +4 -58
  169. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +1 -1
  170. package/dist/qti-test/qti-test.js +12 -496
  171. package/dist/qti-test/qti-test.js.map +1 -1
  172. package/dist/qti-test/test-base.js +6 -133
  173. package/dist/qti-test/test-base.js.map +1 -1
  174. package/dist/qti-transformers/index.js +6 -287
  175. package/dist/qti-transformers/index.js.map +1 -1
  176. package/package.json +1 -2
  177. package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
  178. package/cdn/index.css +0 -1
  179. package/cdn/qti-item/components/index.css +0 -1
  180. package/cdn/qti-item/components/item-container.css +0 -1
  181. package/cdn/qti-item/index.css +0 -1
  182. package/cdn/qti-test/components/index.css +0 -1
  183. package/cdn/qti-test/components/test-container.css +0 -1
  184. package/cdn/qti-test/components/test-next.spec.css +0 -1
  185. package/cdn/qti-test/index.css +0 -1
  186. package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
  187. package/dist/chunks/chunk-3NLCJYSX.js +0 -1
  188. package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
  189. package/dist/chunks/chunk-3ROZMGAN.js.map +0 -1
  190. package/dist/chunks/chunk-4O5F7WV7.js.map +0 -1
  191. package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
  192. package/dist/chunks/chunk-D3RGDWKP.js.map +0 -1
  193. package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
  194. package/dist/chunks/chunk-ELDMXTUQ.js.map +0 -1
  195. package/dist/chunks/chunk-EW5CTHAD.js +0 -1
  196. package/dist/chunks/chunk-HWA4A3SR.js.map +0 -1
  197. package/dist/chunks/chunk-IKZWK2C5.js +0 -1
  198. package/dist/chunks/chunk-IP7JSYO6.js +0 -1
  199. package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
  200. package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
  201. package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
  202. package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
  203. package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
  204. package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
  205. package/dist/chunks/chunk-OE2LFIH2.js +0 -1
  206. package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
  207. package/dist/chunks/chunk-PUBGXXTM.js.map +0 -1
  208. package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
  209. package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
  210. package/dist/chunks/chunk-U3AALKEP.js +0 -1
  211. package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
  212. package/dist/chunks/chunk-URGVQ64M.js +0 -1
  213. package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
  214. package/dist/chunks/chunk-W4B23OIP.js.map +0 -1
  215. package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
  216. package/dist/chunks/chunk-XDMSEAYC.js.map +0 -1
  217. package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
  218. package/dist/chunks/chunk-ZEFOMZNY.js.map +0 -1
  219. package/dist/index-Cvrd4KQA.d.ts +0 -109
  220. /package/cdn/{chunks/chunk-XUJ7TXHW.js → chunk-25BMUTLC.js} +0 -0
  221. /package/cdn/{chunks/chunk-6UGPNL7M.js → chunk-3DWLPGTE.js} +0 -0
  222. /package/cdn/{chunks/chunk-6DMSHH5X.js → chunk-CYJMNT76.js} +0 -0
  223. /package/cdn/{chunks/chunk-T6IXJ4W4.js → chunk-DPR6SGCZ.js} +0 -0
  224. /package/cdn/{chunks/chunk-DAZR7RUI.js → chunk-GB7DLBFM.js} +0 -0
  225. /package/cdn/{chunks/chunk-EHK76KRT.js → chunk-GPDDPZFH.js} +0 -0
  226. /package/cdn/{chunks/chunk-EOPEMJS3.js → chunk-H4A34YRT.js} +0 -0
  227. /package/cdn/{chunks/chunk-GEFUIFM7.js → chunk-ITXNNGVQ.js} +0 -0
  228. /package/cdn/{chunks/chunk-SRLMW23F.js → chunk-IZZ36JQV.js} +0 -0
  229. /package/cdn/{chunks/chunk-CSY3WI5A.js → chunk-JNT54FPI.js} +0 -0
  230. /package/cdn/{chunks/chunk-UIEC4LXR.js → chunk-L26FOTPN.js} +0 -0
  231. /package/cdn/{chunks/chunk-TFAUBGP2.js → chunk-LA7TBIPQ.js} +0 -0
  232. /package/cdn/{chunks/chunk-5FCXUJAG.js → chunk-LVW3MHTI.js} +0 -0
  233. /package/cdn/{chunks/chunk-V44O3GTW.js → chunk-TG6AE3DB.js} +0 -0
  234. /package/cdn/{chunks/chunk-ZIZLFFSG.js → chunk-V6YPUNZC.js} +0 -0
  235. /package/cdn/{chunks/chunk-T4HD2C4F.js → chunk-VI2WKTN4.js} +0 -0
  236. /package/cdn/{chunks/chunk-CFXQCNG6.js → chunk-Y63VPWCG.js} +0 -0
  237. /package/dist/{chunks/chunk-3NLCJYSX.js.map → chunk-37X6KZO3.js.map} +0 -0
  238. /package/dist/{chunks/chunk-Y6UWSECL.js.map → chunk-3WLCQQN7.js.map} +0 -0
  239. /package/dist/{chunks/chunk-6YE2KJ4C.js.map → chunk-3YVIK6LO.js.map} +0 -0
  240. /package/dist/{chunks/chunk-EW5CTHAD.js.map → chunk-44VE5POH.js.map} +0 -0
  241. /package/dist/{chunks/chunk-IKZWK2C5.js.map → chunk-GSFDTSLL.js.map} +0 -0
  242. /package/dist/{chunks/chunk-IP7JSYO6.js.map → chunk-LYFMLDNV.js.map} +0 -0
  243. /package/dist/{chunks/chunk-OE2LFIH2.js.map → chunk-NNPTSZGC.js.map} +0 -0
  244. /package/dist/{chunks/chunk-OJ2XGDWK.js.map → chunk-NQM35JUI.js.map} +0 -0
  245. /package/dist/{chunks/chunk-U3AALKEP.js.map → chunk-Q7OPFS4A.js.map} +0 -0
  246. /package/dist/{chunks/chunk-URGVQ64M.js.map → chunk-XFHB6KQW.js.map} +0 -0
@@ -1,23 +1 @@
1
- var A=String.raw,b=A`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
3
- <xsl:template match="@*|node()">
4
- <xsl:copy>
5
- <xsl:apply-templates select="@*|node()"/>
6
- </xsl:copy>
7
- </xsl:template>
8
-
9
- <!-- remove existing namespaces -->
10
- <xsl:template match="*">
11
- <!-- remove element prefix -->
12
- <xsl:element name="{local-name()}">
13
- <!-- process attributes -->
14
- <xsl:for-each select="@*">
15
- <!-- remove attribute prefix -->
16
- <xsl:attribute name="{local-name()}">
17
- <xsl:value-of select="."/>
18
- </xsl:attribute>
19
- </xsl:for-each>
20
- <xsl:apply-templates/>
21
- </xsl:element>
22
- </xsl:template>
23
- </xsl:stylesheet>`;function h(r,n,e){r.querySelectorAll(n).forEach(s=>{let t=`${n}-${e}`,i=x(s,t);s.replaceWith(i)})}function g(r,n){r.querySelectorAll("*").forEach(e=>{let s=e.classList;s&&s.forEach(t=>{if(t.startsWith(`${n}:`)){let i=t.slice(`${n}:`.length),m=`${e.nodeName}-${i}`,o=x(e,m);e.replaceWith(o)}})})}function x(r,n){let e=document.createElement(n);for(let s of r.attributes)e.setAttribute(s.name,s.value);for(;r.firstChild;)e.appendChild(r.firstChild);return e}var f=null;function c(r,n=!1){return n&&f!==null&&f.abort(),new Promise((e,s)=>{let t=new XMLHttpRequest;f=t,t.open("GET",r,!0),t.responseType="document",t.onload=()=>{t.status>=200&&t.status<300?e(t.responseXML):s(t.statusText)},t.onerror=()=>{s(t.statusText)},t.send()})}function l(r){return new DOMParser().parseFromString(r,"text/xml")}function u(r){let n=new XSLTProcessor,e=new DOMParser().parseFromString(b,"text/xml");return n.importStylesheet(e),n.transformToFragment(r,document)}function d(r,n){n.endsWith("/")||(n+="/"),r.querySelectorAll("[src],[href],[primary-path]").forEach(e=>{let s="";e.getAttribute("src")&&(s="src"),e.getAttribute("href")&&(s="href"),e.getAttribute("primary-path")&&(s="primary-path");let t=e.getAttribute(s)?.trim();if(!t.startsWith("data:")&&!t.startsWith("http")){let i=n+encodeURI(t);e.setAttribute(s,i)}})}function T(r){r.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let s=document.createComment(e.textContent);e.replaceChild(s,e.firstChild)})}function y(r){r.querySelectorAll("qti-stylesheet").forEach(n=>n.remove())}var v=()=>{let r,n={async load(e,s=!1){return new Promise(t=>{c(e,s).then(i=>(r=i,n.path(e.substring(0,e.lastIndexOf("/"))),t(n)))})},parse(e){return r=l(e),n},path:e=>(d(r,e),n),fn(e){return e(r),n},pciHooks(e){let s=["hook","module"],t=e.substring(0,e.lastIndexOf("/"));for(let i of s)r.querySelectorAll("["+i+"]").forEach(o=>{let a=o.getAttribute(i);!a.startsWith("data:")&&!a.startsWith("http")&&(o.setAttribute("base-url",e),o.setAttribute("module",t+"/"+encodeURI(a+(a.endsWith(".js")?"":".js"))))});return n},extendElementName:(e,s)=>(h(r,e,s),n),extendElementsWithClass:(e="extend")=>(g(r,e),n),customInteraction(e,s){let t=r.querySelector("qti-custom-interaction"),i=t.querySelector("object");return t.setAttribute("data-base-ref",e),t.setAttribute("data-base-item",e+s),t.setAttribute("data",i.getAttribute("data")),t.setAttribute("width",i.getAttribute("width")),t.setAttribute("height",i.getAttribute("height")),t.removeChild(i),n},convertCDATAtoComment(){return T(r),n},stripStyleSheets(){return y(r),n},html(){return new XMLSerializer().serializeToString(u(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return u(r)},xmlDoc(){return r}};return n};var V=r=>{class n extends r{constructor(...s){super(...s),this.addEventListener("qti-assessment-test-connected",()=>{}),this.addEventListener("qti-load-item-request",({detail:t})=>{t.promise=(async()=>(await v().load(`${t.href}`,t.cancelPreviousRequest)).htmlDoc())()}),this.addEventListener("qti-interaction-changed",t=>{}),this.addEventListener("qti-outcome-changed",()=>{})}}return n};var H=r=>{class n extends r{constructor(...s){super(...s),this.addEventListener("qti-request-test-item",({detail:t})=>{if(!t)return;this._clearLoadedItems();let i=this.testElement.el.querySelector(`qti-assessment-item-ref[identifier="${t}"]`),m=this._loadItemRequest(i.href,!1),o=i.closest("qti-test-part").identifier,a=i.closest("qti-assessment-section").identifier;this._testContext={...this._testContext,navPartId:o,navSectionId:a,navItemId:t,navItemLoading:!0},m?m.then(p=>{i.xmlDoc=p,requestAnimationFrame(()=>this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0}))),this._testContext={...this._testContext,navItemLoading:!1}}).catch(p=>console.error("Failed to load item:",p)):console.info("Load item request was not handled:",i.href)}),this.addEventListener("qti-assessment-test-connected",()=>{let t=this._testContext.navItemId;t||(t=this.testElement.el.querySelector("qti-assessment-item-ref").identifier),this.dispatchEvent(new CustomEvent("qti-request-test-item",{detail:t,bubbles:!0,composed:!0}))})}_clearLoadedItems(){let s=this.testElement.el.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(s).forEach(t=>{t.xmlDoc=null})}_loadItemRequest(s,t=!0){let i=new CustomEvent("qti-load-item-request",{bubbles:!0,composed:!0,detail:{href:s,promise:null,cancelPreviousRequest:t}});return this.dispatchEvent(i),i.detail.promise}}return n};var W=r=>{class n extends r{constructor(...s){super(...s),this._testContext={...this._testContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this._testContext={...this._testContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(s){super.willUpdate(s),s.has("_testContext")&&this._updateElementView()}_updateElementView(){if(this.testElement&&this.testElement.el){Array.from(this.testElement.el.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this._testContext.view)});let t=this.testElement.el.querySelector(`qti-assessment-item[identifier="${this._testContext.navItemId}"]`);t&&t.showCorrectResponse(this._testContext.view==="scorer")}}_setCorrectResponseVisibility(s){s.showCorrectResponse(this._testContext.view==="scorer")}}return n};export{V as TestLoaderMixin,H as TestNavigationMixin,W as TestViewMixin};
1
+ import"../../chunk-ITXNNGVQ.js";import{a}from"../../chunk-7ENNZNJ4.js";import{a as b}from"../../chunk-DPR6SGCZ.js";import{a as c}from"../../chunk-3DWLPGTE.js";import"../../chunk-LVW3MHTI.js";import"../../chunk-VI2WKTN4.js";export{a as TestLoaderMixin,b as TestNavigationMixin,c as TestViewMixin};
@@ -1,23 +1 @@
1
- var T=String.raw,L=T`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
3
- <xsl:template match="@*|node()">
4
- <xsl:copy>
5
- <xsl:apply-templates select="@*|node()"/>
6
- </xsl:copy>
7
- </xsl:template>
8
-
9
- <!-- remove existing namespaces -->
10
- <xsl:template match="*">
11
- <!-- remove element prefix -->
12
- <xsl:element name="{local-name()}">
13
- <!-- process attributes -->
14
- <xsl:for-each select="@*">
15
- <!-- remove attribute prefix -->
16
- <xsl:attribute name="{local-name()}">
17
- <xsl:value-of select="."/>
18
- </xsl:attribute>
19
- </xsl:for-each>
20
- <xsl:apply-templates/>
21
- </xsl:element>
22
- </xsl:template>
23
- </xsl:stylesheet>`;function g(r,n,t){r.querySelectorAll(n).forEach(s=>{let e=`${n}-${t}`,o=x(s,e);s.replaceWith(o)})}function h(r,n){r.querySelectorAll("*").forEach(t=>{let s=t.classList;s&&s.forEach(e=>{if(e.startsWith(`${n}:`)){let o=e.slice(`${n}:`.length),f=`${t.nodeName}-${o}`,i=x(t,f);t.replaceWith(i)}})})}function x(r,n){let t=document.createElement(n);for(let s of r.attributes)t.setAttribute(s.name,s.value);for(;r.firstChild;)t.appendChild(r.firstChild);return t}var u=null;function m(r,n=!1){return n&&u!==null&&u.abort(),new Promise((t,s)=>{let e=new XMLHttpRequest;u=e,e.open("GET",r,!0),e.responseType="document",e.onload=()=>{e.status>=200&&e.status<300?t(e.responseXML):s(e.statusText)},e.onerror=()=>{s(e.statusText)},e.send()})}function c(r){return new DOMParser().parseFromString(r,"text/xml")}function l(r){let n=new XSLTProcessor,t=new DOMParser().parseFromString(L,"text/xml");return n.importStylesheet(t),n.transformToFragment(r,document)}function p(r,n){n.endsWith("/")||(n+="/"),r.querySelectorAll("[src],[href],[primary-path]").forEach(t=>{let s="";t.getAttribute("src")&&(s="src"),t.getAttribute("href")&&(s="href"),t.getAttribute("primary-path")&&(s="primary-path");let e=t.getAttribute(s)?.trim();if(!e.startsWith("data:")&&!e.startsWith("http")){let o=n+encodeURI(e);t.setAttribute(s,o)}})}function d(r){r.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(t=>{let s=document.createComment(t.textContent);t.replaceChild(s,t.firstChild)})}function A(r){r.querySelectorAll("qti-stylesheet").forEach(n=>n.remove())}var y=()=>{let r,n={async load(t,s=!1){return new Promise(e=>{m(t,s).then(o=>(r=o,n.path(t.substring(0,t.lastIndexOf("/"))),e(n)))})},parse(t){return r=c(t),n},path:t=>(p(r,t),n),fn(t){return t(r),n},pciHooks(t){let s=["hook","module"],e=t.substring(0,t.lastIndexOf("/"));for(let o of s)r.querySelectorAll("["+o+"]").forEach(i=>{let a=i.getAttribute(o);!a.startsWith("data:")&&!a.startsWith("http")&&(i.setAttribute("base-url",t),i.setAttribute("module",e+"/"+encodeURI(a+(a.endsWith(".js")?"":".js"))))});return n},extendElementName:(t,s)=>(g(r,t,s),n),extendElementsWithClass:(t="extend")=>(h(r,t),n),customInteraction(t,s){let e=r.querySelector("qti-custom-interaction"),o=e.querySelector("object");return e.setAttribute("data-base-ref",t),e.setAttribute("data-base-item",t+s),e.setAttribute("data",o.getAttribute("data")),e.setAttribute("width",o.getAttribute("width")),e.setAttribute("height",o.getAttribute("height")),e.removeChild(o),n},convertCDATAtoComment(){return d(r),n},stripStyleSheets(){return A(r),n},html(){return new XMLSerializer().serializeToString(l(r))},xml(){return new XMLSerializer().serializeToString(r)},htmlDoc(){return l(r)},xmlDoc(){return r}};return n};var H=r=>{class n extends r{constructor(...s){super(...s),this.addEventListener("qti-assessment-test-connected",()=>{}),this.addEventListener("qti-load-item-request",({detail:e})=>{e.promise=(async()=>(await y().load(`${e.href}`,e.cancelPreviousRequest)).htmlDoc())()}),this.addEventListener("qti-interaction-changed",e=>{}),this.addEventListener("qti-outcome-changed",()=>{})}}return n};export{H as TestLoaderMixin};
1
+ import{a}from"../../chunk-7ENNZNJ4.js";import"../../chunk-LVW3MHTI.js";import"../../chunk-VI2WKTN4.js";export{a as TestLoaderMixin};
@@ -1 +1 @@
1
- var c=o=>{class r extends o{constructor(...s){super(...s),this.addEventListener("qti-request-test-item",({detail:t})=>{if(!t)return;this._clearLoadedItems();let e=this.testElement.el.querySelector(`qti-assessment-item-ref[identifier="${t}"]`),i=this._loadItemRequest(e.href,!1),a=e.closest("qti-test-part").identifier,m=e.closest("qti-assessment-section").identifier;this._testContext={...this._testContext,navPartId:a,navSectionId:m,navItemId:t,navItemLoading:!0},i?i.then(n=>{e.xmlDoc=n,requestAnimationFrame(()=>this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0}))),this._testContext={...this._testContext,navItemLoading:!1}}).catch(n=>console.error("Failed to load item:",n)):console.info("Load item request was not handled:",e.href)}),this.addEventListener("qti-assessment-test-connected",()=>{let t=this._testContext.navItemId;t||(t=this.testElement.el.querySelector("qti-assessment-item-ref").identifier),this.dispatchEvent(new CustomEvent("qti-request-test-item",{detail:t,bubbles:!0,composed:!0}))})}_clearLoadedItems(){let s=this.testElement.el.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(s).forEach(t=>{t.xmlDoc=null})}_loadItemRequest(s,t=!0){let e=new CustomEvent("qti-load-item-request",{bubbles:!0,composed:!0,detail:{href:s,promise:null,cancelPreviousRequest:t}});return this.dispatchEvent(e),e.detail.promise}}return r};export{c as TestNavigationMixin};
1
+ import{a}from"../../chunk-DPR6SGCZ.js";import"../../chunk-VI2WKTN4.js";export{a as TestNavigationMixin};
@@ -1 +1 @@
1
- var r=i=>{class n extends i{constructor(...t){super(...t),this._testContext={...this._testContext,view:"candidate"},this.addEventListener("on-test-switch-view",e=>{this._testContext={...this._testContext,view:e.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",e=>{this._updateElementView(),this._setCorrectResponseVisibility(e.detail)})}willUpdate(t){super.willUpdate(t),t.has("_testContext")&&this._updateElementView()}_updateElementView(){if(this.testElement&&this.testElement.el){Array.from(this.testElement.el.querySelectorAll("[view]")).forEach(s=>{s.classList.toggle("show",s.getAttribute("view")===this._testContext.view)});let e=this.testElement.el.querySelector(`qti-assessment-item[identifier="${this._testContext.navItemId}"]`);e&&e.showCorrectResponse(this._testContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this._testContext.view==="scorer")}}return n};export{r as TestViewMixin};
1
+ import{a}from"../../chunk-3DWLPGTE.js";import"../../chunk-VI2WKTN4.js";export{a as TestViewMixin};
@@ -1 +1 @@
1
- var v=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var e=(t,s,d,u)=>{for(var i=u>1?void 0:u?h(s,d):s,b=t.length-1,g;b>=0;b--)(g=t[b])&&(i=(u?g(s,d,i):g(i))||i);return u&&i&&v(s,d,i),i};import{consume as E}from"@lit/context";import{html as q,LitElement as w}from"lit";import{property as m}from"lit/decorators.js";import{createContext as x}from"@lit/context";var l=x(Symbol("test")),F=x(Symbol("testElement"));var y={fromAttribute(t){return t==="true"},toAttribute(t){return t?"true":"false"}},r=class extends w{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return q`${this.xmlDoc}`}};e([m({type:String})],r.prototype,"category",2),e([m({type:String})],r.prototype,"identifier",2),e([m({type:Boolean,converter:y})],r.prototype,"required",2),e([m({type:Boolean,converter:y})],r.prototype,"fixed",2),e([m({type:String})],r.prototype,"href",2),e([E({context:l,subscribe:!0})],r.prototype,"_testContext",2),e([m({type:Object,attribute:!1})],r.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",r);import{consume as M}from"@lit/context";import{html as T,LitElement as k}from"lit";import{property as c}from"lit/decorators.js";var f={fromAttribute(t){return t==="true"},toAttribute(t){return t?"true":"false"}},o=class extends k{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return T`<slot name="qti-rubric-block"></slot><slot></slot>`}};e([c({type:String})],o.prototype,"identifier",2),e([c({type:String})],o.prototype,"required",2),e([c({type:Boolean,converter:f})],o.prototype,"fixed",2),e([c({type:String})],o.prototype,"title",2),e([c({type:Boolean,converter:f})],o.prototype,"visible",2),e([c({type:Boolean,converter:f,attribute:"keep-together"})],o.prototype,"keepTogether",2),e([M({context:l,subscribe:!0})],o.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",o);import{consume as L}from"@lit/context";import{html as S,LitElement as B}from"lit";import{customElement as D,property as C}from"lit/decorators.js";var a=class extends B{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return S` <slot></slot>`}};e([C({type:String})],a.prototype,"identifier",2),e([C({type:String})],a.prototype,"title",2),e([L({context:l,subscribe:!0})],a.prototype,"_testContext",2),a=e([D("qti-assessment-test")],a);import{html as H,LitElement as N}from"lit";import{customElement as V,property as p}from"lit/decorators.js";var n=class extends N{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return H` <slot></slot>`}};e([p({type:String})],n.prototype,"identifier",2),e([p({type:String})],n.prototype,"title",2),e([p({type:String})],n.prototype,"class",2),e([p({type:String,attribute:"navigation-mode"})],n.prototype,"NavigationMode",2),e([p({type:String,attribute:"submission-mode"})],n.prototype,"submissionMode",2),n=e([V("qti-test-part")],n);customElements.get("qti-test-part")||customElements.define("qti-test-part",n);export{r as QtiAssessmentItemRef,o as QtiAssessmentSection,a as QtiAssessmentTest,n as QtiTestPart};
1
+ import"../../chunk-GB7DLBFM.js";import{a}from"../../chunk-POT65ZY7.js";import{a as b}from"../../chunk-FNVXN5CO.js";import{a as c}from"../../chunk-F5VW77RE.js";import{a as d}from"../../chunk-7CQ4ETXL.js";import"../../chunk-V6YPUNZC.js";import"../../chunk-JNT54FPI.js";import"../../chunk-VI2WKTN4.js";export{a as QtiAssessmentItemRef,b as QtiAssessmentSection,c as QtiAssessmentTest,d as QtiTestPart};
@@ -1 +1 @@
1
- var g=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var e=(r,i,a,s)=>{for(var n=s>1?void 0:s?d(i,a):i,m=r.length-1,l;m>=0;m--)(l=r[m])&&(n=(s?l(i,a,n):l(n))||n);return s&&n&&g(i,a,n),n};import{consume as b}from"@lit/context";import{html as f,LitElement as x}from"lit";import{property as o}from"lit/decorators.js";import{createContext as c}from"@lit/context";var p=c(Symbol("test")),h=c(Symbol("testElement"));var u={fromAttribute(r){return r==="true"},toAttribute(r){return r?"true":"false"}},t=class extends x{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return f`${this.xmlDoc}`}};e([o({type:String})],t.prototype,"category",2),e([o({type:String})],t.prototype,"identifier",2),e([o({type:Boolean,converter:u})],t.prototype,"required",2),e([o({type:Boolean,converter:u})],t.prototype,"fixed",2),e([o({type:String})],t.prototype,"href",2),e([b({context:p,subscribe:!0})],t.prototype,"_testContext",2),e([o({type:Object,attribute:!1})],t.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",t);export{t as QtiAssessmentItemRef};
1
+ import{a}from"../../chunk-POT65ZY7.js";import"../../chunk-V6YPUNZC.js";import"../../chunk-JNT54FPI.js";import"../../chunk-VI2WKTN4.js";export{a as QtiAssessmentItemRef};
@@ -1 +1 @@
1
- var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var t=(o,a,s,i)=>{for(var r=i>1?void 0:i?g(a,s):a,l=o.length-1,m;l>=0;l--)(m=o[l])&&(r=(i?m(a,s,r):m(r))||r);return i&&r&&u(a,s,r),r};import{consume as d}from"@lit/context";import{html as x,LitElement as f}from"lit";import{property as n}from"lit/decorators.js";import{createContext as p}from"@lit/context";var b=p(Symbol("test")),C=p(Symbol("testElement"));var c={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},e=class extends f{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return x`<slot name="qti-rubric-block"></slot><slot></slot>`}};t([n({type:String})],e.prototype,"identifier",2),t([n({type:String})],e.prototype,"required",2),t([n({type:Boolean,converter:c})],e.prototype,"fixed",2),t([n({type:String})],e.prototype,"title",2),t([n({type:Boolean,converter:c})],e.prototype,"visible",2),t([n({type:Boolean,converter:c,attribute:"keep-together"})],e.prototype,"keepTogether",2),t([d({context:b,subscribe:!0})],e.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",e);export{e as QtiAssessmentSection};
1
+ import{a}from"../../chunk-FNVXN5CO.js";import"../../chunk-V6YPUNZC.js";import"../../chunk-JNT54FPI.js";import"../../chunk-VI2WKTN4.js";export{a as QtiAssessmentSection};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var o=(i,n,a,r)=>{for(var t=r>1?void 0:r?x(n,a):n,s=i.length-1,l;s>=0;s--)(l=i[s])&&(t=(r?l(n,a,t):l(t))||t);return r&&t&&d(n,a,t),t};import{consume as b}from"@lit/context";import{html as u,LitElement as g}from"lit";import{customElement as C,property as p}from"lit/decorators.js";import{createContext as m}from"@lit/context";var c=m(Symbol("test")),v=m(Symbol("testElement"));var e=class extends g{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return u` <slot></slot>`}};o([p({type:String})],e.prototype,"identifier",2),o([p({type:String})],e.prototype,"title",2),o([b({context:c,subscribe:!0})],e.prototype,"_testContext",2),e=o([C("qti-assessment-test")],e);export{e as QtiAssessmentTest};
1
+ import{a}from"../../chunk-F5VW77RE.js";import"../../chunk-V6YPUNZC.js";import"../../chunk-JNT54FPI.js";import"../../chunk-VI2WKTN4.js";export{a as QtiAssessmentTest};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var n=(s,i,a,r)=>{for(var t=r>1?void 0:r?d(i,a):i,l=s.length-1,m;l>=0;l--)(m=s[l])&&(t=(r?m(i,a,t):m(t))||t);return r&&t&&p(i,a,t),t};import{html as c,LitElement as u}from"lit";import{customElement as g,property as o}from"lit/decorators.js";var e=class extends u{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return c` <slot></slot>`}};n([o({type:String})],e.prototype,"identifier",2),n([o({type:String})],e.prototype,"title",2),n([o({type:String})],e.prototype,"class",2),n([o({type:String,attribute:"navigation-mode"})],e.prototype,"NavigationMode",2),n([o({type:String,attribute:"submission-mode"})],e.prototype,"submissionMode",2),e=n([g("qti-test-part")],e);customElements.get("qti-test-part")||customElements.define("qti-test-part",e);export{e as QtiTestPart};
1
+ import{a}from"../../chunk-7CQ4ETXL.js";import"../../chunk-VI2WKTN4.js";export{a as QtiTestPart};
@@ -1,23 +1 @@
1
- var S=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var c=(n,i,e,s)=>{for(var t=s>1?void 0:s?V(i,e):i,r=n.length-1,o;r>=0;r--)(o=n[r])&&(t=(s?o(i,e,t):o(t))||t);return s&&t&&S(i,e,t),t};import{html as P}from"lit";import{customElement as N}from"lit/decorators.js";var X=String.raw,F=X`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
3
- <xsl:template match="@*|node()">
4
- <xsl:copy>
5
- <xsl:apply-templates select="@*|node()"/>
6
- </xsl:copy>
7
- </xsl:template>
8
-
9
- <!-- remove existing namespaces -->
10
- <xsl:template match="*">
11
- <!-- remove element prefix -->
12
- <xsl:element name="{local-name()}">
13
- <!-- process attributes -->
14
- <xsl:for-each select="@*">
15
- <!-- remove attribute prefix -->
16
- <xsl:attribute name="{local-name()}">
17
- <xsl:value-of select="."/>
18
- </xsl:attribute>
19
- </xsl:for-each>
20
- <xsl:apply-templates/>
21
- </xsl:element>
22
- </xsl:template>
23
- </xsl:stylesheet>`;function T(n,i,e){n.querySelectorAll(i).forEach(s=>{let t=`${i}-${e}`,r=b(s,t);s.replaceWith(r)})}function v(n,i){n.querySelectorAll("*").forEach(e=>{let s=e.classList;s&&s.forEach(t=>{if(t.startsWith(`${i}:`)){let r=t.slice(`${i}:`.length),o=`${e.nodeName}-${r}`,a=b(e,o);e.replaceWith(a)}})})}function b(n,i){let e=document.createElement(i);for(let s of n.attributes)e.setAttribute(s.name,s.value);for(;n.firstChild;)e.appendChild(n.firstChild);return e}var x=null;function u(n,i=!1){return i&&x!==null&&x.abort(),new Promise((e,s)=>{let t=new XMLHttpRequest;x=t,t.open("GET",n,!0),t.responseType="document",t.onload=()=>{t.status>=200&&t.status<300?e(t.responseXML):s(t.statusText)},t.onerror=()=>{s(t.statusText)},t.send()})}function p(n){return new DOMParser().parseFromString(n,"text/xml")}function d(n){let i=new XSLTProcessor,e=new DOMParser().parseFromString(F,"text/xml");return i.importStylesheet(e),i.transformToFragment(n,document)}function g(n,i){i.endsWith("/")||(i+="/"),n.querySelectorAll("[src],[href],[primary-path]").forEach(e=>{let s="";e.getAttribute("src")&&(s="src"),e.getAttribute("href")&&(s="href"),e.getAttribute("primary-path")&&(s="primary-path");let t=e.getAttribute(s)?.trim();if(!t.startsWith("data:")&&!t.startsWith("http")){let r=i+encodeURI(t);e.setAttribute(s,r)}})}function C(n){n.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let s=document.createComment(e.textContent);e.replaceChild(s,e.firstChild)})}function y(n){n.querySelectorAll("qti-stylesheet").forEach(i=>i.remove())}var A=()=>{let n,i={async load(e,s=!1){return new Promise(t=>{u(e,s).then(r=>(n=r,i.path(e.substring(0,e.lastIndexOf("/"))),t(i)))})},parse(e){return n=p(e),i},path:e=>(g(n,e),i),fn(e){return e(n),i},pciHooks(e){let s=["hook","module"],t=e.substring(0,e.lastIndexOf("/"));for(let r of s)n.querySelectorAll("["+r+"]").forEach(a=>{let m=a.getAttribute(r);!m.startsWith("data:")&&!m.startsWith("http")&&(a.setAttribute("base-url",e),a.setAttribute("module",t+"/"+encodeURI(m+(m.endsWith(".js")?"":".js"))))});return i},extendElementName:(e,s)=>(T(n,e,s),i),extendElementsWithClass:(e="extend")=>(v(n,e),i),customInteraction(e,s){let t=n.querySelector("qti-custom-interaction"),r=t.querySelector("object");return t.setAttribute("data-base-ref",e),t.setAttribute("data-base-item",e+s),t.setAttribute("data",r.getAttribute("data")),t.setAttribute("width",r.getAttribute("width")),t.setAttribute("height",r.getAttribute("height")),t.removeChild(r),i},convertCDATAtoComment(){return C(n),i},stripStyleSheets(){return y(n),i},html(){return new XMLSerializer().serializeToString(d(n))},xml(){return new XMLSerializer().serializeToString(n)},htmlDoc(){return d(n)},xmlDoc(){return n}};return i};var E=n=>{class i extends n{constructor(...s){super(...s),this.addEventListener("qti-assessment-test-connected",()=>{}),this.addEventListener("qti-load-item-request",({detail:t})=>{t.promise=(async()=>(await A().load(`${t.href}`,t.cancelPreviousRequest)).htmlDoc())()}),this.addEventListener("qti-interaction-changed",t=>{}),this.addEventListener("qti-outcome-changed",()=>{})}}return i};var I=n=>{class i extends n{constructor(...s){super(...s),this.addEventListener("qti-request-test-item",({detail:t})=>{if(!t)return;this._clearLoadedItems();let r=this.testElement.el.querySelector(`qti-assessment-item-ref[identifier="${t}"]`),o=this._loadItemRequest(r.href,!1),a=r.closest("qti-test-part").identifier,m=r.closest("qti-assessment-section").identifier;this._testContext={...this._testContext,navPartId:a,navSectionId:m,navItemId:t,navItemLoading:!0},o?o.then(h=>{r.xmlDoc=h,requestAnimationFrame(()=>this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0}))),this._testContext={...this._testContext,navItemLoading:!1}}).catch(h=>console.error("Failed to load item:",h)):console.info("Load item request was not handled:",r.href)}),this.addEventListener("qti-assessment-test-connected",()=>{let t=this._testContext.navItemId;t||(t=this.testElement.el.querySelector("qti-assessment-item-ref").identifier),this.dispatchEvent(new CustomEvent("qti-request-test-item",{detail:t,bubbles:!0,composed:!0}))})}_clearLoadedItems(){let s=this.testElement.el.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(s).forEach(t=>{t.xmlDoc=null})}_loadItemRequest(s,t=!0){let r=new CustomEvent("qti-load-item-request",{bubbles:!0,composed:!0,detail:{href:s,promise:null,cancelPreviousRequest:t}});return this.dispatchEvent(r),r.detail.promise}}return i};var L=n=>{class i extends n{constructor(...s){super(...s),this._testContext={...this._testContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this._testContext={...this._testContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(s){super.willUpdate(s),s.has("_testContext")&&this._updateElementView()}_updateElementView(){if(this.testElement&&this.testElement.el){Array.from(this.testElement.el.querySelectorAll("[view]")).forEach(r=>{r.classList.toggle("show",r.getAttribute("view")===this._testContext.view)});let t=this.testElement.el.querySelector(`qti-assessment-item[identifier="${this._testContext.navItemId}"]`);t&&t.showCorrectResponse(this._testContext.view==="scorer")}}_setCorrectResponseVisibility(s){s.showCorrectResponse(this._testContext.view==="scorer")}}return i};import{provide as _}from"@lit/context";import{LitElement as R}from"lit";import{state as D}from"lit/decorators.js";import{createContext as w}from"@lit/context";var q=w(Symbol("test")),M=w(Symbol("testElement"));var l=class extends R{constructor(){super();this._testContext={items:[],testOutcomeVariables:[]};this.testElement={el:null};this._updateItemInTestContext=e=>{let{identifier:s,variables:t}=e,r=this._testContext.items.find(o=>o?.identifier===s);if(!r){console.warn(`Item IDs between assessment.xml and item.xml should match: ${s} is not found!`);return}r.variables?.length===1?this._updateItemVariablesInTestContext(s,t):e.variables=[...r.variables||[]]};this.addEventListener("qti-assessment-test-connected",e=>{let s=e.detail,t=Array.from(s.querySelectorAll("qti-assessment-item-ref")).map(r=>({href:r.href,identifier:r.identifier,category:r.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testElement={el:s},this._testContext={...this._testContext,items:t}}),this.addEventListener("qti-assessment-item-connected",e=>{this._updateItemInTestContext(e.detail)}),this.addEventListener("qti-outcome-changed",e=>{let s=e.composedPath()[0];this._updateItemVariablesInTestContext(s.identifier,s.variables)})}get context(){return this._testContext}set context(e){e!=null&&(this._testContext={...e},e.items?.forEach(s=>{let t=this._testContext.items.find(r=>r.identifier===s.identifier);t?t.variables=s.variables:this._testContext.items.push(s)}))}_updateItemVariablesInTestContext(e,s){this._testContext={...this._testContext,items:this._testContext.items.map(t=>t.identifier!==e?t:{...t,variables:s.map(r=>{let o=t.variables.find(a=>a.identifier===r.identifier);return o?{...o,...r}:r})})}}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-test","")}};c([D(),_({context:q})],l.prototype,"_testContext",2),c([D(),_({context:M})],l.prototype,"testElement",2);var f=class extends E(I(L(l))){render(){return P`<slot></slot>`}};f=c([N("qti-test")],f);export{f as QtiTest};
1
+ import{a}from"../chunk-RSRX5JYB.js";import"../chunk-ITXNNGVQ.js";import"../chunk-7ENNZNJ4.js";import"../chunk-DPR6SGCZ.js";import"../chunk-3DWLPGTE.js";import"../chunk-7BKWTY4S.js";import"../chunk-V6YPUNZC.js";import"../chunk-JNT54FPI.js";import"../chunk-LVW3MHTI.js";import"../chunk-VI2WKTN4.js";export{a as QtiTest};
@@ -1 +1 @@
1
- var u=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=(a,o,e,t)=>{for(var s=t>1?void 0:t?h(o,e):o,n=a.length-1,i;n>=0;n--)(i=a[n])&&(s=(t?i(o,e,s):i(s))||s);return t&&s&&u(o,e,s),s};import{provide as p}from"@lit/context";import{LitElement as b}from"lit";import{state as x}from"lit/decorators.js";import{createContext as l}from"@lit/context";var d=l(Symbol("test")),c=l(Symbol("testElement"));var r=class extends b{constructor(){super();this._testContext={items:[],testOutcomeVariables:[]};this.testElement={el:null};this._updateItemInTestContext=e=>{let{identifier:t,variables:s}=e,n=this._testContext.items.find(i=>i?.identifier===t);if(!n){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}n.variables?.length===1?this._updateItemVariablesInTestContext(t,s):e.variables=[...n.variables||[]]};this.addEventListener("qti-assessment-test-connected",e=>{let t=e.detail,s=Array.from(t.querySelectorAll("qti-assessment-item-ref")).map(n=>({href:n.href,identifier:n.identifier,category:n.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testElement={el:t},this._testContext={...this._testContext,items:s}}),this.addEventListener("qti-assessment-item-connected",e=>{this._updateItemInTestContext(e.detail)}),this.addEventListener("qti-outcome-changed",e=>{let t=e.composedPath()[0];this._updateItemVariablesInTestContext(t.identifier,t.variables)})}get context(){return this._testContext}set context(e){e!=null&&(this._testContext={...e},e.items?.forEach(t=>{let s=this._testContext.items.find(n=>n.identifier===t.identifier);s?s.variables=t.variables:this._testContext.items.push(t)}))}_updateItemVariablesInTestContext(e,t){this._testContext={...this._testContext,items:this._testContext.items.map(s=>s.identifier!==e?s:{...s,variables:t.map(n=>{let i=s.variables.find(f=>f.identifier===n.identifier);return i?{...i,...n}:n})})}}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-test","")}};m([x(),p({context:d})],r.prototype,"_testContext",2),m([x(),p({context:c})],r.prototype,"testElement",2);export{r as TestBase};
1
+ import{a}from"../chunk-7BKWTY4S.js";import"../chunk-V6YPUNZC.js";import"../chunk-JNT54FPI.js";import"../chunk-VI2WKTN4.js";export{a as TestBase};
@@ -1,23 +1 @@
1
- var b=String.raw,T=b`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
3
- <xsl:template match="@*|node()">
4
- <xsl:copy>
5
- <xsl:apply-templates select="@*|node()"/>
6
- </xsl:copy>
7
- </xsl:template>
8
-
9
- <!-- remove existing namespaces -->
10
- <xsl:template match="*">
11
- <!-- remove element prefix -->
12
- <xsl:element name="{local-name()}">
13
- <!-- process attributes -->
14
- <xsl:for-each select="@*">
15
- <!-- remove attribute prefix -->
16
- <xsl:attribute name="{local-name()}">
17
- <xsl:value-of select="."/>
18
- </xsl:attribute>
19
- </xsl:for-each>
20
- <xsl:apply-templates/>
21
- </xsl:element>
22
- </xsl:template>
23
- </xsl:stylesheet>`;function g(e,r,t){e.querySelectorAll(r).forEach(s=>{let n=`${r}-${t}`,o=h(s,n);s.replaceWith(o)})}function x(e,r){e.querySelectorAll("*").forEach(t=>{let s=t.classList;s&&s.forEach(n=>{if(n.startsWith(`${r}:`)){let o=n.slice(`${r}:`.length),f=`${t.nodeName}-${o}`,l=h(t,f);t.replaceWith(l)}})})}function h(e,r){let t=document.createElement(r);for(let s of e.attributes)t.setAttribute(s.name,s.value);for(;e.firstChild;)t.appendChild(e.firstChild);return t}function d(e){let r=[];return e.querySelectorAll("qti-assessment-item-ref").forEach(t=>{let s=t.getAttribute("identifier"),n=t.getAttribute("href"),o=t.getAttribute("category");r.push({identifier:s,href:n,category:o})}),r}var p=null;function i(e,r=!1){return r&&p!==null&&p.abort(),new Promise((t,s)=>{let n=new XMLHttpRequest;p=n,n.open("GET",e,!0),n.responseType="document",n.onload=()=>{n.status>=200&&n.status<300?t(n.responseXML):s(n.statusText)},n.onerror=()=>{s(n.statusText)},n.send()})}function a(e){return new DOMParser().parseFromString(e,"text/xml")}function m(e){let r=new XSLTProcessor,t=new DOMParser().parseFromString(T,"text/xml");return r.importStylesheet(t),r.transformToFragment(e,document)}function u(e,r){r.endsWith("/")||(r+="/"),e.querySelectorAll("[src],[href],[primary-path]").forEach(t=>{let s="";t.getAttribute("src")&&(s="src"),t.getAttribute("href")&&(s="href"),t.getAttribute("primary-path")&&(s="primary-path");let n=t.getAttribute(s)?.trim();if(!n.startsWith("data:")&&!n.startsWith("http")){let o=r+encodeURI(n);t.setAttribute(s,o)}})}function A(e){e.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(t=>{let s=document.createComment(t.textContent);t.replaceChild(s,t.firstChild)})}function y(e){e.querySelectorAll("qti-stylesheet").forEach(r=>r.remove())}var D=()=>{let e,r={async load(t,s=!1){return new Promise(n=>{i(t,s).then(o=>(e=o,r.path(t.substring(0,t.lastIndexOf("/"))),n(r)))})},parse(t){return e=a(t),r},path:t=>(u(e,t),r),fn(t){return t(e),r},pciHooks(t){let s=["hook","module"],n=t.substring(0,t.lastIndexOf("/"));for(let o of s)e.querySelectorAll("["+o+"]").forEach(l=>{let c=l.getAttribute(o);!c.startsWith("data:")&&!c.startsWith("http")&&(l.setAttribute("base-url",t),l.setAttribute("module",n+"/"+encodeURI(c+(c.endsWith(".js")?"":".js"))))});return r},extendElementName:(t,s)=>(g(e,t,s),r),extendElementsWithClass:(t="extend")=>(x(e,t),r),customInteraction(t,s){let n=e.querySelector("qti-custom-interaction"),o=n.querySelector("object");return n.setAttribute("data-base-ref",t),n.setAttribute("data-base-item",t+s),n.setAttribute("data",o.getAttribute("data")),n.setAttribute("width",o.getAttribute("width")),n.setAttribute("height",o.getAttribute("height")),n.removeChild(o),r},convertCDATAtoComment(){return A(e),r},stripStyleSheets(){return y(e),r},html(){return new XMLSerializer().serializeToString(m(e))},xml(){return new XMLSerializer().serializeToString(e)},htmlDoc(){return m(e)},xmlDoc(){return e}};return r};var w=()=>{let e,r={async load(t){return new Promise(s=>{i(t).then(n=>(e=n,s(r)))})},parse(t){e=a(t)},assessmentTest(){let t=e.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:t.getAttribute("href"),identifier:t.getAttribute("identifier")}}};return r};var F=()=>{let e,r={async load(t){return new Promise((s,n)=>{i(t).then(o=>(e=o,r.path(t.substring(0,t.lastIndexOf("/"))),s(r)))})},parse(t){return e=a(t),r},path:t=>(u(e,t),r),fn(t){return t(e),r},items(){return d(e)},html(){return new XMLSerializer().serializeToString(m(e))},xml(){return new XMLSerializer().serializeToString(e)},htmlDoc(){return m(e)},xmlDoc(){return e}};return r};export{D as qtiTransformItem,w as qtiTransformManifest,F as qtiTransformTest};
1
+ import{a,b,c}from"../chunk-LVW3MHTI.js";import"../chunk-VI2WKTN4.js";export{a as qtiTransformItem,b as qtiTransformManifest,c as qtiTransformTest};
@@ -291,4 +291,4 @@ export {
291
291
  qtiTransformManifest,
292
292
  qtiTransformTest
293
293
  };
294
- //# sourceMappingURL=chunk-XDMSEAYC.js.map
294
+ //# sourceMappingURL=chunk-2OA7E3E7.js.map
@@ -0,0 +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"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-37X6KZO3.js.map
@@ -3526,4 +3526,4 @@ qti-response-declaration {
3526
3526
  export {
3527
3527
  item_default
3528
3528
  };
3529
- //# sourceMappingURL=chunk-Y6UWSECL.js.map
3529
+ //# sourceMappingURL=chunk-3WLCQQN7.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-3YVIK6LO.js.map
@@ -52,4 +52,4 @@ export {
52
52
  __decorateClass,
53
53
  __publicField
54
54
  };
55
- //# sourceMappingURL=chunk-6YE2KJ4C.js.map
55
+ //# sourceMappingURL=chunk-44VE5POH.js.map
@@ -34,4 +34,4 @@ function liveQuery(querySelector, _options) {
34
34
  export {
35
35
  liveQuery
36
36
  };
37
- //# sourceMappingURL=chunk-D3RGDWKP.js.map
37
+ //# sourceMappingURL=chunk-4CSM2PCC.js.map
@@ -0,0 +1 @@
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":[]}
@@ -28,4 +28,4 @@ function watch(propertyName, options) {
28
28
  export {
29
29
  watch
30
30
  };
31
- //# sourceMappingURL=chunk-ELDMXTUQ.js.map
31
+ //# sourceMappingURL=chunk-4YG2FPKK.js.map
@@ -0,0 +1 @@
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,9 +1,9 @@
1
1
  import {
2
2
  testContext
3
- } from "./chunk-XDFXD3BI.js";
3
+ } from "./chunk-R4HSV7U7.js";
4
4
  import {
5
5
  __decorateClass
6
- } from "./chunk-6YE2KJ4C.js";
6
+ } from "./chunk-44VE5POH.js";
7
7
 
8
8
  // src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts
9
9
  import { consume } from "@lit/context";
@@ -41,4 +41,4 @@ QtiAssessmentTest = __decorateClass([
41
41
  export {
42
42
  QtiAssessmentTest
43
43
  };
44
- //# sourceMappingURL=chunk-3G2DDBJW.js.map
44
+ //# sourceMappingURL=chunk-7A6KCSAU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts"],"sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { testContext, TestContext } from '../context';\n\n@customElement('qti-assessment-test')\nexport class QtiAssessmentTest extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) title: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-test-connected', {\n detail: this,\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-test': QtiAssessmentTest;\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,gBAAgB;AAIjC,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAOhD,MAAM,oBAAmC;AACvC,UAAM,kBAAkB;AACxB,UAAM,KAAK;AACX,SAAK;AAAA,MACH,IAAI,YAAY,iCAAiC;AAAA,QAC/C,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,EACT;AACF;AArB8B;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADf,kBACiB;AACA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAFf,kBAEiB;AAGrB;AAAA,EADN,QAAQ,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC;AAAA,GAJvC,kBAKJ;AALI,oBAAN;AAAA,EADN,cAAc,qBAAqB;AAAA,GACvB;","names":[]}
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  watch
3
- } from "./chunk-ELDMXTUQ.js";
3
+ } from "./chunk-4YG2FPKK.js";
4
4
  import {
5
5
  testContext,
6
6
  testElement
7
- } from "./chunk-XDFXD3BI.js";
7
+ } from "./chunk-R4HSV7U7.js";
8
8
  import {
9
9
  __decorateClass
10
- } from "./chunk-6YE2KJ4C.js";
10
+ } from "./chunk-44VE5POH.js";
11
11
 
12
12
  // src/lib/qti-test/components/test-component.abstract.ts
13
13
  import { consume } from "@lit/context";
@@ -115,4 +115,4 @@ __decorateClass([
115
115
  export {
116
116
  TestComponent
117
117
  };
118
- //# sourceMappingURL=chunk-LKINC6JO.js.map
118
+ //# sourceMappingURL=chunk-ENVUIH2A.js.map
@@ -0,0 +1 @@
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,6 +1,6 @@
1
1
  import {
2
2
  __decorateClass
3
- } from "./chunk-6YE2KJ4C.js";
3
+ } from "./chunk-44VE5POH.js";
4
4
 
5
5
  // src/lib/qti-item/qti-item.ts
6
6
  import { html, LitElement } from "lit";
@@ -17,4 +17,4 @@ QtiItem = __decorateClass([
17
17
  export {
18
18
  QtiItem
19
19
  };
20
- //# sourceMappingURL=chunk-JSPJGWGT.js.map
20
+ //# sourceMappingURL=chunk-ENZVY5X6.js.map
@@ -0,0 +1 @@
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,15 +1,15 @@
1
1
  import {
2
2
  liveQuery
3
- } from "./chunk-D3RGDWKP.js";
3
+ } from "./chunk-4CSM2PCC.js";
4
4
  import {
5
5
  watch
6
- } from "./chunk-ELDMXTUQ.js";
6
+ } from "./chunk-4YG2FPKK.js";
7
7
  import {
8
8
  qtiTransformItem
9
- } from "./chunk-XDMSEAYC.js";
9
+ } from "./chunk-2OA7E3E7.js";
10
10
  import {
11
11
  __decorateClass
12
- } from "./chunk-6YE2KJ4C.js";
12
+ } from "./chunk-44VE5POH.js";
13
13
 
14
14
  // src/lib/qti-components/qti-assessment-item/qti-assessment-item.ts
15
15
  import { provide } from "@lit/context";
@@ -6250,4 +6250,4 @@ export {
6250
6250
  QtiInlineChoice,
6251
6251
  QtiSimpleChoice
6252
6252
  };
6253
- //# sourceMappingURL=chunk-3OXGDCSU.js.map
6253
+ //# sourceMappingURL=chunk-EUCEENQQ.js.map