@cuemath/leap 3.1.21 → 3.1.22-akm-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/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.js +5 -5
- package/dist/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.js.map +1 -1
- package/dist/features/circle-games/leaderboard/enums/leaderboard-type-enum.js +1 -1
- package/dist/features/circle-games/leaderboard/enums/leaderboard-type-enum.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +90 -80
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/no-active-milestone/no-active-milestone.js +44 -34
- package/dist/features/milestone/milestone-list-container/milestone-list/no-active-milestone/no-active-milestone.js.map +1 -1
- package/dist/features/worksheet/worksheet/hooks/use-learnosity-append.js +26 -22
- package/dist/features/worksheet/worksheet/hooks/use-learnosity-append.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +42 -42
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/package.json +1 -1
|
@@ -9,11 +9,11 @@ const k = (t) => {
|
|
|
9
9
|
}, [s, t]), d(() => {
|
|
10
10
|
let m = null;
|
|
11
11
|
r && a && (m = {
|
|
12
|
-
|
|
13
|
-
currentTimestamp: a.
|
|
14
|
-
startTimestamp: a.
|
|
15
|
-
endTimestamp: a.
|
|
16
|
-
leaderboardPlayers: a.
|
|
12
|
+
bi_weekly: {
|
|
13
|
+
currentTimestamp: a.bi_weekly.currentTimestamp,
|
|
14
|
+
startTimestamp: a.bi_weekly.startTimestamp,
|
|
15
|
+
endTimestamp: a.bi_weekly.endTimestamp,
|
|
16
|
+
leaderboardPlayers: a.bi_weekly.leaderboardUsers.map((e) => ({
|
|
17
17
|
userId: e.user_id,
|
|
18
18
|
userAvatar: e.userAvatar,
|
|
19
19
|
username: e.username,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-get-leaderboard-dal.js","sources":["../../../../../../src/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.ts"],"sourcesContent":["import type { IAvatarLayer } from '../../../../ui/avatar/avatar-types';\nimport type {\n ILeaderboardDetails,\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './use-get-leaderboard-dal-types';\n\nimport { useEffect, useState } from 'react';\n\nimport { useGetLeaderboard } from '../../api/get-leaderboard/get-leaderboard';\n\nexport const useGetLeaderboardDal = (\n userId: string,\n): Omit<ReturnType<typeof useGetLeaderboard>, 'data' | 'get'> & {\n data: ILeaderboardDetails | null;\n} => {\n const [leaderboardDetails, setLeaderboardDetails] = useState<ILeaderboardDetails | null>(null);\n const { data, get: getLeaderboards, isProcessed, ...rest } = useGetLeaderboard();\n\n useEffect(() => {\n getLeaderboards('', {\n user_id: userId,\n });\n }, [getLeaderboards, userId]);\n\n useEffect(() => {\n let leaderboard: ILeaderboardDetails | null = null;\n\n if (isProcessed && data) {\n leaderboard = {\n
|
|
1
|
+
{"version":3,"file":"use-get-leaderboard-dal.js","sources":["../../../../../../src/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.ts"],"sourcesContent":["import type { IAvatarLayer } from '../../../../ui/avatar/avatar-types';\nimport type {\n ILeaderboardDetails,\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './use-get-leaderboard-dal-types';\n\nimport { useEffect, useState } from 'react';\n\nimport { useGetLeaderboard } from '../../api/get-leaderboard/get-leaderboard';\n\nexport const useGetLeaderboardDal = (\n userId: string,\n): Omit<ReturnType<typeof useGetLeaderboard>, 'data' | 'get'> & {\n data: ILeaderboardDetails | null;\n} => {\n const [leaderboardDetails, setLeaderboardDetails] = useState<ILeaderboardDetails | null>(null);\n const { data, get: getLeaderboards, isProcessed, ...rest } = useGetLeaderboard();\n\n useEffect(() => {\n getLeaderboards('', {\n user_id: userId,\n });\n }, [getLeaderboards, userId]);\n\n useEffect(() => {\n let leaderboard: ILeaderboardDetails | null = null;\n\n if (isProcessed && data) {\n leaderboard = {\n bi_weekly: {\n currentTimestamp: data.bi_weekly.currentTimestamp,\n startTimestamp: data.bi_weekly.startTimestamp,\n endTimestamp: data.bi_weekly.endTimestamp,\n leaderboardPlayers: data.bi_weekly.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n points: player.points!,\n };\n }) as ILeaderboardPlayerWithPoints[],\n },\n global: {\n currentTimestamp: data.global.currentTimestamp,\n startTimestamp: data.global.startTimestamp,\n endTimestamp: data.global.endTimestamp,\n leaderboardPlayers: data.global.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n points: player.points!,\n };\n }) as ILeaderboardPlayerWithPoints[],\n },\n globalStreak: {\n currentTimestamp: data.globalStreak.currentTimestamp,\n startTimestamp: data.globalStreak.startTimestamp,\n endTimestamp: data.globalStreak.endTimestamp,\n leaderboardPlayers: data.globalStreak.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n streakDays: player.streak_days!,\n };\n }) as ILeaderboardPlayerWithStreak[],\n },\n };\n }\n setLeaderboardDetails(leaderboard);\n }, [data, isProcessed]);\n\n return { data: leaderboardDetails, isProcessed, ...rest };\n};\n"],"names":["useGetLeaderboardDal","userId","leaderboardDetails","setLeaderboardDetails","useState","data","getLeaderboards","isProcessed","rest","useGetLeaderboard","useEffect","leaderboard","player"],"mappings":";;AAWa,MAAAA,IAAuB,CAClCC,MAGG;AACH,QAAM,CAACC,GAAoBC,CAAqB,IAAIC,EAAqC,IAAI,GACvF,EAAE,MAAAC,GAAM,KAAKC,GAAiB,aAAAC,GAAa,GAAGC,EAAA,IAASC;AAE7D,SAAAC,EAAU,MAAM;AACd,IAAAJ,EAAgB,IAAI;AAAA,MAClB,SAASL;AAAA,IAAA,CACV;AAAA,EAAA,GACA,CAACK,GAAiBL,CAAM,CAAC,GAE5BS,EAAU,MAAM;AACd,QAAIC,IAA0C;AAE9C,IAAIJ,KAAeF,MACHM,IAAA;AAAA,MACZ,WAAW;AAAA,QACT,kBAAkBN,EAAK,UAAU;AAAA,QACjC,gBAAgBA,EAAK,UAAU;AAAA,QAC/B,cAAcA,EAAK,UAAU;AAAA,QAC7B,oBAAoBA,EAAK,UAAU,iBAAiB,IAAI,CAAUO,OACzD;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,QAAQA,EAAO;AAAA,QAAA,EAElB;AAAA,MACH;AAAA,MACA,QAAQ;AAAA,QACN,kBAAkBP,EAAK,OAAO;AAAA,QAC9B,gBAAgBA,EAAK,OAAO;AAAA,QAC5B,cAAcA,EAAK,OAAO;AAAA,QAC1B,oBAAoBA,EAAK,OAAO,iBAAiB,IAAI,CAAUO,OACtD;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,QAAQA,EAAO;AAAA,QAAA,EAElB;AAAA,MACH;AAAA,MACA,cAAc;AAAA,QACZ,kBAAkBP,EAAK,aAAa;AAAA,QACpC,gBAAgBA,EAAK,aAAa;AAAA,QAClC,cAAcA,EAAK,aAAa;AAAA,QAChC,oBAAoBA,EAAK,aAAa,iBAAiB,IAAI,CAAUO,OAC5D;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,YAAYA,EAAO;AAAA,QAAA,EAEtB;AAAA,MACH;AAAA,IAAA,IAGJT,EAAsBQ,CAAW;AAAA,EAAA,GAChC,CAACN,GAAME,CAAW,CAAC,GAEf,EAAE,MAAML,GAAoB,aAAAK,GAAa,GAAGC,EAAK;AAC1D;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _ = /* @__PURE__ */ ((l) => (l.BI_WEEKLY = "
|
|
1
|
+
var _ = /* @__PURE__ */ ((l) => (l.BI_WEEKLY = "bi_weekly", l.ALL_TIME = "global", l.ALL_TIME_STREAK = "globalStreak", l))(_ || {});
|
|
2
2
|
export {
|
|
3
3
|
_ as ELeaderboardType
|
|
4
4
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaderboard-type-enum.js","sources":["../../../../../src/features/circle-games/leaderboard/enums/leaderboard-type-enum.ts"],"sourcesContent":["export enum ELeaderboardType {\n BI_WEEKLY = '
|
|
1
|
+
{"version":3,"file":"leaderboard-type-enum.js","sources":["../../../../../src/features/circle-games/leaderboard/enums/leaderboard-type-enum.ts"],"sourcesContent":["export enum ELeaderboardType {\n BI_WEEKLY = 'bi_weekly',\n ALL_TIME = 'global',\n ALL_TIME_STREAK = 'globalStreak',\n}\n"],"names":["ELeaderboardType"],"mappings":"AAAY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,WAAW,UACXA,EAAA,kBAAkB,gBAHRA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -1,136 +1,146 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import Q, { memo as Y, useCallback as
|
|
1
|
+
import { jsxs as i, Fragment as K, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import Q, { memo as Y, useCallback as f } from "react";
|
|
3
3
|
import Z from "../../../hooks/use-lazy-ref.js";
|
|
4
|
+
import ee from "../../../ui/arrow-tooltip/arrow-tooltip.js";
|
|
4
5
|
import h from "../../../ui/buttons/text-button/text-button.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
6
|
+
import m from "../../../ui/layout/flex-view.js";
|
|
7
|
+
import te from "../../../ui/separator/separator.js";
|
|
8
|
+
import oe from "../../../ui/text/text.js";
|
|
9
|
+
import ne from "./milestone-widget/milestone-widget.js";
|
|
10
|
+
import re from "./no-active-milestone/no-active-milestone.js";
|
|
10
11
|
import ie from "../../../../node_modules/uuid/dist/esm-browser/v4.js";
|
|
11
|
-
const
|
|
12
|
-
({ milestones:
|
|
12
|
+
const ge = Y(
|
|
13
|
+
({ milestones: t, studentId: A, milestoneType: s, ...u }) => {
|
|
13
14
|
const {
|
|
14
|
-
canCreatePlan:
|
|
15
|
+
canCreatePlan: a,
|
|
15
16
|
isClassOngoing: g,
|
|
16
17
|
isFiltersAdded: C,
|
|
17
18
|
isStudentPresent: M,
|
|
18
19
|
onAddChapter: T,
|
|
19
20
|
onAddOutcome: n,
|
|
20
|
-
onChapterClick:
|
|
21
|
-
onCreatePlan:
|
|
22
|
-
onDelete:
|
|
23
|
-
onDraftPublish:
|
|
24
|
-
onEdit:
|
|
25
|
-
onCreateMilestoneTest:
|
|
26
|
-
onNodeAttempt:
|
|
21
|
+
onChapterClick: v,
|
|
22
|
+
onCreatePlan: r,
|
|
23
|
+
onDelete: w,
|
|
24
|
+
onDraftPublish: N,
|
|
25
|
+
onEdit: b,
|
|
26
|
+
onCreateMilestoneTest: R,
|
|
27
|
+
onNodeAttempt: x,
|
|
27
28
|
onNodeView: D,
|
|
28
29
|
onNodeReview: $,
|
|
29
|
-
onNodeReattempt:
|
|
30
|
-
onNodeReset:
|
|
31
|
-
onNodeUnassign:
|
|
30
|
+
onNodeReattempt: I,
|
|
31
|
+
onNodeReset: P,
|
|
32
|
+
onNodeUnassign: F,
|
|
32
33
|
onAssignResources: k,
|
|
33
34
|
onTestPreview: E,
|
|
34
35
|
onTestReview: S,
|
|
35
|
-
onTestStart:
|
|
36
|
-
activeMilestoneId:
|
|
37
|
-
activeTabId:
|
|
38
|
-
onWidgetTabSelection:
|
|
36
|
+
onTestStart: j,
|
|
37
|
+
activeMilestoneId: y,
|
|
38
|
+
activeTabId: G,
|
|
39
|
+
onWidgetTabSelection: V,
|
|
39
40
|
studentName: c,
|
|
40
|
-
teacherName:
|
|
41
|
-
parentName:
|
|
42
|
-
userType:
|
|
43
|
-
courseStream:
|
|
41
|
+
teacherName: _,
|
|
42
|
+
parentName: z,
|
|
43
|
+
userType: l,
|
|
44
|
+
courseStream: B,
|
|
44
45
|
onNodeAssignAsHomework: H
|
|
45
|
-
} =
|
|
46
|
-
|
|
47
|
-
}, [
|
|
46
|
+
} = u, d = s === "ACTIVE", L = s === "DRAFT", p = Z(ie), O = f(() => {
|
|
47
|
+
r == null || r(p);
|
|
48
|
+
}, [r, p]), W = f(() => {
|
|
48
49
|
n == null || n();
|
|
49
50
|
}, [n]);
|
|
50
|
-
if (!
|
|
51
|
-
const X =
|
|
52
|
-
(
|
|
53
|
-
), U =
|
|
54
|
-
(
|
|
51
|
+
if (!t) return null;
|
|
52
|
+
const X = t.some(
|
|
53
|
+
(o) => o.milestone_state === "ACTIVE"
|
|
54
|
+
), U = t.some(
|
|
55
|
+
(o) => o.milestone_state === "DRAFT"
|
|
55
56
|
);
|
|
56
|
-
return /* @__PURE__ */
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
return /* @__PURE__ */ i(K, { children: [
|
|
58
|
+
d && !X && /* @__PURE__ */ e(m, { $marginBottom: 40, children: /* @__PURE__ */ e(
|
|
59
|
+
re,
|
|
59
60
|
{
|
|
60
|
-
canCreatePlan:
|
|
61
|
+
canCreatePlan: a,
|
|
61
62
|
isDraftMilestonePresent: U,
|
|
62
63
|
isFiltersAdded: C,
|
|
63
|
-
onCreatePlan:
|
|
64
|
+
onCreatePlan: r,
|
|
64
65
|
studentName: c,
|
|
65
|
-
userType:
|
|
66
|
+
userType: l
|
|
66
67
|
}
|
|
67
68
|
) }),
|
|
68
|
-
|
|
69
|
-
/* @__PURE__ */
|
|
69
|
+
d && /* @__PURE__ */ i(m, { $flexDirection: "row", $justifyContent: "space-between", $marginBottom: 16, children: [
|
|
70
|
+
/* @__PURE__ */ i(oe, { $renderAs: "ac4", children: [
|
|
70
71
|
"Goals (",
|
|
71
|
-
|
|
72
|
+
t.length,
|
|
72
73
|
")"
|
|
73
74
|
] }),
|
|
74
|
-
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
|
|
75
|
+
l === "TEACHER" && /* @__PURE__ */ i(m, { $flexDirection: "row", $flexGapX: 1, children: [
|
|
76
|
+
/* @__PURE__ */ e(
|
|
77
|
+
ee,
|
|
77
78
|
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
renderAs: "primary",
|
|
80
|
+
tooltipItem: "Goals can only be added for students who have joined the class",
|
|
81
|
+
hidden: a,
|
|
82
|
+
position: "bottom",
|
|
83
|
+
children: /* @__PURE__ */ e(
|
|
84
|
+
h,
|
|
85
|
+
{
|
|
86
|
+
label: "Create Goal",
|
|
87
|
+
size: "small",
|
|
88
|
+
onClick: O,
|
|
89
|
+
disabled: !a
|
|
90
|
+
}
|
|
91
|
+
)
|
|
82
92
|
}
|
|
83
93
|
),
|
|
84
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ e(h, { label: "Add Milestone", size: "small", onClick: W })
|
|
85
95
|
] })
|
|
86
96
|
] }),
|
|
87
|
-
|
|
88
|
-
const { id: J } =
|
|
89
|
-
return /* @__PURE__ */
|
|
90
|
-
/* @__PURE__ */
|
|
91
|
-
|
|
97
|
+
t.map((o, q) => {
|
|
98
|
+
const { id: J } = o;
|
|
99
|
+
return /* @__PURE__ */ i(Q.Fragment, { children: [
|
|
100
|
+
/* @__PURE__ */ e(
|
|
101
|
+
ne,
|
|
92
102
|
{
|
|
93
|
-
milestone:
|
|
94
|
-
studentId:
|
|
103
|
+
milestone: o,
|
|
104
|
+
studentId: A,
|
|
95
105
|
studentName: c,
|
|
96
|
-
parentName:
|
|
97
|
-
teacherName:
|
|
98
|
-
userType:
|
|
106
|
+
parentName: z,
|
|
107
|
+
teacherName: _,
|
|
108
|
+
userType: l,
|
|
99
109
|
onAddOutcome: n,
|
|
100
|
-
onChapterClick:
|
|
101
|
-
isMilestoneActive:
|
|
110
|
+
onChapterClick: v,
|
|
111
|
+
isMilestoneActive: d || L,
|
|
102
112
|
milestoneType: s,
|
|
103
|
-
onEdit:
|
|
104
|
-
onCreateMilestoneTest:
|
|
113
|
+
onEdit: b,
|
|
114
|
+
onCreateMilestoneTest: R,
|
|
105
115
|
onAddChapter: T,
|
|
106
|
-
onDelete:
|
|
107
|
-
onDraftPublish:
|
|
116
|
+
onDelete: w,
|
|
117
|
+
onDraftPublish: N,
|
|
108
118
|
isClassOngoing: g,
|
|
109
119
|
isStudentPresent: M,
|
|
110
120
|
onAssignResources: k,
|
|
111
|
-
onNodeAttempt:
|
|
121
|
+
onNodeAttempt: x,
|
|
112
122
|
onNodeView: D,
|
|
113
123
|
onNodeReview: $,
|
|
114
|
-
onNodeReattempt:
|
|
115
|
-
onNodeReset:
|
|
116
|
-
onNodeUnassign:
|
|
124
|
+
onNodeReattempt: I,
|
|
125
|
+
onNodeReset: P,
|
|
126
|
+
onNodeUnassign: F,
|
|
117
127
|
onNodeAssignAsHomework: H,
|
|
118
128
|
onTestPreview: E,
|
|
119
129
|
onTestReview: S,
|
|
120
|
-
onTestStart:
|
|
121
|
-
courseStream:
|
|
122
|
-
activeMilestoneId:
|
|
123
|
-
activeTabId:
|
|
124
|
-
onWidgetTabSelection:
|
|
130
|
+
onTestStart: j,
|
|
131
|
+
courseStream: B,
|
|
132
|
+
activeMilestoneId: y,
|
|
133
|
+
activeTabId: G,
|
|
134
|
+
onWidgetTabSelection: V
|
|
125
135
|
}
|
|
126
136
|
),
|
|
127
|
-
q !==
|
|
137
|
+
q !== t.length - 1 && /* @__PURE__ */ e(te, { heightX: 2 })
|
|
128
138
|
] }, `milestone=${J}`);
|
|
129
139
|
})
|
|
130
140
|
] });
|
|
131
141
|
}
|
|
132
142
|
);
|
|
133
143
|
export {
|
|
134
|
-
|
|
144
|
+
ge as default
|
|
135
145
|
};
|
|
136
146
|
//# sourceMappingURL=milestone-list.js.map
|
package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"milestone-list.js","sources":["../../../../../src/features/milestone/milestone-list-container/milestone-list/milestone-list.tsx"],"sourcesContent":["import type { IMilestoneListProps } from './milestone-list-types';\n\nimport React, { memo, useCallback } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport useLazyRef from '../../../hooks/use-lazy-ref';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport MilestoneWidget from './milestone-widget/milestone-widget';\nimport NoActiveMilestone from './no-active-milestone/no-active-milestone';\n\nconst MilestoneList: React.FC<IMilestoneListProps> = memo(\n ({ milestones, studentId, milestoneType, ...restMilestoneListProps }) => {\n const {\n canCreatePlan,\n isClassOngoing,\n isFiltersAdded,\n isStudentPresent,\n onAddChapter,\n onAddOutcome,\n onChapterClick,\n onCreatePlan,\n onDelete,\n onDraftPublish,\n onEdit,\n onCreateMilestoneTest,\n onNodeAttempt,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n onNodeReset,\n onNodeUnassign,\n onAssignResources,\n onTestPreview,\n onTestReview,\n onTestStart,\n activeMilestoneId,\n activeTabId,\n onWidgetTabSelection,\n studentName,\n teacherName,\n parentName,\n userType,\n courseStream,\n onNodeAssignAsHomework,\n } = restMilestoneListProps;\n\n const isMilestoneActive = milestoneType === 'ACTIVE';\n const isDraftMilestone = milestoneType === 'DRAFT';\n const temporaryMilestoneId = useLazyRef(uuidv4);\n\n const handleCreatePlan = useCallback(() => {\n onCreatePlan?.(temporaryMilestoneId);\n }, [onCreatePlan, temporaryMilestoneId]);\n\n const handleOnAddOutcome = useCallback(() => {\n onAddOutcome?.();\n }, [onAddOutcome]);\n\n if (!milestones) return null;\n\n const activeMilestonePresent = milestones.some(\n milestone => milestone.milestone_state === 'ACTIVE',\n );\n const draftMilestonePresent = milestones.some(\n milestone => milestone.milestone_state === 'DRAFT',\n );\n\n return (\n <>\n {isMilestoneActive && !activeMilestonePresent && (\n <FlexView $marginBottom={40}>\n <NoActiveMilestone\n canCreatePlan={canCreatePlan}\n isDraftMilestonePresent={draftMilestonePresent}\n isFiltersAdded={isFiltersAdded}\n onCreatePlan={onCreatePlan}\n studentName={studentName}\n userType={userType}\n />\n </FlexView>\n )}\n\n {isMilestoneActive && (\n <FlexView $flexDirection=\"row\" $justifyContent=\"space-between\" $marginBottom={16}>\n <Text $renderAs=\"ac4\">Goals ({milestones.length})</Text>\n\n {userType === 'TEACHER' && (\n <FlexView $flexDirection=\"row\" $flexGapX={1}>\n <TextButton\n
|
|
1
|
+
{"version":3,"file":"milestone-list.js","sources":["../../../../../src/features/milestone/milestone-list-container/milestone-list/milestone-list.tsx"],"sourcesContent":["import type { IMilestoneListProps } from './milestone-list-types';\n\nimport React, { memo, useCallback } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport useLazyRef from '../../../hooks/use-lazy-ref';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport MilestoneWidget from './milestone-widget/milestone-widget';\nimport NoActiveMilestone from './no-active-milestone/no-active-milestone';\n\nconst MilestoneList: React.FC<IMilestoneListProps> = memo(\n ({ milestones, studentId, milestoneType, ...restMilestoneListProps }) => {\n const {\n canCreatePlan,\n isClassOngoing,\n isFiltersAdded,\n isStudentPresent,\n onAddChapter,\n onAddOutcome,\n onChapterClick,\n onCreatePlan,\n onDelete,\n onDraftPublish,\n onEdit,\n onCreateMilestoneTest,\n onNodeAttempt,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n onNodeReset,\n onNodeUnassign,\n onAssignResources,\n onTestPreview,\n onTestReview,\n onTestStart,\n activeMilestoneId,\n activeTabId,\n onWidgetTabSelection,\n studentName,\n teacherName,\n parentName,\n userType,\n courseStream,\n onNodeAssignAsHomework,\n } = restMilestoneListProps;\n\n const isMilestoneActive = milestoneType === 'ACTIVE';\n const isDraftMilestone = milestoneType === 'DRAFT';\n const temporaryMilestoneId = useLazyRef(uuidv4);\n\n const handleCreatePlan = useCallback(() => {\n onCreatePlan?.(temporaryMilestoneId);\n }, [onCreatePlan, temporaryMilestoneId]);\n\n const handleOnAddOutcome = useCallback(() => {\n onAddOutcome?.();\n }, [onAddOutcome]);\n\n if (!milestones) return null;\n\n const activeMilestonePresent = milestones.some(\n milestone => milestone.milestone_state === 'ACTIVE',\n );\n const draftMilestonePresent = milestones.some(\n milestone => milestone.milestone_state === 'DRAFT',\n );\n\n return (\n <>\n {isMilestoneActive && !activeMilestonePresent && (\n <FlexView $marginBottom={40}>\n <NoActiveMilestone\n canCreatePlan={canCreatePlan}\n isDraftMilestonePresent={draftMilestonePresent}\n isFiltersAdded={isFiltersAdded}\n onCreatePlan={onCreatePlan}\n studentName={studentName}\n userType={userType}\n />\n </FlexView>\n )}\n\n {isMilestoneActive && (\n <FlexView $flexDirection=\"row\" $justifyContent=\"space-between\" $marginBottom={16}>\n <Text $renderAs=\"ac4\">Goals ({milestones.length})</Text>\n\n {userType === 'TEACHER' && (\n <FlexView $flexDirection=\"row\" $flexGapX={1}>\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Goals can only be added for students who have joined the class\"\n hidden={canCreatePlan}\n position=\"bottom\"\n >\n <TextButton\n label=\"Create Goal\"\n size=\"small\"\n onClick={handleCreatePlan}\n disabled={!canCreatePlan}\n />\n </ArrowTooltip>\n <TextButton label=\"Add Milestone\" size=\"small\" onClick={handleOnAddOutcome} />\n </FlexView>\n )}\n </FlexView>\n )}\n\n {milestones.map((milestone, idx) => {\n const { id: milestoneId } = milestone;\n\n return (\n <React.Fragment key={`milestone=${milestoneId}`}>\n <MilestoneWidget\n milestone={milestone}\n studentId={studentId}\n studentName={studentName}\n parentName={parentName}\n teacherName={teacherName}\n userType={userType}\n onAddOutcome={onAddOutcome}\n onChapterClick={onChapterClick}\n isMilestoneActive={isMilestoneActive || isDraftMilestone}\n milestoneType={milestoneType}\n onEdit={onEdit}\n onCreateMilestoneTest={onCreateMilestoneTest}\n onAddChapter={onAddChapter}\n onDelete={onDelete}\n onDraftPublish={onDraftPublish}\n isClassOngoing={isClassOngoing}\n isStudentPresent={isStudentPresent}\n onAssignResources={onAssignResources}\n onNodeAttempt={onNodeAttempt}\n onNodeView={onNodeView}\n onNodeReview={onNodeReview}\n onNodeReattempt={onNodeReattempt}\n onNodeReset={onNodeReset}\n onNodeUnassign={onNodeUnassign}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n onTestPreview={onTestPreview}\n onTestReview={onTestReview}\n onTestStart={onTestStart}\n courseStream={courseStream}\n activeMilestoneId={activeMilestoneId}\n activeTabId={activeTabId}\n onWidgetTabSelection={onWidgetTabSelection}\n />\n {idx !== milestones.length - 1 && <Separator heightX={2} />}\n </React.Fragment>\n );\n })}\n </>\n );\n },\n);\n\nexport default MilestoneList;\n"],"names":["MilestoneList","memo","milestones","studentId","milestoneType","restMilestoneListProps","canCreatePlan","isClassOngoing","isFiltersAdded","isStudentPresent","onAddChapter","onAddOutcome","onChapterClick","onCreatePlan","onDelete","onDraftPublish","onEdit","onCreateMilestoneTest","onNodeAttempt","onNodeView","onNodeReview","onNodeReattempt","onNodeReset","onNodeUnassign","onAssignResources","onTestPreview","onTestReview","onTestStart","activeMilestoneId","activeTabId","onWidgetTabSelection","studentName","teacherName","parentName","userType","courseStream","onNodeAssignAsHomework","isMilestoneActive","isDraftMilestone","temporaryMilestoneId","useLazyRef","uuidv4","handleCreatePlan","useCallback","handleOnAddOutcome","activeMilestonePresent","milestone","draftMilestonePresent","jsxs","Fragment","jsx","FlexView","NoActiveMilestone","Text","ArrowTooltip","TextButton","idx","milestoneId","React","MilestoneWidget","Separator"],"mappings":";;;;;;;;;;;AAcA,MAAMA,KAA+CC;AAAA,EACnD,CAAC,EAAE,YAAAC,GAAY,WAAAC,GAAW,eAAAC,GAAe,GAAGC,QAA6B;AACjE,UAAA;AAAA,MACJ,eAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,uBAAAC;AAAA,MACA,eAAAC;AAAA,MACA,YAAAC;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,eAAAC;AAAA,MACA,cAAAC;AAAA,MACA,aAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,YAAAC;AAAA,MACA,UAAAC;AAAA,MACA,cAAAC;AAAA,MACA,wBAAAC;AAAA,IACE,IAAA/B,GAEEgC,IAAoBjC,MAAkB,UACtCkC,IAAmBlC,MAAkB,SACrCmC,IAAuBC,EAAWC,EAAM,GAExCC,IAAmBC,EAAY,MAAM;AACzC,MAAA9B,KAAA,QAAAA,EAAe0B;AAAA,IAAoB,GAClC,CAAC1B,GAAc0B,CAAoB,CAAC,GAEjCK,IAAqBD,EAAY,MAAM;AAC5B,MAAAhC,KAAA,QAAAA;AAAA,IAAA,GACd,CAACA,CAAY,CAAC;AAEb,QAAA,CAACT,EAAmB,QAAA;AAExB,UAAM2C,IAAyB3C,EAAW;AAAA,MACxC,CAAA4C,MAAaA,EAAU,oBAAoB;AAAA,IAAA,GAEvCC,IAAwB7C,EAAW;AAAA,MACvC,CAAA4C,MAAaA,EAAU,oBAAoB;AAAA,IAAA;AAG7C,WAEK,gBAAAE,EAAAC,GAAA,EAAA,UAAA;AAAA,MAAAZ,KAAqB,CAACQ,KACpB,gBAAAK,EAAAC,GAAA,EAAS,eAAe,IACvB,UAAA,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,eAAA9C;AAAA,UACA,yBAAyByC;AAAA,UACzB,gBAAAvC;AAAA,UACA,cAAAK;AAAA,UACA,aAAAkB;AAAA,UACA,UAAAG;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,MAGDG,uBACEc,GAAS,EAAA,gBAAe,OAAM,iBAAgB,iBAAgB,eAAe,IAC5E,UAAA;AAAA,QAAC,gBAAAH,EAAAK,IAAA,EAAK,WAAU,OAAM,UAAA;AAAA,UAAA;AAAA,UAAQnD,EAAW;AAAA,UAAO;AAAA,QAAA,GAAC;AAAA,QAEhDgC,MAAa,aACZ,gBAAAc,EAACG,KAAS,gBAAe,OAAM,WAAW,GACxC,UAAA;AAAA,UAAA,gBAAAD;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,aAAY;AAAA,cACZ,QAAQhD;AAAA,cACR,UAAS;AAAA,cAET,UAAA,gBAAA4C;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,SAASb;AAAA,kBACT,UAAU,CAACpC;AAAA,gBAAA;AAAA,cACb;AAAA,YAAA;AAAA,UACF;AAAA,4BACCiD,GAAW,EAAA,OAAM,iBAAgB,MAAK,SAAQ,SAASX,GAAoB;AAAA,QAAA,GAC9E;AAAA,MAAA,GAEJ;AAAA,MAGD1C,EAAW,IAAI,CAAC4C,GAAWU,MAAQ;AAC5B,cAAA,EAAE,IAAIC,EAAgB,IAAAX;AAG1B,eAAA,gBAAAE,EAACU,EAAM,UAAN,EACC,UAAA;AAAA,UAAA,gBAAAR;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,WAAAb;AAAA,cACA,WAAA3C;AAAA,cACA,aAAA4B;AAAA,cACA,YAAAE;AAAA,cACA,aAAAD;AAAA,cACA,UAAAE;AAAA,cACA,cAAAvB;AAAA,cACA,gBAAAC;AAAA,cACA,mBAAmByB,KAAqBC;AAAA,cACxC,eAAAlC;AAAA,cACA,QAAAY;AAAA,cACA,uBAAAC;AAAA,cACA,cAAAP;AAAA,cACA,UAAAI;AAAA,cACA,gBAAAC;AAAA,cACA,gBAAAR;AAAA,cACA,kBAAAE;AAAA,cACA,mBAAAe;AAAA,cACA,eAAAN;AAAA,cACA,YAAAC;AAAA,cACA,cAAAC;AAAA,cACA,iBAAAC;AAAA,cACA,aAAAC;AAAA,cACA,gBAAAC;AAAA,cACA,wBAAAa;AAAA,cACA,eAAAX;AAAA,cACA,cAAAC;AAAA,cACA,aAAAC;AAAA,cACA,cAAAQ;AAAA,cACA,mBAAAP;AAAA,cACA,aAAAC;AAAA,cACA,sBAAAC;AAAA,YAAA;AAAA,UACF;AAAA,UACC0B,MAAQtD,EAAW,SAAS,KAAM,gBAAAgD,EAAAU,IAAA,EAAU,SAAS,GAAG;AAAA,QAnCtC,EAAA,GAAA,aAAaH,CAAW,EAoC7C;AAAA,MAAA,CAEH;AAAA,IACH,EAAA,CAAA;AAAA,EAEJ;AACF;"}
|
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import { memo as f, useCallback as h } from "react";
|
|
3
3
|
import $ from "styled-components";
|
|
4
|
-
import { ILLUSTRATIONS as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
4
|
+
import { ILLUSTRATIONS as b } from "../../../../../assets/illustrations/illustrations.js";
|
|
5
|
+
import u from "../../../../hooks/use-lazy-ref.js";
|
|
6
|
+
import w from "../../../../ui/arrow-tooltip/arrow-tooltip.js";
|
|
7
|
+
import A from "../../../../ui/buttons/button/button.js";
|
|
8
|
+
import g from "../../../../ui/image/image.js";
|
|
9
|
+
import d from "../../../../ui/layout/flex-view.js";
|
|
10
|
+
import { getNoMilestoneTitle as x } from "../../../create/utils/index.js";
|
|
11
|
+
import { StyledText as y } from "./no-active-milestone-styled.js";
|
|
12
|
+
import T from "../../../../../node_modules/uuid/dist/esm-browser/v4.js";
|
|
13
|
+
const I = $.span`
|
|
14
|
+
display: ${({ shouldShow: o }) => o ? "block" : "none"};
|
|
15
|
+
`, W = f(
|
|
16
|
+
({ userType: o, studentName: s, isDraftMilestonePresent: r, ...m }) => {
|
|
17
|
+
const { canCreatePlan: i, onCreatePlan: t, isFiltersAdded: l } = m, n = u(T), p = h(() => {
|
|
18
|
+
t == null || t(n);
|
|
19
|
+
}, [t, n]), c = x(
|
|
19
20
|
l,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
r,
|
|
22
|
+
s,
|
|
23
|
+
o
|
|
23
24
|
);
|
|
24
|
-
return /* @__PURE__ */
|
|
25
|
-
|
|
25
|
+
return /* @__PURE__ */ a(
|
|
26
|
+
d,
|
|
26
27
|
{
|
|
27
28
|
$flexDirection: "row",
|
|
28
29
|
$gapX: 1.5,
|
|
@@ -33,26 +34,35 @@ const T = $.span`
|
|
|
33
34
|
$justifyContent: "space-between",
|
|
34
35
|
$alignItems: "center",
|
|
35
36
|
children: [
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
-
/* @__PURE__ */
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
/* @__PURE__ */ a(d, { $flexGapX: 1, children: [
|
|
38
|
+
/* @__PURE__ */ e(y, { $renderAs: "ab2", $widthX: 19.5, children: c }),
|
|
39
|
+
o === "TEACHER" && /* @__PURE__ */ e(I, { shouldShow: !l, children: !r && /* @__PURE__ */ e(
|
|
40
|
+
w,
|
|
40
41
|
{
|
|
41
|
-
renderAs: "
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
renderAs: "primary",
|
|
43
|
+
tooltipItem: "Goals can only be added for students who have joined the class",
|
|
44
|
+
hidden: i,
|
|
45
|
+
position: "bottom",
|
|
46
|
+
children: /* @__PURE__ */ e(
|
|
47
|
+
A,
|
|
48
|
+
{
|
|
49
|
+
renderAs: "secondary",
|
|
50
|
+
size: "small",
|
|
51
|
+
label: "Add a Goal",
|
|
52
|
+
onClick: p,
|
|
53
|
+
disabled: !i
|
|
54
|
+
}
|
|
55
|
+
)
|
|
46
56
|
}
|
|
47
57
|
) })
|
|
48
58
|
] }),
|
|
49
|
-
/* @__PURE__ */
|
|
50
|
-
|
|
59
|
+
/* @__PURE__ */ e(
|
|
60
|
+
g,
|
|
51
61
|
{
|
|
52
62
|
withLoader: !1,
|
|
53
63
|
width: 240,
|
|
54
64
|
height: 100,
|
|
55
|
-
src:
|
|
65
|
+
src: b.PUZZLE_STUDENT,
|
|
56
66
|
alt: "learning-planner"
|
|
57
67
|
}
|
|
58
68
|
)
|
|
@@ -62,6 +72,6 @@ const T = $.span`
|
|
|
62
72
|
}
|
|
63
73
|
);
|
|
64
74
|
export {
|
|
65
|
-
|
|
75
|
+
W as default
|
|
66
76
|
};
|
|
67
77
|
//# sourceMappingURL=no-active-milestone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-active-milestone.js","sources":["../../../../../../src/features/milestone/milestone-list-container/milestone-list/no-active-milestone/no-active-milestone.tsx"],"sourcesContent":["import type { INoActiveMilestoneProps } from './no-active-milestone-types';\n\nimport { useCallback, type FC, memo } from 'react';\nimport styled from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport useLazyRef from '../../../../hooks/use-lazy-ref';\nimport Button from '../../../../ui/buttons/button/button';\nimport Image from '../../../../ui/image/image';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport { getNoMilestoneTitle } from '../../../create/utils';\nimport * as Styled from './no-active-milestone-styled';\n\nconst ButtonWrapper = styled.span<{ shouldShow: boolean }>`\n display: ${({ shouldShow }) => (shouldShow ? 'block' : 'none')};\n`;\n\nconst NoActiveMilestone: FC<INoActiveMilestoneProps> = memo(\n ({ userType, studentName, isDraftMilestonePresent, ...restNoActiveMilestoneProps }) => {\n const { canCreatePlan, onCreatePlan, isFiltersAdded } = restNoActiveMilestoneProps;\n const temporaryMilestoneId = useLazyRef(uuidv4);\n\n const handleCreatePlan = useCallback(() => {\n onCreatePlan?.(temporaryMilestoneId);\n }, [onCreatePlan, temporaryMilestoneId]);\n\n const title = getNoMilestoneTitle(\n isFiltersAdded,\n isDraftMilestonePresent,\n studentName,\n userType,\n );\n\n return (\n <FlexView\n $flexDirection=\"row\"\n $gapX={1.5}\n $gutterX={1.5}\n $borderColor=\"WHITE_4\"\n $background=\"YELLOW_1\"\n $flexGapX={1}\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n >\n <FlexView $flexGapX={1}>\n <Styled.StyledText $renderAs=\"ab2\" $widthX={19.5}>\n {title}\n </Styled.StyledText>\n\n {userType === 'TEACHER' && (\n <ButtonWrapper shouldShow={!isFiltersAdded}>\n {!isDraftMilestonePresent && (\n <
|
|
1
|
+
{"version":3,"file":"no-active-milestone.js","sources":["../../../../../../src/features/milestone/milestone-list-container/milestone-list/no-active-milestone/no-active-milestone.tsx"],"sourcesContent":["import type { INoActiveMilestoneProps } from './no-active-milestone-types';\n\nimport { useCallback, type FC, memo } from 'react';\nimport styled from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport useLazyRef from '../../../../hooks/use-lazy-ref';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../ui/buttons/button/button';\nimport Image from '../../../../ui/image/image';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport { getNoMilestoneTitle } from '../../../create/utils';\nimport * as Styled from './no-active-milestone-styled';\n\nconst ButtonWrapper = styled.span<{ shouldShow: boolean }>`\n display: ${({ shouldShow }) => (shouldShow ? 'block' : 'none')};\n`;\n\nconst NoActiveMilestone: FC<INoActiveMilestoneProps> = memo(\n ({ userType, studentName, isDraftMilestonePresent, ...restNoActiveMilestoneProps }) => {\n const { canCreatePlan, onCreatePlan, isFiltersAdded } = restNoActiveMilestoneProps;\n const temporaryMilestoneId = useLazyRef(uuidv4);\n\n const handleCreatePlan = useCallback(() => {\n onCreatePlan?.(temporaryMilestoneId);\n }, [onCreatePlan, temporaryMilestoneId]);\n\n const title = getNoMilestoneTitle(\n isFiltersAdded,\n isDraftMilestonePresent,\n studentName,\n userType,\n );\n\n return (\n <FlexView\n $flexDirection=\"row\"\n $gapX={1.5}\n $gutterX={1.5}\n $borderColor=\"WHITE_4\"\n $background=\"YELLOW_1\"\n $flexGapX={1}\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n >\n <FlexView $flexGapX={1}>\n <Styled.StyledText $renderAs=\"ab2\" $widthX={19.5}>\n {title}\n </Styled.StyledText>\n\n {userType === 'TEACHER' && (\n <ButtonWrapper shouldShow={!isFiltersAdded}>\n {!isDraftMilestonePresent && (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Goals can only be added for students who have joined the class\"\n hidden={canCreatePlan}\n position=\"bottom\"\n >\n <Button\n renderAs=\"secondary\"\n size=\"small\"\n label=\"Add a Goal\"\n onClick={handleCreatePlan}\n disabled={!canCreatePlan}\n />\n </ArrowTooltip>\n )}\n </ButtonWrapper>\n )}\n </FlexView>\n\n <Image\n withLoader={false}\n width={240}\n height={100}\n src={ILLUSTRATIONS.PUZZLE_STUDENT}\n alt=\"learning-planner\"\n />\n </FlexView>\n );\n },\n);\n\nexport default NoActiveMilestone;\n"],"names":["ButtonWrapper","styled","shouldShow","NoActiveMilestone","memo","userType","studentName","isDraftMilestonePresent","restNoActiveMilestoneProps","canCreatePlan","onCreatePlan","isFiltersAdded","temporaryMilestoneId","useLazyRef","uuidv4","handleCreatePlan","useCallback","title","getNoMilestoneTitle","jsxs","FlexView","jsx","Styled.StyledText","ArrowTooltip","Button","Image","ILLUSTRATIONS"],"mappings":";;;;;;;;;;;;AAeA,MAAMA,IAAgBC,EAAO;AAAA,aAChB,CAAC,EAAE,YAAAC,EAAA,MAAkBA,IAAa,UAAU,MAAO;AAAA,GAG1DC,IAAiDC;AAAA,EACrD,CAAC,EAAE,UAAAC,GAAU,aAAAC,GAAa,yBAAAC,GAAyB,GAAGC,QAAiC;AACrF,UAAM,EAAE,eAAAC,GAAe,cAAAC,GAAc,gBAAAC,EAAA,IAAmBH,GAClDI,IAAuBC,EAAWC,CAAM,GAExCC,IAAmBC,EAAY,MAAM;AACzC,MAAAN,KAAA,QAAAA,EAAeE;AAAA,IAAoB,GAClC,CAACF,GAAcE,CAAoB,CAAC,GAEjCK,IAAQC;AAAA,MACZP;AAAA,MACAJ;AAAA,MACAD;AAAA,MACAD;AAAA,IAAA;AAIA,WAAA,gBAAAc;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAa;AAAA,QACb,aAAY;AAAA,QACZ,WAAW;AAAA,QACX,iBAAgB;AAAA,QAChB,aAAY;AAAA,QAEZ,UAAA;AAAA,UAAC,gBAAAD,EAAAC,GAAA,EAAS,WAAW,GACnB,UAAA;AAAA,YAAA,gBAAAC,EAACC,GAAA,EAAkB,WAAU,OAAM,SAAS,MACzC,UACHL,GAAA;AAAA,YAECZ,MAAa,aACX,gBAAAgB,EAAArB,GAAA,EAAc,YAAY,CAACW,GACzB,WAACJ,KACA,gBAAAc;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,UAAS;AAAA,gBACT,aAAY;AAAA,gBACZ,QAAQd;AAAA,gBACR,UAAS;AAAA,gBAET,UAAA,gBAAAY;AAAA,kBAACG;AAAA,kBAAA;AAAA,oBACC,UAAS;AAAA,oBACT,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,SAAST;AAAA,oBACT,UAAU,CAACN;AAAA,kBAAA;AAAA,gBACb;AAAA,cAAA;AAAA,YAAA,GAGN;AAAA,UAAA,GAEJ;AAAA,UAEA,gBAAAY;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,KAAKC,EAAc;AAAA,cACnB,KAAI;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
|
|
@@ -1,42 +1,46 @@
|
|
|
1
|
-
import { useCallback as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
return { forceAppend:
|
|
6
|
-
({ question:
|
|
7
|
-
const
|
|
8
|
-
let
|
|
9
|
-
|
|
10
|
-
const n = window.LearnosityApp.init(
|
|
1
|
+
import { useCallback as l } from "react";
|
|
2
|
+
import m from "../../../hooks/use-is-unmounted.js";
|
|
3
|
+
const L = (i) => {
|
|
4
|
+
const t = m();
|
|
5
|
+
return { forceAppend: l(
|
|
6
|
+
({ question: o, response: u, removeOldElements: a, callback: p }) => {
|
|
7
|
+
const c = JSON.parse(i), r = document.querySelector(`.learnosity-response.question-${o.response_id}`), s = r == null ? void 0 : r.parentNode;
|
|
8
|
+
let d = !1;
|
|
9
|
+
c.type = "local_practice";
|
|
10
|
+
const n = window.LearnosityApp.init(c, {
|
|
11
11
|
readyListener: () => {
|
|
12
|
-
if (!
|
|
13
|
-
if (!
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
if (!t.current) {
|
|
13
|
+
if (!d)
|
|
14
|
+
a === "before" && s && s.childNodes.forEach((e) => {
|
|
15
|
+
e !== r && e.remove();
|
|
16
|
+
}), n.append({
|
|
17
|
+
questions: [o],
|
|
16
18
|
responses: {
|
|
17
|
-
[
|
|
18
|
-
...
|
|
19
|
+
[o.response_id]: {
|
|
20
|
+
...u
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
});
|
|
22
24
|
else {
|
|
23
|
-
const e = n.question(
|
|
25
|
+
const e = n.question(o.response_id);
|
|
24
26
|
e && (e.disable(), e.validate({
|
|
25
27
|
showCorrectAnswers: !0
|
|
26
|
-
})), n.renderMath("mathjax"),
|
|
28
|
+
})), n.renderMath("mathjax"), a === "after" && s && s.childNodes.forEach((f) => {
|
|
29
|
+
f !== r && f.remove();
|
|
30
|
+
}), p();
|
|
27
31
|
}
|
|
28
|
-
|
|
32
|
+
d = !0;
|
|
29
33
|
}
|
|
30
34
|
},
|
|
31
35
|
errorListener: (e) => {
|
|
32
|
-
|
|
36
|
+
t.current || p(e);
|
|
33
37
|
}
|
|
34
38
|
});
|
|
35
39
|
},
|
|
36
|
-
[
|
|
40
|
+
[i, t]
|
|
37
41
|
) };
|
|
38
42
|
};
|
|
39
43
|
export {
|
|
40
|
-
|
|
44
|
+
L as default
|
|
41
45
|
};
|
|
42
46
|
//# sourceMappingURL=use-learnosity-append.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-learnosity-append.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-learnosity-append.ts"],"sourcesContent":["import type {\n ILearnosityError,\n ILearnosityQuestionResponse,\n IWorksheetQuestion,\n} from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { useCallback } from 'react';\n\nimport useIsUnmounted from '../../../hooks/use-is-unmounted';\n\ninterface IForceAppend {\n (options: {\n question: IWorksheetQuestion;\n response: ILearnosityQuestionResponse;\n callback: (error?: ILearnosityError) => void;\n }): void;\n}\n\ninterface IUseLearnosityAppend {\n (\n signedRequest: string,\n loggerRef?: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n ): { forceAppend: IForceAppend };\n}\n\nconst useLearnosityAppend: IUseLearnosityAppend = signedRequest => {\n const unmountedRef = useIsUnmounted();\n const forceAppend = useCallback<IForceAppend>(\n ({ question, response, callback }) => {\n const parsedRequest = JSON.parse(signedRequest);\n let readyListenerFiredOnce = false;\n\n parsedRequest.type = 'local_practice';\n\n const learnosity = window.LearnosityApp.init(parsedRequest, {\n readyListener: () => {\n if (unmountedRef.current) return;\n\n if (!readyListenerFiredOnce) {\n learnosity.append({\n questions: [question],\n responses: {\n [question.response_id]: {\n ...response,\n },\n },\n });\n } else {\n const q = learnosity.question(question.response_id);\n\n if (q) {\n q.disable();\n q.validate({\n showCorrectAnswers: true,\n });\n }\n\n learnosity.renderMath('mathjax');\n\n callback();\n }\n\n readyListenerFiredOnce = true;\n },\n errorListener: (error: ILearnosityError) => {\n if (unmountedRef.current) return;\n\n callback(error as ILearnosityError);\n },\n });\n },\n [signedRequest, unmountedRef],\n );\n\n return { forceAppend };\n};\n\nexport default useLearnosityAppend;\n"],"names":["useLearnosityAppend","signedRequest","unmountedRef","useIsUnmounted","useCallback","question","response","callback","parsedRequest","readyListenerFiredOnce","learnosity","q","error"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"use-learnosity-append.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-learnosity-append.ts"],"sourcesContent":["import type {\n ILearnosityError,\n ILearnosityQuestionResponse,\n IWorksheetQuestion,\n} from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { useCallback } from 'react';\n\nimport useIsUnmounted from '../../../hooks/use-is-unmounted';\n\ninterface IForceAppend {\n (options: {\n question: IWorksheetQuestion;\n response: ILearnosityQuestionResponse;\n callback: (error?: ILearnosityError) => void;\n removeOldElements: 'before' | 'after';\n }): void;\n}\n\ninterface IUseLearnosityAppend {\n (\n signedRequest: string,\n loggerRef?: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n ): { forceAppend: IForceAppend };\n}\n\nconst useLearnosityAppend: IUseLearnosityAppend = signedRequest => {\n const unmountedRef = useIsUnmounted();\n const forceAppend = useCallback<IForceAppend>(\n ({ question, response, removeOldElements, callback }) => {\n const parsedRequest = JSON.parse(signedRequest);\n const $el = document.querySelector(`.learnosity-response.question-${question.response_id}`);\n const $parentEl = $el?.parentNode;\n let readyListenerFiredOnce = false;\n\n parsedRequest.type = 'local_practice';\n\n const learnosity = window.LearnosityApp.init(parsedRequest, {\n readyListener: () => {\n if (unmountedRef.current) return;\n\n if (!readyListenerFiredOnce) {\n if (removeOldElements === 'before' && $parentEl) {\n $parentEl.childNodes.forEach(child => {\n if (child !== $el) {\n child.remove();\n }\n });\n }\n\n learnosity.append({\n questions: [question],\n responses: {\n [question.response_id]: {\n ...response,\n },\n },\n });\n } else {\n const q = learnosity.question(question.response_id);\n\n if (q) {\n q.disable();\n q.validate({\n showCorrectAnswers: true,\n });\n }\n\n learnosity.renderMath('mathjax');\n\n if (removeOldElements === 'after' && $parentEl) {\n $parentEl.childNodes.forEach(child => {\n if (child !== $el) {\n child.remove();\n }\n });\n }\n\n callback();\n }\n\n readyListenerFiredOnce = true;\n },\n errorListener: (error: ILearnosityError) => {\n if (unmountedRef.current) return;\n\n callback(error as ILearnosityError);\n },\n });\n },\n [signedRequest, unmountedRef],\n );\n\n return { forceAppend };\n};\n\nexport default useLearnosityAppend;\n"],"names":["useLearnosityAppend","signedRequest","unmountedRef","useIsUnmounted","useCallback","question","response","removeOldElements","callback","parsedRequest","$el","$parentEl","readyListenerFiredOnce","learnosity","child","q","error"],"mappings":";;AA2BA,MAAMA,IAA4C,CAAiBC,MAAA;AACjE,QAAMC,IAAeC;AAkErB,SAAO,EAAE,aAjEWC;AAAA,IAClB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,mBAAAC,GAAmB,UAAAC,QAAe;AACjD,YAAAC,IAAgB,KAAK,MAAMR,CAAa,GACxCS,IAAM,SAAS,cAAc,iCAAiCL,EAAS,WAAW,EAAE,GACpFM,IAAYD,KAAA,gBAAAA,EAAK;AACvB,UAAIE,IAAyB;AAE7B,MAAAH,EAAc,OAAO;AAErB,YAAMI,IAAa,OAAO,cAAc,KAAKJ,GAAe;AAAA,QAC1D,eAAe,MAAM;AACnB,cAAI,CAAAP,EAAa,SAEjB;AAAA,gBAAI,CAACU;AACC,cAAAL,MAAsB,YAAYI,KAC1BA,EAAA,WAAW,QAAQ,CAASG,MAAA;AACpC,gBAAIA,MAAUJ,KACZI,EAAM,OAAO;AAAA,cACf,CACD,GAGHD,EAAW,OAAO;AAAA,gBAChB,WAAW,CAACR,CAAQ;AAAA,gBACpB,WAAW;AAAA,kBACT,CAACA,EAAS,WAAW,GAAG;AAAA,oBACtB,GAAGC;AAAA,kBACL;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,iBACI;AACL,oBAAMS,IAAIF,EAAW,SAASR,EAAS,WAAW;AAElD,cAAIU,MACFA,EAAE,QAAQ,GACVA,EAAE,SAAS;AAAA,gBACT,oBAAoB;AAAA,cAAA,CACrB,IAGHF,EAAW,WAAW,SAAS,GAE3BN,MAAsB,WAAWI,KACzBA,EAAA,WAAW,QAAQ,CAASG,MAAA;AACpC,gBAAIA,MAAUJ,KACZI,EAAM,OAAO;AAAA,cACf,CACD,GAGMN;YACX;AAEyB,YAAAI,IAAA;AAAA;AAAA,QAC3B;AAAA,QACA,eAAe,CAACI,MAA4B;AAC1C,UAAId,EAAa,WAEjBM,EAASQ,CAAyB;AAAA,QACpC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAACf,GAAeC,CAAY;AAAA,EAAA,EAGT;AACvB;"}
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { memo as
|
|
3
|
-
import
|
|
4
|
-
import { LearnosityQuestionContainer as
|
|
5
|
-
const
|
|
1
|
+
import { jsx as v } from "react/jsx-runtime";
|
|
2
|
+
import { memo as R, useRef as E, useCallback as A, useEffect as m } from "react";
|
|
3
|
+
import g from "../hooks/use-learnosity-append.js";
|
|
4
|
+
import { LearnosityQuestionContainer as b } from "./worksheet-question-styled.js";
|
|
5
|
+
const N = R(
|
|
6
6
|
({
|
|
7
|
-
signedRequest:
|
|
7
|
+
signedRequest: S,
|
|
8
8
|
appended: o,
|
|
9
|
-
canRender:
|
|
9
|
+
canRender: I,
|
|
10
10
|
canForceAppend: a,
|
|
11
|
-
question:
|
|
11
|
+
question: t,
|
|
12
12
|
response: s,
|
|
13
13
|
learnosity: w,
|
|
14
|
-
isConceptIntro:
|
|
15
|
-
simState:
|
|
14
|
+
isConceptIntro: M,
|
|
15
|
+
simState: c,
|
|
16
16
|
onMediaStateChange: _
|
|
17
17
|
}) => {
|
|
18
|
-
const
|
|
18
|
+
const l = E(null), n = E(s), { forceAppend: p } = g(S), d = A(
|
|
19
19
|
(e) => {
|
|
20
|
-
const { source: r, data: i } = e, { type:
|
|
21
|
-
|
|
20
|
+
const { source: r, data: i } = e, { type: u } = i ?? {};
|
|
21
|
+
u === "SIM_IS_READY" ? r.postMessage(
|
|
22
22
|
{
|
|
23
23
|
type: "SIMULATION_CONFIG",
|
|
24
24
|
payload: {
|
|
25
25
|
userRole: a ? "teacher" : "student",
|
|
26
|
-
simulationState:
|
|
26
|
+
simulationState: c
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"*"
|
|
30
|
-
) :
|
|
30
|
+
) : u === "SIM_STATE_UPDATE" && _(t, "SIMULATION", e.data.payload);
|
|
31
31
|
},
|
|
32
|
-
[a,
|
|
33
|
-
), y =
|
|
32
|
+
[a, c, _, t]
|
|
33
|
+
), y = A(
|
|
34
34
|
(e) => {
|
|
35
35
|
window.requestAnimationFrame(() => {
|
|
36
|
-
var i,
|
|
36
|
+
var i, u, T;
|
|
37
37
|
const r = document.createElement("div");
|
|
38
|
-
r.classList.add("learnosity-response"), r.classList.add(`question-${
|
|
38
|
+
r.classList.add("learnosity-response"), r.classList.add(`question-${t.response_id}`), (u = (i = l.current) == null ? void 0 : i.children[0]) == null || u.querySelectorAll(".lrn_drawing svg path").forEach((f) => {
|
|
39
39
|
f.id = `${f.id} + temp`;
|
|
40
|
-
}), (T =
|
|
41
|
-
question:
|
|
40
|
+
}), (T = l.current) == null || T.append(r), p({
|
|
41
|
+
question: t,
|
|
42
42
|
response: e,
|
|
43
|
+
removeOldElements: t.type === "numberline" ? "before" : "after",
|
|
43
44
|
callback: (f) => {
|
|
44
|
-
|
|
45
|
-
f || ((A = (v = c.current) == null ? void 0 : v.children[0]) == null || A.remove(), t.current && t.current !== e ? y(t.current) : t.current = void 0);
|
|
45
|
+
f || (n.current && n.current !== e ? y(n.current) : n.current = void 0);
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
});
|
|
49
49
|
},
|
|
50
|
-
[p,
|
|
51
|
-
), L =
|
|
50
|
+
[p, t]
|
|
51
|
+
), L = E(!1);
|
|
52
52
|
return m(() => {
|
|
53
53
|
let e;
|
|
54
|
-
return
|
|
55
|
-
const r =
|
|
54
|
+
return I && (L.current || (e = window.requestAnimationFrame(() => {
|
|
55
|
+
const r = n.current ?? s;
|
|
56
56
|
L.current = !0, w.appendQuestion({
|
|
57
|
-
questions: [
|
|
57
|
+
questions: [t],
|
|
58
58
|
...r ? {
|
|
59
59
|
responses: {
|
|
60
|
-
[
|
|
60
|
+
[t.response_id]: {
|
|
61
61
|
// Learnosity is mutating the response object, so we need to clone it
|
|
62
62
|
...r
|
|
63
63
|
}
|
|
@@ -67,37 +67,37 @@ const D = g(
|
|
|
67
67
|
}))), () => {
|
|
68
68
|
e && window.cancelAnimationFrame(e);
|
|
69
69
|
};
|
|
70
|
-
}, [
|
|
70
|
+
}, [I, w, t, s]), m(() => {
|
|
71
71
|
var e;
|
|
72
|
-
return o && (
|
|
72
|
+
return o && (n.current = void 0, (e = l.current) != null && e.querySelector("iframe") && window.addEventListener("message", d)), () => {
|
|
73
73
|
window.removeEventListener("message", d);
|
|
74
74
|
};
|
|
75
75
|
}, [o, d]), m(() => {
|
|
76
76
|
var e, r;
|
|
77
|
-
if (
|
|
78
|
-
const i = (e =
|
|
77
|
+
if (c && o) {
|
|
78
|
+
const i = (e = l.current) == null ? void 0 : e.querySelector("iframe");
|
|
79
79
|
i && ((r = i.contentWindow) == null || r.postMessage(
|
|
80
80
|
{
|
|
81
81
|
type: "SIM_STATE_UPDATE",
|
|
82
|
-
payload:
|
|
82
|
+
payload: c
|
|
83
83
|
},
|
|
84
84
|
"*"
|
|
85
85
|
));
|
|
86
86
|
}
|
|
87
|
-
}, [o, a,
|
|
88
|
-
o && s && a && s !==
|
|
89
|
-
}, [o, a, s, y]), /* @__PURE__ */
|
|
90
|
-
|
|
87
|
+
}, [o, a, c]), m(() => {
|
|
88
|
+
o && s && a && s !== n.current && (n.current ? n.current = s : (n.current = s, y(s)));
|
|
89
|
+
}, [o, a, s, y]), /* @__PURE__ */ v(
|
|
90
|
+
b,
|
|
91
91
|
{
|
|
92
|
-
ref:
|
|
93
|
-
$isConceptIntro:
|
|
92
|
+
ref: l,
|
|
93
|
+
$isConceptIntro: M,
|
|
94
94
|
$isTeacher: a,
|
|
95
|
-
children: /* @__PURE__ */
|
|
95
|
+
children: /* @__PURE__ */ v("div", { className: `learnosity-response question-${t.response_id}` })
|
|
96
96
|
}
|
|
97
97
|
);
|
|
98
98
|
}
|
|
99
99
|
);
|
|
100
100
|
export {
|
|
101
|
-
|
|
101
|
+
N as default
|
|
102
102
|
};
|
|
103
103
|
//# sourceMappingURL=learnosity-question.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnosity-question.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-question/learnosity-question.tsx"],"sourcesContent":["import type { ILearnosityQuestionResponse } from '../worksheet-types';\nimport type { ILearnosityQuestionProps } from './worksheet-question-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useRef } from 'react';\n\nimport useLearnosityAppend from '../hooks/use-learnosity-append';\nimport * as Styled from './worksheet-question-styled';\n\nconst LearnosityQuestion: FC<ILearnosityQuestionProps> = memo(\n ({\n signedRequest,\n appended,\n canRender,\n canForceAppend,\n question,\n response,\n learnosity,\n isConceptIntro,\n simState,\n onMediaStateChange,\n }) => {\n const containerElementRef = useRef<HTMLDivElement>(null);\n const latestQuestionResponseRef = useRef<ILearnosityQuestionResponse | undefined>(response);\n const { forceAppend } = useLearnosityAppend(signedRequest);\n\n const handleSimIframeMessage = useCallback(\n (event: MessageEvent) => {\n const { source, data } = event;\n const { type } = data ?? ({} as { type: string });\n\n if (type === 'SIM_IS_READY') {\n (source as Window).postMessage(\n {\n type: 'SIMULATION_CONFIG',\n payload: {\n userRole: canForceAppend ? 'teacher' : 'student',\n simulationState: simState,\n },\n },\n '*',\n );\n } else if (type === 'SIM_STATE_UPDATE') {\n onMediaStateChange(question, 'SIMULATION', event.data.payload);\n }\n },\n [canForceAppend, simState, onMediaStateChange, question],\n );\n\n const updateResponse = useCallback(\n (newResponse: ILearnosityQuestionResponse) => {\n window.requestAnimationFrame(() => {\n const questionElement = document.createElement('div');\n\n questionElement.classList.add('learnosity-response');\n questionElement.classList.add(`question-${question.response_id}`);\n // Drawing questions looks for already appended path elements with id, if present it will not append the path, to overcome this issue we are adding temp to the id\n containerElementRef.current?.children[0]?.querySelectorAll('svg path').forEach(path => {\n
|
|
1
|
+
{"version":3,"file":"learnosity-question.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-question/learnosity-question.tsx"],"sourcesContent":["import type { ILearnosityQuestionResponse } from '../worksheet-types';\nimport type { ILearnosityQuestionProps } from './worksheet-question-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useRef } from 'react';\n\nimport useLearnosityAppend from '../hooks/use-learnosity-append';\nimport * as Styled from './worksheet-question-styled';\n\nconst LearnosityQuestion: FC<ILearnosityQuestionProps> = memo(\n ({\n signedRequest,\n appended,\n canRender,\n canForceAppend,\n question,\n response,\n learnosity,\n isConceptIntro,\n simState,\n onMediaStateChange,\n }) => {\n const containerElementRef = useRef<HTMLDivElement>(null);\n const latestQuestionResponseRef = useRef<ILearnosityQuestionResponse | undefined>(response);\n const { forceAppend } = useLearnosityAppend(signedRequest);\n\n const handleSimIframeMessage = useCallback(\n (event: MessageEvent) => {\n const { source, data } = event;\n const { type } = data ?? ({} as { type: string });\n\n if (type === 'SIM_IS_READY') {\n (source as Window).postMessage(\n {\n type: 'SIMULATION_CONFIG',\n payload: {\n userRole: canForceAppend ? 'teacher' : 'student',\n simulationState: simState,\n },\n },\n '*',\n );\n } else if (type === 'SIM_STATE_UPDATE') {\n onMediaStateChange(question, 'SIMULATION', event.data.payload);\n }\n },\n [canForceAppend, simState, onMediaStateChange, question],\n );\n\n const updateResponse = useCallback(\n (newResponse: ILearnosityQuestionResponse) => {\n window.requestAnimationFrame(() => {\n const questionElement = document.createElement('div');\n\n questionElement.classList.add('learnosity-response');\n questionElement.classList.add(`question-${question.response_id}`);\n // Drawing questions looks for already appended path elements with id, if present it will not append the path, to overcome this issue we are adding temp to the id\n containerElementRef.current?.children[0]\n ?.querySelectorAll('.lrn_drawing svg path')\n .forEach(path => {\n path.id = `${path.id} + temp`;\n });\n\n containerElementRef.current?.append(questionElement);\n forceAppend({\n question,\n response: newResponse,\n removeOldElements: question.type === 'numberline' ? 'before' : 'after',\n callback: error => {\n if (error) return;\n\n if (\n latestQuestionResponseRef.current &&\n latestQuestionResponseRef.current !== newResponse\n )\n updateResponse(latestQuestionResponseRef.current);\n else latestQuestionResponseRef.current = undefined;\n },\n });\n });\n },\n [forceAppend, question],\n );\n\n const appendQuestionCalledRef = useRef(false);\n\n useEffect(() => {\n let requestId: number;\n\n if (canRender) {\n if (!appendQuestionCalledRef.current) {\n requestId = window.requestAnimationFrame(() => {\n const appenndableResponse = latestQuestionResponseRef.current ?? response;\n\n appendQuestionCalledRef.current = true;\n learnosity.appendQuestion({\n questions: [question],\n ...(appenndableResponse\n ? {\n responses: {\n [question.response_id]: {\n // Learnosity is mutating the response object, so we need to clone it\n ...appenndableResponse,\n },\n },\n }\n : {}),\n });\n });\n }\n }\n\n return () => {\n if (requestId) window.cancelAnimationFrame(requestId);\n };\n }, [canRender, learnosity, question, response]);\n\n useEffect(() => {\n if (appended) {\n latestQuestionResponseRef.current = undefined;\n\n if (containerElementRef.current?.querySelector('iframe')) {\n window.addEventListener('message', handleSimIframeMessage);\n }\n }\n\n return () => {\n window.removeEventListener('message', handleSimIframeMessage);\n };\n }, [appended, handleSimIframeMessage]);\n\n useEffect(() => {\n if (simState && appended) {\n const simIframe = containerElementRef.current?.querySelector('iframe');\n\n if (simIframe) {\n simIframe.contentWindow?.postMessage(\n {\n type: 'SIM_STATE_UPDATE',\n payload: simState,\n },\n '*',\n );\n }\n }\n }, [appended, canForceAppend, simState]);\n\n useEffect(() => {\n if (appended && response && canForceAppend) {\n if (response !== latestQuestionResponseRef.current) {\n if (!latestQuestionResponseRef.current) {\n latestQuestionResponseRef.current = response;\n updateResponse(response);\n } else {\n latestQuestionResponseRef.current = response;\n }\n }\n }\n }, [appended, canForceAppend, response, updateResponse]);\n\n return (\n <Styled.LearnosityQuestionContainer\n ref={containerElementRef}\n $isConceptIntro={isConceptIntro}\n $isTeacher={canForceAppend}\n >\n <div className={`learnosity-response question-${question.response_id}`} />\n </Styled.LearnosityQuestionContainer>\n );\n },\n);\n\nexport default LearnosityQuestion;\n"],"names":["LearnosityQuestion","memo","signedRequest","appended","canRender","canForceAppend","question","response","learnosity","isConceptIntro","simState","onMediaStateChange","containerElementRef","useRef","latestQuestionResponseRef","forceAppend","useLearnosityAppend","handleSimIframeMessage","useCallback","event","source","data","type","updateResponse","newResponse","questionElement","_b","_a","path","_c","error","appendQuestionCalledRef","useEffect","requestId","appenndableResponse","simIframe","jsx","Styled.LearnosityQuestionContainer"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -350,7 +350,7 @@ export declare const EditMilestoneModal: React_2.FC<IEditMilestoneModalProps>;
|
|
|
350
350
|
export declare const EditStarIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
351
351
|
|
|
352
352
|
export declare enum ELeaderboardType {
|
|
353
|
-
BI_WEEKLY = "
|
|
353
|
+
BI_WEEKLY = "bi_weekly",
|
|
354
354
|
ALL_TIME = "global",
|
|
355
355
|
ALL_TIME_STREAK = "globalStreak"
|
|
356
356
|
}
|
|
@@ -1436,7 +1436,7 @@ declare interface IGetLeaderboardPayloadModel {
|
|
|
1436
1436
|
|
|
1437
1437
|
declare interface IGetLeaderboardResponseModel {
|
|
1438
1438
|
global: ILeaderboardDetailsResponse;
|
|
1439
|
-
|
|
1439
|
+
bi_weekly: ILeaderboardDetailsResponse;
|
|
1440
1440
|
globalStreak: ILeaderboardDetailsResponse;
|
|
1441
1441
|
}
|
|
1442
1442
|
|
|
@@ -1680,7 +1680,7 @@ export declare interface ILayout {
|
|
|
1680
1680
|
|
|
1681
1681
|
export declare interface ILeaderboardDetails {
|
|
1682
1682
|
global: IPointsLeaderboardDetails;
|
|
1683
|
-
|
|
1683
|
+
bi_weekly: IPointsLeaderboardDetails;
|
|
1684
1684
|
globalStreak: IStreakLeaderboardDetails;
|
|
1685
1685
|
}
|
|
1686
1686
|
|