@cuemath/leap 3.1.21 → 3.1.22-akm-2

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.
@@ -1,4 +1,4 @@
1
- var _ = /* @__PURE__ */ ((l) => (l.BI_WEEKLY = "biWeekly", l.ALL_TIME = "global", l.ALL_TIME_STREAK = "globalStreak", l))(_ || {});
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 = 'biWeekly',\n ALL_TIME = 'global',\n ALL_TIME_STREAK = 'globalStreak',\n}\n"],"names":["ELeaderboardType"],"mappings":"AAAY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,YACZA,EAAA,WAAW,UACXA,EAAA,kBAAkB,gBAHRA,IAAAA,KAAA,CAAA,CAAA;"}
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,22 +1,22 @@
1
- import { jsx as e, jsxs as a } from "react/jsx-runtime";
2
- import { useState as p, useEffect as K } from "react";
3
- import { ILLUSTRATIONS as w } from "../../../assets/illustrations/illustrations.js";
4
- import { LOTTIE as d } from "../../../assets/lottie/lottie.js";
5
- import { CircularLoader as U } from "../../ui/loader/circular-loader/circular-loader.js";
6
- import H from "../../ui/text/text.js";
7
- import { useCircleSounds as q } from "../hooks/use-circle-sounds/use-circle-sounds.js";
8
- import { Banner as E } from "./comps/banner/banner.js";
9
- import { LeaderboardItemWithObserver as z } from "./comps/leaderboard-item/leaderboard-item.js";
10
- import { NavigationButton as G } from "./comps/navigation-button/navigation-button.js";
11
- import { StreakReductionInfoBar as J } from "./comps/streak-reduction-infobar/streak-reduction-infobar.js";
12
- import { Timer as Q } from "./comps/timer/timer.js";
1
+ import { jsx as e, jsxs as p } from "react/jsx-runtime";
2
+ import { useState as c, useEffect as M } from "react";
3
+ import { ILLUSTRATIONS as H } from "../../../assets/illustrations/illustrations.js";
4
+ import { LOTTIE as E } from "../../../assets/lottie/lottie.js";
5
+ import { CircularLoader as q } from "../../ui/loader/circular-loader/circular-loader.js";
6
+ import z from "../../ui/text/text.js";
7
+ import { useCircleSounds as G } from "../hooks/use-circle-sounds/use-circle-sounds.js";
8
+ import { Banner as L } from "./comps/banner/banner.js";
9
+ import { LeaderboardItemWithObserver as J } from "./comps/leaderboard-item/leaderboard-item.js";
10
+ import { NavigationButton as Q } from "./comps/navigation-button/navigation-button.js";
11
+ import { StreakReductionInfoBar as V } from "./comps/streak-reduction-infobar/streak-reduction-infobar.js";
12
+ import { Timer as X } from "./comps/timer/timer.js";
13
13
  import { ELeaderboardType as r } from "./enums/leaderboard-type-enum.js";
