@citolab/qti-components 7.0.8 → 7.0.9-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/cdn/chunks/chunk-3AHQU35T.js +1 -0
  2. package/cdn/chunks/chunk-4AGTWY6I.js +1 -0
  3. package/cdn/{chunk-A536ZOJJ.js → chunks/chunk-6EIGTAJQ.js} +2 -4
  4. package/cdn/chunks/chunk-6UEXCXHG.js +17 -0
  5. package/cdn/chunks/chunk-BJL2ZC5L.js +1 -0
  6. package/cdn/chunks/chunk-FB3WTNRH.js +8 -0
  7. package/cdn/chunks/chunk-GCKESRQG.js +1 -0
  8. package/{dist/chunks/chunk-NZQKGIJP.js → cdn/chunks/chunk-GVU44M3E.js} +6 -8
  9. package/cdn/chunks/{chunk-SATSEEWJ.js → chunk-I3HQJPKA.js} +84 -84
  10. package/cdn/chunks/chunk-IKDNYCM7.js +1 -0
  11. package/cdn/chunks/chunk-KDO3T66B.js +1 -0
  12. package/cdn/chunks/{chunk-T2KKTMAT.js → chunk-KGVJXME7.js} +84 -84
  13. package/cdn/chunks/chunk-KQPTKMFJ.js +1 -0
  14. package/cdn/chunks/{chunk-4ILXLVT5.js → chunk-LCKLXCUP.js} +6 -18
  15. package/cdn/chunks/chunk-M5PPZ5M3.js +59 -0
  16. package/cdn/chunks/chunk-O5MMIBRR.js +10 -0
  17. package/cdn/chunks/chunk-OEXGDZO2.js +8 -0
  18. package/cdn/chunks/{chunk-RXKI3AO4.js → chunk-R45JL2ZY.js} +1 -1
  19. package/cdn/chunks/chunk-W2VSEYLY.js +8 -0
  20. package/cdn/chunks/chunk-WYDU2FBY.js +8 -0
  21. package/cdn/chunks/chunk-X7T7HK65.js +8 -0
  22. package/cdn/chunks/{chunk-X2KBNXRO.js → chunk-YIYKK4RV.js} +1 -1
  23. package/cdn/exports/computed.context.js +1 -0
  24. package/cdn/exports/config.context.js +1 -0
  25. package/cdn/exports/qti-assessment-item.context.js +1 -1
  26. package/cdn/exports/qti-condition-expression.js +1 -1
  27. package/cdn/exports/qti-expression.js +1 -1
  28. package/cdn/exports/session.context.js +1 -0
  29. package/cdn/exports/test.context.js +1 -0
  30. package/cdn/index.global.js +1 -1
  31. package/cdn/index.js +1 -1
  32. package/cdn/qti-components/index.js +1 -1
  33. package/cdn/qti-item/core/index.js +1 -1
  34. package/cdn/qti-test/components/index.js +1 -1
  35. package/cdn/qti-test/components/test-container.js +1 -3549
  36. package/cdn/qti-test/components/test-end-attempt.js +1 -1
  37. package/cdn/qti-test/components/test-item-link.js +1 -1
  38. package/cdn/qti-test/components/test-navigation.js +1 -0
  39. package/cdn/qti-test/components/test-next.js +1 -1
  40. package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
  41. package/cdn/qti-test/components/test-prev.js +1 -1
  42. package/cdn/qti-test/components/test-show-correct-response.js +1 -1
  43. package/cdn/qti-test/components/test-view.js +1 -1
  44. package/cdn/qti-test/core/index.js +1 -1
  45. package/dist/chunks/chunk-3A4IOMBQ.js +8 -0
  46. package/dist/chunks/chunk-3A4IOMBQ.js.map +1 -0
  47. package/dist/{chunk-2CHF3TMY.js → chunks/chunk-6MW3J6OM.js} +112 -4
  48. package/dist/chunks/chunk-6MW3J6OM.js.map +1 -0
  49. package/dist/chunks/chunk-CBYNKDSF.js +1 -0
  50. package/dist/chunks/{chunk-WWN5AD6V.js → chunk-CHINL5UJ.js} +12 -7
  51. package/dist/chunks/chunk-CHINL5UJ.js.map +1 -0
  52. package/dist/chunks/{chunk-W4272Q5U.js → chunk-CWCYTL3F.js} +18 -8
  53. package/dist/chunks/chunk-CWCYTL3F.js.map +1 -0
  54. package/dist/chunks/{chunk-GQ5P3NWC.js → chunk-FZVLLSCM.js} +18 -8
  55. package/dist/chunks/chunk-FZVLLSCM.js.map +1 -0
  56. package/dist/chunks/chunk-GNCPECOC.js +45 -0
  57. package/dist/chunks/chunk-GNCPECOC.js.map +1 -0
  58. package/dist/chunks/{chunk-YOXF6JPS.js → chunk-GRYVMG5Q.js} +135 -193
  59. package/dist/chunks/chunk-GRYVMG5Q.js.map +1 -0
  60. package/dist/chunks/{chunk-BPHQLJWE.js → chunk-I7HVKMDI.js} +2 -2
  61. package/dist/chunks/chunk-I7HVKMDI.js.map +1 -0
  62. package/dist/chunks/chunk-J4MM4JXS.js +8 -0
  63. package/dist/chunks/chunk-J4MM4JXS.js.map +1 -0
  64. package/dist/chunks/{chunk-FV7HWK54.js → chunk-JUAS2TVR.js} +1 -1
  65. package/dist/chunks/chunk-JUAS2TVR.js.map +1 -0
  66. package/dist/chunks/chunk-K6EUKFNW.js +43 -0
  67. package/dist/chunks/chunk-K6EUKFNW.js.map +1 -0
  68. package/dist/chunks/chunk-LZ7UIV5O.js +91 -0
  69. package/dist/chunks/chunk-LZ7UIV5O.js.map +1 -0
  70. package/dist/chunks/{chunk-J2SHENRN.js → chunk-MDWBTFKL.js} +100 -5
  71. package/dist/chunks/chunk-MDWBTFKL.js.map +1 -0
  72. package/dist/chunks/{chunk-KOEILLVS.js → chunk-NJNQOQUU.js} +1 -1
  73. package/dist/chunks/chunk-NJNQOQUU.js.map +1 -0
  74. package/dist/chunks/{chunk-E4TWZ2DL.js → chunk-NPHDN2TQ.js} +139 -113
  75. package/dist/chunks/chunk-NPHDN2TQ.js.map +1 -0
  76. package/dist/chunks/chunk-ODLYMQOS.js +8 -0
  77. package/dist/chunks/chunk-ODLYMQOS.js.map +1 -0
  78. package/dist/chunks/{chunk-XSI6FXGD.js → chunk-OOQLWOYU.js} +2 -2
  79. package/dist/chunks/{chunk-NHA53UTY.js → chunk-PR6AZWRP.js} +3 -6
  80. package/dist/chunks/chunk-PR6AZWRP.js.map +1 -0
  81. package/dist/chunks/chunk-QAA6MWGE.js +170 -0
  82. package/dist/chunks/chunk-QAA6MWGE.js.map +1 -0
  83. package/dist/chunks/chunk-QTH3WLGY.js +8 -0
  84. package/dist/chunks/chunk-QTH3WLGY.js.map +1 -0
  85. package/dist/chunks/{chunk-DLUJN2FW.js → chunk-W7ZXKJ5O.js} +1 -1
  86. package/dist/chunks/chunk-W7ZXKJ5O.js.map +1 -0
  87. package/dist/chunks/{chunk-OIRWOI3E.js → chunk-WRHEO7NG.js} +1 -1
  88. package/dist/chunks/chunk-WRHEO7NG.js.map +1 -0
  89. package/dist/chunks/chunk-WXART76T.js +95 -0
  90. package/dist/chunks/chunk-WXART76T.js.map +1 -0
  91. package/dist/exports/computed.context.d.ts +30 -0
  92. package/dist/exports/computed.context.js +8 -0
  93. package/dist/exports/config.context.d.ts +8 -0
  94. package/dist/exports/config.context.js +8 -0
  95. package/dist/exports/interaction.js +1 -1
  96. package/dist/exports/item.context.d.ts +2 -2
  97. package/dist/exports/item.context.js +1 -1
  98. package/dist/exports/qti-assessment-item.context.js +1 -1
  99. package/dist/exports/qti-condition-expression.js +3 -3
  100. package/dist/exports/qti-expression.js +2 -2
  101. package/dist/exports/session.context.d.ts +12 -0
  102. package/dist/exports/session.context.js +8 -0
  103. package/dist/exports/test.context.d.ts +16 -0
  104. package/dist/exports/test.context.js +8 -0
  105. package/dist/index.d.ts +9 -4
  106. package/dist/index.js +58 -55
  107. package/dist/qti-components/index.d.ts +2 -2
  108. package/dist/qti-components/index.js +7 -7
  109. package/dist/qti-components-jsx.d.ts +112 -86
  110. package/dist/qti-item/core/index.js +2 -3
  111. package/dist/qti-loader/index.d.ts +1 -1
  112. package/dist/qti-loader/index.js +1 -1
  113. package/dist/{qti-response-declaration-Di9CsqiJ.d.ts → qti-response-declaration-CyOeVboh.d.ts} +2 -2
  114. package/dist/qti-test/components/index.d.ts +10 -4
  115. package/dist/qti-test/components/index.js +28 -19
  116. package/dist/qti-test/components/test-container.d.ts +3 -1
  117. package/dist/qti-test/components/test-container.js +6 -3778
  118. package/dist/qti-test/components/test-container.js.map +1 -1
  119. package/dist/qti-test/components/test-end-attempt.d.ts +4 -11
  120. package/dist/qti-test/components/test-end-attempt.js +3 -5
  121. package/dist/qti-test/components/test-item-link.d.ts +2 -11
  122. package/dist/qti-test/components/test-item-link.js +1 -5
  123. package/dist/qti-test/components/test-navigation.d.ts +35 -0
  124. package/dist/qti-test/components/test-navigation.js +12 -0
  125. package/dist/qti-test/components/test-navigation.js.map +1 -0
  126. package/dist/qti-test/components/test-next.d.ts +12 -12
  127. package/dist/qti-test/components/test-next.js +4 -4
  128. package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +8 -15
  129. package/dist/qti-test/components/test-paging-buttons-stamp.js +2 -5
  130. package/dist/qti-test/components/test-prev.d.ts +11 -12
  131. package/dist/qti-test/components/test-prev.js +4 -4
  132. package/dist/qti-test/components/test-show-correct-response.d.ts +4 -11
  133. package/dist/qti-test/components/test-show-correct-response.js +3 -5
  134. package/dist/qti-test/components/test-view.d.ts +3 -12
  135. package/dist/qti-test/components/test-view.js +2 -4
  136. package/dist/qti-test/core/index.d.ts +18 -48
  137. package/dist/qti-test/core/index.js +7 -12
  138. package/dist/{test.context-C2LBA3w4.d.ts → qti-test-part-zX9tOUbA.d.ts} +17 -33
  139. package/dist/vscode.html-custom-data.json +33 -30
  140. package/package.json +20 -19
  141. package/cdn/chunk-4DFVJE2A.js +0 -48
  142. package/cdn/chunk-4I75QSIL.js +0 -8
  143. package/cdn/chunk-5WCOPF7O.js +0 -73
  144. package/cdn/chunk-66PERJA3.js +0 -939
  145. package/cdn/chunk-6WNSQ7U6.js +0 -939
  146. package/cdn/chunk-AT2C24P4.js +0 -8
  147. package/cdn/chunk-BLKKKK6C.js +0 -11
  148. package/cdn/chunk-DC2R556M.js +0 -5
  149. package/cdn/chunk-GALSGMIP.js +0 -5
  150. package/cdn/chunk-IXSX4SJX.js +0 -1
  151. package/cdn/chunk-KYOTSBCX.js +0 -1
  152. package/cdn/chunk-L4TDHAKL.js +0 -24
  153. package/cdn/chunk-LVW3MHTI.js +0 -23
  154. package/cdn/chunk-M6AATWPS.js +0 -59
  155. package/cdn/chunk-MFWSHIPH.js +0 -17
  156. package/cdn/chunk-QGKK4T2J.js +0 -8
  157. package/cdn/chunk-ROXN2HIJ.js +0 -8
  158. package/cdn/chunk-SQDSHH6N.js +0 -3539
  159. package/cdn/chunk-TJMODUN5.js +0 -8
  160. package/cdn/chunk-VI2WKTN4.js +0 -1
  161. package/cdn/chunk-Z6SKK5ZX.js +0 -8
  162. package/cdn/chunks/chunk-3GO57DNP.js +0 -0
  163. package/cdn/chunks/chunk-3V6LA7B3.js +0 -8
  164. package/cdn/chunks/chunk-4PEUIMDK.js +0 -8
  165. package/cdn/chunks/chunk-4WXQYE2P.js +0 -8
  166. package/cdn/chunks/chunk-5P7CTN7Q.js +0 -11
  167. package/cdn/chunks/chunk-5X76K77R.js +0 -8
  168. package/cdn/chunks/chunk-6MCYE7P5.js +0 -1
  169. package/cdn/chunks/chunk-6PW2L463.js +0 -0
  170. package/cdn/chunks/chunk-6S4CDN3T.js +0 -43
  171. package/cdn/chunks/chunk-76VGZJCP.js +0 -934
  172. package/cdn/chunks/chunk-7RBGYKOX.js +0 -5
  173. package/cdn/chunks/chunk-7XYBFL7U.js +0 -934
  174. package/cdn/chunks/chunk-AJJJAZWM.js +0 -1
  175. package/cdn/chunks/chunk-ANDPD7F2.js +0 -5
  176. package/cdn/chunks/chunk-ARHBUT6F.js +0 -5
  177. package/cdn/chunks/chunk-AUHO2E7V.js +0 -934
  178. package/cdn/chunks/chunk-CZ3CSGCE.js +0 -934
  179. package/cdn/chunks/chunk-D3GR6AUG.js +0 -43
  180. package/cdn/chunks/chunk-DZCKF45D.js +0 -5
  181. package/cdn/chunks/chunk-EFU4L43Q.js +0 -8
  182. package/cdn/chunks/chunk-FM5C34DM.js +0 -934
  183. package/cdn/chunks/chunk-FRS2J3OS.js +0 -59
  184. package/cdn/chunks/chunk-GMK2YRB2.js +0 -934
  185. package/cdn/chunks/chunk-H2V2RXUW.js +0 -11
  186. package/cdn/chunks/chunk-HUMOYGEM.js +0 -43
  187. package/cdn/chunks/chunk-IMJOPCFR.js +0 -1
  188. package/cdn/chunks/chunk-IQZ7AOCQ.js +0 -8
  189. package/cdn/chunks/chunk-J3JSSCM6.js +0 -5
  190. package/cdn/chunks/chunk-KHLUVO6Y.js +0 -8
  191. package/cdn/chunks/chunk-LARBLB7K.js +0 -8
  192. package/cdn/chunks/chunk-LNFCEHB3.js +0 -934
  193. package/cdn/chunks/chunk-MJMONWKB.js +0 -3539
  194. package/cdn/chunks/chunk-N5OHGRGG.js +0 -8
  195. package/cdn/chunks/chunk-NDHSIO2G.js +0 -8
  196. package/cdn/chunks/chunk-NRY3WHJD.js +0 -5
  197. package/cdn/chunks/chunk-PKT2SJQD.js +0 -8
  198. package/cdn/chunks/chunk-PPWEIKLT.js +0 -1
  199. package/cdn/chunks/chunk-PT523RSK.js +0 -8
  200. package/cdn/chunks/chunk-QD3NT5PG.js +0 -934
  201. package/cdn/chunks/chunk-QTK4CPHP.js +0 -8
  202. package/cdn/chunks/chunk-QV6I5NVQ.js +0 -8
  203. package/cdn/chunks/chunk-R33OODNX.js +0 -1
  204. package/cdn/chunks/chunk-RIXTWE2H.js +0 -8
  205. package/cdn/chunks/chunk-ROZIP5LG.js +0 -8
  206. package/cdn/chunks/chunk-RPZVSBLM.js +0 -8
  207. package/cdn/chunks/chunk-SXM25YH3.js +0 -934
  208. package/cdn/chunks/chunk-TEYXRLTI.js +0 -8
  209. package/cdn/chunks/chunk-TQBDBMWL.js +0 -5
  210. package/cdn/chunks/chunk-TV3SPOLH.js +0 -8
  211. package/cdn/chunks/chunk-TVDTF6P6.js +0 -934
  212. package/cdn/chunks/chunk-U2TE6TOV.js +0 -934
  213. package/cdn/chunks/chunk-W5Y3ZU2W.js +0 -5
  214. package/cdn/chunks/chunk-WPGJ54IP.js +0 -1
  215. package/cdn/chunks/chunk-YHWMZAZD.js +0 -43
  216. package/cdn/chunks/chunk-YVZ742ID.js +0 -934
  217. package/cdn/chunks/chunk-YWH4TGMA.js +0 -5
  218. package/cdn/chunks/chunk-YXR6KSZI.js +0 -11
  219. package/cdn/qti-components/index.global.js +0 -226
  220. package/cdn/qti-item/components/index.global.js +0 -149
  221. package/cdn/qti-item/components/index.js +0 -3549
  222. package/cdn/qti-item/components/item-container.global.js +0 -149
  223. package/cdn/qti-item/components/item-container.js +0 -3549
  224. package/cdn/qti-item/core/index.global.js +0 -149
  225. package/cdn/qti-item/index.global.js +0 -149
  226. package/cdn/qti-item/index.js +0 -3549
  227. package/cdn/qti-item/qti-item.global.js +0 -114
  228. package/cdn/qti-item/qti-item.js +0 -1
  229. package/cdn/qti-loader/index.global.js +0 -1
  230. package/cdn/qti-test/components/index.global.js +0 -207
  231. package/cdn/qti-test/components/styles.global.js +0 -44
  232. package/cdn/qti-test/components/test-component.abstract.global.js +0 -170
  233. package/cdn/qti-test/components/test-component.abstract.js +0 -1
  234. package/cdn/qti-test/components/test-container.global.js +0 -149
  235. package/cdn/qti-test/components/test-item-link.global.js +0 -170
  236. package/cdn/qti-test/components/test-next.global.js +0 -170
  237. package/cdn/qti-test/components/test-next.spec.css +0 -1
  238. package/cdn/qti-test/components/test-next.spec.global.js +0 -64
  239. package/cdn/qti-test/components/test-next.spec.js +0 -713
  240. package/cdn/qti-test/components/test-paging-buttons-stamp.global.js +0 -207
  241. package/cdn/qti-test/components/test-prev.global.js +0 -170
  242. package/cdn/qti-test/components/test-view.global.js +0 -170
  243. package/cdn/qti-test/context/index.global.js +0 -58
  244. package/cdn/qti-test/context/index.js +0 -1
  245. package/cdn/qti-test/context/test.context.global.js +0 -58
  246. package/cdn/qti-test/context/test.context.js +0 -1
  247. package/cdn/qti-test/core/index.global.js +0 -205
  248. package/cdn/qti-test/index.global.js +0 -242
  249. package/cdn/qti-test/index.js +0 -3598
  250. package/cdn/qti-test/mixins/index.global.js +0 -1
  251. package/cdn/qti-test/mixins/index.js +0 -23
  252. package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
  253. package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
  254. package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
  255. package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
  256. package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
  257. package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
  258. package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
  259. package/cdn/qti-test/qti-assessment-test/index.js +0 -1
  260. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
  261. package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
  262. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
  263. package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
  264. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
  265. package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
  266. package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
  267. package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
  268. package/cdn/qti-test/qti-test.global.js +0 -170
  269. package/cdn/qti-test/qti-test.js +0 -23
  270. package/cdn/qti-test/test-base.global.js +0 -170
  271. package/cdn/qti-test/test-base.js +0 -1
  272. package/cdn/qti-transformers/index.global.js +0 -1
  273. package/dist/chunk-2CHF3TMY.js.map +0 -1
  274. package/dist/chunk-2LWLX7WV.js +0 -6307
  275. package/dist/chunk-2LWLX7WV.js.map +0 -1
  276. package/dist/chunk-2OA7E3E7.js +0 -294
  277. package/dist/chunk-2OA7E3E7.js.map +0 -1
  278. package/dist/chunk-3G364JZC.js +0 -72
  279. package/dist/chunk-3G364JZC.js.map +0 -1
  280. package/dist/chunk-44VE5POH.js +0 -55
  281. package/dist/chunk-4YG2FPKK.js +0 -31
  282. package/dist/chunk-4YG2FPKK.js.map +0 -1
  283. package/dist/chunk-6TUE644E.js +0 -569
  284. package/dist/chunk-6TUE644E.js.map +0 -1
  285. package/dist/chunk-6ZMD232X.js +0 -78
  286. package/dist/chunk-6ZMD232X.js.map +0 -1
  287. package/dist/chunk-AYRSHIHA.js +0 -50
  288. package/dist/chunk-AYRSHIHA.js.map +0 -1
  289. package/dist/chunk-BN32D5J2.js +0 -43
  290. package/dist/chunk-BN32D5J2.js.map +0 -1
  291. package/dist/chunk-CJRXRBRQ.js +0 -50
  292. package/dist/chunk-CJRXRBRQ.js.map +0 -1
  293. package/dist/chunk-GPJ6WTE5.js +0 -118
  294. package/dist/chunk-GPJ6WTE5.js.map +0 -1
  295. package/dist/chunk-KAUHKHPH.js +0 -50
  296. package/dist/chunk-KAUHKHPH.js.map +0 -1
  297. package/dist/chunk-MAC76UNI.js +0 -1
  298. package/dist/chunk-QYN5S4EM.js +0 -107
  299. package/dist/chunk-QYN5S4EM.js.map +0 -1
  300. package/dist/chunk-UB5K44DB.js +0 -30
  301. package/dist/chunk-UB5K44DB.js.map +0 -1
  302. package/dist/chunk-UJTJIU3C.js +0 -43
  303. package/dist/chunk-UJTJIU3C.js.map +0 -1
  304. package/dist/chunk-XVQZ5JI5.js +0 -50
  305. package/dist/chunk-XVQZ5JI5.js.map +0 -1
  306. package/dist/chunk-XW3PQRKW.js +0 -6306
  307. package/dist/chunk-XW3PQRKW.js.map +0 -1
  308. package/dist/chunk-YQ7EXOAK.js +0 -10
  309. package/dist/chunk-YQ7EXOAK.js.map +0 -1
  310. package/dist/chunks/chunk-2V6LQV2K.js +0 -50
  311. package/dist/chunks/chunk-2V6LQV2K.js.map +0 -1
  312. package/dist/chunks/chunk-3EU75IUF.js +0 -118
  313. package/dist/chunks/chunk-3EU75IUF.js.map +0 -1
  314. package/dist/chunks/chunk-3QQFMVDS.js +0 -118
  315. package/dist/chunks/chunk-3QQFMVDS.js.map +0 -1
  316. package/dist/chunks/chunk-4GNVYCBN.js +0 -627
  317. package/dist/chunks/chunk-4GNVYCBN.js.map +0 -1
  318. package/dist/chunks/chunk-4MQV5IRV.js +0 -59
  319. package/dist/chunks/chunk-4MQV5IRV.js.map +0 -1
  320. package/dist/chunks/chunk-4WVLWWYJ.js +0 -50
  321. package/dist/chunks/chunk-4WVLWWYJ.js.map +0 -1
  322. package/dist/chunks/chunk-5KVGRLYT.js +0 -10
  323. package/dist/chunks/chunk-5KVGRLYT.js.map +0 -1
  324. package/dist/chunks/chunk-5PCD2B62.js +0 -6091
  325. package/dist/chunks/chunk-5PCD2B62.js.map +0 -1
  326. package/dist/chunks/chunk-5RTLOB3Q.js +0 -59
  327. package/dist/chunks/chunk-5RTLOB3Q.js.map +0 -1
  328. package/dist/chunks/chunk-6JXR63MH.js +0 -50
  329. package/dist/chunks/chunk-6JXR63MH.js.map +0 -1
  330. package/dist/chunks/chunk-6PAEJQSQ.js +0 -6058
  331. package/dist/chunks/chunk-6PAEJQSQ.js.map +0 -1
  332. package/dist/chunks/chunk-6QT4LIPL.js +0 -623
  333. package/dist/chunks/chunk-6QT4LIPL.js.map +0 -1
  334. package/dist/chunks/chunk-7QMCKYDR.js +0 -43
  335. package/dist/chunks/chunk-7QMCKYDR.js.map +0 -1
  336. package/dist/chunks/chunk-A24F75DB.js +0 -72
  337. package/dist/chunks/chunk-A24F75DB.js.map +0 -1
  338. package/dist/chunks/chunk-AUWATZ65.js +0 -10
  339. package/dist/chunks/chunk-AUWATZ65.js.map +0 -1
  340. package/dist/chunks/chunk-AXTEKPP5.js +0 -6084
  341. package/dist/chunks/chunk-AXTEKPP5.js.map +0 -1
  342. package/dist/chunks/chunk-B6MJCAOF.js +0 -6063
  343. package/dist/chunks/chunk-B6MJCAOF.js.map +0 -1
  344. package/dist/chunks/chunk-BJ2JLJIJ.js +0 -623
  345. package/dist/chunks/chunk-BJ2JLJIJ.js.map +0 -1
  346. package/dist/chunks/chunk-BPHQLJWE.js.map +0 -1
  347. package/dist/chunks/chunk-CD3E4M5Y.js +0 -107
  348. package/dist/chunks/chunk-CD3E4M5Y.js.map +0 -1
  349. package/dist/chunks/chunk-CEXAR7BF.js +0 -52
  350. package/dist/chunks/chunk-CEXAR7BF.js.map +0 -1
  351. package/dist/chunks/chunk-CWYAQA25.js +0 -6067
  352. package/dist/chunks/chunk-CWYAQA25.js.map +0 -1
  353. package/dist/chunks/chunk-D3QX5N57.js +0 -6117
  354. package/dist/chunks/chunk-D3QX5N57.js.map +0 -1
  355. package/dist/chunks/chunk-DLUJN2FW.js.map +0 -1
  356. package/dist/chunks/chunk-DNHDFXTV.js +0 -59
  357. package/dist/chunks/chunk-DNHDFXTV.js.map +0 -1
  358. package/dist/chunks/chunk-E4TWZ2DL.js.map +0 -1
  359. package/dist/chunks/chunk-FV7HWK54.js.map +0 -1
  360. package/dist/chunks/chunk-GQ5P3NWC.js.map +0 -1
  361. package/dist/chunks/chunk-GSWZT6N2.js +0 -50
  362. package/dist/chunks/chunk-GSWZT6N2.js.map +0 -1
  363. package/dist/chunks/chunk-HHVRU3AJ.js +0 -107
  364. package/dist/chunks/chunk-HHVRU3AJ.js.map +0 -1
  365. package/dist/chunks/chunk-HOTNM5DT.js +0 -1
  366. package/dist/chunks/chunk-IWG66KQQ.js +0 -107
  367. package/dist/chunks/chunk-IWG66KQQ.js.map +0 -1
  368. package/dist/chunks/chunk-J2SHENRN.js.map +0 -1
  369. package/dist/chunks/chunk-K6ATVWMP.js +0 -6091
  370. package/dist/chunks/chunk-K6ATVWMP.js.map +0 -1
  371. package/dist/chunks/chunk-KOEILLVS.js.map +0 -1
  372. package/dist/chunks/chunk-KYAIMBP5.js +0 -78
  373. package/dist/chunks/chunk-KYAIMBP5.js.map +0 -1
  374. package/dist/chunks/chunk-LNISKMIL.js +0 -6063
  375. package/dist/chunks/chunk-LNISKMIL.js.map +0 -1
  376. package/dist/chunks/chunk-LNKJEW5E.js +0 -627
  377. package/dist/chunks/chunk-LNKJEW5E.js.map +0 -1
  378. package/dist/chunks/chunk-LXJA3VP2.js +0 -72
  379. package/dist/chunks/chunk-LXJA3VP2.js.map +0 -1
  380. package/dist/chunks/chunk-MLT7V47R.js +0 -100
  381. package/dist/chunks/chunk-MLT7V47R.js.map +0 -1
  382. package/dist/chunks/chunk-N5FPZNMX.js +0 -43
  383. package/dist/chunks/chunk-N5FPZNMX.js.map +0 -1
  384. package/dist/chunks/chunk-NHA53UTY.js.map +0 -1
  385. package/dist/chunks/chunk-NZQKGIJP.js.map +0 -1
  386. package/dist/chunks/chunk-O6WEZVEM.js +0 -43
  387. package/dist/chunks/chunk-O6WEZVEM.js.map +0 -1
  388. package/dist/chunks/chunk-OIRWOI3E.js.map +0 -1
  389. package/dist/chunks/chunk-PWOY6REC.js +0 -6064
  390. package/dist/chunks/chunk-PWOY6REC.js.map +0 -1
  391. package/dist/chunks/chunk-QJELKGWM.js +0 -6061
  392. package/dist/chunks/chunk-QJELKGWM.js.map +0 -1
  393. package/dist/chunks/chunk-QUB54PXZ.js +0 -50
  394. package/dist/chunks/chunk-QUB54PXZ.js.map +0 -1
  395. package/dist/chunks/chunk-RX3BRYYI.js +0 -59
  396. package/dist/chunks/chunk-RX3BRYYI.js.map +0 -1
  397. package/dist/chunks/chunk-UEEMM6H2.js +0 -6090
  398. package/dist/chunks/chunk-UEEMM6H2.js.map +0 -1
  399. package/dist/chunks/chunk-UFYWCLXF.js +0 -10
  400. package/dist/chunks/chunk-UFYWCLXF.js.map +0 -1
  401. package/dist/chunks/chunk-UN2IFSGC.js +0 -1
  402. package/dist/chunks/chunk-VAPB5TN4.js +0 -46
  403. package/dist/chunks/chunk-VAPB5TN4.js.map +0 -1
  404. package/dist/chunks/chunk-VBF3GCZK.js +0 -50
  405. package/dist/chunks/chunk-VBF3GCZK.js.map +0 -1
  406. package/dist/chunks/chunk-W4272Q5U.js.map +0 -1
  407. package/dist/chunks/chunk-WWN5AD6V.js.map +0 -1
  408. package/dist/chunks/chunk-X226BX2U.js +0 -78
  409. package/dist/chunks/chunk-X226BX2U.js.map +0 -1
  410. package/dist/chunks/chunk-XCHS3RTZ.js +0 -107
  411. package/dist/chunks/chunk-XCHS3RTZ.js.map +0 -1
  412. package/dist/chunks/chunk-YFC3BVN2.js +0 -78
  413. package/dist/chunks/chunk-YFC3BVN2.js.map +0 -1
  414. package/dist/chunks/chunk-YOXF6JPS.js.map +0 -1
  415. package/dist/chunks/chunk-YQB6YLNW.js +0 -78
  416. package/dist/chunks/chunk-YQB6YLNW.js.map +0 -1
  417. package/dist/chunks/chunk-Z5THRO6Z.js +0 -46
  418. package/dist/chunks/chunk-Z5THRO6Z.js.map +0 -1
  419. package/dist/chunks/chunk-ZHAJ3CMP.js +0 -6091
  420. package/dist/chunks/chunk-ZHAJ3CMP.js.map +0 -1
  421. package/dist/chunks/chunk-ZPNJ2HP5.js +0 -71
  422. package/dist/chunks/chunk-ZPNJ2HP5.js.map +0 -1
  423. package/dist/chunks/chunk-ZQXZ6PK7.js +0 -649
  424. package/dist/chunks/chunk-ZQXZ6PK7.js.map +0 -1
  425. package/dist/custom-element-eslint-rules.js +0 -337
  426. package/dist/custom-elements.json +0 -27158
  427. package/dist/loader/index.d.ts +0 -20
  428. package/dist/loader/index.js +0 -310
  429. package/dist/loader/index.js.map +0 -1
  430. package/dist/qti-components/index.cjs +0 -6773
  431. package/dist/qti-components/index.cjs.map +0 -1
  432. package/dist/qti-components/index.d.cts +0 -150
  433. package/dist/qti-item/components/index.d.ts +0 -3
  434. package/dist/qti-item/components/index.js +0 -3856
  435. package/dist/qti-item/components/index.js.map +0 -1
  436. package/dist/qti-item/components/item-container.d.ts +0 -40
  437. package/dist/qti-item/components/item-container.js +0 -3856
  438. package/dist/qti-item/components/item-container.js.map +0 -1
  439. package/dist/qti-item/index.cjs +0 -89
  440. package/dist/qti-item/index.cjs.map +0 -1
  441. package/dist/qti-item/index.d.cts +0 -24
  442. package/dist/qti-item/index.d.ts +0 -4
  443. package/dist/qti-item/index.js +0 -3869
  444. package/dist/qti-item/index.js.map +0 -1
  445. package/dist/qti-item/qti-item.d.ts +0 -25
  446. package/dist/qti-item/qti-item.js +0 -26
  447. package/dist/qti-item/qti-item.js.map +0 -1
  448. package/dist/qti-loader/index.cjs +0 -332
  449. package/dist/qti-loader/index.cjs.map +0 -1
  450. package/dist/qti-loader/index.d.cts +0 -20
  451. package/dist/qti-response-declaration-DAeBp8HH.d.ts +0 -1008
  452. package/dist/qti-response-declaration-ucAqd0qK.d.ts +0 -1034
  453. package/dist/qti-simple-choice-3M44uWiN.d.ts +0 -1153
  454. package/dist/qti-simple-choice-B5GnzbqW.d.ts +0 -1080
  455. package/dist/qti-simple-choice-BOLF9wXz.d.ts +0 -1170
  456. package/dist/qti-simple-choice-BeixIkA0.d.ts +0 -1088
  457. package/dist/qti-simple-choice-BiEjEO6s.d.ts +0 -1152
  458. package/dist/qti-simple-choice-Bo_ikO6H.d.ts +0 -1198
  459. package/dist/qti-simple-choice-C0CcrtK5.d.ts +0 -1169
  460. package/dist/qti-simple-choice-Cgh1-Jbr.d.cts +0 -1185
  461. package/dist/qti-simple-choice-Cgh1-Jbr.d.ts +0 -1185
  462. package/dist/qti-simple-choice-Cn5y-Ta8.d.ts +0 -1158
  463. package/dist/qti-simple-choice-D0GiMrqD.d.ts +0 -1168
  464. package/dist/qti-simple-choice-DxWcdKHi.d.ts +0 -1158
  465. package/dist/qti-simple-choice-R_LxBTp8.d.ts +0 -1158
  466. package/dist/qti-simple-choice-hAIyfF0z.d.ts +0 -1114
  467. package/dist/qti-simple-choice-o4rje1RA.d.ts +0 -1176
  468. package/dist/qti-simple-choice-v2GxpPNh.d.ts +0 -1181
  469. package/dist/qti-test/components/test-component.abstract.d.ts +0 -26
  470. package/dist/qti-test/components/test-component.abstract.js +0 -11
  471. package/dist/qti-test/components/test-next.spec.css +0 -2481
  472. package/dist/qti-test/components/test-next.spec.css.map +0 -1
  473. package/dist/qti-test/components/test-next.spec.d.ts +0 -13
  474. package/dist/qti-test/components/test-next.spec.js +0 -45904
  475. package/dist/qti-test/components/test-next.spec.js.map +0 -1
  476. package/dist/qti-test/context/index.d.ts +0 -6
  477. package/dist/qti-test/context/index.js +0 -9
  478. package/dist/qti-test/context/index.js.map +0 -1
  479. package/dist/qti-test/context/test.context.d.ts +0 -6
  480. package/dist/qti-test/context/test.context.js +0 -9
  481. package/dist/qti-test/context/test.context.js.map +0 -1
  482. package/dist/qti-test/index.cjs +0 -4823
  483. package/dist/qti-test/index.cjs.map +0 -1
  484. package/dist/qti-test/index.d.cts +0 -304
  485. package/dist/qti-test/index.d.ts +0 -14
  486. package/dist/qti-test/index.js +0 -4746
  487. package/dist/qti-test/index.js.map +0 -1
  488. package/dist/qti-test/mixins/index.d.ts +0 -8
  489. package/dist/qti-test/mixins/index.js +0 -350
  490. package/dist/qti-test/mixins/index.js.map +0 -1
  491. package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
  492. package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
  493. package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
  494. package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
  495. package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
  496. package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
  497. package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
  498. package/dist/qti-test/mixins/test-view.mixin.js +0 -50
  499. package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
  500. package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
  501. package/dist/qti-test/qti-assessment-test/index.js +0 -221
  502. package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
  503. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
  504. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
  505. package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
  506. package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
  507. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
  508. package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
  509. package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
  510. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
  511. package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
  512. package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
  513. package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
  514. package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
  515. package/dist/qti-test/qti-test.d.ts +0 -68
  516. package/dist/qti-test/qti-test.js +0 -500
  517. package/dist/qti-test/qti-test.js.map +0 -1
  518. package/dist/qti-test/test-base.d.ts +0 -6
  519. package/dist/qti-test/test-base.js +0 -137
  520. package/dist/qti-test/test-base.js.map +0 -1
  521. package/dist/qti-transformers/index.cjs +0 -316
  522. package/dist/qti-transformers/index.cjs.map +0 -1
  523. package/dist/qti-transformers/index.d.cts +0 -75
  524. package/dist/test-base-BJwG9Ie8.d.ts +0 -109
  525. package/dist/test.context-Bx-606B3.d.ts +0 -99
  526. package/dist/test.context-CB5V4xJz.d.ts +0 -99
  527. package/dist/test.context-CaENAJNk.d.ts +0 -101
  528. package/dist/test.context-CmsDQ8k2.d.ts +0 -99
  529. package/dist/transformers/index.d.ts +0 -76
  530. package/dist/transformers/index.js +0 -293
  531. package/dist/transformers/index.js.map +0 -1
  532. /package/cdn/{chunk-22HAPLRD.js → chunks/chunk-MTNLMWSG.js} +0 -0
  533. /package/dist/{chunk-44VE5POH.js.map → chunks/chunk-CBYNKDSF.js.map} +0 -0
  534. /package/dist/chunks/{chunk-XSI6FXGD.js.map → chunk-OOQLWOYU.js.map} +0 -0
  535. /package/dist/{chunk-MAC76UNI.js.map → exports/computed.context.js.map} +0 -0
  536. /package/dist/{chunks/chunk-HOTNM5DT.js.map → exports/config.context.js.map} +0 -0
  537. /package/dist/{chunks/chunk-UN2IFSGC.js.map → exports/session.context.js.map} +0 -0
  538. /package/dist/{qti-test/components/test-component.abstract.js.map → exports/test.context.js.map} +0 -0
