@citolab/qti-components 7.0.5 → 7.0.6-next.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 (326) hide show
  1. package/cdn/chunk-2F5323DC.js +8 -0
  2. package/cdn/chunk-2WPNLHGH.js +43 -0
  3. package/cdn/chunk-3M77CJJH.js +8 -0
  4. package/cdn/chunk-4DFVJE2A.js +48 -0
  5. package/cdn/chunk-4HKDXRGE.js +5 -0
  6. package/cdn/chunk-5WCOPF7O.js +73 -0
  7. package/cdn/chunk-D4K2EXYX.js +8 -0
  8. package/cdn/chunk-II7AGB2E.js +11 -0
  9. package/cdn/chunk-KUOLGIA5.js +1 -0
  10. package/cdn/chunk-KXRA4DBZ.js +8 -0
  11. package/cdn/chunk-L4TDHAKL.js +24 -0
  12. package/cdn/chunk-LY27H7YF.js +1 -0
  13. package/cdn/chunk-M6AATWPS.js +59 -0
  14. package/cdn/{chunks/chunk-UIEC4LXR.js → chunk-MFWSHIPH.js} +1 -1
  15. package/cdn/chunk-NAARXANC.js +11 -0
  16. package/cdn/chunk-OEBYNBRS.js +129 -0
  17. package/cdn/chunk-RBATSYIS.js +43 -0
  18. package/cdn/chunk-RM352RXQ.js +5 -0
  19. package/cdn/{chunks/chunk-CFXQCNG6.js → chunk-SQDSHH6N.js} +18 -2
  20. package/cdn/chunk-V2RMP73O.js +1 -0
  21. package/cdn/chunk-WI7KK7NI.js +8 -0
  22. package/cdn/chunk-YHB534QY.js +8 -0
  23. package/cdn/chunk-YXST4IEX.js +5 -0
  24. package/cdn/qti-components/index.js +131 -116
  25. package/cdn/qti-item/core/index.global.js +149 -0
  26. package/cdn/qti-item/core/index.js +5 -0
  27. package/cdn/qti-loader/index.js +1 -23
  28. package/cdn/qti-test/components/index.global.js +1 -36
  29. package/cdn/qti-test/components/index.js +1 -3598
  30. package/cdn/qti-test/components/styles.js +1 -17
  31. package/cdn/qti-test/components/test-component.abstract.js +1 -1
  32. package/cdn/qti-test/components/test-item-link.js +1 -24
  33. package/cdn/qti-test/components/test-next.js +1 -24
  34. package/cdn/qti-test/components/test-next.spec.global.js +25 -60
  35. package/cdn/qti-test/components/test-next.spec.js +247 -4749
  36. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
  37. package/cdn/qti-test/components/test-prev.js +1 -24
  38. package/cdn/qti-test/components/test-view.js +1 -11
  39. package/cdn/qti-test/core/index.global.js +205 -0
  40. package/cdn/qti-test/core/index.js +1 -0
  41. package/cdn/qti-transformers/index.js +1 -23
  42. package/dist/{chunks/chunk-Y6UWSECL.js → chunk-2CHF3TMY.js} +2 -2
  43. package/dist/chunk-2CHF3TMY.js.map +1 -0
  44. package/dist/{chunks/chunk-ZEFOMZNY.js → chunk-2GKDJDI5.js} +3 -3
  45. package/dist/chunk-2GKDJDI5.js.map +1 -0
  46. package/dist/{chunks/chunk-XDMSEAYC.js → chunk-2OA7E3E7.js} +1 -1
  47. package/dist/chunk-2OA7E3E7.js.map +1 -0
  48. package/dist/{chunks/chunk-PUBGXXTM.js → chunk-3F3DCHHM.js} +4 -4
  49. package/dist/chunk-3F3DCHHM.js.map +1 -0
  50. package/dist/{chunks/chunk-6YE2KJ4C.js → chunk-44VE5POH.js} +1 -1
  51. package/dist/{chunks/chunk-D3RGDWKP.js → chunk-4CSM2PCC.js} +1 -1
  52. package/dist/chunk-4CSM2PCC.js.map +1 -0
  53. package/dist/{chunks/chunk-ELDMXTUQ.js → chunk-4YG2FPKK.js} +1 -1
  54. package/dist/chunk-4YG2FPKK.js.map +1 -0
  55. package/dist/{chunks/chunk-W4B23OIP.js → chunk-4YR7ZPE3.js} +4 -4
  56. package/dist/chunk-4YR7ZPE3.js.map +1 -0
  57. package/dist/{chunks/chunk-XDFXD3BI.js → chunk-E3656TSN.js} +2 -2
  58. package/dist/chunk-E3656TSN.js.map +1 -0
  59. package/dist/{chunks/chunk-HWA4A3SR.js → chunk-ERLGA6TC.js} +4 -4
  60. package/dist/chunk-ERLGA6TC.js.map +1 -0
  61. package/dist/{chunks/chunk-3ROZMGAN.js → chunk-EXJQ3ZUE.js} +4 -4
  62. package/dist/chunk-EXJQ3ZUE.js.map +1 -0
  63. package/dist/chunk-KI3A6ZT6.js +50 -0
  64. package/dist/chunk-KI3A6ZT6.js.map +1 -0
  65. package/dist/{chunks/chunk-LKINC6JO.js → chunk-KVFH5VBC.js} +6 -6
  66. package/dist/chunk-KVFH5VBC.js.map +1 -0
  67. package/dist/chunk-LJU3MHXE.js +43 -0
  68. package/dist/chunk-LJU3MHXE.js.map +1 -0
  69. package/dist/chunk-MAC76UNI.js +1 -0
  70. package/dist/chunk-NUXEGEMP.js +65 -0
  71. package/dist/chunk-NUXEGEMP.js.map +1 -0
  72. package/dist/chunk-O3GIZH57.js +121 -0
  73. package/dist/chunk-O3GIZH57.js.map +1 -0
  74. package/dist/{qti-test/qti-test.js → chunk-QNR4WQAC.js} +307 -239
  75. package/dist/chunk-QNR4WQAC.js.map +1 -0
  76. package/dist/chunk-SLMQZKDH.js +568 -0
  77. package/dist/chunk-SLMQZKDH.js.map +1 -0
  78. package/dist/chunk-TAQAVEQ2.js +72 -0
  79. package/dist/chunk-TAQAVEQ2.js.map +1 -0
  80. package/dist/chunk-TLPISJ3Z.js +78 -0
  81. package/dist/chunk-TLPISJ3Z.js.map +1 -0
  82. package/dist/{chunks/chunk-4O5F7WV7.js → chunk-UB5K44DB.js} +1 -1
  83. package/dist/chunk-UB5K44DB.js.map +1 -0
  84. package/dist/chunk-UDWEOEOS.js +50 -0
  85. package/dist/chunk-UDWEOEOS.js.map +1 -0
  86. package/dist/qti-components/index.d.ts +2 -2
  87. package/dist/qti-components/index.js +12 -285
  88. package/dist/qti-components/index.js.map +1 -1
  89. package/dist/qti-components-jsx.d.ts +83 -83
  90. package/dist/qti-item/{components/item-container.d.ts → core/index.d.ts} +22 -1
  91. package/dist/{chunks/chunk-LROTNPC2.js → qti-item/core/index.js} +20 -9
  92. package/dist/qti-item/core/index.js.map +1 -0
  93. package/dist/qti-loader/index.d.ts +1 -1
  94. package/dist/qti-loader/index.js +6 -287
  95. package/dist/qti-loader/index.js.map +1 -1
  96. package/dist/{qti-simple-choice-DxWcdKHi.d.ts → qti-simple-choice-DB7hqAMS.d.ts} +1 -1
  97. package/dist/qti-test/components/index.d.ts +2 -4
  98. package/dist/qti-test/components/index.js +24 -4135
  99. package/dist/qti-test/components/index.js.map +1 -1
  100. package/dist/qti-test/components/styles.js +7 -22
  101. package/dist/qti-test/components/styles.js.map +1 -1
  102. package/dist/qti-test/components/test-component.abstract.d.ts +2 -3
  103. package/dist/qti-test/components/test-component.abstract.js +7 -145
  104. package/dist/qti-test/components/test-component.abstract.js.map +1 -1
  105. package/dist/qti-test/components/test-item-link.d.ts +2 -3
  106. package/dist/qti-test/components/test-item-link.js +9 -198
  107. package/dist/qti-test/components/test-item-link.js.map +1 -1
  108. package/dist/qti-test/components/test-next.d.ts +2 -3
  109. package/dist/qti-test/components/test-next.js +9 -205
  110. package/dist/qti-test/components/test-next.js.map +1 -1
  111. package/dist/qti-test/components/test-next.spec.d.ts +3 -7
  112. package/dist/qti-test/components/test-next.spec.js +140 -11152
  113. package/dist/qti-test/components/test-next.spec.js.map +1 -1
  114. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +2 -3
  115. package/dist/qti-test/components/test-paging-buttons-stamp.js +8 -214
  116. package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
  117. package/dist/qti-test/components/test-prev.d.ts +2 -3
  118. package/dist/qti-test/components/test-prev.js +9 -205
  119. package/dist/qti-test/components/test-prev.js.map +1 -1
  120. package/dist/qti-test/components/test-view.d.ts +2 -3
  121. package/dist/qti-test/components/test-view.js +8 -205
  122. package/dist/qti-test/components/test-view.js.map +1 -1
  123. package/dist/qti-test/core/index.d.ts +121 -0
  124. package/dist/qti-test/core/index.js +25 -0
  125. package/dist/qti-transformers/index.js +6 -287
  126. package/dist/qti-transformers/index.js.map +1 -1
  127. package/dist/test-component.abstract-DWJ0XNiI.d.ts +108 -0
  128. package/dist/{index-Cvrd4KQA.d.ts → test.context-DKSpQHyg.d.ts} +40 -56
  129. package/dist/{test-base-BJwG9Ie8.d.ts → test.context-K2w-1mWi.d.ts} +19 -29
  130. package/dist/vscode.html-custom-data.json +21 -21
  131. package/package.json +70 -75
  132. package/cdn/chunks/chunk-4UJBK6JO.js +0 -1
  133. package/cdn/chunks/chunk-5O3Z7TDV.js +0 -1
  134. package/cdn/chunks/chunk-65LFT33L.js +0 -8
  135. package/cdn/chunks/chunk-6D25UFJR.js +0 -8
  136. package/cdn/chunks/chunk-6UGPNL7M.js +0 -1
  137. package/cdn/chunks/chunk-CSUKVUZF.js +0 -3
  138. package/cdn/chunks/chunk-CSY3WI5A.js +0 -1
  139. package/cdn/chunks/chunk-DAZR7RUI.js +0 -0
  140. package/cdn/chunks/chunk-EOPEMJS3.js +0 -0
  141. package/cdn/chunks/chunk-G5O7EN45.js +0 -5
  142. package/cdn/chunks/chunk-GEFUIFM7.js +0 -0
  143. package/cdn/chunks/chunk-JLNHEMQG.js +0 -1
  144. package/cdn/chunks/chunk-LPWIM7QJ.js +0 -902
  145. package/cdn/chunks/chunk-M3YRM3AV.js +0 -1
  146. package/cdn/chunks/chunk-M6BOWL2U.js +0 -1
  147. package/cdn/chunks/chunk-P5IE36FO.js +0 -8
  148. package/cdn/chunks/chunk-PXH5KN5O.js +0 -1
  149. package/cdn/chunks/chunk-RBEI6NIF.js +0 -1
  150. package/cdn/chunks/chunk-SMKIYFFI.js +0 -1
  151. package/cdn/chunks/chunk-SRLMW23F.js +0 -0
  152. package/cdn/chunks/chunk-T3YDLD2H.js +0 -11
  153. package/cdn/chunks/chunk-T6IXJ4W4.js +0 -1
  154. package/cdn/chunks/chunk-TFAUBGP2.js +0 -0
  155. package/cdn/chunks/chunk-V44O3GTW.js +0 -0
  156. package/cdn/chunks/chunk-V6B54FQW.js +0 -5
  157. package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
  158. package/cdn/chunks/chunk-VYANBI35.js +0 -1
  159. package/cdn/chunks/chunk-XUJ7TXHW.js +0 -1
  160. package/cdn/chunks/chunk-ZIZLFFSG.js +0 -0
  161. package/cdn/index.css +0 -1
  162. package/cdn/index.global.js +0 -277
  163. package/cdn/index.js +0 -4503
  164. package/cdn/qti-item/components/index.css +0 -1
  165. package/cdn/qti-item/components/index.global.js +0 -149
  166. package/cdn/qti-item/components/index.js +0 -3549
  167. package/cdn/qti-item/components/item-container.css +0 -1
  168. package/cdn/qti-item/components/item-container.global.js +0 -149
  169. package/cdn/qti-item/components/item-container.js +0 -3549
  170. package/cdn/qti-item/index.css +0 -1
  171. package/cdn/qti-item/index.global.js +0 -149
  172. package/cdn/qti-item/index.js +0 -3549
  173. package/cdn/qti-item/qti-item.global.js +0 -114
  174. package/cdn/qti-item/qti-item.js +0 -1
  175. package/cdn/qti-test/components/index.css +0 -1
  176. package/cdn/qti-test/components/test-container.css +0 -1
  177. package/cdn/qti-test/components/test-container.global.js +0 -149
  178. package/cdn/qti-test/components/test-container.js +0 -3549
  179. package/cdn/qti-test/components/test-next.spec.css +0 -1
  180. package/cdn/qti-test/context/index.global.js +0 -58
  181. package/cdn/qti-test/context/index.js +0 -1
  182. package/cdn/qti-test/context/test.context.global.js +0 -58
  183. package/cdn/qti-test/context/test.context.js +0 -1
  184. package/cdn/qti-test/index.css +0 -1
  185. package/cdn/qti-test/index.global.js +0 -242
  186. package/cdn/qti-test/index.js +0 -3598
  187. package/cdn/qti-test/mixins/index.global.js +0 -1
  188. package/cdn/qti-test/mixins/index.js +0 -23
  189. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  190. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  191. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  192. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  193. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  194. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  195. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  196. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  197. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  198. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  199. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  200. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  201. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  202. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  203. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  204. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  205. package/cdn/qti-test/qti-test.global.js +0 -170
  206. package/cdn/qti-test/qti-test.js +0 -23
  207. package/cdn/qti-test/test-base.global.js +0 -170
  208. package/cdn/qti-test/test-base.js +0 -1
  209. package/dist/chunks/chunk-3G2DDBJW.js +0 -44
  210. package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
  211. package/dist/chunks/chunk-3NLCJYSX.js +0 -1
  212. package/dist/chunks/chunk-3OXGDCSU.js +0 -6253
  213. package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
  214. package/dist/chunks/chunk-3ROZMGAN.js.map +0 -1
  215. package/dist/chunks/chunk-4O5F7WV7.js.map +0 -1
  216. package/dist/chunks/chunk-AAQCM2FP.js +0 -56
  217. package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
  218. package/dist/chunks/chunk-D3RGDWKP.js.map +0 -1
  219. package/dist/chunks/chunk-DJLE6EV2.js +0 -36
  220. package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
  221. package/dist/chunks/chunk-ELDMXTUQ.js.map +0 -1
  222. package/dist/chunks/chunk-EW5CTHAD.js +0 -1
  223. package/dist/chunks/chunk-HWA4A3SR.js.map +0 -1
  224. package/dist/chunks/chunk-IKZWK2C5.js +0 -1
  225. package/dist/chunks/chunk-IKZWK2C5.js.map +0 -1
  226. package/dist/chunks/chunk-IP7JSYO6.js +0 -1
  227. package/dist/chunks/chunk-IP7JSYO6.js.map +0 -1
  228. package/dist/chunks/chunk-JE6BMXZU.js +0 -94
  229. package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
  230. package/dist/chunks/chunk-JSPJGWGT.js +0 -20
  231. package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
  232. package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
  233. package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
  234. package/dist/chunks/chunk-MTMT2RMF.js +0 -63
  235. package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
  236. package/dist/chunks/chunk-NDJZGJUR.js +0 -65
  237. package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
  238. package/dist/chunks/chunk-OE2LFIH2.js +0 -1
  239. package/dist/chunks/chunk-OE2LFIH2.js.map +0 -1
  240. package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
  241. package/dist/chunks/chunk-OJ2XGDWK.js.map +0 -1
  242. package/dist/chunks/chunk-PUBGXXTM.js.map +0 -1
  243. package/dist/chunks/chunk-QRCUNRP5.js +0 -75
  244. package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
  245. package/dist/chunks/chunk-S6JJYCO7.js +0 -51
  246. package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
  247. package/dist/chunks/chunk-U3AALKEP.js +0 -1
  248. package/dist/chunks/chunk-U3AALKEP.js.map +0 -1
  249. package/dist/chunks/chunk-UCQFSRYF.js +0 -34
  250. package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
  251. package/dist/chunks/chunk-URGVQ64M.js +0 -1
  252. package/dist/chunks/chunk-URGVQ64M.js.map +0 -1
  253. package/dist/chunks/chunk-V4FXK4TP.js +0 -128
  254. package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
  255. package/dist/chunks/chunk-W4B23OIP.js.map +0 -1
  256. package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
  257. package/dist/chunks/chunk-XDMSEAYC.js.map +0 -1
  258. package/dist/chunks/chunk-XPDS72XY.js +0 -29
  259. package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
  260. package/dist/chunks/chunk-Y6UWSECL.js.map +0 -1
  261. package/dist/chunks/chunk-ZEFOMZNY.js.map +0 -1
  262. package/dist/index.d.ts +0 -19
  263. package/dist/index.js +0 -11153
  264. package/dist/index.js.map +0 -1
  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 +0 -26
  275. package/dist/qti-item/qti-item.js.map +0 -1
  276. package/dist/qti-test/components/test-container.d.ts +0 -37
  277. package/dist/qti-test/components/test-container.js +0 -3782
  278. package/dist/qti-test/components/test-container.js.map +0 -1
  279. package/dist/qti-test/context/index.d.ts +0 -6
  280. package/dist/qti-test/context/index.js +0 -9
  281. package/dist/qti-test/context/index.js.map +0 -1
  282. package/dist/qti-test/context/test.context.d.ts +0 -6
  283. package/dist/qti-test/context/test.context.js +0 -9
  284. package/dist/qti-test/context/test.context.js.map +0 -1
  285. package/dist/qti-test/index.d.ts +0 -14
  286. package/dist/qti-test/index.js +0 -4746
  287. package/dist/qti-test/index.js.map +0 -1
  288. package/dist/qti-test/mixins/index.d.ts +0 -8
  289. package/dist/qti-test/mixins/index.js +0 -350
  290. package/dist/qti-test/mixins/index.js.map +0 -1
  291. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  292. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  293. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  294. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  295. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  296. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  297. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  298. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  299. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  300. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  301. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  302. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  303. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  304. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  305. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  306. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  307. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  308. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  309. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  310. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  311. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  312. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  313. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  314. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  315. package/dist/qti-test/qti-test.d.ts +0 -68
  316. package/dist/qti-test/qti-test.js.map +0 -1
  317. package/dist/qti-test/test-base.d.ts +0 -6
  318. package/dist/qti-test/test-base.js +0 -137
  319. package/dist/qti-test/test-base.js.map +0 -1
  320. /package/cdn/{chunks/chunk-6DMSHH5X.js → chunk-22HAPLRD.js} +0 -0
  321. /package/cdn/{chunks/chunk-EHK76KRT.js → chunk-GPDDPZFH.js} +0 -0
  322. /package/cdn/{chunks/chunk-5FCXUJAG.js → chunk-LVW3MHTI.js} +0 -0
  323. /package/cdn/{chunks/chunk-T4HD2C4F.js → chunk-VI2WKTN4.js} +0 -0
  324. /package/dist/{chunks/chunk-3NLCJYSX.js.map → chunk-44VE5POH.js.map} +0 -0
  325. /package/dist/{chunks/chunk-6YE2KJ4C.js.map → chunk-MAC76UNI.js.map} +0 -0
  326. /package/dist/{chunks/chunk-EW5CTHAD.js.map → qti-test/core/index.js.map} +0 -0
