@intellectif/lk-react 23.1.0 → 23.1.2

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 (360) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +9 -5
  3. package/dist/ActivityErrorBoundary-B379hvtL.cjs +39 -0
  4. package/dist/ActivityErrorBoundary-B379hvtL.cjs.map +1 -0
  5. package/dist/ActivityErrorBoundary-Dw6SbWv3.js +34 -0
  6. package/dist/ActivityErrorBoundary-Dw6SbWv3.js.map +1 -0
  7. package/dist/ActivityMedia-CQQTRNl7.cjs +641 -0
  8. package/dist/ActivityMedia-CQQTRNl7.cjs.map +1 -0
  9. package/dist/ActivityMedia-vDiP-Psa.js +636 -0
  10. package/dist/ActivityMedia-vDiP-Psa.js.map +1 -0
  11. package/dist/ActivityPreview-1hhTkYuj.js +240 -0
  12. package/dist/ActivityPreview-1hhTkYuj.js.map +1 -0
  13. package/dist/ActivityPreview-BKr34exz.cjs +245 -0
  14. package/dist/ActivityPreview-BKr34exz.cjs.map +1 -0
  15. package/dist/ActivitySequence-CkX87pfB.js +839 -0
  16. package/dist/ActivitySequence-CkX87pfB.js.map +1 -0
  17. package/dist/ActivitySequence-CmoSyDnp.cjs +844 -0
  18. package/dist/ActivitySequence-CmoSyDnp.cjs.map +1 -0
  19. package/dist/Dictation-BlxRp-3k.js +926 -0
  20. package/dist/Dictation-BlxRp-3k.js.map +1 -0
  21. package/dist/Dictation-jECzL88E.cjs +931 -0
  22. package/dist/Dictation-jECzL88E.cjs.map +1 -0
  23. package/dist/FeedbackRegion-BNNMtTY-.cjs +108 -0
  24. package/dist/FeedbackRegion-BNNMtTY-.cjs.map +1 -0
  25. package/dist/FeedbackRegion-CyPSp8bA.js +85 -0
  26. package/dist/FeedbackRegion-CyPSp8bA.js.map +1 -0
  27. package/dist/FillInTheBlanks-B6xzqYXx.js +474 -0
  28. package/dist/FillInTheBlanks-B6xzqYXx.js.map +1 -0
  29. package/dist/FillInTheBlanks-BpKhdHg2.cjs +479 -0
  30. package/dist/FillInTheBlanks-BpKhdHg2.cjs.map +1 -0
  31. package/dist/GapSelect-DUSiaEQH.js +441 -0
  32. package/dist/GapSelect-DUSiaEQH.js.map +1 -0
  33. package/dist/GapSelect-payTq_Zn.cjs +446 -0
  34. package/dist/GapSelect-payTq_Zn.cjs.map +1 -0
  35. package/dist/InteractiveVideo-BguGv-HA.cjs +2955 -0
  36. package/dist/InteractiveVideo-BguGv-HA.cjs.map +1 -0
  37. package/dist/InteractiveVideo-Cg2jbU3j.js +2944 -0
  38. package/dist/InteractiveVideo-Cg2jbU3j.js.map +1 -0
  39. package/dist/LkAiProvider-DAPpA3PQ.d.cts +84 -0
  40. package/dist/LkAiProvider-DAPpA3PQ.d.cts.map +1 -0
  41. package/dist/LkAiProvider-QdEcIhoo.d.ts +84 -0
  42. package/dist/LkAiProvider-QdEcIhoo.d.ts.map +1 -0
  43. package/dist/LkIntlProvider-D_FdYXjQ.js +375 -0
  44. package/dist/LkIntlProvider-D_FdYXjQ.js.map +1 -0
  45. package/dist/LkIntlProvider-oi57lYB0.cjs +410 -0
  46. package/dist/LkIntlProvider-oi57lYB0.cjs.map +1 -0
  47. package/dist/MultipleChoice-COn5MtKY.cjs +433 -0
  48. package/dist/MultipleChoice-COn5MtKY.cjs.map +1 -0
  49. package/dist/MultipleChoice-Dra0_KYD.js +428 -0
  50. package/dist/MultipleChoice-Dra0_KYD.js.map +1 -0
  51. package/dist/PronunciationFeedback-DlMPGjkR.cjs +831 -0
  52. package/dist/PronunciationFeedback-DlMPGjkR.cjs.map +1 -0
  53. package/dist/PronunciationFeedback-Dxd6XPkO.js +772 -0
  54. package/dist/PronunciationFeedback-Dxd6XPkO.js.map +1 -0
  55. package/dist/ReadAloud-C8RhaUqV.js +1092 -0
  56. package/dist/{chunk-DC4CQCK5.js.map → ReadAloud-C8RhaUqV.js.map} +1 -1
  57. package/dist/ReadAloud-akDehitT.cjs +1103 -0
  58. package/dist/ReadAloud-akDehitT.cjs.map +1 -0
  59. package/dist/StimulusPanel-BgzByfkb.js +74 -0
  60. package/dist/StimulusPanel-BgzByfkb.js.map +1 -0
  61. package/dist/StimulusPanel-b66gaN3i.cjs +79 -0
  62. package/dist/StimulusPanel-b66gaN3i.cjs.map +1 -0
  63. package/dist/ThemeProvider-B6DyGqzh.d.cts +62 -0
  64. package/dist/ThemeProvider-B6DyGqzh.d.cts.map +1 -0
  65. package/dist/ThemeProvider-BCrxBaY-.d.ts +62 -0
  66. package/dist/ThemeProvider-BCrxBaY-.d.ts.map +1 -0
  67. package/dist/ThemeProvider-BRN1tj4n.cjs +187 -0
  68. package/dist/ThemeProvider-BRN1tj4n.cjs.map +1 -0
  69. package/dist/ThemeProvider-C7K9iMLX.js +158 -0
  70. package/dist/ThemeProvider-C7K9iMLX.js.map +1 -0
  71. package/dist/WrittenResponse-Bj3eFmGl.cjs +491 -0
  72. package/dist/WrittenResponse-Bj3eFmGl.cjs.map +1 -0
  73. package/dist/WrittenResponse-Cl8G6nO_.js +486 -0
  74. package/dist/WrittenResponse-Cl8G6nO_.js.map +1 -0
  75. package/dist/ai/LkAiProvider.cjs +34 -14
  76. package/dist/ai/LkAiProvider.cjs.map +1 -1
  77. package/dist/ai/LkAiProvider.d.cts +2 -83
  78. package/dist/ai/LkAiProvider.d.ts +2 -83
  79. package/dist/ai/LkAiProvider.js +33 -2
  80. package/dist/ai/LkAiProvider.js.map +1 -1
  81. package/dist/ai/useAiHelp.cjs +7 -25
  82. package/dist/ai/useAiHelp.d.cts +175 -177
  83. package/dist/ai/useAiHelp.d.cts.map +1 -0
  84. package/dist/ai/useAiHelp.d.ts +175 -177
  85. package/dist/ai/useAiHelp.d.ts.map +1 -0
  86. package/dist/ai/useAiHelp.js +3 -4
  87. package/dist/components/ActivityPreview.cjs +3 -29
  88. package/dist/components/ActivityPreview.d.cts +2 -81
  89. package/dist/components/ActivityPreview.d.ts +2 -81
  90. package/dist/components/ActivityPreview.js +2 -20
  91. package/dist/components/ActivitySequence.cjs +3 -30
  92. package/dist/components/ActivitySequence.d.cts +2 -432
  93. package/dist/components/ActivitySequence.d.ts +2 -432
  94. package/dist/components/ActivitySequence.js +2 -21
  95. package/dist/components/Dictation.cjs +4 -21
  96. package/dist/components/Dictation.d.cts +2 -19
  97. package/dist/components/Dictation.d.ts +2 -19
  98. package/dist/components/Dictation.js +3 -12
  99. package/dist/components/FillInTheBlanks.cjs +4 -20
  100. package/dist/components/FillInTheBlanks.d.cts +2 -30
  101. package/dist/components/FillInTheBlanks.d.ts +2 -30
  102. package/dist/components/FillInTheBlanks.js +3 -11
  103. package/dist/components/GapSelect.cjs +4 -20
  104. package/dist/components/GapSelect.d.cts +2 -27
  105. package/dist/components/GapSelect.d.ts +2 -27
  106. package/dist/components/GapSelect.js +3 -11
  107. package/dist/components/InteractiveVideo.cjs +5 -32
  108. package/dist/components/InteractiveVideo.d.cts +3 -291
  109. package/dist/components/InteractiveVideo.d.ts +3 -291
  110. package/dist/components/InteractiveVideo.js +3 -19
  111. package/dist/components/MultipleChoice.cjs +4 -20
  112. package/dist/components/MultipleChoice.d.cts +2 -26
  113. package/dist/components/MultipleChoice.d.ts +2 -26
  114. package/dist/components/MultipleChoice.js +3 -11
  115. package/dist/components/PronunciationFeedback.cjs +4 -17
  116. package/dist/components/PronunciationFeedback.d.cts +2 -90
  117. package/dist/components/PronunciationFeedback.d.ts +2 -90
  118. package/dist/components/PronunciationFeedback.js +3 -8
  119. package/dist/components/ReadAloud.cjs +4 -22
  120. package/dist/components/ReadAloud.d.cts +7 -11
  121. package/dist/components/ReadAloud.d.cts.map +1 -0
  122. package/dist/components/ReadAloud.d.ts +7 -11
  123. package/dist/components/ReadAloud.d.ts.map +1 -0
  124. package/dist/components/ReadAloud.js +3 -13
  125. package/dist/components/StimulusPanel.cjs +3 -14
  126. package/dist/components/StimulusPanel.d.cts +2 -51
  127. package/dist/components/StimulusPanel.d.ts +2 -51
  128. package/dist/components/StimulusPanel.js +2 -5
  129. package/dist/components/WrittenResponse.cjs +4 -19
  130. package/dist/components/WrittenResponse.d.cts +3 -18
  131. package/dist/components/WrittenResponse.d.ts +3 -18
  132. package/dist/components/WrittenResponse.js +3 -10
  133. package/dist/direction-Dq0_HtA5.js +183 -0
  134. package/dist/direction-Dq0_HtA5.js.map +1 -0
  135. package/dist/direction-K1pj0HCA.cjs +200 -0
  136. package/dist/direction-K1pj0HCA.cjs.map +1 -0
  137. package/dist/hooks/useActivityState.cjs +28 -10
  138. package/dist/hooks/useActivityState.cjs.map +1 -1
  139. package/dist/hooks/useActivityState.d.cts +25 -24
  140. package/dist/hooks/useActivityState.d.cts.map +1 -0
  141. package/dist/hooks/useActivityState.d.ts +25 -24
  142. package/dist/hooks/useActivityState.d.ts.map +1 -0
  143. package/dist/hooks/useActivityState.js +28 -2
  144. package/dist/hooks/useActivityState.js.map +1 -1
  145. package/dist/hooks/useSpeechRecorder.cjs +5 -16
  146. package/dist/hooks/useSpeechRecorder.d.cts +2 -127
  147. package/dist/hooks/useSpeechRecorder.d.ts +2 -127
  148. package/dist/hooks/useSpeechRecorder.js +3 -3
  149. package/dist/hooks/useXAPI.cjs +126 -10
  150. package/dist/hooks/useXAPI.cjs.map +1 -1
  151. package/dist/hooks/useXAPI.d.cts +14 -14
  152. package/dist/hooks/useXAPI.d.cts.map +1 -0
  153. package/dist/hooks/useXAPI.d.ts +14 -14
  154. package/dist/hooks/useXAPI.d.ts.map +1 -0
  155. package/dist/hooks/useXAPI.js +126 -2
  156. package/dist/hooks/useXAPI.js.map +1 -1
  157. package/dist/i18n/LkIntlProvider.cjs +9 -32
  158. package/dist/i18n/LkIntlProvider.d.cts +34 -38
  159. package/dist/i18n/LkIntlProvider.d.cts.map +1 -0
  160. package/dist/i18n/LkIntlProvider.d.ts +34 -38
  161. package/dist/i18n/LkIntlProvider.d.ts.map +1 -0
  162. package/dist/i18n/LkIntlProvider.js +3 -3
  163. package/dist/index-6P4rJHrJ.d.cts +432 -0
  164. package/dist/index-6P4rJHrJ.d.cts.map +1 -0
  165. package/dist/index-90CX504k.d.ts +90 -0
  166. package/dist/index-90CX504k.d.ts.map +1 -0
  167. package/dist/index-B_SgnjsC.d.cts +291 -0
  168. package/dist/index-B_SgnjsC.d.cts.map +1 -0
  169. package/dist/index-BavVW5z5.d.cts +25 -0
  170. package/dist/index-BavVW5z5.d.cts.map +1 -0
  171. package/dist/index-BhHv6Fiu.d.cts +28 -0
  172. package/dist/index-BhHv6Fiu.d.cts.map +1 -0
  173. package/dist/index-Bsu8VciA.d.ts +432 -0
  174. package/dist/index-Bsu8VciA.d.ts.map +1 -0
  175. package/dist/index-C1KGpD1k.d.ts +49 -0
  176. package/dist/index-C1KGpD1k.d.ts.map +1 -0
  177. package/dist/index-CKTpYTCC.d.cts +49 -0
  178. package/dist/index-CKTpYTCC.d.cts.map +1 -0
  179. package/dist/index-CO_SRFJj.d.ts +16 -0
  180. package/dist/index-CO_SRFJj.d.ts.map +1 -0
  181. package/dist/index-CSsuUsP7.d.cts +124 -0
  182. package/dist/index-CSsuUsP7.d.cts.map +1 -0
  183. package/dist/index-CunUyeuN.d.cts +78 -0
  184. package/dist/index-CunUyeuN.d.cts.map +1 -0
  185. package/dist/index-CzfRzks6.d.cts +90 -0
  186. package/dist/index-CzfRzks6.d.cts.map +1 -0
  187. package/dist/index-D14xtpBS.d.cts +24 -0
  188. package/dist/index-D14xtpBS.d.cts.map +1 -0
  189. package/dist/index-DHRPAPZf.d.ts +291 -0
  190. package/dist/index-DHRPAPZf.d.ts.map +1 -0
  191. package/dist/index-DLV6cK26.d.cts +16 -0
  192. package/dist/index-DLV6cK26.d.cts.map +1 -0
  193. package/dist/index-DbCCQ9cP.d.ts +124 -0
  194. package/dist/index-DbCCQ9cP.d.ts.map +1 -0
  195. package/dist/index-DeV5B2m5.d.ts +24 -0
  196. package/dist/index-DeV5B2m5.d.ts.map +1 -0
  197. package/dist/index-TZCJVSge.d.ts +28 -0
  198. package/dist/index-TZCJVSge.d.ts.map +1 -0
  199. package/dist/index-ZVvLHsd3.d.ts +25 -0
  200. package/dist/index-ZVvLHsd3.d.ts.map +1 -0
  201. package/dist/index-eQwBgpSw.d.ts +78 -0
  202. package/dist/index-eQwBgpSw.d.ts.map +1 -0
  203. package/dist/index.cjs +118 -163
  204. package/dist/index.cjs.map +1 -1
  205. package/dist/index.d.cts +20 -24
  206. package/dist/index.d.ts +20 -24
  207. package/dist/index.js +84 -29
  208. package/dist/index.js.map +1 -1
  209. package/dist/theme/ThemeProvider.cjs +8 -28
  210. package/dist/theme/ThemeProvider.d.cts +2 -59
  211. package/dist/theme/ThemeProvider.d.ts +2 -59
  212. package/dist/theme/ThemeProvider.js +3 -3
  213. package/dist/tries-CbbtZkdG.cjs +363 -0
  214. package/dist/tries-CbbtZkdG.cjs.map +1 -0
  215. package/dist/tries-DTHSrLCm.js +310 -0
  216. package/dist/tries-DTHSrLCm.js.map +1 -0
  217. package/dist/types-BOQd93x3.d.cts +994 -0
  218. package/dist/types-BOQd93x3.d.cts.map +1 -0
  219. package/dist/types-HIrgF_mS.d.ts +994 -0
  220. package/dist/types-HIrgF_mS.d.ts.map +1 -0
  221. package/dist/useAiHelp-B-ccDL5Q.js +906 -0
  222. package/dist/useAiHelp-B-ccDL5Q.js.map +1 -0
  223. package/dist/useAiHelp-h9yOLFqt.cjs +995 -0
  224. package/dist/useAiHelp-h9yOLFqt.cjs.map +1 -0
  225. package/dist/useSpeechRecorder--O_f-xvt.cjs +720 -0
  226. package/dist/useSpeechRecorder--O_f-xvt.cjs.map +1 -0
  227. package/dist/useSpeechRecorder-DtAYvl02.d.cts +154 -0
  228. package/dist/useSpeechRecorder-DtAYvl02.d.cts.map +1 -0
  229. package/dist/useSpeechRecorder-DtAYvl02.d.ts +154 -0
  230. package/dist/useSpeechRecorder-DtAYvl02.d.ts.map +1 -0
  231. package/dist/useSpeechRecorder-zIi9Dlw8.js +709 -0
  232. package/dist/useSpeechRecorder-zIi9Dlw8.js.map +1 -0
  233. package/package.json +10 -11
  234. package/dist/WrittenResponse-B7A5gHMj.d.ts +0 -115
  235. package/dist/WrittenResponse-BpL9p2Hn.d.cts +0 -115
  236. package/dist/ai/useAiHelp.cjs.map +0 -1
  237. package/dist/ai/useAiHelp.js.map +0 -1
  238. package/dist/chunk-2PNSVBLQ.cjs +0 -54
  239. package/dist/chunk-2PNSVBLQ.cjs.map +0 -1
  240. package/dist/chunk-2TW6WLBC.js +0 -80
  241. package/dist/chunk-2TW6WLBC.js.map +0 -1
  242. package/dist/chunk-4ZZWZSWI.js +0 -61
  243. package/dist/chunk-4ZZWZSWI.js.map +0 -1
  244. package/dist/chunk-6N43WDVG.js +0 -29
  245. package/dist/chunk-6N43WDVG.js.map +0 -1
  246. package/dist/chunk-7ALBSPYR.cjs +0 -436
  247. package/dist/chunk-7ALBSPYR.cjs.map +0 -1
  248. package/dist/chunk-7NFY3M3W.js +0 -234
  249. package/dist/chunk-7NFY3M3W.js.map +0 -1
  250. package/dist/chunk-7SB2MJA4.js +0 -29
  251. package/dist/chunk-7SB2MJA4.js.map +0 -1
  252. package/dist/chunk-ABJJ3LII.js +0 -434
  253. package/dist/chunk-ABJJ3LII.js.map +0 -1
  254. package/dist/chunk-BIGGXHAW.cjs +0 -342
  255. package/dist/chunk-BIGGXHAW.cjs.map +0 -1
  256. package/dist/chunk-C7QZE5BI.js +0 -430
  257. package/dist/chunk-C7QZE5BI.js.map +0 -1
  258. package/dist/chunk-CWTUWNV3.cjs +0 -2937
  259. package/dist/chunk-CWTUWNV3.cjs.map +0 -1
  260. package/dist/chunk-DC4CQCK5.js +0 -915
  261. package/dist/chunk-DS6HN3YR.cjs +0 -496
  262. package/dist/chunk-DS6HN3YR.cjs.map +0 -1
  263. package/dist/chunk-FDQR4GAZ.js +0 -240
  264. package/dist/chunk-FDQR4GAZ.js.map +0 -1
  265. package/dist/chunk-FKGMSOJF.js +0 -394
  266. package/dist/chunk-FKGMSOJF.js.map +0 -1
  267. package/dist/chunk-G6PXJ2SA.js +0 -823
  268. package/dist/chunk-G6PXJ2SA.js.map +0 -1
  269. package/dist/chunk-HNLRVRQR.js +0 -335
  270. package/dist/chunk-HNLRVRQR.js.map +0 -1
  271. package/dist/chunk-J3C72RPK.cjs +0 -31
  272. package/dist/chunk-J3C72RPK.cjs.map +0 -1
  273. package/dist/chunk-K63VPFOV.cjs +0 -134
  274. package/dist/chunk-K63VPFOV.cjs.map +0 -1
  275. package/dist/chunk-KFLIDTDU.cjs +0 -825
  276. package/dist/chunk-KFLIDTDU.cjs.map +0 -1
  277. package/dist/chunk-KHKH5LCT.cjs +0 -250
  278. package/dist/chunk-KHKH5LCT.cjs.map +0 -1
  279. package/dist/chunk-LBEKRN6Y.cjs +0 -664
  280. package/dist/chunk-LBEKRN6Y.cjs.map +0 -1
  281. package/dist/chunk-LPUWXIPR.cjs +0 -578
  282. package/dist/chunk-LPUWXIPR.cjs.map +0 -1
  283. package/dist/chunk-MCO52PV5.js +0 -520
  284. package/dist/chunk-MCO52PV5.js.map +0 -1
  285. package/dist/chunk-MKXEM2C5.cjs +0 -396
  286. package/dist/chunk-MKXEM2C5.cjs.map +0 -1
  287. package/dist/chunk-MXNC5UNO.js +0 -563
  288. package/dist/chunk-MXNC5UNO.js.map +0 -1
  289. package/dist/chunk-NAK55BYU.cjs +0 -859
  290. package/dist/chunk-NAK55BYU.cjs.map +0 -1
  291. package/dist/chunk-NDBMKGQ5.cjs +0 -599
  292. package/dist/chunk-NDBMKGQ5.cjs.map +0 -1
  293. package/dist/chunk-OD65OZIW.cjs +0 -159
  294. package/dist/chunk-OD65OZIW.cjs.map +0 -1
  295. package/dist/chunk-ORT3KLGI.js +0 -50
  296. package/dist/chunk-ORT3KLGI.js.map +0 -1
  297. package/dist/chunk-PNNUPUH4.cjs +0 -82
  298. package/dist/chunk-PNNUPUH4.cjs.map +0 -1
  299. package/dist/chunk-PWHECW6N.js +0 -2934
  300. package/dist/chunk-PWHECW6N.js.map +0 -1
  301. package/dist/chunk-RBS5A2DF.js +0 -857
  302. package/dist/chunk-RBS5A2DF.js.map +0 -1
  303. package/dist/chunk-RPWUDXG5.cjs +0 -63
  304. package/dist/chunk-RPWUDXG5.cjs.map +0 -1
  305. package/dist/chunk-TCDJY3H6.js +0 -494
  306. package/dist/chunk-TCDJY3H6.js.map +0 -1
  307. package/dist/chunk-TP5UMRAU.cjs +0 -918
  308. package/dist/chunk-TP5UMRAU.cjs.map +0 -1
  309. package/dist/chunk-TS7J6DTY.js +0 -597
  310. package/dist/chunk-TS7J6DTY.js.map +0 -1
  311. package/dist/chunk-TUVENMXB.cjs +0 -20
  312. package/dist/chunk-TUVENMXB.cjs.map +0 -1
  313. package/dist/chunk-UDCQTOVU.cjs +0 -523
  314. package/dist/chunk-UDCQTOVU.cjs.map +0 -1
  315. package/dist/chunk-UHKZXOXD.js +0 -128
  316. package/dist/chunk-UHKZXOXD.js.map +0 -1
  317. package/dist/chunk-V6BA44DS.cjs +0 -236
  318. package/dist/chunk-V6BA44DS.cjs.map +0 -1
  319. package/dist/chunk-XO5R73Y4.js +0 -653
  320. package/dist/chunk-XO5R73Y4.js.map +0 -1
  321. package/dist/chunk-XOR4MPEN.cjs +0 -31
  322. package/dist/chunk-XOR4MPEN.cjs.map +0 -1
  323. package/dist/chunk-YORQQXGO.js +0 -155
  324. package/dist/chunk-YORQQXGO.js.map +0 -1
  325. package/dist/chunk-YY4PFR3Z.cjs +0 -432
  326. package/dist/chunk-YY4PFR3Z.cjs.map +0 -1
  327. package/dist/chunk-ZPI6Q42R.js +0 -17
  328. package/dist/chunk-ZPI6Q42R.js.map +0 -1
  329. package/dist/components/ActivityPreview.cjs.map +0 -1
  330. package/dist/components/ActivityPreview.js.map +0 -1
  331. package/dist/components/ActivitySequence.cjs.map +0 -1
  332. package/dist/components/ActivitySequence.js.map +0 -1
  333. package/dist/components/Dictation.cjs.map +0 -1
  334. package/dist/components/Dictation.js.map +0 -1
  335. package/dist/components/FillInTheBlanks.cjs.map +0 -1
  336. package/dist/components/FillInTheBlanks.js.map +0 -1
  337. package/dist/components/GapSelect.cjs.map +0 -1
  338. package/dist/components/GapSelect.js.map +0 -1
  339. package/dist/components/InteractiveVideo.cjs.map +0 -1
  340. package/dist/components/InteractiveVideo.js.map +0 -1
  341. package/dist/components/MultipleChoice.cjs.map +0 -1
  342. package/dist/components/MultipleChoice.js.map +0 -1
  343. package/dist/components/PronunciationFeedback.cjs.map +0 -1
  344. package/dist/components/PronunciationFeedback.js.map +0 -1
  345. package/dist/components/ReadAloud.cjs.map +0 -1
  346. package/dist/components/ReadAloud.js.map +0 -1
  347. package/dist/components/StimulusPanel.cjs.map +0 -1
  348. package/dist/components/StimulusPanel.js.map +0 -1
  349. package/dist/components/WrittenResponse.cjs.map +0 -1
  350. package/dist/components/WrittenResponse.js.map +0 -1
  351. package/dist/hooks/useSpeechRecorder.cjs.map +0 -1
  352. package/dist/hooks/useSpeechRecorder.js.map +0 -1
  353. package/dist/i18n/LkIntlProvider.cjs.map +0 -1
  354. package/dist/i18n/LkIntlProvider.js.map +0 -1
  355. package/dist/machine-CuwKqWXC.d.cts +0 -26
  356. package/dist/machine-CuwKqWXC.d.ts +0 -26
  357. package/dist/theme/ThemeProvider.cjs.map +0 -1
  358. package/dist/theme/ThemeProvider.js.map +0 -1
  359. package/dist/types-C4IsUQsK.d.ts +0 -989
  360. package/dist/types-CJgZWtl4.d.cts +0 -989
