@intellectif/lk-react 18.0.0 → 18.1.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 (149) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +3 -1
  3. package/dist/{WrittenResponse-B4kY-U0v.d.ts → WrittenResponse-CeHY5u3W.d.ts} +1 -1
  4. package/dist/{WrittenResponse-Dl3zah22.d.cts → WrittenResponse-DT_Yqbq1.d.cts} +1 -1
  5. package/dist/ai/useAiHelp.cjs +20 -0
  6. package/dist/ai/useAiHelp.cjs.map +1 -0
  7. package/dist/ai/useAiHelp.d.cts +146 -0
  8. package/dist/ai/useAiHelp.d.ts +146 -0
  9. package/dist/ai/useAiHelp.js +7 -0
  10. package/dist/ai/useAiHelp.js.map +1 -0
  11. package/dist/{chunk-Z5XY66PO.cjs → chunk-3SDCALS3.cjs} +16 -16
  12. package/dist/chunk-3SDCALS3.cjs.map +1 -0
  13. package/dist/{chunk-QA42VDTA.cjs → chunk-3SJ7TVL6.cjs} +12 -11
  14. package/dist/chunk-3SJ7TVL6.cjs.map +1 -0
  15. package/dist/{chunk-V5BTVGPA.js → chunk-4NERCBOW.js} +4 -3
  16. package/dist/chunk-4NERCBOW.js.map +1 -0
  17. package/dist/{chunk-UYQBEPNZ.js → chunk-6NY7OTOO.js} +15 -8
  18. package/dist/chunk-6NY7OTOO.js.map +1 -0
  19. package/dist/{chunk-RZ52SEYV.cjs → chunk-7GYAUA56.cjs} +10 -9
  20. package/dist/chunk-7GYAUA56.cjs.map +1 -0
  21. package/dist/{chunk-BAKLJKFZ.cjs → chunk-APZ6JFN6.cjs} +4 -29
  22. package/dist/chunk-APZ6JFN6.cjs.map +1 -0
  23. package/dist/chunk-BURYHHBM.js +114 -0
  24. package/dist/chunk-BURYHHBM.js.map +1 -0
  25. package/dist/{chunk-H63O5HPW.cjs → chunk-CQNKZ435.cjs} +8 -7
  26. package/dist/chunk-CQNKZ435.cjs.map +1 -0
  27. package/dist/chunk-EANGKAKG.cjs +32 -0
  28. package/dist/chunk-EANGKAKG.cjs.map +1 -0
  29. package/dist/{chunk-YTGRXD23.js → chunk-FEOFX4QW.js} +4 -25
  30. package/dist/chunk-FEOFX4QW.js.map +1 -0
  31. package/dist/{chunk-QJW3K6JN.js → chunk-G7AGM2Y7.js} +4 -3
  32. package/dist/chunk-G7AGM2Y7.js.map +1 -0
  33. package/dist/{chunk-HZMILQYO.js → chunk-GM4PXDZ2.js} +5 -4
  34. package/dist/chunk-GM4PXDZ2.js.map +1 -0
  35. package/dist/{chunk-QHK6PTUR.js → chunk-IKV2I7KT.js} +5 -4
  36. package/dist/chunk-IKV2I7KT.js.map +1 -0
  37. package/dist/{chunk-TI23GIFM.cjs → chunk-JH77MAON.cjs} +12 -11
  38. package/dist/chunk-JH77MAON.cjs.map +1 -0
  39. package/dist/{chunk-6DTW5T3Z.js → chunk-JSRKES2Z.js} +5 -4
  40. package/dist/chunk-JSRKES2Z.js.map +1 -0
  41. package/dist/chunk-JVWLXVYG.cjs +27 -0
  42. package/dist/chunk-JVWLXVYG.cjs.map +1 -0
  43. package/dist/{chunk-UQIRDE52.cjs → chunk-LX2X4KC7.cjs} +6 -5
  44. package/dist/chunk-LX2X4KC7.cjs.map +1 -0
  45. package/dist/{chunk-KWKB74KL.js → chunk-MKWBLNTD.js} +198 -44
  46. package/dist/chunk-MKWBLNTD.js.map +1 -0
  47. package/dist/chunk-NWGQ7JML.cjs +117 -0
  48. package/dist/chunk-NWGQ7JML.cjs.map +1 -0
  49. package/dist/{chunk-6RRFH7C4.cjs → chunk-NZM3M5IR.cjs} +39 -54
  50. package/dist/chunk-NZM3M5IR.cjs.map +1 -0
  51. package/dist/chunk-PPFVTXGJ.js +27 -0
  52. package/dist/chunk-PPFVTXGJ.js.map +1 -0
  53. package/dist/{chunk-3TJSFPO4.cjs → chunk-PROKRNL2.cjs} +26 -19
  54. package/dist/chunk-PROKRNL2.cjs.map +1 -0
  55. package/dist/chunk-TEAVPUMX.js +22 -0
  56. package/dist/chunk-TEAVPUMX.js.map +1 -0
  57. package/dist/{chunk-ALH6TUX2.js → chunk-THHFIP4N.js} +5 -4
  58. package/dist/chunk-THHFIP4N.js.map +1 -0
  59. package/dist/chunk-TL3GVPBO.cjs +234 -0
  60. package/dist/chunk-TL3GVPBO.cjs.map +1 -0
  61. package/dist/{chunk-XEGBGKHV.cjs → chunk-TXMP5AOW.cjs} +206 -52
  62. package/dist/chunk-TXMP5AOW.cjs.map +1 -0
  63. package/dist/{chunk-KP57YCYQ.js → chunk-UXV3V5NH.js} +23 -35
  64. package/dist/chunk-UXV3V5NH.js.map +1 -0
  65. package/dist/{chunk-H3IRVX7J.js → chunk-WSPVQR4O.js} +9 -9
  66. package/dist/chunk-WSPVQR4O.js.map +1 -0
  67. package/dist/{chunk-JKMBFHER.cjs → chunk-X4YU6BX7.cjs} +12 -11
  68. package/dist/chunk-X4YU6BX7.cjs.map +1 -0
  69. package/dist/chunk-YGJE7RSW.js +231 -0
  70. package/dist/chunk-YGJE7RSW.js.map +1 -0
  71. package/dist/components/ActivityPreview.cjs +14 -11
  72. package/dist/components/ActivityPreview.d.cts +7 -3
  73. package/dist/components/ActivityPreview.d.ts +7 -3
  74. package/dist/components/ActivityPreview.js +13 -10
  75. package/dist/components/ActivitySequence.cjs +14 -11
  76. package/dist/components/ActivitySequence.d.cts +75 -11
  77. package/dist/components/ActivitySequence.d.ts +75 -11
  78. package/dist/components/ActivitySequence.js +13 -10
  79. package/dist/components/Dictation.cjs +7 -4
  80. package/dist/components/Dictation.d.cts +1 -1
  81. package/dist/components/Dictation.d.ts +1 -1
  82. package/dist/components/Dictation.js +6 -3
  83. package/dist/components/FillInTheBlanks.cjs +7 -4
  84. package/dist/components/FillInTheBlanks.d.cts +1 -1
  85. package/dist/components/FillInTheBlanks.d.ts +1 -1
  86. package/dist/components/FillInTheBlanks.js +6 -3
  87. package/dist/components/GapSelect.cjs +7 -4
  88. package/dist/components/GapSelect.d.cts +1 -1
  89. package/dist/components/GapSelect.d.ts +1 -1
  90. package/dist/components/GapSelect.js +6 -3
  91. package/dist/components/InteractiveVideo.cjs +14 -11
  92. package/dist/components/InteractiveVideo.d.cts +2 -2
  93. package/dist/components/InteractiveVideo.d.ts +2 -2
  94. package/dist/components/InteractiveVideo.js +12 -9
  95. package/dist/components/MultipleChoice.cjs +7 -4
  96. package/dist/components/MultipleChoice.d.cts +1 -1
  97. package/dist/components/MultipleChoice.d.ts +1 -1
  98. package/dist/components/MultipleChoice.js +6 -3
  99. package/dist/components/PronunciationFeedback.cjs +4 -3
  100. package/dist/components/PronunciationFeedback.d.cts +1 -1
  101. package/dist/components/PronunciationFeedback.d.ts +1 -1
  102. package/dist/components/PronunciationFeedback.js +3 -2
  103. package/dist/components/ReadAloud.cjs +6 -4
  104. package/dist/components/ReadAloud.d.cts +2 -2
  105. package/dist/components/ReadAloud.d.ts +2 -2
  106. package/dist/components/ReadAloud.js +5 -3
  107. package/dist/components/StimulusPanel.d.cts +1 -1
  108. package/dist/components/StimulusPanel.d.ts +1 -1
  109. package/dist/components/WrittenResponse.cjs +4 -3
  110. package/dist/components/WrittenResponse.d.cts +3 -3
  111. package/dist/components/WrittenResponse.d.ts +3 -3
  112. package/dist/components/WrittenResponse.js +3 -2
  113. package/dist/i18n/LkIntlProvider.d.cts +2 -2
  114. package/dist/i18n/LkIntlProvider.d.ts +2 -2
  115. package/dist/index.cjs +34 -23
  116. package/dist/index.cjs.map +1 -1
  117. package/dist/index.d.cts +4 -3
  118. package/dist/index.d.ts +4 -3
  119. package/dist/index.js +15 -12
  120. package/dist/index.js.map +1 -1
  121. package/dist/{strings-PCYKWCwd.d.ts → types-BY-4S5Rd.d.ts} +761 -761
  122. package/dist/{strings-BOPKhnS-.d.cts → types-DtPYG1hh.d.cts} +761 -761
  123. package/package.json +11 -1
  124. package/dist/chunk-3TJSFPO4.cjs.map +0 -1
  125. package/dist/chunk-5F4Q6JT7.cjs +0 -289
  126. package/dist/chunk-5F4Q6JT7.cjs.map +0 -1
  127. package/dist/chunk-6DTW5T3Z.js.map +0 -1
  128. package/dist/chunk-6RRFH7C4.cjs.map +0 -1
  129. package/dist/chunk-ALH6TUX2.js.map +0 -1
  130. package/dist/chunk-BAKLJKFZ.cjs.map +0 -1
  131. package/dist/chunk-GR33G5QM.js +0 -286
  132. package/dist/chunk-GR33G5QM.js.map +0 -1
  133. package/dist/chunk-H3IRVX7J.js.map +0 -1
  134. package/dist/chunk-H63O5HPW.cjs.map +0 -1
  135. package/dist/chunk-HZMILQYO.js.map +0 -1
  136. package/dist/chunk-JKMBFHER.cjs.map +0 -1
  137. package/dist/chunk-KP57YCYQ.js.map +0 -1
  138. package/dist/chunk-KWKB74KL.js.map +0 -1
  139. package/dist/chunk-QA42VDTA.cjs.map +0 -1
  140. package/dist/chunk-QHK6PTUR.js.map +0 -1
  141. package/dist/chunk-QJW3K6JN.js.map +0 -1
  142. package/dist/chunk-RZ52SEYV.cjs.map +0 -1
  143. package/dist/chunk-TI23GIFM.cjs.map +0 -1
  144. package/dist/chunk-UQIRDE52.cjs.map +0 -1
  145. package/dist/chunk-UYQBEPNZ.js.map +0 -1
  146. package/dist/chunk-V5BTVGPA.js.map +0 -1
  147. package/dist/chunk-XEGBGKHV.cjs.map +0 -1
  148. package/dist/chunk-YTGRXD23.js.map +0 -1
  149. package/dist/chunk-Z5XY66PO.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import { SequenceEntry, ActivityResult, LearnerResponse, InteractionEvent, SpeechAssessment, ItemOutcome, ThemeTokens } from '@intellectif/lk-core';