@@ -1,4823 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var __decorateClass = (decorators, target, key, kind) => {
19
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
20
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
21
- if (decorator = decorators[i])
22
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
23
- if (kind && result) __defProp(target, key, result);
24
- return result;
25
- };
26
-
27
- // src/lib/qti-test/index.ts
28
- var qti_test_exports = {};
29
- __export(qti_test_exports, {
30
- QtiAssessmentItemRef: () => QtiAssessmentItemRef,
31
- QtiAssessmentSection: () => QtiAssessmentSection,
32
- QtiAssessmentTest: () => QtiAssessmentTest,
33
- QtiTest: () => QtiTest,
34
- QtiTestPart: () => QtiTestPart,
35
- TestContainer: () => TestContainer,
36
- TestItemLink: () => TestItemLink,
37
- TestNext: () => TestNext,
38
- TestPagingButtonsStamp: () => TestPagingButtonsStamp,
39
- TestPrev: () => TestPrev,
40
- TestView: () => TestView
41
- });
42
- module.exports = __toCommonJS(qti_test_exports);
43
-
44
- // src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts
45
- var import_context2 = require("@lit/context");
46
- var import_lit = require("lit");
47
- var import_decorators = require("lit/decorators.js");
48
-
49
- // src/lib/qti-test/context/test.context.ts
50
- var import_context = require("@lit/context");
51
- var testContext = (0, import_context.createContext)(Symbol("test"));
52
- var testElement = (0, import_context.createContext)(Symbol("testElement"));
53
-
54
- // src/lib/qti-test/qti-assessment-test/qti-assessment-item-ref.ts
55
- var stringToBooleanConverter = {
56
- fromAttribute(value) {
57
- return value === "true";
58
- },
59
- toAttribute(value) {
60
- return value ? "true" : "false";
61
- }
62
- };
63
- var QtiAssessmentItemRef = class extends import_lit.LitElement {
64
- constructor() {
65
- super(...arguments);
66
- this.weigths = /* @__PURE__ */ new Map();
67
- }
68
- // the XMLDocument
69
- createRenderRoot() {
70
- return this;
71
- }
72
- get assessmentItem() {
73
- return this.renderRoot?.querySelector("qti-assessment-item");
74
- }
75
- async connectedCallback() {
76
- super.connectedCallback();
77
- await this.updateComplete;
78
- this.dispatchEvent(
79
- new CustomEvent("qti-assessment-item-ref-connected", {
80
- bubbles: true,
81
- composed: true,
82
- detail: { identifier: this.identifier, href: this.href, category: this.category }
83
- })
84
- );
85
- }
86
- render() {
87
- return import_lit.html`${this.xmlDoc}`;
88
- }
89
- };
90
- __decorateClass([
91
- (0, import_decorators.property)({ type: String })
92
- ], QtiAssessmentItemRef.prototype, "category", 2);
93
- __decorateClass([
94
- (0, import_decorators.property)({ type: String })
95
- ], QtiAssessmentItemRef.prototype, "identifier", 2);
96
- __decorateClass([
97
- (0, import_decorators.property)({ type: Boolean, converter: stringToBooleanConverter })
98
- ], QtiAssessmentItemRef.prototype, "required", 2);
99
- __decorateClass([
100
- (0, import_decorators.property)({ type: Boolean, converter: stringToBooleanConverter })
101
- ], QtiAssessmentItemRef.prototype, "fixed", 2);
102
- __decorateClass([
103
- (0, import_decorators.property)({ type: String })
104
- ], QtiAssessmentItemRef.prototype, "href", 2);
105
- __decorateClass([
106
- (0, import_context2.consume)({ context: testContext, subscribe: true })
107
- ], QtiAssessmentItemRef.prototype, "_testContext", 2);
108
- __decorateClass([
109
- (0, import_decorators.property)({ type: Object, attribute: false })
110
- ], QtiAssessmentItemRef.prototype, "xmlDoc", 2);
111
- if (!customElements.get("qti-assessment-item-ref")) {
112
- customElements.define("qti-assessment-item-ref", QtiAssessmentItemRef);
113
- }
114
-
115
- // src/lib/qti-test/qti-assessment-test/qti-assessment-section.ts
116
- var import_context4 = require("@lit/context");
117
- var import_lit2 = require("lit");
118
- var import_decorators2 = require("lit/decorators.js");
119
- var stringToBooleanConverter2 = {
120
- fromAttribute(value) {
121
- return value === "true";
122
- },
123
- toAttribute(value) {
124
- return value ? "true" : "false";
125
- }
126
- };
127
- var QtiAssessmentSection = class extends import_lit2.LitElement {
128
- async connectedCallback() {
129
- super.connectedCallback();
130
- await this.updateComplete;
131
- this.dispatchEvent(
132
- new Event("qti-assessment-section-connected", {
133
- bubbles: true,
134
- composed: true
135
- })
136
- );
137
- }
138
- render() {
139
- return import_lit2.html`<slot name="qti-rubric-block"></slot><slot></slot>`;
140
- }
141
- };
142
- __decorateClass([
143
- (0, import_decorators2.property)({ type: String })
144
- ], QtiAssessmentSection.prototype, "identifier", 2);
145
- __decorateClass([
146
- (0, import_decorators2.property)({ type: String })
147
- ], QtiAssessmentSection.prototype, "required", 2);
148
- __decorateClass([
149
- (0, import_decorators2.property)({ type: Boolean, converter: stringToBooleanConverter2 })
150
- ], QtiAssessmentSection.prototype, "fixed", 2);
151
- __decorateClass([
152
- (0, import_decorators2.property)({ type: String })
153
- ], QtiAssessmentSection.prototype, "title", 2);
154
- __decorateClass([
155
- (0, import_decorators2.property)({ type: Boolean, converter: stringToBooleanConverter2 })
156
- ], QtiAssessmentSection.prototype, "visible", 2);
157
- __decorateClass([
158
- (0, import_decorators2.property)({ type: Boolean, converter: stringToBooleanConverter2, attribute: "keep-together" })
159
- ], QtiAssessmentSection.prototype, "keepTogether", 2);
160
- __decorateClass([
161
- (0, import_context4.consume)({ context: testContext, subscribe: true })
162
- ], QtiAssessmentSection.prototype, "_testContext", 2);
163
- if (!customElements.get("qti-assessment-section")) {
164
- customElements.define("qti-assessment-section", QtiAssessmentSection);
165
- }
166
-
167
- // src/lib/qti-test/qti-assessment-test/qti-assessment-test.ts
168
- var import_context6 = require("@lit/context");
169
- var import_lit3 = require("lit");
170
- var import_decorators3 = require("lit/decorators.js");
171
- var QtiAssessmentTest = class extends import_lit3.LitElement {
172
- async connectedCallback() {
173
- super.connectedCallback();
174
- await this.updateComplete;
175
- this.dispatchEvent(
176
- new CustomEvent("qti-assessment-test-connected", {
177
- detail: this,
178
- bubbles: true,
179
- composed: true
180
- })
181
- );
182
- }
183
- render() {
184
- return import_lit3.html` <slot></slot>`;
185
- }
186
- };
187
- __decorateClass([
188
- (0, import_decorators3.property)({ type: String })
189
- ], QtiAssessmentTest.prototype, "identifier", 2);
190
- __decorateClass([
191
- (0, import_decorators3.property)({ type: String })
192
- ], QtiAssessmentTest.prototype, "title", 2);
193
- __decorateClass([
194
- (0, import_context6.consume)({ context: testContext, subscribe: true })
195
- ], QtiAssessmentTest.prototype, "_testContext", 2);
196
- QtiAssessmentTest = __decorateClass([
197
- (0, import_decorators3.customElement)("qti-assessment-test")
198
- ], QtiAssessmentTest);
199
-
200
- // src/lib/qti-test/qti-assessment-test/qti-test-part.ts
201
- var import_lit4 = require("lit");
202
- var import_decorators4 = require("lit/decorators.js");
203
- var QtiTestPart = class extends import_lit4.LitElement {
204
- constructor() {
205
- super(...arguments);
206
- this.identifier = "";
207
- this.title = "";
208
- this.class = "";
209
- this.NavigationMode = "nonlinear";
210
- this.submissionMode = "individual";
211
- }
212
- async connectedCallback() {
213
- super.connectedCallback();
214
- await this.updateComplete;
215
- this.dispatchEvent(
216
- new Event("qti-test-part-connected", {
217
- bubbles: true,
218
- composed: true
219
- })
220
- );
221
- }
222
- render() {
223
- return import_lit4.html` <slot></slot>`;
224
- }
225
- };
226
- __decorateClass([
227
- (0, import_decorators4.property)({ type: String })
228
- ], QtiTestPart.prototype, "identifier", 2);
229
- __decorateClass([
230
- (0, import_decorators4.property)({ type: String })
231
- ], QtiTestPart.prototype, "title", 2);
232
- __decorateClass([
233
- (0, import_decorators4.property)({ type: String })
234
- ], QtiTestPart.prototype, "class", 2);
235
- __decorateClass([
236
- (0, import_decorators4.property)({ type: String, attribute: "navigation-mode" })
237
- ], QtiTestPart.prototype, "NavigationMode", 2);
238
- __decorateClass([
239
- (0, import_decorators4.property)({ type: String, attribute: "submission-mode" })
240
- ], QtiTestPart.prototype, "submissionMode", 2);
241
- QtiTestPart = __decorateClass([
242
- (0, import_decorators4.customElement)("qti-test-part")
243
- ], QtiTestPart);
244
- if (!customElements.get("qti-test-part")) {
245
- customElements.define("qti-test-part", QtiTestPart);
246
- }
247
-
248
- // src/lib/qti-test/qti-test.ts
249
- var import_lit6 = require("lit");
250
- var import_decorators6 = require("lit/decorators.js");
251
-
252
- // src/lib/qti-transformers/qti-transformers.ts
253
- var xml = String.raw;
254
- var xmlToHTML = xml`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
255
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
256
- <xsl:template match="@*|node()">
257
- <xsl:copy>
258
- <xsl:apply-templates select="@*|node()"/>
259
- </xsl:copy>
260
- </xsl:template>
261
-
262
- <!-- remove existing namespaces -->
263
- <xsl:template match="*">
264
- <!-- remove element prefix -->
265
- <xsl:element name="{local-name()}">
266
- <!-- process attributes -->
267
- <xsl:for-each select="@*">
268
- <!-- remove attribute prefix -->
269
- <xsl:attribute name="{local-name()}">
270
- <xsl:value-of select="."/>
271
- </xsl:attribute>
272
- </xsl:for-each>
273
- <xsl:apply-templates/>
274
- </xsl:element>
275
- </xsl:template>
276
- </xsl:stylesheet>`;
277
- function extendElementName(xmlFragment, tagName, extension) {
278
- xmlFragment.querySelectorAll(tagName).forEach((element) => {
279
- const newTagName = `${tagName}-${extension}`;
280
- const newElement = createElementWithNewTagName(element, newTagName);
281
- element.replaceWith(newElement);
282
- });
283
- }
284
- function extendElementsWithClass(xmlFragment, classNamePattern) {
285
- xmlFragment.querySelectorAll("*").forEach((element) => {
286
- const classList = element.classList;
287
- if (classList) {
288
- classList.forEach((className) => {
289
- if (className.startsWith(`${classNamePattern}:`)) {
290
- const suffix = className.slice(`${classNamePattern}:`.length);
291
- const newTagName = `${element.nodeName}-${suffix}`;
292
- const newElement = createElementWithNewTagName(element, newTagName);
293
- element.replaceWith(newElement);
294
- }
295
- });
296
- }
297
- });
298
- }
299
- function createElementWithNewTagName(element, newTagName) {
300
- const newElement = document.createElement(newTagName);
301
- for (const attr of element.attributes) {
302
- newElement.setAttribute(attr.name, attr.value);
303
- }
304
- while (element.firstChild) {
305
- newElement.appendChild(element.firstChild);
306
- }
307
- return newElement;
308
- }
309
- function itemsFromTest(xmlFragment) {
310
- const items = [];
311
- xmlFragment.querySelectorAll("qti-assessment-item-ref").forEach((el) => {
312
- const identifier = el.getAttribute("identifier");
313
- const href = el.getAttribute("href");
314
- const category = el.getAttribute("category");
315
- items.push({ identifier, href, category });
316
- });
317
- return items;
318
- }
319
- var currentRequest = null;
320
- function loadXML(url, cancelPreviousRequest = false) {
321
- if (cancelPreviousRequest && currentRequest !== null) {
322
- currentRequest.abort();
323
- }
324
- return new Promise((resolve, reject) => {
325
- const xhr = new XMLHttpRequest();
326
- currentRequest = xhr;
327
- xhr.open("GET", url, true);
328
- xhr.responseType = "document";
329
- xhr.onload = () => {
330
- if (xhr.status >= 200 && xhr.status < 300) {
331
- resolve(xhr.responseXML);
332
- } else {
333
- reject(xhr.statusText);
334
- }
335
- };
336
- xhr.onerror = () => {
337
- reject(xhr.statusText);
338
- };
339
- xhr.send();
340
- });
341
- }
342
- function parseXML(xmlDocument) {
343
- const parser = new DOMParser();
344
- const xmlFragment = parser.parseFromString(xmlDocument, "text/xml");
345
- return xmlFragment;
346
- }
347
- function toHTML(xmlFragment) {
348
- const processor = new XSLTProcessor();
349
- const xsltDocument = new DOMParser().parseFromString(xmlToHTML, "text/xml");
350
- processor.importStylesheet(xsltDocument);
351
- const itemHTMLFragment = processor.transformToFragment(xmlFragment, document);
352
- return itemHTMLFragment;
353
- }
354
- function setLocation(xmlFragment, location) {
355
- if (!location.endsWith("/")) {
356
- location += "/";
357
- }
358
- xmlFragment.querySelectorAll("[src],[href],[primary-path]").forEach((elWithSrc) => {
359
- let attr = "";
360
- if (elWithSrc.getAttribute("src")) {
361
- attr = "src";
362
- }
363
- if (elWithSrc.getAttribute("href")) {
364
- attr = "href";
365
- }
366
- if (elWithSrc.getAttribute("primary-path")) {
367
- attr = "primary-path";
368
- }
369
- const attrValue = elWithSrc.getAttribute(attr)?.trim();
370
- if (!attrValue.startsWith("data:") && !attrValue.startsWith("http")) {
371
- const newSrcValue = location + encodeURI(attrValue);
372
- elWithSrc.setAttribute(attr, newSrcValue);
373
- }
374
- });
375
- }
376
- function convertCDATAtoComment(xmlFragment) {
377
- const cdataElements = xmlFragment.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value');
378
- cdataElements.forEach((element) => {
379
- const commentText = document.createComment(element.textContent);
380
- element.replaceChild(commentText, element.firstChild);
381
- });
382
- }
383
- function stripStyleSheets(xmlFragment) {
384
- xmlFragment.querySelectorAll("qti-stylesheet").forEach((stylesheet) => stylesheet.remove());
385
- }
386
-
387
- // src/lib/qti-transformers/qti-transform-item.ts
388
- var qtiTransformItem = () => {
389
- let xmlFragment;
390
- const api = {
391
- async load(uri, cancelPreviousRequest = false) {
392
- return new Promise((resolve) => {
393
- loadXML(uri, cancelPreviousRequest).then((xml2) => {
394
- xmlFragment = xml2;
395
- api.path(uri.substring(0, uri.lastIndexOf("/")));
396
- return resolve(api);
397
- });
398
- });
399
- },
400
- parse(xmlString) {
401
- xmlFragment = parseXML(xmlString);
402
- return api;
403
- },
404
- path: (location) => {
405
- setLocation(xmlFragment, location);
406
- return api;
407
- },
408
- fn(fn) {
409
- fn(xmlFragment);
410
- return api;
411
- },
412
- pciHooks(uri) {
413
- const attributes = ["hook", "module"];
414
- const documentPath = uri.substring(0, uri.lastIndexOf("/"));
415
- for (const attribute of attributes) {
416
- const srcAttributes = xmlFragment.querySelectorAll("[" + attribute + "]");
417
- srcAttributes.forEach((node) => {
418
- const srcValue = node.getAttribute(attribute);
419
- if (!srcValue.startsWith("data:") && !srcValue.startsWith("http")) {
420
- node.setAttribute("base-url", uri);
421
- node.setAttribute(
422
- "module",
423
- documentPath + "/" + encodeURI(srcValue + (srcValue.endsWith(".js") ? "" : ".js"))
424
- );
425
- }
426
- });
427
- }
428
- return api;
429
- },
430
- extendElementName: (tagName, extension) => {
431
- extendElementName(xmlFragment, tagName, extension);
432
- return api;
433
- },
434
- extendElementsWithClass: (param = "extend") => {
435
- extendElementsWithClass(xmlFragment, param);
436
- return api;
437
- },
438
- customInteraction(baseRef, baseItem) {
439
- const qtiCustomInteraction = xmlFragment.querySelector("qti-custom-interaction");
440
- const qtiCustomInteractionObject = qtiCustomInteraction.querySelector("object");
441
- qtiCustomInteraction.setAttribute("data-base-ref", baseRef);
442
- qtiCustomInteraction.setAttribute("data-base-item", baseRef + baseItem);
443
- qtiCustomInteraction.setAttribute("data", qtiCustomInteractionObject.getAttribute("data"));
444
- qtiCustomInteraction.setAttribute("width", qtiCustomInteractionObject.getAttribute("width"));
445
- qtiCustomInteraction.setAttribute("height", qtiCustomInteractionObject.getAttribute("height"));
446
- qtiCustomInteraction.removeChild(qtiCustomInteractionObject);
447
- return api;
448
- },
449
- convertCDATAtoComment() {
450
- convertCDATAtoComment(xmlFragment);
451
- return api;
452
- },
453
- stripStyleSheets() {
454
- stripStyleSheets(xmlFragment);
455
- return api;
456
- },
457
- html() {
458
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
459
- },
460
- xml() {
461
- return new XMLSerializer().serializeToString(xmlFragment);
462
- },
463
- htmlDoc() {
464
- return toHTML(xmlFragment);
465
- },
466
- xmlDoc() {
467
- return xmlFragment;
468
- }
469
- };
470
- return api;
471
- };
472
-
473
- // src/lib/qti-transformers/qti-transform-test.ts
474
- var qtiTransformTest = () => {
475
- let xmlFragment;
476
- const api = {
477
- async load(uri) {
478
- return new Promise((resolve, _) => {
479
- loadXML(uri).then((xml2) => {
480
- xmlFragment = xml2;
481
- return resolve(api);
482
- });
483
- });
484
- },
485
- parse(xmlString) {
486
- xmlFragment = parseXML(xmlString);
487
- return api;
488
- },
489
- fn(fn) {
490
- fn(xmlFragment);
491
- return api;
492
- },
493
- items() {
494
- return itemsFromTest(xmlFragment);
495
- },
496
- html() {
497
- return new XMLSerializer().serializeToString(toHTML(xmlFragment));
498
- },
499
- xml() {
500
- return new XMLSerializer().serializeToString(xmlFragment);
501
- },
502
- htmlDoc() {
503
- return toHTML(xmlFragment);
504
- },
505
- xmlDoc() {
506
- return xmlFragment;
507
- }
508
- };
509
- return api;
510
- };
511
-
512
- // src/lib/qti-test/mixins/test-loader.mixin.ts
513
- var TestLoaderMixin = (superClass) => {
514
- class TestLoaderClass extends superClass {
515
- constructor(...args) {
516
- super(...args);
517
- this.testURL = "";
518
- this.addEventListener("qti-load-test-request", (e) => {
519
- const { testURL } = e.detail;
520
- if (!testURL) {
521
- console.warn(
522
- "No test found, there should be an aattribute test-url with the path to the test on the test-container"
523
- );
524
- } else {
525
- this.testURL = testURL;
526
- }
527
- e.detail.promise = (async () => {
528
- e.preventDefault();
529
- const api = await qtiTransformTest().load(`${this.testURL}`);
530
- return api.htmlDoc();
531
- })();
532
- });
533
- this.addEventListener("qti-assessment-test-connected", () => {
534
- });
535
- this.addEventListener("qti-load-item-request", ({ detail }) => {
536
- if (!this.testURL) return;
537
- detail.promise = (async () => {
538
- const api = await qtiTransformItem().load(
539
- `${this.testURL.slice(0, this.testURL.lastIndexOf("/"))}/${detail.href}`,
540
- detail.cancelPreviousRequest
541
- );
542
- return api.htmlDoc();
543
- })();
544
- });
545
- this.addEventListener("qti-interaction-changed", (_e) => {
546
- });
547
- this.addEventListener("qti-outcome-changed", () => {
548
- });
549
- }
550
- }
551
- return TestLoaderClass;
552
- };
553
-
554
- // src/lib/qti-test/mixins/test-navigation.mixin.ts
555
- var TestNavigationMixin = (superClass) => {
556
- class TestNavigationClass extends superClass {
557
- constructor(...args) {
558
- super(...args);
559
- this.addEventListener("qti-request-test-item", ({ detail: navItemId }) => {
560
- if (!navItemId) return;
561
- this._clearLoadedItems();
562
- const itemRefEl = this.testElement.el.querySelector(`qti-assessment-item-ref[identifier="${navItemId}"]`);
563
- const promise = this._loadItemRequest(itemRefEl.href, true);
564
- const navPartId = itemRefEl.closest("qti-test-part").identifier;
565
- const navSectionId = itemRefEl.closest("qti-assessment-section").identifier;
566
- this._testContext = { ...this._testContext, navPartId, navSectionId, navItemId, navItemLoading: true };
567
- if (promise) {
568
- promise.then((doc) => {
569
- itemRefEl.xmlDoc = doc;
570
- requestAnimationFrame(() => this.dispatchEvent(new CustomEvent("qti-item-connected", { bubbles: true, composed: true })));
571
- this._testContext = { ...this._testContext, navItemLoading: false };
572
- }).catch((error) => console.error("Failed to load item:", error));
573
- } else {
574
- console.info("Load item request was not handled:", itemRefEl.href);
575
- }
576
- });
577
- this.addEventListener("qti-assessment-test-connected", () => {
578
- let navItemId = this._testContext.navItemId;
579
- if (!navItemId) {
580
- const itemRefEl = this.testElement.el.querySelector("qti-assessment-item-ref");
581
- navItemId = itemRefEl.identifier;
582
- }
583
- this.dispatchEvent(new CustomEvent("qti-request-test-item", { detail: navItemId, bubbles: true, composed: true }));
584
- });
585
- }
586
- _clearLoadedItems() {
587
- const itemRefEls = this.testElement.el.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);
588
- Array.from(itemRefEls).forEach((itemElement) => {
589
- itemElement.xmlDoc = null;
590
- });
591
- }
592
- _loadItemRequest(href, cancelPreviousRequest = true) {
593
- const event = new CustomEvent("qti-load-item-request", {
594
- bubbles: true,
595
- composed: true,
596
- detail: {
597
- href,
598
- promise: null,
599
- cancelPreviousRequest
600
- }
601
- });
602
- this.dispatchEvent(event);
603
- return event.detail.promise;
604
- }
605
- }
606
- return TestNavigationClass;
607
- };
608
-
609
- // src/lib/qti-test/mixins/test-view.mixin.ts
610
- var TestViewMixin = (superClass) => {
611
- class TestViewClass extends superClass {
612
- constructor(...args) {
613
- super(...args);
614
- this._testContext = { ...this._testContext, view: "candidate" };
615
- this.addEventListener("on-test-switch-view", (e) => {
616
- this._testContext = { ...this._testContext, view: e.detail };
617
- this._updateElementView();
618
- });
619
- this.addEventListener("qti-assessment-test-connected", () => {
620
- this._updateElementView();
621
- });
622
- this.addEventListener("qti-assessment-item-connected", (e) => {
623
- this._updateElementView();
624
- this._setCorrectResponseVisibility(e.detail);
625
- });
626
- }
627
- willUpdate(changedProperties) {
628
- super.willUpdate(changedProperties);
629
- if (changedProperties.has("_testContext")) {
630
- this._updateElementView();
631
- }
632
- }
633
- // Method to handle view updates for elements based on the current context view
634
- _updateElementView() {
635
- if (this.testElement && this.testElement.el) {
636
- const viewElements = Array.from(this.testElement.el.querySelectorAll("[view]"));
637
- viewElements.forEach((element) => {
638
- element.classList.toggle("show", element.getAttribute("view") === this._testContext.view);
639
- });
640
- const assessmentItem = this.testElement.el.querySelector(
641
- `qti-assessment-item[identifier="${this._testContext.navItemId}"]`
642
- );
643
- if (assessmentItem) {
644
- assessmentItem.showCorrectResponse(this._testContext.view === "scorer");
645
- }
646
- }
647
- }
648
- // Event handler for connected QTI assessment items
649
- _setCorrectResponseVisibility(assessmentItem) {
650
- assessmentItem.showCorrectResponse(this._testContext.view === "scorer");
651
- }
652
- }
653
- return TestViewClass;
654
- };
655
-
656
- // src/lib/qti-test/test-base.ts
657
- var import_context8 = require("@lit/context");
658
- var import_lit5 = require("lit");
659
- var import_decorators5 = require("lit/decorators.js");
660
- var TestBase = class extends import_lit5.LitElement {
661
- constructor() {
662
- super();
663
- this._testContext = { items: [], testOutcomeVariables: [] };
664
- this.testElement = { el: null };
665
- /**
666
- * Updates the variables of an assessment item in the test context.
667
- * - Matches the assessment item with the corresponding test context item.
668
- * - If the item is not found, logs a warning.
669
- * - Updates variables in the test context if exactly one variable exists.
670
- * - Otherwise, syncs the assessment item's variables with the test context.
671
- *
672
- * @param assessmentItem - The assessment item to update.
673
- */
674
- this._updateItemInTestContext = (assessmentItem) => {
675
- const { identifier, variables } = assessmentItem;
676
- const itemContext = this._testContext.items.find((i) => i?.identifier === identifier);
677
- if (!itemContext) {
678
- console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);
679
- return;
680
- }
681
- if (itemContext.variables?.length === 1) {
682
- this._updateItemVariablesInTestContext(identifier, variables);
683
- } else {
684
- assessmentItem.variables = [...itemContext.variables || []];
685
- }
686
- };
687
- this.addEventListener("qti-assessment-test-connected", (e) => {
688
- const qtiAssessmentTest = e.detail;
689
- const items = Array.from(qtiAssessmentTest.querySelectorAll("qti-assessment-item-ref")).map(
690
- (itemRef) => ({
691
- href: itemRef.href,
692
- identifier: itemRef.identifier,
693
- category: itemRef.category,
694
- variables: [{ identifier: "completionStatus", value: "not_attempted", type: "outcome" }]
695
- })
696
- );
697
- this.testElement = { el: qtiAssessmentTest };
698
- this._testContext = { ...this._testContext, items };
699
- });
700
- this.addEventListener("qti-assessment-item-connected", (e) => {
701
- this._updateItemInTestContext(e.detail);
702
- });
703
- this.addEventListener("qti-outcome-changed", (e) => {
704
- const assessmentitem = e.composedPath()[0];
705
- this._updateItemVariablesInTestContext(assessmentitem.identifier, assessmentitem.variables);
706
- });
707
- }
708
- get context() {
709
- return this._testContext;
710
- }
711
- // /* restores the context by updating existing items and adding new items from the "contextToRestore" parameter into the "this._context.items" array. */
712
- set context(testContext2) {
713
- if (testContext2 === null || testContext2 === void 0) return;
714
- this._testContext = { ...testContext2 };
715
- testContext2.items?.forEach((itemContext) => {
716
- const existingItemContext = this._testContext.items.find((i) => i.identifier === itemContext.identifier);
717
- if (existingItemContext) {
718
- existingItemContext.variables = itemContext.variables;
719
- } else {
720
- this._testContext.items.push(itemContext);
721
- }
722
- });
723
- }
724
- _updateItemVariablesInTestContext(identifier, variables) {
725
- this._testContext = {
726
- ...this._testContext,
727
- // Spread existing test context properties
728
- items: this._testContext.items.map((itemContext) => {
729
- if (itemContext.identifier !== identifier) {
730
- return itemContext;
731
- }
732
- return {
733
- ...itemContext,
734
- // Keep other properties of the item context
735
- variables: variables.map((variable) => {
736
- const matchingVariable = itemContext.variables.find((v) => v.identifier === variable.identifier);
737
- return matchingVariable ? { ...matchingVariable, ...variable } : variable;
738
- })
739
- };
740
- })
741
- };
742
- }
743
- // private _addItemToTestContext(
744
- // e: CustomEvent<{ href: string; identifier: string; category: string }> & { target: QtiAssessmentItemRef }
745
- // ): void {
746
- // const { href, identifier, category } = e.detail;
747
- // // Update test context items, adding a new item if the identifier is not already in the list
748
- // if (!this._testContext.items.some(item => item.identifier === identifier)) {
749
- // this._testContext.items.push({
750
- // href,
751
- // identifier,
752
- // category,
753
- // variables: [{ identifier: 'completionStatus', value: 'not_attempted', type: 'outcome' }]
754
- // // category: e.target.category
755
- // });
756
- // }
757
- // }
758
- connectedCallback() {
759
- super.connectedCallback();
760
- this.setAttribute("qti-test", "");
761
- }
762
- };
763
- __decorateClass([
764
- (0, import_decorators5.state)(),
765
- (0, import_context8.provide)({ context: testContext })
766
- ], TestBase.prototype, "_testContext", 2);
767
- __decorateClass([
768
- (0, import_decorators5.state)(),
769
- (0, import_context8.provide)({ context: testElement })
770
- ], TestBase.prototype, "testElement", 2);
771
-
772
- // src/lib/qti-test/qti-test.ts
773
- var QtiTest = class extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {
774
- /**
775
- * Lifecycle callback invoked when the element is added to the DOM.
776
- * Automatically appends the content of a `<template>` element (if present)
777
- * to the shadow DOM.
778
- */
779
- connectedCallback() {
780
- super.connectedCallback();
781
- const template = this.querySelector(":scope > template");
782
- if (template) {
783
- this.shadowRoot?.appendChild(template.content);
784
- }
785
- }
786
- /**
787
- * Renders the component's template.
788
- * Provides a default `<slot>` for content projection.
789
- */
790
- render() {
791
- return import_lit6.html`<slot></slot>`;
792
- }
793
- };
794
- QtiTest = __decorateClass([
795
- (0, import_decorators6.customElement)("qti-test")
796
- ], QtiTest);
797
-
798
- // src/lib/qti-test/components/test-next.ts
799
- var import_lit9 = require("lit");
800
- var import_decorators10 = require("lit/decorators.js");
801
-
802
- // src/lib/qti-test/components/styles.ts
803
- var import_lit7 = require("lit");
804
- var form = import_lit7.css`
805
- display: inline-flex;
806
- align-items: center;
807
- cursor: pointer;
808
- padding: 0.5rem 1rem;
809
- border-radius: 0.25rem;
810
- user-select: none;
811
- `;
812
- var btn = import_lit7.css`
813
- background-color: lightgray;
814
- ${form};
815
- `;
816
- var dis = import_lit7.css`
817
- cursor: not-allowed;
818
- opacity: 0.5;
819
- `;
820
- var ind = import_lit7.css`
821
- ${form};
822
- border: 1px solid gray;
823
- `;
824
-
825
- // src/lib/qti-test/components/test-component.abstract.ts
826
- var import_context10 = require("@lit/context");
827
- var import_lit8 = require("lit");
828
- var import_decorators8 = require("lit/decorators.js");
829
-
830
- // src/lib/decorators/watch.ts
831
- function watch(propertyName, options) {
832
- const resolvedOptions = {
833
- waitUntilFirstUpdate: false,
834
- ...options
835
- };
836
- return (proto, decoratedFnName) => {
837
- const { update } = proto;
838
- const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
839
- proto.update = function(changedProps) {
840
- watchedProperties.forEach((property10) => {
841
- const key = property10;
842
- if (changedProps.has(key)) {
843
- const oldValue = changedProps.get(key);
844
- const newValue = this[key];
845
- if (oldValue !== newValue) {
846
- if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
847
- this[decoratedFnName](oldValue, newValue);
848
- }
849
- }
850
- }
851
- });
852
- update.call(this, changedProps);
853
- };
854
- };
855
- }
856
-
857
- // src/lib/decorators/prop-internal-state.ts
858
- var import_decorators7 = require("lit/decorators.js");
859
- function propInternalState(options) {
860
- return (protoOrDescriptor, name) => {
861
- (0, import_decorators7.property)(options)(protoOrDescriptor, name);
862
- const key = `__${name}`;
863
- Object.defineProperty(protoOrDescriptor, name, {
864
- get() {
865
- return this[key];
866
- },
867
- set(value) {
868
- const oldValue = this[key];
869
- this[key] = value;
870
- if (oldValue !== value) {
871
- if (this._internals?.states) {
872
- const stateName = name.toLowerCase();
873
- if (value) {
874
- this._internals.states.add(`--${stateName}`);
875
- } else {
876
- this._internals.states.delete(`--${stateName}`);
877
- }
878
- }
879
- if (options.aria && this._internals) {
880
- const ariaAttribute = options.aria;
881
- if (value) {
882
- this._internals[ariaAttribute] = "true";
883
- } else {
884
- this._internals[ariaAttribute] = null;
885
- }
886
- }
887
- this.requestUpdate(name, oldValue);
888
- }
889
- },
890
- configurable: true,
891
- enumerable: true
892
- });
893
- };
894
- }
895
-
896
- // src/lib/qti-test/components/test-component.abstract.ts
897
- var TestComponent = class extends import_lit8.LitElement {
898
- constructor() {
899
- super();
900
- this.disabled = true;
901
- this._internals = this.attachInternals();
902
- }
903
- _handleTestElementChange(_oldValue, newValue) {
904
- if (newValue.el) {
905
- this.disabled = false;
906
- }
907
- }
908
- willUpdate(changedProperties) {
909
- if (changedProperties.has("_testContext")) {
910
- const { items = [], navItemId } = this._testContext ?? {};
911
- this.itemIndex = items.findIndex((item) => item.identifier === navItemId);
912
- this.items = items;
913
- this.view = this._testContext?.view;
914
- }
915
- }
916
- _switchView(view) {
917
- this.dispatchEvent(
918
- new CustomEvent("on-test-switch-view", {
919
- composed: true,
920
- bubbles: true,
921
- detail: view
922
- })
923
- );
924
- }
925
- _requestItem(identifier) {
926
- this.dispatchEvent(
927
- new CustomEvent("qti-request-test-item", {
928
- composed: true,
929
- bubbles: true,
930
- detail: identifier
931
- })
932
- );
933
- }
934
- };
935
- __decorateClass([
936
- propInternalState({
937
- type: Boolean,
938
- reflect: true,
939
- aria: "ariaDisabled"
940
- // Maps to `aria-disabled` attribute
941
- })
942
- ], TestComponent.prototype, "disabled", 2);
943
- __decorateClass([
944
- (0, import_decorators8.state)(),
945
- (0, import_context10.consume)({ context: testContext, subscribe: true })
946
- ], TestComponent.prototype, "_testContext", 2);
947
- __decorateClass([
948
- (0, import_decorators8.state)(),
949
- (0, import_context10.consume)({ context: testElement, subscribe: true })
950
- ], TestComponent.prototype, "_testElement", 2);
951
- __decorateClass([
952
- watch("_testElement")
953
- ], TestComponent.prototype, "_handleTestElementChange", 1);
954
-
955
- // src/lib/qti-test/components/test-next.ts
956
- var TestNext = class extends TestComponent {
957
- constructor() {
958
- super();
959
- this._internals.role = "button";
960
- this._internals.ariaLabel = "Next item";
961
- this.addEventListener("click", (e) => {
962
- e.preventDefault();
963
- if (!this.disabled) this._requestItem(this.items[this.itemIndex + 1].identifier);
964
- });
965
- }
966
- willUpdate(changedProperties) {
967
- super.willUpdate(changedProperties);
968
- if (changedProperties.has("_testContext")) {
969
- this.disabled = !this._testElement?.el || this.itemIndex < 0 || this.itemIndex >= this.items.length - 1;
970
- }
971
- }
972
- render() {
973
- return import_lit9.html`<slot></slot>`;
974
- }
975
- };
976
- TestNext.styles = import_lit9.css`
977
- :host {
978
- ${btn};
979
- }
980
- :host([disabled]) {
981
- ${dis};
982
- }
983
- `;
984
- TestNext = __decorateClass([
985
- (0, import_decorators10.customElement)("test-next")
986
- ], TestNext);
987
-
988
- // src/lib/qti-test/components/test-prev.ts
989
- var import_lit10 = require("lit");
990
- var import_decorators11 = require("lit/decorators.js");
991
- var TestPrev = class extends TestComponent {
992
- constructor() {
993
- super();
994
- this._internals.role = "button";
995
- this._internals.ariaLabel = "Next item";
996
- this.addEventListener("click", (e) => {
997
- e.preventDefault();
998
- if (!this.disabled) this._requestItem(this.items[this.itemIndex - 1].identifier);
999
- });
1000
- }
1001
- willUpdate(changedProperties) {
1002
- super.willUpdate(changedProperties);
1003
- if (changedProperties.has("_testContext")) {
1004
- this.disabled = !this._testElement?.el || this.itemIndex === 0 || this.itemIndex === -1;
1005
- }
1006
- }
1007
- render() {
1008
- return import_lit10.html`<slot></slot>`;
1009
- }
1010
- };
1011
- TestPrev.styles = import_lit10.css`
1012
- :host {
1013
- ${btn};
1014
- }
1015
- :host([disabled]) {
1016
- ${dis};
1017
- }
1018
- `;
1019
- TestPrev = __decorateClass([
1020
- (0, import_decorators11.customElement)("test-prev")
1021
- ], TestPrev);
1022
-
1023
- // src/lib/qti-test/components/test-view.ts
1024
- var import_lit11 = require("lit");
1025
- var import_decorators12 = require("lit/decorators.js");
1026
- var TestView = class extends TestComponent {
1027
- constructor() {
1028
- super(...arguments);
1029
- this.label = "view";
1030
- this.viewOptions = "";
1031
- this._handleViewOptionsChange = (_, viewOptions) => {
1032
- console.log(viewOptions);
1033
- };
1034
- this._viewOptions = TestView.DEFAULT_VIEW_OPTIONS;
1035
- }
1036
- // updated(changedProperties: PropertyValues) {
1037
- // super.updated(changedProperties);
1038
- // if (changedProperties.has('viewOptionsString')) {
1039
- // this._updateViewOptions();
1040
- // }
1041
- // }
1042
- // private _updateViewOptions() {
1043
- // if (this.viewOptionsString) {
1044
- // const options = this.viewOptionsString.split(',').map(opt => opt.trim());
1045
- // this.viewOptions = options.filter(opt => TestView.DEFAULT_VIEW_OPTIONS.includes(opt));
1046
- // } else {
1047
- // this.viewOptions = TestView.DEFAULT_VIEW_OPTIONS;
1048
- // }
1049
- // }
1050
- render() {
1051
- return import_lit11.html`
1052
- <label part="label" for="viewSelect">${this.label}</label>
1053
- <select
1054
- part="select"
1055
- id="viewSelect"
1056
- .disabled=${this.disabled}
1057
- @change=${(e) => {
1058
- const el = e.target;
1059
- this._switchView(el.value);
1060
- }}
1061
- >
1062
- ${this._viewOptions.map((v) => import_lit11.html`<option value="${v}" ?selected=${v === this.view}>${v}</option>`)}
1063
- </select>
1064
- `;
1065
- }
1066
- };
1067
- TestView.DEFAULT_VIEW_OPTIONS = ["author", "candidate", "proctor", "scorer", "testConstructor", "tutor"];
1068
- __decorateClass([
1069
- (0, import_decorators12.property)({ type: String })
1070
- ], TestView.prototype, "label", 2);
1071
- __decorateClass([
1072
- (0, import_decorators12.property)({ type: String, attribute: "view-options" })
1073
- ], TestView.prototype, "viewOptions", 2);
1074
- __decorateClass([
1075
- watch("viewOptions")
1076
- ], TestView.prototype, "_handleViewOptionsChange", 2);
1077
- TestView = __decorateClass([
1078
- (0, import_decorators12.customElement)("test-view")
1079
- ], TestView);
1080
-
1081
- // src/lib/qti-test/components/test-item-link.ts
1082
- var import_lit12 = require("lit");
1083
- var import_decorators13 = require("lit/decorators.js");
1084
- var TestItemLink = class extends TestComponent {
1085
- constructor() {
1086
- super();
1087
- this.itemId = null;
1088
- this.addEventListener("click", () => this._requestItem(this.itemId));
1089
- }
1090
- render() {
1091
- return import_lit12.html` <slot></slot> `;
1092
- }
1093
- };
1094
- __decorateClass([
1095
- (0, import_decorators13.property)({ type: String, attribute: "item-id" })
1096
- ], TestItemLink.prototype, "itemId", 2);
1097
- TestItemLink = __decorateClass([
1098
- (0, import_decorators13.customElement)("test-item-link")
1099
- ], TestItemLink);
1100
-
1101
- // src/lib/qti-test/components/test-container.ts
1102
- var import_lit13 = require("lit");
1103
- var import_decorators14 = require("lit/decorators.js");
1104
- var import_until = require("lit/directives/until.js");
1105
-
1106
- // inline:../../../item.css?inline
1107
- var item_default = `@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
1108
-
1109
- :root,
1110
- :host {
1111
- /* Active colors */
1112
- --qti-bg-active: #ffecec;
1113
- --qti-border-active: #f86d70;
1114
-
1115
- /* Gap size */
1116
- --qti-gap-size: 1rem;
1117
-
1118
- /* Background colors */
1119
- --qti-bg: white;
1120
- --qti-hover-bg: #f9fafb;
1121
-
1122
- /* Light theme colors */
1123
- --qti-light-bg-active: #f0f0f0; /* Light gray */
1124
- --qti-light-border-active: #d0d0d0; /* Medium gray */
1125
-
1126
- /* Dark theme colors */
1127
- --qti-dark-bg-active: #1f2937; /* Dark gray */
1128
- --qti-dark-border-active: #64748b; /* Medium gray */
1129
-
1130
- /* Disabled colors */
1131
- --qti-disabled-bg: #f3f4f6;
1132
- --qti-disabled-color: #45484f;
1133
-
1134
- /* Border properties */
1135
- --qti-border-thickness: 2px;
1136
- --qti-border-style: solid;
1137
- --qti-border-color: #c6cad0;
1138
- --qti-border-radius: 0.3rem;
1139
- --qti-drop-border-radius: calc(var(--qti-border-radius) + var(--qti-border-thickness));
1140
-
1141
- /* Focus & active states */
1142
- --qti-focus-border-width: 5px;
1143
- --qti-focus-color: #bddcff7e;
1144
-
1145
- /* Class-specific variables */
1146
-
1147
- /* Form elements */
1148
- --qti-form-size: 1rem;
1149
-
1150
- /* Point elements */
1151
- --qti-point-size: 2rem;
1152
-
1153
- /* Order buttons */
1154
- --qti-order-size: 2rem;
1155
-
1156
- /* Generic padding for all elements */
1157
- --qti-padding-vertical: 0.5rem; /* py-2 */
1158
- --qti-padding-horizontal: 0.5rem; /* px-2 */
1159
- }
1160
-
1161
- /* SVG masks and backgrounds */
1162
-
1163
- .chevron {
1164
- background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
1165
- no-repeat center right 6px;
1166
- }
1167
-
1168
- .handle {
1169
- background-image: radial-gradient(
1170
- circle at center,
1171
- rgb(0 0 0 / 10%) 0,
1172
- rgb(0 0 0 / 20%) 2px,
1173
- rgb(255 255 255 / 0%) 2px,
1174
- rgb(255 255 255 / 0%) 100%
1175
- );
1176
- background-repeat: repeat-y;
1177
- background-position: left center;
1178
- background-size: 14px 8px;
1179
- }
1180
-
1181
- .check-mask {
1182
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1183
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1184
- }
1185
-
1186
- /*
1187
- Following are classes that can be applied to elements and element states, so they are not used directly
1188
- The @apply directive is used to apply these classes to elements
1189
- */
1190
-
1191
- /* Apply .bordered to an element */
1192
-
1193
- .bordered {
1194
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1195
- outline: none;
1196
- }
1197
-
1198
- /* Apply .form rules for checkbox and radiobutton */
1199
-
1200
- .form {
1201
-
1202
- display: grid;
1203
- place-content: center;
1204
- width: var(--qti-form-size);
1205
- height: var(--qti-form-size);
1206
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1207
- outline: none;
1208
- }
1209
-
1210
- /* Apply .button rules for button-like elements, such as drags and buttons */
1211
-
1212
- .button {
1213
-
1214
- border-radius: var(--qti-border-radius);
1215
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
1216
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1217
- outline: none;
1218
- }
1219
-
1220
- /* Apply .select for the select dropdown element */
1221
-
1222
- .select {
1223
-
1224
- border-radius: var(--qti-border-radius);
1225
- position: relative;
1226
- -webkit-appearance: none;
1227
- -moz-appearance: none;
1228
- appearance: none;
1229
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
1230
- padding-right: calc(var(--qti-padding-horizontal) + 1.5rem); /* 1.5rem for the chevron */ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color); outline: none; background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
1231
- no-repeat center right 6px;
1232
- }
1233
-
1234
- /* Apply .text for the input text and textarea */
1235
-
1236
- .text {
1237
-
1238
- border-radius: 0;
1239
- cursor: text;
1240
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
1241
- background: unset;
1242
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1243
- outline: none;
1244
- }
1245
-
1246
- /* Apply .spot for hotspot shapes */
1247
-
1248
- .spot {
1249
-
1250
- width: 100%;
1251
- height: 100%;
1252
- background-color: transparent;
1253
- padding: 0;
1254
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1255
- outline: none;
1256
- }
1257
-
1258
- /* Apply .point for circular small hotspots */
1259
-
1260
- .point {
1261
-
1262
- border-radius: 100%;
1263
- width: var(--qti-point-size);
1264
- height: var(--qti-point-size);
1265
- background-color: transparent;
1266
- padding: 0;
1267
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1268
- outline: none;
1269
- }
1270
-
1271
- /* Apply .drag for draggable elements */
1272
-
1273
- .drag {
1274
-
1275
- transition:
1276
- transform 200ms ease-out,
1277
- box-shadow 200ms ease-out,
1278
- rotate 200ms ease-out;
1279
- cursor: grab;
1280
- background-color: var(--qti-bg);
1281
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
1282
- border-radius: var(--qti-border-radius);
1283
- padding-left: calc(var(--qti-padding-horizontal) + 0.5rem) !important; /* 1.5rem for the drag */ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color); outline: none; background-image: radial-gradient(
1284
- circle at center,
1285
- rgb(0 0 0 / 10%) 0,
1286
- rgb(0 0 0 / 20%) 2px,
1287
- rgb(255 255 255 / 0%) 2px,
1288
- rgb(255 255 255 / 0%) 100%
1289
- ); background-repeat: repeat-y; background-position: left center; background-size: 14px 8px;
1290
- }
1291
-
1292
- /* Apply .dragging for the dragging state of a draggable element */
1293
-
1294
- .dragging {
1295
- pointer-events: none;
1296
- rotate: -2deg;
1297
- box-shadow:
1298
- 0 8px 12px rgb(0 0 0 / 20%),
1299
- 0 4px 8px rgb(0 0 0 / 10%);
1300
- }
1301
-
1302
- /* Apply .drop for an element where you can drop the draggable */
1303
-
1304
- .drop {
1305
-
1306
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
1307
- center no-repeat;
1308
- border-radius: var(--qti-border-radius);
1309
- position: relative;
1310
- background-color: var(--qti-bg);
1311
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1312
- outline: none;
1313
- }
1314
-
1315
- /* Apply .dropping for an indicator where you can drop the draggable */
1316
-
1317
- .dropping {
1318
- background-color: var(--qti-bg-active);
1319
- }
1320
-
1321
- /* Apply .order for a small circular button */
1322
-
1323
- .order {
1324
-
1325
- display: grid;
1326
- place-content: center;
1327
-
1328
- /* background-color: var(--qti-bg-active); */
1329
- border-radius: 100%;
1330
- width: var(--qti-order-size);
1331
- height: var(--qti-order-size);
1332
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1333
- outline: none;
1334
- }
1335
-
1336
- /* Apply .check-size for radio and checkbox size */
1337
-
1338
- .check-size {
1339
- width: calc(var(--qti-form-size) - 6px);
1340
- height: calc(var(--qti-form-size) - 6px);
1341
- }
1342
-
1343
- /* Apply .check for checkbox */
1344
-
1345
- .check {
1346
- gap: 0.5rem;
1347
- border-radius: var(--qti-border-radius);
1348
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
1349
- outline: none;
1350
- cursor: pointer;
1351
- }
1352
-
1353
- /* Apply .check-radio for outer circle of the radio buttons */
1354
-
1355
- .check-radio {
1356
-
1357
- border-radius: 100%;
1358
-
1359
- display: grid;
1360
-
1361
- place-content: center;
1362
-
1363
- width: var(--qti-form-size);
1364
-
1365
- height: var(--qti-form-size);
1366
-
1367
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1368
-
1369
- outline: none;
1370
- }
1371
-
1372
- /* Apply .check-radio-checked for the inner checked radio */
1373
-
1374
- .check-radio-checked {
1375
- background-color: var(--qti-border-active);
1376
- border-radius: 100%;
1377
- }
1378
-
1379
- /* Apply .check-checkbox for outer square of the checkbox */
1380
-
1381
- .check-checkbox {
1382
-
1383
- display: flex;
1384
- place-items: center;
1385
- border-radius: var(--qti-border-radius);
1386
- display: grid;
1387
- place-content: center;
1388
- width: var(--qti-form-size);
1389
- height: var(--qti-form-size);
1390
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
1391
- outline: none;
1392
- }
1393
-
1394
- /* Apply .check-checkbox-checked for the inner checkmark */
1395
-
1396
- .check-checkbox-checked {
1397
- background-color: var(--qti-border-active);
1398
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1399
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1400
- }
1401
-
1402
- /* Apply .hov for hover state */
1403
-
1404
- .hov {
1405
- background-color: var(--qti-hover-bg);
1406
- }
1407
-
1408
- /* Apply .foc for focus state */
1409
-
1410
- .foc {
1411
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
1412
- }
1413
-
1414
- /* Apply .act for active state */
1415
-
1416
- .act {
1417
- border-color: var(--qti-border-active);
1418
- background-color: var(--qti-bg-active);
1419
- }
1420
-
1421
- .act-bg {
1422
- background-color: var(--qti-bg-active);
1423
- }
1424
-
1425
- .act-bor {
1426
- border-color: var(--qti-border-active);
1427
- }
1428
-
1429
- /* Apply .rdo for readonly state */
1430
-
1431
- .rdo {
1432
- cursor: pointer;
1433
- background-color: var(--qti-bg);
1434
- outline: 0;
1435
- border: none;
1436
- }
1437
-
1438
- /* Apply .dis for disabled state */
1439
-
1440
- .dis {
1441
- cursor: not-allowed;
1442
- background-color: var(--qti-disabled-bg);
1443
- color: var(--qti-disabled-color);
1444
- border-color: var(--qti-border-color);
1445
- outline: 4px solid var(--qti-disabled-bg);
1446
- }
1447
-
1448
- /* base */
1449
-
1450
- /* ============================
1451
- QTI 3 shared css
1452
- 1. Display
1453
- 2. Special Flex styles
1454
- 3. Margin
1455
- 4. Padding
1456
- 5. Horizontal Alignment styles
1457
- 6. Vertical Alignment styles
1458
- 7. Height
1459
- 8. Width
1460
- 9. Text-Indent
1461
- 10. List Style
1462
- 11. Layout
1463
- 12. Other QTI 3 presentation utilities
1464
- ============================ */
1465
-
1466
- /* ==========
1467
- Display css
1468
- =========== */
1469
-
1470
- .qti-display-inline {
1471
- display: inline;
1472
- }
1473
-
1474
- .qti-display-inline-block {
1475
- display: inline-block;
1476
- }
1477
-
1478
- .qti-display-block {
1479
- display: block;
1480
- }
1481
-
1482
- .qti-display-flex {
1483
- display: flexbox;
1484
- display: flex;
1485
- }
1486
-
1487
- .qti-display-inline-flex {
1488
- display: inline-flex;
1489
- }
1490
-
1491
- .qti-display-grid {
1492
- display: grid;
1493
- }
1494
-
1495
- .qti-display-inline-grid {
1496
- display: inline-grid;
1497
- }
1498
-
1499
- .qti-display-table {
1500
- display: table;
1501
- }
1502
-
1503
- .qti-display-table-cell {
1504
- display: table-cell;
1505
- }
1506
-
1507
- .qti-display-table-row {
1508
- display: table-row;
1509
- }
1510
-
1511
- .qti-display-list-item {
1512
- display: list-item;
1513
- }
1514
-
1515
- .qti-display-inherit {
1516
- display: inherit;
1517
- }
1518
-
1519
- /*
1520
- * hidden to screen readers and sighted
1521
- */
1522
-
1523
- .qti-hidden {
1524
- display: none;
1525
- }
1526
-
1527
- /*
1528
- * visible to screen readers, hidden to sighted
1529
- */
1530
-
1531
- .qti-visually-hidden {
1532
- position: fixed !important;
1533
- overflow: hidden;
1534
- clip: rect(1px 1px 1px 1px);
1535
- height: 1px;
1536
- width: 1px;
1537
- border: 0;
1538
- margin: -1px;
1539
- }
1540
-
1541
- /* =============================
1542
- Special flex styles
1543
- ============================= */
1544
-
1545
- .qti-flex-direction-column {
1546
- flex-direction: column;
1547
- }
1548
-
1549
- .qti-flex-direction-row {
1550
- flex-direction: row;
1551
- }
1552
-
1553
- .qti-flex-grow-1 {
1554
- flex-grow: 1;
1555
- }
1556
-
1557
- .qti-flex-grow-0 {
1558
- flex-grow: 0;
1559
- }
1560
-
1561
- /* =========
1562
- Margin css
1563
- ========== */
1564
-
1565
- /**
1566
- * For margin Top and Bottom and Left and Right
1567
- */
1568
-
1569
- .qti-margin-0 {
1570
- margin: 0 !important;
1571
- }
1572
-
1573
- .qti-margin-1 {
1574
- margin: 0.25rem !important;
1575
- }
1576
-
1577
- .qti-margin-2 {
1578
- margin: 0.5rem !important;
1579
- }
1580
-
1581
- .qti-margin-3 {
1582
- margin: 1rem !important;
1583
- }
1584
-
1585
- .qti-margin-4 {
1586
- margin: 1.5rem !important;
1587
- }
1588
-
1589
- .qti-margin-5 {
1590
- margin: 3rem !important;
1591
- }
1592
-
1593
- .qti-margin-auto {
1594
- margin: auto !important;
1595
- }
1596
-
1597
- /*
1598
- For margin Left and Right
1599
- */
1600
-
1601
- .qti-margin-x-0 {
1602
- margin-right: 0 !important;
1603
- margin-left: 0 !important;
1604
- }
1605
-
1606
- .qti-margin-x-1 {
1607
- margin-right: 0.25rem !important;
1608
- margin-left: 0.25rem !important;
1609
- }
1610
-
1611
- .qti-margin-x-2 {
1612
- margin-right: 0.5rem !important;
1613
- margin-left: 0.5rem !important;
1614
- }
1615
-
1616
- .qti-margin-x-3 {
1617
- margin-right: 1rem !important;
1618
- margin-left: 1rem !important;
1619
- }
1620
-
1621
- .qti-margin-x-4 {
1622
- margin-right: 1.5rem !important;
1623
- margin-left: 1.5rem !important;
1624
- }
1625
-
1626
- .qti-margin-x-5 {
1627
- margin-right: 3rem !important;
1628
- margin-left: 3rem !important;
1629
- }
1630
-
1631
- .qti-margin-x-auto {
1632
- margin-right: auto !important;
1633
- margin-left: auto !important;
1634
- }
1635
-
1636
- /*
1637
- For margin Top and Bottom
1638
- */
1639
-
1640
- .qti-margin-y-0 {
1641
- margin-top: 0 !important;
1642
- margin-bottom: 0 !important;
1643
- }
1644
-
1645
- .qti-margin-y-1 {
1646
- margin-top: 0.25rem !important;
1647
- margin-bottom: 0.25rem !important;
1648
- }
1649
-
1650
- .qti-margin-y-2 {
1651
- margin-top: 0.5rem !important;
1652
- margin-bottom: 0.5rem !important;
1653
- }
1654
-
1655
- .qti-margin-y-3 {
1656
- margin-top: 1rem !important;
1657
- margin-bottom: 1rem !important;
1658
- }
1659
-
1660
- .qti-margin-y-4 {
1661
- margin-top: 1.5rem !important;
1662
- margin-bottom: 1.5rem !important;
1663
- }
1664
-
1665
- .qti-margin-y-5 {
1666
- margin-top: 3rem !important;
1667
- margin-bottom: 3rem !important;
1668
- }
1669
-
1670
- .qti-margin-y-auto {
1671
- margin-top: auto !important;
1672
- margin-bottom: auto !important;
1673
- }
1674
-
1675
- /*
1676
- For margin Top
1677
- */
1678
-
1679
- .qti-margin-t-0 {
1680
- margin-top: 0 !important;
1681
- }
1682
-
1683
- .qti-margin-t-1 {
1684
- margin-top: 0.25rem !important;
1685
- }
1686
-
1687
- .qti-margin-t-2 {
1688
- margin-top: 0.5rem !important;
1689
- }
1690
-
1691
- .qti-margin-t-3 {
1692
- margin-top: 1rem !important;
1693
- }
1694
-
1695
- .qti-margin-t-4 {
1696
- margin-top: 1.5rem !important;
1697
- }
1698
-
1699
- .qti-margin-t-5 {
1700
- margin-top: 3rem !important;
1701
- }
1702
-
1703
- .qti-margin-t-auto {
1704
- margin-top: auto !important;
1705
- }
1706
-
1707
- /*
1708
- For margin Bottom
1709
- */
1710
-
1711
- .qti-margin-b-0 {
1712
- margin-bottom: 0 !important;
1713
- }
1714
-
1715
- .qti-margin-b-1 {
1716
- margin-bottom: 0.25rem !important;
1717
- }
1718
-
1719
- .qti-margin-b-2 {
1720
- margin-bottom: 0.5rem !important;
1721
- }
1722
-
1723
- .qti-margin-b-3 {
1724
- margin-bottom: 1rem !important;
1725
- }
1726
-
1727
- .qti-margin-b-4 {
1728
- margin-bottom: 1.5rem !important;
1729
- }
1730
-
1731
- .qti-margin-b-5 {
1732
- margin-bottom: 3rem !important;
1733
- }
1734
-
1735
- .qti-margin-b-auto {
1736
- margin-bottom: auto !important;
1737
- }
1738
-
1739
- /*
1740
- For margin Start LTR
1741
- */
1742
-
1743
- .qti-margin-s-0 {
1744
- margin-left: 0 !important;
1745
- }
1746
-
1747
- .qti-margin-s-1 {
1748
- margin-left: 0.25rem !important;
1749
- }
1750
-
1751
- .qti-margin-s-2 {
1752
- margin-left: 0.5rem !important;
1753
- }
1754
-
1755
- .qti-margin-s-3 {
1756
- margin-left: 1rem !important;
1757
- }
1758
-
1759
- .qti-margin-s-4 {
1760
- margin-left: 1.5rem !important;
1761
- }
1762
-
1763
- .qti-margin-s-5 {
1764
- margin-left: 3rem !important;
1765
- }
1766
-
1767
- .qti-margin-s-auto {
1768
- margin-left: auto !important;
1769
- }
1770
-
1771
- /*
1772
- For margin End LTR
1773
- */
1774
-
1775
- .qti-margin-e-0 {
1776
- margin-right: 0 !important;
1777
- }
1778
-
1779
- .qti-margin-e-1 {
1780
- margin-right: 0.25rem !important;
1781
- }
1782
-
1783
- .qti-margin-e-2 {
1784
- margin-right: 0.5rem !important;
1785
- }
1786
-
1787
- .qti-margin-e-3 {
1788
- margin-right: 1rem !important;
1789
- }
1790
-
1791
- .qti-margin-e-4 {
1792
- margin-right: 1.5rem !important;
1793
- }
1794
-
1795
- .qti-margin-e-5 {
1796
- margin-right: 3rem !important;
1797
- }
1798
-
1799
- .qti-margin-e-auto {
1800
- margin-right: auto !important;
1801
- }
1802
-
1803
- /* =========
1804
- Padding css
1805
- ========== */
1806
-
1807
- /*
1808
- For padding Top and Bottom and Left and Right
1809
- */
1810
-
1811
- .qti-padding-0 {
1812
- padding: 0 !important;
1813
- }
1814
-
1815
- .qti-padding-1 {
1816
- padding: 0.25rem !important;
1817
- }
1818
-
1819
- .qti-padding-2 {
1820
- padding: 0.5rem !important;
1821
- }
1822
-
1823
- .qti-padding-3 {
1824
- padding: 1rem !important;
1825
- }
1826
-
1827
- .qti-padding-4 {
1828
- padding: 1.5rem !important;
1829
- }
1830
-
1831
- .qti-padding-5 {
1832
- padding: 3rem !important;
1833
- }
1834
-
1835
- /*
1836
- For padding Left and Right
1837
- */
1838
-
1839
- .qti-padding-x-0 {
1840
- padding-right: 0 !important;
1841
- padding-left: 0 !important;
1842
- }
1843
-
1844
- .qti-padding-x-1 {
1845
- padding-right: 0.25rem !important;
1846
- padding-left: 0.25rem !important;
1847
- }
1848
-
1849
- .qti-padding-x-2 {
1850
- padding-right: 0.5rem !important;
1851
- padding-left: 0.5rem !important;
1852
- }
1853
-
1854
- .qti-padding-x-3 {
1855
- padding-right: 1rem !important;
1856
- padding-left: 1rem !important;
1857
- }
1858
-
1859
- .qti-padding-x-4 {
1860
- padding-right: 1.5rem !important;
1861
- padding-left: 1.5rem !important;
1862
- }
1863
-
1864
- .qti-padding-x-5 {
1865
- padding-right: 3rem !important;
1866
- padding-left: 3rem !important;
1867
- }
1868
-
1869
- /*
1870
- For padding Top and Bottom
1871
- */
1872
-
1873
- .qti-padding-y-0 {
1874
- padding-top: 0 !important;
1875
- padding-bottom: 0 !important;
1876
- }
1877
-
1878
- .qti-padding-y-1 {
1879
- padding-top: 0.25rem !important;
1880
- padding-bottom: 0.25rem !important;
1881
- }
1882
-
1883
- .qti-padding-y-2 {
1884
- padding-top: 0.5rem !important;
1885
- padding-bottom: 0.5rem !important;
1886
- }
1887
-
1888
- .qti-padding-y-3 {
1889
- padding-top: 1rem !important;
1890
- padding-bottom: 1rem !important;
1891
- }
1892
-
1893
- .qti-padding-y-4 {
1894
- padding-top: 1.5rem !important;
1895
- padding-bottom: 1.5rem !important;
1896
- }
1897
-
1898
- .qti-padding-y-5 {
1899
- padding-top: 3rem !important;
1900
- padding-bottom: 3rem !important;
1901
- }
1902
-
1903
- /*
1904
- For padding Top
1905
- */
1906
-
1907
- .qti-padding-t-0 {
1908
- padding-top: 0 !important;
1909
- }
1910
-
1911
- .qti-padding-t-1 {
1912
- padding-top: 0.25rem !important;
1913
- }
1914
-
1915
- .qti-padding-t-2 {
1916
- padding-top: 0.5rem !important;
1917
- }
1918
-
1919
- .qti-padding-t-3 {
1920
- padding-top: 1rem !important;
1921
- }
1922
-
1923
- .qti-padding-t-4 {
1924
- padding-top: 1.5rem !important;
1925
- }
1926
-
1927
- .qti-padding-t-5 {
1928
- padding-top: 3rem !important;
1929
- }
1930
-
1931
- /*
1932
- For padding Bottom
1933
- */
1934
-
1935
- .qti-padding-b-0 {
1936
- padding-bottom: 0 !important;
1937
- }
1938
-
1939
- .qti-padding-b-1 {
1940
- padding-bottom: 0.25rem !important;
1941
- }
1942
-
1943
- .qti-padding-b-2 {
1944
- padding-bottom: 0.5rem !important;
1945
- }
1946
-
1947
- .qti-padding-b-3 {
1948
- padding-bottom: 1rem !important;
1949
- }
1950
-
1951
- .qti-padding-b-4 {
1952
- padding-bottom: 1.5rem !important;
1953
- }
1954
-
1955
- .qti-padding-b-5 {
1956
- padding-bottom: 3rem !important;
1957
- }
1958
-
1959
- /*
1960
- For padding Start LTR
1961
- */
1962
-
1963
- .qti-padding-s-0 {
1964
- padding-left: 0 !important;
1965
- }
1966
-
1967
- .qti-padding-s-1 {
1968
- padding-left: 0.25rem !important;
1969
- }
1970
-
1971
- .qti-padding-s-2 {
1972
- padding-left: 0.5rem !important;
1973
- }
1974
-
1975
- .qti-padding-s-3 {
1976
- padding-left: 1rem !important;
1977
- }
1978
-
1979
- .qti-padding-s-4 {
1980
- padding-left: 1.5rem !important;
1981
- }
1982
-
1983
- .qti-padding-s-5 {
1984
- padding-left: 3rem !important;
1985
- }
1986
-
1987
- /*
1988
- For padding End LTR
1989
- */
1990
-
1991
- .qti-padding-e-0 {
1992
- padding-right: 0 !important;
1993
- }
1994
-
1995
- .qti-padding-e-1 {
1996
- padding-right: 0.25rem !important;
1997
- }
1998
-
1999
- .qti-padding-e-2 {
2000
- padding-right: 0.5rem !important;
2001
- }
2002
-
2003
- .qti-padding-e-3 {
2004
- padding-right: 1rem !important;
2005
- }
2006
-
2007
- .qti-padding-e-4 {
2008
- padding-right: 1.5rem !important;
2009
- }
2010
-
2011
- .qti-padding-e-5 {
2012
- padding-right: 3rem !important;
2013
- }
2014
-
2015
- /* ====================
2016
- Horizontal alignment
2017
- ==================== */
2018
-
2019
- .qti-align-left {
2020
- text-align: left;
2021
- }
2022
-
2023
- .qti-align-center {
2024
- text-align: center;
2025
- }
2026
-
2027
- .qti-align-right {
2028
- text-align: right;
2029
- }
2030
-
2031
- /* ==================
2032
- Vertical alignment
2033
- ================== */
2034
-
2035
- .qti-valign-top {
2036
- vertical-align: top;
2037
- }
2038
-
2039
- .qti-valign-middle {
2040
- vertical-align: middle;
2041
- }
2042
-
2043
- .qti-valign-baseline {
2044
- vertical-align: baseline;
2045
- }
2046
-
2047
- .qti-valign-bottom {
2048
- vertical-align: bottom;
2049
- }
2050
-
2051
- /* =============
2052
- Height styles
2053
- ============= */
2054
-
2055
- .qti-height-0 {
2056
- height: 0;
2057
- }
2058
-
2059
- .qti-height-px {
2060
- height: 1px;
2061
- }
2062
-
2063
- .qti-height-0p5 {
2064
- height: 0.125rem;
2065
- }
2066
-
2067
- .qti-height-1 {
2068
- height: 0.25rem;
2069
- }
2070
-
2071
- .qti-height-1p5 {
2072
- height: 0.375rem;
2073
- }
2074
-
2075
- .qti-height-2 {
2076
- height: 0.5rem;
2077
- }
2078
-
2079
- .qti-height-2p5 {
2080
- height: 0.625rem;
2081
- }
2082
-
2083
- .qti-height-3 {
2084
- height: 0.75rem;
2085
- }
2086
-
2087
- .qti-height-3p5 {
2088
- height: 0.875rem;
2089
- }
2090
-
2091
- .qti-height-4 {
2092
- height: 1rem;
2093
- }
2094
-
2095
- .qti-height-5 {
2096
- height: 1.25rem;
2097
- }
2098
-
2099
- .qti-height-6 {
2100
- height: 1.5rem;
2101
- }
2102
-
2103
- .qti-height-7 {
2104
- height: 1.75rem;
2105
- }
2106
-
2107
- .qti-height-8 {
2108
- height: 2rem;
2109
- }
2110
-
2111
- .qti-height-9 {
2112
- height: 2.25rem;
2113
- }
2114
-
2115
- .qti-height-10 {
2116
- height: 2.5rem;
2117
- }
2118
-
2119
- .qti-height-11 {
2120
- height: 2.75rem;
2121
- }
2122
-
2123
- .qti-height-12 {
2124
- height: 3rem;
2125
- }
2126
-
2127
- .qti-height-14 {
2128
- height: 3.5rem;
2129
- }
2130
-
2131
- .qti-height-16 {
2132
- height: 4rem;
2133
- }
2134
-
2135
- .qti-height-20 {
2136
- height: 5rem;
2137
- }
2138
-
2139
- .qti-height-24 {
2140
- height: 6rem;
2141
- }
2142
-
2143
- .qti-height-28 {
2144
- height: 7rem;
2145
- }
2146
-
2147
- .qti-height-32 {
2148
- height: 8rem;
2149
- }
2150
-
2151
- .qti-height-36 {
2152
- height: 9rem;
2153
- }
2154
-
2155
- .qti-height-40 {
2156
- height: 10rem;
2157
- }
2158
-
2159
- .qti-height-44 {
2160
- height: 11rem;
2161
- }
2162
-
2163
- .qti-height-48 {
2164
- height: 12rem;
2165
- }
2166
-
2167
- .qti-height-52 {
2168
- height: 13rem;
2169
- }
2170
-
2171
- .qti-height-56 {
2172
- height: 14rem;
2173
- }
2174
-
2175
- .qti-height-60 {
2176
- height: 15rem;
2177
- }
2178
-
2179
- .qti-height-64 {
2180
- height: 16rem;
2181
- }
2182
-
2183
- .qti-height-72 {
2184
- height: 18rem;
2185
- }
2186
-
2187
- .qti-height-80 {
2188
- height: 20rem;
2189
- }
2190
-
2191
- .qti-height-96 {
2192
- height: 24rem;
2193
- }
2194
-
2195
- .qti-height-1-2 {
2196
- height: 50%;
2197
- }
2198
-
2199
- .qti-height-1-3 {
2200
- height: 33.3333%;
2201
- }
2202
-
2203
- .qti-height-2-3 {
2204
- height: 66.6667%;
2205
- }
2206
-
2207
- .qti-height-1-4 {
2208
- height: 25%;
2209
- }
2210
-
2211
- .qti-height-2-4 {
2212
- height: 50%;
2213
- }
2214
-
2215
- .qti-height-3-4 {
2216
- height: 75%;
2217
- }
2218
-
2219
- .qti-height-1-5 {
2220
- height: 20%;
2221
- }
2222
-
2223
- .qti-height-2-5 {
2224
- height: 40%;
2225
- }
2226
-
2227
- .qti-height-3-5 {
2228
- height: 60%;
2229
- }
2230
-
2231
- .qti-height-4-5 {
2232
- height: 80%;
2233
- }
2234
-
2235
- .qti-height-1-6 {
2236
- height: 16.6667%;
2237
- }
2238
-
2239
- .qti-height-2-6 {
2240
- height: 33.3333%;
2241
- }
2242
-
2243
- .qti-height-3-6 {
2244
- height: 50%;
2245
- }
2246
-
2247
- .qti-height-4-6 {
2248
- height: 66.6667%;
2249
- }
2250
-
2251
- .qti-height-5-6 {
2252
- height: 83.3333%;
2253
- }
2254
-
2255
- .qti-height-auto {
2256
- height: auto;
2257
- }
2258
-
2259
- .qti-height-full {
2260
- height: 100%;
2261
- }
2262
-
2263
- /* ============
2264
- Width styles
2265
- ============ */
2266
-
2267
- .qti-width-0 {
2268
- width: 0;
2269
- }
2270
-
2271
- .qti-width-px {
2272
- width: 1px;
2273
- }
2274
-
2275
- .qti-width-0p5 {
2276
- width: 0.125rem;
2277
- }
2278
-
2279
- .qti-width-1 {
2280
- width: 0.25rem;
2281
- }
2282
-
2283
- .qti-width-1p5 {
2284
- width: 0.375rem;
2285
- }
2286
-
2287
- .qti-width-2 {
2288
- width: 0.5rem;
2289
- }
2290
-
2291
- .qti-width-2p5 {
2292
- width: 0.625rem;
2293
- }
2294
-
2295
- .qti-width-3 {
2296
- width: 0.75rem;
2297
- }
2298
-
2299
- .qti-width-3p5 {
2300
- width: 0.875rem;
2301
- }
2302
-
2303
- .qti-width-4 {
2304
- width: 1rem;
2305
- }
2306
-
2307
- .qti-width-5 {
2308
- width: 1.25rem;
2309
- }
2310
-
2311
- .qti-width-6 {
2312
- width: 1.5rem;
2313
- }
2314
-
2315
- .qti-width-7 {
2316
- width: 1.75rem;
2317
- }
2318
-
2319
- .qti-width-8 {
2320
- width: 2rem;
2321
- }
2322
-
2323
- .qti-width-9 {
2324
- width: 2.25rem;
2325
- }
2326
-
2327
- .qti-width-10 {
2328
- width: 2.5rem;
2329
- }
2330
-
2331
- .qti-width-11 {
2332
- width: 2.75rem;
2333
- }
2334
-
2335
- .qti-width-12 {
2336
- width: 3rem;
2337
- }
2338
-
2339
- .qti-width-14 {
2340
- width: 3.5rem;
2341
- }
2342
-
2343
- .qti-width-16 {
2344
- width: 4rem;
2345
- }
2346
-
2347
- .qti-width-20 {
2348
- width: 5rem;
2349
- }
2350
-
2351
- .qti-width-24 {
2352
- width: 6rem;
2353
- }
2354
-
2355
- .qti-width-28 {
2356
- width: 7rem;
2357
- }
2358
-
2359
- .qti-width-32 {
2360
- width: 8rem;
2361
- }
2362
-
2363
- .qti-width-36 {
2364
- width: 9rem;
2365
- }
2366
-
2367
- .qti-width-40 {
2368
- width: 10rem;
2369
- }
2370
-
2371
- .qti-width-44 {
2372
- width: 11rem;
2373
- }
2374
-
2375
- .qti-width-48 {
2376
- width: 12rem;
2377
- }
2378
-
2379
- .qti-width-52 {
2380
- width: 13rem;
2381
- }
2382
-
2383
- .qti-width-56 {
2384
- width: 14rem;
2385
- }
2386
-
2387
- .qti-width-60 {
2388
- width: 15rem;
2389
- }
2390
-
2391
- .qti-width-64 {
2392
- width: 16rem;
2393
- }
2394
-
2395
- .qti-width-72 {
2396
- width: 18rem;
2397
- }
2398
-
2399
- .qti-width-80 {
2400
- width: 20rem;
2401
- }
2402
-
2403
- .qti-width-96 {
2404
- width: 24rem;
2405
- }
2406
-
2407
- .qti-width-auto {
2408
- width: auto;
2409
- }
2410
-
2411
- .qti-width-1-2 {
2412
- width: 50%;
2413
- }
2414
-
2415
- .qti-width-1-3 {
2416
- width: 33.3333%;
2417
- }
2418
-
2419
- .qti-width-2-3 {
2420
- width: 66.6667%;
2421
- }
2422
-
2423
- .qti-width-1-4 {
2424
- width: 25%;
2425
- }
2426
-
2427
- .qti-width-2-4 {
2428
- width: 50%;
2429
- }
2430
-
2431
- .qti-width-3-4 {
2432
- width: 75%;
2433
- }
2434
-
2435
- .qti-width-1-5 {
2436
- width: 20%;
2437
- }
2438
-
2439
- .qti-width-2-5 {
2440
- width: 40%;
2441
- }
2442
-
2443
- .qti-width-3-5 {
2444
- width: 60%;
2445
- }
2446
-
2447
- .qti-width-4-5 {
2448
- width: 80%;
2449
- }
2450
-
2451
- .qti-width-1-6 {
2452
- width: 16.6667%;
2453
- }
2454
-
2455
- .qti-width-2-6 {
2456
- width: 33.3333%;
2457
- }
2458
-
2459
- .qti-width-3-6 {
2460
- width: 50%;
2461
- }
2462
-
2463
- .qti-width-4-6 {
2464
- width: 66.6667%;
2465
- }
2466
-
2467
- .qti-width-5-6 {
2468
- width: 83.3333%;
2469
- }
2470
-
2471
- .qti-width-1-12 {
2472
- width: 8.3333%;
2473
- }
2474
-
2475
- .qti-width-2-12 {
2476
- width: 16.6667%;
2477
- }
2478
-
2479
- .qti-width-3-12 {
2480
- width: 25%;
2481
- }
2482
-
2483
- .qti-width-4-12 {
2484
- width: 33.3333%;
2485
- }
2486
-
2487
- .qti-width-5-12 {
2488
- width: 41.6667%;
2489
- }
2490
-
2491
- .qti-width-6-12 {
2492
- width: 50%;
2493
- }
2494
-
2495
- .qti-width-7-12 {
2496
- width: 58.3333%;
2497
- }
2498
-
2499
- .qti-width-8-12 {
2500
- width: 66.6667%;
2501
- }
2502
-
2503
- .qti-width-9-12 {
2504
- width: 75%;
2505
- }
2506
-
2507
- .qti-width-10-12 {
2508
- width: 83.3333%;
2509
- }
2510
-
2511
- .qti-width-11-12 {
2512
- width: 91.6667%;
2513
- }
2514
-
2515
- .qti-width-full,
2516
- .qti-fullwidth {
2517
- width: 100%;
2518
- }
2519
-
2520
- /* ==================
2521
- Text Indent styles
2522
- ================== */
2523
-
2524
- .qti-text-indent-0 {
2525
- text-indent: 0;
2526
- }
2527
-
2528
- .qti-text-indent-px {
2529
- text-indent: 1px;
2530
- }
2531
-
2532
- .qti-text-indent-0p5 {
2533
- text-indent: 0.125rem;
2534
- }
2535
-
2536
- .qti-text-indent-1 {
2537
- text-indent: 0.25rem;
2538
- }
2539
-
2540
- .qti-text-indent-1p5 {
2541
- text-indent: 0.375rem;
2542
- }
2543
-
2544
- .qti-text-indent-2 {
2545
- text-indent: 0.5rem;
2546
- }
2547
-
2548
- .qti-text-indent-2p5 {
2549
- text-indent: 0.625rem;
2550
- }
2551
-
2552
- .qti-text-indent-3 {
2553
- text-indent: 0.75rem;
2554
- }
2555
-
2556
- .qti-text-indent-3p5 {
2557
- text-indent: 0.875rem;
2558
- }
2559
-
2560
- .qti-text-indent-4 {
2561
- text-indent: 1rem;
2562
- }
2563
-
2564
- .qti-text-indent-5 {
2565
- text-indent: 1.25rem;
2566
- }
2567
-
2568
- .qti-text-indent-6 {
2569
- text-indent: 1.5rem;
2570
- }
2571
-
2572
- .qti-text-indent-7 {
2573
- text-indent: 1.75rem;
2574
- }
2575
-
2576
- .qti-text-indent-8 {
2577
- text-indent: 2rem;
2578
- }
2579
-
2580
- .qti-text-indent-12 {
2581
- text-indent: 3rem;
2582
- }
2583
-
2584
- .qti-text-indent-16 {
2585
- text-indent: 4rem;
2586
- }
2587
-
2588
- .qti-text-indent-20 {
2589
- text-indent: 5rem;
2590
- }
2591
-
2592
- .qti-text-indent-24 {
2593
- text-indent: 6rem;
2594
- }
2595
-
2596
- .qti-text-indent-28 {
2597
- text-indent: 7rem;
2598
- }
2599
-
2600
- .qti-text-indent-32 {
2601
- text-indent: 8rem;
2602
- }
2603
-
2604
- /* =================
2605
- List Style styles
2606
- ================= */
2607
-
2608
- .qti-list-style-type-none {
2609
- list-style-type: none;
2610
- }
2611
-
2612
- .qti-list-style-type-disc {
2613
- list-style-type: disc;
2614
- }
2615
-
2616
- .qti-list-style-type-circle {
2617
- list-style-type: circle;
2618
- }
2619
-
2620
- .qti-list-style-type-square {
2621
- list-style-type: square;
2622
- }
2623
-
2624
- .qti-list-style-type-decimal {
2625
- list-style-type: decimal;
2626
- }
2627
-
2628
- .qti-list-style-type-decimal-leading-zero {
2629
- list-style-type: decimal-leading-zero;
2630
- }
2631
-
2632
- .qti-list-style-type-lower-alpha {
2633
- list-style-type: lower-alpha;
2634
- }
2635
-
2636
- .qti-list-style-type-upper-alpha {
2637
- list-style-type: upper-alpha;
2638
- }
2639
-
2640
- .qti-list-style-type-lower-roman {
2641
- list-style-type: lower-roman;
2642
- }
2643
-
2644
- .qti-list-style-type-upper-roman {
2645
- list-style-type: upper-roman;
2646
- }
2647
-
2648
- .qti-list-style-type-lower-latin {
2649
- list-style-type: lower-latin;
2650
- }
2651
-
2652
- .qti-list-style-type-upper-latin {
2653
- list-style-type: upper-latin;
2654
- }
2655
-
2656
- .qti-list-style-type-lower-greek {
2657
- list-style-type: lower-greek;
2658
- }
2659
-
2660
- .qti-list-style-type-arabic-indic {
2661
- list-style-type: arabic-indic;
2662
- }
2663
-
2664
- .qti-list-style-type-armenian {
2665
- list-style-type: armenian;
2666
- }
2667
-
2668
- .qti-list-style-type-lower-armenian {
2669
- list-style-type: lower-armenian;
2670
- }
2671
-
2672
- .qti-list-style-type-upper-armenian {
2673
- list-style-type: upper-armenian;
2674
- }
2675
-
2676
- .qti-list-style-type-bengali {
2677
- list-style-type: bengali;
2678
- }
2679
-
2680
- .qti-list-style-type-cambodian {
2681
- list-style-type: cambodian;
2682
- }
2683
-
2684
- .qti-list-style-type-simp-chinese-formal {
2685
- list-style-type: simp-chinese-formal;
2686
- }
2687
-
2688
- .qti-list-style-type-simp-chinese-informal {
2689
- list-style-type: simp-chinese-informal;
2690
- }
2691
-
2692
- .qti-list-style-type-trad-chinese-formal {
2693
- list-style-type: trad-chinese-formal;
2694
- }
2695
-
2696
- .qti-list-style-type-trad-chinese-informal {
2697
- list-style-type: trad-chinese-informal;
2698
- }
2699
-
2700
- .qti-list-style-type-cjk-ideographic {
2701
- list-style-type: cjk-ideographic;
2702
- }
2703
-
2704
- .qti-list-style-type-cjk-heavenly-stem {
2705
- list-style-type: cjk-heavenly-stem;
2706
- }
2707
-
2708
- .qti-list-style-type-cjk-earthly-branch {
2709
- list-style-type: cjk-earthly-branch;
2710
- }
2711
-
2712
- .qti-list-style-type-devanagari {
2713
- list-style-type: devanagari;
2714
- }
2715
-
2716
- .qti-list-style-type-ethiopic-halehame-ti-er {
2717
- list-style-type: ethiopic-halehame-ti-er;
2718
- }
2719
-
2720
- .qti-list-style-type-ethiopic-halehame-ti-et {
2721
- list-style-type: ethiopic-halehame-ti-et;
2722
- }
2723
-
2724
- .qti-list-style-type-ethiopic-halehame-am {
2725
- list-style-type: ethiopic-halehame-am;
2726
- }
2727
-
2728
- .qti-list-style-type-ethiopic-halehame {
2729
- list-style-type: ethiopic-halehame;
2730
- }
2731
-
2732
- .qti-list-style-type-georgian {
2733
- list-style-type: georgian;
2734
- }
2735
-
2736
- .qti-list-style-type-gujarati {
2737
- list-style-type: gujarati;
2738
- }
2739
-
2740
- .qti-list-style-type-gurmukhi {
2741
- list-style-type: gurmukhi;
2742
- }
2743
-
2744
- .qti-list-style-type-hangul {
2745
- list-style-type: hangul;
2746
- }
2747
-
2748
- .qti-list-style-type-hangul-consonant {
2749
- list-style-type: hangul-consonant;
2750
- }
2751
-
2752
- .qti-list-style-type-hebrew {
2753
- list-style-type: hebrew;
2754
- }
2755
-
2756
- .qti-list-style-type-hiragana {
2757
- list-style-type: hiragana;
2758
- }
2759
-
2760
- .qti-list-style-type-hiragana-iroha {
2761
- list-style-type: hiragana-iroha;
2762
- }
2763
-
2764
- .qti-list-style-type-khmer {
2765
- list-style-type: khmer;
2766
- }
2767
-
2768
- .qti-list-style-type-korean-hangul-formal {
2769
- list-style-type: korean-hangul-formal;
2770
- }
2771
-
2772
- .qti-list-style-type-korean-hanja-formal {
2773
- list-style-type: korean-hanja-formal;
2774
- }
2775
-
2776
- .qti-list-style-type-korean-hanja-informal {
2777
- list-style-type: korean-hanja-informal;
2778
- }
2779
-
2780
- .qti-list-style-type-lao {
2781
- list-style-type: lao;
2782
- }
2783
-
2784
- .qti-list-style-type-malayalam {
2785
- list-style-type: malayalam;
2786
- }
2787
-
2788
- .qti-list-style-type-mongolian {
2789
- list-style-type: mongolian;
2790
- }
2791
-
2792
- .qti-list-style-type-myanmar {
2793
- list-style-type: myanmar;
2794
- }
2795
-
2796
- .qti-list-style-type-oriya {
2797
- list-style-type: oriya;
2798
- }
2799
-
2800
- .qti-list-style-type-persian {
2801
- list-style-type: persian;
2802
- }
2803
-
2804
- .qti-list-style-type-thai {
2805
- list-style-type: thai;
2806
- }
2807
-
2808
- .qti-list-style-type-tibetan {
2809
- list-style-type: tibetan;
2810
- }
2811
-
2812
- .qti-list-style-type-telugu {
2813
- list-style-type: telugu;
2814
- }
2815
-
2816
- .qti-list-style-type-urdu {
2817
- list-style-type: urdu;
2818
- }
2819
-
2820
- /* =========================
2821
- Other QTI 3 Presentation Utilities
2822
- ========================= */
2823
-
2824
- .qti-bordered {
2825
- border: 1px solid var(--table-border-color);
2826
- }
2827
-
2828
- .qti-underline {
2829
- text-decoration: underline;
2830
- text-decoration-color: var(--foreground);
2831
- }
2832
-
2833
- .qti-italic {
2834
- font-style: italic;
2835
- }
2836
-
2837
- .qti-well {
2838
- min-height: 20px;
2839
- padding: 19px;
2840
- margin-bottom: 20px;
2841
- background-color: var(--well-bg);
2842
- border: var(--well-border);
2843
- border-radius: 4px;
2844
- box-shadow: var(--well-box-shadow);
2845
- }
2846
-
2847
- /* Set writing-mode to vertical-rl
2848
- Typical for CJK vertical text */
2849
-
2850
- .qti-writing-mode-vertical-rl {
2851
- writing-mode: vertical-rl;
2852
- }
2853
-
2854
- /* Set writing-mode to vertical-lr
2855
- Typical for Mongolian vertical text */
2856
-
2857
- .qti-writing-mode-vertical-lr {
2858
- writing-mode: vertical-lr;
2859
- }
2860
-
2861
- /* Set writing-mode to horizontal-tb
2862
- Browser default */
2863
-
2864
- .qti-writing-mode-horizontal-tb {
2865
- writing-mode: horizontal-tb;
2866
- }
2867
-
2868
- /* Float an element left */
2869
-
2870
- .qti-float-left {
2871
- float: left;
2872
- }
2873
-
2874
- /* Float an element right */
2875
-
2876
- .qti-float-right {
2877
- float: right;
2878
- }
2879
-
2880
- /* Remove a float */
2881
-
2882
- .qti-float-none {
2883
- float: none;
2884
- }
2885
-
2886
- /* Clearfix Hack to apply to a container of
2887
- floated content that overflows the container. */
2888
-
2889
- .qti-float-clearfix::after {
2890
- content: '';
2891
- clear: both;
2892
- display: table;
2893
- }
2894
-
2895
- .qti-float-clear-left
2896
- .qti-float-clear-right
2897
- .qti-float-clear-both
2898
-
2899
- /* Set text-orientation to upright */
2900
- .qti-text-orientation-upright {
2901
- text-orientation: upright;
2902
- }
2903
-
2904
- /* stylelint-disable number-max-precision */
2905
-
2906
- @layer qti-base {
2907
- .qti-layout-row {
2908
- display: flex;
2909
- flex-wrap: wrap;
2910
- width: 100%;
2911
- gap: 2.1276595745%;
2912
- }
2913
-
2914
- .qti-layout-row [class*='qti-layout-col']:not(:empty) {
2915
- box-sizing: border-box;
2916
- }
2917
-
2918
- .qti-layout-row [class*='qti-layout-col']:empty {
2919
- width: 0;
2920
- overflow: hidden; /* to fully collapse if there\u2019s padding or borders */
2921
- }
2922
-
2923
- .qti-layout-col1 {
2924
- width: 6.3829787234%;
2925
- }
2926
-
2927
- .qti-layout-col2 {
2928
- width: 14.8936170213%;
2929
- }
2930
-
2931
- .qti-layout-col3 {
2932
- width: 23.4042553191%;
2933
- }
2934
-
2935
- .qti-layout-col4 {
2936
- width: 31.914893617%;
2937
- }
2938
-
2939
- .qti-layout-col5 {
2940
- width: 40.4255319149%;
2941
- }
2942
-
2943
- .qti-layout-col6 {
2944
- width: 48.9361702128%;
2945
- }
2946
-
2947
- .qti-layout-col7 {
2948
- width: 57.4468085106%;
2949
- }
2950
-
2951
- .qti-layout-col8 {
2952
- width: 65.9574468085%;
2953
- }
2954
-
2955
- .qti-layout-col9 {
2956
- width: 74.4680851064%;
2957
- }
2958
-
2959
- .qti-layout-col10 {
2960
- width: 82.9787234043%;
2961
- }
2962
-
2963
- .qti-layout-col11 {
2964
- width: 91.4893617021%;
2965
- }
2966
-
2967
- .qti-layout-col12 {
2968
- width: 100%;
2969
- }
2970
-
2971
- .qti-layout-offset1 {
2972
- margin-left: 8.5106382979%;
2973
- }
2974
-
2975
- .qti-layout-offset2 {
2976
- margin-left: 17.0212765957%;
2977
- }
2978
-
2979
- .qti-layout-offset3 {
2980
- margin-left: 25.5319148936%;
2981
- }
2982
-
2983
- .qti-layout-offset4 {
2984
- margin-left: 34.0425531915%;
2985
- }
2986
-
2987
- .qti-layout-offset5 {
2988
- margin-left: 42.5531914894%;
2989
- }
2990
-
2991
- .qti-layout-offset6 {
2992
- margin-left: 51.0638297872%;
2993
- }
2994
-
2995
- .qti-layout-offset7 {
2996
- margin-left: 59.5744680851%;
2997
- }
2998
-
2999
- .qti-layout-offset8 {
3000
- margin-left: 68.085106383%;
3001
- }
3002
-
3003
- .qti-layout-offset9 {
3004
- margin-left: 76.5957446809%;
3005
- }
3006
-
3007
- .qti-layout-offset10 {
3008
- margin-left: 85.1063829787%;
3009
- }
3010
-
3011
- .qti-layout-offset11 {
3012
- margin-left: 93.6170212766%;
3013
- }
3014
-
3015
- .qti-layout-offset12 {
3016
- margin-left: 102.1276595745%;
3017
- }
3018
-
3019
- @media (width <= 767px) {
3020
- [class*='qti-layout-col'] {
3021
- width: 100%;
3022
- }
3023
- }
3024
- }
3025
-
3026
- [view],
3027
- qti-outcome-declaration,
3028
- qti-response-declaration {
3029
- display: none;
3030
- }
3031
-
3032
- [view].show {
3033
- display: block;
3034
- }
3035
-
3036
- :host {
3037
- box-sizing: border-box;
3038
- }
3039
-
3040
- *,
3041
- *::before,
3042
- *::after {
3043
- box-sizing: inherit;
3044
- }
3045
-
3046
- /* components */
3047
-
3048
- @layer qti-components {
3049
- qti-choice-interaction {
3050
- &.qti-input-control-hidden {
3051
- & qti-simple-choice {
3052
-
3053
- &:hover {
3054
- background-color: var(--qti-hover-bg);
3055
- }
3056
-
3057
- &:focus {
3058
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3059
- }
3060
-
3061
- &::part(ch) {
3062
- display: none;
3063
- }
3064
-
3065
- &:state(--checked),
3066
- &[aria-checked='true'] {
3067
- border-color: var(--qti-border-active);
3068
- background-color: var(--qti-bg-active);
3069
- }
3070
-
3071
- &:state(readonly),
3072
- &[aria-readonly='true'] {
3073
- cursor: pointer;
3074
- background-color: var(--qti-bg);
3075
- outline: 0;
3076
- border: none;
3077
- }
3078
-
3079
- &:state(disabled),
3080
- &[aria-disabled='true'] {
3081
- cursor: not-allowed;
3082
- background-color: var(--qti-disabled-bg);
3083
- color: var(--qti-disabled-color);
3084
- border-color: var(--qti-border-color);
3085
- outline: 4px solid var(--qti-disabled-bg);
3086
- }
3087
-
3088
- border-radius: var(--qti-border-radius);
3089
-
3090
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3091
-
3092
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3093
-
3094
- outline: none
3095
- }
3096
- }
3097
-
3098
- &:not(.qti-input-control-hidden) {
3099
- & qti-simple-choice {
3100
-
3101
- &:not([aria-disabled='true'], [aria-readonly='true'], :state(--checked)):hover {
3102
- background-color: var(--qti-hover-bg);
3103
- }
3104
-
3105
- &:focus {
3106
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3107
- }
3108
-
3109
- &:state(--checked),
3110
- &[aria-checked='true'] {
3111
- border-color: var(--qti-border-active);
3112
- background-color: var(--qti-bg-active);
3113
- }
3114
-
3115
- &:state(readonly),
3116
- &[aria-readonly='true'] {
3117
- cursor: pointer;
3118
- background-color: var(--qti-bg);
3119
- outline: 0;
3120
- border: none;
3121
- }
3122
-
3123
- &:state(disabled),
3124
- &[aria-disabled='true'] {
3125
- cursor: not-allowed;
3126
- background-color: var(--qti-disabled-bg);
3127
- color: var(--qti-disabled-color);
3128
- border-color: var(--qti-border-color);
3129
- outline: 4px solid var(--qti-disabled-bg);
3130
- }
3131
-
3132
- &::part(cha) {
3133
- width: calc(var(--qti-form-size) - 6px);
3134
- height: calc(var(--qti-form-size) - 6px);
3135
- }
3136
-
3137
- &:state(radio)::part(ch) {
3138
- border-radius: 100%;
3139
- display: grid;
3140
- place-content: center;
3141
- width: var(--qti-form-size);
3142
- height: var(--qti-form-size);
3143
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3144
- outline: none;
3145
- }
3146
-
3147
- &:state(radio):state(--checked)::part(cha) {
3148
- background-color: var(--qti-border-active);
3149
- border-radius: 100%;
3150
- }
3151
-
3152
- &:state(checkbox)::part(ch) {
3153
- display: flex;
3154
- place-items: center;
3155
- border-radius: var(--qti-border-radius);
3156
- display: grid;
3157
- place-content: center;
3158
- width: var(--qti-form-size);
3159
- height: var(--qti-form-size);
3160
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3161
- outline: none;
3162
- }
3163
-
3164
- &:state(checkbox):state(--checked)::part(cha) {
3165
- background-color: var(--qti-border-active);
3166
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
3167
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
3168
- }
3169
-
3170
- gap: 0.5rem;
3171
-
3172
- border-radius: var(--qti-border-radius);
3173
-
3174
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3175
-
3176
- outline: none;
3177
-
3178
- cursor: pointer
3179
- }
3180
- }
3181
-
3182
- & qti-simple-choice {
3183
- width: -moz-fit-content;
3184
- width: fit-content;
3185
- cursor: pointer;
3186
-
3187
- &:state(correct-response),
3188
- &[data-correct-response='true'] {
3189
- &::after {
3190
- content: '\\02714';
3191
- color: #16a34a; /* text-green-600 */
3192
- }
3193
- }
3194
- }
3195
-
3196
- & qti-simple-choice > p {
3197
- margin: 0 !important;
3198
- padding: 0 !important;
3199
- }
3200
- }
3201
-
3202
- .hover-border {
3203
- border: 2px solid #000; /* Adjust the border style and color as needed */
3204
- }
3205
-
3206
- qti-graphic-gap-match-interaction {
3207
- position: relative;
3208
-
3209
- &.qti-selections-light {
3210
- &:state(--dragzone-active)::part(drags) {
3211
- background-color: var(--qti-light-bg-active);
3212
- border-color: var(--qti-light-border-active);
3213
- }
3214
-
3215
- &:state(--dragzone-enabled)::part(drags) {
3216
- background-color: var(--qti-light-bg-active);
3217
- }
3218
- }
3219
-
3220
- &.qti-selections-dark {
3221
- &:state(--dragzone-active)::part(drags) {
3222
- background-color: var(--qti-dark-bg-active);
3223
- border-color: var(--qti-dark-border-active);
3224
- }
3225
-
3226
- &:state(--dragzone-enabled)::part(drags) {
3227
- background-color: var(--qti-dark-bg-active);
3228
- }
3229
- }
3230
-
3231
- /* General styles for active and enabled states */
3232
- &:state(--dragzone-active)::part(drags) {
3233
- border-color: var(--qti-border-active);
3234
- background-color: var(--qti-bg-active);
3235
- }
3236
-
3237
- &:state(--dragzone-enabled)::part(drags) {
3238
- background-color: var(--qti-bg-active);
3239
- }
3240
-
3241
- & qti-gap-img,
3242
- qti-gap-text {
3243
- display: flex;
3244
- justify-content: center;
3245
- align-items: center;
3246
- cursor: grab;
3247
- }
3248
-
3249
- & qti-associable-hotspot {
3250
- display: flex;
3251
- justify-content: center;
3252
- align-items: center;
3253
- border: 2px solid transparent;
3254
-
3255
- &[enabled] {
3256
-
3257
- /* Light theme override */
3258
- .qti-selections-light & {
3259
- background-color: var(--qti-light-bg-active);
3260
- }
3261
-
3262
- /* Dark theme override */
3263
- .qti-selections-dark & {
3264
- background-color: var(--qti-dark-bg-active);
3265
- }
3266
- background-color: var(--qti-bg-active)
3267
- }
3268
-
3269
- &[active] {
3270
-
3271
- /* Light theme override */
3272
- .qti-selections-light & {
3273
- background-color: var(--qti-light-bg-active);
3274
- border-color: var(--qti-light-border-active);
3275
- }
3276
-
3277
- /* Dark theme override */
3278
- .qti-selections-dark & {
3279
- background-color: var(--qti-dark-bg-active);
3280
- border-color: var(--qti-dark-border-active);
3281
- }
3282
- border-color: var(--qti-border-active);
3283
- background-color: var(--qti-bg-active)
3284
- }
3285
-
3286
- &[disabled] {
3287
-
3288
- &:not(:empty) {
3289
- cursor: default !important;
3290
- }
3291
-
3292
- cursor: not-allowed;
3293
-
3294
- background-color: var(--qti-disabled-bg);
3295
-
3296
- color: var(--qti-disabled-color);
3297
-
3298
- border-color: var(--qti-border-color);
3299
-
3300
- outline: 4px solid var(--qti-disabled-bg)
3301
- }
3302
-
3303
- &:empty::after {
3304
- padding: var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */
3305
- content: '\\0000a0'; /* when empty, put a space in it */
3306
- }
3307
-
3308
- &:not(:empty) {
3309
- padding: 0;
3310
- width: auto;
3311
- }
3312
-
3313
- &:not(:empty) > * {
3314
- flex: 1;
3315
- transform: rotate(0); /* rotate-0 */
3316
- box-shadow: 0 0 0 1px #e5e7eb; /* ring-gray-200 */
3317
- }
3318
- }
3319
-
3320
- & img {
3321
- margin: 0;
3322
- padding: 0;
3323
- }
3324
- }
3325
-
3326
- qti-text-entry-interaction {
3327
- &::part(input) {
3328
- border-radius: 0;
3329
- cursor: text;
3330
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3331
- background: unset;
3332
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3333
- outline: none;
3334
- }
3335
-
3336
- &:hover {
3337
- background-color: var(--qti-hover-bg);
3338
- }
3339
-
3340
- &:focus-within {
3341
- &::part(input) {
3342
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3343
- border-color: var(--qti-border-active);
3344
- }
3345
- }
3346
- }
3347
-
3348
- qti-extended-text-interaction {
3349
- &::part(textarea) {
3350
- border-radius: 0;
3351
- cursor: text;
3352
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3353
- background: unset;
3354
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3355
- outline: none;
3356
- }
3357
-
3358
- &:hover {
3359
- background-color: var(--qti-hover-bg);
3360
- }
3361
-
3362
- &:focus-within {
3363
- &::part(textarea) {
3364
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3365
- border-color: var(--qti-border-active);
3366
- }
3367
- }
3368
- }
3369
-
3370
- qti-gap-match-interaction {
3371
- &.qti-selections-light {
3372
- &:state(--dragzone-active)::part(drags) {
3373
- background-color: var(--qti-light-bg-active);
3374
- border-color: var(--qti-light-border-active);
3375
- }
3376
-
3377
- &:state(--dragzone-enabled)::part(drags) {
3378
- background-color: var(--qti-light-bg-active);
3379
- }
3380
- }
3381
-
3382
- &.qti-selections-dark {
3383
- &:state(--dragzone-active)::part(drags) {
3384
- background-color: var(--qti-dark-bg-active);
3385
- border-color: var(--qti-dark-border-active);
3386
- }
3387
-
3388
- &:state(--dragzone-enabled)::part(drags) {
3389
- background-color: var(--qti-dark-bg-active);
3390
- }
3391
- }
3392
-
3393
- /* General styles for active and enabled states */
3394
- &:state(--dragzone-active)::part(drags) {
3395
- border-color: var(--qti-border-active);
3396
- background-color: var(--qti-bg-active);
3397
- }
3398
-
3399
- &:state(--dragzone-enabled)::part(drags) {
3400
- background-color: var(--qti-bg-active);
3401
- }
3402
-
3403
- & qti-gap-text {
3404
-
3405
- &[dragging] {
3406
- pointer-events: none;
3407
- rotate: -2deg;
3408
- box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3409
- 0 4px 8px rgb(0 0 0 / 10%);
3410
- }
3411
-
3412
- &:hover {
3413
- background-color: var(--qti-hover-bg);
3414
- }
3415
-
3416
- &:focus {
3417
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3418
- }
3419
-
3420
- transition: transform 200ms ease-out,
3421
- box-shadow 200ms ease-out,
3422
- rotate 200ms ease-out;
3423
-
3424
- cursor: grab;
3425
-
3426
- background-color: var(--qti-bg);
3427
-
3428
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3429
-
3430
- border-radius: var(--qti-border-radius);
3431
-
3432
- padding-left: calc(var(--qti-padding-horizontal) + 0.5rem);
3433
-
3434
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3435
-
3436
- outline: none;
3437
-
3438
- background-image: radial-gradient(
3439
- circle at center,
3440
- rgb(0 0 0 / 10%) 0,
3441
- rgb(0 0 0 / 20%) 2px,
3442
- rgb(255 255 255 / 0%) 2px,
3443
- rgb(255 255 255 / 0%) 100%
3444
- );
3445
-
3446
- background-repeat: repeat-y;
3447
-
3448
- background-position: left center;
3449
-
3450
- background-size: 14px 8px
3451
- }
3452
-
3453
- & qti-gap {
3454
-
3455
- &[enabled] {
3456
-
3457
- /* Light theme override */
3458
- .qti-selections-light & {
3459
- border-color: var(--qti-light-border-active);
3460
- }
3461
-
3462
- /* Dark theme override */
3463
- .qti-selections-dark & {
3464
- border-color: var(--qti-dark-border-active);
3465
- }
3466
- background-color: var(--qti-bg-active)
3467
- }
3468
-
3469
- &[disabled] {
3470
-
3471
- &:not(:empty) {
3472
- cursor: default !important;
3473
- }
3474
-
3475
- cursor: not-allowed;
3476
-
3477
- background-color: var(--qti-disabled-bg);
3478
-
3479
- color: var(--qti-disabled-color);
3480
-
3481
- border-color: var(--qti-border-color);
3482
-
3483
- outline: 4px solid var(--qti-disabled-bg)
3484
- }
3485
-
3486
- &[active] {
3487
-
3488
- /* Light theme override */
3489
- .qti-selections-light & {
3490
- background-color: var(--qti-light-bg-active);
3491
- border-color: var(--qti-light-border-active);
3492
- }
3493
-
3494
- /* Dark theme override */
3495
- .qti-selections-dark & {
3496
- background-color: var(--qti-dark-bg-active);
3497
- border-color: var(--qti-dark-border-active);
3498
- }
3499
- border-color: var(--qti-border-active);
3500
- background-color: var(--qti-bg-active)
3501
- }
3502
-
3503
- display: inline-flex;
3504
- align-items: center;
3505
-
3506
- &:empty::after {
3507
- padding: var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */
3508
- content: '\\0000a0'; /* when empty, put a space in it */
3509
- }
3510
-
3511
- &:not(:empty) {
3512
- display: inline-flex;
3513
- padding: 0;
3514
- width: auto;
3515
- }
3516
-
3517
- &:not(:empty) > * {
3518
- flex: 1;
3519
- transform: rotate(0); /* rotate-0 */
3520
- box-shadow: 0 0 0 1px #e5e7eb; /* ring-gray-200 */
3521
- }
3522
-
3523
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
3524
- center no-repeat;
3525
-
3526
- border-radius: var(--qti-border-radius);
3527
-
3528
- position: relative;
3529
-
3530
- background-color: var(--qti-bg);
3531
-
3532
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3533
-
3534
- outline: none
3535
- }
3536
- }
3537
-
3538
- qti-hotspot-interaction {
3539
- & qti-hotspot-choice {
3540
- &[shape='circle'] {
3541
-
3542
- &:hover {
3543
- background-color: var(--qti-hover-bg);
3544
- }
3545
-
3546
- &:focus {
3547
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3548
- }
3549
-
3550
- &:state(--checked),
3551
- &[aria-checked='true'] {
3552
- border-color: var(--qti-border-active);
3553
- }
3554
-
3555
- &:state(--readonly),
3556
- &[aria-readonly='true'] {
3557
- cursor: pointer;
3558
- background-color: var(--qti-bg);
3559
- outline: 0;
3560
- border: none;
3561
- }
3562
-
3563
- &:state(--disabled),
3564
- &[aria-disabled='true'] {
3565
- cursor: not-allowed;
3566
- background-color: var(--qti-disabled-bg);
3567
- color: var(--qti-disabled-color);
3568
- border-color: var(--qti-border-color);
3569
- outline: 4px solid var(--qti-disabled-bg);
3570
- }
3571
-
3572
- width: 100%;
3573
-
3574
- height: 100%;
3575
-
3576
- background-color: transparent;
3577
-
3578
- padding: 0;
3579
-
3580
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3581
-
3582
- outline: none
3583
- }
3584
-
3585
- &[shape='rect'] {
3586
-
3587
- /* &:hover {
3588
- @apply hov;
3589
- } */
3590
-
3591
- &:focus {
3592
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3593
- }
3594
-
3595
- &:state(--checked),
3596
- &[aria-checked='true'] {
3597
- border-color: var(--qti-border-active);
3598
- }
3599
-
3600
- &[aria-readonly='true'] {
3601
- cursor: pointer;
3602
- background-color: var(--qti-bg);
3603
- outline: 0;
3604
- border: none;
3605
- }
3606
-
3607
- &[aria-disabled='true'] {
3608
- cursor: not-allowed;
3609
- background-color: var(--qti-disabled-bg);
3610
- color: var(--qti-disabled-color);
3611
- border-color: var(--qti-border-color);
3612
- outline: 4px solid var(--qti-disabled-bg);
3613
- }
3614
-
3615
- width: 100%;
3616
-
3617
- height: 100%;
3618
-
3619
- background-color: transparent;
3620
-
3621
- padding: 0;
3622
-
3623
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3624
-
3625
- outline: none
3626
- }
3627
-
3628
- &[shape='poly'] {
3629
- &:hover::after {
3630
- content: '';
3631
- width: 100%;
3632
- height: 100%;
3633
- background: repeating-linear-gradient(
3634
- 45deg,
3635
- var(--qti-border-active),
3636
- var(--qti-border-active) 5px,
3637
- transparent 5px,
3638
- transparent 10px
3639
- );
3640
- display: block;
3641
- }
3642
-
3643
- &:state(--checked)::after,
3644
- &[aria-checked='true']::after {
3645
- content: '';
3646
- width: 100%;
3647
- height: 100%;
3648
- background: repeating-linear-gradient(
3649
- 45deg,
3650
- transparent,
3651
- transparent 5px,
3652
- var(--qti-border-active) 5px,
3653
- var(--qti-border-active) 10px
3654
- );
3655
- display: block;
3656
- }
3657
-
3658
- &[aria-readonly='true'] {
3659
- cursor: pointer;
3660
- background-color: var(--qti-bg);
3661
- outline: 0;
3662
- border: none;
3663
- }
3664
-
3665
- &[aria-disabled='true'] {
3666
- cursor: not-allowed;
3667
- background-color: var(--qti-disabled-bg);
3668
- color: var(--qti-disabled-color);
3669
- border-color: var(--qti-border-color);
3670
- outline: 4px solid var(--qti-disabled-bg);
3671
- }
3672
- }
3673
- }
3674
- }
3675
-
3676
- qti-hottext-interaction {
3677
- /* &:not(.qti-input-control-hidden),
3678
- &:not(.qti-unselected-hidden) { */
3679
- qti-hottext {
3680
- display: inline-flex;
3681
- align-items: center;
3682
-
3683
- &:hover {
3684
- background-color: var(--qti-hover-bg);
3685
- }
3686
-
3687
- &:focus {
3688
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3689
- }
3690
-
3691
- &::part(cha) {
3692
- width: calc(var(--qti-form-size) - 6px);
3693
- height: calc(var(--qti-form-size) - 6px);
3694
- }
3695
-
3696
- &:state(radio)::part(ch) {
3697
- border-radius: 100%;
3698
- display: grid;
3699
- place-content: center;
3700
- width: var(--qti-form-size);
3701
- height: var(--qti-form-size);
3702
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3703
- outline: none;
3704
- }
3705
-
3706
- &:state(radio):state(--checked)::part(cha) {
3707
- background-color: var(--qti-border-active);
3708
- border-radius: 100%;
3709
- }
3710
-
3711
- &:state(checkbox)::part(ch) {
3712
- display: flex;
3713
- place-items: center;
3714
- border-radius: var(--qti-border-radius);
3715
- display: grid;
3716
- place-content: center;
3717
- width: var(--qti-form-size);
3718
- height: var(--qti-form-size);
3719
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3720
- outline: none;
3721
- }
3722
-
3723
- &:state(checkbox):state(--checked)::part(cha) {
3724
- background-color: var(--qti-border-active);
3725
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
3726
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
3727
- }
3728
-
3729
- gap: 0.5rem;
3730
-
3731
- border-radius: var(--qti-border-radius);
3732
-
3733
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3734
-
3735
- outline: none;
3736
-
3737
- cursor: pointer
3738
- }
3739
-
3740
- /* } */
3741
-
3742
- &.qti-input-control-hidden {
3743
- qti-hottext {
3744
- /* --qti-padding-md: 0.1rem;
3745
- --qti-padding-lg: 0.2rem;
3746
- --qti-border-radius-md: 0.3rem;
3747
- --qti-border-thickness: 1px;
3748
- --qti-font-weight-semibold: 400; */
3749
-
3750
- &:hover {
3751
- background-color: var(--qti-hover-bg);
3752
- }
3753
-
3754
- &:focus {
3755
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3756
- }
3757
-
3758
- /* @layer qti-variants { */
3759
- &::part(ch) {
3760
- display: none;
3761
- }
3762
-
3763
- &:state(--checked) {
3764
- border-color: var(--qti-border-active);
3765
- background-color: var(--qti-bg-active);
3766
- }
3767
-
3768
- &[aria-readonly='true'] {
3769
- cursor: pointer;
3770
- background-color: var(--qti-bg);
3771
- outline: 0;
3772
- border: none;
3773
- }
3774
-
3775
- &[aria-disabled='true'] {
3776
- cursor: not-allowed;
3777
- background-color: var(--qti-disabled-bg);
3778
- color: var(--qti-disabled-color);
3779
- border-color: var(--qti-border-color);
3780
- outline: 4px solid var(--qti-disabled-bg);
3781
- }
3782
-
3783
- border-radius: var(--qti-border-radius);
3784
-
3785
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3786
-
3787
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3788
-
3789
- outline: none
3790
- }
3791
-
3792
- /* } */
3793
- }
3794
-
3795
- &.qti-unselected-hidden {
3796
- qti-hottext {
3797
- &:hover {
3798
- background-color: var(--qti-hover-bg);
3799
- }
3800
-
3801
- &:focus {
3802
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3803
- }
3804
-
3805
- cursor: pointer;
3806
-
3807
- &::part(ch) {
3808
- display: none;
3809
- }
3810
-
3811
- &:state(--checked) {
3812
- background-color: var(--qti-bg-active);
3813
- }
3814
-
3815
- &[aria-readonly='true'] {
3816
- cursor: pointer;
3817
- background-color: var(--qti-bg);
3818
- outline: 0;
3819
- border: none;
3820
- }
3821
-
3822
- &[aria-disabled='true'] {
3823
- cursor: not-allowed;
3824
- background-color: var(--qti-disabled-bg);
3825
- color: var(--qti-disabled-color);
3826
- border-color: var(--qti-border-color);
3827
- outline: 4px solid var(--qti-disabled-bg);
3828
- }
3829
- }
3830
- }
3831
- }
3832
-
3833
- qti-inline-choice-interaction {
3834
- &::part(select) {
3835
-
3836
- &:hover {
3837
- background-color: var(--qti-hover-bg);
3838
- }
3839
-
3840
- &:focus {
3841
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3842
- }
3843
-
3844
- border-radius: var(--qti-border-radius);
3845
-
3846
- position: relative;
3847
-
3848
- -webkit-appearance: none;
3849
-
3850
- -moz-appearance: none;
3851
-
3852
- appearance: none;
3853
-
3854
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3855
-
3856
- padding-right: calc(var(--qti-padding-horizontal) + 1.5rem);
3857
-
3858
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3859
-
3860
- outline: none;
3861
-
3862
- background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
3863
- no-repeat center right 6px
3864
- }
3865
- }
3866
-
3867
- qti-match-interaction:not(.qti-match-tabular) {
3868
- /* The draggables */
3869
- & qti-simple-match-set:first-of-type {
3870
- display: flex;
3871
- flex-wrap: wrap;
3872
- align-items: flex-start; /* Prevents children from stretching */
3873
- gap: var(--qti-gap-size);
3874
-
3875
- & qti-simple-associable-choice {
3876
-
3877
- &[dragging] {
3878
- pointer-events: none;
3879
- rotate: -2deg;
3880
- box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3881
- 0 4px 8px rgb(0 0 0 / 10%);
3882
- }
3883
-
3884
- &:hover {
3885
- background-color: var(--qti-hover-bg);
3886
- }
3887
-
3888
- &:focus {
3889
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3890
- }
3891
-
3892
- transition: transform 200ms ease-out,
3893
- box-shadow 200ms ease-out,
3894
- rotate 200ms ease-out;
3895
-
3896
- cursor: grab;
3897
-
3898
- background-color: var(--qti-bg);
3899
-
3900
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
3901
-
3902
- border-radius: var(--qti-border-radius);
3903
-
3904
- padding-left: calc(var(--qti-padding-horizontal) + 0.5rem);
3905
-
3906
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3907
-
3908
- outline: none;
3909
-
3910
- background-image: radial-gradient(
3911
- circle at center,
3912
- rgb(0 0 0 / 10%) 0,
3913
- rgb(0 0 0 / 20%) 2px,
3914
- rgb(255 255 255 / 0%) 2px,
3915
- rgb(255 255 255 / 0%) 100%
3916
- );
3917
-
3918
- background-repeat: repeat-y;
3919
-
3920
- background-position: left center;
3921
-
3922
- background-size: 14px 8px
3923
- }
3924
- }
3925
-
3926
- /* The droppables */
3927
- & qti-simple-match-set:last-of-type {
3928
- display: grid;
3929
- grid-auto-columns: 1fr; /* auto-cols-fr */
3930
- grid-auto-flow: column; /* grid-flow-col */
3931
- gap: var(--qti-gap-size); /* gap-2 */
3932
- width: 100%; /* w-full */
3933
-
3934
- & qti-simple-associable-choice {
3935
- display: flex;
3936
- flex-direction: column;
3937
- }
3938
-
3939
- & > qti-simple-associable-choice {
3940
- /* a droppable qti-simple-associable-choice */
3941
- box-sizing: border-box;
3942
- display: grid;
3943
- grid-row: 2 / 4;
3944
- grid-template-rows: subgrid;
3945
-
3946
- & img {
3947
- max-width: 100%;
3948
- height: auto;
3949
- }
3950
-
3951
- &[enabled] {
3952
- &::part(dropslot) {
3953
- background-color: var(--qti-bg-active);
3954
- }
3955
- }
3956
-
3957
- &[disabled] {
3958
- &::part(dropslot) {
3959
- cursor: not-allowed;
3960
- background-color: var(--qti-disabled-bg);
3961
- color: var(--qti-disabled-color);
3962
- border-color: var(--qti-border-color);
3963
- outline: 4px solid var(--qti-disabled-bg);
3964
- }
3965
- }
3966
-
3967
- &[active] {
3968
- &::part(dropslot) {
3969
- border-color: var(--qti-border-active);
3970
- background-color: var(--qti-bg-active);
3971
- }
3972
- }
3973
-
3974
- &::part(dropslot) {
3975
-
3976
- &[dragging] {
3977
- pointer-events: none;
3978
- rotate: -2deg;
3979
- box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3980
- 0 4px 8px rgb(0 0 0 / 10%);
3981
- }
3982
-
3983
- &:focus {
3984
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
3985
- }
3986
-
3987
- min-height: 6rem;
3988
- gap: var(--qti-gap-size);
3989
- box-sizing: border-box;
3990
- display: flex;
3991
- justify-content: center;
3992
- align-items: center;
3993
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
3994
- center no-repeat;
3995
- border-radius: var(--qti-border-radius);
3996
- position: relative;
3997
- background-color: var(--qti-bg);
3998
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
3999
- outline: none;
4000
- }
4001
-
4002
- & > *:not(qti-simple-associable-choice) {
4003
- pointer-events: none;
4004
- }
4005
-
4006
- & > qti-simple-associable-choice {
4007
-
4008
- &::part(dropslot) {
4009
- display: none;
4010
- }
4011
-
4012
- &:hover {
4013
- background-color: var(--qti-hover-bg);
4014
- }
4015
-
4016
- &:focus {
4017
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4018
- }
4019
-
4020
- flex-basis: fit-content;
4021
-
4022
- transition: transform 200ms ease-out,
4023
- box-shadow 200ms ease-out,
4024
- rotate 200ms ease-out;
4025
-
4026
- cursor: grab;
4027
-
4028
- background-color: var(--qti-bg);
4029
-
4030
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
4031
-
4032
- border-radius: var(--qti-border-radius);
4033
-
4034
- padding-left: calc(var(--qti-padding-horizontal) + 0.5rem);
4035
-
4036
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4037
-
4038
- outline: none;
4039
-
4040
- background-image: radial-gradient(
4041
- circle at center,
4042
- rgb(0 0 0 / 10%) 0,
4043
- rgb(0 0 0 / 20%) 2px,
4044
- rgb(255 255 255 / 0%) 2px,
4045
- rgb(255 255 255 / 0%) 100%
4046
- );
4047
-
4048
- background-repeat: repeat-y;
4049
-
4050
- background-position: left center;
4051
-
4052
- background-size: 14px 8px;
4053
- }
4054
- }
4055
- }
4056
- }
4057
-
4058
- qti-order-interaction:state(--dragzone-active)::part(drags) {
4059
- border-color: var(--qti-border-active);
4060
- background-color: var(--qti-bg-active);
4061
- }
4062
-
4063
- qti-order-interaction:state(--dragzone-enabled)::part(drags) {
4064
- background-color: var(--qti-bg-active);
4065
- }
4066
-
4067
- qti-order-interaction {
4068
- &::part(qti-simple-choice),
4069
- & qti-simple-choice {
4070
-
4071
- &[dragging] {
4072
- pointer-events: none;
4073
- rotate: -2deg;
4074
- box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
4075
- 0 4px 8px rgb(0 0 0 / 10%);
4076
- }
4077
-
4078
- &:hover {
4079
- background-color: var(--qti-hover-bg);
4080
- }
4081
-
4082
- &:focus {
4083
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4084
- }
4085
-
4086
- transition: transform 200ms ease-out,
4087
- box-shadow 200ms ease-out,
4088
- rotate 200ms ease-out;
4089
-
4090
- cursor: grab;
4091
-
4092
- background-color: var(--qti-bg);
4093
-
4094
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
4095
-
4096
- border-radius: var(--qti-border-radius);
4097
-
4098
- padding-left: calc(var(--qti-padding-horizontal) + 0.5rem);
4099
-
4100
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4101
-
4102
- outline: none;
4103
-
4104
- background-image: radial-gradient(
4105
- circle at center,
4106
- rgb(0 0 0 / 10%) 0,
4107
- rgb(0 0 0 / 20%) 2px,
4108
- rgb(255 255 255 / 0%) 2px,
4109
- rgb(255 255 255 / 0%) 100%
4110
- );
4111
-
4112
- background-repeat: repeat-y;
4113
-
4114
- background-position: left center;
4115
-
4116
- background-size: 14px 8px
4117
- }
4118
-
4119
- &::part(qti-simple-choice) {
4120
- display: flex;
4121
- overflow: hidden;
4122
- align-items: center;
4123
- width: 100%;
4124
- text-overflow: ellipsis;
4125
- }
4126
-
4127
- &::part(drops) {
4128
- gap: 0.5rem; /* gap-2 */
4129
- }
4130
-
4131
- &::part(drags) {
4132
- gap: 0.5rem; /* gap-2 */
4133
- }
4134
-
4135
- &::part(drop-list) {
4136
-
4137
- &[enabled] {
4138
-
4139
- /* Light theme override */
4140
- .qti-selections-light & {
4141
- border-color: var(--qti-light-border-active);
4142
- }
4143
-
4144
- /* Dark theme override */
4145
- .qti-selections-dark & {
4146
- border-color: var(--qti-dark-border-active);
4147
- }
4148
- background-color: var(--qti-bg-active)
4149
- }
4150
-
4151
- &:hover {
4152
- background-color: var(--qti-hover-bg);
4153
- }
4154
-
4155
- &:focus {
4156
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4157
- }
4158
-
4159
- display: flex;
4160
- min-height: 4rem;
4161
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
4162
- center no-repeat;
4163
- border-radius: var(--qti-border-radius);
4164
- position: relative;
4165
- background-color: var(--qti-bg);
4166
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4167
- outline: none;
4168
- }
4169
-
4170
- &::part(active) {
4171
- border-color: var(--qti-border-active);
4172
- background-color: var(--qti-bg-active);
4173
- }
4174
-
4175
- & drop-list {
4176
- &[shape='circle'] {
4177
-
4178
- &:hover {
4179
- background-color: var(--qti-hover-bg);
4180
- }
4181
-
4182
- &:focus {
4183
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4184
- }
4185
-
4186
- &[aria-checked='true'] {
4187
- border-color: var(--qti-border-active);
4188
- background-color: var(--qti-bg-active);
4189
- }
4190
-
4191
- &[aria-readonly='true'] {
4192
- cursor: pointer;
4193
- background-color: var(--qti-bg);
4194
- outline: 0;
4195
- border: none;
4196
- }
4197
-
4198
- &[aria-disabled='true'] {
4199
- cursor: not-allowed;
4200
- background-color: var(--qti-disabled-bg);
4201
- color: var(--qti-disabled-color);
4202
- border-color: var(--qti-border-color);
4203
- outline: 4px solid var(--qti-disabled-bg);
4204
- }
4205
-
4206
- width: 100%;
4207
-
4208
- height: 100%;
4209
-
4210
- background-color: transparent;
4211
-
4212
- padding: 0;
4213
-
4214
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4215
-
4216
- outline: none
4217
- }
4218
-
4219
- &[shape='square'] {
4220
-
4221
- &:hover {
4222
- background-color: var(--qti-hover-bg);
4223
- }
4224
-
4225
- &:focus {
4226
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4227
- }
4228
-
4229
- &[aria-checked='true'] {
4230
- border-color: var(--qti-border-active);
4231
- background-color: var(--qti-bg-active);
4232
- }
4233
-
4234
- &[aria-readonly='true'] {
4235
- cursor: pointer;
4236
- background-color: var(--qti-bg);
4237
- outline: 0;
4238
- border: none;
4239
- }
4240
-
4241
- &[aria-disabled='true'] {
4242
- cursor: not-allowed;
4243
- background-color: var(--qti-disabled-bg);
4244
- color: var(--qti-disabled-color);
4245
- border-color: var(--qti-border-color);
4246
- outline: 4px solid var(--qti-disabled-bg);
4247
- }
4248
-
4249
- width: 100%;
4250
-
4251
- height: 100%;
4252
-
4253
- background-color: transparent;
4254
-
4255
- padding: 0;
4256
-
4257
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4258
-
4259
- outline: none
4260
- }
4261
- }
4262
- }
4263
-
4264
- qti-associate-interaction {
4265
- & qti-simple-associable-choice, /* drags when in lightdom */
4266
- &::part(qti-simple-associable-choice) /* drags when in shadowdom */ {
4267
-
4268
- &:hover {
4269
- background-color: var(--qti-hover-bg);
4270
- }
4271
-
4272
- &:focus {
4273
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4274
- }
4275
-
4276
- &[dragging] {
4277
- pointer-events: none;
4278
- rotate: -2deg;
4279
- box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
4280
- 0 4px 8px rgb(0 0 0 / 10%);
4281
- }
4282
-
4283
- transition: transform 200ms ease-out,
4284
- box-shadow 200ms ease-out,
4285
- rotate 200ms ease-out;
4286
-
4287
- cursor: grab;
4288
-
4289
- background-color: var(--qti-bg);
4290
-
4291
- padding: var(--qti-padding-vertical) var(--qti-padding-horizontal);
4292
-
4293
- border-radius: var(--qti-border-radius);
4294
-
4295
- padding-left: calc(var(--qti-padding-horizontal) + 0.5rem);
4296
-
4297
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4298
-
4299
- outline: none;
4300
-
4301
- background-image: radial-gradient(
4302
- circle at center,
4303
- rgb(0 0 0 / 10%) 0,
4304
- rgb(0 0 0 / 20%) 2px,
4305
- rgb(255 255 255 / 0%) 2px,
4306
- rgb(255 255 255 / 0%) 100%
4307
- );
4308
-
4309
- background-repeat: repeat-y;
4310
-
4311
- background-position: left center;
4312
-
4313
- background-size: 14px 8px
4314
- }
4315
-
4316
- /* display: flex;
4317
- overflow: hidden;
4318
- align-items: center; */
4319
-
4320
- /* &::part(drop-container) {
4321
- display: flex;
4322
- flex-direction: column;
4323
- gap: var(--qti-gap-size);
4324
- } */
4325
-
4326
- &::part(drop-list) {
4327
-
4328
- display: grid;
4329
- height: 3rem;
4330
- min-width: 10rem;
4331
- background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
4332
- center no-repeat;
4333
- border-radius: var(--qti-border-radius);
4334
- position: relative;
4335
- background-color: var(--qti-bg);
4336
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4337
- outline: none;
4338
- }
4339
-
4340
- &::part(drop-list):focus {
4341
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4342
- }
4343
-
4344
- &::part(drop-list)[dragging] {
4345
- border-color: var(--qti-border-active);
4346
- background-color: var(--qti-bg-active);
4347
- }
4348
-
4349
- /* &::part(drop-list) {
4350
- @apply act;
4351
- } */
4352
- }
4353
-
4354
- qti-graphic-order-interaction {
4355
- & qti-hotspot-choice {
4356
-
4357
- &:hover {
4358
- background-color: var(--qti-hover-bg);
4359
- }
4360
-
4361
- &:focus {
4362
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4363
- }
4364
-
4365
- &:state(--checked),
4366
- &[aria-checked='true'] {
4367
- border-color: var(--qti-border-active);
4368
- background-color: var(--qti-bg-active);
4369
- }
4370
-
4371
- &[aria-readonly='true'] {
4372
- cursor: pointer;
4373
- background-color: var(--qti-bg);
4374
- outline: 0;
4375
- border: none;
4376
- }
4377
-
4378
- &[aria-disabled='true'] {
4379
- cursor: not-allowed;
4380
- background-color: var(--qti-disabled-bg);
4381
- color: var(--qti-disabled-color);
4382
- border-color: var(--qti-border-color);
4383
- outline: 4px solid var(--qti-disabled-bg);
4384
- }
4385
-
4386
- &[aria-ordervalue] {
4387
- display: grid;
4388
- place-content: center;
4389
- }
4390
-
4391
- &[aria-ordervalue]::after {
4392
- content: attr(aria-ordervalue) !important;
4393
- }
4394
-
4395
- width: 100%;
4396
-
4397
- height: 100%;
4398
-
4399
- background-color: transparent;
4400
-
4401
- padding: 0;
4402
-
4403
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4404
-
4405
- outline: none
4406
- }
4407
-
4408
- &.qti-selections-light {
4409
- &:state(--dragzone-active)::part(drags) {
4410
- background-color: var(--qti-light-bg-active);
4411
- border-color: var(--qti-light-border-active);
4412
- }
4413
-
4414
- &:state(--dragzone-enabled)::part(drags) {
4415
- background-color: var(--qti-light-bg-active);
4416
- }
4417
- }
4418
-
4419
- &.qti-selections-dark {
4420
- &:state(--dragzone-active)::part(drags) {
4421
- background-color: var(--qti-dark-bg-active);
4422
- border-color: var(--qti-dark-border-active);
4423
- }
4424
-
4425
- &:state(--dragzone-enabled)::part(drags) {
4426
- background-color: var(--qti-dark-bg-active);
4427
- }
4428
- }
4429
-
4430
- /* General styles for active and enabled states */
4431
- &:state(--dragzone-active)::part(drags) {
4432
- border-color: var(--qti-border-active);
4433
- background-color: var(--qti-bg-active);
4434
- }
4435
-
4436
- &:state(--dragzone-enabled)::part(drags) {
4437
- background-color: var(--qti-bg-active);
4438
- }
4439
- }
4440
-
4441
- qti-graphic-associate-interaction {
4442
- position: relative;
4443
- display: block;
4444
-
4445
- & qti-associable-hotspot {
4446
- &[shape='circle'] {
4447
-
4448
- &:hover {
4449
- background-color: var(--qti-hover-bg);
4450
- }
4451
-
4452
- &:focus {
4453
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4454
- }
4455
-
4456
- &[aria-checked='true'] {
4457
- border-color: var(--qti-border-active);
4458
- background-color: var(--qti-bg-active);
4459
- }
4460
-
4461
- &[aria-readonly='true'] {
4462
- cursor: pointer;
4463
- background-color: var(--qti-bg);
4464
- outline: 0;
4465
- border: none;
4466
- }
4467
-
4468
- &[aria-disabled='true'] {
4469
- cursor: not-allowed;
4470
- background-color: var(--qti-disabled-bg);
4471
- color: var(--qti-disabled-color);
4472
- border-color: var(--qti-border-color);
4473
- outline: 4px solid var(--qti-disabled-bg);
4474
- }
4475
-
4476
- width: 100%;
4477
-
4478
- height: 100%;
4479
-
4480
- background-color: transparent;
4481
-
4482
- padding: 0;
4483
-
4484
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4485
-
4486
- outline: none
4487
- }
4488
-
4489
- &[shape='square'] {
4490
-
4491
- &:hover {
4492
- background-color: var(--qti-hover-bg);
4493
- }
4494
-
4495
- &:focus {
4496
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4497
- }
4498
-
4499
- &[aria-checked='true'] {
4500
- border-color: var(--qti-border-active);
4501
- background-color: var(--qti-bg-active);
4502
- }
4503
-
4504
- &[aria-readonly='true'] {
4505
- cursor: pointer;
4506
- background-color: var(--qti-bg);
4507
- outline: 0;
4508
- border: none;
4509
- }
4510
-
4511
- &[aria-disabled='true'] {
4512
- cursor: not-allowed;
4513
- background-color: var(--qti-disabled-bg);
4514
- color: var(--qti-disabled-color);
4515
- border-color: var(--qti-border-color);
4516
- outline: 4px solid var(--qti-disabled-bg);
4517
- }
4518
-
4519
- width: 100%;
4520
-
4521
- height: 100%;
4522
-
4523
- background-color: transparent;
4524
-
4525
- padding: 0;
4526
-
4527
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4528
-
4529
- outline: none
4530
- }
4531
- }
4532
-
4533
- &.qti-selections-light {
4534
- &:state(--dragzone-active)::part(drags) {
4535
- background-color: var(--qti-light-bg-active);
4536
- border-color: var(--qti-light-border-active);
4537
- }
4538
-
4539
- &:state(--dragzone-enabled)::part(drags) {
4540
- background-color: var(--qti-light-bg-active);
4541
- }
4542
- }
4543
-
4544
- &.qti-selections-dark {
4545
- &:state(--dragzone-active)::part(drags) {
4546
- background-color: var(--qti-dark-bg-active);
4547
- border-color: var(--qti-dark-border-active);
4548
- }
4549
-
4550
- &:state(--dragzone-enabled)::part(drags) {
4551
- background-color: var(--qti-dark-bg-active);
4552
- }
4553
- }
4554
-
4555
- /* General styles for active and enabled states */
4556
- &:state(--dragzone-active)::part(drags) {
4557
- border-color: var(--qti-border-active);
4558
- background-color: var(--qti-bg-active);
4559
- }
4560
-
4561
- &:state(--dragzone-enabled)::part(drags) {
4562
- background-color: var(--qti-bg-active);
4563
- }
4564
- }
4565
-
4566
- qti-slider-interaction {
4567
- display: block;
4568
-
4569
- --qti-tick-color: rgb(229 231 235 / 100%);
4570
- --qti-tick-width: 1px;
4571
-
4572
- &::part(slider) {
4573
- margin-left: 2rem; /* mx-8 */
4574
- margin-right: 2rem;
4575
- padding-bottom: 1rem; /* pb-4 */
4576
- padding-top: 1.25rem; /* pt-5 */
4577
- }
4578
-
4579
- --show-bounds: true;
4580
-
4581
- &::part(bounds) {
4582
- display: flex;
4583
- width: 100%;
4584
- justify-content: space-between;
4585
- margin-bottom: 0.5rem; /* mb-2 */
4586
- }
4587
-
4588
- --show-ticks: true;
4589
-
4590
- &::part(ticks) {
4591
- margin-left: 0.125rem; /* mx-0.5 */
4592
- margin-right: 0.125rem;
4593
- margin-bottom: 0.25rem; /* mb-1 */
4594
- height: 0.5rem; /* h-2 */
4595
- background: linear-gradient(to right, var(--qti-tick-color) var(--qti-tick-width), transparent 1px) repeat-x 0
4596
- center / calc(calc(100% - var(--qti-tick-width)) / ((var(--max) - var(--min)) / var(--step))) 100%;
4597
- }
4598
-
4599
- &::part(rail) {
4600
- display: flex;
4601
- align-items: center;
4602
- box-sizing: border-box;
4603
- height: 0.375rem; /* h-1.5 */
4604
- width: 100%;
4605
- cursor: pointer;
4606
- border-radius: 9999px; /* rounded-full */
4607
- border: 1px solid #d1d5db; /* border-gray-300 */
4608
- background-color: #e5e7eb; /* bg-gray-200 */
4609
- }
4610
-
4611
- &::part(knob) {
4612
- background-color: var(--qti-primary);
4613
- position: relative;
4614
- height: 1rem; /* h-4 */
4615
- width: 1rem; /* w-4 */
4616
- transform-origin: center;
4617
- transform: translateX(-50%);
4618
- cursor: pointer;
4619
- border-radius: 9999px; /* rounded-full */
4620
- left: var(--value-percentage);
4621
- }
4622
-
4623
- --show-value: true;
4624
-
4625
- &::part(value) {
4626
- position: absolute;
4627
- bottom: 2rem; /* bottom-8 */
4628
- left: 0.5rem; /* left-2 */
4629
- transform: translateX(-50%);
4630
- cursor: pointer;
4631
- border-radius: 0.25rem; /* rounded */
4632
- background-color: #f3f4f6; /* bg-gray-100 */
4633
- padding: 0.25rem 0.5rem; /* px-2 py-1 */
4634
- text-align: center;
4635
- color: #6b7280; /* text-gray-500 */
4636
- }
4637
- }
4638
-
4639
- qti-select-point-interaction {
4640
- &::part(point) {
4641
- &:hover {
4642
- background-color: var(--qti-hover-bg);
4643
- }
4644
-
4645
- &:focus {
4646
- box-shadow: 0 0 0 var(--qti-focus-border-width) var(--qti-focus-color);
4647
- }
4648
-
4649
- border-radius: 100%;
4650
-
4651
- width: var(--qti-point-size);
4652
-
4653
- height: var(--qti-point-size);
4654
-
4655
- background-color: transparent;
4656
-
4657
- padding: 0;
4658
-
4659
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color);
4660
-
4661
- outline: none;
4662
- }
4663
- }
4664
-
4665
- qti-position-object-stage {
4666
- & qti-position-object-interaction {
4667
- /* no styles necessary, only layout styles, defined in the component */
4668
- }
4669
- }
4670
-
4671
- qti-prompt {
4672
- margin: 0.5rem 0; /* my-2 */
4673
- display: block;
4674
- width: 100%;
4675
- }
4676
- }
4677
- `;
4678
-
4679
- // src/lib/qti-test/components/test-container.ts
4680
- var TestContainer = class extends import_lit13.LitElement {
4681
- constructor() {
4682
- super(...arguments);
4683
- this.testURL = "";
4684
- }
4685
- /**
4686
- * Lifecycle callback invoked when the element is added to the DOM.
4687
- * Handles template preloading and dispatches a `qti-load-test-request` event
4688
- * if no template is found.
4689
- */
4690
- async connectedCallback() {
4691
- super.connectedCallback();
4692
- const template = this.querySelector("template");
4693
- if (template) {
4694
- this.preContent = template.content;
4695
- } else {
4696
- this.preContent = import_lit13.html``;
4697
- const sheet = new CSSStyleSheet();
4698
- sheet.replaceSync(item_default);
4699
- this.shadowRoot.adoptedStyleSheets = [sheet];
4700
- await this.updateComplete;
4701
- const event = new CustomEvent("qti-load-test-request", {
4702
- bubbles: true,
4703
- composed: true,
4704
- detail: {
4705
- promise: null,
4706
- testURL: this.testURL
4707
- }
4708
- });
4709
- const preventDefault = this.dispatchEvent(event);
4710
- if (!preventDefault) {
4711
- console.warn("No qti-load-test-request listener found");
4712
- this.preContent = import_lit13.html`<span>qti-load-test-request was not catched</span>`;
4713
- } else {
4714
- this.content = (async () => {
4715
- return await event.detail.promise;
4716
- })();
4717
- }
4718
- }
4719
- }
4720
- /**
4721
- * Renders the component content.
4722
- * Preloaded template content is rendered first, followed by the default slot
4723
- * and dynamically loaded content.
4724
- */
4725
- render() {
4726
- return import_lit13.html`
4727
- ${this.preContent}
4728
- <slot></slot>
4729
- ${(0, import_until.until)(this.content, import_lit13.html`<span>Loading...</span>`)}
4730
- `;
4731
- }
4732
- };
4733
- __decorateClass([
4734
- (0, import_decorators14.state)()
4735
- ], TestContainer.prototype, "content", 2);
4736
- __decorateClass([
4737
- (0, import_decorators14.property)({ type: String, attribute: "test-url" })
4738
- ], TestContainer.prototype, "testURL", 2);
4739
- TestContainer = __decorateClass([
4740
- (0, import_decorators14.customElement)("test-container")
4741
- ], TestContainer);
4742
-
4743
- // src/lib/qti-test/components/test-paging-buttons-stamp.ts
4744
- var import_lit14 = require("lit");
4745
- var import_decorators15 = require("lit/decorators.js");
4746
- var import_stampino = require("stampino");
4747
- var TestPagingButtonsStamp = class extends TestComponent {
4748
- constructor() {
4749
- super();
4750
- this.maxDisplayedItems = 2;
4751
- this.skipOnCategory = "dep-informational";
4752
- this._internals.ariaLabel = "pagination";
4753
- }
4754
- createRenderRoot() {
4755
- return this;
4756
- }
4757
- render() {
4758
- const items = this._testContext.items.reduce(
4759
- (acc, item) => {
4760
- const isDepInfoItem = item.category?.split(" ").includes(this.skipOnCategory);
4761
- const newIndex = isDepInfoItem ? "i" : acc.counter++;
4762
- acc.result.push({
4763
- ...item,
4764
- newIndex
4765
- // Assign the new index, which only increments for non-info items
4766
- });
4767
- return acc;
4768
- },
4769
- { counter: 0, result: [] }
4770
- ).result;
4771
- const itemIndex = items.findIndex((item) => item.identifier === this._testContext.navItemId);
4772
- const start = Math.max(0, itemIndex - this.maxDisplayedItems);
4773
- const end = Math.min(items.length, itemIndex + this.maxDisplayedItems + 1);
4774
- const clampedItems = items.slice(start, end);
4775
- return import_lit14.html`
4776
- ${clampedItems.map((item) => {
4777
- const rawscore = item.variables.find((vr) => vr.identifier == "SCORE");
4778
- const score = parseInt(rawscore?.value?.toString());
4779
- const completionStatus = item.variables.find((v) => v.identifier === "completionStatus")?.value;
4780
- const type = item.category !== this.skipOnCategory ? "regular" : "info";
4781
- const active = this._testContext.navItemId === item.identifier;
4782
- const correct = this._testContext.view === "scorer" && type == "regular" && score !== void 0 && !isNaN(score) && score > 0;
4783
- const incorrect = this._testContext.view === "scorer" && type == "regular" && score !== void 0 && !isNaN(score) && score <= 0;
4784
- const answered = this._testContext.view === "candidate" && completionStatus === "completed" && item.category !== this.skipOnCategory;
4785
- const computedItem = {
4786
- ...item,
4787
- type,
4788
- active,
4789
- correct,
4790
- incorrect,
4791
- answered
4792
- };
4793
- const templateElement = this.firstElementChild;
4794
- const myTemplate = (0, import_stampino.prepareTemplate)(templateElement);
4795
- return myTemplate({ item: computedItem });
4796
- })}
4797
- `;
4798
- }
4799
- };
4800
- __decorateClass([
4801
- (0, import_decorators15.property)({ type: Number, attribute: "max-displayed-items" })
4802
- ], TestPagingButtonsStamp.prototype, "maxDisplayedItems", 2);
4803
- __decorateClass([
4804
- (0, import_decorators15.property)({ type: String, attribute: "skip-on-category" })
4805
- ], TestPagingButtonsStamp.prototype, "skipOnCategory", 2);
4806
- TestPagingButtonsStamp = __decorateClass([
4807
- (0, import_decorators15.customElement)("test-paging-buttons-stamp")
4808
- ], TestPagingButtonsStamp);
4809
- // Annotate the CommonJS export names for ESM import in node:
4810
- 0 && (module.exports = {
4811
- QtiAssessmentItemRef,
4812
- QtiAssessmentSection,
4813
- QtiAssessmentTest,
4814
- QtiTest,
4815
- QtiTestPart,
4816
- TestContainer,
4817
- TestItemLink,
4818
- TestNext,
4819
- TestPagingButtonsStamp,
4820
- TestPrev,
4821
- TestView
4822
- });
4823
- //# sourceMappingURL=index.cjs.map