14
- import { useTimer as V } from "./hooks/use-timer/use-timer.js";
15
- import { Leaderboard as X, LeaderboardContainer as Z, BannerWrapper as D, TournamentBannerCustContainer as ee, TrophyWrapper as re, ItemsWrapper as te, Banner as ne, ActionButtonWrapper as oe } from "./leaderboard-styled.js";
16
- const L = {
17
- [r.ALL_TIME_STREAK]: d.ELITE_CIRCLE,
18
- [r.ALL_TIME]: d.ELITE_CIRCLE,
19
- [r.BI_WEEKLY]: d.TOURNAMENT_RIPPLE
14
+ import { useTimer as Z } from "./hooks/use-timer/use-timer.js";
15
+ import { Leaderboard as D, LeaderboardContainer as ee, BannerWrapper as re, TournamentBannerCustContainer as te, TrophyWrapper as ne, ItemsWrapper as oe, Banner as ie, ActionButtonWrapper as se } from "./leaderboard-styled.js";
16
+ const l = {
17
+ [r.ALL_TIME_STREAK]: E.ELITE_CIRCLE,
18
+ [r.ALL_TIME]: E.ELITE_CIRCLE,
19
+ [r.BI_WEEKLY]: E.TOURNAMENT_RIPPLE
20
20
  }, o = [
21
21
  {
22
22
  name: "TOURNAMENT",
@@ -30,125 +30,129 @@ const L = {
30
30
  name: "ALL TIME",
31
31
  type: r.ALL_TIME
32
32
  }
33
- ], _e = ({
34
- leaderboardData: m,
33
+ ], W = {
34
+ [r.BI_WEEKLY]: "biWeekly",
35
+ [r.ALL_TIME]: "global",
36
+ [r.ALL_TIME_STREAK]: "globalStreak"
37
+ }, Ae = ({
38
+ leaderboardData: s,
35
39
  type: u = r.BI_WEEKLY,
36
- userId: W,
37
- onClose: M,
38
- isLoading: T,
39
- streakInfo: l
40
+ userId: k,
41
+ onClose: N,
42
+ isLoading: m,
43
+ streakInfo: I
40
44
  }) => {
41
- var y, A, R, S, B, C, x, P;
42
- const [i, I] = p(
45
+ var A, S, R, B, b, C, x, K;
46
+ const [i, h] = c(
43
47
  o.findIndex((t) => u === t.type)
44
- ), [n, k] = p(((y = m == null ? void 0 : m[u]) == null ? void 0 : y.leaderboardPlayers) || []), [h, N] = p({
48
+ ), [n, Y] = c(((A = s == null ? void 0 : s[W[u]]) == null ? void 0 : A.leaderboardPlayers) || []), [_, O] = c({
45
49
  current: 0,
46
50
  end: 0
47
- }), [O, f] = V(0), [c, Y] = p(!1), F = (A = n == null ? void 0 : n[0]) == null ? void 0 : A.points, $ = ((R = n == null ? void 0 : n[0]) == null ? void 0 : R.streakDays) || 0, { playButtonSound: _ } = q(), j = () => {
48
- _(), I((t) => t - 1 < 0 ? o.length - 1 : t - 1);
49
- }, v = () => {
50
- _(), I((t) => t + 1 === o.length ? 0 : t + 1);
51
+ }), [F, f] = Z(0), [d, $] = c(!1), j = (S = n == null ? void 0 : n[0]) == null ? void 0 : S.points, v = ((R = n == null ? void 0 : n[0]) == null ? void 0 : R.streakDays) || 0, { playButtonSound: y } = G(), w = () => {
52
+ y(), h((t) => t - 1 < 0 ? o.length - 1 : t - 1);
53
+ }, U = () => {
54
+ y(), h((t) => t + 1 === o.length ? 0 : t + 1);
51
55
  };
52
- return K(() => {
56
+ return M(() => {
53
57
  f(0);
54
- }, [f]), K(() => {
55
- var b;
56
- const t = (b = o[i]) == null ? void 0 : b.type, s = t && (m == null ? void 0 : m[t]);
57
- if (s) {
58
- const g = s.leaderboardPlayers || [];
59
- t === r.BI_WEEKLY && (N({
60
- current: s.currentTimestamp,
61
- end: s.endTimestamp
62
- }), s.currentTimestamp > s.endTimestamp && (g.splice(10), Y(!0))), k([...g]);
58
+ }, [f]), M(() => {
59
+ var g;
60
+ const t = (g = o[i]) == null ? void 0 : g.type, T = t && W[t], a = T && (s == null ? void 0 : s[T]);
61
+ if (a) {
62
+ const P = a.leaderboardPlayers || [];
63
+ t === r.BI_WEEKLY && (O({
64
+ current: a.currentTimestamp,
65
+ end: a.endTimestamp
66
+ }), a.currentTimestamp > a.endTimestamp && (P.splice(10), $(!0))), Y([...P]);
63
67
  }
64
- }, [i, m]), /* @__PURE__ */ e(X, { children: /* @__PURE__ */ a(Z, { children: [
65
- /* @__PURE__ */ a(D, { children: [
66
- ((S = o[i]) == null ? void 0 : S.type) === r.BI_WEEKLY && /* @__PURE__ */ e(
67
- E,
68
+ }, [i, s]), /* @__PURE__ */ e(D, { children: /* @__PURE__ */ p(ee, { children: [
69
+ /* @__PURE__ */ p(re, { children: [
70
+ ((B = o[i]) == null ? void 0 : B.type) === r.BI_WEEKLY && /* @__PURE__ */ e(
71
+ L,
68
72
  {
69
- isLoading: T || n.length === 0,
73
+ isLoading: m || n.length === 0,
70
74
  bgFromTopPosition: -120,
71
75
  bgFromRightPosition: -110,
72
- primaryText: c ? /* @__PURE__ */ e("span", { children: "New Tournament" }) : /* @__PURE__ */ e("span", { children: "Tournament" }),
73
- secondaryText: c ? /* @__PURE__ */ e("span", { children: "Starts Soon" }) : /* @__PURE__ */ a("span", { children: [
76
+ primaryText: d ? /* @__PURE__ */ e("span", { children: "New Tournament" }) : /* @__PURE__ */ e("span", { children: "Tournament" }),
77
+ secondaryText: d ? /* @__PURE__ */ e("span", { children: "Starts Soon" }) : /* @__PURE__ */ p("span", { children: [
74
78
  " ",
75
79
  /* @__PURE__ */ e(
76
- Q,
80
+ X,
77
81
  {
78
- fromTimestamp: O + h.current,
79
- endTimestamp: h.end
82
+ fromTimestamp: F + _.current,
83
+ endTimestamp: _.end
80
84
  }
81
85
  ),
82
86
  " ",
83
87
  "left"
84
88
  ] }),
85
- lottiePath: L[r.BI_WEEKLY],
86
- custEle: /* @__PURE__ */ e(ee, { children: /* @__PURE__ */ e(re, { children: /* @__PURE__ */ e("img", { src: w.TROPHY_CIRCLE }) }) })
89
+ lottiePath: l[r.BI_WEEKLY],
90
+ custEle: /* @__PURE__ */ e(te, { children: /* @__PURE__ */ e(ne, { children: /* @__PURE__ */ e("img", { src: H.TROPHY_CIRCLE }) }) })
87
91
  }
88
92
  ),
89
- ((B = o[i]) == null ? void 0 : B.type) === r.ALL_TIME_STREAK && /* @__PURE__ */ e(
90
- E,
93
+ ((b = o[i]) == null ? void 0 : b.type) === r.ALL_TIME_STREAK && /* @__PURE__ */ e(
94
+ L,
91
95
  {
92
- isLoading: T,
96
+ isLoading: m,
93
97
  bgFromTopPosition: -140,
94
98
  bgFromRightPosition: -90,
95
99
  primaryText: /* @__PURE__ */ e("span", { children: "Streak Stars" }),
96
100
  secondaryText: /* @__PURE__ */ e("span", { children: "Top 50" }),
97
- lottiePath: L[r.ALL_TIME_STREAK]
101
+ lottiePath: l[r.ALL_TIME_STREAK]
98
102
  }
99
103
  ),
100
104
  ((C = o[i]) == null ? void 0 : C.type) === r.ALL_TIME && /* @__PURE__ */ e(
101
- E,
105
+ L,
102
106
  {
103
- isLoading: T,
107
+ isLoading: m,
104
108
  bgFromTopPosition: -140,
105
109
  bgFromRightPosition: -90,
106
110
  primaryText: /* @__PURE__ */ e("span", { children: "Elite Circle" }),
107
111
  secondaryText: /* @__PURE__ */ e("span", { children: "Top 50" }),
108
- lottiePath: L[r.ALL_TIME]
112
+ lottiePath: l[r.ALL_TIME]
109
113
  }
110
114
  )
111
115
  ] }),
112
- T && /* @__PURE__ */ e(U, {}),
113
- !T && n && /* @__PURE__ */ a(te, { children: [
116
+ m && /* @__PURE__ */ e(q, {}),
117
+ !m && n && /* @__PURE__ */ p(oe, { children: [
114
118
  ((x = o[i]) == null ? void 0 : x.type) === r.ALL_TIME_STREAK && /* @__PURE__ */ e(
115
- J,
119
+ V,
116
120
  {
117
- startTimestampToday: l.startTimestampToday,
118
- streakReduction: l.streakReduction
121
+ startTimestampToday: I.startTimestampToday,
122
+ streakReduction: I.streakReduction
119
123
  }
120
124
  ),
121
- c && ((P = o[i]) == null ? void 0 : P.type) === r.BI_WEEKLY && /* @__PURE__ */ e(ne, { children: /* @__PURE__ */ e(H, { $renderAs: "ab3", $color: "WHITE", children: "Congratulating winners of the last tournament!" }) }),
125
+ d && ((K = o[i]) == null ? void 0 : K.type) === r.BI_WEEKLY && /* @__PURE__ */ e(ie, { children: /* @__PURE__ */ e(z, { $renderAs: "ab3", $color: "WHITE", children: "Congratulating winners of the last tournament!" }) }),
122
126
  n.map((t) => {
123
- var s;
127
+ var T;
124
128
  return /* @__PURE__ */ e(
125
- z,
129
+ J,
126
130
  {
127
131
  player: t,
128
132
  rank: t.rank,
129
- maxStreakDays: $,
130
- maxPoints: F,
131
- leaderboardType: (s = o[i]) == null ? void 0 : s.type,
132
- isActive: t.userId === W
133
+ maxStreakDays: v,
134
+ maxPoints: j,
135
+ leaderboardType: (T = o[i]) == null ? void 0 : T.type,
136
+ isActive: t.userId === k
133
137
  },
134
138
  t.rank
135
139
  );
136
140
  })
137
141
  ] }),
138
- /* @__PURE__ */ e(oe, { children: /* @__PURE__ */ e(
139
- G,
142
+ /* @__PURE__ */ e(se, { children: /* @__PURE__ */ e(
143
+ Q,
140
144
  {
141
145
  labels: Object.values(r),
142
- onLeftClick: j,
143
- onRightClick: v,
146
+ onLeftClick: w,
147
+ onRightClick: U,
144
148
  currIndex: i,
145
- onClose: M,
146
- disableSwipe: T || n.length === 0
149
+ onClose: N,
150
+ disableSwipe: m || n.length === 0
147
151
  }
148
152
  ) })
149
153
  ] }) });
150
154
  };
151
155
  export {
152
- _e as Leaderboard
156
+ Ae as Leaderboard
153
157
  };
154
158
  //# sourceMappingURL=leaderboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"leaderboard.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard.tsx"],"sourcesContent":["import type {\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './dal/use-get-leaderboard-dal/use-get-leaderboard-dal-types';\nimport type { ILeaderboardProps } from './leaderboard-types';\n\nimport { useEffect, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport Text from '../../ui/text/text';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { Banner } from './comps/banner/banner';\nimport { LeaderboardItemWithObserver } from './comps/leaderboard-item/leaderboard-item';\nimport { NavigationButton } from './comps/navigation-button/navigation-button';\nimport { StreakReductionInfoBar } from './comps/streak-reduction-infobar/streak-reduction-infobar';\nimport { Timer } from './comps/timer/timer';\nimport { ELeaderboardType } from './enums/leaderboard-type-enum';\nimport { useTimer } from './hooks/use-timer/use-timer';\nimport * as Styled from './leaderboard-styled';\n\nconst BANNER_LOTTIES: Record<ELeaderboardType, string> = {\n [ELeaderboardType.ALL_TIME_STREAK]: LOTTIE.ELITE_CIRCLE,\n [ELeaderboardType.ALL_TIME]: LOTTIE.ELITE_CIRCLE,\n [ELeaderboardType.BI_WEEKLY]: LOTTIE.TOURNAMENT_RIPPLE,\n};\n\nconst leaderboards = [\n {\n name: 'TOURNAMENT',\n type: ELeaderboardType.BI_WEEKLY,\n },\n {\n name: 'STREAK STARS',\n type: ELeaderboardType.ALL_TIME_STREAK,\n },\n {\n name: 'ALL TIME',\n type: ELeaderboardType.ALL_TIME,\n },\n];\n\nexport const Leaderboard = ({\n leaderboardData,\n type = ELeaderboardType.BI_WEEKLY,\n userId,\n onClose,\n isLoading,\n streakInfo,\n}: ILeaderboardProps) => {\n const [currentLeaderBoardIndex, setCurrentLeaderboardIndex] = useState(\n leaderboards.findIndex(leaderboard => type === leaderboard.type),\n );\n\n const [currLeaderboardData, setCurrLeaderboardData] = useState<\n (ILeaderboardPlayerWithPoints | ILeaderboardPlayerWithStreak)[] | []\n >(leaderboardData?.[type]?.leaderboardPlayers || []);\n\n const [currLeaderboardTimeStamps, setCurrLeaderboardTimeStamps] = useState<{\n current: number;\n end: number;\n }>({\n current: 0,\n end: 0,\n });\n\n const [time, setTimer] = useTimer(0);\n const [isTournamentEnded, setIsTournamentEnded] = useState(false);\n const maxPoints = (currLeaderboardData?.[0] as ILeaderboardPlayerWithPoints)?.points;\n const maxStreakDays = (currLeaderboardData?.[0] as ILeaderboardPlayerWithStreak)?.streakDays || 0;\n const { playButtonSound } = useCircleSounds();\n\n const handlePrevious = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev - 1 < 0) {\n return leaderboards.length - 1;\n }\n\n return prev - 1;\n });\n };\n\n const handleNext = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev + 1 === leaderboards.length) {\n return 0;\n }\n\n return prev + 1;\n });\n };\n\n useEffect(() => {\n setTimer(0);\n }, [setTimer]);\n\n useEffect(() => {\n const currType = leaderboards[currentLeaderBoardIndex]?.type;\n const currLeaderboard = currType && leaderboardData?.[currType];\n\n if (currLeaderboard) {\n const leaderboardList = currLeaderboard.leaderboardPlayers || [];\n\n if (currType === ELeaderboardType.BI_WEEKLY) {\n setCurrLeaderboardTimeStamps({\n current: currLeaderboard.currentTimestamp,\n end: currLeaderboard.endTimestamp,\n });\n\n if (currLeaderboard.currentTimestamp > currLeaderboard.endTimestamp) {\n leaderboardList.splice(10);\n setIsTournamentEnded(true);\n }\n }\n\n setCurrLeaderboardData([...leaderboardList]);\n }\n }, [currentLeaderBoardIndex, leaderboardData]);\n\n return (\n <Styled.Leaderboard>\n <Styled.LeaderboardContainer>\n <Styled.BannerWrapper>\n {/* tournament banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Banner\n isLoading={isLoading || currLeaderboardData.length === 0}\n bgFromTopPosition={-120}\n bgFromRightPosition={-110}\n primaryText={\n isTournamentEnded ? <span>New Tournament</span> : <span>Tournament</span>\n }\n secondaryText={\n isTournamentEnded ? (\n <span>Starts Soon</span>\n ) : (\n <span>\n {' '}\n <Timer\n fromTimestamp={(time as number) + currLeaderboardTimeStamps.current}\n endTimestamp={currLeaderboardTimeStamps.end}\n />{' '}\n {'left'}\n </span>\n )\n }\n lottiePath={BANNER_LOTTIES[ELeaderboardType.BI_WEEKLY]}\n custEle={\n <Styled.TournamentBannerCustContainer>\n <Styled.TrophyWrapper>\n <img src={ILLUSTRATIONS.TROPHY_CIRCLE} />\n </Styled.TrophyWrapper>\n </Styled.TournamentBannerCustContainer>\n }\n />\n )}\n\n {/* top streak banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Streak Stars</span>}\n secondaryText={<span>Top 50</span>}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.ALL_TIME_STREAK]}\n />\n )}\n\n {/* elite circle banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Elite Circle</span>}\n secondaryText={<span>Top 50</span>}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.ALL_TIME]}\n />\n )}\n </Styled.BannerWrapper>\n\n {isLoading && <CircularLoader />}\n\n {!isLoading && currLeaderboardData && (\n <Styled.ItemsWrapper>\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <StreakReductionInfoBar\n startTimestampToday={streakInfo.startTimestampToday}\n streakReduction={streakInfo.streakReduction}\n />\n )}\n {isTournamentEnded &&\n leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Styled.Banner>\n <Text $renderAs=\"ab3\" $color=\"WHITE\">\n Congratulating winners of the last tournament!\n </Text>\n </Styled.Banner>\n )}\n {currLeaderboardData.map(player => {\n return (\n <LeaderboardItemWithObserver\n key={player.rank}\n player={player}\n rank={player.rank}\n maxStreakDays={maxStreakDays}\n maxPoints={maxPoints}\n leaderboardType={leaderboards[currentLeaderBoardIndex]?.type}\n isActive={player.userId === userId}\n />\n );\n })}\n </Styled.ItemsWrapper>\n )}\n\n <Styled.ActionButtonWrapper>\n <NavigationButton\n labels={Object.values(ELeaderboardType)}\n onLeftClick={handlePrevious}\n onRightClick={handleNext}\n currIndex={currentLeaderBoardIndex}\n onClose={onClose}\n disableSwipe={isLoading || currLeaderboardData.length === 0}\n />\n </Styled.ActionButtonWrapper>\n </Styled.LeaderboardContainer>\n </Styled.Leaderboard>\n );\n};\n"],"names":["BANNER_LOTTIES","ELeaderboardType","LOTTIE","leaderboards","Leaderboard","leaderboardData","type","userId","onClose","isLoading","streakInfo","currentLeaderBoardIndex","setCurrentLeaderboardIndex","useState","leaderboard","currLeaderboardData","setCurrLeaderboardData","_a","currLeaderboardTimeStamps","setCurrLeaderboardTimeStamps","time","setTimer","useTimer","isTournamentEnded","setIsTournamentEnded","maxPoints","_b","maxStreakDays","_c","playButtonSound","useCircleSounds","handlePrevious","prev","handleNext","useEffect","currType","currLeaderboard","leaderboardList","Styled.Leaderboard","jsxs","Styled.LeaderboardContainer","Styled.BannerWrapper","_d","jsx","Banner","Timer","Styled.TournamentBannerCustContainer","Styled.TrophyWrapper","ILLUSTRATIONS","_e","_f","CircularLoader","Styled.ItemsWrapper","_g","StreakReductionInfoBar","_h","Styled.Banner","Text","player","LeaderboardItemWithObserver","Styled.ActionButtonWrapper","NavigationButton"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAMA,IAAmD;AAAA,EACvD,CAACC,EAAiB,eAAe,GAAGC,EAAO;AAAA,EAC3C,CAACD,EAAiB,QAAQ,GAAGC,EAAO;AAAA,EACpC,CAACD,EAAiB,SAAS,GAAGC,EAAO;AACvC,GAEMC,IAAe;AAAA,EACnB;AAAA,IACE,MAAM;AAAA,IACN,MAAMF,EAAiB;AAAA,EACzB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAMA,EAAiB;AAAA,EACzB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAMA,EAAiB;AAAA,EACzB;AACF,GAEaG,KAAc,CAAC;AAAA,EAC1B,iBAAAC;AAAA,EACA,MAAAC,IAAOL,EAAiB;AAAA,EACxB,QAAAM;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AACF,MAAyB;;AACjB,QAAA,CAACC,GAAyBC,CAA0B,IAAIC;AAAA,IAC5DV,EAAa,UAAU,CAAeW,MAAAR,MAASQ,EAAY,IAAI;AAAA,EAAA,GAG3D,CAACC,GAAqBC,CAAsB,IAAIH,IAEpDI,IAAAZ,KAAA,gBAAAA,EAAkBC,OAAlB,gBAAAW,EAAyB,uBAAsB,CAAA,CAAE,GAE7C,CAACC,GAA2BC,CAA4B,IAAIN,EAG/D;AAAA,IACD,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN,GAEK,CAACO,GAAMC,CAAQ,IAAIC,EAAS,CAAC,GAC7B,CAACC,GAAmBC,CAAoB,IAAIX,EAAS,EAAK,GAC1DY,KAAaC,IAAAX,KAAA,gBAAAA,EAAsB,OAAtB,gBAAAW,EAA2D,QACxEC,MAAiBC,IAAAb,KAAA,gBAAAA,EAAsB,OAAtB,gBAAAa,EAA2D,eAAc,GAC1F,EAAE,iBAAAC,MAAoBC,KAEtBC,IAAiB,MAAM;AACX,IAAAF,KAChBjB,EAA2B,CAAQoB,MAC7BA,IAAO,IAAI,IACN7B,EAAa,SAAS,IAGxB6B,IAAO,CACf;AAAA,EAAA,GAGGC,IAAa,MAAM;AACP,IAAAJ,KAChBjB,EAA2B,CAAQoB,MAC7BA,IAAO,MAAM7B,EAAa,SACrB,IAGF6B,IAAO,CACf;AAAA,EAAA;AAGH,SAAAE,EAAU,MAAM;AACd,IAAAb,EAAS,CAAC;AAAA,EAAA,GACT,CAACA,CAAQ,CAAC,GAEba,EAAU,MAAM;;AACR,UAAAC,KAAWlB,IAAAd,EAAaQ,CAAuB,MAApC,gBAAAM,EAAuC,MAClDmB,IAAkBD,MAAY9B,KAAA,gBAAAA,EAAkB8B;AAEtD,QAAIC,GAAiB;AACb,YAAAC,IAAkBD,EAAgB,sBAAsB;AAE1D,MAAAD,MAAalC,EAAiB,cACHkB,EAAA;AAAA,QAC3B,SAASiB,EAAgB;AAAA,QACzB,KAAKA,EAAgB;AAAA,MAAA,CACtB,GAEGA,EAAgB,mBAAmBA,EAAgB,iBACrDC,EAAgB,OAAO,EAAE,GACzBb,EAAqB,EAAI,KAINR,EAAA,CAAC,GAAGqB,CAAe,CAAC;AAAA,IAC7C;AAAA,EAAA,GACC,CAAC1B,GAAyBN,CAAe,CAAC,qBAG1CiC,GAAA,EACC,UAAC,gBAAAC,EAAAC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAD,EAAAE,GAAA,EAEE,UAAA;AAAA,QAAAC,IAAAvC,EAAaQ,CAAuB,MAApC,gBAAA+B,EAAuC,UAASzC,EAAiB,aAChE,gBAAA0C;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAWnC,KAAaM,EAAoB,WAAW;AAAA,UACvD,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,aACEQ,IAAqB,gBAAAoB,EAAA,QAAA,EAAK,4BAAc,IAAU,gBAAAA,EAAC,UAAK,UAAU,aAAA,CAAA;AAAA,UAEpE,eACEpB,IACE,gBAAAoB,EAAC,UAAK,UAAW,cAAA,CAAA,sBAEhB,QACE,EAAA,UAAA;AAAA,YAAA;AAAA,YACD,gBAAAA;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,eAAgBzB,IAAkBF,EAA0B;AAAA,gBAC5D,cAAcA,EAA0B;AAAA,cAAA;AAAA,YAC1C;AAAA,YAAG;AAAA,YACF;AAAA,UAAA,GACH;AAAA,UAGJ,YAAYlB,EAAeC,EAAiB,SAAS;AAAA,UACrD,SACE,gBAAA0C,EAACG,IAAA,EACC,UAAC,gBAAAH,EAAAI,IAAA,EACC,4BAAC,OAAI,EAAA,KAAKC,EAAc,cAAe,CAAA,EACzC,CAAA,GACF;AAAA,QAAA;AAAA,MAEJ;AAAA,QAIDC,IAAA9C,EAAaQ,CAAuB,MAApC,gBAAAsC,EAAuC,UAAShD,EAAiB,mBAChE,gBAAA0C;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAAnC;AAAA,UACA,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,aAAc,gBAAAkC,EAAA,QAAA,EAAK,UAAY,eAAA,CAAA;AAAA,UAC/B,eAAgB,gBAAAA,EAAA,QAAA,EAAK,UAAM,SAAA,CAAA;AAAA,UAC3B,YAAY3C,EAAeC,EAAiB,eAAe;AAAA,QAAA;AAAA,MAC7D;AAAA,QAIDiD,IAAA/C,EAAaQ,CAAuB,MAApC,gBAAAuC,EAAuC,UAASjD,EAAiB,YAChE,gBAAA0C;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAAnC;AAAA,UACA,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,aAAc,gBAAAkC,EAAA,QAAA,EAAK,UAAY,eAAA,CAAA;AAAA,UAC/B,eAAgB,gBAAAA,EAAA,QAAA,EAAK,UAAM,SAAA,CAAA;AAAA,UAC3B,YAAY3C,EAAeC,EAAiB,QAAQ;AAAA,QAAA;AAAA,MACtD;AAAA,IAAA,GAEJ;AAAA,IAECQ,uBAAc0C,GAAe,EAAA;AAAA,IAE7B,CAAC1C,KAAaM,KACZ,gBAAAwB,EAAAa,IAAA,EACE,UAAA;AAAA,QAAAC,IAAAlD,EAAaQ,CAAuB,MAApC,gBAAA0C,EAAuC,UAASpD,EAAiB,mBAChE,gBAAA0C;AAAA,QAACW;AAAA,QAAA;AAAA,UACC,qBAAqB5C,EAAW;AAAA,UAChC,iBAAiBA,EAAW;AAAA,QAAA;AAAA,MAC9B;AAAA,MAEDa,OACCgC,IAAApD,EAAaQ,CAAuB,MAApC,gBAAA4C,EAAuC,UAAStD,EAAiB,aAC9D,gBAAA0C,EAAAa,IAAA,EACC,4BAACC,GAAK,EAAA,WAAU,OAAM,QAAO,SAAQ,2DAErC,CAAA,GACF;AAAA,MAEH1C,EAAoB,IAAI,CAAU2C,MAAA;;AAE/B,eAAA,gBAAAf;AAAA,UAACgB;AAAA,UAAA;AAAA,YAEC,QAAAD;AAAA,YACA,MAAMA,EAAO;AAAA,YACb,eAAA/B;AAAA,YACA,WAAAF;AAAA,YACA,kBAAiBR,IAAAd,EAAaQ,CAAuB,MAApC,gBAAAM,EAAuC;AAAA,YACxD,UAAUyC,EAAO,WAAWnD;AAAA,UAAA;AAAA,UANvBmD,EAAO;AAAA,QAAA;AAAA,MAOd,CAEH;AAAA,IAAA,GACH;AAAA,IAGF,gBAAAf,EAACiB,IAAA,EACC,UAAA,gBAAAjB;AAAA,MAACkB;AAAA,MAAA;AAAA,QACC,QAAQ,OAAO,OAAO5D,CAAgB;AAAA,QACtC,aAAa8B;AAAA,QACb,cAAcE;AAAA,QACd,WAAWtB;AAAA,QACX,SAAAH;AAAA,QACA,cAAcC,KAAaM,EAAoB,WAAW;AAAA,MAAA;AAAA,IAAA,GAE9D;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ;"}
1
+ {"version":3,"file":"leaderboard.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard.tsx"],"sourcesContent":["import type {\n ILeaderboardDetails,\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './dal/use-get-leaderboard-dal/use-get-leaderboard-dal-types';\nimport type { ILeaderboardProps } from './leaderboard-types';\n\nimport { useEffect, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport Text from '../../ui/text/text';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { Banner } from './comps/banner/banner';\nimport { LeaderboardItemWithObserver } from './comps/leaderboard-item/leaderboard-item';\nimport { NavigationButton } from './comps/navigation-button/navigation-button';\nimport { StreakReductionInfoBar } from './comps/streak-reduction-infobar/streak-reduction-infobar';\nimport { Timer } from './comps/timer/timer';\nimport { ELeaderboardType } from './enums/leaderboard-type-enum';\nimport { useTimer } from './hooks/use-timer/use-timer';\nimport * as Styled from './leaderboard-styled';\n\nconst BANNER_LOTTIES: Record<ELeaderboardType, string> = {\n [ELeaderboardType.ALL_TIME_STREAK]: LOTTIE.ELITE_CIRCLE,\n [ELeaderboardType.ALL_TIME]: LOTTIE.ELITE_CIRCLE,\n [ELeaderboardType.BI_WEEKLY]: LOTTIE.TOURNAMENT_RIPPLE,\n};\n\nconst leaderboards = [\n {\n name: 'TOURNAMENT',\n type: ELeaderboardType.BI_WEEKLY,\n },\n {\n name: 'STREAK STARS',\n type: ELeaderboardType.ALL_TIME_STREAK,\n },\n {\n name: 'ALL TIME',\n type: ELeaderboardType.ALL_TIME,\n },\n];\n\nconst leaderboardKeyMap: Record<ELeaderboardType, keyof ILeaderboardDetails> = {\n [ELeaderboardType.BI_WEEKLY]: 'biWeekly',\n [ELeaderboardType.ALL_TIME]: 'global',\n [ELeaderboardType.ALL_TIME_STREAK]: 'globalStreak',\n};\n\nexport const Leaderboard = ({\n leaderboardData,\n type = ELeaderboardType.BI_WEEKLY,\n userId,\n onClose,\n isLoading,\n streakInfo,\n}: ILeaderboardProps) => {\n const [currentLeaderBoardIndex, setCurrentLeaderboardIndex] = useState(\n leaderboards.findIndex(leaderboard => type === leaderboard.type),\n );\n\n const [currLeaderboardData, setCurrLeaderboardData] = useState<\n (ILeaderboardPlayerWithPoints | ILeaderboardPlayerWithStreak)[] | []\n >(leaderboardData?.[leaderboardKeyMap[type]]?.leaderboardPlayers || []);\n\n const [currLeaderboardTimeStamps, setCurrLeaderboardTimeStamps] = useState<{\n current: number;\n end: number;\n }>({\n current: 0,\n end: 0,\n });\n\n const [time, setTimer] = useTimer(0);\n const [isTournamentEnded, setIsTournamentEnded] = useState(false);\n const maxPoints = (currLeaderboardData?.[0] as ILeaderboardPlayerWithPoints)?.points;\n const maxStreakDays = (currLeaderboardData?.[0] as ILeaderboardPlayerWithStreak)?.streakDays || 0;\n const { playButtonSound } = useCircleSounds();\n\n const handlePrevious = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev - 1 < 0) {\n return leaderboards.length - 1;\n }\n\n return prev - 1;\n });\n };\n\n const handleNext = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev + 1 === leaderboards.length) {\n return 0;\n }\n\n return prev + 1;\n });\n };\n\n useEffect(() => {\n setTimer(0);\n }, [setTimer]);\n\n useEffect(() => {\n const currType = leaderboards[currentLeaderBoardIndex]?.type;\n\n const mappedKey = currType && leaderboardKeyMap[currType as ELeaderboardType];\n const currLeaderboard = mappedKey && leaderboardData?.[mappedKey];\n\n if (currLeaderboard) {\n const leaderboardList = currLeaderboard.leaderboardPlayers || [];\n\n if (currType === ELeaderboardType.BI_WEEKLY) {\n setCurrLeaderboardTimeStamps({\n current: currLeaderboard.currentTimestamp,\n end: currLeaderboard.endTimestamp,\n });\n\n if (currLeaderboard.currentTimestamp > currLeaderboard.endTimestamp) {\n leaderboardList.splice(10);\n setIsTournamentEnded(true);\n }\n }\n\n setCurrLeaderboardData([...leaderboardList]);\n }\n }, [currentLeaderBoardIndex, leaderboardData]);\n\n return (\n <Styled.Leaderboard>\n <Styled.LeaderboardContainer>\n <Styled.BannerWrapper>\n {/* tournament banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Banner\n isLoading={isLoading || currLeaderboardData.length === 0}\n bgFromTopPosition={-120}\n bgFromRightPosition={-110}\n primaryText={\n isTournamentEnded ? <span>New Tournament</span> : <span>Tournament</span>\n }\n secondaryText={\n isTournamentEnded ? (\n <span>Starts Soon</span>\n ) : (\n <span>\n {' '}\n <Timer\n fromTimestamp={(time as number) + currLeaderboardTimeStamps.current}\n endTimestamp={currLeaderboardTimeStamps.end}\n />{' '}\n {'left'}\n </span>\n )\n }\n lottiePath={BANNER_LOTTIES[ELeaderboardType.BI_WEEKLY]}\n custEle={\n <Styled.TournamentBannerCustContainer>\n <Styled.TrophyWrapper>\n <img src={ILLUSTRATIONS.TROPHY_CIRCLE} />\n </Styled.TrophyWrapper>\n </Styled.TournamentBannerCustContainer>\n }\n />\n )}\n\n {/* top streak banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Streak Stars</span>}\n secondaryText={<span>Top 50</span>}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.ALL_TIME_STREAK]}\n />\n )}\n\n {/* elite circle banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Elite Circle</span>}\n secondaryText={<span>Top 50</span>}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.ALL_TIME]}\n />\n )}\n </Styled.BannerWrapper>\n\n {isLoading && <CircularLoader />}\n\n {!isLoading && currLeaderboardData && (\n <Styled.ItemsWrapper>\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <StreakReductionInfoBar\n startTimestampToday={streakInfo.startTimestampToday}\n streakReduction={streakInfo.streakReduction}\n />\n )}\n {isTournamentEnded &&\n leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Styled.Banner>\n <Text $renderAs=\"ab3\" $color=\"WHITE\">\n Congratulating winners of the last tournament!\n </Text>\n </Styled.Banner>\n )}\n {currLeaderboardData.map(player => {\n return (\n <LeaderboardItemWithObserver\n key={player.rank}\n player={player}\n rank={player.rank}\n maxStreakDays={maxStreakDays}\n maxPoints={maxPoints}\n leaderboardType={leaderboards[currentLeaderBoardIndex]?.type}\n isActive={player.userId === userId}\n />\n );\n })}\n </Styled.ItemsWrapper>\n )}\n\n <Styled.ActionButtonWrapper>\n <NavigationButton\n labels={Object.values(ELeaderboardType)}\n onLeftClick={handlePrevious}\n onRightClick={handleNext}\n currIndex={currentLeaderBoardIndex}\n onClose={onClose}\n disableSwipe={isLoading || currLeaderboardData.length === 0}\n />\n </Styled.ActionButtonWrapper>\n </Styled.LeaderboardContainer>\n </Styled.Leaderboard>\n );\n};\n"],"names":["BANNER_LOTTIES","ELeaderboardType","LOTTIE","leaderboards","leaderboardKeyMap","Leaderboard","leaderboardData","type","userId","onClose","isLoading","streakInfo","currentLeaderBoardIndex","setCurrentLeaderboardIndex","useState","leaderboard","currLeaderboardData","setCurrLeaderboardData","_a","currLeaderboardTimeStamps","setCurrLeaderboardTimeStamps","time","setTimer","useTimer","isTournamentEnded","setIsTournamentEnded","maxPoints","_b","maxStreakDays","_c","playButtonSound","useCircleSounds","handlePrevious","prev","handleNext","useEffect","currType","mappedKey","currLeaderboard","leaderboardList","Styled.Leaderboard","jsxs","Styled.LeaderboardContainer","Styled.BannerWrapper","_d","jsx","Banner","Timer","Styled.TournamentBannerCustContainer","Styled.TrophyWrapper","ILLUSTRATIONS","_e","_f","CircularLoader","Styled.ItemsWrapper","_g","StreakReductionInfoBar","_h","Styled.Banner","Text","player","LeaderboardItemWithObserver","Styled.ActionButtonWrapper","NavigationButton"],"mappings":"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"}
@@ -1,136 +1,146 @@
1
- import { jsxs as r, Fragment as K, jsx as o } from "react/jsx-runtime";
2
- import Q, { memo as Y, useCallback as p } from "react";
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 d from "../../../ui/layout/flex-view.js";
6
- import ee from "../../../ui/separator/separator.js";
7
- import te from "../../../ui/text/text.js";
8
- import oe from "./milestone-widget/milestone-widget.js";
9
- import ne from "./no-active-milestone/no-active-milestone.js";
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 ue = Y(
12
- ({ milestones: e, studentId: u, milestoneType: s, ...A }) => {
12
+ const ge = Y(
13
+ ({ milestones: t, studentId: A, milestoneType: s, ...u }) => {
13
14
  const {
14
- canCreatePlan: m,
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: N,
21
- onCreatePlan: i,
22
- onDelete: v,
23
- onDraftPublish: R,
24
- onEdit: w,
25
- onCreateMilestoneTest: x,
26
- onNodeAttempt: b,
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: P,
30
- onNodeReset: F,
31
- onNodeUnassign: I,
30
+ onNodeReattempt: I,
31
+ onNodeReset: P,
32
+ onNodeUnassign: F,
32
33
  onAssignResources: k,
33
34
  onTestPreview: E,
34
35
  onTestReview: S,
35
- onTestStart: V,
36
- activeMilestoneId: _,
37
- activeTabId: j,
38
- onWidgetTabSelection: z,
36
+ onTestStart: j,
37
+ activeMilestoneId: y,
38
+ activeTabId: G,
39
+ onWidgetTabSelection: V,
39
40
  studentName: c,
40
- teacherName: B,
41
- parentName: G,
42
- userType: a,
43
- courseStream: y,
41
+ teacherName: _,
42
+ parentName: z,
43
+ userType: l,
44
+ courseStream: B,
44
45
  onNodeAssignAsHomework: H
45
- } = A, l = s === "ACTIVE", L = s === "DRAFT", f = Z(ie), O = p(() => {
46
- i == null || i(f);
47
- }, [i, f]), W = p(() => {
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 (!e) return null;
51
- const X = e.some(
52
- (t) => t.milestone_state === "ACTIVE"
53
- ), U = e.some(
54
- (t) => t.milestone_state === "DRAFT"
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__ */ r(K, { children: [
57
- l && !X && /* @__PURE__ */ o(d, { $marginBottom: 40, children: /* @__PURE__ */ o(
58
- ne,
57
+ return /* @__PURE__ */ i(K, { children: [
58
+ d && !X && /* @__PURE__ */ e(m, { $marginBottom: 40, children: /* @__PURE__ */ e(
59
+ re,
59
60
  {
60
- canCreatePlan: m,
61
+ canCreatePlan: a,
61
62
  isDraftMilestonePresent: U,
62
63
  isFiltersAdded: C,
63
- onCreatePlan: i,
64
+ onCreatePlan: r,
64
65
  studentName: c,
65
- userType: a
66
+ userType: l
66
67
  }
67
68
  ) }),
68
- l && /* @__PURE__ */ r(d, { $flexDirection: "row", $justifyContent: "space-between", $marginBottom: 16, children: [
69
- /* @__PURE__ */ r(te, { $renderAs: "ac4", children: [
69
+ d && /* @__PURE__ */ i(m, { $flexDirection: "row", $justifyContent: "space-between", $marginBottom: 16, children: [
70
+ /* @__PURE__ */ i(oe, { $renderAs: "ac4", children: [
70
71
  "Goals (",
71
- e.length,
72
+ t.length,
72
73
  ")"
73
74
  ] }),
74
- a === "TEACHER" && /* @__PURE__ */ r(d, { $flexDirection: "row", $flexGapX: 1, children: [
75
- /* @__PURE__ */ o(
76
- h,
75
+ l === "TEACHER" && /* @__PURE__ */ i(m, { $flexDirection: "row", $flexGapX: 1, children: [
76
+ /* @__PURE__ */ e(
77
+ ee,
77
78
  {
78
- label: "Create Goal",
79
- size: "small",
80
- onClick: O,
81
- disabled: !m
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__ */ o(h, { label: "Add Milestone", size: "small", onClick: W })
94
+ /* @__PURE__ */ e(h, { label: "Add Milestone", size: "small", onClick: W })
85
95
  ] })
86
96
  ] }),
87
- e.map((t, q) => {
88
- const { id: J } = t;
89
- return /* @__PURE__ */ r(Q.Fragment, { children: [
90
- /* @__PURE__ */ o(
91
- oe,
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: t,
94
- studentId: u,
103
+ milestone: o,
104
+ studentId: A,
95
105
  studentName: c,
96
- parentName: G,
97
- teacherName: B,
98
- userType: a,
106
+ parentName: z,
107
+ teacherName: _,
108
+ userType: l,
99
109
  onAddOutcome: n,
100
- onChapterClick: N,
101
- isMilestoneActive: l || L,
110
+ onChapterClick: v,
111
+ isMilestoneActive: d || L,
102
112
  milestoneType: s,
103
- onEdit: w,
104
- onCreateMilestoneTest: x,
113
+ onEdit: b,
114
+ onCreateMilestoneTest: R,
105
115
  onAddChapter: T,
106
- onDelete: v,
107
- onDraftPublish: R,
116
+ onDelete: w,
117
+ onDraftPublish: N,
108
118
  isClassOngoing: g,
109
119
  isStudentPresent: M,
110
120
  onAssignResources: k,
111
- onNodeAttempt: b,
121
+ onNodeAttempt: x,
112
122
  onNodeView: D,
113
123
  onNodeReview: $,
114
- onNodeReattempt: P,
115
- onNodeReset: F,
116
- onNodeUnassign: I,
124
+ onNodeReattempt: I,
125
+ onNodeReset: P,
126
+ onNodeUnassign: F,
117
127
  onNodeAssignAsHomework: H,
118
128
  onTestPreview: E,
119
129
  onTestReview: S,
120
- onTestStart: V,
121
- courseStream: y,
122
- activeMilestoneId: _,
123
- activeTabId: j,
124
- onWidgetTabSelection: z
130
+ onTestStart: j,
131
+ courseStream: B,
132
+ activeMilestoneId: y,
133
+ activeTabId: G,
134
+ onWidgetTabSelection: V
125
135
  }
126
136
  ),
127
- q !== e.length - 1 && /* @__PURE__ */ o(ee, { heightX: 2 })
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
- ue as default
144
+ ge as default
135
145
  };
136
146
  //# sourceMappingURL=milestone-list.js.map
@@ -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 label=\"Create Goal\"\n size=\"small\"\n onClick={handleCreatePlan}\n disabled={!canCreatePlan}\n />\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","TextButton","idx","milestoneId","React","MilestoneWidget","Separator"],"mappings":"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"}
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":"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"}
@@ -1,28 +1,29 @@
1
- import { jsxs as n, jsx as r } from "react/jsx-runtime";
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 u } from "../../../../../assets/illustrations/illustrations.js";
5
- import b from "../../../../hooks/use-lazy-ref.js";
6
- import g from "../../../../ui/buttons/button/button.js";
7
- import x from "../../../../ui/image/image.js";
8
- import a from "../../../../ui/layout/flex-view.js";
9
- import { getNoMilestoneTitle as w } from "../../../create/utils/index.js";
10
- import { StyledText as A } from "./no-active-milestone-styled.js";
11
- import L from "../../../../../node_modules/uuid/dist/esm-browser/v4.js";
12
- const T = $.span`
13
- display: ${({ shouldShow: e }) => e ? "block" : "none"};
14
- `, U = f(
15
- ({ userType: e, studentName: m, isDraftMilestonePresent: t, ...s }) => {
16
- const { canCreatePlan: d, onCreatePlan: o, isFiltersAdded: l } = s, i = b(L), c = h(() => {
17
- o == null || o(i);
18
- }, [o, i]), p = w(
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
- t,
21
- m,
22
- e
21
+ r,
22
+ s,
23
+ o
23
24
  );
24
- return /* @__PURE__ */ n(
25
- a,
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__ */ n(a, { $flexGapX: 1, children: [
37
- /* @__PURE__ */ r(A, { $renderAs: "ab2", $widthX: 19.5, children: p }),
38
- e === "TEACHER" && /* @__PURE__ */ r(T, { shouldShow: !l, children: !t && /* @__PURE__ */ r(
39
- g,
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: "secondary",
42
- size: "small",
43
- label: "Add a Goal",
44
- onClick: c,
45
- disabled: !d
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__ */ r(
50
- x,
59
+ /* @__PURE__ */ e(
60
+ g,
51
61
  {
52
62
  withLoader: !1,
53
63
  width: 240,
54
64
  height: 100,
55
- src: u.PUZZLE_STUDENT,
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
- U as default
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 <Button\n renderAs=\"secondary\"\n size=\"small\"\n label=\"Add a Goal\"\n onClick={handleCreatePlan}\n disabled={!canCreatePlan}\n />\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","Button","Image","ILLUSTRATIONS"],"mappings":";;;;;;;;;;;AAcA,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,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,SAASR;AAAA,gBACT,UAAU,CAACN;AAAA,cAAA;AAAA,YAAA,GAGjB;AAAA,UAAA,GAEJ;AAAA,UAEA,gBAAAY;AAAA,YAACG;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
+ {"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 d } from "react";
2
- import c from "../../../hooks/use-is-unmounted.js";
3
- const m = (s) => {
4
- const r = c();
5
- return { forceAppend: d(
6
- ({ question: t, response: a, callback: o }) => {
7
- const i = JSON.parse(s);
8
- let p = !1;
9
- i.type = "local_practice";
10
- const n = window.LearnosityApp.init(i, {
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 (!r.current) {
13
- if (!p)
14
- n.append({
15
- questions: [t],
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
- [t.response_id]: {
18
- ...a
19
+ [o.response_id]: {
20
+ ...u
19
21
  }
20
22
  }
21
23
  });
22
24
  else {
23
- const e = n.question(t.response_id);
25
+ const e = n.question(o.response_id);
24
26
  e && (e.disable(), e.validate({
25
27
  showCorrectAnswers: !0
26
- })), n.renderMath("mathjax"), o();
28
+ })), n.renderMath("mathjax"), a === "after" && s && s.childNodes.forEach((f) => {
29
+ f !== r && f.remove();
30
+ }), p();
27
31
  }
28
- p = !0;
32
+ d = !0;
29
33
  }
30
34
  },
31
35
  errorListener: (e) => {
32
- r.current || o(e);
36
+ t.current || p(e);
33
37
  }
34
38
  });
35
39
  },
36
- [s, r]
40
+ [i, t]
37
41
  ) };
38
42
  };
39
43
  export {
40
- m as default
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":";;AA0BA,MAAMA,IAA4C,CAAiBC,MAAA;AACjE,QAAMC,IAAeC;AAgDrB,SAAO,EAAE,aA/CWC;AAAA,IAClB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,UAAAC,QAAe;AAC9B,YAAAC,IAAgB,KAAK,MAAMP,CAAa;AAC9C,UAAIQ,IAAyB;AAE7B,MAAAD,EAAc,OAAO;AAErB,YAAME,IAAa,OAAO,cAAc,KAAKF,GAAe;AAAA,QAC1D,eAAe,MAAM;AACnB,cAAI,CAAAN,EAAa,SAEjB;AAAA,gBAAI,CAACO;AACH,cAAAC,EAAW,OAAO;AAAA,gBAChB,WAAW,CAACL,CAAQ;AAAA,gBACpB,WAAW;AAAA,kBACT,CAACA,EAAS,WAAW,GAAG;AAAA,oBACtB,GAAGC;AAAA,kBACL;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,iBACI;AACL,oBAAMK,IAAID,EAAW,SAASL,EAAS,WAAW;AAElD,cAAIM,MACFA,EAAE,QAAQ,GACVA,EAAE,SAAS;AAAA,gBACT,oBAAoB;AAAA,cAAA,CACrB,IAGHD,EAAW,WAAW,SAAS,GAEtBH;YACX;AAEyB,YAAAE,IAAA;AAAA;AAAA,QAC3B;AAAA,QACA,eAAe,CAACG,MAA4B;AAC1C,UAAIV,EAAa,WAEjBK,EAASK,CAAyB;AAAA,QACpC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAACX,GAAeC,CAAY;AAAA,EAAA,EAGT;AACvB;"}
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 S } from "react/jsx-runtime";
2
- import { memo as g, useRef as I, useCallback as M, useEffect as m } from "react";
3
- import Q from "../hooks/use-learnosity-append.js";
4
- import { LearnosityQuestionContainer as $ } from "./worksheet-question-styled.js";
5
- const D = g(
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: R,
7
+ signedRequest: S,
8
8
  appended: o,
9
- canRender: E,
9
+ canRender: I,
10
10
  canForceAppend: a,
11
- question: n,
11
+ question: t,
12
12
  response: s,
13
13
  learnosity: w,
14
- isConceptIntro: h,
15
- simState: u,
14
+ isConceptIntro: M,
15
+ simState: c,
16
16
  onMediaStateChange: _
17
17
  }) => {
18
- const c = I(null), t = I(s), { forceAppend: p } = Q(R), d = M(
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: l } = i ?? {};
21
- l === "SIM_IS_READY" ? r.postMessage(
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: u
26
+ simulationState: c
27
27
  }
28
28
  },
29
29
  "*"
30
- ) : l === "SIM_STATE_UPDATE" && _(n, "SIMULATION", e.data.payload);
30
+ ) : u === "SIM_STATE_UPDATE" && _(t, "SIMULATION", e.data.payload);
31
31
  },
32
- [a, u, _, n]
33
- ), y = M(
32
+ [a, c, _, t]
33
+ ), y = A(
34
34
  (e) => {
35
35
  window.requestAnimationFrame(() => {
36
- var i, l, T;
36
+ var i, u, T;
37
37
  const r = document.createElement("div");
38
- r.classList.add("learnosity-response"), r.classList.add(`question-${n.response_id}`), (l = (i = c.current) == null ? void 0 : i.children[0]) == null || l.querySelectorAll("svg path").forEach((f) => {
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 = c.current) == null || T.append(r), p({
41
- question: n,
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
- var v, A;
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, n]
51
- ), L = I(!1);
50
+ [p, t]
51
+ ), L = E(!1);
52
52
  return m(() => {
53
53
  let e;
54
- return E && (L.current || (e = window.requestAnimationFrame(() => {
55
- const r = t.current ?? s;
54
+ return I && (L.current || (e = window.requestAnimationFrame(() => {
55
+ const r = n.current ?? s;
56
56
  L.current = !0, w.appendQuestion({
57
- questions: [n],
57
+ questions: [t],
58
58
  ...r ? {
59
59
  responses: {
60
- [n.response_id]: {
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
- }, [E, w, n, s]), m(() => {
70
+ }, [I, w, t, s]), m(() => {
71
71
  var e;
72
- return o && (t.current = void 0, (e = c.current) != null && e.querySelector("iframe") && window.addEventListener("message", d)), () => {
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 (u && o) {
78
- const i = (e = c.current) == null ? void 0 : e.querySelector("iframe");
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: u
82
+ payload: c
83
83
  },
84
84
  "*"
85
85
  ));
86
86
  }
87
- }, [o, a, u]), m(() => {
88
- o && s && a && s !== t.current && (t.current ? t.current = s : (t.current = s, y(s)));
89
- }, [o, a, s, y]), /* @__PURE__ */ S(
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: c,
93
- $isConceptIntro: h,
92
+ ref: l,
93
+ $isConceptIntro: M,
94
94
  $isTeacher: a,
95
- children: /* @__PURE__ */ S("div", { className: `learnosity-response question-${n.response_id}` })
95
+ children: /* @__PURE__ */ v("div", { className: `learnosity-response question-${t.response_id}` })
96
96
  }
97
97
  );
98
98
  }
99
99
  );
100
100
  export {
101
- D as default
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 path.id = `${path.id} + temp`;\n });\n\n containerElementRef.current?.append(questionElement);\n forceAppend({\n question,\n response: newResponse,\n callback: error => {\n if (error) return;\n\n containerElementRef.current?.children[0]?.remove();\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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"}
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 = "biWeekly",
353
+ BI_WEEKLY = "bi_weekly",
354
354
  ALL_TIME = "global",
355
355
  ALL_TIME_STREAK = "globalStreak"
356
356
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.1.21",
3
+ "version": "3.1.22-akm-2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"