@intellectif/lk-react 20.0.0 → 22.0.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 (174) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +33 -5
  3. package/dist/{WrittenResponse-D2YI8xOK.d.ts → WrittenResponse-CgRrjM4S.d.ts} +14 -4
  4. package/dist/{WrittenResponse-obIDDYDH.d.cts → WrittenResponse-D2K1VW_V.d.cts} +14 -4
  5. package/dist/ai/LkAiProvider.cjs +3 -3
  6. package/dist/ai/LkAiProvider.d.cts +17 -4
  7. package/dist/ai/LkAiProvider.d.ts +17 -4
  8. package/dist/ai/LkAiProvider.js +1 -1
  9. package/dist/ai/useAiHelp.cjs +9 -5
  10. package/dist/ai/useAiHelp.d.cts +58 -3
  11. package/dist/ai/useAiHelp.d.ts +58 -3
  12. package/dist/ai/useAiHelp.js +3 -3
  13. package/dist/{chunk-BGA2IVQY.js → chunk-3GLYK37F.js} +119 -26
  14. package/dist/chunk-3GLYK37F.js.map +1 -0
  15. package/dist/{chunk-LX2X4KC7.cjs → chunk-5YGVGMMV.cjs} +7 -7
  16. package/dist/{chunk-LX2X4KC7.cjs.map → chunk-5YGVGMMV.cjs.map} +1 -1
  17. package/dist/{chunk-3XP6VO4G.js → chunk-62K4Q565.js} +139 -45
  18. package/dist/chunk-62K4Q565.js.map +1 -0
  19. package/dist/{chunk-CEUEXISZ.cjs → chunk-6QY7GC55.cjs} +131 -50
  20. package/dist/chunk-6QY7GC55.cjs.map +1 -0
  21. package/dist/chunk-7EEKZWTQ.js +241 -0
  22. package/dist/chunk-7EEKZWTQ.js.map +1 -0
  23. package/dist/{chunk-3FBBP5QR.cjs → chunk-B4JRBV56.cjs} +6 -6
  24. package/dist/{chunk-3FBBP5QR.cjs.map → chunk-B4JRBV56.cjs.map} +1 -1
  25. package/dist/{chunk-RT2PP4SO.cjs → chunk-BL5SIBQA.cjs} +30 -30
  26. package/dist/{chunk-RT2PP4SO.cjs.map → chunk-BL5SIBQA.cjs.map} +1 -1
  27. package/dist/{chunk-YRNEOBXA.js → chunk-C4PSJ3ZC.js} +19 -2
  28. package/dist/chunk-C4PSJ3ZC.js.map +1 -0
  29. package/dist/{chunk-FEOFX4QW.js → chunk-FB47DQPS.js} +3 -3
  30. package/dist/{chunk-FEOFX4QW.js.map → chunk-FB47DQPS.js.map} +1 -1
  31. package/dist/chunk-FKNEHCNT.cjs +251 -0
  32. package/dist/chunk-FKNEHCNT.cjs.map +1 -0
  33. package/dist/{chunk-AG7MWZYZ.js → chunk-FPM2GQZY.js} +144 -55
  34. package/dist/chunk-FPM2GQZY.js.map +1 -0
  35. package/dist/{chunk-NWNQ2PHT.js → chunk-HNZ3JMAN.js} +8 -8
  36. package/dist/{chunk-NWNQ2PHT.js.map → chunk-HNZ3JMAN.js.map} +1 -1
  37. package/dist/{chunk-BY4UQH2Y.js → chunk-HYOUMTPW.js} +3 -3
  38. package/dist/{chunk-BY4UQH2Y.js.map → chunk-HYOUMTPW.js.map} +1 -1
  39. package/dist/{chunk-7K4B2EMU.js → chunk-HZIT24BK.js} +4 -4
  40. package/dist/{chunk-7K4B2EMU.js.map → chunk-HZIT24BK.js.map} +1 -1
  41. package/dist/{chunk-BJLQKJZX.cjs → chunk-J2QIHZ3H.cjs} +2 -2
  42. package/dist/chunk-J2QIHZ3H.cjs.map +1 -0
  43. package/dist/{chunk-DZVF3IGB.cjs → chunk-JII7XSCT.cjs} +59 -25
  44. package/dist/chunk-JII7XSCT.cjs.map +1 -0
  45. package/dist/{chunk-HI6BUUIJ.js → chunk-KFPCZ7N3.js} +48 -14
  46. package/dist/chunk-KFPCZ7N3.js.map +1 -0
  47. package/dist/{chunk-W6DMHN33.js → chunk-LRWFU3KS.js} +10 -10
  48. package/dist/{chunk-W6DMHN33.js.map → chunk-LRWFU3KS.js.map} +1 -1
  49. package/dist/{chunk-G7AGM2Y7.js → chunk-LX4JI262.js} +4 -4
  50. package/dist/{chunk-G7AGM2Y7.js.map → chunk-LX4JI262.js.map} +1 -1
  51. package/dist/{chunk-IXMT7X3E.cjs → chunk-M4UJBLVR.cjs} +17 -6
  52. package/dist/chunk-M4UJBLVR.cjs.map +1 -0
  53. package/dist/{chunk-AHGB5HH6.cjs → chunk-NFGUJ52G.cjs} +19 -2
  54. package/dist/chunk-NFGUJ52G.cjs.map +1 -0
  55. package/dist/{chunk-PWLJDP3X.cjs → chunk-NP5YC4NV.cjs} +95 -27
  56. package/dist/chunk-NP5YC4NV.cjs.map +1 -0
  57. package/dist/{chunk-ZDYNAWDZ.cjs → chunk-OJGTJOWI.cjs} +2 -2
  58. package/dist/chunk-OJGTJOWI.cjs.map +1 -0
  59. package/dist/{chunk-ORBU3XKH.js → chunk-PJMXHDY5.js} +16 -5
  60. package/dist/chunk-PJMXHDY5.js.map +1 -0
  61. package/dist/{chunk-TRMWBJWT.cjs → chunk-PZVRZ6OX.cjs} +141 -10
  62. package/dist/chunk-PZVRZ6OX.cjs.map +1 -0
  63. package/dist/{chunk-QKW2GGTV.js → chunk-R4ZNFDTK.js} +84 -16
  64. package/dist/chunk-R4ZNFDTK.js.map +1 -0
  65. package/dist/{chunk-YNDKAYW3.js → chunk-RX3A6KIY.js} +2 -2
  66. package/dist/chunk-RX3A6KIY.js.map +1 -0
  67. package/dist/{chunk-UHIOVOFK.cjs → chunk-TQN5CJO6.cjs} +125 -32
  68. package/dist/chunk-TQN5CJO6.cjs.map +1 -0
  69. package/dist/{chunk-AQIAQHJC.js → chunk-TRXUZSOY.js} +138 -8
  70. package/dist/chunk-TRXUZSOY.js.map +1 -0
  71. package/dist/{chunk-WBLYD5QA.js → chunk-U4KTOH7C.js} +2 -2
  72. package/dist/chunk-U4KTOH7C.js.map +1 -0
  73. package/dist/{chunk-L7WY5YFQ.cjs → chunk-UKUHVCZX.cjs} +5 -5
  74. package/dist/{chunk-L7WY5YFQ.cjs.map → chunk-UKUHVCZX.cjs.map} +1 -1
  75. package/dist/{chunk-HREA5SMB.cjs → chunk-UWFJGFB6.cjs} +116 -47
  76. package/dist/chunk-UWFJGFB6.cjs.map +1 -0
  77. package/dist/{chunk-JLDSCHY5.cjs → chunk-UXTYFEIC.cjs} +150 -61
  78. package/dist/chunk-UXTYFEIC.cjs.map +1 -0
  79. package/dist/{chunk-5GI53C6T.js → chunk-V2QZM2P2.js} +109 -40
  80. package/dist/chunk-V2QZM2P2.js.map +1 -0
  81. package/dist/{chunk-6S2CKZ4H.cjs → chunk-WFGDKBBP.cjs} +145 -51
  82. package/dist/chunk-WFGDKBBP.cjs.map +1 -0
  83. package/dist/{chunk-APZ6JFN6.cjs → chunk-Y5H4NOM6.cjs} +5 -5
  84. package/dist/{chunk-APZ6JFN6.cjs.map → chunk-Y5H4NOM6.cjs.map} +1 -1
  85. package/dist/{chunk-IQ55QNBI.js → chunk-YIXO6C4Z.js} +125 -44
  86. package/dist/chunk-YIXO6C4Z.js.map +1 -0
  87. package/dist/{chunk-LK5VXNMR.cjs → chunk-ZUE32Z67.cjs} +18 -18
  88. package/dist/{chunk-LK5VXNMR.cjs.map → chunk-ZUE32Z67.cjs.map} +1 -1
  89. package/dist/components/ActivityPreview.cjs +17 -17
  90. package/dist/components/ActivityPreview.d.cts +2 -2
  91. package/dist/components/ActivityPreview.d.ts +2 -2
  92. package/dist/components/ActivityPreview.js +16 -16
  93. package/dist/components/ActivitySequence.cjs +18 -18
  94. package/dist/components/ActivitySequence.d.cts +22 -4
  95. package/dist/components/ActivitySequence.d.ts +22 -4
  96. package/dist/components/ActivitySequence.js +17 -17
  97. package/dist/components/Dictation.cjs +10 -10
  98. package/dist/components/Dictation.d.cts +1 -1
  99. package/dist/components/Dictation.d.ts +1 -1
  100. package/dist/components/Dictation.js +9 -9
  101. package/dist/components/FillInTheBlanks.cjs +10 -10
  102. package/dist/components/FillInTheBlanks.d.cts +1 -1
  103. package/dist/components/FillInTheBlanks.d.ts +1 -1
  104. package/dist/components/FillInTheBlanks.js +9 -9
  105. package/dist/components/GapSelect.cjs +10 -10
  106. package/dist/components/GapSelect.d.cts +1 -1
  107. package/dist/components/GapSelect.d.ts +1 -1
  108. package/dist/components/GapSelect.js +9 -9
  109. package/dist/components/InteractiveVideo.cjs +17 -17
  110. package/dist/components/InteractiveVideo.d.cts +19 -3
  111. package/dist/components/InteractiveVideo.d.ts +19 -3
  112. package/dist/components/InteractiveVideo.js +15 -15
  113. package/dist/components/MultipleChoice.cjs +10 -10
  114. package/dist/components/MultipleChoice.d.cts +1 -1
  115. package/dist/components/MultipleChoice.d.ts +1 -1
  116. package/dist/components/MultipleChoice.js +9 -9
  117. package/dist/components/PronunciationFeedback.cjs +4 -4
  118. package/dist/components/PronunciationFeedback.d.cts +1 -1
  119. package/dist/components/PronunciationFeedback.d.ts +1 -1
  120. package/dist/components/PronunciationFeedback.js +3 -3
  121. package/dist/components/ReadAloud.cjs +8 -8
  122. package/dist/components/ReadAloud.d.cts +2 -2
  123. package/dist/components/ReadAloud.d.ts +2 -2
  124. package/dist/components/ReadAloud.js +7 -7
  125. package/dist/components/StimulusPanel.cjs +4 -4
  126. package/dist/components/StimulusPanel.d.cts +1 -1
  127. package/dist/components/StimulusPanel.d.ts +1 -1
  128. package/dist/components/StimulusPanel.js +3 -3
  129. package/dist/components/WrittenResponse.cjs +9 -7
  130. package/dist/components/WrittenResponse.d.cts +3 -3
  131. package/dist/components/WrittenResponse.d.ts +3 -3
  132. package/dist/components/WrittenResponse.js +8 -6
  133. package/dist/i18n/LkIntlProvider.cjs +7 -7
  134. package/dist/i18n/LkIntlProvider.d.cts +2 -2
  135. package/dist/i18n/LkIntlProvider.d.ts +2 -2
  136. package/dist/i18n/LkIntlProvider.js +1 -1
  137. package/dist/index.cjs +45 -41
  138. package/dist/index.cjs.map +1 -1
  139. package/dist/index.d.cts +3 -3
  140. package/dist/index.d.ts +3 -3
  141. package/dist/index.js +19 -19
  142. package/dist/index.js.map +1 -1
  143. package/dist/theme/skin.css +78 -0
  144. package/dist/{types-B_PCcqO-.d.cts → types-CO0XLEN6.d.cts} +67 -1
  145. package/dist/{types-C-GMCJ0g.d.ts → types-CrtIcRcK.d.ts} +67 -1
  146. package/package.json +3 -3
  147. package/dist/chunk-3XP6VO4G.js.map +0 -1
  148. package/dist/chunk-5GI53C6T.js.map +0 -1
  149. package/dist/chunk-6S2CKZ4H.cjs.map +0 -1
  150. package/dist/chunk-AG7MWZYZ.js.map +0 -1
  151. package/dist/chunk-AHGB5HH6.cjs.map +0 -1
  152. package/dist/chunk-AQIAQHJC.js.map +0 -1
  153. package/dist/chunk-BGA2IVQY.js.map +0 -1
  154. package/dist/chunk-BJLQKJZX.cjs.map +0 -1
  155. package/dist/chunk-CEUEXISZ.cjs.map +0 -1
  156. package/dist/chunk-DZVF3IGB.cjs.map +0 -1
  157. package/dist/chunk-HI6BUUIJ.js.map +0 -1
  158. package/dist/chunk-HREA5SMB.cjs.map +0 -1
  159. package/dist/chunk-IQ55QNBI.js.map +0 -1
  160. package/dist/chunk-IXMT7X3E.cjs.map +0 -1
  161. package/dist/chunk-JLDSCHY5.cjs.map +0 -1
  162. package/dist/chunk-NOC2M6LU.cjs +0 -118
  163. package/dist/chunk-NOC2M6LU.cjs.map +0 -1
  164. package/dist/chunk-ORBU3XKH.js.map +0 -1
  165. package/dist/chunk-PWLJDP3X.cjs.map +0 -1
  166. package/dist/chunk-QKW2GGTV.js.map +0 -1
  167. package/dist/chunk-RUS42NMN.js +0 -115
  168. package/dist/chunk-RUS42NMN.js.map +0 -1
  169. package/dist/chunk-TRMWBJWT.cjs.map +0 -1
  170. package/dist/chunk-UHIOVOFK.cjs.map +0 -1
  171. package/dist/chunk-WBLYD5QA.js.map +0 -1
  172. package/dist/chunk-YNDKAYW3.js.map +0 -1
  173. package/dist/chunk-YRNEOBXA.js.map +0 -1
  174. package/dist/chunk-ZDYNAWDZ.cjs.map +0 -1