@@ -0,0 +1,124 @@
1
+ import { t as LearnerAi } from "./LkAiProvider-DAPpA3PQ.cjs";
2
+ import { a as RenderMode, i as MediaTransportStrings, n as HtmlSanitizer, o as Renderable, r as MediaBudgetBinding, v as LkStringsOverride } from "./types-BOQd93x3.cjs";
3
+ import { DeliveryPolicy, InteractionEvent, ItemOutcome, LearnerResponse, ThemeTokens, WrittenResponseData, XAPIStatement } from "@intellectif/lk-core";
4
+ //#region src/components/WrittenResponse/WrittenResponse.d.ts
5
+ /**
6
+ * Payload delivered when the learner submits a written response. Grading is
7
+ * DEFERRED (asynchronous AI/human grading), so there is no score here — and
8
+ * deliberately no fake one: an ungraded submission must never be shown or
9
+ * stored as a 0. The consumer persists `text` and grades it out-of-band.
10
+ */
11
+ interface WrittenResponseSubmission {
12
+ /** The submitted text, verbatim. */
13
+ text: string;
14
+ /** Word count of `text`, recomputed with the canonical `countWords()`. */
15
+ wordCount: number;
16
+ /** Whether `wordCount` falls within the activity's `[minWords, maxWords]`. */
17
+ withinWordBounds: boolean;
18
+ /** Time in milliseconds from first interaction to submission. */
19
+ timeSpent: number;
20
+ /** The SUBMITTED-verb xAPI statement built for this submission (no score fields). */
21
+ xapiStatement: XAPIStatement;
22
+ }
23
+ /**
24
+ * Props for {@link WrittenResponse}. Mirrors `ActivityProps` except for the
25
+ * completion callback: a deferred-grading activity completes with a
26
+ * {@link WrittenResponseSubmission} (`onSubmitted`), not a scored
27
+ * `ActivityResult` (`onComplete`), on purpose: fabricating a score of 0 for
28
+ * ungraded work is the exact bug this type exists to fix. Everything else — controlled value, render
29
+ * mode, server outcome, rich text — follows the shared `ActivityProps`
30
+ * contract verbatim.
31
+ */
32
+ interface WrittenResponseProps {
33
+ /** Activity content. Accepts a `redact()` projection in `exam` mode. */
34
+ data: Renderable<WrittenResponseData>;
35
+ /**
36
+ * Called on submit with the ungraded submission (text, recomputed word
37
+ * count, bounds flag, timing, xAPI statement). Fires in `practice` and
38
+ * `exam` mode, after `onSubmit`; never in `review`.
39
+ *
40
+ * Optional since lk-react 2.1.0 so a `review`-mode render (which has no submit
41
+ * control) and an exam runner that only wants the raw response through
42
+ * `onSubmit` do not have to pass a no-op. Supply it in `practice`/`exam`
43
+ * unless `onSubmit` already captures everything you persist.
44
+ */
45
+ onSubmitted?: (submission: WrittenResponseSubmission) => void;
46
+ /**
47
+ * Called on submit with the raw learner response and no grade, BEFORE
48
+ * `onSubmitted`. This is the only submit callback an exam runner needs:
49
+ * the server grades the text and returns an {@link ItemOutcome} later.
50
+ */
51
+ onSubmit?: (response: LearnerResponse) => void;
52
+ /**
53
+ * Controlled value: the learner's current response. When present the
54
+ * textarea renders from it (never from internal state) and every keystroke
55
+ * goes out through `onChange` — restore an in-progress attempt, autosave a
56
+ * delta, or drive a review render with it.
57
+ */
58
+ value?: LearnerResponse;
59
+ /** Initial response for an uncontrolled component (ignored when `value` is set). */
60
+ defaultValue?: LearnerResponse;
61
+ /**
62
+ * Mount as already submitted — read at mount only. Without it a resumed
63
+ * attempt reopens an essay the learner had already submitted as editable
64
+ * and re-submittable.
65
+ */
66
+ defaultSubmitted?: boolean;
67
+ /** Fires on every change to the learner's response. Required for a controlled component. */
68
+ onChange?: (response: LearnerResponse) => void;
69
+ /**
70
+ * Presentation mode, default `practice`. `practice` and `exam` are nearly
71
+ * identical here — a written response is never graded client-side, so
72
+ * there is no local score to withhold; `exam` additionally never calls
73
+ * `evaluate()` and renders happily from a `redact()` projection.
74
+ * `review` is read-only and shows the server's `outcome`.
75
+ */
76
+ renderMode?: RenderMode;
77
+ /**
78
+ * Server-computed outcome, rendered by `review` mode: `deferred` shows a
79
+ * "not graded yet" affordance, `scored` shows the returned grade and
80
+ * feedback. Ignored in other modes — this component never manufactures an
81
+ * outcome of its own.
82
+ */
83
+ outcome?: ItemOutcome;
84
+ /** Renders `data.promptHtml` when provided. See `HtmlSanitizer`. */
85
+ sanitizeHtml?: HtmlSanitizer;
86
+ /** Binds this activity's own `data.media` to a play budget. See {@link MediaBudgetBinding}. */
87
+ mediaBudget?: MediaBudgetBinding;
88
+ /** Translations for the audio transport chrome. See {@link MediaTransportStrings}. */
89
+ mediaStrings?: Partial<MediaTransportStrings>;
90
+ /** Overrides the SDK's chrome text for this activity. See {@link LkIntlProvider}. */
91
+ strings?: LkStringsOverride;
92
+ onInteraction?: (event: InteractionEvent) => void;
93
+ /** Per-instance token overrides, applied as inline CSS vars on the root. */
94
+ theme?: Partial<ThemeTokens>;
95
+ locale?: string;
96
+ disabled?: boolean;
97
+ /**
98
+ * The delivery policy. An essay is graded later, so `feedback` reaches it —
99
+ * `false` reads a returned grade back as nothing in `review` — and so does
100
+ * AI feedback on a draft, which needs `feedback`, `solutions` and
101
+ * `ai.explanations`. See `DeliveryPolicy` in lk-core.
102
+ */
103
+ delivery?: DeliveryPolicy | null;
104
+ /**
105
+ * The host's AI ports, overriding `LkAiProvider`'s. With a `writingFeedback`
106
+ * port, a learner in `practice` can ask for feedback on a draft before
107
+ * submitting it — up to `maxWritingFeedback` times — and revise. Every
108
+ * correction in it quotes the learner's own words, or the SDK refuses it.
109
+ * Never in `exam` or `review`. See {@link LearnerAi}.
110
+ */
111
+ ai?: LearnerAi;
112
+ }
113
+ //#endregion
114
+ //#region src/components/WrittenResponse/index.d.ts
115
+ /**
116
+ * Public Written Response activity: a labelled textarea with a live word
117
+ * counter for free-text writing graded asynchronously (AI or human). The core
118
+ * is wrapped in `ActivityErrorBoundary` so a render failure (incl. the dev
119
+ * schema-validation throw) degrades to an accessible fallback.
120
+ */
121
+ declare function WrittenResponse(props: WrittenResponseProps): React.JSX.Element;
122
+ //#endregion
123
+ export { WrittenResponseProps as n, WrittenResponseSubmission as r, WrittenResponse as t };
124
+ //# sourceMappingURL=index-CSsuUsP7.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CSsuUsP7.d.cts","names":[],"sources":["../src/components/WrittenResponse/WrittenResponse.tsx","../src/components/WrittenResponse/index.tsx"],"mappings":";;;;;;;;;;UA2CiB;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA,eAAe;;;;;;;;;;;UAYA;;EAEf,MAAM,WAAW;;;;;;;;;;;EAWjB,eAAe,YAAY;;;;;;EAM3B,YAAY,UAAU;;;;;;;EAOtB,QAAQ;;EAER,eAAe;;;;;;EAMf;;EAEA,YAAY,UAAU;;;;;;;;EAQtB,aAAa;;;;;;;EAOb,UAAU;;EAEV,eAAe;;EAEf,cAAc;;EAEd,eAAe,QAAQ;;EAEvB,UAAU;EACV,iBAAiB,OAAO;;EAExB,QAAQ,QAAQ;EAChB;EACA;;;;;;;EAOA,WAAW;;;;;;;;EAQX,KAAK;;;;;;;;;;iBC9HS,gBAAgB,OAAO,uBAAuB,MAAM,IAAI"}
@@ -0,0 +1,78 @@
1
+ import { a as RenderMode, n as HtmlSanitizer, v as LkStringsOverride } from "./types-BOQd93x3.cjs";
2
+ import { t as ActivityRenderer } from "./index-6P4rJHrJ.cjs";
3
+ import { DraftNotComplete, ItemOutcome, LearnerResponse, ThemeTokens } from "@intellectif/lk-core";
4
+ import { ReactNode } from "react";
5
+ //#region src/components/ActivityPreview/ActivityPreview.d.ts
6
+ interface ActivityPreviewProps {
7
+ /**
8
+ * The activity as an editor holds it right now, finished or not. It is checked
9
+ * with `validateDraft` before anything renders — by content, on every render —
10
+ * so a half-written question never reaches a component that assumes a valid
11
+ * one.
12
+ */
13
+ draft: unknown;
14
+ /** The mode to preview in. Defaults to `practice`. */
15
+ renderMode?: RenderMode;
16
+ /**
17
+ * A learner response to show as if a learner had given it. In `practice` and
18
+ * `exam` it seeds the answer, which stays editable; in `review` it is the
19
+ * submitted answer, marked by `evaluate()` unless `outcome` is given.
20
+ */
21
+ response?: LearnerResponse;
22
+ /**
23
+ * The outcome `review` marks the response with, instead of the one
24
+ * `evaluate()` computes — which is how to preview a returned grade on a written
25
+ * response, since the SDK cannot score one. Ignored in other modes.
26
+ */
27
+ outcome?: ItemOutcome;
28
+ /**
29
+ * Rendered in place of the activity while the draft is not complete, with the
30
+ * issues `validateDraft` found — so an editor can list them in its own words.
31
+ * The issue messages are English, and a preview that rendered them would put
32
+ * untranslatable text on screen. Without it, the preview shows the
33
+ * `previewIncomplete` or `previewInvalid` string.
34
+ */
35
+ fallback?: (result: DraftNotComplete) => ReactNode;
36
+ /**
37
+ * Renderers for activity types beyond the built-ins, keyed by `type`, as on
38
+ * `<ActivitySequence>`. An entry receives the shared prop contract and
39
+ * nothing else, so — like the shuffle seed below — the in-memory recording
40
+ * binding a previewed read-aloud is given does not reach one. Nor does the
41
+ * `question` a sequence hands a renderer: a preview is one question with no
42
+ * set around it, so there is no slot to report to and nothing to page away
43
+ * from. A renderer that uses it must treat it as optional, which its type
44
+ * already says.
45
+ */
46
+ renderers?: Readonly<Record<string, ActivityRenderer>>;
47
+ /**
48
+ * Seeds `<MultipleChoice>`'s option shuffle. Defaults to a fixed seed, so the
49
+ * order holds while options are edited; adding or removing one deals them
50
+ * again, because the shuffle orders by position. A `renderers` entry is given
51
+ * no seed, as on `<ActivitySequence>`.
52
+ */
53
+ shuffleSeed?: string;
54
+ /** Renders author-supplied rich text. See `HtmlSanitizer`. */
55
+ sanitizeHtml?: HtmlSanitizer;
56
+ /** Overrides the SDK's chrome text, for the preview's notice and the activity alike. */
57
+ strings?: LkStringsOverride;
58
+ /** Per-instance token overrides, passed to the activity. */
59
+ theme?: Partial<ThemeTokens>;
60
+ /** BCP 47 tag of the interface language, passed to the activity. */
61
+ locale?: string;
62
+ }
63
+ /**
64
+ * Renders an activity from an editor's draft, in any render mode, with a
65
+ * simulated learner response — and renders a notice instead while the draft is
66
+ * not an activity yet.
67
+ *
68
+ * Nothing it renders is recorded: no callback is wired, so a practice attempt in
69
+ * a preview scores locally and goes nowhere, and a recording's play limit is
70
+ * counted in memory only.
71
+ *
72
+ * A draft with no string `type`, a type nobody registered, and a `response` of a
73
+ * different type from the draft are wiring errors, and throw.
74
+ */
75
+ declare function ActivityPreview({ draft, renderMode, response, outcome, fallback, renderers, shuffleSeed, sanitizeHtml, strings, theme, locale }: ActivityPreviewProps): React.JSX.Element;
76
+ //#endregion
77
+ export { ActivityPreviewProps as n, ActivityPreview as t };
78
+ //# sourceMappingURL=index-CunUyeuN.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CunUyeuN.d.cts","names":[],"sources":["../src/components/ActivityPreview/ActivityPreview.tsx"],"mappings":";;;;;UAkEiB;;;;;;;EAOf;;EAEA,aAAa;;;;;;EAMb,WAAW;;;;;;EAMX,UAAU;;;;;;;;EAQV,YAAY,QAAQ,qBAAqB;;;;;;;;;;;EAWzC,YAAY,SAAS,eAAe;;;;;;;EAOpC;;EAEA,eAAe;;EAEf,UAAU;;EAEV,QAAQ,QAAQ;;EAEhB;;;;;;;;;;;;;;iBAiBc,kBACd,OACA,YACA,UACA,SACA,UACA,WACA,aACA,cACA,SACA,OACA,UACC,uBAAuB,MAAM,IAAI"}
@@ -0,0 +1,90 @@
1
+ import { t as LearnerAi } from "./LkAiProvider-DAPpA3PQ.cjs";
2
+ import { a as RenderMode, v as LkStringsOverride } from "./types-BOQd93x3.cjs";
3
+ import { DeliveryPolicy, GradeRecord, InteractionEvent, ReadAloudData, SpeechAssessment, ThemeTokens } from "@intellectif/lk-core";
4
+ import "react";
5
+ //#region src/components/PronunciationFeedback/PronunciationFeedback.d.ts
6
+ interface PronunciationFeedbackProps {
7
+ /**
8
+ * The item's reading and its language: the two fields every mark depends
9
+ * on. Pass the whole item — or its `id` and `title` with them, and its
10
+ * `instructions` and `ai` where it has them — for AI coaching: without an
11
+ * `id` and a `title` none is offered, whatever the ports.
12
+ */
13
+ data: Pick<ReadAloudData, 'referenceText' | 'locale'> & Partial<Pick<ReadAloudData, 'id' | 'title' | 'instructions' | 'ai'>>;
14
+ /**
15
+ * The assessor's evidence. Checked with `validateSpeechAssessment` before it
16
+ * is aligned: see the note on this component about what a bad one costs.
17
+ */
18
+ assessment: SpeechAssessment;
19
+ /**
20
+ * The grade the evidence produced, when one exists. Its `criteria` are what
21
+ * the dimensions are read from, because they are the numbers the learner was
22
+ * actually graded on. A grade that cannot be read — a score that is not a
23
+ * number between 0 and its maximum, a `passed` that is not a boolean — is
24
+ * shown as could-not-be-graded, never as a percentage made up from it.
25
+ */
26
+ grade?: GradeRecord;
27
+ /**
28
+ * The learner's own take, playable. With it, each word that carries timings
29
+ * gets a button that plays just that word. A take the page refuses to play —
30
+ * a `blob:` URL under a Content-Security-Policy whose `media-src` does not
31
+ * allow one, most often — offers no such button, and the panel says the take
32
+ * cannot be played here.
33
+ */
34
+ audioUrl?: string;
35
+ /**
36
+ * Confidence above which a break note is shown, 0..1. **No default**: how
37
+ * confident an engine has to be before a pause is worth telling a learner
38
+ * about is a calibration, and the SDK has no calibrated answer. Without it no
39
+ * break note is shown at all.
40
+ */
41
+ breakThreshold?: number;
42
+ /** The same, for the monotone note read off `assessment.prosody`. */
43
+ monotoneThreshold?: number;
44
+ /**
45
+ * BCP 47 tag stamped as `lang` on the root: the INTERFACE language, the one
46
+ * this component's own sentences are written in. It is not `data.locale`,
47
+ * which is the language of the reading and is put on the words themselves.
48
+ */
49
+ locale?: string;
50
+ /** Per-instance token overrides, applied as inline CSS vars on the root. */
51
+ theme?: Partial<ThemeTokens>;
52
+ /** Overrides the SDK's chrome text for this panel. See {@link LkIntlProvider}. */
53
+ strings?: LkStringsOverride;
54
+ /**
55
+ * The host's AI ports, overriding `LkAiProvider`'s. With a
56
+ * `pronunciationCoaching` port the learner can ask for coaching on these
57
+ * marks — once per reading — which a model writes and the SDK checks: every
58
+ * word it coaches is one marked here, and every sound one the engine
59
+ * reported. See {@link LearnerAi}.
60
+ */
61
+ ai?: LearnerAi;
62
+ /**
63
+ * The mode the reading was given, for AI coaching alone: `exam` offers none,
64
+ * and an `exam` around the panel wins. The marks themselves show in any mode.
65
+ */
66
+ renderMode?: RenderMode;
67
+ /**
68
+ * What the paper lets a learner see. Coaching needs `feedback` and AI
69
+ * explanations; the paper around the panel holds as well.
70
+ */
71
+ delivery?: DeliveryPolicy | null;
72
+ /** Where `ai-coaching-shown` and `ai-help-refused` go. */
73
+ onInteraction?: (event: InteractionEvent) => void;
74
+ }
75
+ //#endregion
76
+ //#region src/components/PronunciationFeedback/index.d.ts
77
+ /**
78
+ * Public pronunciation-feedback panel: the core wrapped in
79
+ * `ActivityErrorBoundary` so a render failure (the dev throw for evidence
80
+ * `validateSpeechAssessment` refuses among them) degrades to an accessible
81
+ * fallback instead of crashing the host.
82
+ *
83
+ * **No `activityTitle`.** Its `data` is two fields of a read-aloud item and
84
+ * carries no title, so the production fallback is the unnamed one. Naming it
85
+ * would mean inventing a title for a panel that never had one.
86
+ */
87
+ declare function PronunciationFeedback(props: PronunciationFeedbackProps): React.JSX.Element;
88
+ //#endregion
89
+ export { PronunciationFeedbackProps as n, PronunciationFeedback as t };
90
+ //# sourceMappingURL=index-CzfRzks6.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CzfRzks6.d.cts","names":[],"sources":["../src/components/PronunciationFeedback/PronunciationFeedback.tsx","../src/components/PronunciationFeedback/index.tsx"],"mappings":";;;;;UAyDiB;;;;;;;EAOf,MAAM,KAAK,6CACT,QAAQ,KAAK;;;;;EAKf,YAAY;;;;;;;;EAQZ,QAAQ;;;;;;;;EAQR;;;;;;;EAOA;;EAEA;;;;;;EAMA;;EAEA,QAAQ,QAAQ;;EAEhB,UAAU;;;;;;;;EAQV,KAAK;;;;;EAKL,aAAa;;;;;EAKb,WAAW;;EAEX,iBAAiB,OAAO;;;;;;;;;;;;;;iBCxGV,sBAAsB,OAAO,6BAA6B,MAAM,IAAI"}
@@ -0,0 +1,24 @@
1
+ import { t as ActivityProps } from "./types-BOQd93x3.cjs";
2
+ import { MultipleChoiceData } from "@intellectif/lk-core";
3
+ //#region src/components/MultipleChoice/MultipleChoice.d.ts
4
+ interface MultipleChoiceProps extends ActivityProps<MultipleChoiceData> {
5
+ /**
6
+ * Seed for the deterministic option shuffle. Supply one (e.g. the attempt
7
+ * id) to make the shuffled order reproducible server-side, stable across
8
+ * page reloads, and identical between SSR and hydration. When absent, a
9
+ * random per-mount session seed is used (order stable within the mount
10
+ * only — the behaviour before `shuffleSeed` existed).
11
+ */
12
+ shuffleSeed?: string;
13
+ }
14
+ //#endregion
15
+ //#region src/components/MultipleChoice/index.d.ts
16
+ /**
17
+ * Public Multiple Choice activity: the core component wrapped in
18
+ * `ActivityErrorBoundary` so a render failure (incl. the dev schema-validation
19
+ * throw) degrades to an accessible fallback instead of crashing the host.
20
+ */
21
+ declare function MultipleChoice(props: MultipleChoiceProps): React.JSX.Element;
22
+ //#endregion
23
+ export { MultipleChoiceProps as n, MultipleChoice as t };
24
+ //# sourceMappingURL=index-D14xtpBS.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D14xtpBS.d.cts","names":[],"sources":["../src/components/MultipleChoice/MultipleChoice.tsx","../src/components/MultipleChoice/index.tsx"],"mappings":";;;UAyGiB,4BAA4B,cAAc;;;;;;;;EAQzD;;;;;;;;;iBCjGc,eAAe,OAAO,sBAAsB,MAAM,IAAI"}
@@ -0,0 +1,291 @@
1
+ import { t as LearnerAi } from "./LkAiProvider-QdEcIhoo.js";
2
+ import { a as RenderMode, l as SequenceRecordingBinding, n as HtmlSanitizer, s as RenderableActivity, u as SequenceRecordingSlot, v as LkStringsOverride, x as VideoPreferences } from "./types-HIrgF_mS.js";
3
+ import { ReactNode } from "react";
4
+ import { ActivityResult, DeliveryPolicy, InteractionEvent, InteractionKind, ItemGroup, ItemOutcome, ItemScoringPolicy, LearnerResponse, MediaProgress, MediaTrack, ResolvedDeliveryPolicy, ResolvedItemScoringPolicy, SpeechAssessment, ThemeTokens } from "@intellectif/lk-core";
5
+ //#region src/components/InteractiveVideo/InteractiveVideo.d.ts
6
+ /** An item group whose items may be `redact()` projections: the client's view of an interactive video. */
7
+ type RenderableItemGroup = ItemGroup<RenderableActivity>;
8
+ /** A question's place: its slot, as `<ActivitySequence>` reports it, plus the quiz it sits in. */
9
+ interface InteractiveVideoSlot extends SequenceRecordingSlot {
10
+ cueId: string;
11
+ }
12
+ /** What `onFinished` reports: every question, and how the learner left it. */
13
+ interface InteractiveVideoSummary {
14
+ slots: {
15
+ slotId: string;
16
+ activityId: string;
17
+ cueId: string;
18
+ status: 'answered' | 'skipped' | 'unreached';
19
+ }[];
20
+ }
21
+ /**
22
+ * One question, as `renderQuestion` is handed it: what to draw, and the six
23
+ * calls through which the video learns what the learner did.
24
+ *
25
+ * The calls are the ones the SDK's own components make, so a question the host
26
+ * draws counts exactly as one the SDK draws — in the step dots, in whether a
27
+ * required quiz lets the learner go on, on the end card and in `onFinished`.
28
+ * Each keeps ONE identity per question for the life of the player, so it is
29
+ * safe in an effect's dependencies, and each does nothing once the player has
30
+ * unmounted.
31
+ */
32
+ interface InteractiveVideoQuestion {
33
+ /** The question, as the SDK would have rendered it: full data, or a `redact()` projection. */
34
+ activity: RenderableActivity;
35
+ /** Where it sits: the same object `onSubmit` and `onActivityComplete` are handed, for the life of the player. */
36
+ slot: InteractiveVideoSlot;
37
+ /**
38
+ * Passed through untouched. The SDK cannot enforce a mode for pixels it does
39
+ * not draw: in `exam` the host must not reveal correctness, and in `review`
40
+ * nothing is submittable — `submit`, `complete` and `clear` are ignored there.
41
+ */
42
+ renderMode: RenderMode;
43
+ /**
44
+ * `true` while this question is the one on screen: its quiz is open and it is
45
+ * the current step. `false` from the moment it leaves the screen — another
46
+ * step, the quiz closing, another quiz opening — and `true` again when the
47
+ * learner comes back.
48
+ *
49
+ * WHEN IT TURNS `false`, STOP THE MICROPHONE, ANY TIMER AND ANY SPEECH. The
50
+ * video pauses the `<audio>` and `<video>` elements inside the question and
51
+ * stops the recorders the SDK started, but it cannot reach a recorder it did
52
+ * not create.
53
+ */
54
+ active: boolean;
55
+ locale?: string;
56
+ /** The answer restored from `responses`. A starting value: read it once, as the SDK's components do. */
57
+ defaultValue?: LearnerResponse;
58
+ /** Whether `submittedSlotIds` names this question: it was handed in before this attempt resumed. */
59
+ defaultSubmitted: boolean;
60
+ /** Its stored outcome from `outcomes`: review, or the grade of a question graded later. Read live. */
61
+ outcome?: ItemOutcome;
62
+ /**
63
+ * An element inside the player, for popovers and tooltips. Portal into it
64
+ * rather than into `document.body`: in fullscreen only the player is painted,
65
+ * and anything outside it silently vanishes. It is drawn above the quiz, is
66
+ * the same element for the life of the player — one for every question, so
67
+ * key what you put in it — and is `null` only before the player's first
68
+ * commit.
69
+ */
70
+ portalContainer: HTMLElement | null;
71
+ /**
72
+ * The AI ports in force for this video — its `ai` prop, else an
73
+ * `LkAiProvider` above it — for a host that offers its own explanations or
74
+ * hints. Absent in `exam`: no question gives AI help there, and the SDK
75
+ * hands its ports to none.
76
+ */
77
+ ai?: LearnerAi;
78
+ /**
79
+ * The video's delivery policy, every setting spelled out: what this question
80
+ * may show. The SDK cannot keep a policy in pixels it does not draw — where
81
+ * `feedback` or `solutions` is `false`, show no mark and no answer.
82
+ */
83
+ delivery: ResolvedDeliveryPolicy;
84
+ /**
85
+ * The video's scoring policy, every setting spelled out: how many tries a
86
+ * question gives, which counts, and what tries and hints cost. The SDK's own
87
+ * questions apply it; a question you draw scores by it with lk-core's
88
+ * `scoreTries`, or not at all.
89
+ */
90
+ scoring: ResolvedItemScoringPolicy;
91
+ /**
92
+ * The learner committed an answer: marks the question answered and forwards
93
+ * to `onSubmit(response, slot)`. Latest wins: call it again for a new take or
94
+ * a corrected answer.
95
+ */
96
+ submit(response: LearnerResponse): void;
97
+ /**
98
+ * The answer has a result: marks the question answered, keeps `score / maxScore`
99
+ * for the end card when `maxScore > 0`, and forwards to
100
+ * `onActivityComplete(result, slot)`. Latest wins. Counts as answered on its
101
+ * own, without a `submit`, and forwards exactly what was called — no
102
+ * `onSubmit` is invented for it.
103
+ */
104
+ complete(result: ActivityResult): void;
105
+ /**
106
+ * The learner withdrew the answer — a "Try again". The question is unanswered
107
+ * again and its score forgotten: its step dot empties, a required quiz holds
108
+ * the learner again, and `onFinished` would report it `skipped`. Calls no
109
+ * host callback: the host already knows.
110
+ */
111
+ clear(): void;
112
+ /**
113
+ * Work is on its way for this question — an upload, an assessment. While any
114
+ * question is pending, Finish on the end card waits, and a video that ends
115
+ * does not finish by itself; closing the quiz, paging and seeking do not wait.
116
+ * Call `setPending(false)` however the work ends, a failure included.
117
+ */
118
+ setPending(pending: boolean): void;
119
+ /** Forwards to `onInteraction`, with this question's `activityId` and the time filled in. */
120
+ emit(type: InteractionKind, payload?: Record<string, unknown>): void;
121
+ }
122
+ interface InteractiveVideoProps {
123
+ /** An item group with a video stimulus and a timeline. Redacted projections in exam and review. */
124
+ group: RenderableItemGroup;
125
+ /**
126
+ * `practice` (the default) grades each question and shows its feedback;
127
+ * `exam` submits without showing correctness — a check-in marked later;
128
+ * `review` shows how each question was marked.
129
+ *
130
+ * `exam` does NOT make the video fit for an official summative exam. The
131
+ * learner controls the recording — rewinds it, slows it, reads its
132
+ * transcript — while the questions are open, and nothing here times a
133
+ * question or holds a single pass. Deliver a paper of record with
134
+ * `<ActivitySequence>`.
135
+ */
136
+ renderMode?: RenderMode;
137
+ /** Where to resume. Read through `readMediaProgress` and clamped; a required quiz is never skipped by a resume. */
138
+ progress?: MediaProgress;
139
+ /** At most every 5 s while playing, and on pause, seek, a quiz opening and the end. */
140
+ onProgress?: (progress: MediaProgress) => void;
141
+ /** Answers restored from the host, by slot id: `AttemptState.responses`. Read once, at mount. */
142
+ responses?: Readonly<Record<string, LearnerResponse>>;
143
+ /**
144
+ * Questions the learner had already submitted, from
145
+ * `AttemptState.submittedSlotIds`: mounted submitted, and counted as
146
+ * answered, so a resumed video neither reopens a committed answer nor stops
147
+ * again at a quiz already done. Read once, at mount.
148
+ */
149
+ submittedSlotIds?: readonly string[];
150
+ /** Stored outcomes, by slot id: review, and the grades of questions graded later. */
151
+ outcomes?: Readonly<Record<string, ItemOutcome>>;
152
+ onSubmit?: (response: LearnerResponse, slot: InteractiveVideoSlot) => void;
153
+ onActivityComplete?: (result: ActivityResult, slot: InteractiveVideoSlot) => void;
154
+ /**
155
+ * Once per mount: when the learner presses Finish, or the video ends with every
156
+ * question answered — either way, only once no answer is still on its way.
157
+ */
158
+ onFinished?: (summary: InteractiveVideoSummary) => void;
159
+ onInteraction?: (event: InteractionEvent) => void;
160
+ /**
161
+ * Draws a question yourself. Called for each question once its quiz has
162
+ * opened, and on every render after;
163
+ * return `undefined` for the SDK's own component, so a host can take over one
164
+ * activity type and leave the rest. `null` draws nothing, and is kept.
165
+ *
166
+ * The video still owns everything around the question: when it opens,
167
+ * whether it counts as answered, whether a required quiz lets the learner go
168
+ * on, pausing, resume and the end summary — all through the calls on
169
+ * {@link InteractiveVideoQuestion}. A question the host draws is never
170
+ * treated differently from one the SDK draws.
171
+ *
172
+ * THE HOST MUST STOP ITS MICROPHONE WHEN `active` TURNS `false`: the SDK stops
173
+ * only the recorders it created. And the SDK cannot keep a mode for pixels it
174
+ * does not draw: in `exam` reveal no correctness, and in `review` accept no
175
+ * answer.
176
+ *
177
+ * What you return is keyed by the question's slot and stays mounted for the
178
+ * life of the player, like the SDK's own questions, and sits inside the same
179
+ * error boundary: a throw degrades that one question, never the video.
180
+ */
181
+ renderQuestion?: (question: InteractiveVideoQuestion) => ReactNode | undefined;
182
+ /**
183
+ * Where read-aloud takes are stored and judged. Required for every read-aloud
184
+ * the SDK draws itself, outside review; a video whose read-alouds are all
185
+ * drawn by `renderQuestion` needs none.
186
+ */
187
+ recordingBinding?: SequenceRecordingBinding;
188
+ /** Speech assessments by slot id, so `review` shows the marks behind a read-aloud's grade. Read live. */
189
+ assessments?: Readonly<Record<string, SpeechAssessment>>;
190
+ /** A self-hosted copy of the read-aloud capture processor, for a strict Content-Security-Policy. */
191
+ workletUrl?: string;
192
+ /**
193
+ * Fetches a caption file with the host's credentials and returns its WebVTT
194
+ * text. Without it, the player fetches `src` itself — which a `<track>`
195
+ * could not do for a URL that needs an Authorization header.
196
+ */
197
+ captionsLoader?: (track: MediaTrack) => Promise<string>;
198
+ /**
199
+ * FORCES preferences: each field given here overrides what the learner chose,
200
+ * every time the video opens. For a starting point the learner can still
201
+ * change — a language pair, say — pass `defaultPreferences` instead. Read when
202
+ * the video opens; the learner's own changes after that hold.
203
+ */
204
+ preferences?: Partial<VideoPreferences>;
205
+ /**
206
+ * Preferences to start from, below what the learner chose in this browser:
207
+ * each field applies until the learner changes it. A host that keeps the
208
+ * learner's choice on their account passes it back here — on a new device
209
+ * nothing is stored, so the account's choice applies; on the same device the
210
+ * stored choice is that same choice. Read live: a value that arrives after
211
+ * the video opens still fills every field nobody chose.
212
+ */
213
+ defaultPreferences?: Partial<VideoPreferences>;
214
+ /**
215
+ * After each change the learner makes — a menu, a shortcut, the volume, the
216
+ * speed — with the preferences now in force and the fields that changed.
217
+ * Never when the video opens, and never for `preferences`. The player still
218
+ * remembers the change in this browser; this is for a host that keeps it on
219
+ * the learner's account as well.
220
+ */
221
+ onPreferencesChange?: (next: VideoPreferences, change: Partial<VideoPreferences>) => void;
222
+ /** A short label in the corner, such as a lesson code. */
223
+ label?: string;
224
+ /** Seed for the option order of multiple-choice and gap-select questions: the attempt id. */
225
+ shuffleSeed?: string;
226
+ locale?: string;
227
+ strings?: LkStringsOverride;
228
+ /**
229
+ * The host's AI ports, for every question the SDK draws: explanations after
230
+ * grading, hints before submit. The same as `LkAiProvider`, for this one
231
+ * video. Nothing AI appears in `exam`. See {@link LearnerAi}.
232
+ */
233
+ ai?: LearnerAi;
234
+ /**
235
+ * What a learner may see around the video's questions — feedback,
236
+ * solutions, hints, AI help — for every question in it, and on the end card:
237
+ * with `feedback: false` it counts answers and shows no score. Each setting
238
+ * only takes away. See `DeliveryPolicy` in lk-core.
239
+ */
240
+ delivery?: DeliveryPolicy | null;
241
+ /**
242
+ * How the video's questions are scored when a learner can try again or ask
243
+ * for hints — for every question in it. A later try replaces a question's
244
+ * grade, as any answer given again does, until the learner finishes: then
245
+ * every question's tries close. See `ItemScoringPolicy` in lk-core.
246
+ *
247
+ * A policy `validateItemScoringPolicy` refuses throws at render.
248
+ */
249
+ scoring?: ItemScoringPolicy | null;
250
+ theme?: Partial<ThemeTokens>;
251
+ sanitizeHtml?: HtmlSanitizer;
252
+ }
253
+ //#endregion
254
+ //#region src/components/InteractiveVideo/tracks.d.ts
255
+ /** The two lines a learner can have: which track each shows, if any. */
256
+ interface CaptionTracks {
257
+ primary?: MediaTrack;
258
+ secondary?: MediaTrack;
259
+ }
260
+ /**
261
+ * Which track each caption line shows, from the learner's two choices.
262
+ *
263
+ * The primary line always shows something while there are tracks:
264
+ * 1. the track in `captionLanguage` (case-insensitive);
265
+ * 2. else one of the same primary language — `pt` finds `pt-BR`, `es` finds
266
+ * `es-419`;
267
+ * 3. else the `default` track;
268
+ * 4. else the first.
269
+ *
270
+ * Where two tracks share a language, the `captions` one wins.
271
+ *
272
+ * The secondary line is stricter: it appears only when `secondaryCaptionLanguage`
273
+ * is set and matches a track in another language, by steps 1 and 2 alone —
274
+ * never the default, never the first. A second line the learner did not choose
275
+ * must never appear.
276
+ */
277
+ declare function resolveCaptionTracks(tracks: readonly MediaTrack[], preferences: Pick<VideoPreferences, 'captionLanguage' | 'secondaryCaptionLanguage'>): CaptionTracks;
278
+ //#endregion
279
+ //#region src/components/InteractiveVideo/index.d.ts
280
+ /**
281
+ * Public interactive video: the player wrapped in `ActivityErrorBoundary`, so a
282
+ * render failure — the development-time schema check among them — degrades to
283
+ * an accessible fallback instead of taking the host page down.
284
+ *
285
+ * A formative tool, for lessons and practice — not for official summative
286
+ * exams, which `<ActivitySequence>` delivers.
287
+ */
288
+ declare function InteractiveVideo(props: InteractiveVideoProps): React.JSX.Element;
289
+ //#endregion
290
+ export { InteractiveVideoQuestion as a, RenderableItemGroup as c, InteractiveVideoProps as i, CaptionTracks as n, InteractiveVideoSlot as o, resolveCaptionTracks as r, InteractiveVideoSummary as s, InteractiveVideo as t };
291
+ //# sourceMappingURL=index-DHRPAPZf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DHRPAPZf.d.ts","names":[],"sources":["../src/components/InteractiveVideo/InteractiveVideo.tsx","../src/components/InteractiveVideo/tracks.ts","../src/components/InteractiveVideo/index.tsx"],"mappings":";;;;;;KAsGY,sBAAsB,UAAU;;UAG3B,6BAA6B;EAC5C;;;UAIe;EACf;IACE;IACA;IACA;IACA;;;;;;;;;;;;;;UAea;;EAEf,UAAU;;EAEV,MAAM;;;;;;EAMN,YAAY;;;;;;;;;;;;EAYZ;EACA;;EAEA,eAAe;;EAEf;;EAEA,UAAU;;;;;;;;;EASV,iBAAiB;;;;;;;EAOjB,KAAK;;;;;;EAML,UAAU;;;;;;;EAOV,SAAS;;;;;;EAMT,OAAO,UAAU;;;;;;;;EAQjB,SAAS,QAAQ;;;;;;;EAOjB;;;;;;;EAOA,WAAW;;EAEX,KAAK,MAAM,iBAAiB,UAAU;;UAGvB;;EAEf,OAAO;;;;;;;;;;;;EAYP,aAAa;;EAEb,WAAW;;EAEX,cAAc,UAAU;;EAExB,YAAY,SAAS,eAAe;;;;;;;EAOpC;;EAEA,WAAW,SAAS,eAAe;EACnC,YAAY,UAAU,iBAAiB,MAAM;EAC7C,sBAAsB,QAAQ,gBAAgB,MAAM;;;;;EAKpD,cAAc,SAAS;EACvB,iBAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;EAsBxB,kBAAkB,UAAU,6BAA6B;;;;;;EAMzD,mBAAmB;;EAEnB,cAAc,SAAS,eAAe;;EAEtC;;;;;;EAMA,kBAAkB,OAAO,eAAe;;;;;;;EAOxC,cAAc,QAAQ;;;;;;;;;EAStB,qBAAqB,QAAQ;;;;;;;;EAQ7B,uBAAuB,MAAM,kBAAkB,QAAQ,QAAQ;;EAE/D;;EAEA;EACA;EACA,UAAU;;;;;;EAMV,KAAK;;;;;;;EAOL,WAAW;;;;;;;;;EASX,UAAU;EACV,QAAQ,QAAQ;EAChB,eAAe;;;;;UCzVA;EACf,UAAU;EACV,YAAY;;;;;;;;;;;;;;;;;;;iBAyDE,qBACd,iBAAiB,cACjB,aAAa,KAAK,oEACjB;;;;;;;;;;;iBCtCa,iBAAiB,OAAO,wBAAwB,MAAM,IAAI"}
@@ -0,0 +1,16 @@
1
+ import { t as ActivityProps } from "./types-BOQd93x3.cjs";
2
+ import { DictationData } from "@intellectif/lk-core";
3
+ //#region src/components/Dictation/Dictation.d.ts
4
+ interface DictationProps extends ActivityProps<DictationData> {}
5
+ //#endregion
6
+ //#region src/components/Dictation/index.d.ts
7
+ /**
8
+ * Public Dictation activity: the core wrapped in `ActivityErrorBoundary` so a
9
+ * render failure (including the dev schema-validation throw and the
10
+ * redacted-in-`practice` guard) degrades to an accessible fallback instead of
11
+ * crashing the host.
12
+ */
13
+ declare function Dictation(props: DictationProps): React.JSX.Element;
14
+ //#endregion
15
+ export { DictationProps as n, Dictation as t };
16
+ //# sourceMappingURL=index-DLV6cK26.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DLV6cK26.d.cts","names":[],"sources":["../src/components/Dictation/Dictation.tsx","../src/components/Dictation/index.tsx"],"mappings":";;;UA8CiB,uBAAuB,cAAc;;;;;;;;;iBChCtC,UAAU,OAAO,iBAAiB,MAAM,IAAI"}