1
+ import { InteractionKind, SequenceEntry, ActivityResult, LearnerResponse, InteractionEvent, SpeechAssessment, ItemOutcome, ThemeTokens } from '@intellectif/lk-core';
2
2
  import { ComponentType } from 'react';
3
3
  import { LearnerAi } from '../ai/LkAiProvider.cjs';
4
- import { A as ActivityProps, g as RenderableActivity, e as RenderMode, S as SequenceMediaBudget, h as SequenceRecordingBinding, a as LkStringsOverride, H as HtmlSanitizer } from '../strings-BOPKhnS-.cjs';
5
- import { a as WrittenResponseSubmission } from '../WrittenResponse-Dl3zah22.cjs';
4
+ import { A as ActivityProps, i as SequenceRecordingSlot, g as RenderableActivity, e as RenderMode, S as SequenceMediaBudget, h as SequenceRecordingBinding, a as LkStringsOverride, H as HtmlSanitizer } from '../types-DtPYG1hh.cjs';
5
+ import { a as WrittenResponseSubmission } from '../WrittenResponse-DT_Yqbq1.cjs';
6
6
  import '../machine-CuwKqWXC.cjs';
7
7
 
8
8
  /**
@@ -92,12 +92,75 @@ type SequenceItemOutcome = {
92
92
  slotId: string;
93
93
  activityId: string;
94
94
  };
95
+ /**
96
+ * Where a question sits in the set, and the calls that tell the pager what the
97
+ * learner did with it — handed to a `renderers` override as its `question`
98
+ * prop, beside the shared {@link ActivityProps}.
99
+ *
100
+ * The SDK's own components make the same calls, so a question a host draws
101
+ * counts exactly as one the SDK draws: in `onFinished`, in whether the set is
102
+ * complete, and in what a resumed attempt reopens. Every call here keeps ONE
103
+ * identity for the life of the set, so it is safe in an effect's dependencies,
104
+ * and does nothing once the set has changed or the pager has gone.
105
+ */
106
+ interface SequenceQuestion {
107
+ /**
108
+ * The identity to store this question's answer against — the same object
109
+ * `onSubmit` and `onActivityComplete` are handed, for the life of the set.
110
+ * `slotId`, never `index`: the position moves under shuffling.
111
+ */
112
+ slot: SequenceRecordingSlot;
113
+ /**
114
+ * `true` while this is the question on screen. `false` from the moment the
115
+ * learner pages away, and `true` again when they come back.
116
+ *
117
+ * WHEN IT TURNS `false`, STOP THE MICROPHONE, ANY TIMER AND ANY SPEECH. The
118
+ * pager pauses the `<audio>` and `<video>` elements inside the question and
119
+ * stops the recorders the SDK started, but it cannot reach a recorder it did
120
+ * not create.
121
+ */
122
+ active: boolean;
123
+ /**
124
+ * An element inside this question's own pane, for popovers, tooltips and
125
+ * dialogs. Portal into it rather than into `document.body`: a pane the
126
+ * learner has paged away from is hidden, and anything portalled out of it
127
+ * stays on screen over the next question — and in fullscreen, only the
128
+ * subtree being painted is visible at all.
129
+ *
130
+ * It is the same element for as long as the set is on screen, and is `null`
131
+ * only before the first commit.
132
+ */
133
+ portalContainer: HTMLElement | null;
134
+ /**
135
+ * The learner withdrew their answer — a "Try again". The question counts as
136
+ * unanswered again and its outcome is forgotten, so the set is not complete
137
+ * until it is answered again. Calls no host callback: the host already knows.
138
+ */
139
+ clear(): void;
140
+ /**
141
+ * Work is on its way for this question — an upload, an assessment, a save.
142
+ * While any question is pending, the set is not reported: `onFinished` and
143
+ * `onComplete` wait for it. Paging does not wait.
144
+ *
145
+ * Call `setPending(false)` however the work ends, a failure included.
146
+ */
147
+ setPending(pending: boolean): void;
148
+ /** Forwards to `onInteraction`, with this question's `activityId` and the time filled in. */
149
+ emit(type: InteractionKind, payload?: Record<string, unknown>): void;
150
+ }
95
151
  /**
96
152
  * A component that can render one activity inside a sequence. Register one per
97
153
  * activity `type` to put a consumer-defined type on screen — the React half of
98
154
  * the activity-type registry, matching `registerActivityType` in lk-core.
155
+ *
156
+ * It receives the shared {@link ActivityProps} and one prop beyond them:
157
+ * `question`, the pager's half of the contract ({@link SequenceQuestion}). A
158
+ * renderer written as `ComponentType<ActivityProps>` still fits and simply
159
+ * ignores it.
99
160
  */