@@ -1,15 +1,15 @@
1
1
  'use client';
2
- import { MultipleChoice } from './chunk-AG7MWZYZ.js';
3
- import { FillInTheBlanks } from './chunk-3XP6VO4G.js';
4
- import { GapSelect } from './chunk-IQ55QNBI.js';
5
- import { Dictation } from './chunk-5GI53C6T.js';
6
- import { useLearnerAi } from './chunk-YNDKAYW3.js';
7
- import { stopCaptureGroup, ReadAloud } from './chunk-NWNQ2PHT.js';
8
- import { SequenceSlotContext } from './chunk-WBLYD5QA.js';
9
- import { ActivityErrorBoundary } from './chunk-FEOFX4QW.js';
2
+ import { MultipleChoice } from './chunk-FPM2GQZY.js';
3
+ import { FillInTheBlanks } from './chunk-62K4Q565.js';
4
+ import { GapSelect } from './chunk-YIXO6C4Z.js';
5
+ import { Dictation } from './chunk-V2QZM2P2.js';
6
+ import { useLearnerAi } from './chunk-RX3A6KIY.js';
7
+ import { stopCaptureGroup, ReadAloud } from './chunk-HNZ3JMAN.js';
8
+ import { SequenceSlotContext } from './chunk-U4KTOH7C.js';
9
+ import { ActivityErrorBoundary } from './chunk-FB47DQPS.js';
10
10
  import { isDevelopment } from './chunk-PPFVTXGJ.js';
