@lessonkit/react 1.1.0 → 1.2.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.
- package/README.md +17 -4
- package/block-catalog.v3.json +1504 -0
- package/block-contract.v3.json +110 -0
- package/dist/index.cjs +2247 -700
- package/dist/index.d.cts +196 -28
- package/dist/index.d.ts +196 -28
- package/dist/index.js +2322 -775
- package/package.json +13 -9
|
@@ -0,0 +1,1504 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 3,
|
|
3
|
+
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"type": "Course",
|
|
6
|
+
"category": "container",
|
|
7
|
+
"description": "Top-level course shell; wraps LessonkitProvider and emits course lifecycle telemetry.",
|
|
8
|
+
"props": [
|
|
9
|
+
{
|
|
10
|
+
"name": "title",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"required": true,
|
|
13
|
+
"description": "Course title shown in the h1."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "courseId",
|
|
17
|
+
"type": "CourseId",
|
|
18
|
+
"required": true,
|
|
19
|
+
"description": "Stable course identifier for telemetry and packaging."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "config",
|
|
23
|
+
"type": "Omit<LessonkitConfig, 'courseId'>",
|
|
24
|
+
"required": false,
|
|
25
|
+
"description": "Runtime config (tracking, xAPI, session, lxpack bridge). courseId is merged from props."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "children",
|
|
29
|
+
"type": "ReactNode",
|
|
30
|
+
"required": true,
|
|
31
|
+
"description": "Lessons and course chrome."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"requiredIds": [
|
|
35
|
+
"courseId"
|
|
36
|
+
],
|
|
37
|
+
"a11y": {
|
|
38
|
+
"element": "section",
|
|
39
|
+
"ariaLabel": "title prop",
|
|
40
|
+
"keyboard": "No block-specific keyboard behavior; focus flows to child content.",
|
|
41
|
+
"notes": "Renders h1 with course title. Wrap with ThemeProvider at app root for theming."
|
|
42
|
+
},
|
|
43
|
+
"theming": {
|
|
44
|
+
"surface": "global-inherit",
|
|
45
|
+
"stylingNotes": "Inherits --lk-* CSS variables from ThemeProvider on document or scoped host."
|
|
46
|
+
},
|
|
47
|
+
"telemetry": {
|
|
48
|
+
"emits": [
|
|
49
|
+
"course_started",
|
|
50
|
+
"course_completed"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "Lesson",
|
|
56
|
+
"category": "container",
|
|
57
|
+
"description": "Lesson container; sets active lesson on mount and completes on unmount.",
|
|
58
|
+
"props": [
|
|
59
|
+
{
|
|
60
|
+
"name": "title",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"required": true,
|
|
63
|
+
"description": "Lesson title shown in the h2."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "lessonId",
|
|
67
|
+
"type": "LessonId",
|
|
68
|
+
"required": true,
|
|
69
|
+
"description": "Stable lesson identifier for telemetry and packaging."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "autoCompleteOnUnmount",
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"required": false,
|
|
75
|
+
"description": "When false, unmount does not emit lesson_completed (default true)."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "children",
|
|
79
|
+
"type": "ReactNode",
|
|
80
|
+
"required": true,
|
|
81
|
+
"description": "Scenario, Quiz, Reflection, and other blocks."
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"requiredIds": [
|
|
85
|
+
"lessonId"
|
|
86
|
+
],
|
|
87
|
+
"parentConstraints": [
|
|
88
|
+
"Course",
|
|
89
|
+
"Lesson",
|
|
90
|
+
"Page",
|
|
91
|
+
"InteractiveBook",
|
|
92
|
+
"AssessmentSequence"
|
|
93
|
+
],
|
|
94
|
+
"a11y": {
|
|
95
|
+
"element": "article",
|
|
96
|
+
"ariaLabel": "title prop",
|
|
97
|
+
"keyboard": "No block-specific keyboard behavior; focus flows to child content.",
|
|
98
|
+
"notes": "Renders h2 with lesson title. Only one Lesson should be mounted as active at a time in typical SPA layouts."
|
|
99
|
+
},
|
|
100
|
+
"theming": {
|
|
101
|
+
"surface": "global-inherit",
|
|
102
|
+
"stylingNotes": "Inherits --lk-* CSS variables from ThemeProvider."
|
|
103
|
+
},
|
|
104
|
+
"telemetry": {
|
|
105
|
+
"emits": [
|
|
106
|
+
"lesson_started",
|
|
107
|
+
"lesson_completed",
|
|
108
|
+
"lesson_time_on_task"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"type": "Scenario",
|
|
114
|
+
"category": "content",
|
|
115
|
+
"description": "Scenario or narrative content region for branching stories and situational context.",
|
|
116
|
+
"props": [
|
|
117
|
+
{
|
|
118
|
+
"name": "blockId",
|
|
119
|
+
"type": "BlockId",
|
|
120
|
+
"required": false,
|
|
121
|
+
"description": "Optional stable block id for interaction telemetry URNs."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "children",
|
|
125
|
+
"type": "ReactNode",
|
|
126
|
+
"required": true,
|
|
127
|
+
"description": "Scenario narrative and custom UI."
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"requiredIds": [],
|
|
131
|
+
"optionalIds": [
|
|
132
|
+
"blockId"
|
|
133
|
+
],
|
|
134
|
+
"parentConstraints": [
|
|
135
|
+
"Lesson",
|
|
136
|
+
"Page",
|
|
137
|
+
"InteractiveBook",
|
|
138
|
+
"AssessmentSequence"
|
|
139
|
+
],
|
|
140
|
+
"a11y": {
|
|
141
|
+
"element": "section",
|
|
142
|
+
"ariaLabel": "Scenario",
|
|
143
|
+
"keyboard": "No block-specific keyboard behavior; custom children may define their own.",
|
|
144
|
+
"notes": "Use for situational framing. Pair with useTracking() for branching interactions."
|
|
145
|
+
},
|
|
146
|
+
"theming": {
|
|
147
|
+
"surface": "global-inherit",
|
|
148
|
+
"dataAttributes": [
|
|
149
|
+
"data-lk-block-id"
|
|
150
|
+
],
|
|
151
|
+
"stylingNotes": "Optional data-lk-block-id when blockId is set. Style via app CSS using --lk-* tokens."
|
|
152
|
+
},
|
|
153
|
+
"telemetry": {
|
|
154
|
+
"emits": [],
|
|
155
|
+
"manualTracking": "useTracking().track('interaction', { kind, blockId, payload })"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"type": "Reflection",
|
|
160
|
+
"category": "content",
|
|
161
|
+
"description": "Reflection prompt with a textarea for learner free-text responses.",
|
|
162
|
+
"props": [
|
|
163
|
+
{
|
|
164
|
+
"name": "blockId",
|
|
165
|
+
"type": "BlockId",
|
|
166
|
+
"required": false,
|
|
167
|
+
"description": "Optional stable block id for interaction telemetry URNs."
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "prompt",
|
|
171
|
+
"type": "string",
|
|
172
|
+
"required": false,
|
|
173
|
+
"description": "Reflection question or instruction."
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "hint",
|
|
177
|
+
"type": "string",
|
|
178
|
+
"required": false,
|
|
179
|
+
"description": "Optional hint linked via aria-describedby."
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "value",
|
|
183
|
+
"type": "string",
|
|
184
|
+
"required": false,
|
|
185
|
+
"description": "Controlled textarea value."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "onChange",
|
|
189
|
+
"type": "(value: string) => void",
|
|
190
|
+
"required": false,
|
|
191
|
+
"description": "Called when the learner edits the textarea."
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name": "children",
|
|
195
|
+
"type": "ReactNode",
|
|
196
|
+
"required": false,
|
|
197
|
+
"description": "Optional content above the textarea."
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"requiredIds": [],
|
|
201
|
+
"optionalIds": [
|
|
202
|
+
"blockId"
|
|
203
|
+
],
|
|
204
|
+
"parentConstraints": [
|
|
205
|
+
"Lesson",
|
|
206
|
+
"Page",
|
|
207
|
+
"InteractiveBook",
|
|
208
|
+
"AssessmentSequence"
|
|
209
|
+
],
|
|
210
|
+
"a11y": {
|
|
211
|
+
"element": "section",
|
|
212
|
+
"ariaLabel": "Reflection",
|
|
213
|
+
"keyboard": "Textarea is keyboard-focusable; standard text entry.",
|
|
214
|
+
"notes": "When prompt is set, textarea uses aria-labelledby; otherwise aria-label='Reflection response'."
|
|
215
|
+
},
|
|
216
|
+
"theming": {
|
|
217
|
+
"surface": "global-inherit",
|
|
218
|
+
"dataAttributes": [
|
|
219
|
+
"data-lk-block-id"
|
|
220
|
+
],
|
|
221
|
+
"stylingNotes": "Optional data-lk-block-id when blockId is set. Style textarea via app CSS."
|
|
222
|
+
},
|
|
223
|
+
"telemetry": {
|
|
224
|
+
"emits": [],
|
|
225
|
+
"requiresActiveLesson": true,
|
|
226
|
+
"manualTracking": "useTracking().track('interaction', { kind, blockId, payload }) on submit or blur"
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"type": "Quiz",
|
|
231
|
+
"aliases": [
|
|
232
|
+
"KnowledgeCheck"
|
|
233
|
+
],
|
|
234
|
+
"category": "assessment",
|
|
235
|
+
"description": "Single-question multiple-choice assessment with automatic answer and completion telemetry.",
|
|
236
|
+
"props": [
|
|
237
|
+
{
|
|
238
|
+
"name": "checkId",
|
|
239
|
+
"type": "CheckId",
|
|
240
|
+
"required": true,
|
|
241
|
+
"description": "Stable check identifier for telemetry and LXPack assessments."
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "question",
|
|
245
|
+
"type": "string",
|
|
246
|
+
"required": true,
|
|
247
|
+
"description": "Question text shown above choices."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"name": "choices",
|
|
251
|
+
"type": "string[]",
|
|
252
|
+
"required": true,
|
|
253
|
+
"description": "Radio button choice labels."
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"name": "answer",
|
|
257
|
+
"type": "string",
|
|
258
|
+
"required": true,
|
|
259
|
+
"description": "Correct choice value (must match one choice)."
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "passingScore",
|
|
263
|
+
"type": "number",
|
|
264
|
+
"required": false,
|
|
265
|
+
"description": "Minimum score required to pass (defaults to maxScore when omitted)."
|
|
266
|
+
}
|
|
267
|
+
],
|
|
268
|
+
"requiredIds": [
|
|
269
|
+
"checkId"
|
|
270
|
+
],
|
|
271
|
+
"parentConstraints": [
|
|
272
|
+
"Lesson",
|
|
273
|
+
"Page",
|
|
274
|
+
"InteractiveBook",
|
|
275
|
+
"AssessmentSequence"
|
|
276
|
+
],
|
|
277
|
+
"a11y": {
|
|
278
|
+
"element": "section",
|
|
279
|
+
"ariaLabel": "Quiz",
|
|
280
|
+
"keyboard": "Radio group navigable with arrow keys; one choice per question.",
|
|
281
|
+
"liveRegions": "role='status' aria-live='polite' for Correct / Try again feedback.",
|
|
282
|
+
"notes": "Fieldset with visually hidden legend. KnowledgeCheck is an alias that renders Quiz with identical behavior."
|
|
283
|
+
},
|
|
284
|
+
"theming": {
|
|
285
|
+
"surface": "global-inherit",
|
|
286
|
+
"dataAttributes": [
|
|
287
|
+
"data-lk-check-id"
|
|
288
|
+
],
|
|
289
|
+
"stylingNotes": "data-lk-check-id set from checkId. Style labels and feedback via app CSS."
|
|
290
|
+
},
|
|
291
|
+
"telemetry": {
|
|
292
|
+
"emits": [
|
|
293
|
+
"quiz_answered",
|
|
294
|
+
"quiz_completed"
|
|
295
|
+
],
|
|
296
|
+
"requiresActiveLesson": true
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"type": "ProgressTracker",
|
|
301
|
+
"category": "chrome",
|
|
302
|
+
"description": "Displays count of completed lessons from runtime progress state.",
|
|
303
|
+
"props": [
|
|
304
|
+
{
|
|
305
|
+
"name": "totalLessons",
|
|
306
|
+
"type": "number",
|
|
307
|
+
"required": false,
|
|
308
|
+
"description": "When set, renders role=progressbar with aria-valuenow/max."
|
|
309
|
+
}
|
|
310
|
+
],
|
|
311
|
+
"requiredIds": [],
|
|
312
|
+
"parentConstraints": [
|
|
313
|
+
"Course",
|
|
314
|
+
"Lesson",
|
|
315
|
+
"Page",
|
|
316
|
+
"InteractiveBook",
|
|
317
|
+
"AssessmentSequence"
|
|
318
|
+
],
|
|
319
|
+
"a11y": {
|
|
320
|
+
"element": "aside",
|
|
321
|
+
"ariaLabel": "Progress",
|
|
322
|
+
"keyboard": "Presentational; no interactive elements.",
|
|
323
|
+
"notes": "Shows 'Lessons completed: N' from progress.completedLessonIds."
|
|
324
|
+
},
|
|
325
|
+
"theming": {
|
|
326
|
+
"surface": "global-inherit",
|
|
327
|
+
"stylingNotes": "Inherits --lk-* CSS variables; style via app CSS."
|
|
328
|
+
},
|
|
329
|
+
"telemetry": {
|
|
330
|
+
"emits": []
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"type": "TrueFalse",
|
|
335
|
+
"category": "assessment",
|
|
336
|
+
"assessmentContract": true,
|
|
337
|
+
"h5pMachineName": "H5P.TrueFalse",
|
|
338
|
+
"h5pAlias": "True/False",
|
|
339
|
+
"description": "Binary true/false question with assessment contract.",
|
|
340
|
+
"props": [
|
|
341
|
+
{
|
|
342
|
+
"name": "checkId",
|
|
343
|
+
"type": "CheckId",
|
|
344
|
+
"required": true,
|
|
345
|
+
"description": "Stable check id."
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"name": "question",
|
|
349
|
+
"type": "string",
|
|
350
|
+
"required": true,
|
|
351
|
+
"description": "Question text."
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"name": "answer",
|
|
355
|
+
"type": "boolean",
|
|
356
|
+
"required": true,
|
|
357
|
+
"description": "Correct answer."
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "enableRetry",
|
|
361
|
+
"type": "boolean",
|
|
362
|
+
"required": false,
|
|
363
|
+
"description": "Allow retry after completion."
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"name": "enableSolutionsButton",
|
|
367
|
+
"type": "boolean",
|
|
368
|
+
"required": false,
|
|
369
|
+
"description": "Show solution control."
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"name": "autoCheck",
|
|
373
|
+
"type": "boolean",
|
|
374
|
+
"required": false,
|
|
375
|
+
"description": "Check answers automatically when possible."
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"name": "passingScore",
|
|
379
|
+
"type": "number",
|
|
380
|
+
"required": false,
|
|
381
|
+
"description": "Minimum score to pass."
|
|
382
|
+
}
|
|
383
|
+
],
|
|
384
|
+
"requiredIds": [
|
|
385
|
+
"checkId"
|
|
386
|
+
],
|
|
387
|
+
"parentConstraints": [
|
|
388
|
+
"Lesson",
|
|
389
|
+
"AssessmentSequence",
|
|
390
|
+
"Page",
|
|
391
|
+
"InteractiveBook"
|
|
392
|
+
],
|
|
393
|
+
"a11y": {
|
|
394
|
+
"element": "section",
|
|
395
|
+
"ariaLabel": "True or False",
|
|
396
|
+
"keyboard": "Radio group with True/False options.",
|
|
397
|
+
"liveRegions": "role='status' for feedback.",
|
|
398
|
+
"notes": "H5P True/False equivalent."
|
|
399
|
+
},
|
|
400
|
+
"theming": {
|
|
401
|
+
"surface": "global-inherit",
|
|
402
|
+
"dataAttributes": [
|
|
403
|
+
"data-lk-check-id"
|
|
404
|
+
],
|
|
405
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
406
|
+
},
|
|
407
|
+
"telemetry": {
|
|
408
|
+
"emits": [
|
|
409
|
+
"assessment_answered",
|
|
410
|
+
"assessment_completed"
|
|
411
|
+
],
|
|
412
|
+
"requiresActiveLesson": true
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"type": "FillInTheBlanks",
|
|
417
|
+
"category": "assessment",
|
|
418
|
+
"assessmentContract": true,
|
|
419
|
+
"h5pMachineName": "H5P.Blanks",
|
|
420
|
+
"h5pAlias": "Fill in the Blanks",
|
|
421
|
+
"description": "Fill-in-the-blank text with *answer* markers in template.",
|
|
422
|
+
"props": [
|
|
423
|
+
{
|
|
424
|
+
"name": "checkId",
|
|
425
|
+
"type": "CheckId",
|
|
426
|
+
"required": true,
|
|
427
|
+
"description": "Stable check id."
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"name": "template",
|
|
431
|
+
"type": "string",
|
|
432
|
+
"required": true,
|
|
433
|
+
"description": "Text with *blank* markers."
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"name": "blanks",
|
|
437
|
+
"type": "FillInBlankSpec[]",
|
|
438
|
+
"required": false,
|
|
439
|
+
"description": "Explicit blank specs."
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"name": "enableRetry",
|
|
443
|
+
"type": "boolean",
|
|
444
|
+
"required": false,
|
|
445
|
+
"description": "Allow retry after completion."
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"name": "enableSolutionsButton",
|
|
449
|
+
"type": "boolean",
|
|
450
|
+
"required": false,
|
|
451
|
+
"description": "Show solution control."
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "autoCheck",
|
|
455
|
+
"type": "boolean",
|
|
456
|
+
"required": false,
|
|
457
|
+
"description": "Check answers automatically when possible."
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"name": "passingScore",
|
|
461
|
+
"type": "number",
|
|
462
|
+
"required": false,
|
|
463
|
+
"description": "Minimum score to pass."
|
|
464
|
+
}
|
|
465
|
+
],
|
|
466
|
+
"requiredIds": [
|
|
467
|
+
"checkId"
|
|
468
|
+
],
|
|
469
|
+
"parentConstraints": [
|
|
470
|
+
"Lesson",
|
|
471
|
+
"AssessmentSequence",
|
|
472
|
+
"Page",
|
|
473
|
+
"InteractiveBook"
|
|
474
|
+
],
|
|
475
|
+
"a11y": {
|
|
476
|
+
"element": "section",
|
|
477
|
+
"ariaLabel": "Fill in the Blanks",
|
|
478
|
+
"keyboard": "Tab between text inputs.",
|
|
479
|
+
"notes": "H5P Fill in the Blanks equivalent."
|
|
480
|
+
},
|
|
481
|
+
"theming": {
|
|
482
|
+
"surface": "global-inherit",
|
|
483
|
+
"dataAttributes": [
|
|
484
|
+
"data-lk-check-id"
|
|
485
|
+
],
|
|
486
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
487
|
+
},
|
|
488
|
+
"telemetry": {
|
|
489
|
+
"emits": [
|
|
490
|
+
"assessment_answered",
|
|
491
|
+
"assessment_completed"
|
|
492
|
+
],
|
|
493
|
+
"requiresActiveLesson": true
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"type": "DragAndDrop",
|
|
498
|
+
"category": "assessment",
|
|
499
|
+
"assessmentContract": true,
|
|
500
|
+
"h5pMachineName": "H5P.DragQuestion",
|
|
501
|
+
"h5pAlias": "Drag and Drop",
|
|
502
|
+
"description": "Drag items onto labeled targets.",
|
|
503
|
+
"props": [
|
|
504
|
+
{
|
|
505
|
+
"name": "checkId",
|
|
506
|
+
"type": "CheckId",
|
|
507
|
+
"required": true,
|
|
508
|
+
"description": "Stable check id."
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"name": "items",
|
|
512
|
+
"type": "DragItem[]",
|
|
513
|
+
"required": true,
|
|
514
|
+
"description": "Draggable items."
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"name": "targets",
|
|
518
|
+
"type": "DropTarget[]",
|
|
519
|
+
"required": true,
|
|
520
|
+
"description": "Drop targets."
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
"name": "enableRetry",
|
|
524
|
+
"type": "boolean",
|
|
525
|
+
"required": false,
|
|
526
|
+
"description": "Allow retry after completion."
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
"name": "enableSolutionsButton",
|
|
530
|
+
"type": "boolean",
|
|
531
|
+
"required": false,
|
|
532
|
+
"description": "Show solution control."
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"name": "autoCheck",
|
|
536
|
+
"type": "boolean",
|
|
537
|
+
"required": false,
|
|
538
|
+
"description": "Check answers automatically when possible."
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"name": "passingScore",
|
|
542
|
+
"type": "number",
|
|
543
|
+
"required": false,
|
|
544
|
+
"description": "Minimum score to pass."
|
|
545
|
+
}
|
|
546
|
+
],
|
|
547
|
+
"requiredIds": [
|
|
548
|
+
"checkId"
|
|
549
|
+
],
|
|
550
|
+
"parentConstraints": [
|
|
551
|
+
"Lesson",
|
|
552
|
+
"AssessmentSequence",
|
|
553
|
+
"Page",
|
|
554
|
+
"InteractiveBook"
|
|
555
|
+
],
|
|
556
|
+
"a11y": {
|
|
557
|
+
"element": "section",
|
|
558
|
+
"ariaLabel": "Drag and Drop",
|
|
559
|
+
"keyboard": "Select item then activate target; drag also supported.",
|
|
560
|
+
"notes": "H5P Drag and Drop equivalent."
|
|
561
|
+
},
|
|
562
|
+
"theming": {
|
|
563
|
+
"surface": "global-inherit",
|
|
564
|
+
"dataAttributes": [
|
|
565
|
+
"data-lk-check-id"
|
|
566
|
+
],
|
|
567
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
568
|
+
},
|
|
569
|
+
"telemetry": {
|
|
570
|
+
"emits": [
|
|
571
|
+
"assessment_answered",
|
|
572
|
+
"assessment_completed"
|
|
573
|
+
],
|
|
574
|
+
"requiresActiveLesson": true
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"type": "DragTheWords",
|
|
579
|
+
"category": "assessment",
|
|
580
|
+
"assessmentContract": true,
|
|
581
|
+
"h5pMachineName": "H5P.DragText",
|
|
582
|
+
"h5pAlias": "Drag the Words",
|
|
583
|
+
"description": "Drag words into inline blanks.",
|
|
584
|
+
"props": [
|
|
585
|
+
{
|
|
586
|
+
"name": "checkId",
|
|
587
|
+
"type": "CheckId",
|
|
588
|
+
"required": true,
|
|
589
|
+
"description": "Stable check id."
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"name": "template",
|
|
593
|
+
"type": "string",
|
|
594
|
+
"required": true,
|
|
595
|
+
"description": "Sentence with *blank* zones."
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"name": "words",
|
|
599
|
+
"type": "string[]",
|
|
600
|
+
"required": true,
|
|
601
|
+
"description": "Draggable word bank."
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"name": "enableRetry",
|
|
605
|
+
"type": "boolean",
|
|
606
|
+
"required": false,
|
|
607
|
+
"description": "Allow retry after completion."
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"name": "enableSolutionsButton",
|
|
611
|
+
"type": "boolean",
|
|
612
|
+
"required": false,
|
|
613
|
+
"description": "Show solution control."
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
"name": "autoCheck",
|
|
617
|
+
"type": "boolean",
|
|
618
|
+
"required": false,
|
|
619
|
+
"description": "Check answers automatically when possible."
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "passingScore",
|
|
623
|
+
"type": "number",
|
|
624
|
+
"required": false,
|
|
625
|
+
"description": "Minimum score to pass."
|
|
626
|
+
}
|
|
627
|
+
],
|
|
628
|
+
"requiredIds": [
|
|
629
|
+
"checkId"
|
|
630
|
+
],
|
|
631
|
+
"parentConstraints": [
|
|
632
|
+
"Lesson",
|
|
633
|
+
"AssessmentSequence",
|
|
634
|
+
"Page",
|
|
635
|
+
"InteractiveBook"
|
|
636
|
+
],
|
|
637
|
+
"a11y": {
|
|
638
|
+
"element": "section",
|
|
639
|
+
"ariaLabel": "Drag the Words",
|
|
640
|
+
"keyboard": "Select word then activate zone.",
|
|
641
|
+
"notes": "H5P Drag the Words equivalent."
|
|
642
|
+
},
|
|
643
|
+
"theming": {
|
|
644
|
+
"surface": "global-inherit",
|
|
645
|
+
"dataAttributes": [
|
|
646
|
+
"data-lk-check-id"
|
|
647
|
+
],
|
|
648
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
649
|
+
},
|
|
650
|
+
"telemetry": {
|
|
651
|
+
"emits": [
|
|
652
|
+
"assessment_answered",
|
|
653
|
+
"assessment_completed"
|
|
654
|
+
],
|
|
655
|
+
"requiresActiveLesson": true
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
"type": "MarkTheWords",
|
|
660
|
+
"category": "assessment",
|
|
661
|
+
"assessmentContract": true,
|
|
662
|
+
"h5pMachineName": "H5P.MarkTheWords",
|
|
663
|
+
"h5pAlias": "Mark the Words",
|
|
664
|
+
"description": "Select correct words in a sentence.",
|
|
665
|
+
"props": [
|
|
666
|
+
{
|
|
667
|
+
"name": "checkId",
|
|
668
|
+
"type": "CheckId",
|
|
669
|
+
"required": true,
|
|
670
|
+
"description": "Stable check id."
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"name": "text",
|
|
674
|
+
"type": "string",
|
|
675
|
+
"required": true,
|
|
676
|
+
"description": "Source text."
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"name": "correctWords",
|
|
680
|
+
"type": "string[]",
|
|
681
|
+
"required": true,
|
|
682
|
+
"description": "Words to mark."
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
"name": "enableRetry",
|
|
686
|
+
"type": "boolean",
|
|
687
|
+
"required": false,
|
|
688
|
+
"description": "Allow retry after completion."
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"name": "enableSolutionsButton",
|
|
692
|
+
"type": "boolean",
|
|
693
|
+
"required": false,
|
|
694
|
+
"description": "Show solution control."
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
"name": "autoCheck",
|
|
698
|
+
"type": "boolean",
|
|
699
|
+
"required": false,
|
|
700
|
+
"description": "Check answers automatically when possible."
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"name": "passingScore",
|
|
704
|
+
"type": "number",
|
|
705
|
+
"required": false,
|
|
706
|
+
"description": "Minimum score to pass."
|
|
707
|
+
}
|
|
708
|
+
],
|
|
709
|
+
"requiredIds": [
|
|
710
|
+
"checkId"
|
|
711
|
+
],
|
|
712
|
+
"parentConstraints": [
|
|
713
|
+
"Lesson",
|
|
714
|
+
"AssessmentSequence",
|
|
715
|
+
"Page",
|
|
716
|
+
"InteractiveBook"
|
|
717
|
+
],
|
|
718
|
+
"a11y": {
|
|
719
|
+
"element": "section",
|
|
720
|
+
"ariaLabel": "Mark the Words",
|
|
721
|
+
"keyboard": "Toggle words with buttons.",
|
|
722
|
+
"notes": "H5P Mark the Words equivalent."
|
|
723
|
+
},
|
|
724
|
+
"theming": {
|
|
725
|
+
"surface": "global-inherit",
|
|
726
|
+
"dataAttributes": [
|
|
727
|
+
"data-lk-check-id"
|
|
728
|
+
],
|
|
729
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
730
|
+
},
|
|
731
|
+
"telemetry": {
|
|
732
|
+
"emits": [
|
|
733
|
+
"assessment_answered",
|
|
734
|
+
"assessment_completed"
|
|
735
|
+
],
|
|
736
|
+
"requiresActiveLesson": true
|
|
737
|
+
}
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"type": "AssessmentSequence",
|
|
741
|
+
"category": "container",
|
|
742
|
+
"h5pMachineName": "H5P.QuestionSet",
|
|
743
|
+
"h5pAlias": "Question Set",
|
|
744
|
+
"description": "Ordered sequence of contract-compliant assessments.",
|
|
745
|
+
"props": [
|
|
746
|
+
{
|
|
747
|
+
"name": "children",
|
|
748
|
+
"type": "ReactNode",
|
|
749
|
+
"required": true,
|
|
750
|
+
"description": "Assessment blocks."
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
"name": "sequential",
|
|
754
|
+
"type": "boolean",
|
|
755
|
+
"required": false,
|
|
756
|
+
"description": "One question at a time."
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
"name": "enableRetry",
|
|
760
|
+
"type": "boolean",
|
|
761
|
+
"required": false,
|
|
762
|
+
"description": "Allow retry after completion."
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"name": "enableSolutionsButton",
|
|
766
|
+
"type": "boolean",
|
|
767
|
+
"required": false,
|
|
768
|
+
"description": "Show solution control."
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
"name": "autoCheck",
|
|
772
|
+
"type": "boolean",
|
|
773
|
+
"required": false,
|
|
774
|
+
"description": "Check answers automatically when possible."
|
|
775
|
+
}
|
|
776
|
+
],
|
|
777
|
+
"requiredIds": [],
|
|
778
|
+
"parentConstraints": [
|
|
779
|
+
"Lesson",
|
|
780
|
+
"Page",
|
|
781
|
+
"InteractiveBook",
|
|
782
|
+
"AssessmentSequence"
|
|
783
|
+
],
|
|
784
|
+
"a11y": {
|
|
785
|
+
"element": "section",
|
|
786
|
+
"ariaLabel": "Assessment sequence",
|
|
787
|
+
"keyboard": "Previous/Next navigation between steps.",
|
|
788
|
+
"notes": "H5P Question Set equivalent."
|
|
789
|
+
},
|
|
790
|
+
"theming": {
|
|
791
|
+
"surface": "global-inherit",
|
|
792
|
+
"stylingNotes": "Container for assessments."
|
|
793
|
+
},
|
|
794
|
+
"telemetry": {
|
|
795
|
+
"emits": [],
|
|
796
|
+
"manualTracking": "Child assessments emit assessment_* events."
|
|
797
|
+
},
|
|
798
|
+
"compoundContract": true,
|
|
799
|
+
"allowedChildTypes": [
|
|
800
|
+
"TrueFalse",
|
|
801
|
+
"FillInTheBlanks",
|
|
802
|
+
"DragAndDrop",
|
|
803
|
+
"DragTheWords",
|
|
804
|
+
"MarkTheWords",
|
|
805
|
+
"Quiz",
|
|
806
|
+
"KnowledgeCheck",
|
|
807
|
+
"FindHotspot",
|
|
808
|
+
"FindMultipleHotspots"
|
|
809
|
+
],
|
|
810
|
+
"maxNestingDepth": 1
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"type": "Text",
|
|
814
|
+
"category": "content",
|
|
815
|
+
"description": "Paragraph text content.",
|
|
816
|
+
"props": [
|
|
817
|
+
{
|
|
818
|
+
"name": "blockId",
|
|
819
|
+
"type": "BlockId",
|
|
820
|
+
"required": false,
|
|
821
|
+
"description": "Stable block id."
|
|
822
|
+
},
|
|
823
|
+
{
|
|
824
|
+
"name": "children",
|
|
825
|
+
"type": "ReactNode",
|
|
826
|
+
"required": true,
|
|
827
|
+
"description": "Text body."
|
|
828
|
+
}
|
|
829
|
+
],
|
|
830
|
+
"requiredIds": [],
|
|
831
|
+
"parentConstraints": [
|
|
832
|
+
"Lesson",
|
|
833
|
+
"Page",
|
|
834
|
+
"InteractiveBook",
|
|
835
|
+
"AssessmentSequence"
|
|
836
|
+
],
|
|
837
|
+
"a11y": {
|
|
838
|
+
"element": "p",
|
|
839
|
+
"ariaLabel": "Text",
|
|
840
|
+
"keyboard": "N/A",
|
|
841
|
+
"notes": "Semantic paragraph."
|
|
842
|
+
},
|
|
843
|
+
"theming": {
|
|
844
|
+
"surface": "global-inherit",
|
|
845
|
+
"stylingNotes": "Inherits theme."
|
|
846
|
+
},
|
|
847
|
+
"telemetry": {
|
|
848
|
+
"emits": []
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"type": "Heading",
|
|
853
|
+
"category": "content",
|
|
854
|
+
"description": "Heading levels 1–3.",
|
|
855
|
+
"props": [
|
|
856
|
+
{
|
|
857
|
+
"name": "blockId",
|
|
858
|
+
"type": "BlockId",
|
|
859
|
+
"required": false,
|
|
860
|
+
"description": "Stable block id."
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
"name": "level",
|
|
864
|
+
"type": "1 | 2 | 3",
|
|
865
|
+
"required": true,
|
|
866
|
+
"description": "Heading level."
|
|
867
|
+
},
|
|
868
|
+
{
|
|
869
|
+
"name": "children",
|
|
870
|
+
"type": "ReactNode",
|
|
871
|
+
"required": true,
|
|
872
|
+
"description": "Heading text."
|
|
873
|
+
}
|
|
874
|
+
],
|
|
875
|
+
"requiredIds": [],
|
|
876
|
+
"parentConstraints": [
|
|
877
|
+
"Lesson",
|
|
878
|
+
"Page",
|
|
879
|
+
"InteractiveBook",
|
|
880
|
+
"AssessmentSequence"
|
|
881
|
+
],
|
|
882
|
+
"a11y": {
|
|
883
|
+
"element": "h1-h3",
|
|
884
|
+
"ariaLabel": "Heading",
|
|
885
|
+
"keyboard": "N/A",
|
|
886
|
+
"notes": "Use one level per outline."
|
|
887
|
+
},
|
|
888
|
+
"theming": {
|
|
889
|
+
"surface": "global-inherit",
|
|
890
|
+
"stylingNotes": "Inherits theme."
|
|
891
|
+
},
|
|
892
|
+
"telemetry": {
|
|
893
|
+
"emits": []
|
|
894
|
+
}
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
"type": "Image",
|
|
898
|
+
"category": "content",
|
|
899
|
+
"description": "Image with required alt text.",
|
|
900
|
+
"props": [
|
|
901
|
+
{
|
|
902
|
+
"name": "blockId",
|
|
903
|
+
"type": "BlockId",
|
|
904
|
+
"required": false,
|
|
905
|
+
"description": "Stable block id."
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
"name": "src",
|
|
909
|
+
"type": "string",
|
|
910
|
+
"required": true,
|
|
911
|
+
"description": "Image URL."
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"name": "alt",
|
|
915
|
+
"type": "string",
|
|
916
|
+
"required": true,
|
|
917
|
+
"description": "Alt text."
|
|
918
|
+
}
|
|
919
|
+
],
|
|
920
|
+
"requiredIds": [],
|
|
921
|
+
"parentConstraints": [
|
|
922
|
+
"Lesson",
|
|
923
|
+
"Page",
|
|
924
|
+
"InteractiveBook",
|
|
925
|
+
"AssessmentSequence"
|
|
926
|
+
],
|
|
927
|
+
"a11y": {
|
|
928
|
+
"element": "img",
|
|
929
|
+
"ariaLabel": "Image",
|
|
930
|
+
"keyboard": "N/A",
|
|
931
|
+
"notes": "Requires alt."
|
|
932
|
+
},
|
|
933
|
+
"theming": {
|
|
934
|
+
"surface": "global-inherit",
|
|
935
|
+
"stylingNotes": "Responsive max-width."
|
|
936
|
+
},
|
|
937
|
+
"telemetry": {
|
|
938
|
+
"emits": []
|
|
939
|
+
}
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
"type": "Page",
|
|
943
|
+
"category": "container",
|
|
944
|
+
"compoundContract": true,
|
|
945
|
+
"h5pMachineName": "H5P.Column",
|
|
946
|
+
"h5pAlias": "Column",
|
|
947
|
+
"description": "Column layout container (H5P Column / Page).",
|
|
948
|
+
"allowedChildTypes": [
|
|
949
|
+
"Text",
|
|
950
|
+
"Heading",
|
|
951
|
+
"Image",
|
|
952
|
+
"Scenario",
|
|
953
|
+
"Reflection",
|
|
954
|
+
"Quiz",
|
|
955
|
+
"KnowledgeCheck",
|
|
956
|
+
"TrueFalse",
|
|
957
|
+
"FillInTheBlanks",
|
|
958
|
+
"DragAndDrop",
|
|
959
|
+
"DragTheWords",
|
|
960
|
+
"MarkTheWords",
|
|
961
|
+
"Accordion",
|
|
962
|
+
"DialogCards",
|
|
963
|
+
"Flashcards",
|
|
964
|
+
"ImageHotspots",
|
|
965
|
+
"FindHotspot",
|
|
966
|
+
"FindMultipleHotspots",
|
|
967
|
+
"ImageSlider",
|
|
968
|
+
"ProgressTracker"
|
|
969
|
+
],
|
|
970
|
+
"maxNestingDepth": 1,
|
|
971
|
+
"props": [
|
|
972
|
+
{
|
|
973
|
+
"name": "blockId",
|
|
974
|
+
"type": "BlockId",
|
|
975
|
+
"required": true,
|
|
976
|
+
"description": "Stable block id."
|
|
977
|
+
},
|
|
978
|
+
{
|
|
979
|
+
"name": "title",
|
|
980
|
+
"type": "string",
|
|
981
|
+
"required": false,
|
|
982
|
+
"description": "Page title."
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
"name": "children",
|
|
986
|
+
"type": "ReactNode",
|
|
987
|
+
"required": true,
|
|
988
|
+
"description": "Page content."
|
|
989
|
+
}
|
|
990
|
+
],
|
|
991
|
+
"requiredIds": [],
|
|
992
|
+
"optionalIds": [
|
|
993
|
+
"blockId"
|
|
994
|
+
],
|
|
995
|
+
"parentConstraints": [
|
|
996
|
+
"Lesson",
|
|
997
|
+
"InteractiveBook"
|
|
998
|
+
],
|
|
999
|
+
"a11y": {
|
|
1000
|
+
"element": "section",
|
|
1001
|
+
"ariaLabel": "Page",
|
|
1002
|
+
"keyboard": "N/A",
|
|
1003
|
+
"notes": "H5P Column equivalent."
|
|
1004
|
+
},
|
|
1005
|
+
"theming": {
|
|
1006
|
+
"surface": "global-inherit",
|
|
1007
|
+
"stylingNotes": "Container."
|
|
1008
|
+
},
|
|
1009
|
+
"telemetry": {
|
|
1010
|
+
"emits": [
|
|
1011
|
+
"compound_page_viewed"
|
|
1012
|
+
],
|
|
1013
|
+
"requiresActiveLesson": true
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
1016
|
+
{
|
|
1017
|
+
"type": "InteractiveBook",
|
|
1018
|
+
"category": "container",
|
|
1019
|
+
"compoundContract": true,
|
|
1020
|
+
"h5pMachineName": "H5P.InteractiveBook",
|
|
1021
|
+
"h5pAlias": "Interactive Book",
|
|
1022
|
+
"description": "Multi-page book with chapter navigation.",
|
|
1023
|
+
"allowedChildTypes": [
|
|
1024
|
+
"Page"
|
|
1025
|
+
],
|
|
1026
|
+
"maxNestingDepth": 2,
|
|
1027
|
+
"props": [
|
|
1028
|
+
{
|
|
1029
|
+
"name": "blockId",
|
|
1030
|
+
"type": "BlockId",
|
|
1031
|
+
"required": true,
|
|
1032
|
+
"description": "Stable block id."
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
"name": "title",
|
|
1036
|
+
"type": "string",
|
|
1037
|
+
"required": true,
|
|
1038
|
+
"description": "Book title."
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
"name": "showBookScore",
|
|
1042
|
+
"type": "boolean",
|
|
1043
|
+
"required": false,
|
|
1044
|
+
"description": "Show aggregate score."
|
|
1045
|
+
},
|
|
1046
|
+
{
|
|
1047
|
+
"name": "children",
|
|
1048
|
+
"type": "Page[]",
|
|
1049
|
+
"required": true,
|
|
1050
|
+
"description": "Page chapters."
|
|
1051
|
+
}
|
|
1052
|
+
],
|
|
1053
|
+
"requiredIds": [
|
|
1054
|
+
"blockId"
|
|
1055
|
+
],
|
|
1056
|
+
"parentConstraints": [
|
|
1057
|
+
"Lesson"
|
|
1058
|
+
],
|
|
1059
|
+
"a11y": {
|
|
1060
|
+
"element": "section",
|
|
1061
|
+
"ariaLabel": "Interactive book",
|
|
1062
|
+
"keyboard": "Previous/Next chapter navigation.",
|
|
1063
|
+
"notes": "H5P Interactive Book equivalent."
|
|
1064
|
+
},
|
|
1065
|
+
"theming": {
|
|
1066
|
+
"surface": "global-inherit",
|
|
1067
|
+
"stylingNotes": "Book chrome."
|
|
1068
|
+
},
|
|
1069
|
+
"telemetry": {
|
|
1070
|
+
"emits": [
|
|
1071
|
+
"book_page_viewed"
|
|
1072
|
+
],
|
|
1073
|
+
"requiresActiveLesson": true
|
|
1074
|
+
}
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
"type": "Accordion",
|
|
1078
|
+
"category": "content",
|
|
1079
|
+
"h5pMachineName": "H5P.Accordion",
|
|
1080
|
+
"h5pAlias": "Accordion",
|
|
1081
|
+
"description": "Expandable sections.",
|
|
1082
|
+
"props": [
|
|
1083
|
+
{
|
|
1084
|
+
"name": "blockId",
|
|
1085
|
+
"type": "BlockId",
|
|
1086
|
+
"required": true,
|
|
1087
|
+
"description": "Stable block id."
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
"name": "sections",
|
|
1091
|
+
"type": "AccordionSection[]",
|
|
1092
|
+
"required": true,
|
|
1093
|
+
"description": "Sections."
|
|
1094
|
+
}
|
|
1095
|
+
],
|
|
1096
|
+
"requiredIds": [
|
|
1097
|
+
"blockId"
|
|
1098
|
+
],
|
|
1099
|
+
"parentConstraints": [
|
|
1100
|
+
"Lesson",
|
|
1101
|
+
"Page",
|
|
1102
|
+
"InteractiveBook",
|
|
1103
|
+
"AssessmentSequence"
|
|
1104
|
+
],
|
|
1105
|
+
"a11y": {
|
|
1106
|
+
"element": "section",
|
|
1107
|
+
"ariaLabel": "Accordion",
|
|
1108
|
+
"keyboard": "Button toggles sections.",
|
|
1109
|
+
"notes": "No nested accordions."
|
|
1110
|
+
},
|
|
1111
|
+
"theming": {
|
|
1112
|
+
"surface": "global-inherit",
|
|
1113
|
+
"stylingNotes": "Disclosure pattern."
|
|
1114
|
+
},
|
|
1115
|
+
"telemetry": {
|
|
1116
|
+
"emits": [
|
|
1117
|
+
"accordion_section_toggled"
|
|
1118
|
+
]
|
|
1119
|
+
}
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
"type": "DialogCards",
|
|
1123
|
+
"category": "content",
|
|
1124
|
+
"h5pMachineName": "H5P.Dialogcards",
|
|
1125
|
+
"h5pAlias": "Dialog Cards",
|
|
1126
|
+
"description": "Flip cards with front/back text.",
|
|
1127
|
+
"props": [
|
|
1128
|
+
{
|
|
1129
|
+
"name": "blockId",
|
|
1130
|
+
"type": "BlockId",
|
|
1131
|
+
"required": true,
|
|
1132
|
+
"description": "Stable block id."
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"name": "cards",
|
|
1136
|
+
"type": "DialogCard[]",
|
|
1137
|
+
"required": true,
|
|
1138
|
+
"description": "Cards."
|
|
1139
|
+
}
|
|
1140
|
+
],
|
|
1141
|
+
"requiredIds": [
|
|
1142
|
+
"blockId"
|
|
1143
|
+
],
|
|
1144
|
+
"parentConstraints": [
|
|
1145
|
+
"Lesson",
|
|
1146
|
+
"Page",
|
|
1147
|
+
"InteractiveBook",
|
|
1148
|
+
"AssessmentSequence"
|
|
1149
|
+
],
|
|
1150
|
+
"a11y": {
|
|
1151
|
+
"element": "section",
|
|
1152
|
+
"ariaLabel": "Dialog cards",
|
|
1153
|
+
"keyboard": "Flip and navigate cards.",
|
|
1154
|
+
"notes": "Reduced motion safe."
|
|
1155
|
+
},
|
|
1156
|
+
"theming": {
|
|
1157
|
+
"surface": "global-inherit",
|
|
1158
|
+
"stylingNotes": "Card flip."
|
|
1159
|
+
},
|
|
1160
|
+
"telemetry": {
|
|
1161
|
+
"emits": []
|
|
1162
|
+
}
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
"type": "Flashcards",
|
|
1166
|
+
"category": "content",
|
|
1167
|
+
"h5pMachineName": "H5P.Flashcards",
|
|
1168
|
+
"h5pAlias": "Flashcards",
|
|
1169
|
+
"description": "Study flashcards with optional self-score.",
|
|
1170
|
+
"props": [
|
|
1171
|
+
{
|
|
1172
|
+
"name": "blockId",
|
|
1173
|
+
"type": "BlockId",
|
|
1174
|
+
"required": true,
|
|
1175
|
+
"description": "Stable block id."
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
"name": "cards",
|
|
1179
|
+
"type": "Flashcard[]",
|
|
1180
|
+
"required": true,
|
|
1181
|
+
"description": "Cards."
|
|
1182
|
+
},
|
|
1183
|
+
{
|
|
1184
|
+
"name": "selfScore",
|
|
1185
|
+
"type": "boolean",
|
|
1186
|
+
"required": false,
|
|
1187
|
+
"description": "Self-score mode."
|
|
1188
|
+
}
|
|
1189
|
+
],
|
|
1190
|
+
"requiredIds": [
|
|
1191
|
+
"blockId"
|
|
1192
|
+
],
|
|
1193
|
+
"parentConstraints": [
|
|
1194
|
+
"Lesson",
|
|
1195
|
+
"Page",
|
|
1196
|
+
"InteractiveBook",
|
|
1197
|
+
"AssessmentSequence"
|
|
1198
|
+
],
|
|
1199
|
+
"a11y": {
|
|
1200
|
+
"element": "section",
|
|
1201
|
+
"ariaLabel": "Flashcards",
|
|
1202
|
+
"keyboard": "Flip and next.",
|
|
1203
|
+
"notes": "Not LMS-scored by default."
|
|
1204
|
+
},
|
|
1205
|
+
"theming": {
|
|
1206
|
+
"surface": "global-inherit",
|
|
1207
|
+
"stylingNotes": "Study mode."
|
|
1208
|
+
},
|
|
1209
|
+
"telemetry": {
|
|
1210
|
+
"emits": [
|
|
1211
|
+
"flashcard_flipped"
|
|
1212
|
+
]
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
{
|
|
1216
|
+
"type": "ImageHotspots",
|
|
1217
|
+
"category": "content",
|
|
1218
|
+
"h5pMachineName": "H5P.ImageHotspots",
|
|
1219
|
+
"h5pAlias": "Image Hotspots",
|
|
1220
|
+
"description": "Image with clickable hotspot popovers.",
|
|
1221
|
+
"props": [
|
|
1222
|
+
{
|
|
1223
|
+
"name": "blockId",
|
|
1224
|
+
"type": "BlockId",
|
|
1225
|
+
"required": true,
|
|
1226
|
+
"description": "Stable block id."
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
"name": "src",
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"required": true,
|
|
1232
|
+
"description": "Image URL."
|
|
1233
|
+
},
|
|
1234
|
+
{
|
|
1235
|
+
"name": "alt",
|
|
1236
|
+
"type": "string",
|
|
1237
|
+
"required": true,
|
|
1238
|
+
"description": "Alt text."
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"name": "hotspots",
|
|
1242
|
+
"type": "HotspotSpec[]",
|
|
1243
|
+
"required": true,
|
|
1244
|
+
"description": "Hotspots."
|
|
1245
|
+
}
|
|
1246
|
+
],
|
|
1247
|
+
"requiredIds": [
|
|
1248
|
+
"blockId"
|
|
1249
|
+
],
|
|
1250
|
+
"parentConstraints": [
|
|
1251
|
+
"Lesson",
|
|
1252
|
+
"Page",
|
|
1253
|
+
"InteractiveBook",
|
|
1254
|
+
"AssessmentSequence"
|
|
1255
|
+
],
|
|
1256
|
+
"a11y": {
|
|
1257
|
+
"element": "section",
|
|
1258
|
+
"ariaLabel": "Image hotspots",
|
|
1259
|
+
"keyboard": "Buttons on image.",
|
|
1260
|
+
"notes": "Popover dialog."
|
|
1261
|
+
},
|
|
1262
|
+
"theming": {
|
|
1263
|
+
"surface": "global-inherit",
|
|
1264
|
+
"stylingNotes": "Positioned hotspots."
|
|
1265
|
+
},
|
|
1266
|
+
"telemetry": {
|
|
1267
|
+
"emits": [
|
|
1268
|
+
"hotspot_opened"
|
|
1269
|
+
]
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
"type": "ImageSlider",
|
|
1274
|
+
"category": "content",
|
|
1275
|
+
"h5pMachineName": "H5P.ImageSlider",
|
|
1276
|
+
"h5pAlias": "Image Slider",
|
|
1277
|
+
"description": "Carousel of images.",
|
|
1278
|
+
"props": [
|
|
1279
|
+
{
|
|
1280
|
+
"name": "blockId",
|
|
1281
|
+
"type": "BlockId",
|
|
1282
|
+
"required": true,
|
|
1283
|
+
"description": "Stable block id."
|
|
1284
|
+
},
|
|
1285
|
+
{
|
|
1286
|
+
"name": "slides",
|
|
1287
|
+
"type": "ImageSlide[]",
|
|
1288
|
+
"required": true,
|
|
1289
|
+
"description": "Slides."
|
|
1290
|
+
}
|
|
1291
|
+
],
|
|
1292
|
+
"requiredIds": [
|
|
1293
|
+
"blockId"
|
|
1294
|
+
],
|
|
1295
|
+
"parentConstraints": [
|
|
1296
|
+
"Lesson",
|
|
1297
|
+
"Page",
|
|
1298
|
+
"InteractiveBook",
|
|
1299
|
+
"AssessmentSequence"
|
|
1300
|
+
],
|
|
1301
|
+
"a11y": {
|
|
1302
|
+
"element": "section",
|
|
1303
|
+
"ariaLabel": "Image slider",
|
|
1304
|
+
"keyboard": "Previous/next slide.",
|
|
1305
|
+
"notes": "Carousel."
|
|
1306
|
+
},
|
|
1307
|
+
"theming": {
|
|
1308
|
+
"surface": "global-inherit",
|
|
1309
|
+
"stylingNotes": "Slider."
|
|
1310
|
+
},
|
|
1311
|
+
"telemetry": {
|
|
1312
|
+
"emits": [
|
|
1313
|
+
"image_slider_changed"
|
|
1314
|
+
]
|
|
1315
|
+
}
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
"type": "FindHotspot",
|
|
1319
|
+
"category": "assessment",
|
|
1320
|
+
"assessmentContract": true,
|
|
1321
|
+
"h5pMachineName": "H5P.ImageHotspotQuestion",
|
|
1322
|
+
"h5pAlias": "Find the Hotspot",
|
|
1323
|
+
"description": "Select the correct region on an image.",
|
|
1324
|
+
"props": [
|
|
1325
|
+
{
|
|
1326
|
+
"name": "checkId",
|
|
1327
|
+
"type": "CheckId",
|
|
1328
|
+
"required": true,
|
|
1329
|
+
"description": "Stable check id."
|
|
1330
|
+
},
|
|
1331
|
+
{
|
|
1332
|
+
"name": "src",
|
|
1333
|
+
"type": "string",
|
|
1334
|
+
"required": true,
|
|
1335
|
+
"description": "Image URL."
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
"name": "alt",
|
|
1339
|
+
"type": "string",
|
|
1340
|
+
"required": true,
|
|
1341
|
+
"description": "Alt text."
|
|
1342
|
+
},
|
|
1343
|
+
{
|
|
1344
|
+
"name": "targets",
|
|
1345
|
+
"type": "HotspotTarget[]",
|
|
1346
|
+
"required": true,
|
|
1347
|
+
"description": "Targets."
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
"name": "correctTargetId",
|
|
1351
|
+
"type": "string",
|
|
1352
|
+
"required": true,
|
|
1353
|
+
"description": "Correct target id."
|
|
1354
|
+
},
|
|
1355
|
+
{
|
|
1356
|
+
"name": "enableRetry",
|
|
1357
|
+
"type": "boolean",
|
|
1358
|
+
"required": false,
|
|
1359
|
+
"description": "Allow retry after completion."
|
|
1360
|
+
},
|
|
1361
|
+
{
|
|
1362
|
+
"name": "enableSolutionsButton",
|
|
1363
|
+
"type": "boolean",
|
|
1364
|
+
"required": false,
|
|
1365
|
+
"description": "Show solution control."
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
"name": "autoCheck",
|
|
1369
|
+
"type": "boolean",
|
|
1370
|
+
"required": false,
|
|
1371
|
+
"description": "Check answers automatically when possible."
|
|
1372
|
+
},
|
|
1373
|
+
{
|
|
1374
|
+
"name": "passingScore",
|
|
1375
|
+
"type": "number",
|
|
1376
|
+
"required": false,
|
|
1377
|
+
"description": "Minimum score to pass."
|
|
1378
|
+
}
|
|
1379
|
+
],
|
|
1380
|
+
"requiredIds": [
|
|
1381
|
+
"checkId"
|
|
1382
|
+
],
|
|
1383
|
+
"parentConstraints": [
|
|
1384
|
+
"Lesson",
|
|
1385
|
+
"Page",
|
|
1386
|
+
"InteractiveBook",
|
|
1387
|
+
"AssessmentSequence"
|
|
1388
|
+
],
|
|
1389
|
+
"a11y": {
|
|
1390
|
+
"element": "section",
|
|
1391
|
+
"ariaLabel": "Find the hotspot",
|
|
1392
|
+
"keyboard": "Select target buttons.",
|
|
1393
|
+
"notes": "Scored."
|
|
1394
|
+
},
|
|
1395
|
+
"theming": {
|
|
1396
|
+
"surface": "global-inherit",
|
|
1397
|
+
"dataAttributes": [
|
|
1398
|
+
"data-lk-check-id"
|
|
1399
|
+
],
|
|
1400
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
1401
|
+
},
|
|
1402
|
+
"telemetry": {
|
|
1403
|
+
"emits": [
|
|
1404
|
+
"assessment_answered",
|
|
1405
|
+
"assessment_completed"
|
|
1406
|
+
],
|
|
1407
|
+
"requiresActiveLesson": true
|
|
1408
|
+
}
|
|
1409
|
+
},
|
|
1410
|
+
{
|
|
1411
|
+
"type": "FindMultipleHotspots",
|
|
1412
|
+
"category": "assessment",
|
|
1413
|
+
"assessmentContract": true,
|
|
1414
|
+
"h5pMachineName": "H5P.ImageMultipleHotspotQuestion",
|
|
1415
|
+
"h5pAlias": "Find Multiple Hotspots",
|
|
1416
|
+
"description": "Select all correct regions on an image.",
|
|
1417
|
+
"props": [
|
|
1418
|
+
{
|
|
1419
|
+
"name": "checkId",
|
|
1420
|
+
"type": "CheckId",
|
|
1421
|
+
"required": true,
|
|
1422
|
+
"description": "Stable check id."
|
|
1423
|
+
},
|
|
1424
|
+
{
|
|
1425
|
+
"name": "src",
|
|
1426
|
+
"type": "string",
|
|
1427
|
+
"required": true,
|
|
1428
|
+
"description": "Image URL."
|
|
1429
|
+
},
|
|
1430
|
+
{
|
|
1431
|
+
"name": "alt",
|
|
1432
|
+
"type": "string",
|
|
1433
|
+
"required": true,
|
|
1434
|
+
"description": "Alt text."
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
"name": "targets",
|
|
1438
|
+
"type": "HotspotTarget[]",
|
|
1439
|
+
"required": true,
|
|
1440
|
+
"description": "Targets."
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"name": "correctTargetIds",
|
|
1444
|
+
"type": "string[]",
|
|
1445
|
+
"required": true,
|
|
1446
|
+
"description": "Correct target ids."
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
"name": "enableRetry",
|
|
1450
|
+
"type": "boolean",
|
|
1451
|
+
"required": false,
|
|
1452
|
+
"description": "Allow retry after completion."
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"name": "enableSolutionsButton",
|
|
1456
|
+
"type": "boolean",
|
|
1457
|
+
"required": false,
|
|
1458
|
+
"description": "Show solution control."
|
|
1459
|
+
},
|
|
1460
|
+
{
|
|
1461
|
+
"name": "autoCheck",
|
|
1462
|
+
"type": "boolean",
|
|
1463
|
+
"required": false,
|
|
1464
|
+
"description": "Check answers automatically when possible."
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"name": "passingScore",
|
|
1468
|
+
"type": "number",
|
|
1469
|
+
"required": false,
|
|
1470
|
+
"description": "Minimum score to pass."
|
|
1471
|
+
}
|
|
1472
|
+
],
|
|
1473
|
+
"requiredIds": [
|
|
1474
|
+
"checkId"
|
|
1475
|
+
],
|
|
1476
|
+
"parentConstraints": [
|
|
1477
|
+
"Lesson",
|
|
1478
|
+
"Page",
|
|
1479
|
+
"InteractiveBook",
|
|
1480
|
+
"AssessmentSequence"
|
|
1481
|
+
],
|
|
1482
|
+
"a11y": {
|
|
1483
|
+
"element": "section",
|
|
1484
|
+
"ariaLabel": "Find multiple hotspots",
|
|
1485
|
+
"keyboard": "Toggle targets.",
|
|
1486
|
+
"notes": "Scored."
|
|
1487
|
+
},
|
|
1488
|
+
"theming": {
|
|
1489
|
+
"surface": "global-inherit",
|
|
1490
|
+
"dataAttributes": [
|
|
1491
|
+
"data-lk-check-id"
|
|
1492
|
+
],
|
|
1493
|
+
"stylingNotes": "Uses data-lk-check-id."
|
|
1494
|
+
},
|
|
1495
|
+
"telemetry": {
|
|
1496
|
+
"emits": [
|
|
1497
|
+
"assessment_answered",
|
|
1498
|
+
"assessment_completed"
|
|
1499
|
+
],
|
|
1500
|
+
"requiresActiveLesson": true
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
]
|
|
1504
|
+
}
|