@@ -1,42 +1,20 @@
1
- var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e,t)=>{for(var r=t>1?void 0:t?Ar(o,e):o,i=c.length-1,l;i>=0;i--)(l=c[i])&&(r=(t?l(o,e,r):l(r))||r);return t&&r&&Rr(o,e,r),r};import{provide as Lr}from"@lit/context";import{LitElement as _r,html as Dr}from"lit";import{customElement as Vr,property as Y}from"lit/decorators.js";function x(c,o){let e={waitUntilFirstUpdate:!1,...o};return(t,r)=>{let{update:i}=t,l=Array.isArray(c)?c:[c];t.update=function(s){l.forEach(a=>{let p=a;if(s.has(p)){let d=s.get(p),u=this[p];d!==u&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[r](d,u)}}),i.call(this,s)}}}import{createContext as kr}from"@lit/context";var Dt=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],y=kr(Symbol("item"));var E=class extends _r{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{this._interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this._interactionElements.forEach(r=>r.readonly=t);this._context={identifier:this.getAttribute("identifier"),variables:Dt};this._initialContext={...this._context,variables:this._context.variables};this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let t=e.detail;this._feedbackElements.push(t),(Number(this._context.variables.find(i=>i.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:t,countAttempt:r}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(r)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type,...e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context={...this._context,variables:this._context.variables.map(t=>{let r=e.find(i=>i.identifier===t.identifier);return r?{...t,...r}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let r=this._interactionElements.find(i=>i.responseIdentifier===t.identifier);r&&(r.value=t.value)}})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let i=this._interactionElements.find(l=>l.getAttribute("response-identifier")===t.responseIdentifier);i&&(i.value=t.response)}}render(){return Dr`<slot></slot>`}showCorrectResponse(e){let r=this._context.variables.filter(i=>"correctResponse"in i&&i.correctResponse).map(i=>({responseIdentifier:i.identifier,response:i.correctResponse}));for(let i of r){let l=this._interactionElements.find(s=>s.getAttribute("response-identifier")===i.responseIdentifier);l&&(l.correctResponse=e?i.response:"")}}processResponse(e=!0){this.validate();let t=this.querySelector("qti-response-processing");return!t||!t.process?!1:(t.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(r=>r.identifier==="numAttempts")?.value+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:t,response:r}=e.detail;this.updateResponseVariable(t,r)}updateResponseVariable(e,t){this._context={...this._context,variables:this._context.variables.map(r=>r.identifier!==e?r:{...r,value:t})},this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,t){let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context={...this._context,variables:this._context.variables.map(i=>i.identifier!==e?i:{...i,value:r.cardinality==="single"?t:[...i.value,t]})},this._feedbackElements.forEach(i=>i.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(i=>i.identifier===e)?.value})}validate(){return this._interactionElements.every(e=>e.validate())?!0:this._interactionElements.some(e=>e.validate())?!1:null}_getCompletionStatus(){let e=this.validate();return e===!0?"completed":e===!1?"incomplete":"not_attempted"}_emit(e,t=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}};n([Y({type:String})],E.prototype,"title",2),n([Y({type:String})],E.prototype,"identifier",2),n([Y({type:String})],E.prototype,"adaptive",2),n([Y({type:String})],E.prototype,"timeDependent",2),n([Y({type:Boolean})],E.prototype,"disabled",2),n([x("disabled",{waitUntilFirstUpdate:!0})],E.prototype,"_handleDisabledChange",2),n([Y({type:Boolean})],E.prototype,"readonly",2),n([x("readonly",{waitUntilFirstUpdate:!0})],E.prototype,"_handleReadonlyChange",2),n([Lr({context:y})],E.prototype,"_context",2),E=n([Vr("qti-assessment-item")],E);import{LitElement as $r}from"lit";import{customElement as Ir,property as Pt}from"lit/decorators.js";var Hr=String.raw,Nr=Hr`<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 Vt(c,o,e){c.querySelectorAll(o).forEach(t=>{let r=`${o}-${e}`,i=Nt(t,r);t.replaceWith(i)})}function Ht(c,o){c.querySelectorAll("*").forEach(e=>{let t=e.classList;t&&t.forEach(r=>{if(r.startsWith(`${o}:`)){let i=r.slice(`${o}:`.length),l=`${e.nodeName}-${i}`,s=Nt(e,l);e.replaceWith(s)}})})}function Nt(c,o){let e=document.createElement(o);for(let t of c.attributes)e.setAttribute(t.name,t.value);for(;c.firstChild;)e.appendChild(c.firstChild);return e}var Qe=null;function Me(c,o=!1){return o&&Qe!==null&&Qe.abort(),new Promise((e,t)=>{let r=new XMLHttpRequest;Qe=r,r.open("GET",c,!0),r.responseType="document",r.onload=()=>{r.status>=200&&r.status<300?e(r.responseXML):t(r.statusText)},r.onerror=()=>{t(r.statusText)},r.send()})}function Se(c){return new DOMParser().parseFromString(c,"text/xml")}function Re(c){let o=new XSLTProcessor,e=new DOMParser().parseFromString(Nr,"text/xml");return o.importStylesheet(e),o.transformToFragment(c,document)}function et(c,o){o.endsWith("/")||(o+="/"),c.querySelectorAll("[src],[href],[primary-path]").forEach(e=>{let t="";e.getAttribute("src")&&(t="src"),e.getAttribute("href")&&(t="href"),e.getAttribute("primary-path")&&(t="primary-path");let r=e.getAttribute(t)?.trim();if(!r.startsWith("data:")&&!r.startsWith("http")){let i=o+encodeURI(r);e.setAttribute(t,i)}})}function $t(c){c.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let t=document.createComment(e.textContent);e.replaceChild(t,e.firstChild)})}function It(c){c.querySelectorAll("qti-stylesheet").forEach(o=>o.remove())}var Ot=()=>{let c,o={async load(e,t=!1){return new Promise(r=>{Me(e,t).then(i=>(c=i,o.path(e.substring(0,e.lastIndexOf("/"))),r(o)))})},parse(e){return c=Se(e),o},path:e=>(et(c,e),o),fn(e){return e(c),o},pciHooks(e){let t=["hook","module"],r=e.substring(0,e.lastIndexOf("/"));for(let i of t)c.querySelectorAll("["+i+"]").forEach(s=>{let a=s.getAttribute(i);!a.startsWith("data:")&&!a.startsWith("http")&&(s.setAttribute("base-url",e),s.setAttribute("module",r+"/"+encodeURI(a+(a.endsWith(".js")?"":".js"))))});return o},extendElementName:(e,t)=>(Vt(c,e,t),o),extendElementsWithClass:(e="extend")=>(Ht(c,e),o),customInteraction(e,t){let r=c.querySelector("qti-custom-interaction"),i=r.querySelector("object");return r.setAttribute("data-base-ref",e),r.setAttribute("data-base-item",e+t),r.setAttribute("data",i.getAttribute("data")),r.setAttribute("width",i.getAttribute("width")),r.setAttribute("height",i.getAttribute("height")),r.removeChild(i),o},convertCDATAtoComment(){return $t(c),o},stripStyleSheets(){return It(c),o},html(){return new XMLSerializer().serializeToString(Re(c))},xml(){return new XMLSerializer().serializeToString(c)},htmlDoc(){return Re(c)},xmlDoc(){return c}};return o};var W=class extends $r{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0,composed:!0});if(this.dispatchEvent(e)){let i=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);i?await this.updateStimulusRef(i):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async updateStimulusRef(e){let t=await Ot().load(this.href).then(r=>r.htmlDoc());if(t){let r=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...r)}}};n([Pt({type:String})],W.prototype,"identifier",2),n([Pt({type:String})],W.prototype,"href",2),W=n([Ir("qti-assessment-stimulus-ref")],W);import{html as Or}from"lit";import{property as Ae}from"lit/decorators.js";var Ft={toAttribute:c=>c?"true":"false",fromAttribute:c=>c==="true"};function M(c,o){class e extends c{constructor(...i){super(...i);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this.internals=this.attachInternals()}handleDisabledChange(i,l){this.tabIndex=l?-1:0,l&&this.blur()}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${o}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${o}`,{bubbles:!0,composed:!0}))}_onKeyUp(i){i.altKey||i.code==="Space"&&(i.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${o}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return Or`<slot></slot>`}}return n([Ae({type:String})],e.prototype,"identifier",2),n([Ae({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),n([Ae({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:Ft})],e.prototype,"disabled",2),n([Ae({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:Ft})],e.prototype,"readonly",2),n([x("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}import{customElement as Fr}from"lit/decorators.js";import{html as zr,LitElement as Ur}from"lit";import{css as Pr}from"lit";var zt=Pr`
1
+ import{b as ne,c as X,d as Ht,e as $t,f as Be,g as ae,h as j,i as le,j as It}from"../chunk-L4TDHAKL.js";import{a as Nt}from"../chunk-LVW3MHTI.js";import{a as Ye}from"../chunk-GPDDPZFH.js";import{a as Dt,b as k}from"../chunk-M6AATWPS.js";import{a as h,b as d,c as C,d as ze,e as Vt,f as M}from"../chunk-5WCOPF7O.js";import{a as g,d as u,e as at,f as oe,g as L,j as v}from"../chunk-4DFVJE2A.js";import{e as n}from"../chunk-VI2WKTN4.js";var Ot=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],w=Symbol("item");var S=class extends v{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,t)=>{this._interactionElements.forEach(r=>r.disabled=t)};this._handleReadonlyChange=(e,t)=>this._interactionElements.forEach(r=>r.readonly=t);this._context={identifier:this.getAttribute("identifier"),variables:Ot};this._initialContext={...this._context,variables:this._context.variables};this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context={...this._context,variables:[...this._context.variables,e.detail.variable]},this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let t=e.detail;this._feedbackElements.push(t),(Number(this._context.variables.find(i=>i.identifier==="numAttempts")?.value)||0)>0&&t.checkShowFeedback(t.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:t,countAttempt:r}=e.detail;this.validate(),this.updateResponseVariable(t,"true"),this.processResponse(r)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:t,value:r}=e.detail;this.updateOutcomeVariable(t,r),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>({identifier:e.identifier,value:e.value,type:e.type,...e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}}))}set variables(e){if(!Array.isArray(e)||e.some(t=>!("identifier"in t))){console.warn("variables property should be an array of VariableDeclaration");return}this._context={...this._context,variables:this._context.variables.map(t=>{let r=e.find(i=>i.identifier===t.identifier);return r?{...t,...r}:t})},this._context.variables.forEach(t=>{if(t.type==="response"){let r=this._interactionElements.find(i=>i.responseIdentifier===t.identifier);r&&(r.value=t.value)}})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let t of e){this.getResponse(t.responseIdentifier)&&this.updateResponseVariable(t.responseIdentifier,t.response);let i=this._interactionElements.find(a=>a.getAttribute("response-identifier")===t.responseIdentifier);i&&(i.value=t.response)}}render(){return u`<slot></slot>`}showCorrectResponse(e){let r=this._context.variables.filter(i=>"correctResponse"in i&&i.correctResponse).map(i=>({responseIdentifier:i.identifier,response:i.correctResponse}));for(let i of r){let a=this._interactionElements.find(s=>s.getAttribute("response-identifier")===i.responseIdentifier);a&&(a.correctResponse=e?i.response:"")}}processResponse(e=!0){this.validate();let t=this.querySelector("qti-response-processing");return!t||!t.process?!1:(t.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+this._context.variables.find(r=>r.identifier==="numAttempts")?.value+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(t=>t.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:t,response:r}=e.detail;this.updateResponseVariable(t,r)}updateResponseVariable(e,t){this._context={...this._context,variables:this._context.variables.map(r=>r.identifier!==e?r:{...r,value:t})},this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(t)?[...t]:t}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,t){let r=this.getOutcome(e);if(!r){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context={...this._context,variables:this._context.variables.map(i=>i.identifier!==e?i:{...i,value:r.cardinality==="single"?t:[...i.value,t]})},this._feedbackElements.forEach(i=>i.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:this._context.variables.find(i=>i.identifier===e)?.value})}validate(){return this._interactionElements.every(e=>e.validate())?!0:this._interactionElements.some(e=>e.validate())?!1:null}_getCompletionStatus(){let e=this.validate();return e===!0?"completed":e===!1?"incomplete":"not_attempted"}_emit(e,t=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}};n([d({type:String})],S.prototype,"title",2),n([d({type:String})],S.prototype,"identifier",2),n([d({type:String})],S.prototype,"adaptive",2),n([d({type:String})],S.prototype,"timeDependent",2),n([d({type:Boolean})],S.prototype,"disabled",2),n([M("disabled",{waitUntilFirstUpdate:!0})],S.prototype,"_handleDisabledChange",2),n([d({type:Boolean})],S.prototype,"readonly",2),n([M("readonly",{waitUntilFirstUpdate:!0})],S.prototype,"_handleReadonlyChange",2),n([Dt({context:w})],S.prototype,"_context",2),S=n([h("qti-assessment-item")],S);var ce=class extends v{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0,composed:!0});if(this.dispatchEvent(e)){let i=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);i?await this.updateStimulusRef(i):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async updateStimulusRef(e){let t=await Nt().load(this.href).then(r=>r.htmlDoc());if(t){let r=t.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.innerHTML="",e.append(...r)}}};n([d({type:String})],ce.prototype,"identifier",2),n([d({type:String})],ce.prototype,"href",2),ce=n([h("qti-assessment-stimulus-ref")],ce);var Pt={toAttribute:c=>c?"true":"false",fromAttribute:c=>c==="true"};function V(c,o){class e extends c{constructor(...i){super(...i);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this.internals=this.attachInternals()}handleDisabledChange(i,a){this.tabIndex=a?-1:0,a&&this.blur()}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${o}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${o}`,{bubbles:!0,composed:!0}))}_onKeyUp(i){i.altKey||i.code==="Space"&&(i.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${o}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return u`<slot></slot>`}}return n([d({type:String})],e.prototype,"identifier",2),n([d({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),n([d({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:Pt})],e.prototype,"disabled",2),n([d({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:Pt})],e.prototype,"readonly",2),n([M("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}var Ft=g`
24
2
  :host {
25
3
  display: block;
26
4
  }
27
- `;var ie=class extends Ur{render(){return zr`<slot name="qti-rubric-block"></slot><slot></slot>`}};ie.styles=zt,ie=n([Fr("qti-item-body")],ie);import{html as Xr,LitElement as Br}from"lit";import{customElement as Yr}from"lit/decorators.js";var ke=class extends Br{render(){return Xr`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};ke=n([Yr("qti-prompt")],ke);import{LitElement as Wr}from"lit";import{customElement as jr}from"lit/decorators.js";var Le=class extends Wr{constructor(){super(...arguments);this.styleElement=null}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(r=>r.text()).then(r=>{let i=this.minifyCss(r);this.styleElement=document.createElement("style"),this.styleElement.media="screen",this.styleElement.textContent=`@scope {${i}}`,this.parentElement?this.parentElement.appendChild(this.styleElement):console.warn("No parent element to append the scoped stylesheet to.")}).catch(r=>{console.error("Failed to load stylesheet:",r)}),this.textContent!==null&&this.textContent.trim()!==""){let r=this.minifyCss(this.textContent);this.styleElement=document.createElement("style"),this.styleElement.media="screen",this.styleElement.textContent=`@scope {${r}}`,this.parentElement?this.parentElement.appendChild(this.styleElement):console.warn("No parent element to append the scoped stylesheet to.")}}minifyCss(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()}disconnectedCallback(){if(this.styleElement)try{this.styleElement.remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};Le=n([jr("qti-stylesheet")],Le);import{consume as Zr}from"@lit/context";import{css as Qr,html as ei}from"lit";import{customElement as ti,property as _e,state as ri}from"lit/decorators.js";import{html as Kr,LitElement as Jr}from"lit";import{customElement as Gr}from"lit/decorators.js";var I=class extends Jr{render(){return Kr`<slot></slot>`}defaultValues(o){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(r=>r.innerHTML.trim());return t.length>1||o.cardinality==="multiple"||o.cardinality==="ordered"?t:t[0]}};I=n([Gr("qti-variabledeclaration")],I);var S=class extends I{constructor(){super(...arguments);this.externalScored=null}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return ei`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let r of e.querySelectorAll("qti-interpolation-table-entry")){!r.getAttribute("source-value")&&r.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let i=parseInt(r.getAttribute("source-value")),l=parseInt(r.getAttribute("target-value"));(isNaN(i)||isNaN(l))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(i,l)}return t}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};S.styles=[Qr`
5
+ `;var xe=class extends v{render(){return u`<slot name="qti-rubric-block"></slot><slot></slot>`}};xe.styles=Ft,xe=n([h("qti-item-body")],xe);var Ue=class extends v{render(){return u`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};Ue=n([h("qti-prompt")],Ue);var Xe=class extends v{constructor(){super(...arguments);this.styleElement=null}firstUpdated(e){super.firstUpdated(e);let t=this.getAttribute("href");if(t!==null&&fetch(t).then(r=>r.text()).then(r=>{let i=this.minifyCss(r);this.styleElement=document.createElement("style"),this.styleElement.media="screen",this.styleElement.textContent=`@scope {${i}}`,this.parentElement?this.parentElement.appendChild(this.styleElement):console.warn("No parent element to append the scoped stylesheet to.")}).catch(r=>{console.error("Failed to load stylesheet:",r)}),this.textContent!==null&&this.textContent.trim()!==""){let r=this.minifyCss(this.textContent);this.styleElement=document.createElement("style"),this.styleElement.media="screen",this.styleElement.textContent=`@scope {${r}}`,this.parentElement?this.parentElement.appendChild(this.styleElement):console.warn("No parent element to append the scoped stylesheet to.")}}minifyCss(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{}:;])\s*/g,"$1").trim()}disconnectedCallback(){if(this.styleElement)try{this.styleElement.remove()}catch(e){console.error("Could not remove stylesheet:",e)}super.disconnectedCallback()}};Xe=n([h("qti-stylesheet")],Xe);var W=class extends v{render(){return u`<slot></slot>`}defaultValues(o){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let t=e.map(r=>r.innerHTML.trim());return t.length>1||o.cardinality==="multiple"||o.cardinality==="ordered"?t:t[0]}};W=n([h("qti-variabledeclaration")],W);var N=class extends W{constructor(){super(...arguments);this.externalScored=null}render(){let e=this.itemContext?.variables.find(t=>t.identifier===this.identifier)?.value;return u`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let t=new Map;for(let r of e.querySelectorAll("qti-interpolation-table-entry")){!r.getAttribute("source-value")&&r.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let i=parseInt(r.getAttribute("source-value")),a=parseInt(r.getAttribute("target-value"));(isNaN(i)||isNaN(a))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),t.set(i,a)}return t}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};N.styles=[g`
28
6
  :host {
29
7
  display: none;
30
8
  }
31
- `],n([_e({type:String,attribute:"base-type"})],S.prototype,"baseType",2),n([_e({type:String,attribute:"external-scored"})],S.prototype,"externalScored",2),n([_e({type:String})],S.prototype,"identifier",2),n([_e({type:String})],S.prototype,"cardinality",2),n([Zr({context:y,subscribe:!0}),ri()],S.prototype,"itemContext",2),S=n([ti("qti-outcome-declaration")],S);import{consume as ii}from"@lit/context";import{css as si,html as oi}from"lit";import{customElement as ni,property as tt,state as ai}from"lit/decorators.js";var D=class extends I{render(){let o=this.itemContext?.variables.find(e=>e.identifier===this.identifier)?.value;return oi`${JSON.stringify(o,null,2)}`}connectedCallback(){super.connectedCallback();let o={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};o.value=this.defaultValues(o),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:o}}))}get correctResponse(){let o,e=this.querySelector("qti-correct-response");if(e){let t=e.querySelectorAll("qti-value");if(this.cardinality==="single"&&t.length>0)o=t[0].textContent,t[0].remove();else if(this.cardinality!=="single"){o=[];for(let r=0;r<t.length;r++)o.push(t[r].textContent),t[r].remove()}}return o}get mapping(){return this.querySelector("qti-mapping")}};D.styles=[si`
9
+ `],n([d({type:String,attribute:"base-type"})],N.prototype,"baseType",2),n([d({type:String,attribute:"external-scored"})],N.prototype,"externalScored",2),n([d({type:String})],N.prototype,"identifier",2),n([d({type:String})],N.prototype,"cardinality",2),n([k({context:w,subscribe:!0}),C()],N.prototype,"itemContext",2),N=n([h("qti-outcome-declaration")],N);var F=class extends W{render(){let o=this.itemContext?.variables.find(e=>e.identifier===this.identifier)?.value;return u`${JSON.stringify(o,null,2)}`}connectedCallback(){super.connectedCallback();let o={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};o.value=this.defaultValues(o),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:o}}))}get correctResponse(){let o,e=this.querySelector("qti-correct-response");if(e){let t=e.querySelectorAll("qti-value");if(this.cardinality==="single"&&t.length>0)o=t[0].textContent,t[0].remove();else if(this.cardinality!=="single"){o=[];for(let r=0;r<t.length;r++)o.push(t[r].textContent),t[r].remove()}}return o}get mapping(){return this.querySelector("qti-mapping")}};F.styles=[g`
32
10
  :host {
33
11
  display: none;
34
12
  }
35
- `],n([tt({type:String,attribute:"base-type"})],D.prototype,"baseType",2),n([tt({type:String})],D.prototype,"identifier",2),n([tt({type:String})],D.prototype,"cardinality",2),n([ii({context:y,subscribe:!0}),ai()],D.prototype,"itemContext",2),D=n([ni("qti-response-declaration")],D);import{LitElement as li}from"lit";import{customElement as ci}from"lit/decorators.js";var De=class extends li{};De=n([ci("qti-companion-materials-info")],De);import{LitElement as pi,html as di}from"lit";import{customElement as ui}from"lit/decorators.js";var Ve=class extends pi{render(){return di`<slot></slot>`}};Ve=n([ui("qti-content-body")],Ve);import{LitElement as mi,css as hi,html as fi}from"lit";import{customElement as gi,property as He}from"lit/decorators.js";var R=class extends mi{handleclassNamesChange(){this.classNames.split(" ").forEach(e=>{switch(e){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return fi`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};R.styles=hi`
13
+ `],n([d({type:String,attribute:"base-type"})],F.prototype,"baseType",2),n([d({type:String})],F.prototype,"identifier",2),n([d({type:String})],F.prototype,"cardinality",2),n([k({context:w,subscribe:!0}),C()],F.prototype,"itemContext",2),F=n([h("qti-response-declaration")],F);var je=class extends v{};je=n([h("qti-companion-materials-info")],je);var We=class extends v{render(){return u`<slot></slot>`}};We=n([h("qti-content-body")],We);var H=class extends v{handleclassNamesChange(){this.classNames.split(" ").forEach(e=>{switch(e){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return u`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};H.styles=g`
36
14
  :host {
37
15
  display: block;
38
16
  }
39
- `,n([He({type:String})],R.prototype,"id",2),n([He({type:String})],R.prototype,"use",2),n([He({type:String})],R.prototype,"view",2),n([He({type:String,attribute:"class"})],R.prototype,"classNames",2),n([x("classNames",{waitUntilFirstUpdate:!0})],R.prototype,"handleclassNamesChange",1),R=n([gi("qti-rubric-block")],R);import{css as Ei,html as Ci}from"lit";import{customElement as qi}from"lit/decorators.js";import{consume as vi}from"@lit/context";import{LitElement as yi}from"lit";import{property as Ne,state as xi}from"lit/decorators.js";var bi=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),se=c=>{if(typeof c=="string")return c;let o=bi();return o==="."?c.toLocaleString():c.toString().replace(".","").replace(o,".")};function rt(c){return c==null}function oe(c){return c.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var C=class extends yi{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(o){let e=this._context.variables.find(r=>r.identifier===o)||null;if(this.outcomeIdentifier!==o||!e)return;let t=!1;Array.isArray(e.value)?t=e.value.includes(this.identifier):t=!rt(this.identifier)&&!rt(e?.value)&&this.identifier===e.value||!1,this.showFeedback(t)}showFeedback(o){this.showStatus=o&&this.showHide==="show"||!o&&this.showHide==="hide"?"on":"off"}};n([Ne({type:String,attribute:"show-hide"})],C.prototype,"showHide",2),n([Ne({type:String,attribute:"outcome-identifier"})],C.prototype,"outcomeIdentifier",2),n([Ne({type:String})],C.prototype,"identifier",2),n([Ne({type:String,attribute:!1})],C.prototype,"showStatus",2),n([vi({context:y,subscribe:!0}),xi()],C.prototype,"_context",2);var ne=class extends C{render(){return Ci` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(o){this.checkShowFeedback(this.outcomeIdentifier)}};ne.styles=Ei`
17
+ `,n([d({type:String})],H.prototype,"id",2),n([d({type:String})],H.prototype,"use",2),n([d({type:String})],H.prototype,"view",2),n([d({type:String,attribute:"class"})],H.prototype,"classNames",2),n([M("classNames",{waitUntilFirstUpdate:!0})],H.prototype,"handleclassNamesChange",1),H=n([h("qti-rubric-block")],H);var dr=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Ee=c=>{if(typeof c=="string")return c;let o=dr();return o==="."?c.toLocaleString():c.toString().replace(".","").replace(o,".")};function lt(c){return c==null}function Ce(c){return c.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var R=class extends v{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(o){let e=this._context.variables.find(r=>r.identifier===o)||null;if(this.outcomeIdentifier!==o||!e)return;let t=!1;Array.isArray(e.value)?t=e.value.includes(this.identifier):t=!lt(this.identifier)&&!lt(e?.value)&&this.identifier===e.value||!1,this.showFeedback(t)}showFeedback(o){this.showStatus=o&&this.showHide==="show"||!o&&this.showHide==="hide"?"on":"off"}};n([d({type:String,attribute:"show-hide"})],R.prototype,"showHide",2),n([d({type:String,attribute:"outcome-identifier"})],R.prototype,"outcomeIdentifier",2),n([d({type:String})],R.prototype,"identifier",2),n([d({type:String,attribute:!1})],R.prototype,"showStatus",2),n([k({context:w,subscribe:!0}),C()],R.prototype,"_context",2);var qe=class extends R{render(){return u` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(o){this.checkShowFeedback(this.outcomeIdentifier)}};qe.styles=g`
40
18
  :host {
41
19
  display: block;
42
20
  }
@@ -46,21 +24,21 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
46
24
  .off {
47
25
  display: none;
48
26
  }
49
- `,ne=n([qi("qti-feedback-block")],ne);import{css as Ti,html as wi}from"lit";import{customElement as Mi}from"lit/decorators.js";var ae=class extends C{constructor(){super(...arguments);this.render=()=>wi` <slot part="feedback" class="${this.showStatus}"></slot> `}};ae.styles=Ti`
27
+ `,qe=n([h("qti-feedback-block")],qe);var Te=class extends R{constructor(){super(...arguments);this.render=()=>u` <slot part="feedback" class="${this.showStatus}"></slot> `}};Te.styles=g`
50
28
  .on {
51
29
  display: inline-block;
52
30
  }
53
31
  .off {
54
32
  display: none;
55
33
  }
56
- `,ae=n([Mi("qti-feedback-inline")],ae);import{css as Si,html as Ri}from"lit";import{customElement as Ai}from"lit/decorators.js";var le=class extends C{render(){return Ri`
34
+ `,Te=n([h("qti-feedback-inline")],Te);var we=class extends R{render(){return u`
57
35
  <dialog class="qti-dialog" part="feedback" ?open="${this.showStatus==="on"}">
58
36
  <slot></slot>
59
37
  <div style="margin-top: var(--qti-gap-size); text-align: center;">
60
38
  <button class="button close-button" @click="${this.closeFeedback}"></button>
61
39
  </div>
62
40
  </dialog>
63
- `}openFeedback(){let o=this.shadowRoot?.querySelector("dialog");o&&!o.open&&o.showModal()}closeFeedback(){let o=this.shadowRoot?.querySelector("dialog");o&&o.open&&(o.close(),this.showStatus="off")}firstUpdated(){this.showStatus==="on"&&this.openFeedback()}updated(o){o.has("showStatus")&&(this.showStatus==="on"?this.openFeedback():this.closeFeedback())}};le.styles=Si`
41
+ `}openFeedback(){let o=this.shadowRoot?.querySelector("dialog");o&&!o.open&&o.showModal()}closeFeedback(){let o=this.shadowRoot?.querySelector("dialog");o&&o.open&&(o.close(),this.showStatus="off")}firstUpdated(){this.showStatus==="on"&&this.openFeedback()}updated(o){o.has("showStatus")&&(this.showStatus==="on"?this.openFeedback():this.closeFeedback())}};we.styles=g`
64
42
  .qti-dialog {
65
43
  background: var(--qti-bg);
66
44
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
@@ -109,7 +87,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
109
87
  display: inline-block;
110
88
  line-height: 1.5;
111
89
  }
112
- `,le=n([Ai("qti-modal-feedback")],le);import{html as Di}from"lit";import{ifDefined as Vi}from"lit/directives/if-defined.js";import{property as it,state as ki}from"lit/decorators.js";import{LitElement as Li}from"lit";var h=class extends Li{constructor(){super();this.disabled=!1;this.readonly=!1;this._internals=this.attachInternals()}reportValidity(){return this._internals.reportValidity()}reset(){this.value=""}get correctResponse(){return this._correctResponse}set correctResponse(e){this._correctResponse=e}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier}}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e}}))}};h.formAssociated=!0,n([it({type:String,attribute:"response-identifier"})],h.prototype,"responseIdentifier",2),n([it({reflect:!0,type:Boolean})],h.prototype,"disabled",2),n([it({reflect:!0,type:Boolean})],h.prototype,"readonly",2),n([ki()],h.prototype,"_correctResponse",2);import{customElement as Hi,property as ce,state as Xt}from"lit/decorators.js";import{css as _i}from"lit";var Ut=_i`
90
+ `,we=n([h("qti-modal-feedback")],we);var K=c=>c??L;var x=class extends v{constructor(){super();this.disabled=!1;this.readonly=!1;this._internals=this.attachInternals()}reportValidity(){return this._internals.reportValidity()}reset(){this.value=""}get correctResponse(){return this._correctResponse}set correctResponse(e){this._correctResponse=e}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier}}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,cancelable:!1,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e}}))}};x.formAssociated=!0,n([d({type:String,attribute:"response-identifier"})],x.prototype,"responseIdentifier",2),n([d({reflect:!0,type:Boolean})],x.prototype,"disabled",2),n([d({reflect:!0,type:Boolean})],x.prototype,"readonly",2),n([C()],x.prototype,"_correctResponse",2);var zt=g`
113
91
  /* PK: display host as block, else design will be collapsed */
114
92
  :host {
115
93
  display: block;
@@ -120,7 +98,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
120
98
  height: 100%;
121
99
  border: 0;
122
100
  }
123
- `;var q=class extends h{constructor(){super(...arguments);this._rows=5;this._value=""}handleclassNamesChange(e,t){let r=t.split(" "),i=!1;if(r.forEach(l=>{if(l.startsWith("qti-height-lines-")){let s=l.replace("qti-height-lines-","");this._rows=parseInt(s),i=!0}}),!i&&this.expectedLength){let l=Math.ceil(this.expectedLength/50);this._rows=l}}get value(){return this._value}set value(e){if(typeof e=="string"){this._value=e;let t=new FormData;t.append(this.responseIdentifier,e),this._internals.setFormValue(t),this.validate()}else throw new Error("Value must be a string")}validate(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;if(this.patternMask&&this.dataPatternmaskMessage){this._internals.setValidity({}),e.setCustomValidity("");let t=this.patternMask.startsWith("^")&&this.patternMask.endsWith("$")?this.patternMask:`^${this.patternMask}$`,r=new RegExp(t);e.checkValidity()&&r.test(e.value)||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),e.setCustomValidity(this.dataPatternmaskMessage))}else{let t=e.checkValidity();this._internals.setValidity(t?{}:{customError:!1})}return this._value!==""&&e.checkValidity()}reportValidity(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}render(){return Di`<slot name="prompt"></slot
101
+ `;var _=class extends x{constructor(){super(...arguments);this._rows=5;this._value=""}handleclassNamesChange(e,t){let r=t.split(" "),i=!1;if(r.forEach(a=>{if(a.startsWith("qti-height-lines-")){let s=a.replace("qti-height-lines-","");this._rows=parseInt(s),i=!0}}),!i&&this.expectedLength){let a=Math.ceil(this.expectedLength/50);this._rows=a}}get value(){return this._value}set value(e){if(typeof e=="string"){this._value=e;let t=new FormData;t.append(this.responseIdentifier,e),this._internals.setFormValue(t),this.validate()}else throw new Error("Value must be a string")}validate(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;if(this.patternMask&&this.dataPatternmaskMessage){this._internals.setValidity({}),e.setCustomValidity("");let t=this.patternMask.startsWith("^")&&this.patternMask.endsWith("$")?this.patternMask:`^${this.patternMask}$`,r=new RegExp(t);e.checkValidity()&&r.test(e.value)||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),e.setCustomValidity(this.dataPatternmaskMessage))}else{let t=e.checkValidity();this._internals.setValidity(t?{}:{customError:!1})}return this._value!==""&&e.checkValidity()}reportValidity(){let e=this.shadowRoot.querySelector("textarea");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}render(){return u`<slot name="prompt"></slot
124
102
  ><textarea
125
103
  part="textarea"
126
104
  name="${this.responseIdentifier}"
@@ -131,12 +109,12 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
131
109
  @keyup="${this.textChanged}"
132
110
  @change="${this.textChanged}"
133
111
  @blur="${e=>{this.reportValidity()}}"
134
- placeholder="${Vi(this.placeholderText?this.placeholderText:void 0)}"
112
+ placeholder="${K(this.placeholderText?this.placeholderText:void 0)}"
135
113
  rows="${this._rows}"
136
114
  ?disabled="${this.disabled}"
137
115
  ?readonly="${this.readonly}"
138
116
  .value=${this._value}
139
- ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this.value=t.value,this.saveResponse(t.value))}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};q.styles=Ut,n([Xt()],q.prototype,"_rows",2),n([ce({type:Number,attribute:"expected-length"})],q.prototype,"expectedLength",2),n([ce({type:String,attribute:"pattern-mask"})],q.prototype,"patternMask",2),n([ce({type:String,attribute:"placeholder-text"})],q.prototype,"placeholderText",2),n([ce({type:String,attribute:"data-patternmask-message"})],q.prototype,"dataPatternmaskMessage",2),n([Xt()],q.prototype,"_value",2),n([ce({type:String,attribute:"class"})],q.prototype,"classNames",2),n([x("classNames")],q.prototype,"handleclassNamesChange",1),q=n([Hi("qti-extended-text-interaction")],q);import{html as $i}from"lit";import{customElement as Ii,property as $e,state as Oi}from"lit/decorators.js";import{ifDefined as Yt}from"lit/directives/if-defined.js";import{createRef as Pi}from"lit/directives/ref.js";import{css as Ni}from"lit";var Bt=Ni`
117
+ ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this.value=t.value,this.saveResponse(t.value))}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};_.styles=zt,n([C()],_.prototype,"_rows",2),n([d({type:Number,attribute:"expected-length"})],_.prototype,"expectedLength",2),n([d({type:String,attribute:"pattern-mask"})],_.prototype,"patternMask",2),n([d({type:String,attribute:"placeholder-text"})],_.prototype,"placeholderText",2),n([d({type:String,attribute:"data-patternmask-message"})],_.prototype,"dataPatternmaskMessage",2),n([C()],_.prototype,"_value",2),n([d({type:String,attribute:"class"})],_.prototype,"classNames",2),n([M("classNames")],_.prototype,"handleclassNamesChange",1),_=n([h("qti-extended-text-interaction")],_);var Bt=()=>new pt,pt=class{},ct=new WeakMap,Rs=j(class extends It{render(c){return L}update(c,[o]){let e=o!==this.Y;return e&&this.Y!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=o,this.ht=c.options?.host,this.rt(this.ct=c.element)),L}rt(c){if(this.isConnected||(c=void 0),typeof this.Y=="function"){let o=this.ht??globalThis,e=ct.get(o);e===void 0&&(e=new WeakMap,ct.set(o,e)),e.get(this.Y)!==void 0&&this.Y.call(this.ht,void 0),e.set(this.Y,c),c!==void 0&&this.Y.call(this.ht,c)}else this.Y.value=c}get lt(){return typeof this.Y=="function"?ct.get(this.ht??globalThis)?.get(this.Y):this.Y?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var Yt=g`
140
118
  :host {
141
119
  display: inline-block;
142
120
  }
@@ -218,7 +196,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
218
196
  width: 57rem;
219
197
  min-width: 57rem;
220
198
  }
221
- `;var A=class extends h{constructor(){super(...arguments);this._value="";this.inputRef=Pi()}get value(){return this._value}set value(e){if(typeof e=="string"){this._value=e;let t=new FormData;t.append(this.responseIdentifier,e),this._internals.setFormValue(t),this.validate()}else throw new Error("Value must be a string")}validate(){let e=this.shadowRoot.querySelector("input");if(!e)return!1;if(this.patternMask&&this.dataPatternmaskMessage)this._internals.setValidity({}),e.setCustomValidity(""),e.checkValidity()||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),e.setCustomValidity(this.dataPatternmaskMessage));else{let t=e.checkValidity();this._internals.setValidity(t?{}:{customError:!1})}return this._value!==""&&e.checkValidity()}render(){return $i`
199
+ `;var $=class extends x{constructor(){super(...arguments);this._value="";this.inputRef=Bt()}get value(){return this._value}set value(e){if(typeof e=="string"){this._value=e;let t=new FormData;t.append(this.responseIdentifier,e),this._internals.setFormValue(t),this.validate()}else throw new Error("Value must be a string")}validate(){let e=this.shadowRoot.querySelector("input");if(!e)return!1;if(this.patternMask&&this.dataPatternmaskMessage)this._internals.setValidity({}),e.setCustomValidity(""),e.checkValidity()||(this._internals.setValidity({customError:!0},this.dataPatternmaskMessage),e.setCustomValidity(this.dataPatternmaskMessage));else{let t=e.checkValidity();this._internals.setValidity(t?{}:{customError:!1})}return this._value!==""&&e.checkValidity()}render(){return u`
222
200
  <input
223
201
  part="input"
224
202
  name="${this.responseIdentifier}"
@@ -229,15 +207,15 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
229
207
  @keyup="${this.textChanged}"
230
208
  @change="${this.textChanged}"
231
209
  type="${this.patternMask=="[0-9]*"?"number":"text"}"
232
- placeholder="${Yt(this.placeholderText?this.placeholderText:void 0)}"
210
+ placeholder="${K(this.placeholderText?this.placeholderText:void 0)}"
233
211
  .value="${this._value}"
234
- pattern="${Yt(this.patternMask?this.patternMask:void 0)}"
212
+ pattern="${K(this.patternMask?this.patternMask:void 0)}"
235
213
  maxlength=${1e3}
236
214
  ?disabled="${this.disabled}"
237
215
  ?readonly="${this.readonly}"
238
216
  />
239
217
  <div part="correct">${this._correctResponse}</div>
240
- `}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this.value=t.value,this.saveResponse(t.value))}reportValidity(){let e=this.shadowRoot.querySelector("input");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};A.styles=Bt,n([$e({type:Number,attribute:"expected-length"})],A.prototype,"expectedLength",2),n([$e({type:String,attribute:"pattern-mask"})],A.prototype,"patternMask",2),n([$e({type:String,attribute:"placeholder-text"})],A.prototype,"placeholderText",2),n([$e({type:String,attribute:"data-patternmask-message"})],A.prototype,"dataPatternmaskMessage",2),n([Oi()],A.prototype,"_value",2),A=n([Ii("qti-text-entry-interaction")],A);import{html as zi}from"lit";import{customElement as Ui}from"lit/decorators.js";import{property as Wt,query as Fi}from"lit/decorators.js";var O=(c,o)=>{class e extends c{constructor(){super(...arguments);this._choiceElements=[];this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(i,l)=>{this._choiceElements.forEach(s=>s.disabled=l)};this._handleReadonlyChange=(i,l)=>{this._choiceElements.forEach(s=>s.readonly=l)};this._value=""}_handleMaxChoicesChange(i,l){this._determineInputType()}get value(){return Array.isArray(this._value)?this._value.join(","):this._value}set value(i){if(this.maxChoices>1&&typeof i=="string"?this._value=i.split(","):this._value=i,Array.isArray(this._value)){let l=new FormData;this._value.forEach(s=>{l.append(this.responseIdentifier,s)}),this._internals.setFormValue(l)}else this._internals.setFormValue(this._value);this._updateChoiceSelection()}get correctResponse(){return this._correctResponse}set correctResponse(i){this._correctResponse=i;let l=Array.isArray(i)?i:[i];this._choiceElements.forEach(s=>{s.internals.states.delete("correct-response"),s.internals.states.delete("incorrect-response"),l.length>0&&(l.includes(s.identifier)?s.internals.states.add("correct-response"):s.internals.states.add("incorrect-response"))})}connectedCallback(){super.connectedCallback(),this.addEventListener(`register-${o}`,this._registerChoiceElement),this.addEventListener(`unregister-${o}`,this._unregisterChoiceElement),this.addEventListener(`activate-${o}`,this._choiceElementSelectedHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`register-${o}`,this._registerChoiceElement),this.removeEventListener(`unregister-${o}`,this._unregisterChoiceElement),this.removeEventListener(`activate-${o}`,this._choiceElementSelectedHandler)}validate(){let i=this._choiceElements.filter(p=>this._getChoiceChecked(p)),l=i.length,s=!0,a="";return this.maxChoices!==0&&l>this.maxChoices?(s=!1,a=this.dataset.maxSelectionsMessage||`You can select at most ${this.maxChoices} choices.`):l<this.minChoices&&(s=!1,a=this.dataset.minSelectionsMessage||`You must select at least ${this.minChoices} choices.`),i.length>0&&this._internals.setValidity(s?{}:{customError:!0},a,i[l-1]||this._choiceElements[0]||this),this.reportValidity(),s}reportValidity(){return this._validationMessageElement&&(this._internals.validity.valid?(this._validationMessageElement.textContent="",this._validationMessageElement.style.display="none"):(this._validationMessageElement.textContent=this._internals.validationMessage,this._validationMessageElement.style.display="block")),this._internals.validity.valid}_registerChoiceElement(i){i.stopPropagation();let l=i.target;l.disabled=this.disabled,this._choiceElements.push(l),this._setInputType(l)}_unregisterChoiceElement(i){i.stopPropagation();let l=i.target;this._choiceElements=this._choiceElements.filter(s=>s!==l)}_determineInputType(){this._choiceElements.forEach(i=>{this._setInputType(i)})}_setInputType(i){this._internals.ariaLabel=this.maxChoices===1?"radio-group":"checkbox-group";let l=this.maxChoices===1?"radio":"checkbox";i.internals.role=l,i.internals.states.delete(l==="radio"?"checkbox":"radio"),i.internals.states.add(l)}_choiceElementSelectedHandler(i){this._toggleChoiceChecked(i.target),this.maxChoices===1&&this._choiceElements.forEach(l=>{l.identifier!==i.detail.identifier&&this._setChoiceChecked(l,!1)}),this._handleChoiceSelection()}_setChoiceChecked(i,l){i.internals?.states&&(l?(i.internals.states.add("--checked"),i.internals.ariaChecked="true"):(i.internals.states.delete("--checked"),i.internals.ariaChecked="false"))}_getChoiceChecked(i){return i.internals.states.has("--checked")}_toggleChoiceChecked(i){let l=this._getChoiceChecked(i);this._setChoiceChecked(i,!l)}_handleChoiceSelection(){let l=this._choiceElements.filter(s=>this._getChoiceChecked(s)).map(s=>s.identifier);this.value=this.maxChoices===1?l[0]||"":l,this.validate(),this.saveResponse(this._value)}_updateChoiceSelection(){let i=Array.isArray(this._value)?this._value:[this._value];this._choiceElements.forEach(l=>{let s=i.includes(l.identifier);this._setChoiceChecked(l,s)})}}return n([Fi("#validationMessage")],e.prototype,"_validationMessageElement",2),n([Wt({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),n([Wt({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),n([x("maxChoices",{waitUntilFirstUpdate:!0})],e.prototype,"_handleMaxChoicesChange",1),n([x("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),n([x("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),e};var Ie=class extends O(h,"qti-hottext"){constructor(){super(...arguments);this.render=()=>zi`<slot></slot>`}};Ie=n([Ui("qti-hottext-interaction")],Ie);import{css as Xi,html as jt}from"lit";import{customElement as Bi,property as Yi,state as Kt}from"lit/decorators.js";import{unsafeHTML as Jt}from"lit/directives/unsafe-html.js";var P=class extends h{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[Xi`
218
+ `}textChanged(e){if(this.disabled||this.readonly)return;let t=e.target;this.setEmptyAttribute(t.value),this._value!==t.value&&(this.value=t.value,this.saveResponse(t.value))}reportValidity(){let e=this.shadowRoot.querySelector("input");if(!e)return!1;let t=this.validate();return t||e.reportValidity(),t}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};$.styles=Yt,n([d({type:Number,attribute:"expected-length"})],$.prototype,"expectedLength",2),n([d({type:String,attribute:"pattern-mask"})],$.prototype,"patternMask",2),n([d({type:String,attribute:"placeholder-text"})],$.prototype,"placeholderText",2),n([d({type:String,attribute:"data-patternmask-message"})],$.prototype,"dataPatternmaskMessage",2),n([C()],$.prototype,"_value",2),$=n([h("qti-text-entry-interaction")],$);var J=(c,o)=>{class e extends c{constructor(){super(...arguments);this._choiceElements=[];this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(i,a)=>{this._choiceElements.forEach(s=>s.disabled=a)};this._handleReadonlyChange=(i,a)=>{this._choiceElements.forEach(s=>s.readonly=a)};this._value=""}_handleMaxChoicesChange(i,a){this._determineInputType()}get value(){return Array.isArray(this._value)?this._value.join(","):this._value}set value(i){if(this.maxChoices>1&&typeof i=="string"?this._value=i.split(","):this._value=i,Array.isArray(this._value)){let a=new FormData;this._value.forEach(s=>{a.append(this.responseIdentifier,s)}),this._internals.setFormValue(a)}else this._internals.setFormValue(this._value);this._updateChoiceSelection()}get correctResponse(){return this._correctResponse}set correctResponse(i){this._correctResponse=i;let a=Array.isArray(i)?i:[i];this._choiceElements.forEach(s=>{s.internals.states.delete("correct-response"),s.internals.states.delete("incorrect-response"),a.length>0&&(a.includes(s.identifier)?s.internals.states.add("correct-response"):s.internals.states.add("incorrect-response"))})}connectedCallback(){super.connectedCallback(),this.addEventListener(`register-${o}`,this._registerChoiceElement),this.addEventListener(`unregister-${o}`,this._unregisterChoiceElement),this.addEventListener(`activate-${o}`,this._choiceElementSelectedHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`register-${o}`,this._registerChoiceElement),this.removeEventListener(`unregister-${o}`,this._unregisterChoiceElement),this.removeEventListener(`activate-${o}`,this._choiceElementSelectedHandler)}validate(){let i=this._choiceElements.filter(p=>this._getChoiceChecked(p)),a=i.length,s=!0,l="";return this.maxChoices!==0&&a>this.maxChoices?(s=!1,l=this.dataset.maxSelectionsMessage||`You can select at most ${this.maxChoices} choices.`):a<this.minChoices&&(s=!1,l=this.dataset.minSelectionsMessage||`You must select at least ${this.minChoices} choices.`),i.length>0&&this._internals.setValidity(s?{}:{customError:!0},l,i[a-1]||this._choiceElements[0]||this),this.reportValidity(),s}reportValidity(){return this._validationMessageElement&&(this._internals.validity.valid?(this._validationMessageElement.textContent="",this._validationMessageElement.style.display="none"):(this._validationMessageElement.textContent=this._internals.validationMessage,this._validationMessageElement.style.display="block")),this._internals.validity.valid}_registerChoiceElement(i){i.stopPropagation();let a=i.target;a.disabled=this.disabled,this._choiceElements.push(a),this._setInputType(a)}_unregisterChoiceElement(i){i.stopPropagation();let a=i.target;this._choiceElements=this._choiceElements.filter(s=>s!==a)}_determineInputType(){this._choiceElements.forEach(i=>{this._setInputType(i)})}_setInputType(i){this._internals.ariaLabel=this.maxChoices===1?"radio-group":"checkbox-group";let a=this.maxChoices===1?"radio":"checkbox";i.internals.role=a,i.internals.states.delete(a==="radio"?"checkbox":"radio"),i.internals.states.add(a)}_choiceElementSelectedHandler(i){this._toggleChoiceChecked(i.target),this.maxChoices===1&&this._choiceElements.forEach(a=>{a.identifier!==i.detail.identifier&&this._setChoiceChecked(a,!1)}),this._handleChoiceSelection()}_setChoiceChecked(i,a){i.internals?.states&&(a?(i.internals.states.add("--checked"),i.internals.ariaChecked="true"):(i.internals.states.delete("--checked"),i.internals.ariaChecked="false"))}_getChoiceChecked(i){return i.internals.states.has("--checked")}_toggleChoiceChecked(i){let a=this._getChoiceChecked(i);this._setChoiceChecked(i,!a)}_handleChoiceSelection(){let a=this._choiceElements.filter(s=>this._getChoiceChecked(s)).map(s=>s.identifier);this.value=this.maxChoices===1?a[0]||"":a,this.validate(),this.saveResponse(this._value)}_updateChoiceSelection(){let i=Array.isArray(this._value)?this._value:[this._value];this._choiceElements.forEach(a=>{let s=i.includes(a.identifier);this._setChoiceChecked(a,s)})}}return n([ze("#validationMessage")],e.prototype,"_validationMessageElement",2),n([d({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),n([d({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),n([M("maxChoices",{waitUntilFirstUpdate:!0})],e.prototype,"_handleMaxChoicesChange",1),n([M("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),n([M("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),e};var Ke=class extends J(x,"qti-hottext"){constructor(){super(...arguments);this.render=()=>u`<slot></slot>`}};Ke=n([h("qti-hottext-interaction")],Ke);var Me=class extends le{constructor(o){if(super(o),this.it=L,o.type!==ae.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(o){if(o===L||o==null)return this._t=void 0,this.it=o;if(o===oe)return o;if(typeof o!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(o===this.it)return this._t;this.it=o;let e=[o];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};Me.directiveName="unsafeHTML",Me.resultType=1;var Z=j(Me);var G=class extends x{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[g`
241
219
  :host {
242
220
  display: inline-block;
243
221
  }
@@ -259,15 +237,15 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
259
237
  /* position-anchor: --infobox; */
260
238
  /* top: anchor(bottom); */
261
239
  }
262
- `]}render(){return jt`
240
+ `]}render(){return u`
263
241
  <select part="select" @change="${this.choiceSelected}" ?disabled="${this.disabled}" ?readonly="${this.readonly}">
264
- ${this.options.map(e=>jt`
265
- <option value="${e.value}" ?selected="${e.selected}">${Jt(e.textContent)}</option>
242
+ ${this.options.map(e=>u`
243
+ <option value="${e.value}" ?selected="${e.selected}">${Z(e.textContent)}</option>
266
244
  `)}
267
245
  </select>
268
246
 
269
- ${Jt(this.correctOption)}
270
- `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(t=>({textContent:t.innerHTML,value:t.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>({...e,selected:t===0}))}set value(e){this.options=this.options.map(t=>(e===t.value&&(t.selected=!0),t))}get value(){return this.options.find(e=>e.selected).value}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(t=>e===t.value).textContent}</span>`}choiceSelected(e){let t=e.target.value;this.options=this.options.map(r=>({...r,selected:r.value===t})),this.saveResponse(t)}};P.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],n([Kt()],P.prototype,"options",2),n([Kt()],P.prototype,"correctOption",2),n([Yi({attribute:"data-prompt",type:String})],P.prototype,"dataPrompt",2),P=n([Bi("qti-inline-choice-interaction")],P);import{html as Ji}from"lit";import{customElement as Gi,property as Zi}from"lit/decorators.js";import{property as Wi}from"lit/decorators.js";var Oe=(c,o)=>{class e extends c{constructor(){super(...arguments);this.shuffle="false"}connectedCallback(){super.connectedCallback(),this._applyShuffle()}updated(i){i.has("shuffle")&&this._applyShuffle()}_applyShuffle(){this.shuffle==="true"?this._shuffleChoices():this._resetShuffleChoices()}_shuffleChoices(){let i=Array.from(this.querySelectorAll(o)),l=i.filter(m=>m.hasAttribute("fixed")),s=i.filter(m=>!m.hasAttribute("fixed"));if(s.length<=1){console.warn("Shuffling is not possible with fewer than 2 non-fixed elements.");return}let a=[...s],p=!1,d=0;for(;!p&&d<10;){d++;for(let m=s.length-1;m>0;m--){let g=Math.floor(Math.random()*(m+1));[s[m],s[g]]=[s[g],s[m]]}p=!s.every((m,g)=>m===a[g])}p||console.warn("Failed to shuffle the choices after multiple attempts.");let u=1;[...l,...s].forEach(m=>{m.style.setProperty("order",String(u++))})}_resetShuffleChoices(){this.querySelectorAll(o).forEach(i=>{i.style.setProperty("order","initial")})}}return n([Wi({type:String,reflect:!0})],e.prototype,"shuffle",2),e};import{property as ji}from"lit/decorators.js";var Gt=(c,o)=>{class e extends c{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"]}set class(i){i&&(this._classes=i.split(" "),this._addLabels())}get class(){return this._classes?.join(" ")||""}updated(i){super.updated(i),i.has("shuffle")&&this._addLabels()}_addLabels(){let i=this._classes.some(s=>this._allLabels.includes(s)||this._allLabelSuffixes.includes(s)),l=s=>!isNaN(+s);if(i){let a=Array.from(this.querySelectorAll("qti-simple-choice")).map(p=>p).map((p,d)=>({el:p,order:l(p.style.order)?+p.style.order:d+1})).sort((p,d)=>p.order-d.order).map(p=>p.el);for(let p=0;p<a.length;p++)a[p].marker=this._getLabel(p+1)}}_getLabel(i){let l=this._classes.filter(p=>this._allLabels.includes(p)).pop(),s=this._classes.filter(p=>this._allLabelSuffixes.includes(p)).pop();!l&&s&&(l="qti-labels-upper-alpha");let a="";switch(l){case"qti-labels-decimal":a=`${i}`;break;case"qti-labels-lower-alpha":a=`${String.fromCharCode(97+i-1)}`;break;case"qti-labels-upper-alpha":a=`${String.fromCharCode(65+i-1)}`;break}return s==="qti-labels-suffix-period"?a+=".":s==="qti-labels-suffix-parenthesis"&&(a+=")"),a}}return n([ji({type:String,reflect:!0})],e.prototype,"class",1),e};import{css as Ki}from"lit";var Zt=Ki`
247
+ ${Z(this.correctOption)}
248
+ `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(t=>({textContent:t.innerHTML,value:t.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(t=>t.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,t)=>({...e,selected:t===0}))}set value(e){this.options=this.options.map(t=>(e===t.value&&(t.selected=!0),t))}get value(){return this.options.find(e=>e.selected).value}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(t=>e===t.value).textContent}</span>`}choiceSelected(e){let t=e.target.value;this.options=this.options.map(r=>({...r,selected:r.value===t})),this.saveResponse(t)}};G.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],n([C()],G.prototype,"options",2),n([C()],G.prototype,"correctOption",2),n([d({attribute:"data-prompt",type:String})],G.prototype,"dataPrompt",2),G=n([h("qti-inline-choice-interaction")],G);var Je=(c,o)=>{class e extends c{constructor(){super(...arguments);this.shuffle="false"}connectedCallback(){super.connectedCallback(),this._applyShuffle()}updated(i){i.has("shuffle")&&this._applyShuffle()}_applyShuffle(){this.shuffle==="true"?this._shuffleChoices():this._resetShuffleChoices()}_shuffleChoices(){let i=Array.from(this.querySelectorAll(o)),a=i.filter(b=>b.hasAttribute("fixed")),s=i.filter(b=>!b.hasAttribute("fixed"));if(s.length<=1){console.warn("Shuffling is not possible with fewer than 2 non-fixed elements.");return}let l=[...s],p=!1,m=0;for(;!p&&m<10;){m++;for(let b=s.length-1;b>0;b--){let y=Math.floor(Math.random()*(b+1));[s[b],s[y]]=[s[y],s[b]]}p=!s.every((b,y)=>b===l[y])}p||console.warn("Failed to shuffle the choices after multiple attempts.");let f=1;[...a,...s].forEach(b=>{b.style.setProperty("order",String(f++))})}_resetShuffleChoices(){this.querySelectorAll(o).forEach(i=>{i.style.setProperty("order","initial")})}}return n([d({type:String,reflect:!0})],e.prototype,"shuffle",2),e};var Ut=(c,o)=>{class e extends c{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"]}set class(i){i&&(this._classes=i.split(" "),this._addLabels())}get class(){return this._classes?.join(" ")||""}updated(i){super.updated(i),i.has("shuffle")&&this._addLabels()}_addLabels(){let i=this._classes.some(s=>this._allLabels.includes(s)||this._allLabelSuffixes.includes(s)),a=s=>!isNaN(+s);if(i){let l=Array.from(this.querySelectorAll("qti-simple-choice")).map(p=>p).map((p,m)=>({el:p,order:a(p.style.order)?+p.style.order:m+1})).sort((p,m)=>p.order-m.order).map(p=>p.el);for(let p=0;p<l.length;p++)l[p].marker=this._getLabel(p+1)}}_getLabel(i){let a=this._classes.filter(p=>this._allLabels.includes(p)).pop(),s=this._classes.filter(p=>this._allLabelSuffixes.includes(p)).pop();!a&&s&&(a="qti-labels-upper-alpha");let l="";switch(a){case"qti-labels-decimal":l=`${i}`;break;case"qti-labels-lower-alpha":l=`${String.fromCharCode(97+i-1)}`;break;case"qti-labels-upper-alpha":l=`${String.fromCharCode(65+i-1)}`;break}return s==="qti-labels-suffix-period"?l+=".":s==="qti-labels-suffix-parenthesis"&&(l+=")"),l}}return n([d({type:String,reflect:!0})],e.prototype,"class",1),e};var Xt=g`
271
249
  [part='slot'] {
272
250
  display: flex;
273
251
  flex-direction: column;
@@ -305,15 +283,15 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
305
283
  :host([orientation='horizontal']) [part='slot'] {
306
284
  flex-direction: row;
307
285
  }
308
- `;var j=class extends Gt(Oe(O(h,"qti-simple-choice"),"qti-simple-choice"),"qti-simple-choice"){constructor(){super(),this._internals.role="group"}render(){return Ji`
286
+ `;var pe=class extends Ut(Je(J(x,"qti-simple-choice"),"qti-simple-choice"),"qti-simple-choice"){constructor(){super(),this._internals.role="group"}render(){return u`
309
287
  <slot part="prompt" name="prompt"></slot><slot part="slot"></slot>
310
288
  <div part="message" role="alert" id="validationMessage"></div>
311
- `}};j.styles=Zt,n([Zi({type:String})],j.prototype,"orientation",2),j=n([Gi("qti-choice-interaction")],j);import{css as Qi,html as es}from"lit";import{customElement as ts}from"lit/decorators.js";var pe=class extends h{constructor(){super(...arguments);this._file=null;this._base64=null}reset(){this._file=null,this._base64=null,this.saveResponse(null)}validate(){return this._base64!==null}get value(){return this._base64}set value(e){if(typeof e=="string")this._base64=e,this.saveResponse(e);else if(e===null)this.reset();else throw new Error("Value must be a Base64-encoded string or null")}static get properties(){return{...h.properties}}render(){return es`
289
+ `}};pe.styles=Xt,n([d({type:String})],pe.prototype,"orientation",2),pe=n([h("qti-choice-interaction")],pe);var Se=class extends x{constructor(){super(...arguments);this._file=null;this._base64=null}reset(){this._file=null,this._base64=null,this.saveResponse(null)}validate(){return this._base64!==null}get value(){return this._base64}set value(e){if(typeof e=="string")this._base64=e,this.saveResponse(e);else if(e===null)this.reset();else throw new Error("Value must be a Base64-encoded string or null")}static get properties(){return{...x.properties}}render(){return u`
312
290
  <div>
313
291
  <slot name="prompt"></slot>
314
292
  <input type="file" @change="${this._onFileChange}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" />
315
293
  </div>
316
- `}async _onFileChange(e){let t=e.target;t.files&&t.files.length>0&&(this._file=t.files[0],this._base64=await this._convertToBase64(this._file),this.saveResponse(this._base64),this.dispatchEvent(new CustomEvent("qti-interaction-response",{detail:{response:this._base64}})))}_convertToBase64(e){return new Promise((t,r)=>{let i=new FileReader;i.onload=()=>t(i.result),i.onerror=()=>r(i.error),i.readAsDataURL(e)})}};pe.styles=[Qi`
294
+ `}async _onFileChange(e){let t=e.target;t.files&&t.files.length>0&&(this._file=t.files[0],this._base64=await this._convertToBase64(this._file),this.saveResponse(this._base64),this.dispatchEvent(new CustomEvent("qti-interaction-response",{detail:{response:this._base64}})))}_convertToBase64(e){return new Promise((t,r)=>{let i=new FileReader;i.onload=()=>t(i.result),i.onerror=()=>r(i.error),i.readAsDataURL(e)})}};Se.styles=[g`
317
295
  :host {
318
296
  display: block;
319
297
  margin: 1em 0;
@@ -322,11 +300,11 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
322
300
  display: block;
323
301
  margin-top: 0.5em;
324
302
  }
325
- `],pe=n([ts("qti-upload-interaction")],pe);import{css as rs,html as is,LitElement as ss}from"lit";import{customElement as os}from"lit/decorators.js";var de=class extends ss{render(){return is`<slot></slot>`}process(){let o=new st,e=[...this.children];o.process(e)}};de.styles=[rs`
303
+ `],Se=n([h("qti-upload-interaction")],Se);var Re=class extends v{render(){return u`<slot></slot>`}process(){let o=new dt,e=[...this.children];o.process(e)}};Re.styles=[g`
326
304
  :host {
327
305
  display: none;
328
306
  }
329
- `],de=n([os("qti-outcome-processing")],de);var st=class{process(o){for(let e of o)e.process()}};import{css as ns,html as as,LitElement as ls}from"lit";import{customElement as cs}from"lit/decorators.js";var Qt=`<qti-response-processing>
307
+ `],Re=n([h("qti-outcome-processing")],Re);var dt=class{process(o){for(let e of o)e.process()}};var jt=`<qti-response-processing>
330
308
  <qti-response-condition>
331
309
  <qti-response-if>
332
310
  <qti-match>
@@ -343,7 +321,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
343
321
  </qti-set-outcome-value>
344
322
  </qti-response-else>
345
323
  </qti-response-condition>
346
- </qti-response-processing>`,er=`<qti-response-processing>
324
+ </qti-response-processing>`,Wt=`<qti-response-processing>
347
325
  <qti-response-condition>
348
326
  <qti-response-if>
349
327
  <qti-is-null>
@@ -359,7 +337,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
359
337
  </qti-set-outcome-value>
360
338
  </qti-response-else>
361
339
  </qti-response-condition>
362
- </qti-response-processing>`,tr=`<qti-response-processing>
340
+ </qti-response-processing>`,Kt=`<qti-response-processing>
363
341
  <qti-response-condition>
364
342
  <qti-response-if>
365
343
  <qti-is-null>
@@ -375,19 +353,19 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
375
353
  </qti-set-outcome-value>
376
354
  </qti-response-else>
377
355
  </qti-response-condition>
378
- </qti-response-processing>`;var X=class extends ls{render(){return as`<slot></slot>`}process(){if(!this.closest("qti-assessment-item"))return;let e=[...this.children];for(let t of e)t.process()}firstUpdated(o){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":{this.appendChild(this.fragmentFromString(er).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(tr).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(Qt).firstElementChild.firstElementChild);break}}}fragmentFromString(o){return document.createRange().createContextualFragment(o)}};X.styles=[ns`
356
+ </qti-response-processing>`;var ie=class extends v{render(){return u`<slot></slot>`}process(){if(!this.closest("qti-assessment-item"))return;let e=[...this.children];for(let t of e)t.process()}firstUpdated(o){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":{this.appendChild(this.fragmentFromString(Wt).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(Kt).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(jt).firstElementChild.firstElementChild);break}}}fragmentFromString(o){return document.createRange().createContextualFragment(o)}};ie.styles=[g`
379
357
  :host {
380
358
  display: none;
381
359
  }
382
- `],X=n([cs("qti-response-processing")],X);import{property as ms}from"lit/decorators.js";import{customElement as ps}from"lit/decorators.js";import{html as ds,LitElement as us}from"lit";var k=class extends us{render(){return ds`<slot></slot>`}process(){throw new Error("Not implemented")}};k=n([ps("qti-rule")],k);var Pe=class extends k{get childExpression(){return this.firstElementChild}process(){let o=this.getAttribute("identifier"),e=this.closest("qti-assessment-item").getVariable(o),t;return e.interpolationTable&&(t=e.interpolationTable.get(parseInt(this.childExpression.calculate()))),t==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:se(t)}})),t)}};n([ms({type:String})],Pe.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Pe);import{html as hs}from"lit";var ot=class extends k{render(){return hs`<slot></slot>`}process(){let o=[...this.children];for(let e=0;e<o.length;e++){let t=o[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",ot);var nt=class extends k{process(){let o=this.getAttribute("identifier"),e=this.firstElementChild,r=new at(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:o,value:Array.isArray(r)?r.map(i=>se(i)):se(r)}}))}},at=class{constructor(o){this.expression=o}process(){let o=this.expression?this.expression.calculate():null;if(o==null){console.warn("setOutcomeValue: value is null or undefined");return}return o}};customElements.define("qti-set-outcome-value",nt);import{LitElement as fs,html as gs}from"lit";var ue=class extends fs{render(){return gs`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let o=this.getSubRules();for(let e=0;e<o.length;e++)o[e].process()}};customElements.define("qti-response-else",ue);import{html as bs}from"lit";var me=class extends ue{calculate(){return this.firstElementChild.calculate()}getSubRules(){let o=[];for(let e=1;e<this.children.length;e++)o.push(this.children[e]);return o}};customElements.define("qti-response-if",me);var lt=class extends me{render(){return bs`${super.render()}`}};customElements.define("qti-response-else-if",lt);import{consume as vs}from"@lit/context";import{css as ys,html as xs,LitElement as Es}from"lit";import{state as rr}from"lit/decorators.js";var f=class extends Es{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent.trim(),cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.context.variables.find(i=>i.identifier===t)||null}case"qti-multiple":{let r=e.getResult();return r.length>0?{identifier:"",baseType:r[0].baseType,value:r.map(i=>i.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",r=this.context.variables.find(i=>i.identifier===t)||null;return{baseType:r.baseType,value:r.correctResponse,cardinality:r.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch{console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return xs`<pre>${JSON.stringify(this.result,null,2)}</pre>
383
- <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};f.styles=ys`
360
+ `],ie=n([h("qti-response-processing")],ie);var I=class extends v{render(){return u`<slot></slot>`}process(){throw new Error("Not implemented")}};I=n([h("qti-rule")],I);var Ze=class extends I{get childExpression(){return this.firstElementChild}process(){let o=this.getAttribute("identifier"),e=this.closest("qti-assessment-item").getVariable(o),t;return e.interpolationTable&&(t=e.interpolationTable.get(parseInt(this.childExpression.calculate()))),t==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:Ee(t)}})),t)}};n([d({type:String})],Ze.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Ze);var ut=class extends I{render(){return u`<slot></slot>`}process(){let o=[...this.children];for(let e=0;e<o.length;e++){let t=o[e];if(t.calculate()){t.process();return}}}};customElements.define("qti-response-condition",ut);var ht=class extends I{process(){let o=this.getAttribute("identifier"),e=this.firstElementChild,r=new mt(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:o,value:Array.isArray(r)?r.map(i=>Ee(i)):Ee(r)}}))}},mt=class{constructor(o){this.expression=o}process(){let o=this.expression?this.expression.calculate():null;if(o==null){console.warn("setOutcomeValue: value is null or undefined");return}return o}};customElements.define("qti-set-outcome-value",ht);var _e=class extends v{render(){return u`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let o=this.getSubRules();for(let e=0;e<o.length;e++)o[e].process()}};customElements.define("qti-response-else",_e);var ke=class extends _e{calculate(){return this.firstElementChild.calculate()}getSubRules(){let o=[];for(let e=1;e<this.children.length;e++)o.push(this.children[e]);return o}};customElements.define("qti-response-if",ke);var ft=class extends ke{render(){return u`${super.render()}`}};customElements.define("qti-response-else-if",ft);var E=class extends v{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent.trim(),cardinality:"single"};case"qti-variable":{let t=e.getAttribute("identifier")||"";return this.context.variables.find(i=>i.identifier===t)||null}case"qti-multiple":{let r=e.getResult();return r.length>0?{identifier:"",baseType:r[0].baseType,value:r.map(i=>i.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let t=e.getAttribute("identifier")||"",r=this.context.variables.find(i=>i.identifier===t)||null;return{baseType:r.baseType,value:r.correctResponse,cardinality:r.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch{console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return u`<pre>${JSON.stringify(this.result,null,2)}</pre>
361
+ <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};E.styles=g`
384
362
  slot {
385
363
  display: none;
386
364
  }
387
- `,n([rr()],f.prototype,"result",2),n([vs({context:y,subscribe:!0}),rr()],f.prototype,"context",2);var T=class extends f{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Fe=class extends Cs(T){calculate(){return this.calculateChildren(Array.from(this.children))}};function Cs(c){return class extends c{calculateChildren(e){return e.map(r=>{let i=r;if(!i.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let l=i.calculate(),s=!1;if(typeof l=="string")if(l==="true")s=!0;else if(l==="false")s=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof l=="boolean"&&(s=l);return s}).every(r=>typeof r=="boolean"&&r)}}}customElements.define("qti-and",Fe);import{property as qs}from"lit/decorators.js";var ze=class extends f{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};n([qs({type:String,attribute:"base-type"})],ze.prototype,"baseType",2);customElements.define("qti-base-value",ze);var ct=class extends T{getResult(){let o=this.getVariables();if(this.children.length===2){let e=o[0],t=o[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let r=e.value,i=t.value;return r.filter(a=>i.includes(a)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let r=e.value;return t.value.includes(r)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",ct);var pt=class extends f{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let o=this.getAttribute("identifier")||"",e=this.context.variables.find(t=>t.identifier===o)||null;return e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",pt);import{property as Ts}from"lit/decorators.js";var Ue=class extends f{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let i=parseFloat(t.value),l=parseFloat(r.value);if(!isNaN(i)&&!isNaN(l))return this.roundingMode==="significantFigures"?i.toPrecision(this.figures)===l.toPrecision(this.figures):Math.round(i*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(l*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${i}, ${l}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};n([Ts({type:String})],Ue.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Ue);import{property as ws}from"lit/decorators.js";var w=class{static compareSingleValues(o,e,t){switch(t){case"identifier":case"string":return o===e;case"integer":{let r=parseInt(o,10),i=parseInt(e,10);if(!isNaN(r)&&!isNaN(i))return r===i;console.error(`Cannot convert ${o} and/or ${e} to int.`);break}case"float":{let r=parseFloat(o),i=parseFloat(e);if(!isNaN(r)&&!isNaN(i))return r===i;console.error(`couldn't convert ${o} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=o.split(" ").sort(),i=e.split(" ").sort();if(r.length===2&&i.length===2)return t==="pair"&&(r.sort(),i.sort()),r.join(" ")===i.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${o} 2: ${e}`);break}}return!1}};var Xe=class extends f{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value)?(console.error("unexpected cardinality in qti equal"),!1):w.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};n([ws({type:String})],Xe.prototype,"toleranceMode",2);customElements.define("qti-equal",Xe);var dt=class extends f{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",dt);var ut=class extends T{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",ut);var mt=class extends f{getResult(){if(this.children.length===1){let o=this.getVariables();if(!o)return!0;let e=o[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",mt);var ht=class extends f{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",ht);var ft=class extends T{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",ft);import{property as Ms}from"lit/decorators.js";var Be=class extends f{getResult(){let o=this.context.variables.find(i=>i.identifier===this.identifier);if(!o)return console.warn(`Response ${this.identifier} can not be found`),null;let e=o.mapping,t=Array.isArray(o.value)?o.value:[o.value],r=0;for(let i of t){let l=e.mapEntries.find(s=>w.compareSingleValues(s.mapKey,i,o.baseType));l==null||l.mappedValue==null?r+=e.defaultValue:r+=l.mappedValue}return e.lowerBound!=null&&(r=Math.max(e.lowerBound,r)),e.upperBound!=null&&(r=Math.min(e.upperBound,r)),r}};n([Ms({type:String})],Be.prototype,"identifier",2);customElements.define("qti-map-response",Be);import{property as gt}from"lit/decorators.js";import{LitElement as Ss}from"lit";var K=class extends Ss{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};n([gt({attribute:"default-value",type:Number})],K.prototype,"defaultValue",2),n([gt({attribute:"lower-bound",type:Number})],K.prototype,"lowerBound",2),n([gt({attribute:"upper-bound",type:Number})],K.prototype,"upperBound",2);customElements.define("qti-mapping",K);var bt=class c extends f{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];return c.match(e,t)}return console.error("unexpected number of children in match"),null}static match(o,e){switch(e.cardinality){case"single":return o.value===null?!1:Array.isArray(o.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):w.compareSingleValues(o.value?.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(o.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(o.value.length!==e.value.length)return!1;for(let t=0;t<o.value.length;t++)if(!w.compareSingleValues(e.value[t],o.value[t],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(o.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(o.value.length!==e.value.length)return!1;let t=0;for(let r of e.value){let i=null,l=[...o.value];for(let s of l)if(w.compareSingleValues(r,s,e.baseType)){i=s;break}if(i!==null)l.splice(l.indexOf(i),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",bt);var vt=class extends f{getResult(){let o=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,t]=o;if(e.baseType===t.baseType||e.baseType==="integer"&&t.baseType==="float"||e.baseType==="float"&&t.baseType==="integer"||console.warn("Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let r=e.value;return t.value.includes(r)}};customElements.define("qti-member",vt);var yt=class extends f{getResult(){let o=this.getVariables();if(o.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of o)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return o}};customElements.define("qti-multiple",yt);import{html as Rs}from"lit";var xt=class extends f{render(){return Rs`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",xt);var Et=class extends T{getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate(),i=!1;if(typeof r=="string")if(r==="true")i=!0;else if(r==="false")i=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof r=="boolean"&&(i=r);return i}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Et);var Ct=class extends f{getResult(){let o=this.getVariables();if(o.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of o)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return o}};customElements.define("qti-ordered",Ct);import{consume as As}from"@lit/context";import{LitElement as ks,html as Ls}from"lit";import{property as _s,state as Ds}from"lit/decorators.js";var he=class extends ks{render(){let o=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return Ls`${JSON.stringify(o,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};n([_s({type:String})],he.prototype,"identifier",2),n([As({context:y,subscribe:!0}),Ds()],he.prototype,"context",2);customElements.define("qti-printed-variable",he);var qt=class extends f{getResult(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseInt(r.value.toString())}catch{console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",qt);var Ye=class extends Vs(f){getResult(){return this.calculateChildren(Array.from(this.children))}};function Vs(c){return class extends c{calculateChildren(e){let t=e.map(r=>{if(!r.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let i=r.calculate();return Number.isNaN(i)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(i)});return t.some(r=>r===null)?(console.error("One or more child expressions returned invalid values"),0):t[0]-t[1]}}}customElements.define("qti-subtract",Ye);import{property as Hs}from"lit/decorators.js";var We=class extends f{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti string-match"),!1;let i=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),l=this.caseSensitive==="true"?r.value:r.value.toLowerCase();return w.compareSingleValues(i,l,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};n([Hs({type:String,attribute:"case-sensitive"})],We.prototype,"caseSensitive",2);customElements.define("qti-string-match",We);var Tt=class extends f{constructor(){super(),this._expression=new wt(Array.from(this.children))}getResult(){return this._expression.calculate()}},wt=class{constructor(o){this.expressions=o}calculate(){return this.expressions.map(e=>{if(!e.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let t=e.calculate();return Number.isNaN(t)?(console.error("unexpected value in qti-sum, expected number"),null):Number(t)}).reduce((e,t)=>e+t,0)}};customElements.define("qti-sum",Tt);var Mt=class extends f{getResult(){let o=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===o).value}};customElements.define("qti-variable",Mt);import{html as ir}from"lit";import{customElement as Ns,property as sr,state as $s}from"lit/decorators.js";var B=class extends h{constructor(){super(...arguments);this._errorMessage=null;this.loadConfig=async(e,t)=>{e=this.removeDoubleSlashes(e);try{let r=await fetch(e);if(r.ok){let l=await r.json();for(let s in l.paths)t&&(l.paths[s]=this.getResolvablePath(l.paths[s],t));return l}}catch{}return null};this.getResolvablePathString=(e,t)=>(e=e.replace(/\.js$/,""),e?.toLocaleLowerCase().startsWith("http")||!t?e:this.removeDoubleSlashes(`${t}/${e}`));this.getResolvablePath=(e,t)=>Array.isArray(e)?e.map(r=>this.getResolvablePathString(r,t)):this.getResolvablePathString(e,t)}convertQtiVariableJSON(e){for(let t in e)if(e.hasOwnProperty(t)){let r=e[t];if(r){for(let i in r)if(r.hasOwnProperty(i)){let l=r[i];if(Array.isArray(l))return l.map(String);if(l!=null)return String(l)}}}return null}startChecking(){this.intervalId=setInterval(()=>{let e=this.pci.getResponse(),t=this.pci.getResponse(),r=JSON.stringify(e);if(r!==this.rawResponse){this.rawResponse=r;let i=this.convertQtiVariableJSON(t);this.value=i,this.saveResponse(i)}},200)}stopChecking(){this.intervalId!==void 0&&clearInterval(this.intervalId)}validate(){return!0}set value(e){}get value(){return this.rawResponse}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},i=s=>{let a={},p=s.getAttribute("key");if(p){let d=Array.from(s.children),u=d.map(g=>g.getAttribute("key"));u.length>0&&!u.find(g=>!Number.isInteger(+g))?a[p]=d.map(g=>l(g)):a[p]=s.textContent}return a},l=s=>{if(s){let a={};for(let p of s.children)a={...a,...i(p)};return a}};for(let s of t)return s.getAttribute("key")||(r={...r,...l(s)}),r;return console.log("Can not find qti-custom-interaction config"),null}register(e){this.pci=e;let t=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",r=t=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");r.classList.add("qti-customInteraction"),t=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let i=t=="IMS"?{properties:this.dataset,onready:()=>{console.log("onready")}}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,i,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,i),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(s=>s.getAttribute("href")).forEach(s=>{let a=document.createElement("link");a.rel="stylesheet",a.type="text/css",a.media="screen",a.href=s,r.appendChild(a)}),this.startChecking()}connectedCallback(){super.connectedCallback(),define("qtiCustomInteractionContext",()=>({register:r=>{this.register(r)},notifyReady:()=>{}}));let e=this.buildRequireConfig();requirejs.config(e)(["require"],r=>{r([this.module])})}disconnectedCallback(){super.disconnectedCallback(),requirejs.undef(this.customInteractionTypeIdentifier);let e=requirejs.s.contexts;delete e[this.customInteractionTypeIdentifier],this.stopChecking()}buildRequireConfig(){let e={context:this.customInteractionTypeIdentifier,catchError:!0,paths:window.requirePaths||{},shim:window.requireShim||{}};if(!globalThis.require)return this._errorMessage="RequireJS not found. Please load it via CDN: https://cdnjs.com/libraries/require.js",null;let t=this.getAttribute("data-base-url"),r=this.querySelector("qti-interaction-modules");if(r){let i=r.querySelectorAll("qti-interaction-module");for(let l of i){let s=l.getAttribute("id"),a=l.getAttribute("primary-path"),p=l.getAttribute("fallback-path");if(s&&a){let d=p?this.combineRequireResolvePaths(this.getResolvablePath(a,t),this.getResolvablePath(p,t)):this.getResolvablePath(a,t),u=e.paths[s]||[];e.paths[s]=this.combineRequireResolvePaths(u,d)}}}return e}combineRequireResolvePaths(e,t){let r=Array.isArray(e)?e:[e],i=Array.isArray(t)?t:[t];return r.concat(i)}removeDoubleSlashes(e){return e.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}render(){return ir`<slot></slot>${this._errorMessage&&ir`<div style="color:red">
365
+ `,n([C()],E.prototype,"result",2),n([k({context:w,subscribe:!0}),C()],E.prototype,"context",2);var A=class extends E{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var Ge=class extends ur(A){calculate(){return this.calculateChildren(Array.from(this.children))}};function ur(c){return class extends c{calculateChildren(e){return e.map(r=>{let i=r;if(!i.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let a=i.calculate(),s=!1;if(typeof a=="string")if(a==="true")s=!0;else if(a==="false")s=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof a=="boolean"&&(s=a);return s}).every(r=>typeof r=="boolean"&&r)}}}customElements.define("qti-and",Ge);var Qe=class extends E{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent.trim()}};n([d({type:String,attribute:"base-type"})],Qe.prototype,"baseType",2);customElements.define("qti-base-value",Qe);var gt=class extends A{getResult(){let o=this.getVariables();if(this.children.length===2){let e=o[0],t=o[1];if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="multiple"){let r=e.value,i=t.value;return r.filter(l=>i.includes(l)).length>0}else if(e.baseType==="directedPair"&&t.baseType==="directedPair"&&e.cardinality==="single"){let r=e.value;return t.value.includes(r)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",gt);var bt=class extends E{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let o=this.getAttribute("identifier")||"",e=this.context.variables.find(t=>t.identifier===o)||null;return e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",bt);var et=class extends E{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let t=parseInt(this.getAttribute("figures")||"0");return isNaN(t)?(console.error("figures attribute is not a number"),null):t<0?(console.error("figures attribute is negative"),null):t<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):t}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(this.roundingMode===null)return null;if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let i=parseFloat(t.value),a=parseFloat(r.value);if(!isNaN(i)&&!isNaN(a))return this.roundingMode==="significantFigures"?i.toPrecision(this.figures)===a.toPrecision(this.figures):Math.round(i*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(a*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${i}, ${a}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};n([d({type:String})],et.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",et);var D=class{static compareSingleValues(o,e,t){switch(t){case"identifier":case"string":return o===e;case"integer":{let r=parseInt(o,10),i=parseInt(e,10);if(!isNaN(r)&&!isNaN(i))return r===i;console.error(`Cannot convert ${o} and/or ${e} to int.`);break}case"float":{let r=parseFloat(o),i=parseFloat(e);if(!isNaN(r)&&!isNaN(i))return r===i;console.error(`couldn't convert ${o} and/or ${e} to float.`);break}case"pair":case"directedPair":{let r=o.split(" ").sort(),i=e.split(" ").sort();if(r.length===2&&i.length===2)return t==="pair"&&(r.sort(),i.sort()),r.join(" ")===i.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${o} 2: ${e}`);break}}return!1}};var tt=class extends E{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value)?(console.error("unexpected cardinality in qti equal"),!1):D.compareSingleValues(t.value,r.value,t.baseType)}return console.error("unexpected number of children in qti-equal"),null}};n([d({type:String})],tt.prototype,"toleranceMode",2);customElements.define("qti-equal",tt);var vt=class extends E{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value>+t.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",vt);var yt=class extends A{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value>=+t.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",yt);var xt=class extends E{getResult(){if(this.children.length===1){let o=this.getVariables();if(!o)return!0;let e=o[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",xt);var Et=class extends E{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];if((e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float"))return+e.value<+t.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",Et);var Ct=class extends A{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];return(e.baseType==="integer"||e.baseType==="float")&&(t.baseType==="integer"||t.baseType==="float")?+e.value<=+t.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",Ct);var rt=class extends E{getResult(){let o=this.context.variables.find(i=>i.identifier===this.identifier);if(!o)return console.warn(`Response ${this.identifier} can not be found`),null;let e=o.mapping,t=Array.isArray(o.value)?o.value:[o.value],r=0;for(let i of t){let a=e.mapEntries.find(s=>D.compareSingleValues(s.mapKey,i,o.baseType));a==null||a.mappedValue==null?r+=e.defaultValue:r+=a.mappedValue}return e.lowerBound!=null&&(r=Math.max(e.lowerBound,r)),e.upperBound!=null&&(r=Math.min(e.upperBound,r)),r}};n([d({type:String})],rt.prototype,"identifier",2);customElements.define("qti-map-response",rt);var de=class extends v{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};n([d({attribute:"default-value",type:Number})],de.prototype,"defaultValue",2),n([d({attribute:"lower-bound",type:Number})],de.prototype,"lowerBound",2),n([d({attribute:"upper-bound",type:Number})],de.prototype,"upperBound",2);customElements.define("qti-mapping",de);var qt=class c extends E{getResult(){if(this.children.length===2){let o=this.getVariables(),e=o[0],t=o[1];return c.match(e,t)}return console.error("unexpected number of children in match"),null}static match(o,e){switch(e.cardinality){case"single":return o.value===null?!1:Array.isArray(o.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):D.compareSingleValues(o.value?.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(o.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(o.value.length!==e.value.length)return!1;for(let t=0;t<o.value.length;t++)if(!D.compareSingleValues(e.value[t],o.value[t],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(o.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(o.value.length!==e.value.length)return!1;let t=0;for(let r of e.value){let i=null,a=[...o.value];for(let s of a)if(D.compareSingleValues(r,s,e.baseType)){i=s;break}if(i!==null)a.splice(a.indexOf(i),1);else return!1;t++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",qt);var Tt=class extends E{getResult(){let o=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,t]=o;if(e.baseType===t.baseType||e.baseType==="integer"&&t.baseType==="float"||e.baseType==="float"&&t.baseType==="integer"||console.warn("Which must both have the same base-type"),t.cardinality==="multiple"||t.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||t.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||t.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||t.value===null)return null;let r=e.value;return t.value.includes(r)}};customElements.define("qti-member",Tt);var wt=class extends E{getResult(){let o=this.getVariables();if(o.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of o)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return o}};customElements.define("qti-multiple",wt);var Mt=class extends E{render(){return u`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Mt);var St=class extends A{getResult(){return Array.from(this.children).map(e=>{let t=e;if(!t.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=t.calculate(),i=!1;if(typeof r=="string")if(r==="true")i=!0;else if(r==="false")i=!1;else return console.error("unexpected val in qti-or, expected boolean"),null;else typeof r=="boolean"&&(i=r);return i}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",St);var Rt=class extends E{getResult(){let o=this.getVariables();if(o.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of o)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return o}};customElements.define("qti-ordered",Rt);var Le=class extends v{render(){let o=this.context?.variables.find(e=>e.identifier===this.identifier)?.value;return u`${JSON.stringify(o,null,2)}`}calculate(){return this.context.variables.find(e=>e.identifier===this.identifier)||null}};n([d({type:String})],Le.prototype,"identifier",2),n([k({context:w,subscribe:!0}),C()],Le.prototype,"context",2);customElements.define("qti-printed-variable",Le);var _t=class extends E{getResult(){return this.getVariables().reduce((t,r)=>{if(r.baseType=="float"||r.baseType=="integer")try{return t*parseInt(r.value.toString())}catch{console.warn("can not convert to number")}else console.warn(`has another baseType ${r.baseType}`);return t},1)}};customElements.define("qti-product",_t);var it=class extends hr(E){getResult(){return this.calculateChildren(Array.from(this.children))}};function hr(c){return class extends c{calculateChildren(e){let t=e.map(r=>{if(!r.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let i=r.calculate();return Number.isNaN(i)?(console.error("Unexpected value in qti-subtract, expected number"),null):Number(i)});return t.some(r=>r===null)?(console.error("One or more child expressions returned invalid values"),0):t[0]-t[1]}}}customElements.define("qti-subtract",it);var st=class extends E{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),t=e[0],r=e[1];if(t.cardinality!=="single"||r.cardinality!=="single"||Array.isArray(t.value)||Array.isArray(r.value))return console.error("unexpected cardinality in qti string-match"),!1;let i=this.caseSensitive==="true"?t.value:t.value.toLowerCase(),a=this.caseSensitive==="true"?r.value:r.value.toLowerCase();return D.compareSingleValues(i,a,t.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};n([d({type:String,attribute:"case-sensitive"})],st.prototype,"caseSensitive",2);customElements.define("qti-string-match",st);var kt=class extends E{constructor(){super(),this._expression=new Lt(Array.from(this.children))}getResult(){return this._expression.calculate()}},Lt=class{constructor(o){this.expressions=o}calculate(){return this.expressions.map(e=>{if(!e.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let t=e.calculate();return Number.isNaN(t)?(console.error("unexpected value in qti-sum, expected number"),null):Number(t)}).reduce((e,t)=>e+t,0)}};customElements.define("qti-sum",kt);var At=class extends E{getResult(){let o=this.getAttribute("identifier");return this.context.variables.find(t=>t.identifier===o).value}};customElements.define("qti-variable",At);var se=class extends x{constructor(){super(...arguments);this._errorMessage=null;this.loadConfig=async(e,t)=>{e=this.removeDoubleSlashes(e);try{let r=await fetch(e);if(r.ok){let a=await r.json();for(let s in a.paths)t&&(a.paths[s]=this.getResolvablePath(a.paths[s],t));return a}}catch{}return null};this.getResolvablePathString=(e,t)=>(e=e.replace(/\.js$/,""),e?.toLocaleLowerCase().startsWith("http")||!t?e:this.removeDoubleSlashes(`${t}/${e}`));this.getResolvablePath=(e,t)=>Array.isArray(e)?e.map(r=>this.getResolvablePathString(r,t)):this.getResolvablePathString(e,t)}convertQtiVariableJSON(e){for(let t in e)if(e.hasOwnProperty(t)){let r=e[t];if(r){for(let i in r)if(r.hasOwnProperty(i)){let a=r[i];if(Array.isArray(a))return a.map(String);if(a!=null)return String(a)}}}return null}startChecking(){this.intervalId=setInterval(()=>{let e=this.pci.getResponse(),t=this.pci.getResponse(),r=JSON.stringify(e);if(r!==this.rawResponse){this.rawResponse=r;let i=this.convertQtiVariableJSON(t);this.value=i,this.saveResponse(i)}},200)}stopChecking(){this.intervalId!==void 0&&clearInterval(this.intervalId)}validate(){return!0}set value(e){}get value(){return this.rawResponse}getTAOConfig(e){let t=e.querySelectorAll("properties"),r={},i=s=>{let l={},p=s.getAttribute("key");if(p){let m=Array.from(s.children),f=m.map(y=>y.getAttribute("key"));f.length>0&&!f.find(y=>!Number.isInteger(+y))?l[p]=m.map(y=>a(y)):l[p]=s.textContent}return l},a=s=>{if(s){let l={};for(let p of s.children)l={...l,...i(p)};return l}};for(let s of t)return s.getAttribute("key")||(r={...r,...a(s)}),r;return console.log("Can not find qti-custom-interaction config"),null}register(e){this.pci=e;let t=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",r=t=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");r.classList.add("qti-customInteraction"),t=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let i=t=="IMS"?{properties:this.dataset,onready:()=>{console.log("onready")}}:this.getTAOConfig(this);t=="IMS"?e.getInstance(r,i,void 0):e.initialize(this.customInteractionTypeIdentifier,r.firstElementChild,i),t=="TAO"&&Array.from(this.querySelectorAll("link")).map(s=>s.getAttribute("href")).forEach(s=>{let l=document.createElement("link");l.rel="stylesheet",l.type="text/css",l.media="screen",l.href=s,r.appendChild(l)}),this.startChecking()}connectedCallback(){super.connectedCallback(),define("qtiCustomInteractionContext",()=>({register:r=>{this.register(r)},notifyReady:()=>{}}));let e=this.buildRequireConfig();requirejs.config(e)(["require"],r=>{r([this.module])})}disconnectedCallback(){super.disconnectedCallback(),requirejs.undef(this.customInteractionTypeIdentifier);let e=requirejs.s.contexts;delete e[this.customInteractionTypeIdentifier],this.stopChecking()}buildRequireConfig(){let e={context:this.customInteractionTypeIdentifier,catchError:!0,paths:window.requirePaths||{},shim:window.requireShim||{}};if(!globalThis.require)return this._errorMessage="RequireJS not found. Please load it via CDN: https://cdnjs.com/libraries/require.js",null;let t=this.getAttribute("data-base-url"),r=this.querySelector("qti-interaction-modules");if(r){let i=r.querySelectorAll("qti-interaction-module");for(let a of i){let s=a.getAttribute("id"),l=a.getAttribute("primary-path"),p=a.getAttribute("fallback-path");if(s&&l){let m=p?this.combineRequireResolvePaths(this.getResolvablePath(l,t),this.getResolvablePath(p,t)):this.getResolvablePath(l,t),f=e.paths[s]||[];e.paths[s]=this.combineRequireResolvePaths(f,m)}}}return e}combineRequireResolvePaths(e,t){let r=Array.isArray(e)?e:[e],i=Array.isArray(t)?t:[t];return r.concat(i)}removeDoubleSlashes(e){return e.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}render(){return u`<slot></slot>${this._errorMessage&&u`<div style="color:red">
388
366
  <h1>Error</h1>
389
367
  ${this._errorMessage}
390
- </div>`}`}};n([sr({type:String,attribute:"module"})],B.prototype,"module",2),n([sr({type:String,attribute:"custom-interaction-type-identifier"})],B.prototype,"customInteractionTypeIdentifier",2),n([$s()],B.prototype,"_errorMessage",2),B=n([Ns("qti-portable-custom-interaction")],B);import{html as ar}from"lit";import{customElement as Os,state as Ps}from"lit/decorators.js";var or=(c,o,e)=>{class t extends c{}return t};import{property as St}from"lit/decorators.js";function je(c,o){let e;return(t,r)=>{let{connectedCallback:i,disconnectedCallback:l}=t;t.connectedCallback=function(){i.call(this);let s=p=>{let d=Array.from(this.querySelectorAll(c)).concat(Array.from(this.shadowRoot?.querySelectorAll(c)||[]));for(let u of p){let m=Array.from(u.addedNodes).map(v=>v),g=Array.from(u.addedNodes).map(v=>v);u.type==="childList"&&m.find(v=>d.includes(v))&&this[r](m,g)}};e=new MutationObserver(s),e.observe(this,{childList:!0,subtree:!0});let a=Array.from(this.querySelectorAll(c)).concat(Array.from(this.shadowRoot?.querySelectorAll(c)||[]));this[r](Array.from(a),[])},t.disconnectedCallback=function(){l.call(this),e.disconnect()}}}var L=(c,o,e,t)=>{class r extends or(c,e,o){constructor(){super(...arguments);this.observer=null;this.droppableObsever=null;this.resizeObserver=null;this.draggables=[];this.droppables=[];this.dragContainers=[];this.dragClone=null;this.dragSource=null;this.touchStartPoint=null;this.isDraggable=!1;this.cloneOffset={x:0,y:0};this.isDragging=!1;this.rootNode=null;this.allDropzones=[];this.lastTarget=null;this.dropzoneOriginalParent=null;this.currentDropTarget=null;this.MIN_DRAG_DISTANCE=5;this.DRAG_CLONE_OPACITY=1;this.dataTransfer={data:{},setData(s,a){this.data[s]=a},getData(s){return this.data[s]},effectAllowed:"move"};this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this.maxAssociations=1;this.draggablesModified=(s,a)=>{for(let d of a)this.draggables.includes(d)&&(this.draggables=this.draggables.filter(u=>u!==d),d.removeAttribute("tabindex"),d.removeEventListener("touchstart",this.handleTouchStart.bind(this)),d.removeEventListener("mousedown",this.handleTouchStart.bind(this)));for(let d of s)this.draggables.includes(d)||(this.draggables.push(d),d.setAttribute("tabindex","0"),d.hasTouchStartListener||(d.addEventListener("touchstart",this.handleTouchStart.bind(this),{passive:!1}),d.addEventListener("mousedown",this.handleTouchStart.bind(this),{passive:!1}),d.hasTouchStartListener=!0));let p=0;this.draggables.forEach(d=>{d.style.viewTransitionName=`drag-${p}-${this.getAttribute("identifier")||crypto.randomUUID()}`,d.setAttribute("qti-draggable","true"),d.addEventListener("dragstart",this.handleDragStart),d.addEventListener("dragend",this.handleDragEnd),p++})};this.droppablesModified=(s,a)=>{for(let p of a)this.droppables.includes(p)&&(this.droppables=this.droppables.filter(d=>d!==p),this.allDropzones=this.allDropzones.filter(d=>d!==p));for(let p of s)this.droppables.includes(p)||(this.droppables.push(p),this.allDropzones.push(p));for(let p of this.droppables)this.dataset.choicesContainerWidth&&(p.style.width=`${this.dataset.choicesContainerWidth}px`,p.style.boxSizing="border-box")};this.handleDragStart=s=>{let a=s.currentTarget;s.dataTransfer.setData("text",a.getAttribute("identifier")),this.responseIdentifier&&s.dataTransfer.setData("responseIdentifier",this.responseIdentifier),this._internals.states.add("--dragzone-enabled"),this._internals.states.add("--dragzone-active"),a.setAttribute("dragging",""),this.activateDragLocation(),this.activateDroppables(a)};this.handleDragEnd=async s=>{s.preventDefault();let a=s.currentTarget;this._internals.states.delete("--dragzone-enabled"),this._internals.states.delete("--dragzone-active"),this.deactivateDragLocation(),this.deactivateDroppables(),a.removeAttribute("dragging")}}handleDraggableContainerChange(s,a){this.isMatchTabular()||(s.length>0||a.length>0)&&this.dragContainersModified(s||[],a||[])}dragContainersModified(s,a){for(let p of a)this.dragContainers.includes(p)&&(this.dragContainers=this.dragContainers.filter(d=>d!==p),this.allDropzones=this.allDropzones.filter(d=>d!==p));for(let p of s)this.dragContainers.includes(p)||(this.dragContainers.push(p),this.allDropzones.push(p))}handleDraggablesChange(s,a){this.isMatchTabular()||(s.length>0||a.length>0)&&this.draggablesModified(s||[],a||[])}handleDroppablesChange(s,a){this.isMatchTabular()||(s.length>0||a.length>0)&&this.droppablesModified(s||[],a||[])}firstUpdated(s){super.firstUpdated(s),this.hasAttribute("disabled")||(document.addEventListener("touchmove",this.handleTouchMove.bind(this),{passive:!1}),document.addEventListener("mousemove",this.handleTouchMove.bind(this),{passive:!1}),document.addEventListener("touchend",this.handleTouchEnd.bind(this),{passive:!1}),document.addEventListener("mouseup",this.handleTouchEnd.bind(this),{passive:!1}),document.addEventListener("touchcancel",this.handleTouchCancel.bind(this),{passive:!1}));let p=Array.from(this.querySelectorAll(o)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(o)||[])),d=Array.from(this.querySelectorAll(e)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(e)||[])),u=Array.from(this.querySelectorAll(t)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(t)||[]));this.dragContainersModified(u,[]),this.droppablesModified(d,[]),this.draggablesModified(p,[]),this.updateMinDimensionsForDropZones(),this.observer=new MutationObserver(()=>this.updateMinDimensionsForDropZones()),this.observer.observe(this,{childList:!0,subtree:!0}),this.resizeObserver=new ResizeObserver(()=>this.updateMinDimensionsForDropZones()),this.querySelectorAll("qti-gap-text").forEach(g=>this.resizeObserver?.observe(g))}async moveDraggableToDroppable(s,a){(()=>{s.style.transform="translate(0, 0)",a.tagName==="SLOT"?s.setAttribute("slot",a.getAttribute("name")):a.appendChild(s),this.checkAllMaxAssociations(),this.saveResponse()})()}activateDroppable(s){this.dragContainers.includes(s)?(this._internals.states.add("--dragzone-active"),s.setAttribute("active","")):(this._internals.states.delete("--dragzone-active"),s.setAttribute("active",""))}deactivateDroppable(s,a=!0){a&&this._internals.states.add("--dragzone-active"),s.removeAttribute("active")}connectedCallback(){super.connectedCallback()}isMatchTabular(){return this.classList.contains("qti-match-tabular")}updateMinDimensionsForDropZones(){let s=this.querySelectorAll(o),a=Array.from(this.querySelectorAll(e)).map(m=>m),p=0,d=0;s.forEach(m=>{let g=m.getBoundingClientRect();p=Math.max(p,g.height),d=Math.max(d,g.width)});let u=this.querySelector(t)||this.shadowRoot?.querySelector(t);u&&(u.style.minHeight=`${p}px`,u.style.minWidth=`${d}px`);for(let m of a)m.style.minHeight=`${p}px`,m.style.minWidth=`${d}px`}activateDroppables(s){this.dragContainers.forEach(p=>{p.setAttribute("enabled",""),p.hasAttribute("disabled")&&(p.contains(s)||p.shadowRoot&&p.shadowRoot.contains(s))&&p.removeAttribute("disabled")}),this.droppables.forEach(p=>{p.setAttribute("enabled",""),p.hasAttribute("disabled")&&(p.contains(s)||p.shadowRoot&&p.shadowRoot.contains(s))&&p.removeAttribute("disabled")})}activateDragLocation(){this._internals.states.add("--dragzone-enabled")}deactivateDragLocation(){this._internals.states.delete("--dragzone-enabled")}deactivateDroppables(){this.dragContainers.forEach(a=>{a.removeAttribute("enabled")}),this.droppables.forEach(a=>a.removeAttribute("enabled"))}disconnectedCallback(){super.disconnectedCallback(),this.observer&&(this.observer.disconnect(),this.observer=null),this.droppableObsever&&(this.droppableObsever.disconnect(),this.droppableObsever=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),document.removeEventListener("touchmove",this.handleTouchMove),document.removeEventListener("mousemove",this.handleTouchMove),document.removeEventListener("touchend",this.handleTouchEnd),document.removeEventListener("mouseup",this.handleTouchEnd),document.removeEventListener("touchcancel",this.handleTouchCancel)}handleTouchMove(s){if(this.isDraggable&&this.dragClone){let{x:a,y:p}=this.getEventCoordinates(s),d={clientX:a,clientY:p};this.calculateDragDistance(d)>=this.MIN_DRAG_DISTANCE&&(this.isDragging=!0,this.updateDragClonePosition(d));let u=this.findClosestDropzone();this.currentDropTarget=u,u!==this.lastTarget&&(this.lastTarget&&(this.deactivateDroppable(this.lastTarget),this.dispatchCustomEvent(this.lastTarget,"dragleave")),u&&(this.activateDroppable(u),this.dispatchCustomEvent(u,"dragenter")),this.lastTarget=u),this.currentDropTarget&&this.dispatchCustomEvent(this.currentDropTarget,"dragover"),s.preventDefault()}}handleTouchEnd(s){if(this.isDragging){if(this.currentDropTarget){let a=this.dragClone;this.moveDraggableToDroppable(a,this.currentDropTarget)}this.resetDragState()}this._internals.states.delete("--dragzone-active"),this.checkAllMaxAssociations(),s.preventDefault()}handleTouchCancel(s){this.resetDragState()}validate(){if(!this.shadowRoot)return!1;let s=this.getValidAssociations(),a=!0,p="";this.maxAssociations>0&&s>this.maxAssociations?(a=!1,p=this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`):this.minAssociations>0&&s<this.minAssociations&&(a=!1,p=this.dataset.minSelectionsMessage||`You haven't selected enough associations. Minimum required is ${this.minAssociations}.`);let d=this.lastElementChild;return this._internals.setValidity(a?{}:{customError:!0},p,d),this.reportValidity(),a}reportValidity(){let s=this.shadowRoot.querySelector("#validationMessage");return s&&(this._internals.validity.valid?(s.textContent="",s.style.display="none"):(s.textContent=this._internals.validationMessage,s.style.display="block")),this._internals.validity.valid}checkMaxAssociations(s){let a=this.getMatchMaxValue(s),p=s.querySelectorAll('[qti-draggable="true"]').length;return a===0||p>=a}resetDragState(){if(this.dragClone)if(!(this.currentDropTarget!==null)||this.dragContainers.includes(this.currentDropTarget))this.dragSource.style.opacity="1.0",this.dragSource.style.display="block",this.dragSource.style.pointerEvents="auto",this.dragClone.remove();else{let p=window.getComputedStyle(this.dragSource);for(let d=0;d<p.length;d++){let u=p[d];this.dragClone.style.setProperty(u,p.getPropertyValue(u))}this.dragClone.style.opacity="1.0",this.dragClone.style.display="block",this.dragClone.style.pointerEvents="auto"}this.isDragging=!1,this.isDraggable=!1,this.dragSource=null,this.dragClone=null,this.touchStartPoint=null,this.currentDropTarget=null,this.lastTarget=null}checkAllMaxAssociations(){this.droppables.forEach(s=>{this.checkMaxAssociations(s)?this.disableDroppable(s):this.enableDroppable(s)})}getMatchMaxValue(s){let a=s.getAttribute("match-max");return a?parseInt(a,10):1}disableDroppable(s){s.setAttribute("disabled","")}enableDroppable(s){s.removeAttribute("disabled")}get value(){return this.collectResponseData()}set value(s){if(!this.isMatchTabular())if(Array.isArray(s)){s?.forEach(p=>this.placeResponse(p));let a=new FormData;s.forEach(p=>{a.append(this.responseIdentifier,p)}),this._internals.setFormValue(a)}else this._internals.setFormValue(s)}placeResponse(s){let[a,...p]=s.split(" ").reverse(),d=this.findDroppableById(a);p.forEach(u=>this.placeDraggableInDroppable(u,d))}findDroppableById(s){return this.droppables.find(a=>a.getAttribute("identifier")===s)}async placeDraggableInDroppable(s,a){let p=this.querySelector(`[identifier=${s}]`);if(!a||!p){console.error(`Cannot find draggable or droppable with the given identifier: ${s}`);return}let d=()=>{p.style.transform="translate(0, 0)",console.log("droppable",a),a.appendChild(p),this.checkAllMaxAssociations()};document.startViewTransition?await document.startViewTransition(d).finished:d()}getValidAssociations(){return this.droppables.filter(s=>s.childElementCount>0).length}saveResponse(){this.validate();let s=this.collectResponseData();this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:s}}))}collectResponseData(){return this.droppables.map(a=>{let p=a.querySelectorAll('[qti-draggable="true"]'),d=Array.from(p).map(m=>m.getAttribute("identifier")),u=a.getAttribute("identifier");return d.map(m=>`${m} ${u}`)}).flat()}reset(s=!0){s&&this.saveResponse()}updateDragClonePosition(s){if(!this.isDragging||!this.dragClone)return;let a=s.clientX-this.cloneOffset.x,p=s.clientY-this.cloneOffset.y,{newLeft:d,newTop:u}=this.applyBoundaries(a,p,this.dragClone);this.dragClone.style.left=`${d}px`,this.dragClone.style.top=`${u}px`}getEventCoordinates(s,a=!1){let p=s.touches?s.touches[0]:s;return{x:a?p.pageX:p.clientX,y:a?p.pageY:p.clientY}}calculateDragDistance(s){let a=Math.abs(s.clientX-this.touchStartPoint.x),p=Math.abs(s.clientY-this.touchStartPoint.y);return a+p}applyBoundaries(s,a,p){let d=new DOMRect(0,0,window.innerWidth,window.innerHeight);this.rootNode instanceof ShadowRoot?d=this.rootNode.host.getBoundingClientRect():this.rootNode instanceof Document&&(d=document.documentElement.getBoundingClientRect());let u=p.getBoundingClientRect(),m=u.width,g=u.height,v=Math.max(d.left,Math.min(s,d.right-m)),b=Math.max(d.top,Math.min(a,d.bottom-g));return{newLeft:v,newTop:b}}findClosestDropzone(){let s=this.allDropzones.filter(u=>!u.hasAttribute("disabled"));if(!this.dragClone||s.length===0)return null;let a=this.dragClone.getBoundingClientRect(),p=null,d=0;for(let u of s){let m=u.getBoundingClientRect(),g=this.calculateOverlapArea(a,m);g>d&&(d=g,p=u)}if(!p){let u=200;for(let m of s){let g=m.getBoundingClientRect(),v=Math.sqrt(Math.pow(a.left-g.left,2)+Math.pow(a.top-g.top,2));v<u&&(u=v,p=m)}}return p}calculateOverlapArea(s,a){let p=Math.max(0,Math.min(s.right,a.right)-Math.max(s.left,a.left)),d=Math.max(0,Math.min(s.bottom,a.bottom)-Math.max(s.top,a.top));return p*d}dispatchCustomEvent(s,a,p=!0){if(!s)return;let d=new CustomEvent(a,{bubbles:p,cancelable:!0});d.dataTransfer=this.dataTransfer,s.dispatchEvent(d)}handleTouchStart(s){let{x:a,y:p}=this.getEventCoordinates(s);this.dropzoneOriginalParent=s.currentTarget.parentElement,this.touchStartPoint={x:a,y:p},this.dragSource=s.currentTarget,this.isDraggable=!0,this.rootNode=this.dragSource.getRootNode();let d=this.findDraggableInDraggableContainer(this.dragSource.getAttribute("identifier")),u=this.dragSource.parentElement;if(this.droppables.includes(u)){this.enableDroppable(u),this.dragClone=this.dragSource,this.dragSource=this.findDraggableInDraggableContainer(this.dragSource.getAttribute("identifier"));let m=this.findParentInteractionElement(this.dragSource),g=this.dragClone.getBoundingClientRect();m?m.appendChild(this.dragClone):this.rootNode instanceof ShadowRoot?this.rootNode.host.appendChild(this.dragClone):this.rootNode instanceof Document&&document.body.appendChild(this.dragClone),g&&this.setDragCloneStyles(g)}else{let m=d.getBoundingClientRect();this.cloneOffset.x=a-m.left,this.cloneOffset.y=p-m.top,this.dragClone=d.cloneNode(!0),m&&this.setDragCloneStyles(m);let g=this.findParentInteractionElement(this.dragSource);g?g.appendChild(this.dragClone):this.rootNode instanceof ShadowRoot?this.rootNode.host.appendChild(this.dragClone):this.rootNode instanceof Document&&document.body.appendChild(this.dragClone);let v=this.getMatchMaxValue(this.dragSource),b=this.draggables.filter(Ze=>Ze.getAttribute("identifier")===this.dragSource.getAttribute("identifier"));v!==0&&b.length>=v?(d.style.opacity="0.0",d.style.pointerEvents="none"):d.style.opacity="1.0",s.preventDefault()}}findParentInteractionElement(s){let a=s.parentElement;for(;a&&!a.tagName?.toLowerCase().endsWith("-interaction");)a=a.parentElement;return a}findDraggableInDraggableContainer(s){let a=this.dragContainers.flat();for(let p of a){if(p.getAttribute("identifier")===s)return p;let u=Array.from(p.assignedElements()||[]).find(m=>m.getAttribute("identifier")===s);if(u)return u}}setDragCloneStyles(s){this.dragClone.style.position="fixed",this.dragClone.style.top=`${s.top}px`,this.dragClone.style.left=`${s.left}px`,this.dragClone.style.width=`${s.width}px`,this.dragClone.style.height=`${s.height}px`,this.dragClone.style.setProperty("box-sizing","border-box","important"),this.dragClone.style.zIndex="9999",this.dragClone.style.pointerEvents="none",this.dragClone.style.opacity=this.DRAG_CLONE_OPACITY.toString(),this.dragClone.style.display="block"}}return n([St({attribute:!1,type:Object})],r.prototype,"configuration",2),n([St({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),n([St({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),n([je(t)],r.prototype,"handleDraggableContainerChange",1),n([je(o)],r.prototype,"handleDraggablesChange",1),n([je(e)],r.prototype,"handleDroppablesChange",1),r};import{css as Is}from"lit";var nr=Is`
368
+ </div>`}`}};n([d({type:String,attribute:"module"})],se.prototype,"module",2),n([d({type:String,attribute:"custom-interaction-type-identifier"})],se.prototype,"customInteractionTypeIdentifier",2),n([C()],se.prototype,"_errorMessage",2),se=n([h("qti-portable-custom-interaction")],se);var Jt=(c,o,e)=>{class t extends c{}return t};var O=(c,o,e,t)=>{class r extends Jt(c,e,o){constructor(){super(...arguments);this.observer=null;this.droppableObsever=null;this.resizeObserver=null;this.draggables=[];this.droppables=[];this.dragContainers=[];this.dragClone=null;this.dragSource=null;this.touchStartPoint=null;this.isDraggable=!1;this.cloneOffset={x:0,y:0};this.isDragging=!1;this.rootNode=null;this.allDropzones=[];this.lastTarget=null;this.dropzoneOriginalParent=null;this.currentDropTarget=null;this.MIN_DRAG_DISTANCE=5;this.DRAG_CLONE_OPACITY=1;this.dataTransfer={data:{},setData(s,l){this.data[s]=l},getData(s){return this.data[s]},effectAllowed:"move"};this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.minAssociations=1;this.maxAssociations=1;this.draggablesModified=(s,l)=>{for(let m of l)this.draggables.includes(m)&&(this.draggables=this.draggables.filter(f=>f!==m),m.removeAttribute("tabindex"),m.removeEventListener("touchstart",this.handleTouchStart.bind(this)),m.removeEventListener("mousedown",this.handleTouchStart.bind(this)));for(let m of s)this.draggables.includes(m)||(this.draggables.push(m),m.setAttribute("tabindex","0"),m.hasTouchStartListener||(m.addEventListener("touchstart",this.handleTouchStart.bind(this),{passive:!1}),m.addEventListener("mousedown",this.handleTouchStart.bind(this),{passive:!1}),m.hasTouchStartListener=!0));let p=0;this.draggables.forEach(m=>{m.style.viewTransitionName=`drag-${p}-${this.getAttribute("identifier")||crypto.randomUUID()}`,m.setAttribute("qti-draggable","true"),m.addEventListener("dragstart",this.handleDragStart),m.addEventListener("dragend",this.handleDragEnd),p++})};this.droppablesModified=(s,l)=>{for(let p of l)this.droppables.includes(p)&&(this.droppables=this.droppables.filter(m=>m!==p),this.allDropzones=this.allDropzones.filter(m=>m!==p));for(let p of s)this.droppables.includes(p)||(this.droppables.push(p),this.allDropzones.push(p));for(let p of this.droppables)this.dataset.choicesContainerWidth&&(p.style.width=`${this.dataset.choicesContainerWidth}px`,p.style.boxSizing="border-box")};this.handleDragStart=s=>{let l=s.currentTarget;s.dataTransfer.setData("text",l.getAttribute("identifier")),this.responseIdentifier&&s.dataTransfer.setData("responseIdentifier",this.responseIdentifier),this._internals.states.add("--dragzone-enabled"),this._internals.states.add("--dragzone-active"),l.setAttribute("dragging",""),this.activateDragLocation(),this.activateDroppables(l)};this.handleDragEnd=async s=>{s.preventDefault();let l=s.currentTarget;this._internals.states.delete("--dragzone-enabled"),this._internals.states.delete("--dragzone-active"),this.deactivateDragLocation(),this.deactivateDroppables(),l.removeAttribute("dragging")}}handleDraggableContainerChange(s,l){this.isMatchTabular()||(s.length>0||l.length>0)&&this.dragContainersModified(s||[],l||[])}dragContainersModified(s,l){for(let p of l)this.dragContainers.includes(p)&&(this.dragContainers=this.dragContainers.filter(m=>m!==p),this.allDropzones=this.allDropzones.filter(m=>m!==p));for(let p of s)this.dragContainers.includes(p)||(this.dragContainers.push(p),this.allDropzones.push(p))}handleDraggablesChange(s,l){this.isMatchTabular()||(s.length>0||l.length>0)&&this.draggablesModified(s||[],l||[])}handleDroppablesChange(s,l){this.isMatchTabular()||(s.length>0||l.length>0)&&this.droppablesModified(s||[],l||[])}firstUpdated(s){super.firstUpdated(s),this.hasAttribute("disabled")||(document.addEventListener("touchmove",this.handleTouchMove.bind(this),{passive:!1}),document.addEventListener("mousemove",this.handleTouchMove.bind(this),{passive:!1}),document.addEventListener("touchend",this.handleTouchEnd.bind(this),{passive:!1}),document.addEventListener("mouseup",this.handleTouchEnd.bind(this),{passive:!1}),document.addEventListener("touchcancel",this.handleTouchCancel.bind(this),{passive:!1}));let p=Array.from(this.querySelectorAll(o)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(o)||[])),m=Array.from(this.querySelectorAll(e)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(e)||[])),f=Array.from(this.querySelectorAll(t)||[]).concat(Array.from(this.shadowRoot?.querySelectorAll(t)||[]));this.dragContainersModified(f,[]),this.droppablesModified(m,[]),this.draggablesModified(p,[]),this.updateMinDimensionsForDropZones(),this.observer=new MutationObserver(()=>this.updateMinDimensionsForDropZones()),this.observer.observe(this,{childList:!0,subtree:!0}),this.resizeObserver=new ResizeObserver(()=>this.updateMinDimensionsForDropZones()),this.querySelectorAll("qti-gap-text").forEach(y=>this.resizeObserver?.observe(y))}async moveDraggableToDroppable(s,l){(()=>{s.style.transform="translate(0, 0)",l.tagName==="SLOT"?s.setAttribute("slot",l.getAttribute("name")):l.appendChild(s),this.checkAllMaxAssociations(),this.saveResponse()})()}activateDroppable(s){this.dragContainers.includes(s)?(this._internals.states.add("--dragzone-active"),s.setAttribute("active","")):(this._internals.states.delete("--dragzone-active"),s.setAttribute("active",""))}deactivateDroppable(s,l=!0){l&&this._internals.states.add("--dragzone-active"),s.removeAttribute("active")}connectedCallback(){super.connectedCallback()}isMatchTabular(){return this.classList.contains("qti-match-tabular")}updateMinDimensionsForDropZones(){let s=this.querySelectorAll(o),l=Array.from(this.querySelectorAll(e)).map(b=>b),p=0,m=0;s.forEach(b=>{let y=b.getBoundingClientRect();p=Math.max(p,y.height),m=Math.max(m,y.width)});let f=this.querySelector(t)||this.shadowRoot?.querySelector(t);f&&(f.style.minHeight=`${p}px`,f.style.minWidth=`${m}px`);for(let b of l)b.style.minHeight=`${p}px`,b.style.minWidth=`${m}px`}activateDroppables(s){this.dragContainers.forEach(p=>{p.setAttribute("enabled",""),p.hasAttribute("disabled")&&(p.contains(s)||p.shadowRoot&&p.shadowRoot.contains(s))&&p.removeAttribute("disabled")}),this.droppables.forEach(p=>{p.setAttribute("enabled",""),p.hasAttribute("disabled")&&(p.contains(s)||p.shadowRoot&&p.shadowRoot.contains(s))&&p.removeAttribute("disabled")})}activateDragLocation(){this._internals.states.add("--dragzone-enabled")}deactivateDragLocation(){this._internals.states.delete("--dragzone-enabled")}deactivateDroppables(){this.dragContainers.forEach(l=>{l.removeAttribute("enabled")}),this.droppables.forEach(l=>l.removeAttribute("enabled"))}disconnectedCallback(){super.disconnectedCallback(),this.observer&&(this.observer.disconnect(),this.observer=null),this.droppableObsever&&(this.droppableObsever.disconnect(),this.droppableObsever=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),document.removeEventListener("touchmove",this.handleTouchMove),document.removeEventListener("mousemove",this.handleTouchMove),document.removeEventListener("touchend",this.handleTouchEnd),document.removeEventListener("mouseup",this.handleTouchEnd),document.removeEventListener("touchcancel",this.handleTouchCancel)}handleTouchMove(s){if(this.isDraggable&&this.dragClone){let{x:l,y:p}=this.getEventCoordinates(s),m={clientX:l,clientY:p};this.calculateDragDistance(m)>=this.MIN_DRAG_DISTANCE&&(this.isDragging=!0,this.updateDragClonePosition(m));let f=this.findClosestDropzone();this.currentDropTarget=f,f!==this.lastTarget&&(this.lastTarget&&(this.deactivateDroppable(this.lastTarget),this.dispatchCustomEvent(this.lastTarget,"dragleave")),f&&(this.activateDroppable(f),this.dispatchCustomEvent(f,"dragenter")),this.lastTarget=f),this.currentDropTarget&&this.dispatchCustomEvent(this.currentDropTarget,"dragover"),s.preventDefault()}}handleTouchEnd(s){if(this.isDragging){if(this.currentDropTarget){let l=this.dragClone;this.moveDraggableToDroppable(l,this.currentDropTarget)}this.resetDragState()}this._internals.states.delete("--dragzone-active"),this.checkAllMaxAssociations(),s.preventDefault()}handleTouchCancel(s){this.resetDragState()}validate(){if(!this.shadowRoot)return!1;let s=this.getValidAssociations(),l=!0,p="";this.maxAssociations>0&&s>this.maxAssociations?(l=!1,p=this.dataset.maxSelectionsMessage||`You've selected too many associations. Maximum allowed is ${this.maxAssociations}.`):this.minAssociations>0&&s<this.minAssociations&&(l=!1,p=this.dataset.minSelectionsMessage||`You haven't selected enough associations. Minimum required is ${this.minAssociations}.`);let m=this.lastElementChild;return this._internals.setValidity(l?{}:{customError:!0},p,m),this.reportValidity(),l}reportValidity(){let s=this.shadowRoot.querySelector("#validationMessage");return s&&(this._internals.validity.valid?(s.textContent="",s.style.display="none"):(s.textContent=this._internals.validationMessage,s.style.display="block")),this._internals.validity.valid}checkMaxAssociations(s){let l=this.getMatchMaxValue(s),p=s.querySelectorAll('[qti-draggable="true"]').length;return l===0||p>=l}resetDragState(){if(this.dragClone)if(!(this.currentDropTarget!==null)||this.dragContainers.includes(this.currentDropTarget))this.dragSource.style.opacity="1.0",this.dragSource.style.display="block",this.dragSource.style.pointerEvents="auto",this.dragClone.remove();else{let p=window.getComputedStyle(this.dragSource);for(let m=0;m<p.length;m++){let f=p[m];this.dragClone.style.setProperty(f,p.getPropertyValue(f))}this.dragClone.style.opacity="1.0",this.dragClone.style.display="block",this.dragClone.style.pointerEvents="auto"}this.isDragging=!1,this.isDraggable=!1,this.dragSource=null,this.dragClone=null,this.touchStartPoint=null,this.currentDropTarget=null,this.lastTarget=null}checkAllMaxAssociations(){this.droppables.forEach(s=>{this.checkMaxAssociations(s)?this.disableDroppable(s):this.enableDroppable(s)})}getMatchMaxValue(s){let l=s.getAttribute("match-max");return l?parseInt(l,10):1}disableDroppable(s){s.setAttribute("disabled","")}enableDroppable(s){s.removeAttribute("disabled")}get value(){return this.collectResponseData()}set value(s){if(!this.isMatchTabular())if(Array.isArray(s)){s?.forEach(p=>this.placeResponse(p));let l=new FormData;s.forEach(p=>{l.append(this.responseIdentifier,p)}),this._internals.setFormValue(l)}else this._internals.setFormValue(s)}placeResponse(s){let[l,...p]=s.split(" ").reverse(),m=this.findDroppableById(l);p.forEach(f=>this.placeDraggableInDroppable(f,m))}findDroppableById(s){return this.droppables.find(l=>l.getAttribute("identifier")===s)}async placeDraggableInDroppable(s,l){let p=this.querySelector(`[identifier=${s}]`);if(!l||!p){console.error(`Cannot find draggable or droppable with the given identifier: ${s}`);return}let m=()=>{p.style.transform="translate(0, 0)",console.log("droppable",l),l.appendChild(p),this.checkAllMaxAssociations()};document.startViewTransition?await document.startViewTransition(m).finished:m()}getValidAssociations(){return this.droppables.filter(s=>s.childElementCount>0).length}saveResponse(){this.validate();let s=this.collectResponseData();this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:s}}))}collectResponseData(){return this.droppables.map(l=>{let p=l.querySelectorAll('[qti-draggable="true"]'),m=Array.from(p).map(b=>b.getAttribute("identifier")),f=l.getAttribute("identifier");return m.map(b=>`${b} ${f}`)}).flat()}reset(s=!0){s&&this.saveResponse()}updateDragClonePosition(s){if(!this.isDragging||!this.dragClone)return;let l=s.clientX-this.cloneOffset.x,p=s.clientY-this.cloneOffset.y,{newLeft:m,newTop:f}=this.applyBoundaries(l,p,this.dragClone);this.dragClone.style.left=`${m}px`,this.dragClone.style.top=`${f}px`}getEventCoordinates(s,l=!1){let p=s.touches?s.touches[0]:s;return{x:l?p.pageX:p.clientX,y:l?p.pageY:p.clientY}}calculateDragDistance(s){let l=Math.abs(s.clientX-this.touchStartPoint.x),p=Math.abs(s.clientY-this.touchStartPoint.y);return l+p}applyBoundaries(s,l,p){let m=new DOMRect(0,0,window.innerWidth,window.innerHeight);this.rootNode instanceof ShadowRoot?m=this.rootNode.host.getBoundingClientRect():this.rootNode instanceof Document&&(m=document.documentElement.getBoundingClientRect());let f=p.getBoundingClientRect(),b=f.width,y=f.height,T=Math.max(m.left,Math.min(s,m.right-b)),q=Math.max(m.top,Math.min(l,m.bottom-y));return{newLeft:T,newTop:q}}findClosestDropzone(){let s=this.allDropzones.filter(f=>!f.hasAttribute("disabled"));if(!this.dragClone||s.length===0)return null;let l=this.dragClone.getBoundingClientRect(),p=null,m=0;for(let f of s){let b=f.getBoundingClientRect(),y=this.calculateOverlapArea(l,b);y>m&&(m=y,p=f)}if(!p){let f=200;for(let b of s){let y=b.getBoundingClientRect(),T=Math.sqrt(Math.pow(l.left-y.left,2)+Math.pow(l.top-y.top,2));T<f&&(f=T,p=b)}}return p}calculateOverlapArea(s,l){let p=Math.max(0,Math.min(s.right,l.right)-Math.max(s.left,l.left)),m=Math.max(0,Math.min(s.bottom,l.bottom)-Math.max(s.top,l.top));return p*m}dispatchCustomEvent(s,l,p=!0){if(!s)return;let m=new CustomEvent(l,{bubbles:p,cancelable:!0});m.dataTransfer=this.dataTransfer,s.dispatchEvent(m)}handleTouchStart(s){let{x:l,y:p}=this.getEventCoordinates(s);this.dropzoneOriginalParent=s.currentTarget.parentElement,this.touchStartPoint={x:l,y:p},this.dragSource=s.currentTarget,this.isDraggable=!0,this.rootNode=this.dragSource.getRootNode();let m=this.findDraggableInDraggableContainer(this.dragSource.getAttribute("identifier")),f=this.dragSource.parentElement;if(this.droppables.includes(f)){this.enableDroppable(f),this.dragClone=this.dragSource,this.dragSource=this.findDraggableInDraggableContainer(this.dragSource.getAttribute("identifier"));let b=this.findParentInteractionElement(this.dragSource),y=this.dragClone.getBoundingClientRect();b?b.appendChild(this.dragClone):this.rootNode instanceof ShadowRoot?this.rootNode.host.appendChild(this.dragClone):this.rootNode instanceof Document&&document.body.appendChild(this.dragClone),y&&this.setDragCloneStyles(y)}else{let b=m.getBoundingClientRect();this.cloneOffset.x=l-b.left,this.cloneOffset.y=p-b.top,this.dragClone=m.cloneNode(!0),b&&this.setDragCloneStyles(b);let y=this.findParentInteractionElement(this.dragSource);y?y.appendChild(this.dragClone):this.rootNode instanceof ShadowRoot?this.rootNode.host.appendChild(this.dragClone):this.rootNode instanceof Document&&document.body.appendChild(this.dragClone);let T=this.getMatchMaxValue(this.dragSource),q=this.draggables.filter(re=>re.getAttribute("identifier")===this.dragSource.getAttribute("identifier"));T!==0&&q.length>=T?(m.style.opacity="0.0",m.style.pointerEvents="none"):m.style.opacity="1.0",s.preventDefault()}}findParentInteractionElement(s){let l=s.parentElement;for(;l&&!l.tagName?.toLowerCase().endsWith("-interaction");)l=l.parentElement;return l}findDraggableInDraggableContainer(s){let l=this.dragContainers.flat();for(let p of l){if(p.getAttribute("identifier")===s)return p;let f=Array.from(p.assignedElements()||[]).find(b=>b.getAttribute("identifier")===s);if(f)return f}}setDragCloneStyles(s){this.dragClone.style.position="fixed",this.dragClone.style.top=`${s.top}px`,this.dragClone.style.left=`${s.left}px`,this.dragClone.style.width=`${s.width}px`,this.dragClone.style.height=`${s.height}px`,this.dragClone.style.setProperty("box-sizing","border-box","important"),this.dragClone.style.zIndex="9999",this.dragClone.style.pointerEvents="none",this.dragClone.style.opacity=this.DRAG_CLONE_OPACITY.toString(),this.dragClone.style.display="block"}}return n([d({attribute:!1,type:Object})],r.prototype,"configuration",2),n([d({type:Number,reflect:!0,attribute:"min-associations"})],r.prototype,"minAssociations",2),n([d({type:Number,reflect:!0,attribute:"max-associations"})],r.prototype,"maxAssociations",2),n([Ye(t)],r.prototype,"handleDraggableContainerChange",1),n([Ye(o)],r.prototype,"handleDraggablesChange",1),n([Ye(e)],r.prototype,"handleDroppablesChange",1),r};var Zt=g`
391
369
  :host {
392
370
  display: block; /* necessary to calculate scaling position */
393
371
  }
@@ -412,24 +390,24 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
412
390
  rgb(0 0 0 / 0%) calc(50% + 1px)
413
391
  );
414
392
  }
415
- `;var J=class extends L(h,"qti-simple-associable-choice",".dl","slot[name='qti-simple-associable-choice']"){constructor(){super();this._childrenMap=[];this._registerChoiceHandler=this._registerChoice.bind(this),this.addEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}_registerChoice(e){let t=e.target;this._childrenMap.push(t)}render(){return ar` <slot name="prompt"></slot>
393
+ `;var ue=class extends O(x,"qti-simple-associable-choice",".dl","slot[name='qti-simple-associable-choice']"){constructor(){super();this._childrenMap=[];this._registerChoiceHandler=this._registerChoice.bind(this),this.addEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}_registerChoice(e){let t=e.target;this._childrenMap.push(t)}render(){return u` <slot name="prompt"></slot>
416
394
  <slot name="qti-simple-associable-choice"></slot>
417
395
  <div part="drop-container">
418
- ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>ar`<div part="associables-container">
396
+ ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,t)=>u`<div part="associables-container">
419
397
  <div name="left${t}" part="drop-list" class="dl" identifier="droplist${t}_left"></div>
420
398
  <div name="right${t}" part="drop-list" class="dl" identifier="droplist${t}_right"></div>
421
399
  </div>`)}
422
400
 
423
401
  <div role="alert" id="validationMessage"></div>
424
- </div>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};J.styles=nr,n([Ps()],J.prototype,"_childrenMap",2),J=n([Os("qti-associate-interaction")],J);import{html as lr}from"lit";import{customElement as Fs,property as Ke,state as zs}from"lit/decorators.js";var V=class extends h{constructor(){super();this._errorMessage=null;this.handlePostMessage=this.handlePostMessage.bind(this)}connectedCallback(){super.connectedCallback();let e=this.data.startsWith("http")?this.data:oe(this.baseItemUrl+"/"+this.data);fetch(e).then(t=>t.json()).then(t=>{this.manifest=t,this.setupCES()}).catch(t=>{this._errorMessage=t})}setupCES(){let e=this.shadowRoot.querySelector("#pciContainer"),t=e.contentDocument;window.addEventListener("message",this.handlePostMessage),t.open(),t.write(`
402
+ </div>`}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-simple-associable-choice",this._registerChoiceHandler)}};ue.styles=Zt,n([C()],ue.prototype,"_childrenMap",2),ue=n([h("qti-associate-interaction")],ue);var z=class extends x{constructor(){super();this._errorMessage=null;this.handlePostMessage=this.handlePostMessage.bind(this)}connectedCallback(){super.connectedCallback();let e=this.data.startsWith("http")?this.data:Ce(this.baseItemUrl+"/"+this.data);fetch(e).then(t=>t.json()).then(t=>{this.manifest=t,this.setupCES()}).catch(t=>{this._errorMessage=t})}setupCES(){let e=this.shadowRoot.querySelector("#pciContainer"),t=e.contentDocument;window.addEventListener("message",this.handlePostMessage),t.open(),t.write(`
425
403
  <html>
426
404
  <head>
427
- <link href='${oe(`${this.baseRefUrl}/${this.manifest.style[0]}`)}' rel="stylesheet" />
428
- <script src='${oe(`${this.baseRefUrl}/${this.manifest.script[0]}`)}'></script>
405
+ <link href='${Ce(`${this.baseRefUrl}/${this.manifest.style[0]}`)}' rel="stylesheet" />
406
+ <script src='${Ce(`${this.baseRefUrl}/${this.manifest.script[0]}`)}'></script>
429
407
  </head>
430
408
  <body></body>
431
409
  </html>
432
- `),t.close()}getIFrames(){let e=this.shadowRoot.querySelectorAll("iframe"),t=this.querySelectorAll("iframe"),r=[...e,...t];for(let i of r){let l=i.src;if(new URL(l,window.location.href).origin===window.location.origin)try{let a=i.contentDocument||i.contentWindow.document;a&&this.getInnerIFrames(a,r)}catch(a){console.error("Error accessing nested iframe:",a)}}return r.forEach((i,l)=>{r.indexOf(i)!==l&&r.splice(l,1)}),r}getInnerIFrames(e,t=[]){return e.querySelectorAll("iframe").forEach(i=>{t.push(i);let l=i.src;if(new URL(l,window.location.href).origin===window.location.origin)try{let a=i.contentDocument||i.contentWindow.document;this.getInnerIFrames(a,t)}catch(a){console.error("Error accessing nested iframe:",a)}else console.warn("Skipped cross-origin iframe:",l)}),t}postToWindowAndIframes(e,t){window.postMessage({type:e,data:t},"*");let r=this.getIFrames();for(let i of r)i.contentWindow&&i.contentWindow.postMessage({type:e,data:t},"*")}handlePostMessage(e){let{type:t,data:r}=e.data;switch(t){case"setResponse":this.rawResponse=r,this.saveResponse(r);break;case"getResponse":{this.postToWindowAndIframes("responseData",this.rawResponse);break}case"getMedia":{let i=this.manifest.media.map(l=>l.startsWith("http")?l:oe(this.baseRefUrl+"/"+l));this.postToWindowAndIframes("mediaData",i);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){return this.rawResponse!==""}get value(){return this.rawResponse}set value(e){if(typeof e=="string")this.rawResponse=e,this.saveResponse(e);else throw new Error("Value must be a string")}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return lr`<iframe
410
+ `),t.close()}getIFrames(){let e=this.shadowRoot.querySelectorAll("iframe"),t=this.querySelectorAll("iframe"),r=[...e,...t];for(let i of r){let a=i.src;if(new URL(a,window.location.href).origin===window.location.origin)try{let l=i.contentDocument||i.contentWindow.document;l&&this.getInnerIFrames(l,r)}catch(l){console.error("Error accessing nested iframe:",l)}}return r.forEach((i,a)=>{r.indexOf(i)!==a&&r.splice(a,1)}),r}getInnerIFrames(e,t=[]){return e.querySelectorAll("iframe").forEach(i=>{t.push(i);let a=i.src;if(new URL(a,window.location.href).origin===window.location.origin)try{let l=i.contentDocument||i.contentWindow.document;this.getInnerIFrames(l,t)}catch(l){console.error("Error accessing nested iframe:",l)}else console.warn("Skipped cross-origin iframe:",a)}),t}postToWindowAndIframes(e,t){window.postMessage({type:e,data:t},"*");let r=this.getIFrames();for(let i of r)i.contentWindow&&i.contentWindow.postMessage({type:e,data:t},"*")}handlePostMessage(e){let{type:t,data:r}=e.data;switch(t){case"setResponse":this.rawResponse=r,this.saveResponse(r);break;case"getResponse":{this.postToWindowAndIframes("responseData",this.rawResponse);break}case"getMedia":{let i=this.manifest.media.map(a=>a.startsWith("http")?a:Ce(this.baseRefUrl+"/"+a));this.postToWindowAndIframes("mediaData",i);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){return this.rawResponse!==""}get value(){return this.rawResponse}set value(e){if(typeof e=="string")this.rawResponse=e,this.saveResponse(e);else throw new Error("Value must be a string")}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return u`<iframe
433
411
  width=${this.getAttribute("width")}
434
412
  height=${this.getAttribute("height")}
435
413
  frameborder="0"
@@ -437,10 +415,10 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
437
415
  id="pciContainer"
438
416
  >
439
417
  </iframe>
440
- ${this._errorMessage&&lr`<div style="color:red">
418
+ ${this._errorMessage&&u`<div style="color:red">
441
419
  <h1>Error</h1>
442
420
  ${this._errorMessage}
443
- </div>`}`}};n([Ke({type:String,attribute:"data"})],V.prototype,"data",2),n([Ke({type:String,attribute:"data-base-item"})],V.prototype,"baseItemUrl",2),n([Ke({type:String,attribute:"data-base-ref"})],V.prototype,"baseRefUrl",2),n([Ke({type:String,attribute:"id"})],V.prototype,"id",2),n([zs()],V.prototype,"_errorMessage",2),V=n([Fs("qti-custom-interaction")],V);import{html as Us,LitElement as Xs}from"lit";import{customElement as Bs,property as Je}from"lit/decorators.js";var F=class extends Xs{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}render(){return Us`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};n([Je({type:String,attribute:"response-identifier"})],F.prototype,"responseIdentifier",2),n([Je({reflect:!0,type:Boolean})],F.prototype,"disabled",2),n([Je({type:String,attribute:"count-attempt"})],F.prototype,"countAttempt",2),n([Je({type:String})],F.prototype,"title",2),F=n([Bs("qti-end-attempt-interaction")],F);import{html as Ws}from"lit";import{customElement as js}from"lit/decorators.js";import{css as Ys}from"lit";var cr=Ys`
421
+ </div>`}`}};n([d({type:String,attribute:"data"})],z.prototype,"data",2),n([d({type:String,attribute:"data-base-item"})],z.prototype,"baseItemUrl",2),n([d({type:String,attribute:"data-base-ref"})],z.prototype,"baseRefUrl",2),n([d({type:String,attribute:"id"})],z.prototype,"id",2),n([C()],z.prototype,"_errorMessage",2),z=n([h("qti-custom-interaction")],z);var Q=class extends v{constructor(){super(...arguments);this.disabled=!1;this.countAttempt=null;this.title="end attempt"}render(){return u`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};n([d({type:String,attribute:"response-identifier"})],Q.prototype,"responseIdentifier",2),n([d({reflect:!0,type:Boolean})],Q.prototype,"disabled",2),n([d({type:String,attribute:"count-attempt"})],Q.prototype,"countAttempt",2),n([d({type:String})],Q.prototype,"title",2),Q=n([h("qti-end-attempt-interaction")],Q);var Gt=g`
444
422
  :host {
445
423
  display: flex;
446
424
  align-items: flex-start;
@@ -474,10 +452,10 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
474
452
  border-radius: 0.3rem;
475
453
  gap: 0.5rem;
476
454
  }
477
- `;var fe=class extends L(h,"qti-gap-text","qti-gap","slot[part='drags']"){render(){return Ws`<slot name="prompt"> </slot>
455
+ `;var Ae=class extends O(x,"qti-gap-text","qti-gap","slot[part='drags']"){render(){return u`<slot name="prompt"> </slot>
478
456
  <slot part="drags" name="drags"></slot>
479
457
  <slot part="drops"></slot>
480
- <div role="alert" id="validationMessage"></div>`}set correctResponse(o){let e=[],t=Array.isArray(o)?o:[o];t&&(e=t.map(i=>{let l=i.split(" ");return{text:l[0],gap:l[1]}})),this.querySelectorAll("qti-gap").forEach(i=>{let l=i.getAttribute("identifier"),s=e.find(p=>p.gap===l)?.text,a=this.querySelector(`qti-gap-text[identifier="${s}"]`)?.textContent.trim();if(s&&a){if(!i.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=a,i.insertAdjacentElement("afterend",p)}}else i.nextElementSibling?.classList.contains("correct-option")&&i.nextElementSibling.remove()})}};fe.styles=cr,fe=n([js("qti-gap-match-interaction")],fe);import{html as Js,svg as dr}from"lit";import{customElement as Gs,queryAssignedElements as Zs,state as Rt}from"lit/decorators.js";import{ifDefined as ur}from"lit/directives/if-defined.js";import{repeat as Qs}from"lit/directives/repeat.js";function G(c,o,e,t){switch(c){case"circle":{let[r,i,l]=o,s=r/e.width*100,a=i/e.height*100,p=l/e.width*100;t.style.left=s-p+"%",t.style.top=a-p+"%",t.style.width=t.style.height=4*p+"px",t.style.borderRadius="9999px"}break;case"rect":{let[r,i,l,s]=o,a=r/e.width*100,p=i/e.height*100,d=l/e.width*100,u=s/e.height*100;t.style.left=a+"%",t.style.top=p+"%",t.style.width=d-a+"%",t.style.height=u-p+"%"}break;case"poly":{let r=o.reduce((b,Ze,_t,Mr)=>{if(_t%2===1){let Sr=b.pop();b[b.length]={x:Sr,y:Mr[_t]}}else b.push(Ze);return b},[]),i=Math.min(...r.map(b=>b.x)),l=Math.max(...r.map(b=>b.x)),s=Math.min(...r.map(b=>b.y)),a=Math.max(...r.map(b=>b.y)),p=i/e.width*100,d=s/e.height*100,u=l/e.width*100,m=a/e.height*100;t.style.left=i/e.width*100+"%",t.style.top=s/e.height*100+"%",t.style.width=u-p+"%",t.style.height=m-d+"%";let v=r.map(b=>({x:(b.x-i)/(l-i)*100,y:(b.y-s)/(a-s)*100})).map(b=>Math.round(b.x)+"% "+Math.round(b.y)+"%").join(",");t.style.clipPath=`polygon(${v})`}break;default:break}}import{css as Ks}from"lit";var pr=Ks`
458
+ <div role="alert" id="validationMessage"></div>`}set correctResponse(o){let e=[],t=Array.isArray(o)?o:[o];t&&(e=t.map(i=>{let a=i.split(" ");return{text:a[0],gap:a[1]}})),this.querySelectorAll("qti-gap").forEach(i=>{let a=i.getAttribute("identifier"),s=e.find(p=>p.gap===a)?.text,l=this.querySelector(`qti-gap-text[identifier="${s}"]`)?.textContent.trim();if(s&&l){if(!i.nextElementSibling?.classList.contains("correct-option")){let p=document.createElement("span");p.classList.add("correct-option"),p.textContent=l,i.insertAdjacentElement("afterend",p)}}else i.nextElementSibling?.classList.contains("correct-option")&&i.nextElementSibling.remove()})}};Ae.styles=Gt,Ae=n([h("qti-gap-match-interaction")],Ae);var Qt=(c,o,e)=>{let t=new Map;for(let r=o;r<=e;r++)t.set(c[r],r);return t},ot=j(class extends le{constructor(c){if(super(c),c.type!==ae.CHILD)throw Error("repeat() can only be used in text expressions")}dt(c,o,e){let t;e===void 0?e=o:o!==void 0&&(t=o);let r=[],i=[],a=0;for(let s of c)r[a]=t?t(s,a):a,i[a]=e(s,a),a++;return{values:i,keys:r}}render(c,o,e){return this.dt(c,o,e).values}update(c,[o,e,t]){let r=$t(c),{values:i,keys:a}=this.dt(o,e,t);if(!Array.isArray(r))return this.ut=a,i;let s=this.ut??(this.ut=[]),l=[],p,m,f=0,b=r.length-1,y=0,T=i.length-1;for(;f<=b&&y<=T;)if(r[f]===null)f++;else if(r[b]===null)b--;else if(s[f]===a[y])l[y]=X(r[f],i[y]),f++,y++;else if(s[b]===a[T])l[T]=X(r[b],i[T]),b--,T--;else if(s[f]===a[T])l[T]=X(r[f],i[T]),ne(c,l[T+1],r[f]),f++,T--;else if(s[b]===a[y])l[y]=X(r[b],i[y]),ne(c,r[f],r[b]),b--,y++;else if(p===void 0&&(p=Qt(a,y,T),m=Qt(s,f,b)),p.has(s[f]))if(p.has(s[b])){let q=m.get(a[y]),re=q!==void 0?r[q]:null;if(re===null){let ye=ne(c,r[f]);X(ye,i[y]),l[y]=ye}else l[y]=X(re,i[y]),ne(c,r[f],re),r[q]=null;y++}else Be(r[b]),b--;else Be(r[f]),f++;for(;y<=T;){let q=ne(c,l[T+1]);X(q,i[y]),l[y++]=q}for(;f<=b;){let q=r[f++];q!==null&&Be(q)}return this.ut=a,Ht(c,l),oe}});function he(c,o,e,t){switch(c){case"circle":{let[r,i,a]=o,s=r/e.width*100,l=i/e.height*100,p=a/e.width*100;t.style.left=s-p+"%",t.style.top=l-p+"%",t.style.width=t.style.height=4*p+"px",t.style.borderRadius="9999px"}break;case"rect":{let[r,i,a,s]=o,l=r/e.width*100,p=i/e.height*100,m=a/e.width*100,f=s/e.height*100;t.style.left=l+"%",t.style.top=p+"%",t.style.width=m-l+"%",t.style.height=f-p+"%"}break;case"poly":{let r=o.reduce((q,re,ye,cr)=>{if(ye%2===1){let pr=q.pop();q[q.length]={x:pr,y:cr[ye]}}else q.push(re);return q},[]),i=Math.min(...r.map(q=>q.x)),a=Math.max(...r.map(q=>q.x)),s=Math.min(...r.map(q=>q.y)),l=Math.max(...r.map(q=>q.y)),p=i/e.width*100,m=s/e.height*100,f=a/e.width*100,b=l/e.height*100;t.style.left=i/e.width*100+"%",t.style.top=s/e.height*100+"%",t.style.width=f-p+"%",t.style.height=b-m+"%";let T=r.map(q=>({x:(q.x-i)/(a-i)*100,y:(q.y-s)/(l-s)*100})).map(q=>Math.round(q.x)+"% "+Math.round(q.y)+"%").join(",");t.style.clipPath=`polygon(${T})`}break;default:break}}var er=g`
481
459
  slot:not([name='prompt']) {
482
460
  // position: relative; /* qti-hotspot-choice relative to the slot */
483
461
  display: block;
@@ -500,14 +478,14 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
500
478
  top: 0px;
501
479
  left: 0px;
502
480
  }
503
- `;var H=class extends h{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set value(e){Array.isArray(e)&&(this._lines=e)}get value(){return this._lines}render(){return Js`<slot name="prompt"></slot>
481
+ `;var B=class extends x{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set value(e){Array.isArray(e)&&(this._lines=e)}get value(){return this._lines}render(){return u`<slot name="prompt"></slot>
504
482
  <line-container>
505
483
  <svg
506
- width=${ur(this.grImage[0]?.width)}
507
- height=${ur(this.grImage[0]?.height)}
484
+ width=${K(this.grImage[0]?.width)}
485
+ height=${K(this.grImage[0]?.height)}
508
486
  viewbox="0 0 ${this.grImage[0]?.width} ${this.grImage[0]?.height}"
509
487
  >
510
- ${Qs(this._lines,e=>e,(e,t)=>dr`
488
+ ${ot(this._lines,e=>e,(e,t)=>at`
511
489
  <line
512
490
  part="line"
513
491
  x1=${parseInt(this.querySelector("[identifier="+e.split(" ")[0]+"]").style.left)}
@@ -516,10 +494,10 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
516
494
  y2=${parseInt(this.querySelector("[identifier="+e.split(" ")[1]+"]").style.top)}
517
495
  stroke="red"
518
496
  stroke-width="3"
519
- @click=${r=>{r.stopPropagation(),this._lines=this._lines.filter((i,l)=>l!==t),this.saveResponse(this._lines)}}
497
+ @click=${r=>{r.stopPropagation(),this._lines=this._lines.filter((i,a)=>a!==t),this.saveResponse(this._lines)}}
520
498
  />
521
499
  `)}
522
- ${this.startPoint&&dr`<line
500
+ ${this.startPoint&&at`<line
523
501
  part="point"
524
502
  x1=${this.startCoord.x}
525
503
  y1=${this.startCoord.y}
@@ -531,7 +509,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
531
509
  </svg>
532
510
  <slot></slot>
533
511
  </line-container>
534
- <div role="alert" id="validationMessage"></div>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,i=r.getAttribute("coords"),l=r.getAttribute("shape"),s=i.split(",").map(a=>parseInt(a));G(l,s,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=this.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};H.styles=pr,n([Rt()],H.prototype,"_lines",2),n([Rt()],H.prototype,"startCoord",2),n([Rt()],H.prototype,"mouseCoord",2),n([Zs({selector:"img"})],H.prototype,"grImage",2),H=n([Gs("qti-graphic-associate-interaction")],H);import{html as to}from"lit";import{customElement as ro}from"lit/decorators.js";import{css as eo}from"lit";var mr=eo`
512
+ <div role="alert" id="validationMessage"></div>`}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,i=r.getAttribute("coords"),a=r.getAttribute("shape"),s=i.split(",").map(l=>parseInt(l));he(a,s,t,r)}firstUpdated(e){super.firstUpdated(e),this.hotspots=this.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",t=>{this.mouseCoord={x:t.clientX-this.grImage[0].getBoundingClientRect().left,y:t.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(t=>{t.style.left=t.getAttribute("coords").split(",")[0]+"px",t.style.top=t.getAttribute("coords").split(",")[1]+"px",t.addEventListener("click",r=>{this.startPoint?this.endPoint||(this.endPoint=r.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=r.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};B.styles=er,n([C()],B.prototype,"_lines",2),n([C()],B.prototype,"startCoord",2),n([C()],B.prototype,"mouseCoord",2),n([Vt({selector:"img"})],B.prototype,"grImage",2),B=n([h("qti-graphic-associate-interaction")],B);var tr=g`
535
513
  :host {
536
514
  display: flex;
537
515
  align-items: flex-start;
@@ -585,10 +563,10 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
585
563
  user-select: none;
586
564
  pointer-events: none;
587
565
  }
588
- `;var ge=class extends L(h,"qti-gap-img, qti-gap-text","qti-associable-hotspot","slot[part='drags']"){render(){return to` <slot name="prompt"></slot>
566
+ `;var De=class extends O(x,"qti-gap-img, qti-gap-text","qti-associable-hotspot","slot[part='drags']"){render(){return u` <slot name="prompt"></slot>
589
567
  <slot part="image"></slot>
590
568
  <slot part="drags" name="drags" class="hover-border"></slot>
591
- <div role="alert" id="validationMessage"></div>`}positionHotspotOnRegister(o){let e=o.target,t=e.getAttribute("coords"),r=e.getAttribute("shape"),i=t.split(",").map(l=>parseInt(l));switch(r){case"circle":{let[l,s,a]=i;e.style.left=l-a+"px",e.style.top=s-a+"px",e.style.width=e.style.height=2*a+"px"}break;case"rect":{let[l,s,a,p]=i;e.style.left=l+"px",e.style.top=s+"px",e.style.width=a-l+"px",e.style.height=p-s+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};ge.styles=mr,ge=n([ro("qti-graphic-gap-match-interaction")],ge);import{html as so}from"lit";import{customElement as oo}from"lit/decorators.js";import{css as io}from"lit";var hr=io`
569
+ <div role="alert" id="validationMessage"></div>`}positionHotspotOnRegister(o){let e=o.target,t=e.getAttribute("coords"),r=e.getAttribute("shape"),i=t.split(",").map(a=>parseInt(a));switch(r){case"circle":{let[a,s,l]=i;e.style.left=a-l+"px",e.style.top=s-l+"px",e.style.width=e.style.height=2*l+"px"}break;case"rect":{let[a,s,l,p]=i;e.style.left=a+"px",e.style.top=s+"px",e.style.width=l-a+"px",e.style.height=p-s+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};De.styles=tr,De=n([h("qti-graphic-gap-match-interaction")],De);var rr=g`
592
570
  slot:not([name='prompt']) {
593
571
  position: relative; /* qti-hotspot-choice relative to the slot */
594
572
  display: block;
@@ -599,11 +577,11 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
599
577
  pointer-events: none;
600
578
  user-select: none;
601
579
  }
602
- `;var be=class extends O(h,"qti-hotspot-choice"){constructor(){super(...arguments);this._choiceElements=[]}render(){return so`
580
+ `;var Ve=class extends J(x,"qti-hotspot-choice"){constructor(){super(...arguments);this._choiceElements=[]}render(){return u`
603
581
  <slot name="prompt"></slot>
604
582
  <slot></slot>
605
583
  <div role="alert" id="validationMessage"></div>
606
- `}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(l=>l.getAttribute("identifier")===t),i=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(l=>l.order>0).length>=i){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(l=>!!l.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(l=>(l.order>l.order&&l.order--,l)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,i=r.getAttribute("coords"),l=r.getAttribute("shape"),s=i.split(",").map(a=>parseInt(a));G(l,s,t,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("activate-qti-hotspot-choice",this.setHotspotOrder),this.addEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("activate-qti-hotspot-choice",this.setHotspotOrder),this.removeEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}};be.styles=hr,be=n([oo("qti-graphic-order-interaction")],be);import{html as ao}from"lit";import{customElement as lo}from"lit/decorators.js";import{css as no}from"lit";var fr=no`
584
+ `}setHotspotOrder(e){let{identifier:t}=e.detail,r=this._choiceElements.find(a=>a.getAttribute("identifier")===t),i=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(a=>a.order>0).length>=i){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(a=>!!a.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(a=>(a.order>a.order&&a.order--,a)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(e){let t=this.querySelector("img"),r=e.target,i=r.getAttribute("coords"),a=r.getAttribute("shape"),s=i.split(",").map(l=>parseInt(l));he(a,s,t,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("activate-qti-hotspot-choice",this.setHotspotOrder),this.addEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("activate-qti-hotspot-choice",this.setHotspotOrder),this.removeEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}};Ve.styles=rr,Ve=n([h("qti-graphic-order-interaction")],Ve);var ir=g`
607
585
  slot:not([name='prompt']) {
608
586
  position: relative; /* qti-hotspot-choice relative to the slot */
609
587
  display: block;
@@ -615,13 +593,13 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
615
593
  user-select: none;
616
594
  /* width:100%; */
617
595
  }
618
- `;var ve=class extends O(h,"qti-hotspot-choice"){render(){return ao`
596
+ `;var Ne=class extends J(x,"qti-hotspot-choice"){render(){return u`
619
597
  <slot name="prompt"></slot>
620
598
  <slot></slot>
621
- `}positionHotspotOnRegister(o){let e=this.querySelector("img"),t=o.target,r=t.getAttribute("coords"),i=t.getAttribute("shape"),l=r.split(",").map(s=>parseInt(s));G(i,l,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("unregister-qti-hotspot-choice",this.positionHotspotOnRegister)}};ve.styles=fr,ve=n([lo("qti-hotspot-interaction")],ve);import{html as ye,nothing as fo}from"lit";import{customElement as go,property as br,state as vr}from"lit/decorators.js";import{unsafeHTML as yr}from"lit/directives/unsafe-html.js";import{css as co,html as po,LitElement as uo}from"lit";import{customElement as mo,property as At}from"lit/decorators.js";var z=class extends M(uo,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return po`
599
+ `}positionHotspotOnRegister(o){let e=this.querySelector("img"),t=o.target,r=t.getAttribute("coords"),i=t.getAttribute("shape"),a=r.split(",").map(s=>parseInt(s));he(i,a,e,t)}connectedCallback(){super.connectedCallback(),this.addEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("unregister-qti-hotspot-choice",this.positionHotspotOnRegister)}};Ne.styles=ir,Ne=n([h("qti-hotspot-interaction")],Ne);var ee=class extends V(v,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return u`
622
600
  <slot part="slot"></slot>
623
601
  <slot part="dropslot" name="qti-simple-associable-choice"></slot>
624
- `}};z.styles=co`
602
+ `}};ee.styles=g`
625
603
  :host {
626
604
  display: flex;
627
605
  user-select: none;
@@ -633,7 +611,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
633
611
  slot[name='qti-simple-associable-choice'] {
634
612
  width: 100%;
635
613
  }
636
- `,n([At({type:Number,attribute:"match-min"})],z.prototype,"matchMin",2),n([At({type:Number,attribute:"match-max"})],z.prototype,"matchMax",2),n([At({type:Boolean,attribute:"fixed"})],z.prototype,"fixed",2),z=n([mo("qti-simple-associable-choice")],z);import{css as ho}from"lit";var gr=ho`
614
+ `,n([d({type:Number,attribute:"match-min"})],ee.prototype,"matchMin",2),n([d({type:Number,attribute:"match-max"})],ee.prototype,"matchMax",2),n([d({type:Boolean,attribute:"fixed"})],ee.prototype,"fixed",2),ee=n([h("qti-simple-associable-choice")],ee);var sr=g`
637
615
  slot:not([hidden]) {
638
616
  /* slot where the */
639
617
  display: flex;
@@ -660,37 +638,37 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
660
638
  /* Make sure the drag and drop container slots have the same width */
661
639
  flex: 1;
662
640
  }
663
- `;var N=class extends L(h,"qti-simple-match-set:first-of-type qti-simple-associable-choice, qti-simple-match-set:last-of-type > qti-simple-associable-choice > qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice","qti-simple-match-set:first-of-type"){constructor(){super(...arguments);this.lastCheckedRadio=null;this.class="";this._response=[];this.responseIdentifier="";this.correctOptions=[];this.handleRadioClick=e=>{let t=e.target;this.lastCheckedRadio===t?(t.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=t};this.handleRadioChange=e=>{let t=e.target,r=t.value,i=t.name,l=t.type;t.checked?(this.value?this.value.indexOf(r)===-1&&(l==="radio"&&(this.value=this.value.filter(s=>s.indexOf(i)===-1)),this.value=[...this.value,r]):this.value=[r],this.lastCheckedRadio=t):(this.value=this.value.filter(s=>s!==r),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.value)?[...this.value]:this.value}}))}}get value(){return this.classList.contains("qti-match-tabular")?this._response:super.value}set value(e){this.classList.contains("qti-match-tabular")?this._response=e:super.value=e}async connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.value=[]}set correctResponse(e){if(e===""){this.correctOptions=[];return}else Array.isArray(e)&&(this.correctOptions=e)}render(){let e=this.class.split(" ").includes("qti-match-tabular");return ye`
641
+ `;var Y=class extends O(x,"qti-simple-match-set:first-of-type qti-simple-associable-choice, qti-simple-match-set:last-of-type > qti-simple-associable-choice > qti-simple-associable-choice","qti-simple-match-set:last-of-type > qti-simple-associable-choice","qti-simple-match-set:first-of-type"){constructor(){super(...arguments);this.lastCheckedRadio=null;this.class="";this._response=[];this.responseIdentifier="";this.correctOptions=[];this.handleRadioClick=e=>{let t=e.target;this.lastCheckedRadio===t?(t.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=t};this.handleRadioChange=e=>{let t=e.target,r=t.value,i=t.name,a=t.type;t.checked?(this.value?this.value.indexOf(r)===-1&&(a==="radio"&&(this.value=this.value.filter(s=>s.indexOf(i)===-1)),this.value=[...this.value,r]):this.value=[r],this.lastCheckedRadio=t):(this.value=this.value.filter(s=>s!==r),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.value)?[...this.value]:this.value}}))}}get value(){return this.classList.contains("qti-match-tabular")?this._response:super.value}set value(e){this.classList.contains("qti-match-tabular")?this._response=e:super.value=e}async connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.value=[]}set correctResponse(e){if(e===""){this.correctOptions=[];return}else Array.isArray(e)&&(this.correctOptions=e)}render(){let e=this.class.split(" ").includes("qti-match-tabular");return u`
664
642
  <slot name="prompt"></slot>
665
643
  <slot ?hidden=${e}></slot>
666
644
 
667
- ${e?ye`
645
+ ${e?u`
668
646
  <table>
669
647
  <tr>
670
648
  <td></td>
671
- ${this.cols.map(t=>ye`<th part="r-header">${yr(t.innerHTML)}</th>`)}
649
+ ${this.cols.map(t=>u`<th part="r-header">${Z(t.innerHTML)}</th>`)}
672
650
  </tr>
673
651
 
674
- ${this.rows.map(t=>ye`<tr>
675
- <td part="c-header">${yr(t.innerHTML)}</td>
676
- ${this.cols.map(r=>{let i=t.getAttribute("identifier"),l=r.getAttribute("identifier"),s=`${i} ${l}`,a=this.value.filter(m=>m.split(" ")[0]===i).length||0,p=this.value.includes(s),d=`rb ${p?"rb-checked":""} ${this.correctOptions.includes(s)?"rb-correct":""}`,u=this.correctOptions.length>0?!0:t.matchMax===1?!1:a>=t.matchMax&&!p;return ye`<td>
652
+ ${this.rows.map(t=>u`<tr>
653
+ <td part="c-header">${Z(t.innerHTML)}</td>
654
+ ${this.cols.map(r=>{let i=t.getAttribute("identifier"),a=r.getAttribute("identifier"),s=`${i} ${a}`,l=this.value.filter(b=>b.split(" ")[0]===i).length||0,p=this.value.includes(s),m=`rb ${p?"rb-checked":""} ${this.correctOptions.includes(s)?"rb-correct":""}`,f=this.correctOptions.length>0?!0:t.matchMax===1?!1:l>=t.matchMax&&!p;return u`<td>
677
655
  <input
678
656
  type=${t.matchMax===1?"radio":"checkbox"}
679
- part=${d}
657
+ part=${m}
680
658
  name=${i}
681
659
  value=${s}
682
- .disabled=${u}
683
- @change=${m=>this.handleRadioChange(m)}
684
- @click=${m=>t.matchMax===1?this.handleRadioClick(m):null}
660
+ .disabled=${f}
661
+ @change=${b=>this.handleRadioChange(b)}
662
+ @click=${b=>t.matchMax===1?this.handleRadioClick(b):null}
685
663
  />
686
664
  </td>`})}
687
665
  </tr>`)}
688
666
  </table>
689
- `:fo}
667
+ `:L}
690
668
 
691
669
  <div role="alert" id="validationMessage"></div>
692
- `}};N.styles=gr,n([br({type:String})],N.prototype,"class",2),n([vr()],N.prototype,"_response",2),n([br({type:String,attribute:"response-identifier"})],N.prototype,"responseIdentifier",2),n([vr()],N.prototype,"correctOptions",2),N=n([go("qti-match-interaction")],N);import{css as bo,html as vo}from"lit";import{customElement as yo}from"lit/decorators.js";var xe=class extends h{constructor(){super();this._value=0}reset(){}validate(){return!0}get value(){return this._value.toString()}set value(e){if(!isNaN(parseInt(e.toString())))this._value=parseInt(e.toString());else throw new Error("Value must be a number")}static get properties(){return{...h.properties,step:{type:Number,attribute:"step",default:10}}}render(){return vo` <slot name="prompt"></slot>
693
- <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this._value++,this.saveResponse(this.value)})}};xe.styles=[bo``],xe=n([yo("qti-media-interaction")],xe);import{html as Er}from"lit";import{customElement as Eo,property as Co,state as kt}from"lit/decorators.js";import{unsafeHTML as qo}from"lit/directives/unsafe-html.js";import{css as xo}from"lit";var xr=xo`
670
+ `}};Y.styles=sr,n([d({type:String})],Y.prototype,"class",2),n([C()],Y.prototype,"_response",2),n([d({type:String,attribute:"response-identifier"})],Y.prototype,"responseIdentifier",2),n([C()],Y.prototype,"correctOptions",2),Y=n([h("qti-match-interaction")],Y);var He=class extends x{constructor(){super();this._value=0}reset(){}validate(){return!0}get value(){return this._value.toString()}set value(e){if(!isNaN(parseInt(e.toString())))this._value=parseInt(e.toString());else throw new Error("Value must be a number")}static get properties(){return{...x.properties,step:{type:Number,attribute:"step",default:10}}}render(){return u` <slot name="prompt"></slot>
671
+ <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this._value++,this.saveResponse(this.value)})}};He.styles=[g``],He=n([h("qti-media-interaction")],He);var or=g`
694
672
  [part='drags'] {
695
673
  display: flex;
696
674
  align-items: flex-start;
@@ -739,13 +717,13 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
739
717
  :host(.qti-choices-right) [part='container'] {
740
718
  flex-direction: row-reverse;
741
719
  }
742
- `;var $=class extends Oe(L(h,"qti-simple-choice","drop-list","slot[part='drags']"),"qti-simple-choice"){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),Er` <slot name="prompt"> </slot>
720
+ `;var U=class extends Je(O(x,"qti-simple-choice","drop-list","slot[part='drags']"),"qti-simple-choice"){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),u` <slot name="prompt"> </slot>
743
721
  <div part="container">
744
722
  <slot part="drags"> </slot>
745
723
  <div part="drops">
746
- ${Array.from(Array(this.nrChoices)).map((t,r)=>Er`<drop-list part="drop-list" identifier="droplist${r}"></drop-list>${this.showCorrectResponses&&this.correctResponses.length>r?qo(`<span part='correct-response'>${this.correctResponses[r]}</span>`):""}`)}
724
+ ${Array.from(Array(this.nrChoices)).map((t,r)=>u`<drop-list part="drop-list" identifier="droplist${r}"></drop-list>${this.showCorrectResponses&&this.correctResponses.length>r?Z(`<span part='correct-response'>${this.correctResponses[r]}</span>`):""}`)}
747
725
  </div>
748
- </div>`}set correctResponse(e){if(e===""){this.showCorrectResponses=!1;return}this.correctResponses.length===0&&(Array.isArray(e)?e:[e]).forEach(r=>{let i=this.querySelector(`qti-simple-choice[identifier="${r}"]`);i||(i=this.shadowRoot.querySelector(`qti-simple-choice[identifier="${r}"]`));let l=i?.textContent.trim();this.correctResponses=[...this.correctResponses,l]}),this.showCorrectResponses=!0}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(r=>{let i=r.querySelectorAll('[qti-draggable="true"]');return[...Array.from(i).map(s=>s.getAttribute("identifier"))].join(" ")})}async firstUpdated(e){super.firstUpdated(e),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(t=>t.setAttribute("part","qti-simple-choice"))}};$.styles=xr,n([kt()],$.prototype,"nrChoices",2),n([kt()],$.prototype,"correctResponses",2),n([kt()],$.prototype,"showCorrectResponses",2),n([Co({type:String})],$.prototype,"orientation",2),$=n([Eo("qti-order-interaction")],$);import{LitElement as To,css as wo,html as Mo}from"lit";var Ge=class extends To{render(){return Mo`<slot></slot>`}};Ge.styles=[wo`
726
+ </div>`}set correctResponse(e){if(e===""){this.showCorrectResponses=!1;return}this.correctResponses.length===0&&(Array.isArray(e)?e:[e]).forEach(r=>{let i=this.querySelector(`qti-simple-choice[identifier="${r}"]`);i||(i=this.shadowRoot.querySelector(`qti-simple-choice[identifier="${r}"]`));let a=i?.textContent.trim();this.correctResponses=[...this.correctResponses,a]}),this.showCorrectResponses=!0}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(r=>{let i=r.querySelectorAll('[qti-draggable="true"]');return[...Array.from(i).map(s=>s.getAttribute("identifier"))].join(" ")})}async firstUpdated(e){super.firstUpdated(e),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(t=>t.setAttribute("part","qti-simple-choice"))}};U.styles=or,n([C()],U.prototype,"nrChoices",2),n([C()],U.prototype,"correctResponses",2),n([C()],U.prototype,"showCorrectResponses",2),n([d({type:String})],U.prototype,"orientation",2),U=n([h("qti-order-interaction")],U);var nt=class extends v{render(){return u`<slot></slot>`}};nt.styles=[g`
749
727
  :host {
750
728
  display: block;
751
729
  }
@@ -756,23 +734,23 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
756
734
  left: 50%;
757
735
  transform: translateX(-50%);
758
736
  }
759
- `];customElements.define("qti-position-object-interaction",Ge);import{LitElement as So,css as Ro,html as Ao}from"lit";import{customElement as ko}from"lit/decorators.js";var Ee=class extends So{render(){return Ao`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(o){o.preventDefault();let e=o.clientX-this.startX,t=o.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+t+"px",this.startX=o.clientX,this.startY=o.clientY}firstUpdated(o){super.firstUpdated(o),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};Ee.styles=[Ro`
737
+ `];customElements.define("qti-position-object-interaction",nt);var $e=class extends v{render(){return u`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(o){o.preventDefault();let e=o.clientX-this.startX,t=o.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+t+"px",this.startX=o.clientX,this.startY=o.clientY}firstUpdated(o){super.firstUpdated(o),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};$e.styles=[g`
760
738
  :host {
761
739
  display: inline-block;
762
740
  position: relative;
763
741
  }
764
- `],Ee=n([ko("qti-position-object-stage")],Ee);import{css as Lo,html as Cr}from"lit";import{customElement as _o,property as qr,state as Do}from"lit/decorators.js";import{repeat as Vo}from"lit/directives/repeat.js";import{styleMap as Ho}from"lit/directives/style-map.js";var U=class extends h{constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this._points=[];this._imgElement=null;this._onImageClick=e=>{if(this._points.length<this.maxChoices){let t=e.offsetX,r=e.offsetY;this._points=[...this._points,`${t} ${r}`],this.saveResponse(this._points)}}}render(){return Cr` <slot name="prompt"></slot>
742
+ `],$e=n([h("qti-position-object-stage")],$e);var nr="important",mr=" !"+nr,ar=j(class extends le{constructor(c){if(super(c),c.type!==ae.ATTRIBUTE||c.name!=="style"||c.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(c){return Object.keys(c).reduce((o,e)=>{let t=c[e];return t==null?o:o+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${t};`},"")}update(c,[o]){let{style:e}=c.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(o)),this.render(o);for(let t of this.ft)o[t]==null&&(this.ft.delete(t),t.includes("-")?e.removeProperty(t):e[t]=null);for(let t in o){let r=o[t];if(r!=null){this.ft.add(t);let i=typeof r=="string"&&r.endsWith(mr);t.includes("-")||i?e.setProperty(t,i?r.slice(0,-11):r,i?nr:""):e[t]=r}}return oe}});var te=class extends x{constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this._points=[];this._imgElement=null;this._onImageClick=e=>{if(this._points.length<this.maxChoices){let t=e.offsetX,r=e.offsetY;this._points=[...this._points,`${t} ${r}`],this.saveResponse(this._points)}}}render(){return u` <slot name="prompt"></slot>
765
743
  <point-container>
766
- ${Vo(this._points,e=>e,(e,t)=>Cr`
744
+ ${ot(this._points,e=>e,(e,t)=>u`
767
745
  <button
768
746
  part="point"
769
- style=${Ho({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
747
+ style=${ar({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
770
748
  aria-label="Remove point at ${e}"
771
- @click=${r=>{r.stopPropagation(),this._points=this._points.filter((i,l)=>l!==t),this.saveResponse(this._points)}}
749
+ @click=${r=>{r.stopPropagation(),this._points=this._points.filter((i,a)=>a!==t),this.saveResponse(this._points)}}
772
750
  ></button>
773
751
  `)}
774
752
  <slot></slot>
775
- </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set value(e){this._points=Array.isArray(e)?e:[e]}get value(){return this._points}firstUpdated(){this._imgElement=this.querySelector("img"),this._imgElement?this._imgElement.addEventListener("click",this._onImageClick):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),this._imgElement&&this._imgElement.removeEventListener("click",this._onImageClick)}};U.styles=[Lo`
753
+ </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set value(e){this._points=Array.isArray(e)?e:[e]}get value(){return this._points}firstUpdated(){this._imgElement=this.querySelector("img"),this._imgElement?this._imgElement.addEventListener("click",this._onImageClick):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),this._imgElement&&this._imgElement.removeEventListener("click",this._onImageClick)}};te.styles=[g`
776
754
  :host {
777
755
  display: block;
778
756
  }
@@ -780,7 +758,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
780
758
  display: block;
781
759
  position: relative;
782
760
  }
783
- `],n([qr({type:Number,attribute:"max-choices"})],U.prototype,"maxChoices",2),n([qr({type:Number,attribute:"min-choices"})],U.prototype,"minChoices",2),n([Do()],U.prototype,"_points",2),U=n([_o("qti-select-point-interaction")],U);import{html as $o,LitElement as Io}from"lit";import{customElement as Oo,property as Lt,query as Po}from"lit/decorators.js";import{css as No}from"lit";var Tr=No`
761
+ `],n([d({type:Number,attribute:"max-choices"})],te.prototype,"maxChoices",2),n([d({type:Number,attribute:"min-choices"})],te.prototype,"minChoices",2),n([C()],te.prototype,"_points",2),te=n([h("qti-select-point-interaction")],te);var lr=g`
784
762
  :host {
785
763
  display: block;
786
764
  --show-bounds: true;
@@ -848,7 +826,7 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
848
826
  text-align: center;
849
827
  color: #6b7280; /* text-gray-500 */
850
828
  }
851
- `;var _=class extends Io{constructor(){super();this._value=0;this.min=0;this.max=100;this.step=1;this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this._updateValue(this.min),this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}get value(){return this._value.toString()}set value(e){let t=parseInt(e,10);isNaN(t)||this._updateValue(t)}_updateValue(e){this._value=Math.min(this.max,Math.max(this.min,e));let t=(this._value-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage",`${t}%`),this._internals.setFormValue(this.value),this.requestUpdate()}render(){return $o`
829
+ `;var P=class extends v{constructor(){super();this._value=0;this.min=0;this.max=100;this.step=1;this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this._updateValue(this.min),this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}get value(){return this._value.toString()}set value(e){let t=parseInt(e,10);isNaN(t)||this._updateValue(t)}_updateValue(e){this._value=Math.min(this.max,Math.max(this.min,e));let t=(this._value-this.min)/(this.max-this.min)*100;this.style.setProperty("--value-percentage",`${t}%`),this._internals.setFormValue(this.value),this.requestUpdate()}render(){return u`
852
830
  <slot name="prompt"></slot>
853
831
  <div id="slider" part="slider">
854
832
  <div id="bounds" part="bounds">
@@ -862,49 +840,49 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
862
840
  <div id="knob" part="knob"><div id="value" part="value">${this.value}</div></div>
863
841
  </div>
864
842
  </div>
865
- `}_onMouseDown(e){this._startDrag(e.pageX);let t=i=>this._onDrag(i.pageX),r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this._onDragEnd()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r)}_onTouchStart(e){this._startDrag(e.touches[0].pageX);let t=i=>this._onDrag(i.touches[0].pageX),r=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r),this._onDragEnd()};document.addEventListener("touchmove",t,{passive:!1}),document.addEventListener("touchend",r)}_startDrag(e){this._onDrag(e)}_onDrag(e){let t=this._rail.getBoundingClientRect(),r=e-t.left,i=Math.min(1,Math.max(0,r/t.width)),l=this.min+Math.round(i*(this.max-this.min)/this.step)*this.step;this._updateValue(l)}_onDragEnd(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};_.formAssociated=!0,_.styles=Tr,n([Po("#rail")],_.prototype,"_rail",2),n([Lt({type:Number,attribute:"lower-bound"})],_.prototype,"min",2),n([Lt({type:Number,attribute:"upper-bound"})],_.prototype,"max",2),n([Lt({type:Number,attribute:"step"})],_.prototype,"step",2),_=n([Oo("qti-slider-interaction")],_);import{consume as Fo}from"@lit/context";import{LitElement as zo,html as Uo}from"lit";import{customElement as Xo,state as Bo}from"lit/decorators.js";var Ce=class extends zo{render(){return Uo`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let o=Array.from(this.firstElementChild?.childNodes??[]).find(e=>e.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","fn","item",o?.textContent??"")}catch(e){console.error("custom-operator contains invalid javascript code",e)}}calculate(){let o={variable:t=>this._context?.variables.find(r=>r.identifier===t)?.value??"",correct:t=>this._context?.variables.find(r=>r.identifier===t)?.correctResponse??""},e={getVariable:t=>this._context?.variables.find(r=>r.identifier===t),updateOutcomeVariable:(t,r)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:t,value:r}}))},updateResponseVariable:(t,r)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:t,response:r}}))}};return this.operatorFunction(this._context,o,e)}};n([Fo({context:y,subscribe:!0}),Bo()],Ce.prototype,"_context",2),Ce=n([Xo("qti-custom-operator")],Ce);import{LitElement as Yo,css as Wo,html as jo}from"lit";import{customElement as Ko}from"lit/decorators.js";var qe=class extends Yo{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,composed:!0,cancelable:!1}))}render(){return jo` <slot name="drags"></slot> `}};qe.styles=Wo`
843
+ `}_onMouseDown(e){this._startDrag(e.pageX);let t=i=>this._onDrag(i.pageX),r=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",r),this._onDragEnd()};document.addEventListener("mousemove",t),document.addEventListener("mouseup",r)}_onTouchStart(e){this._startDrag(e.touches[0].pageX);let t=i=>this._onDrag(i.touches[0].pageX),r=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",r),this._onDragEnd()};document.addEventListener("touchmove",t,{passive:!1}),document.addEventListener("touchend",r)}_startDrag(e){this._onDrag(e)}_onDrag(e){let t=this._rail.getBoundingClientRect(),r=e-t.left,i=Math.min(1,Math.max(0,r/t.width)),a=this.min+Math.round(i*(this.max-this.min)/this.step)*this.step;this._updateValue(a)}_onDragEnd(){this.dispatchEvent(new Event("change",{bubbles:!0}))}};P.formAssociated=!0,P.styles=lr,n([ze("#rail")],P.prototype,"_rail",2),n([d({type:Number,attribute:"lower-bound"})],P.prototype,"min",2),n([d({type:Number,attribute:"upper-bound"})],P.prototype,"max",2),n([d({type:Number,attribute:"step"})],P.prototype,"step",2),P=n([h("qti-slider-interaction")],P);var Ie=class extends v{render(){return u`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(){let o=Array.from(this.firstElementChild?.childNodes??[]).find(e=>e.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","fn","item",o?.textContent??"")}catch(e){console.error("custom-operator contains invalid javascript code",e)}}calculate(){let o={variable:t=>this._context?.variables.find(r=>r.identifier===t)?.value??"",correct:t=>this._context?.variables.find(r=>r.identifier===t)?.correctResponse??""},e={getVariable:t=>this._context?.variables.find(r=>r.identifier===t),updateOutcomeVariable:(t,r)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:t,value:r}}))},updateResponseVariable:(t,r)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:t,response:r}}))}};return this.operatorFunction(this._context,o,e)}};n([k({context:w,subscribe:!0}),C()],Ie.prototype,"_context",2),Ie=n([h("qti-custom-operator")],Ie);var Oe=class extends v{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,composed:!0,cancelable:!1}))}render(){return u` <slot name="drags"></slot> `}};Oe.styles=g`
866
844
  :host {
867
845
  display: flex;
868
846
  user-select: none;
869
847
  position: absolute;
870
848
  }
871
- `,qe=n([Ko("qti-associable-hotspot")],qe);import{css as Jo,html as Go,LitElement as Zo}from"lit";import{customElement as Qo,property as en}from"lit/decorators.js";var Z=class extends Zo{constructor(){super(...arguments);this.tabindex=0}render(){return Go` <slot name="drags"></slot>`}};Z.styles=Jo`
849
+ `,Oe=n([h("qti-associable-hotspot")],Oe);var me=class extends v{constructor(){super(...arguments);this.tabindex=0}render(){return u` <slot name="drags"></slot>`}};me.styles=g`
872
850
  :host {
873
851
  display: flex;
874
852
  user-select: none;
875
853
  }
876
- `,n([en({type:Number,reflect:!0})],Z.prototype,"tabindex",2),Z=n([Qo("qti-gap")],Z);import{css as tn,LitElement as rn}from"lit";import{customElement as sn,property as on}from"lit/decorators.js";var Q=class extends rn{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","drags")}};Q.styles=tn`
854
+ `,n([d({type:Number,reflect:!0})],me.prototype,"tabindex",2),me=n([h("qti-gap")],me);var fe=class extends v{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","drags")}};fe.styles=g`
877
855
  :host {
878
856
  display: flex;
879
857
  user-select: none;
880
858
  }
881
- `,n([on({type:Number,reflect:!0})],Q.prototype,"tabindex",2),Q=n([sn("qti-gap-img")],Q);import{css as nn,html as an,LitElement as ln}from"lit";import{customElement as cn,property as pn}from"lit/decorators.js";var ee=class extends M(ln,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","drags")}render(){return an`<slot></slot>`}};ee.styles=nn`
859
+ `,n([d({type:Number,reflect:!0})],fe.prototype,"tabindex",2),fe=n([h("qti-gap-img")],fe);var ge=class extends V(v,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","drags")}render(){return u`<slot></slot>`}};ge.styles=g`
882
860
  :host {
883
861
  display: inline-flex;
884
862
  user-select: none;
885
863
  }
886
- `,n([pn({type:Number,reflect:!0})],ee.prototype,"tabindex",2),ee=n([cn("qti-gap-text")],ee);import{css as dn,LitElement as un}from"lit";import{customElement as mn,property as hn}from"lit/decorators.js";var te=class extends M(un,"qti-hotspot-choice"){};te.styles=dn`
864
+ `,n([d({type:Number,reflect:!0})],ge.prototype,"tabindex",2),ge=n([h("qti-gap-text")],ge);var be=class extends V(v,"qti-hotspot-choice"){};be.styles=g`
887
865
  :host {
888
866
  display: flex;
889
867
  user-select: none;
890
868
  position: absolute;
891
869
  }
892
- `,n([hn({attribute:"aria-ordervalue",type:Number,reflect:!0})],te.prototype,"order",2),te=n([mn("qti-hotspot-choice")],te);import{css as fn,html as gn,LitElement as bn}from"lit";import{customElement as vn}from"lit/decorators.js";var Te=class extends M(bn,"qti-hottext"){render(){return gn`<div part="ch"><div part="cha"></div></div>
893
- <slot></slot> `}};Te.styles=fn`
870
+ `,n([d({attribute:"aria-ordervalue",type:Number,reflect:!0})],be.prototype,"order",2),be=n([h("qti-hotspot-choice")],be);var Pe=class extends V(v,"qti-hottext"){render(){return u`<div part="ch"><div part="cha"></div></div>
871
+ <slot></slot> `}};Pe.styles=g`
894
872
  :host {
895
873
  display: flex;
896
874
  user-select: none;
897
875
  }
898
- `,Te=n([vn("qti-hottext")],Te);import{css as yn,html as xn,LitElement as En}from"lit";import{customElement as Cn,property as qn}from"lit/decorators.js";var we=class extends En{static get styles(){return[yn`
876
+ `,Pe=n([h("qti-hottext")],Pe);var Fe=class extends v{static get styles(){return[g`
899
877
  :host {
900
878
  display: block;
901
879
  cursor: pointer;
902
880
  }
903
- `]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onSelectInlineChoice),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,composed:!0,cancelable:!1}))}disconnectedCallback(){this.removeEventListener("click",this._onSelectInlineChoice)}render(){return xn` <slot></slot> `}_onSelectInlineChoice(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};n([qn({type:String})],we.prototype,"identifier",2),we=n([Cn("qti-inline-choice")],we);import{css as Tn,html as wr,LitElement as wn,nothing as Mn}from"lit";import{customElement as Sn,property as Rn}from"lit/decorators.js";var re=class extends M(wn,"qti-simple-choice"){get checked(){return this.internals.states.has("--checked")}render(){return wr`<div part="ch">
881
+ `]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onSelectInlineChoice),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,composed:!0,cancelable:!1}))}disconnectedCallback(){this.removeEventListener("click",this._onSelectInlineChoice)}render(){return u` <slot></slot> `}_onSelectInlineChoice(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};n([d({type:String})],Fe.prototype,"identifier",2),Fe=n([h("qti-inline-choice")],Fe);var ve=class extends V(v,"qti-simple-choice"){get checked(){return this.internals.states.has("--checked")}render(){return u`<div part="ch">
904
882
  <div part="cha"></div>
905
883
  </div>
906
- ${this.marker?wr`<div id="label">${this.marker}</div>`:Mn}
907
- <slot part="slot"></slot> `}};re.styles=Tn`
884
+ ${this.marker?u`<div id="label">${this.marker}</div>`:L}
885
+ <slot part="slot"></slot> `}};ve.styles=g`
908
886
  :host {
909
887
  display: flex;
910
888
  align-items: center;
@@ -921,4 +899,41 @@ var Rr=Object.defineProperty;var Ar=Object.getOwnPropertyDescriptor;var n=(c,o,e
921
899
  align-items: center;
922
900
  justify-content: center;
923
901
  }
924
- `,n([Rn({type:String,attribute:!1})],re.prototype,"marker",2),re=n([Sn("qti-simple-choice")],re);export{M as ActiveElementMixin,h as Interaction,Fe as QtiAnd,E as QtiAssessmentItem,W as QtiAssessmentStimulusRef,qe as QtiAssociableHotspot,J as QtiAssociateInteraction,ze as QtiBaseValue,j as QtiChoiceInteraction,De as QtiCompanionMaterialsInfo,T as QtiConditionExpression,ct as QtiContains,Ve as QtiContentBody,pt as QtiCorrect,V as QtiCustomInteraction,Ce as QtiCustomOperator,F as QtiEndAttemptInteraction,Xe as QtiEqual,Ue as QtiEqualRounded,f as QtiExpression,q as QtiExtendedTextInteraction,ne as QtiFeedbackBlock,ae as QtiFeedbackInline,Z as QtiGap,Q as QtiGapImg,fe as QtiGapMatchInteraction,ee as QtiGapText,H as QtiGraphicAssociateInteraction,ge as QtiGraphicGapMatchInteraction,be as QtiGraphicOrderInteraction,dt as QtiGt,ut as QtiGte,te as QtiHotspotChoice,ve as QtiHotspotInteraction,Te as QtiHottext,Ie as QtiHottextInteraction,we as QtiInlineChoice,P as QtiInlineChoiceInteraction,mt as QtiIsNull,ie as QtiItemBody,Pe as QtiLookupOutcomeValue,ht as QtiLt,ft as QtiLte,Be as QtiMapResponse,K as QtiMapping,bt as QtiMatch,N as QtiMatchInteraction,xe as QtiMediaInteraction,vt as QtiMember,le as QtiModalFeedback,yt as QtiMultiple,xt as QtiNot,Et as QtiOr,$ as QtiOrderInteraction,Ct as QtiOrdered,S as QtiOutcomeDeclaration,de as QtiOutcomeProcessing,st as QtiOutcomeProcessingProcessor,B as QtiPortableCustomInteraction,Ge as QtiPositionObjectInteraction,Ee as QtiPositionObjectStage,he as QtiPrintedVariable,qt as QtiProduct,ke as QtiPrompt,ot as QtiResponseCondition,D as QtiResponseDeclaration,ue as QtiResponseElse,lt as QtiResponseElseIf,me as QtiResponseIf,X as QtiResponseProcessing,R as QtiRubricBlock,k as QtiRule,U as QtiSelectPointInteraction,nt as QtiSetOutcomeValue,at as QtiSetOutcomeValueRule,z as QtiSimpleAssociableChoice,re as QtiSimpleChoice,_ as QtiSliderInteraction,We as QtiStringMatch,Le as QtiStylesheet,Ye as QtiSubtract,Tt as QtiSum,wt as QtiSumExpression,A as QtiTextEntryInteraction,pe as QtiUploadInteraction,Mt as QtiVariable,y as itemContext,Dt as itemContextVariables,Cs as qtiAndMixin,Vs as qtiSubtractMixin};
902
+ `,n([d({type:String,attribute:!1})],ve.prototype,"marker",2),ve=n([h("qti-simple-choice")],ve);export{V as ActiveElementMixin,x as Interaction,Ge as QtiAnd,S as QtiAssessmentItem,ce as QtiAssessmentStimulusRef,Oe as QtiAssociableHotspot,ue as QtiAssociateInteraction,Qe as QtiBaseValue,pe as QtiChoiceInteraction,je as QtiCompanionMaterialsInfo,A as QtiConditionExpression,gt as QtiContains,We as QtiContentBody,bt as QtiCorrect,z as QtiCustomInteraction,Ie as QtiCustomOperator,Q as QtiEndAttemptInteraction,tt as QtiEqual,et as QtiEqualRounded,E as QtiExpression,_ as QtiExtendedTextInteraction,qe as QtiFeedbackBlock,Te as QtiFeedbackInline,me as QtiGap,fe as QtiGapImg,Ae as QtiGapMatchInteraction,ge as QtiGapText,B as QtiGraphicAssociateInteraction,De as QtiGraphicGapMatchInteraction,Ve as QtiGraphicOrderInteraction,vt as QtiGt,yt as QtiGte,be as QtiHotspotChoice,Ne as QtiHotspotInteraction,Pe as QtiHottext,Ke as QtiHottextInteraction,Fe as QtiInlineChoice,G as QtiInlineChoiceInteraction,xt as QtiIsNull,xe as QtiItemBody,Ze as QtiLookupOutcomeValue,Et as QtiLt,Ct as QtiLte,rt as QtiMapResponse,de as QtiMapping,qt as QtiMatch,Y as QtiMatchInteraction,He as QtiMediaInteraction,Tt as QtiMember,we as QtiModalFeedback,wt as QtiMultiple,Mt as QtiNot,St as QtiOr,U as QtiOrderInteraction,Rt as QtiOrdered,N as QtiOutcomeDeclaration,Re as QtiOutcomeProcessing,dt as QtiOutcomeProcessingProcessor,se as QtiPortableCustomInteraction,nt as QtiPositionObjectInteraction,$e as QtiPositionObjectStage,Le as QtiPrintedVariable,_t as QtiProduct,Ue as QtiPrompt,ut as QtiResponseCondition,F as QtiResponseDeclaration,_e as QtiResponseElse,ft as QtiResponseElseIf,ke as QtiResponseIf,ie as QtiResponseProcessing,H as QtiRubricBlock,I as QtiRule,te as QtiSelectPointInteraction,ht as QtiSetOutcomeValue,mt as QtiSetOutcomeValueRule,ee as QtiSimpleAssociableChoice,ve as QtiSimpleChoice,P as QtiSliderInteraction,st as QtiStringMatch,Xe as QtiStylesheet,it as QtiSubtract,kt as QtiSum,Lt as QtiSumExpression,$ as QtiTextEntryInteraction,Se as QtiUploadInteraction,At as QtiVariable,w as itemContext,Ot as itemContextVariables,ur as qtiAndMixin,hr as qtiSubtractMixin};
903
+ /*! Bundled license information:
904
+
905
+ lit-html/node/directives/if-defined.js:
906
+ (**
907
+ * @license
908
+ * Copyright 2018 Google LLC
909
+ * SPDX-License-Identifier: BSD-3-Clause
910
+ *)
911
+
912
+ lit-html/node/directives/ref.js:
913
+ (**
914
+ * @license
915
+ * Copyright 2020 Google LLC
916
+ * SPDX-License-Identifier: BSD-3-Clause
917
+ *)
918
+
919
+ lit-html/node/directives/unsafe-html.js:
920
+ (**
921
+ * @license
922
+ * Copyright 2017 Google LLC
923
+ * SPDX-License-Identifier: BSD-3-Clause
924
+ *)
925
+
926
+ lit-html/node/directives/repeat.js:
927
+ (**
928
+ * @license
929
+ * Copyright 2017 Google LLC
930
+ * SPDX-License-Identifier: BSD-3-Clause
931
+ *)
932
+
933
+ lit-html/node/directives/style-map.js:
934
+ (**
935
+ * @license
936
+ * Copyright 2018 Google LLC
937
+ * SPDX-License-Identifier: BSD-3-Clause
938
+ *)
939
+ */