11
- import { useLkStrings } from './chunk-YRNEOBXA.js';
12
- import { resolveDeliveryPolicy, assertRedactedItemGroup, validateItemGroup, ActivitySchemaError, flattenSequence, readMediaProgress } from '@intellectif/lk-core';
11
+ import { useLkStrings } from './chunk-C4PSJ3ZC.js';
12
+ import { resolveDeliveryPolicy, resolveItemScoringPolicy, assertRedactedItemGroup, validateItemGroup, ActivitySchemaError, flattenSequence, readMediaProgress } from '@intellectif/lk-core';
13
13
  import { useMemo, useRef, useState, useEffect, useCallback } from 'react';
14
14
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
15
15
 
@@ -1222,6 +1222,12 @@ function Player(props) {
1222
1222
  const strings = useLkStrings(props.strings);
1223
1223
  const aiInForce = useLearnerAi(props.ai);
1224
1224
  const delivery = resolveDeliveryPolicy(props.delivery);
1225
+ const scoringKey = JSON.stringify(props.scoring ?? null);
1226
+ const scoring = useMemo(
1227
+ () => resolveItemScoringPolicy(props.scoring),
1228
+ [scoringKey]
1229
+ );
1230
+ const scoringGiven = props.scoring !== void 0 && props.scoring !== null;
1225
1231
  const group = useRef(props.group).current;
1226
1232
  const timeline = group.timeline ?? { cues: [] };
1227
1233
  const media = group.stimulus.media;
@@ -1392,6 +1398,7 @@ function Player(props) {
1392
1398
  const hideTimer = useRef(null);
1393
1399
  const lastPointer = useRef("mouse");
1394
1400
  const finishedOnce = useRef(false);
1401
+ const [, setFinishedState] = useState(false);
1395
1402
  const [openQuiz, setOpenQuiz] = useState(null);
1396
1403
  const openQuizRef = useRef(openQuiz);
1397
1404
  openQuizRef.current = openQuiz;
@@ -1968,6 +1975,7 @@ function Player(props) {
1968
1975
  return;
1969
1976
  }
1970
1977
  finishedOnce.current = true;
1978
+ setFinishedState(true);
1971
1979
  onFinished?.(summary());
1972
1980
  }, [onFinished, summary]);
