@lessonkit/react 0.1.0 → 0.1.1
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/dist/index.cjs +9 -6
- package/dist/index.d.cts +11 -3
- package/dist/index.d.ts +11 -3
- package/dist/index.js +8 -6
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -23,6 +23,7 @@ __export(index_exports, {
|
|
|
23
23
|
Course: () => Course,
|
|
24
24
|
KnowledgeCheck: () => KnowledgeCheck,
|
|
25
25
|
Lesson: () => Lesson,
|
|
26
|
+
LessonkitProvider: () => LessonkitProvider,
|
|
26
27
|
ProgressTracker: () => ProgressTracker,
|
|
27
28
|
Quiz: () => Quiz,
|
|
28
29
|
Reflection: () => Reflection,
|
|
@@ -52,20 +53,21 @@ function LessonkitProvider(props) {
|
|
|
52
53
|
}, [config.tracking?.enabled, config.tracking?.sink]);
|
|
53
54
|
const xapi = (0, import_react.useMemo)(() => {
|
|
54
55
|
if (config.xapi?.enabled === false) return null;
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
const baseId = config.courseId ? `urn:lessonkit:course:${config.courseId}` : void 0;
|
|
57
|
+
return config.xapi?.client ?? (0, import_xapi.createXAPIClient)({ baseId });
|
|
58
|
+
}, [config.xapi?.enabled, config.xapi?.client, config.courseId]);
|
|
57
59
|
const [completedLessonIds, setCompletedLessonIds] = (0, import_react.useState)(() => /* @__PURE__ */ new Set());
|
|
58
60
|
const [activeLessonId, setActiveLessonId] = (0, import_react.useState)(void 0);
|
|
59
61
|
const [courseCompleted, setCourseCompleted] = (0, import_react.useState)(false);
|
|
60
62
|
const courseIdRef = (0, import_react.useRef)(config.courseId);
|
|
61
63
|
courseIdRef.current = config.courseId;
|
|
62
64
|
const track = (0, import_react.useCallback)(
|
|
63
|
-
(name, data) => {
|
|
65
|
+
(name, data, opts) => {
|
|
64
66
|
tracking.track({
|
|
65
67
|
name,
|
|
66
68
|
timestamp: (0, import_core.nowIso)(),
|
|
67
69
|
courseId: courseIdRef.current,
|
|
68
|
-
lessonId: activeLessonId,
|
|
70
|
+
lessonId: opts?.lessonId ?? activeLessonId,
|
|
69
71
|
data
|
|
70
72
|
});
|
|
71
73
|
},
|
|
@@ -74,7 +76,7 @@ function LessonkitProvider(props) {
|
|
|
74
76
|
const setActiveLesson = (0, import_react.useCallback)(
|
|
75
77
|
(lessonId) => {
|
|
76
78
|
setActiveLessonId(lessonId);
|
|
77
|
-
track("lesson_started", { lessonId });
|
|
79
|
+
track("lesson_started", { lessonId }, { lessonId });
|
|
78
80
|
xapi?.startedLesson({ lessonId });
|
|
79
81
|
},
|
|
80
82
|
[track, xapi]
|
|
@@ -82,7 +84,7 @@ function LessonkitProvider(props) {
|
|
|
82
84
|
const completeLesson = (0, import_react.useCallback)(
|
|
83
85
|
(lessonId) => {
|
|
84
86
|
setCompletedLessonIds((prev) => new Set(prev).add(lessonId));
|
|
85
|
-
track("lesson_completed", { lessonId });
|
|
87
|
+
track("lesson_completed", { lessonId }, { lessonId });
|
|
86
88
|
xapi?.completeLesson({ lessonId });
|
|
87
89
|
},
|
|
88
90
|
[track, xapi]
|
|
@@ -236,6 +238,7 @@ function cryptoRandomId() {
|
|
|
236
238
|
Course,
|
|
237
239
|
KnowledgeCheck,
|
|
238
240
|
Lesson,
|
|
241
|
+
LessonkitProvider,
|
|
239
242
|
ProgressTracker,
|
|
240
243
|
Quiz,
|
|
241
244
|
Reflection,
|
package/dist/index.d.cts
CHANGED
|
@@ -57,13 +57,21 @@ type LessonkitRuntime = {
|
|
|
57
57
|
setActiveLesson: (lessonId: LessonId) => void;
|
|
58
58
|
completeLesson: (lessonId: LessonId) => void;
|
|
59
59
|
completeCourse: () => void;
|
|
60
|
-
track: (name: TelemetryEvent["name"], data?: TelemetryEvent["data"]
|
|
60
|
+
track: (name: TelemetryEvent["name"], data?: TelemetryEvent["data"], opts?: {
|
|
61
|
+
lessonId?: LessonId;
|
|
62
|
+
}) => void;
|
|
61
63
|
};
|
|
64
|
+
declare function LessonkitProvider(props: {
|
|
65
|
+
config?: LessonkitConfig;
|
|
66
|
+
children: React.ReactNode;
|
|
67
|
+
}): react_jsx_runtime.JSX.Element;
|
|
62
68
|
|
|
63
69
|
declare function useLessonkit(): LessonkitRuntime;
|
|
64
70
|
declare function useProgress(): ProgressState;
|
|
65
71
|
declare function useTracking(): {
|
|
66
|
-
track: (name: _lessonkit_core.TelemetryEvent["name"], data?: _lessonkit_core.TelemetryEvent["data"]
|
|
72
|
+
track: (name: _lessonkit_core.TelemetryEvent["name"], data?: _lessonkit_core.TelemetryEvent["data"], opts?: {
|
|
73
|
+
lessonId?: _lessonkit_core.LessonId;
|
|
74
|
+
}) => void;
|
|
67
75
|
};
|
|
68
76
|
declare function useCompletion(): {
|
|
69
77
|
completeLesson: (lessonId: _lessonkit_core.LessonId) => void;
|
|
@@ -81,4 +89,4 @@ declare function useQuizState(): {
|
|
|
81
89
|
}) => void;
|
|
82
90
|
};
|
|
83
91
|
|
|
84
|
-
export { Course, KnowledgeCheck, Lesson, ProgressTracker, Quiz, Reflection, Scenario, useCompletion, useLessonkit, useProgress, useQuizState, useTracking };
|
|
92
|
+
export { Course, KnowledgeCheck, Lesson, type LessonkitConfig, LessonkitProvider, type LessonkitRuntime, ProgressTracker, Quiz, Reflection, Scenario, useCompletion, useLessonkit, useProgress, useQuizState, useTracking };
|
package/dist/index.d.ts
CHANGED
|
@@ -57,13 +57,21 @@ type LessonkitRuntime = {
|
|
|
57
57
|
setActiveLesson: (lessonId: LessonId) => void;
|
|
58
58
|
completeLesson: (lessonId: LessonId) => void;
|
|
59
59
|
completeCourse: () => void;
|
|
60
|
-
track: (name: TelemetryEvent["name"], data?: TelemetryEvent["data"]
|
|
60
|
+
track: (name: TelemetryEvent["name"], data?: TelemetryEvent["data"], opts?: {
|
|
61
|
+
lessonId?: LessonId;
|
|
62
|
+
}) => void;
|
|
61
63
|
};
|
|
64
|
+
declare function LessonkitProvider(props: {
|
|
65
|
+
config?: LessonkitConfig;
|
|
66
|
+
children: React.ReactNode;
|
|
67
|
+
}): react_jsx_runtime.JSX.Element;
|
|
62
68
|
|
|
63
69
|
declare function useLessonkit(): LessonkitRuntime;
|
|
64
70
|
declare function useProgress(): ProgressState;
|
|
65
71
|
declare function useTracking(): {
|
|
66
|
-
track: (name: _lessonkit_core.TelemetryEvent["name"], data?: _lessonkit_core.TelemetryEvent["data"]
|
|
72
|
+
track: (name: _lessonkit_core.TelemetryEvent["name"], data?: _lessonkit_core.TelemetryEvent["data"], opts?: {
|
|
73
|
+
lessonId?: _lessonkit_core.LessonId;
|
|
74
|
+
}) => void;
|
|
67
75
|
};
|
|
68
76
|
declare function useCompletion(): {
|
|
69
77
|
completeLesson: (lessonId: _lessonkit_core.LessonId) => void;
|
|
@@ -81,4 +89,4 @@ declare function useQuizState(): {
|
|
|
81
89
|
}) => void;
|
|
82
90
|
};
|
|
83
91
|
|
|
84
|
-
export { Course, KnowledgeCheck, Lesson, ProgressTracker, Quiz, Reflection, Scenario, useCompletion, useLessonkit, useProgress, useQuizState, useTracking };
|
|
92
|
+
export { Course, KnowledgeCheck, Lesson, type LessonkitConfig, LessonkitProvider, type LessonkitRuntime, ProgressTracker, Quiz, Reflection, Scenario, useCompletion, useLessonkit, useProgress, useQuizState, useTracking };
|
package/dist/index.js
CHANGED
|
@@ -15,20 +15,21 @@ function LessonkitProvider(props) {
|
|
|
15
15
|
}, [config.tracking?.enabled, config.tracking?.sink]);
|
|
16
16
|
const xapi = useMemo(() => {
|
|
17
17
|
if (config.xapi?.enabled === false) return null;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const baseId = config.courseId ? `urn:lessonkit:course:${config.courseId}` : void 0;
|
|
19
|
+
return config.xapi?.client ?? createXAPIClient({ baseId });
|
|
20
|
+
}, [config.xapi?.enabled, config.xapi?.client, config.courseId]);
|
|
20
21
|
const [completedLessonIds, setCompletedLessonIds] = useState(() => /* @__PURE__ */ new Set());
|
|
21
22
|
const [activeLessonId, setActiveLessonId] = useState(void 0);
|
|
22
23
|
const [courseCompleted, setCourseCompleted] = useState(false);
|
|
23
24
|
const courseIdRef = useRef(config.courseId);
|
|
24
25
|
courseIdRef.current = config.courseId;
|
|
25
26
|
const track = useCallback(
|
|
26
|
-
(name, data) => {
|
|
27
|
+
(name, data, opts) => {
|
|
27
28
|
tracking.track({
|
|
28
29
|
name,
|
|
29
30
|
timestamp: nowIso(),
|
|
30
31
|
courseId: courseIdRef.current,
|
|
31
|
-
lessonId: activeLessonId,
|
|
32
|
+
lessonId: opts?.lessonId ?? activeLessonId,
|
|
32
33
|
data
|
|
33
34
|
});
|
|
34
35
|
},
|
|
@@ -37,7 +38,7 @@ function LessonkitProvider(props) {
|
|
|
37
38
|
const setActiveLesson = useCallback(
|
|
38
39
|
(lessonId) => {
|
|
39
40
|
setActiveLessonId(lessonId);
|
|
40
|
-
track("lesson_started", { lessonId });
|
|
41
|
+
track("lesson_started", { lessonId }, { lessonId });
|
|
41
42
|
xapi?.startedLesson({ lessonId });
|
|
42
43
|
},
|
|
43
44
|
[track, xapi]
|
|
@@ -45,7 +46,7 @@ function LessonkitProvider(props) {
|
|
|
45
46
|
const completeLesson = useCallback(
|
|
46
47
|
(lessonId) => {
|
|
47
48
|
setCompletedLessonIds((prev) => new Set(prev).add(lessonId));
|
|
48
|
-
track("lesson_completed", { lessonId });
|
|
49
|
+
track("lesson_completed", { lessonId }, { lessonId });
|
|
49
50
|
xapi?.completeLesson({ lessonId });
|
|
50
51
|
},
|
|
51
52
|
[track, xapi]
|
|
@@ -198,6 +199,7 @@ export {
|
|
|
198
199
|
Course,
|
|
199
200
|
KnowledgeCheck,
|
|
200
201
|
Lesson,
|
|
202
|
+
LessonkitProvider,
|
|
201
203
|
ProgressTracker,
|
|
202
204
|
Quiz,
|
|
203
205
|
Reflection,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lessonkit/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "React components and hooks for building learning experiences with LessonKit.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"react-dom": ">=18"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@lessonkit/core": "0.1.
|
|
53
|
-
"@lessonkit/xapi": "0.1.
|
|
52
|
+
"@lessonkit/core": "0.1.1",
|
|
53
|
+
"@lessonkit/xapi": "0.1.1"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@testing-library/react": "^16.3.0",
|