100
- type ActivityRenderer = ComponentType<ActivityProps>;
161
+ type ActivityRenderer = ComponentType<ActivityProps & {
162
+ question?: SequenceQuestion;
163
+ }>;
101
164
  interface ActivitySequenceProps {
102
165
  /**
103
166
  * The ordered set of entries to present, one question at a time: loose
@@ -115,12 +178,13 @@ interface ActivitySequenceProps {
115
178
  * A key matching a built-in overrides it, so a consumer can replace the
116
179
  * bundled renderer without forking the sequencer.
117
180
  *
118
- * A registered renderer is an `ActivityRenderer`, which is
119
- * `ComponentType<ActivityProps>` — so it receives the shared prop contract
120
- * and nothing beyond it. `shuffleSeed`, `recordingBinding`, `assessment` and
121
- * `workletUrl` are all outside that contract and none of them reaches an
122
- * override: a replacement for `read-aloud` has to be given its own binding by
123
- * whoever wrote it.
181
+ * A registered renderer is an {@link ActivityRenderer}: it receives the
182
+ * shared prop contract, plus `question` — the pager's half of the contract
183
+ * ({@link SequenceQuestion}), which tells it when its question is on screen,
184
+ * holds the set while its work is in flight, and gives it somewhere to
185
+ * portal a popover. `shuffleSeed`, `recordingBinding`, `assessment` and
186
+ * `workletUrl` are outside both and reach no override: a replacement for
187
+ * `read-aloud` has to be given its own binding by whoever wrote it.
124
188
  */
125
189
  renderers?: Readonly<Record<string, ActivityRenderer>>;
126
190
  /**
@@ -335,4 +399,4 @@ interface ActivitySequenceProps {
335
399
  }
336
400
  declare function ActivitySequence({ activities, renderers, onActivityComplete, onComplete, onFinished, onSubmit, onInteraction, renderMode, shuffle, shuffleSeed, defaultIndex, onIndexChange, responses, submittedSlotIds, outcomes, sanitizeHtml, theme, locale, disabled, mediaBudget, recordingBinding, assessments, workletUrl, strings, ai, }: ActivitySequenceProps): React.JSX.Element;
337
401
 
338
- export { type ActivityRenderer, ActivitySequence, type ActivitySequenceProps, type SequenceItemOutcome };
402
+ export { type ActivityRenderer, ActivitySequence, type ActivitySequenceProps, type SequenceItemOutcome, type SequenceQuestion };
@@ -1,8 +1,8 @@
1
- import { SequenceEntry, ActivityResult, LearnerResponse, InteractionEvent, SpeechAssessment, ItemOutcome, ThemeTokens } from '@intellectif/lk-core';
1
+ import { InteractionKind, SequenceEntry, ActivityResult, LearnerResponse, InteractionEvent, SpeechAssessment, ItemOutcome, ThemeTokens } from '@intellectif/lk-core';
2
2
  import { ComponentType } from 'react';
3
3
  import { LearnerAi } from '../ai/LkAiProvider.js';
4
- import { A as ActivityProps, g as RenderableActivity, e as RenderMode, S as SequenceMediaBudget, h as SequenceRecordingBinding, a as LkStringsOverride, H as HtmlSanitizer } from '../strings-PCYKWCwd.js';
5
- import { a as WrittenResponseSubmission } from '../WrittenResponse-B4kY-U0v.js';
4
+ import { A as ActivityProps, i as SequenceRecordingSlot, g as RenderableActivity, e as RenderMode, S as SequenceMediaBudget, h as SequenceRecordingBinding, a as LkStringsOverride, H as HtmlSanitizer } from '../types-BY-4S5Rd.js';
5
+ import { a as WrittenResponseSubmission } from '../WrittenResponse-CeHY5u3W.js';
6
6
  import '../machine-CuwKqWXC.js';
7
7
 
8
8
  /**
@@ -92,12 +92,75 @@ type SequenceItemOutcome = {
92
92
  slotId: string;
93
93
  activityId: string;
94
94
  };
95
+ /**
96
+ * Where a question sits in the set, and the calls that tell the pager what the
97
+ * learner did with it — handed to a `renderers` override as its `question`
98
+ * prop, beside the shared {@link ActivityProps}.
99
+ *
100
+ * The SDK's own components make the same calls, so a question a host draws
101
+ * counts exactly as one the SDK draws: in `onFinished`, in whether the set is
102
+ * complete, and in what a resumed attempt reopens. Every call here keeps ONE
103
+ * identity for the life of the set, so it is safe in an effect's dependencies,
104
+ * and does nothing once the set has changed or the pager has gone.
105
+ */
106
+ interface SequenceQuestion {
107
+ /**
108
+ * The identity to store this question's answer against — the same object
109
+ * `onSubmit` and `onActivityComplete` are handed, for the life of the set.
110
+ * `slotId`, never `index`: the position moves under shuffling.
111
+ */
112
+ slot: SequenceRecordingSlot;
113
+ /**
114
+ * `true` while this is the question on screen. `false` from the moment the
115
+ * learner pages away, and `true` again when they come back.
116
+ *
117
+ * WHEN IT TURNS `false`, STOP THE MICROPHONE, ANY TIMER AND ANY SPEECH. The
118
+ * pager pauses the `<audio>` and `<video>` elements inside the question and
119
+ * stops the recorders the SDK started, but it cannot reach a recorder it did
120
+ * not create.
121
+ */
122
+ active: boolean;
123
+ /**
124
+ * An element inside this question's own pane, for popovers, tooltips and
125
+ * dialogs. Portal into it rather than into `document.body`: a pane the
126
+ * learner has paged away from is hidden, and anything portalled out of it
127
+ * stays on screen over the next question — and in fullscreen, only the
128
+ * subtree being painted is visible at all.
129
+ *
130
+ * It is the same element for as long as the set is on screen, and is `null`
131
+ * only before the first commit.
132
+ */
133
+ portalContainer: HTMLElement | null;
134
+ /**
135
+ * The learner withdrew their answer — a "Try again". The question counts as
136
+ * unanswered again and its outcome is forgotten, so the set is not complete
137
+ * until it is answered again. Calls no host callback: the host already knows.
138
+ */
139
+ clear(): void;
140
+ /**
141
+ * Work is on its way for this question — an upload, an assessment, a save.
142
+ * While any question is pending, the set is not reported: `onFinished` and
143
+ * `onComplete` wait for it. Paging does not wait.
144
+ *
145
+ * Call `setPending(false)` however the work ends, a failure included.
146
+ */
147
+ setPending(pending: boolean): void;
148
+ /** Forwards to `onInteraction`, with this question's `activityId` and the time filled in. */
149
+ emit(type: InteractionKind, payload?: Record<string, unknown>): void;
150
+ }
95
151
  /**
96
152
  * A component that can render one activity inside a sequence. Register one per
97
153
  * activity `type` to put a consumer-defined type on screen — the React half of
98
154
  * the activity-type registry, matching `registerActivityType` in lk-core.
155
+ *
156
+ * It receives the shared {@link ActivityProps} and one prop beyond them:
157
+ * `question`, the pager's half of the contract ({@link SequenceQuestion}). A
158
+ * renderer written as `ComponentType<ActivityProps>` still fits and simply
159
+ * ignores it.
99
160
  */
100
- type ActivityRenderer = ComponentType<ActivityProps>;
161
+ type ActivityRenderer = ComponentType<ActivityProps & {
162
+ question?: SequenceQuestion;
163
+ }>;
101
164
  interface ActivitySequenceProps {
102
165
  /**
103
166
  * The ordered set of entries to present, one question at a time: loose
@@ -115,12 +178,13 @@ interface ActivitySequenceProps {
115
178
  * A key matching a built-in overrides it, so a consumer can replace the
116
179
  * bundled renderer without forking the sequencer.
117
180
  *
118
- * A registered renderer is an `ActivityRenderer`, which is
119
- * `ComponentType<ActivityProps>` — so it receives the shared prop contract
120
- * and nothing beyond it. `shuffleSeed`, `recordingBinding`, `assessment` and
121
- * `workletUrl` are all outside that contract and none of them reaches an
122
- * override: a replacement for `read-aloud` has to be given its own binding by
123
- * whoever wrote it.
181
+ * A registered renderer is an {@link ActivityRenderer}: it receives the
182
+ * shared prop contract, plus `question` — the pager's half of the contract
183
+ * ({@link SequenceQuestion}), which tells it when its question is on screen,
184
+ * holds the set while its work is in flight, and gives it somewhere to
185
+ * portal a popover. `shuffleSeed`, `recordingBinding`, `assessment` and
186
+ * `workletUrl` are outside both and reach no override: a replacement for
187
+ * `read-aloud` has to be given its own binding by whoever wrote it.
124
188
  */
125
189
  renderers?: Readonly<Record<string, ActivityRenderer>>;
126
190
  /**
@@ -335,4 +399,4 @@ interface ActivitySequenceProps {
335
399
  }
336
400
  declare function ActivitySequence({ activities, renderers, onActivityComplete, onComplete, onFinished, onSubmit, onInteraction, renderMode, shuffle, shuffleSeed, defaultIndex, onIndexChange, responses, submittedSlotIds, outcomes, sanitizeHtml, theme, locale, disabled, mediaBudget, recordingBinding, assessments, workletUrl, strings, ai, }: ActivitySequenceProps): React.JSX.Element;
337
401
 
338
- export { type ActivityRenderer, ActivitySequence, type ActivitySequenceProps, type SequenceItemOutcome };
402
+ export { type ActivityRenderer, ActivitySequence, type ActivitySequenceProps, type SequenceItemOutcome, type SequenceQuestion };
@@ -1,19 +1,22 @@
1
1
  'use client';
2
- export { ActivitySequence } from '../chunk-KWKB74KL.js';
2
+ export { ActivitySequence } from '../chunk-MKWBLNTD.js';
3
3
  import '../chunk-7K4B2EMU.js';
4
- import '../chunk-V5BTVGPA.js';
5
- import '../chunk-6DTW5T3Z.js';
6
- import '../chunk-QHK6PTUR.js';
7
- import '../chunk-ALH6TUX2.js';
8
- import '../chunk-HZMILQYO.js';
9
- import '../chunk-GR33G5QM.js';
4
+ import '../chunk-4NERCBOW.js';
5
+ import '../chunk-JSRKES2Z.js';
6
+ import '../chunk-IKV2I7KT.js';
7
+ import '../chunk-THHFIP4N.js';
8
+ import '../chunk-GM4PXDZ2.js';
9
+ import '../chunk-BURYHHBM.js';
10
+ import '../chunk-YGJE7RSW.js';
10
11
  import '../chunk-YNDKAYW3.js';
11
- import '../chunk-KP57YCYQ.js';
12
- import '../chunk-QJW3K6JN.js';
12
+ import '../chunk-UXV3V5NH.js';
13
+ import '../chunk-G7AGM2Y7.js';
13
14
  import '../chunk-MCO52PV5.js';
14
15
  import '../chunk-YORQQXGO.js';
16
+ import '../chunk-TEAVPUMX.js';
15
17
  import '../chunk-RCMYEWBE.js';
16
- import '../chunk-YTGRXD23.js';
18
+ import '../chunk-FEOFX4QW.js';
19
+ import '../chunk-PPFVTXGJ.js';
17
20
  import '../chunk-BY4UQH2Y.js';
18
21
  import '../chunk-6N43WDVG.js';
19
22
  import '../chunk-YRNEOBXA.js';
@@ -1,12 +1,15 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkRZ52SEYV_cjs = require('../chunk-RZ52SEYV.cjs');
5
- require('../chunk-5F4Q6JT7.cjs');
4
+ var chunk7GYAUA56_cjs = require('../chunk-7GYAUA56.cjs');
5
+ require('../chunk-NWGQ7JML.cjs');
6
+ require('../chunk-TL3GVPBO.cjs');
6
7
  require('../chunk-ZDYNAWDZ.cjs');
7
8
  require('../chunk-OD65OZIW.cjs');
9
+ require('../chunk-JVWLXVYG.cjs');
8
10
  require('../chunk-BRPEB43C.cjs');
9
- require('../chunk-BAKLJKFZ.cjs');
11
+ require('../chunk-APZ6JFN6.cjs');
12
+ require('../chunk-EANGKAKG.cjs');
10
13
  require('../chunk-L7WY5YFQ.cjs');
11
14
  require('../chunk-XOR4MPEN.cjs');
12
15
  require('../chunk-AHGB5HH6.cjs');
@@ -15,7 +18,7 @@ require('../chunk-AHGB5HH6.cjs');
15
18
 
16
19
  Object.defineProperty(exports, "Dictation", {
17
20
  enumerable: true,
18
- get: function () { return chunkRZ52SEYV_cjs.Dictation; }
21
+ get: function () { return chunk7GYAUA56_cjs.Dictation; }
19
22
  });
20
23
  //# sourceMappingURL=Dictation.cjs.map
21
24
  //# sourceMappingURL=Dictation.cjs.map
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { DictationData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-BOPKhnS-.cjs';
3
+ import { A as ActivityProps } from '../types-DtPYG1hh.cjs';
4
4
  import '../ai/LkAiProvider.cjs';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.cjs';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { DictationData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-PCYKWCwd.js';
3
+ import { A as ActivityProps } from '../types-BY-4S5Rd.js';
4
4
  import '../ai/LkAiProvider.js';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.js';
@@ -1,10 +1,13 @@
1
1
  'use client';
2
- export { Dictation } from '../chunk-HZMILQYO.js';
3
- import '../chunk-GR33G5QM.js';
2
+ export { Dictation } from '../chunk-GM4PXDZ2.js';
3
+ import '../chunk-BURYHHBM.js';
4
+ import '../chunk-YGJE7RSW.js';
4
5
  import '../chunk-YNDKAYW3.js';
5
6
  import '../chunk-YORQQXGO.js';
7
+ import '../chunk-TEAVPUMX.js';
6
8
  import '../chunk-RCMYEWBE.js';
7
- import '../chunk-YTGRXD23.js';
9
+ import '../chunk-FEOFX4QW.js';
10
+ import '../chunk-PPFVTXGJ.js';
8
11
  import '../chunk-BY4UQH2Y.js';
9
12
  import '../chunk-6N43WDVG.js';
10
13
  import '../chunk-YRNEOBXA.js';
@@ -1,11 +1,14 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkTI23GIFM_cjs = require('../chunk-TI23GIFM.cjs');
5
- require('../chunk-5F4Q6JT7.cjs');
4
+ var chunkJH77MAON_cjs = require('../chunk-JH77MAON.cjs');
5
+ require('../chunk-NWGQ7JML.cjs');
6
+ require('../chunk-TL3GVPBO.cjs');
6
7
  require('../chunk-ZDYNAWDZ.cjs');
8
+ require('../chunk-JVWLXVYG.cjs');
7
9
  require('../chunk-BRPEB43C.cjs');
8
- require('../chunk-BAKLJKFZ.cjs');
10
+ require('../chunk-APZ6JFN6.cjs');
11
+ require('../chunk-EANGKAKG.cjs');
9
12
  require('../chunk-L7WY5YFQ.cjs');
10
13
  require('../chunk-XOR4MPEN.cjs');
11
14
  require('../chunk-AHGB5HH6.cjs');
@@ -14,7 +17,7 @@ require('../chunk-AHGB5HH6.cjs');
14
17
 
15
18
  Object.defineProperty(exports, "FillInTheBlanks", {
16
19
  enumerable: true,
17
- get: function () { return chunkTI23GIFM_cjs.FillInTheBlanks; }
20
+ get: function () { return chunkJH77MAON_cjs.FillInTheBlanks; }
18
21
  });
19
22
  //# sourceMappingURL=FillInTheBlanks.cjs.map
20
23
  //# sourceMappingURL=FillInTheBlanks.cjs.map
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { FillInTheBlanksData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-BOPKhnS-.cjs';
3
+ import { A as ActivityProps } from '../types-DtPYG1hh.cjs';
4
4
  import '../ai/LkAiProvider.cjs';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.cjs';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { FillInTheBlanksData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-PCYKWCwd.js';
3
+ import { A as ActivityProps } from '../types-BY-4S5Rd.js';
4
4
  import '../ai/LkAiProvider.js';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.js';
@@ -1,9 +1,12 @@
1
1
  'use client';
2
- export { FillInTheBlanks } from '../chunk-QHK6PTUR.js';
3
- import '../chunk-GR33G5QM.js';
2
+ export { FillInTheBlanks } from '../chunk-IKV2I7KT.js';
3
+ import '../chunk-BURYHHBM.js';
4
+ import '../chunk-YGJE7RSW.js';
4
5
  import '../chunk-YNDKAYW3.js';
6
+ import '../chunk-TEAVPUMX.js';
5
7
  import '../chunk-RCMYEWBE.js';
6
- import '../chunk-YTGRXD23.js';
8
+ import '../chunk-FEOFX4QW.js';
9
+ import '../chunk-PPFVTXGJ.js';
7
10
  import '../chunk-BY4UQH2Y.js';
8
11
  import '../chunk-6N43WDVG.js';
9
12
  import '../chunk-YRNEOBXA.js';
@@ -1,11 +1,14 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkQA42VDTA_cjs = require('../chunk-QA42VDTA.cjs');
5
- require('../chunk-5F4Q6JT7.cjs');
4
+ var chunk3SJ7TVL6_cjs = require('../chunk-3SJ7TVL6.cjs');
5
+ require('../chunk-NWGQ7JML.cjs');
6
+ require('../chunk-TL3GVPBO.cjs');
6
7
  require('../chunk-ZDYNAWDZ.cjs');
8
+ require('../chunk-JVWLXVYG.cjs');
7
9
  require('../chunk-BRPEB43C.cjs');
8
- require('../chunk-BAKLJKFZ.cjs');
10
+ require('../chunk-APZ6JFN6.cjs');
11
+ require('../chunk-EANGKAKG.cjs');
9
12
  require('../chunk-L7WY5YFQ.cjs');
10
13
  require('../chunk-XOR4MPEN.cjs');
11
14
  require('../chunk-AHGB5HH6.cjs');
@@ -14,7 +17,7 @@ require('../chunk-AHGB5HH6.cjs');
14
17
 
15
18
  Object.defineProperty(exports, "GapSelect", {
16
19
  enumerable: true,
17
- get: function () { return chunkQA42VDTA_cjs.GapSelect; }
20
+ get: function () { return chunk3SJ7TVL6_cjs.GapSelect; }
18
21
  });
19
22
  //# sourceMappingURL=GapSelect.cjs.map
20
23
  //# sourceMappingURL=GapSelect.cjs.map
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { GapSelectData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-BOPKhnS-.cjs';
3
+ import { A as ActivityProps } from '../types-DtPYG1hh.cjs';
4
4
  import '../ai/LkAiProvider.cjs';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.cjs';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { GapSelectData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-PCYKWCwd.js';
3
+ import { A as ActivityProps } from '../types-BY-4S5Rd.js';
4
4
  import '../ai/LkAiProvider.js';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.js';
@@ -1,9 +1,12 @@
1
1
  'use client';
2
- export { GapSelect } from '../chunk-ALH6TUX2.js';
3
- import '../chunk-GR33G5QM.js';
2
+ export { GapSelect } from '../chunk-THHFIP4N.js';
3
+ import '../chunk-BURYHHBM.js';
4
+ import '../chunk-YGJE7RSW.js';
4
5
  import '../chunk-YNDKAYW3.js';
6
+ import '../chunk-TEAVPUMX.js';
5
7
  import '../chunk-RCMYEWBE.js';
6
- import '../chunk-YTGRXD23.js';
8
+ import '../chunk-FEOFX4QW.js';
9
+ import '../chunk-PPFVTXGJ.js';
7
10
  import '../chunk-BY4UQH2Y.js';
8
11
  import '../chunk-6N43WDVG.js';
9
12
  import '../chunk-YRNEOBXA.js';
@@ -1,19 +1,22 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunk3TJSFPO4_cjs = require('../chunk-3TJSFPO4.cjs');
5
- require('../chunk-JKMBFHER.cjs');
6
- require('../chunk-TI23GIFM.cjs');
7
- require('../chunk-QA42VDTA.cjs');
8
- require('../chunk-RZ52SEYV.cjs');
9
- require('../chunk-5F4Q6JT7.cjs');
4
+ var chunkPROKRNL2_cjs = require('../chunk-PROKRNL2.cjs');
5
+ require('../chunk-X4YU6BX7.cjs');
6
+ require('../chunk-JH77MAON.cjs');
7
+ require('../chunk-3SJ7TVL6.cjs');
8
+ require('../chunk-7GYAUA56.cjs');
9
+ require('../chunk-NWGQ7JML.cjs');
10
+ require('../chunk-TL3GVPBO.cjs');
10
11
  require('../chunk-ZDYNAWDZ.cjs');
11
- require('../chunk-6RRFH7C4.cjs');
12
- require('../chunk-UQIRDE52.cjs');
12
+ require('../chunk-NZM3M5IR.cjs');
13
+ require('../chunk-LX2X4KC7.cjs');
13
14
  require('../chunk-UDCQTOVU.cjs');
14
15
  require('../chunk-OD65OZIW.cjs');
16
+ require('../chunk-JVWLXVYG.cjs');
15
17
  require('../chunk-BRPEB43C.cjs');
16
- require('../chunk-BAKLJKFZ.cjs');
18
+ require('../chunk-APZ6JFN6.cjs');
19
+ require('../chunk-EANGKAKG.cjs');
17
20
  require('../chunk-L7WY5YFQ.cjs');
18
21
  require('../chunk-XOR4MPEN.cjs');
19
22
  require('../chunk-AHGB5HH6.cjs');
@@ -22,11 +25,11 @@ require('../chunk-AHGB5HH6.cjs');
22
25
 
23
26
  Object.defineProperty(exports, "InteractiveVideo", {
24
27
  enumerable: true,
25
- get: function () { return chunk3TJSFPO4_cjs.InteractiveVideo; }
28
+ get: function () { return chunkPROKRNL2_cjs.InteractiveVideo; }
26
29
  });
27
30
  Object.defineProperty(exports, "resolveCaptionTracks", {
28
31
  enumerable: true,
29
- get: function () { return chunk3TJSFPO4_cjs.resolveCaptionTracks; }
32
+ get: function () { return chunkPROKRNL2_cjs.resolveCaptionTracks; }
30
33
  });
31
34
  //# sourceMappingURL=InteractiveVideo.cjs.map
32
35
  //# sourceMappingURL=InteractiveVideo.cjs.map
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ItemGroup, MediaProgress, LearnerResponse, ItemOutcome, ActivityResult, InteractionEvent, InteractionKind, SpeechAssessment, MediaTrack, ThemeTokens } from '@intellectif/lk-core';
3
3
  import { ReactNode } from 'react';
4
4
  import { LearnerAi } from '../ai/LkAiProvider.cjs';
5
- import { g as RenderableActivity, e as RenderMode, i as SequenceRecordingSlot, h as SequenceRecordingBinding, V as VideoPreferences, a as LkStringsOverride, H as HtmlSanitizer } from '../strings-BOPKhnS-.cjs';
6
- export { C as CaptionSize } from '../strings-BOPKhnS-.cjs';
5
+ import { g as RenderableActivity, e as RenderMode, i as SequenceRecordingSlot, h as SequenceRecordingBinding, V as VideoPreferences, a as LkStringsOverride, H as HtmlSanitizer } from '../types-DtPYG1hh.cjs';
6
+ export { C as CaptionSize } from '../types-DtPYG1hh.cjs';
7
7
  import '../machine-CuwKqWXC.cjs';
8
8
 
9
9
  /** An item group whose items may be `redact()` projections: the client's view of an interactive video. */
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ItemGroup, MediaProgress, LearnerResponse, ItemOutcome, ActivityResult, InteractionEvent, InteractionKind, SpeechAssessment, MediaTrack, ThemeTokens } from '@intellectif/lk-core';
3
3
  import { ReactNode } from 'react';
4
4
  import { LearnerAi } from '../ai/LkAiProvider.js';
5
- import { g as RenderableActivity, e as RenderMode, i as SequenceRecordingSlot, h as SequenceRecordingBinding, V as VideoPreferences, a as LkStringsOverride, H as HtmlSanitizer } from '../strings-PCYKWCwd.js';
6
- export { C as CaptionSize } from '../strings-PCYKWCwd.js';
5
+ import { g as RenderableActivity, e as RenderMode, i as SequenceRecordingSlot, h as SequenceRecordingBinding, V as VideoPreferences, a as LkStringsOverride, H as HtmlSanitizer } from '../types-BY-4S5Rd.js';
6
+ export { C as CaptionSize } from '../types-BY-4S5Rd.js';
7
7
  import '../machine-CuwKqWXC.js';
8
8
 
9
9
  /** An item group whose items may be `redact()` projections: the client's view of an interactive video. */
@@ -1,17 +1,20 @@
1
1
  'use client';
2
- export { InteractiveVideo, resolveCaptionTracks } from '../chunk-UYQBEPNZ.js';
3
- import '../chunk-6DTW5T3Z.js';
4
- import '../chunk-QHK6PTUR.js';
5
- import '../chunk-ALH6TUX2.js';
6
- import '../chunk-HZMILQYO.js';
7
- import '../chunk-GR33G5QM.js';
2
+ export { InteractiveVideo, resolveCaptionTracks } from '../chunk-6NY7OTOO.js';
3
+ import '../chunk-JSRKES2Z.js';
4
+ import '../chunk-IKV2I7KT.js';
5
+ import '../chunk-THHFIP4N.js';
6
+ import '../chunk-GM4PXDZ2.js';
7
+ import '../chunk-BURYHHBM.js';
8
+ import '../chunk-YGJE7RSW.js';
8
9
  import '../chunk-YNDKAYW3.js';
9
- import '../chunk-KP57YCYQ.js';
10
- import '../chunk-QJW3K6JN.js';
10
+ import '../chunk-UXV3V5NH.js';
11
+ import '../chunk-G7AGM2Y7.js';
11
12
  import '../chunk-MCO52PV5.js';
12
13
  import '../chunk-YORQQXGO.js';
14
+ import '../chunk-TEAVPUMX.js';
13
15
  import '../chunk-RCMYEWBE.js';
14
- import '../chunk-YTGRXD23.js';
16
+ import '../chunk-FEOFX4QW.js';
17
+ import '../chunk-PPFVTXGJ.js';
15
18
  import '../chunk-BY4UQH2Y.js';
16
19
  import '../chunk-6N43WDVG.js';
17
20
  import '../chunk-YRNEOBXA.js';
@@ -1,11 +1,14 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkJKMBFHER_cjs = require('../chunk-JKMBFHER.cjs');
5
- require('../chunk-5F4Q6JT7.cjs');
4
+ var chunkX4YU6BX7_cjs = require('../chunk-X4YU6BX7.cjs');
5
+ require('../chunk-NWGQ7JML.cjs');
6
+ require('../chunk-TL3GVPBO.cjs');
6
7
  require('../chunk-ZDYNAWDZ.cjs');
8
+ require('../chunk-JVWLXVYG.cjs');
7
9
  require('../chunk-BRPEB43C.cjs');
8
- require('../chunk-BAKLJKFZ.cjs');
10
+ require('../chunk-APZ6JFN6.cjs');
11
+ require('../chunk-EANGKAKG.cjs');
9
12
  require('../chunk-L7WY5YFQ.cjs');
10
13
  require('../chunk-XOR4MPEN.cjs');
11
14
  require('../chunk-AHGB5HH6.cjs');
@@ -14,7 +17,7 @@ require('../chunk-AHGB5HH6.cjs');
14
17
 
15
18
  Object.defineProperty(exports, "MultipleChoice", {
16
19
  enumerable: true,
17
- get: function () { return chunkJKMBFHER_cjs.MultipleChoice; }
20
+ get: function () { return chunkX4YU6BX7_cjs.MultipleChoice; }
18
21
  });
19
22
  //# sourceMappingURL=MultipleChoice.cjs.map
20
23
  //# sourceMappingURL=MultipleChoice.cjs.map
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MultipleChoiceData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-BOPKhnS-.cjs';
3
+ import { A as ActivityProps } from '../types-DtPYG1hh.cjs';
4
4
  import '../ai/LkAiProvider.cjs';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.cjs';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MultipleChoiceData } from '@intellectif/lk-core';
3
- import { A as ActivityProps } from '../strings-PCYKWCwd.js';
3
+ import { A as ActivityProps } from '../types-BY-4S5Rd.js';
4
4
  import '../ai/LkAiProvider.js';
5
5
  import 'react';
6
6
  import '../machine-CuwKqWXC.js';
@@ -1,9 +1,12 @@
1
1
  'use client';
2
- export { MultipleChoice } from '../chunk-6DTW5T3Z.js';
3
- import '../chunk-GR33G5QM.js';
2
+ export { MultipleChoice } from '../chunk-JSRKES2Z.js';
3
+ import '../chunk-BURYHHBM.js';
4
+ import '../chunk-YGJE7RSW.js';
4
5
  import '../chunk-YNDKAYW3.js';
6
+ import '../chunk-TEAVPUMX.js';
5
7
  import '../chunk-RCMYEWBE.js';
6
- import '../chunk-YTGRXD23.js';
8
+ import '../chunk-FEOFX4QW.js';
9
+ import '../chunk-PPFVTXGJ.js';
7
10
  import '../chunk-BY4UQH2Y.js';
8
11
  import '../chunk-6N43WDVG.js';
9
12
  import '../chunk-YRNEOBXA.js';