1973
1981
  const answerPending = pending.size > 0;
@@ -2010,8 +2018,22 @@ function Player(props) {
2010
2018
  }
2011
2019
  return byId;
2012
2020
  }, [slotsByCue]);
2013
- const reportTo = useRef({ onSubmit, onActivityComplete, onInteraction, renderMode, delivery });
2014
- reportTo.current = { onSubmit, onActivityComplete, onInteraction, renderMode, delivery };
2021
+ const reportTo = useRef({
2022
+ onSubmit,
2023
+ onActivityComplete,
2024
+ onInteraction,
2025
+ renderMode,
2026
+ delivery,
2027
+ scoring: scoringGiven ? scoring : void 0
2028
+ });
2029
+ reportTo.current = {
2030
+ onSubmit,
2031
+ onActivityComplete,
2032
+ onInteraction,
2033
+ renderMode,
2034
+ delivery,
2035
+ scoring: scoringGiven ? scoring : void 0
2036
+ };
2015
2037
  const calls = useRef(/* @__PURE__ */ new Map());
2016
2038
  const callsFor = (place) => {
2017
2039
  const made = calls.current.get(place.slotId);
@@ -2101,6 +2123,16 @@ function Player(props) {
2101
2123
  get delivery() {
2102
2124
  return reportTo.current.delivery;
2103
2125
  },
2126
+ get scoring() {
2127
+ return reportTo.current.scoring;
2128
+ },
2129
+ get triesClosed() {
2130
+ return finishedOnce.current;
2131
+ },
2132
+ // The video waits for no try: its Finish is on the end card, where no
2133
+ // question is, and finishing closes every question's tries.
2134
+ triesState: () => {
2135
+ },
2104
2136
  takeState: (take, state) => reportTake(slotId, take, state)
2105
2137
  };
2106
2138
  channels.current.set(slotId, channel);
@@ -2125,6 +2157,7 @@ function Player(props) {
2125
2157
  portalContainer,
2126
2158
  ...aiInForce !== void 0 && renderMode !== "exam" ? { ai: aiInForce } : {},
2127
2159
  delivery,
2160
+ scoring,
2128
2161
  ...callsFor(place)
2129
2162
  };
2130
2163
  };
@@ -2144,6 +2177,7 @@ function Player(props) {
2144
2177
  ...props.strings !== void 0 ? { strings: props.strings } : {},
2145
2178
  ...props.ai !== void 0 ? { ai: props.ai } : {},
2146
2179
  ...props.delivery !== void 0 && props.delivery !== null ? { delivery: props.delivery } : {},
2180
+ ...scoringGiven ? { scoring: props.scoring } : {},
2147
2181
  ...locale !== void 0 ? { locale } : {}
2148
2182
  };
2149
2183
  switch (activity.type) {
@@ -2897,5 +2931,5 @@ function InteractiveVideo2(props) {
2897
2931
  }
2898
2932
 
2899
2933
  export { InteractiveVideo2 as InteractiveVideo, resolveCaptionTracks };
2900
- //# sourceMappingURL=chunk-HI6BUUIJ.js.map
2901
- //# sourceMappingURL=chunk-HI6BUUIJ.js.map
2934
+ //# sourceMappingURL=chunk-KFPCZ7N3.js.map
2935
+ //# sourceMappingURL=chunk-KFPCZ7N3.js.map