@cuemath/leap 3.3.15 → 3.3.16-m-af
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/assets/lottie/lottie.js +2 -2
- package/dist/assets/lottie/lottie.js.map +1 -1
- package/dist/features/auth/comps/pill-button/pill-button.js +19 -19
- package/dist/features/auth/comps/pill-button/pill-button.js.map +1 -1
- package/dist/features/auth/pla-signup/pla-analytics-events.js +4 -5
- package/dist/features/auth/pla-signup/pla-analytics-events.js.map +1 -1
- package/dist/features/auth/pla-signup/signup-header/signup-header.js +1 -1
- package/dist/features/auth/pla-signup/signup-header/signup-header.js.map +1 -1
- package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js +24 -24
- package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js.map +1 -1
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +86 -98
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
- package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +42 -45
- package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +1 -1
- package/dist/features/parent-dashboard/parent-dashboard-types.js +2 -3
- package/dist/features/parent-dashboard/parent-dashboard-types.js.map +1 -1
- package/dist/features/parent-dashboard/parent-dashboard-view.js +127 -139
- package/dist/features/parent-dashboard/parent-dashboard-view.js.map +1 -1
- package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js +7 -8
- package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js.map +1 -1
- package/dist/features/trial-session/comps/pla/session-summary/session-summary.js +26 -27
- package/dist/features/trial-session/comps/pla/session-summary/session-summary.js.map +1 -1
- package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +16 -16
- package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +1 -1
- package/dist/features/trial-session/comps/session-report/report-information/report-information-styled.js +13 -15
- package/dist/features/trial-session/comps/session-report/report-information/report-information-styled.js.map +1 -1
- package/dist/features/trial-session/comps/session-report/report-information/report-information.js +1 -1
- package/dist/features/trial-session/comps/session-report/report-information/report-information.js.map +1 -1
- package/dist/index.d.ts +15 -52
- package/dist/index.js +262 -276
- package/dist/index.js.map +1 -1
- package/dist/node_modules/query-string/base.js +1 -1
- package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +1 -0
- package/dist/node_modules/uuid/dist/esm-browser/regex.js +5 -0
- package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
- package/dist/node_modules/uuid/dist/esm-browser/rng.js +2 -3
- package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js +10 -6
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/v4.js +9 -12
- package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/validate.js +8 -0
- package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
- package/dist/static/error.cbe1ddde.json +1 -0
- package/dist/static/username.9e034d51.json +1 -0
- package/package.json +1 -1
- package/dist/features/parent-dashboard/api/get-student-profile-summary.js +0 -9
- package/dist/features/parent-dashboard/api/get-student-profile-summary.js.map +0 -1
- package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction-styled.js +0 -10
- package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction-styled.js.map +0 -1
- package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js +0 -42
- package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js.map +0 -1
- package/dist/features/parent-dashboard/hooks/use-student-profile-summary-data.js +0 -24
- package/dist/features/parent-dashboard/hooks/use-student-profile-summary-data.js.map +0 -1
- package/dist/features/parent-dashboard/modals/help-and-support/help-and-support.js +0 -40
- package/dist/features/parent-dashboard/modals/help-and-support/help-and-support.js.map +0 -1
- package/dist/features/parent-dashboard/modals/student-login-info/student-login-info.js +0 -44
- package/dist/features/parent-dashboard/modals/student-login-info/student-login-info.js.map +0 -1
- package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary-helpers.js +0 -32
- package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary-helpers.js.map +0 -1
- package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary-styled.js +0 -12
- package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary-styled.js.map +0 -1
- package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary.js +0 -44
- package/dist/features/parent-dashboard/modals/student-profile-summary/student-profile-summary.js.map +0 -1
- package/dist/features/parent-dashboard/modals/trial-report/trial-report-styled.js +0 -13
- package/dist/features/parent-dashboard/modals/trial-report/trial-report-styled.js.map +0 -1
- package/dist/features/parent-dashboard/modals/trial-report/trial-report.js +0 -28
- package/dist/features/parent-dashboard/modals/trial-report/trial-report.js.map +0 -1
- package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-constants.js +0 -43
- package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-constants.js.map +0 -1
- package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js +0 -59
- package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js.map +0 -1
- package/dist/features/parent-dashboard/modals/tutor-change/tutor-change.js +0 -86
- package/dist/features/parent-dashboard/modals/tutor-change/tutor-change.js.map +0 -1
- package/dist/node_modules/decode-uri-component/index.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/native.js +0 -7
- package/dist/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
- package/dist/static/error.dd744fa5.json +0 -1
- package/dist/static/username.2c755605.json +0 -1
- /package/dist/node_modules/{decode-uri-component → query-string/node_modules/decode-uri-component}/index.js +0 -0
|
@@ -1,113 +1,101 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
[
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
26
|
-
[
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
1
|
+
import { useMemo as v, useRef as O, useCallback as c, useEffect as h } from "react";
|
|
2
|
+
import D from "../../../hooks/use-audio-player.js";
|
|
3
|
+
import { useAutoPlayPermission as N } from "../../../hooks/use-auto-play-permission/use-auto-play-permission.js";
|
|
4
|
+
import { CircleSoundKeyMapper as R, SWIPE_SOUND_ORDER as p } from "./constants.js";
|
|
5
|
+
import { fadeInSound as T, fadeOutSound as G } from "./helper.js";
|
|
6
|
+
import { CircleSoundKey as u } from "./use-circle-sounds-enums.js";
|
|
7
|
+
let E = 0;
|
|
8
|
+
const s = {
|
|
9
|
+
[u.BACKGROUND]: null,
|
|
10
|
+
[u.BACKGROUND_RUSHHOUR]: null,
|
|
11
|
+
[u.TUTORIAL]: null,
|
|
12
|
+
[u.SWIPE_01]: null,
|
|
13
|
+
[u.SWIPE_02]: null,
|
|
14
|
+
[u.SWIPE_03]: null,
|
|
15
|
+
[u.SWIPE_04]: null,
|
|
16
|
+
[u.SWIPE_DOWN]: null,
|
|
17
|
+
[u.TOGGLE]: null,
|
|
18
|
+
[u.POINTS_AWARDED]: null,
|
|
19
|
+
[u.POINTS_ADDED]: null,
|
|
20
|
+
[u.GAME_CARD_CLICK]: null,
|
|
21
|
+
[u.CLOCK_IN]: null,
|
|
22
|
+
[u.CLOCK_OUT]: null,
|
|
23
|
+
[u.ACCURACY_IN]: null,
|
|
24
|
+
[u.ACCURACY_OUT]: null,
|
|
25
|
+
[u.STREAK_IN]: null,
|
|
26
|
+
[u.STREAK_OUT]: null,
|
|
27
|
+
[u.ACCURACY_INTRO]: null,
|
|
28
|
+
[u.ACCURACY_TARGET]: null,
|
|
29
|
+
[u.TIME_INTRO]: null,
|
|
30
|
+
[u.TIME_TARGET]: null,
|
|
31
|
+
[u.METER_FILL]: null,
|
|
32
|
+
[u.YOUR_SCORE]: null,
|
|
33
|
+
[u.HIGH_SCORE]: null,
|
|
34
|
+
[u.KEEP_IT_UP]: null,
|
|
35
|
+
[u.DOING_GREAT]: null,
|
|
36
|
+
[u.ALL_DONE]: null
|
|
37
|
+
}, S = {}, g = () => {
|
|
38
|
+
const { canAutoPlayAudio: I } = N(), m = v(
|
|
39
|
+
() => Object.entries(R).map(([n, t]) => ({ name: n, url: t })),
|
|
40
|
+
[]
|
|
41
|
+
), _ = D(m), i = O(/* @__PURE__ */ new Set()), r = O({}), A = c((n) => {
|
|
42
|
+
s[n] || (s[n] = new Audio(R[n]));
|
|
43
|
+
}, []), o = c(
|
|
44
|
+
(n, t = !0, e = !1) => {
|
|
45
|
+
if (I)
|
|
46
|
+
try {
|
|
47
|
+
_(n);
|
|
48
|
+
return;
|
|
49
|
+
} catch {
|
|
50
|
+
A(n);
|
|
51
|
+
const l = s[n];
|
|
52
|
+
if (!l) return;
|
|
53
|
+
if (e && (l.loop = e), r.current[n] && clearInterval(r.current[n]), !l.paused && l.currentTime > 0 && !l.ended)
|
|
54
|
+
return t ? l.volume = 1 : r.current[n] = T(l), l;
|
|
55
|
+
l.volume = t ? 1 : 0;
|
|
56
|
+
const C = l.play();
|
|
57
|
+
return C && (S[n] = C), t || (r.current[n] = T(l)), l;
|
|
53
58
|
}
|
|
54
|
-
return u;
|
|
55
|
-
}
|
|
56
|
-
u.volume = l ? 1 : 0;
|
|
57
|
-
const A = u.play();
|
|
58
|
-
if (A && (f[t] = A), !l) {
|
|
59
|
-
const I = p(u);
|
|
60
|
-
o.current[t] = I;
|
|
61
|
-
}
|
|
62
|
-
return u;
|
|
63
59
|
},
|
|
64
|
-
[
|
|
65
|
-
), a =
|
|
66
|
-
const e =
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
[A, I, _]
|
|
61
|
+
), a = c((n, t) => {
|
|
62
|
+
const e = s[n];
|
|
63
|
+
if (e) {
|
|
64
|
+
if (r.current[n] && clearInterval(r.current[n]), t) {
|
|
65
|
+
e.pause();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
r.current[n] = G(e);
|
|
71
69
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}, []), d = s(
|
|
75
|
-
(t, l = !0) => {
|
|
70
|
+
}, []), d = c(
|
|
71
|
+
(n, t = !0) => {
|
|
76
72
|
var e;
|
|
77
|
-
if (
|
|
78
|
-
(e =
|
|
79
|
-
a(t, l);
|
|
80
|
-
}).catch((u) => {
|
|
81
|
-
console.log("sound not playing", u);
|
|
73
|
+
if (S[n] !== void 0) {
|
|
74
|
+
(e = S[n]) == null || e.then(() => a(n, t)).catch(() => {
|
|
82
75
|
});
|
|
83
76
|
return;
|
|
84
77
|
}
|
|
85
|
-
a(
|
|
78
|
+
a(n, t);
|
|
86
79
|
},
|
|
87
80
|
[a]
|
|
88
|
-
),
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
}, [
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
e && !e.paused && (d(
|
|
95
|
-
}),
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
document.addEventListener("visibilitychange", E);
|
|
101
|
-
const t = o.current;
|
|
81
|
+
), P = c(() => {
|
|
82
|
+
const n = p[E] || u.SWIPE_01;
|
|
83
|
+
E = (E + 1) % p.length, o(n);
|
|
84
|
+
}, [o]), U = c(() => o(u.TOGGLE), [o]), f = c(() => {
|
|
85
|
+
const n = document.visibilityState;
|
|
86
|
+
n === "hidden" && Object.entries(s).forEach(([t, e]) => {
|
|
87
|
+
e && !e.paused && (d(t, !0), i.current.add(t));
|
|
88
|
+
}), n === "visible" && (i.current.forEach((t) => o(t)), i.current.clear());
|
|
89
|
+
}, [o, d]);
|
|
90
|
+
return h(() => {
|
|
91
|
+
document.addEventListener("visibilitychange", f);
|
|
92
|
+
const n = r.current;
|
|
102
93
|
return () => {
|
|
103
|
-
document.removeEventListener("visibilitychange",
|
|
104
|
-
l && clearInterval(l);
|
|
105
|
-
});
|
|
94
|
+
document.removeEventListener("visibilitychange", f), Object.values(n).forEach((t) => t && clearInterval(t));
|
|
106
95
|
};
|
|
107
|
-
}, [
|
|
96
|
+
}, [f]), { playSwipeSound: P, play: o, stop: d, playButtonSound: U };
|
|
108
97
|
};
|
|
109
98
|
export {
|
|
110
|
-
|
|
111
|
-
b as useCircleSounds
|
|
99
|
+
g as useCircleSounds
|
|
112
100
|
};
|
|
113
101
|
//# sourceMappingURL=use-circle-sounds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import type { TimeoutMap } from './use-circle-sound-types';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { useAutoPlayPermission } from '../../../hooks/use-auto-play-permission/use-auto-play-permission';\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\nimport { fadeInSound, fadeOutSound } from './helper';\nimport { CircleSoundKey } from './use-circle-sounds-enums';\n\nlet swipeSoundIndex = 0;\n\nexport const soundMapper: Record<keyof typeof CircleSoundKeyMapper, null | HTMLAudioElement> = {\n [CircleSoundKey.BACKGROUND]: null,\n [CircleSoundKey.BACKGROUND_RUSHHOUR]: null,\n [CircleSoundKey.TUTORIAL]: null,\n [CircleSoundKey.SWIPE_01]: null,\n [CircleSoundKey.SWIPE_02]: null,\n [CircleSoundKey.SWIPE_03]: null,\n [CircleSoundKey.SWIPE_04]: null,\n [CircleSoundKey.SWIPE_DOWN]: null,\n [CircleSoundKey.TOGGLE]: null,\n [CircleSoundKey.POINTS_AWARDED]: null,\n [CircleSoundKey.POINTS_ADDED]: null,\n [CircleSoundKey.GAME_CARD_CLICK]: null,\n [CircleSoundKey.CLOCK_IN]: null,\n [CircleSoundKey.CLOCK_OUT]: null,\n [CircleSoundKey.ACCURACY_IN]: null,\n [CircleSoundKey.ACCURACY_OUT]: null,\n [CircleSoundKey.STREAK_IN]: null,\n [CircleSoundKey.STREAK_OUT]: null,\n [CircleSoundKey.ACCURACY_INTRO]: null,\n [CircleSoundKey.ACCURACY_TARGET]: null,\n [CircleSoundKey.TIME_INTRO]: null,\n [CircleSoundKey.TIME_TARGET]: null,\n [CircleSoundKey.METER_FILL]: null,\n [CircleSoundKey.YOUR_SCORE]: null,\n [CircleSoundKey.HIGH_SCORE]: null,\n [CircleSoundKey.KEEP_IT_UP]: null,\n [CircleSoundKey.DOING_GREAT]: null,\n [CircleSoundKey.ALL_DONE]: null,\n};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const { canAutoPlayAudio: canPlayAudio } = useAutoPlayPermission();\n\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n const loadedSound = new Audio(CircleSoundKeyMapper[key]);\n\n soundMapper[key] = loadedSound;\n }\n }, []);\n\n const pausedSoundsRef = useRef<Set<CircleSoundKey>>(new Set());\n const timeoutRefs = useRef<TimeoutMap>({});\n\n const play = useCallback(\n (key: CircleSoundKey, immediately: boolean = true, loop = false) => {\n loadSound(key);\n const soundInstance = soundMapper[key];\n\n if (!soundInstance || !canPlayAudio) return;\n\n // this makes sure that it keeps the default loop value at the time it was requested to be loaded\n // helps in visibility change where we only want to resume\n if (loop) {\n soundInstance.loop = loop;\n }\n\n if (timeoutRefs.current[key]) {\n clearInterval(timeoutRefs.current[key]);\n }\n\n // resume sound\n if (!soundInstance.paused && soundInstance.currentTime > 0 && !soundInstance.ended) {\n if (!immediately) {\n const intervalId = fadeInSound(soundInstance);\n\n timeoutRefs.current[key] = intervalId;\n } else {\n soundInstance.volume = 1;\n }\n\n return soundInstance;\n }\n\n // play sound\n soundInstance.volume = immediately ? 1 : 0;\n const promise = soundInstance.play();\n\n if (promise) {\n soundInstancePromise[key] = promise;\n }\n\n if (!immediately) {\n const intervalId = fadeInSound(soundInstance);\n\n timeoutRefs.current[key] = intervalId;\n }\n\n return soundInstance;\n },\n [loadSound, canPlayAudio],\n );\n\n const handleSoundStop = useCallback((key: CircleSoundKey, immediately: boolean) => {\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n if (timeoutRefs.current[key]) {\n clearInterval(timeoutRefs.current[key]);\n }\n\n if (immediately) {\n soundInstance.pause();\n\n return;\n }\n\n const intervalId = fadeOutSound(soundInstance);\n\n timeoutRefs.current[key] = intervalId;\n }, []);\n\n const stop = useCallback(\n (key: CircleSoundKey, immediately: boolean = true) => {\n // if play returned a promise\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]\n ?.then(() => {\n handleSoundStop(key, immediately);\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.log('sound not playing', err);\n });\n\n return;\n }\n\n handleSoundStop(key, immediately);\n },\n [handleSoundStop],\n );\n\n const playSwipeSound = useCallback(() => {\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n swipeSoundIndex = (swipeSoundIndex + 1) % SWIPE_SOUND_ORDER.length;\n\n play(key);\n }, [play]);\n\n const playButtonSound = useCallback(() => {\n const sound = play(CircleSoundKey.TOGGLE);\n\n return sound;\n }, [play]);\n\n const handleVisibilityChange = useCallback(() => {\n const visibilityState = document.visibilityState;\n\n if (visibilityState === 'hidden') {\n Object.entries(soundMapper).forEach(([key, sound]) => {\n if (sound && !sound.paused) {\n stop(key as CircleSoundKey, true);\n pausedSoundsRef.current.add(key as CircleSoundKey);\n }\n });\n }\n\n if (visibilityState === 'visible') {\n pausedSoundsRef.current.forEach(key => {\n play(key);\n });\n pausedSoundsRef.current.clear();\n }\n }, [play, stop]);\n\n useEffect(() => {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n const timeouts = timeoutRefs.current;\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n Object.values(timeouts).forEach(id => {\n id && clearInterval(id);\n });\n };\n }, [handleVisibilityChange]);\n\n return { playSwipeSound, play, stop, playButtonSound };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","canPlayAudio","useAutoPlayPermission","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","pausedSoundsRef","useRef","timeoutRefs","play","immediately","loop","soundInstance","intervalId","fadeInSound","promise","handleSoundStop","fadeOutSound","stop","_a","err","playSwipeSound","SWIPE_SOUND_ORDER","playButtonSound","handleVisibilityChange","visibilityState","sound","useEffect","timeouts","id"],"mappings":";;;;;AASA,IAAIA,IAAkB;AAEf,MAAMC,IAAkF;AAAA,EAC7F,CAACC,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,mBAAmB,GAAG;AAAA,EACtC,CAACA,EAAe,QAAQ,GAAG;AAAA,EAC3B,CAACA,EAAe,QAAQ,GAAG;AAAA,EAC3B,CAACA,EAAe,QAAQ,GAAG;AAAA,EAC3B,CAACA,EAAe,QAAQ,GAAG;AAAA,EAC3B,CAACA,EAAe,QAAQ,GAAG;AAAA,EAC3B,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,MAAM,GAAG;AAAA,EACzB,CAACA,EAAe,cAAc,GAAG;AAAA,EACjC,CAACA,EAAe,YAAY,GAAG;AAAA,EAC/B,CAACA,EAAe,eAAe,GAAG;AAAA,EAClC,CAACA,EAAe,QAAQ,GAAG;AAAA,EAC3B,CAACA,EAAe,SAAS,GAAG;AAAA,EAC5B,CAACA,EAAe,WAAW,GAAG;AAAA,EAC9B,CAACA,EAAe,YAAY,GAAG;AAAA,EAC/B,CAACA,EAAe,SAAS,GAAG;AAAA,EAC5B,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,cAAc,GAAG;AAAA,EACjC,CAACA,EAAe,eAAe,GAAG;AAAA,EAClC,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,WAAW,GAAG;AAAA,EAC9B,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,UAAU,GAAG;AAAA,EAC7B,CAACA,EAAe,WAAW,GAAG;AAAA,EAC9B,CAACA,EAAe,QAAQ,GAAG;AAC7B,GAEMC,IAA0F,CAAA,GAEnFC,IAAkB,MAAM;AACnC,QAAM,EAAE,kBAAkBC,EAAa,IAAIC,EAAsB,GAE3DC,IAAYC,EAAY,CAACC,MAAwB;AACjD,QAAA,CAACR,EAAYQ,CAAG,GAAG;AACrB,YAAMC,IAAc,IAAI,MAAMC,EAAqBF,CAAG,CAAC;AAEvD,MAAAR,EAAYQ,CAAG,IAAIC;AAAA,IACrB;AAAA,EACF,GAAG,CAAE,CAAA,GAECE,IAAkBC,EAAgC,oBAAA,IAAK,CAAA,GACvDC,IAAcD,EAAmB,CAAA,CAAE,GAEnCE,IAAOP;AAAA,IACX,CAACC,GAAqBO,IAAuB,IAAMC,IAAO,OAAU;AAClE,MAAAV,EAAUE,CAAG;AACP,YAAAS,IAAgBjB,EAAYQ,CAAG;AAEjC,UAAA,CAACS,KAAiB,CAACb,EAAc;AAajC,UATAY,MACFC,EAAc,OAAOD,IAGnBH,EAAY,QAAQL,CAAG,KACX,cAAAK,EAAY,QAAQL,CAAG,CAAC,GAIpC,CAACS,EAAc,UAAUA,EAAc,cAAc,KAAK,CAACA,EAAc,OAAO;AAClF,YAAKF;AAKH,UAAAE,EAAc,SAAS;AAAA,aALP;AACV,gBAAAC,IAAaC,EAAYF,CAAa;AAEhC,UAAAJ,EAAA,QAAQL,CAAG,IAAIU;AAAA,QAAA;AAKtB,eAAAD;AAAA,MACT;AAGc,MAAAA,EAAA,SAASF,IAAc,IAAI;AACnC,YAAAK,IAAUH,EAAc;AAM9B,UAJIG,MACFlB,EAAqBM,CAAG,IAAIY,IAG1B,CAACL,GAAa;AACV,cAAAG,IAAaC,EAAYF,CAAa;AAEhC,QAAAJ,EAAA,QAAQL,CAAG,IAAIU;AAAA,MAC7B;AAEO,aAAAD;AAAA,IACT;AAAA,IACA,CAACX,GAAWF,CAAY;AAAA,EAAA,GAGpBiB,IAAkBd,EAAY,CAACC,GAAqBO,MAAyB;AAC3E,UAAAE,IAAgBjB,EAAYQ,CAAG;AAErC,QAAI,CAACS,EAAe;AAMpB,QAJIJ,EAAY,QAAQL,CAAG,KACX,cAAAK,EAAY,QAAQL,CAAG,CAAC,GAGpCO,GAAa;AACf,MAAAE,EAAc,MAAM;AAEpB;AAAA,IACF;AAEM,UAAAC,IAAaI,EAAaL,CAAa;AAEjC,IAAAJ,EAAA,QAAQL,CAAG,IAAIU;AAAA,EAC7B,GAAG,CAAE,CAAA,GAECK,IAAOhB;AAAA,IACX,CAACC,GAAqBO,IAAuB,OAAS;;AAEhD,UAAAb,EAAqBM,CAAG,MAAM,QAAW;AACtB,SAAAgB,IAAAtB,EAAAM,CAAG,MAAH,QAAAgB,EACjB,KAAK,MAAM;AACX,UAAAH,EAAgBb,GAAKO,CAAW;AAAA,QAAA,GAEjC,MAAM,CAAOU,MAAA;AAEJ,kBAAA,IAAI,qBAAqBA,CAAG;AAAA,QAAA;AAGxC;AAAA,MACF;AAEA,MAAAJ,EAAgBb,GAAKO,CAAW;AAAA,IAClC;AAAA,IACA,CAACM,CAAe;AAAA,EAAA,GAGZK,IAAiBnB,EAAY,MAAM;AACvC,UAAMC,IAAMmB,EAAkB5B,CAAe,KAAKE,EAAe;AAE9C,IAAAF,KAAAA,IAAkB,KAAK4B,EAAkB,QAE5Db,EAAKN,CAAG;AAAA,EAAA,GACP,CAACM,CAAI,CAAC,GAEHc,IAAkBrB,EAAY,MACpBO,EAAKb,EAAe,MAAM,GAGvC,CAACa,CAAI,CAAC,GAEHe,IAAyBtB,EAAY,MAAM;AAC/C,UAAMuB,IAAkB,SAAS;AAEjC,IAAIA,MAAoB,YACf,OAAA,QAAQ9B,CAAW,EAAE,QAAQ,CAAC,CAACQ,GAAKuB,CAAK,MAAM;AAChD,MAAAA,KAAS,CAACA,EAAM,WAClBR,EAAKf,GAAuB,EAAI,GAChBG,EAAA,QAAQ,IAAIH,CAAqB;AAAA,IACnD,CACD,GAGCsB,MAAoB,cACNnB,EAAA,QAAQ,QAAQ,CAAOH,MAAA;AACrC,MAAAM,EAAKN,CAAG;AAAA,IAAA,CACT,GACDG,EAAgB,QAAQ;EAC1B,GACC,CAACG,GAAMS,CAAI,CAAC;AAEf,SAAAS,EAAU,MAAM;AACL,aAAA,iBAAiB,oBAAoBH,CAAsB;AACpE,UAAMI,IAAWpB,EAAY;AAE7B,WAAO,MAAM;AACF,eAAA,oBAAoB,oBAAoBgB,CAAsB,GACvE,OAAO,OAAOI,CAAQ,EAAE,QAAQ,CAAMC,MAAA;AACpC,QAAAA,KAAM,cAAcA,CAAE;AAAA,MAAA,CACvB;AAAA,IAAA;AAAA,EACH,GACC,CAACL,CAAsB,CAAC,GAEpB,EAAE,gBAAAH,GAAgB,MAAAZ,GAAM,MAAAS,GAAM,iBAAAK,EAAgB;AACvD;"}
|
|
1
|
+
{"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import type { TimeoutMap } from './use-circle-sound-types';\n\nimport { useCallback, useEffect, useRef, useMemo } from 'react';\n\nimport useAudioPlayer from '../../../hooks/use-audio-player';\nimport { useAutoPlayPermission } from '../../../hooks/use-auto-play-permission/use-auto-play-permission';\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\nimport { fadeInSound, fadeOutSound } from './helper';\nimport { CircleSoundKey } from './use-circle-sounds-enums';\n\nlet swipeSoundIndex = 0;\n\nconst soundMapper: Record<keyof typeof CircleSoundKeyMapper, null | HTMLAudioElement> = {\n [CircleSoundKey.BACKGROUND]: null,\n [CircleSoundKey.BACKGROUND_RUSHHOUR]: null,\n [CircleSoundKey.TUTORIAL]: null,\n [CircleSoundKey.SWIPE_01]: null,\n [CircleSoundKey.SWIPE_02]: null,\n [CircleSoundKey.SWIPE_03]: null,\n [CircleSoundKey.SWIPE_04]: null,\n [CircleSoundKey.SWIPE_DOWN]: null,\n [CircleSoundKey.TOGGLE]: null,\n [CircleSoundKey.POINTS_AWARDED]: null,\n [CircleSoundKey.POINTS_ADDED]: null,\n [CircleSoundKey.GAME_CARD_CLICK]: null,\n [CircleSoundKey.CLOCK_IN]: null,\n [CircleSoundKey.CLOCK_OUT]: null,\n [CircleSoundKey.ACCURACY_IN]: null,\n [CircleSoundKey.ACCURACY_OUT]: null,\n [CircleSoundKey.STREAK_IN]: null,\n [CircleSoundKey.STREAK_OUT]: null,\n [CircleSoundKey.ACCURACY_INTRO]: null,\n [CircleSoundKey.ACCURACY_TARGET]: null,\n [CircleSoundKey.TIME_INTRO]: null,\n [CircleSoundKey.TIME_TARGET]: null,\n [CircleSoundKey.METER_FILL]: null,\n [CircleSoundKey.YOUR_SCORE]: null,\n [CircleSoundKey.HIGH_SCORE]: null,\n [CircleSoundKey.KEEP_IT_UP]: null,\n [CircleSoundKey.DOING_GREAT]: null,\n [CircleSoundKey.ALL_DONE]: null,\n};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const { canAutoPlayAudio: canPlayAudio } = useAutoPlayPermission();\n\n const audioUrls = useMemo(\n () => Object.entries(CircleSoundKeyMapper).map(([name, url]) => ({ name, url })),\n [],\n );\n\n const playAudioBuffer = useAudioPlayer(audioUrls);\n\n const pausedSoundsRef = useRef<Set<CircleSoundKey>>(new Set());\n const timeoutRefs = useRef<TimeoutMap>({});\n\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n soundMapper[key] = new Audio(CircleSoundKeyMapper[key]);\n }\n }, []);\n\n const play = useCallback(\n (key: CircleSoundKey, immediately: boolean = true, loop = false) => {\n if (!canPlayAudio) return;\n\n try {\n playAudioBuffer(key);\n\n return;\n } catch {\n loadSound(key);\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n if (loop) {\n soundInstance.loop = loop;\n }\n\n if (timeoutRefs.current[key]) {\n clearInterval(timeoutRefs.current[key]);\n }\n\n if (!soundInstance.paused && soundInstance.currentTime > 0 && !soundInstance.ended) {\n if (!immediately) {\n timeoutRefs.current[key] = fadeInSound(soundInstance);\n } else {\n soundInstance.volume = 1;\n }\n\n return soundInstance;\n }\n\n soundInstance.volume = immediately ? 1 : 0;\n const promise = soundInstance.play();\n\n if (promise) {\n soundInstancePromise[key] = promise;\n }\n\n if (!immediately) {\n timeoutRefs.current[key] = fadeInSound(soundInstance);\n }\n\n return soundInstance;\n }\n },\n [loadSound, canPlayAudio, playAudioBuffer],\n );\n\n const handleSoundStop = useCallback((key: CircleSoundKey, immediately: boolean) => {\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n if (timeoutRefs.current[key]) {\n clearInterval(timeoutRefs.current[key]);\n }\n\n if (immediately) {\n soundInstance.pause();\n\n return;\n }\n\n timeoutRefs.current[key] = fadeOutSound(soundInstance);\n }, []);\n\n const stop = useCallback(\n (key: CircleSoundKey, immediately: boolean = true) => {\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]?.then(() => handleSoundStop(key, immediately)).catch(() => {});\n\n return;\n }\n\n handleSoundStop(key, immediately);\n },\n [handleSoundStop],\n );\n\n const playSwipeSound = useCallback(() => {\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n swipeSoundIndex = (swipeSoundIndex + 1) % SWIPE_SOUND_ORDER.length;\n play(key);\n }, [play]);\n\n const playButtonSound = useCallback(() => play(CircleSoundKey.TOGGLE), [play]);\n\n const handleVisibilityChange = useCallback(() => {\n const visibilityState = document.visibilityState;\n\n if (visibilityState === 'hidden') {\n Object.entries(soundMapper).forEach(([key, sound]) => {\n if (sound && !sound.paused) {\n stop(key as CircleSoundKey, true);\n pausedSoundsRef.current.add(key as CircleSoundKey);\n }\n });\n }\n\n if (visibilityState === 'visible') {\n pausedSoundsRef.current.forEach(key => play(key));\n pausedSoundsRef.current.clear();\n }\n }, [play, stop]);\n\n useEffect(() => {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n const timeouts = timeoutRefs.current;\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n Object.values(timeouts).forEach(id => id && clearInterval(id));\n };\n }, [handleVisibilityChange]);\n\n return { playSwipeSound, play, stop, playButtonSound };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","canPlayAudio","useAutoPlayPermission","audioUrls","useMemo","CircleSoundKeyMapper","name","url","playAudioBuffer","useAudioPlayer","pausedSoundsRef","useRef","timeoutRefs","loadSound","useCallback","key","play","immediately","loop","soundInstance","fadeInSound","promise","handleSoundStop","fadeOutSound","stop","_a","playSwipeSound","SWIPE_SOUND_ORDER","playButtonSound","handleVisibilityChange","visibilityState","sound","useEffect","timeouts","id"],"mappings":"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"}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useParentHomeGet as
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { useEffect as O, useMemo as P } from "react";
|
|
2
|
+
import { useParentHomeGet as C } from "../api/parent-home.js";
|
|
3
|
+
const T = ({
|
|
4
|
+
studentName: o,
|
|
5
|
+
studentServiceId: s
|
|
6
|
+
}) => {
|
|
5
7
|
const {
|
|
6
|
-
get:
|
|
7
|
-
data:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
}, [
|
|
16
|
-
i
|
|
17
|
-
|
|
18
|
-
var d;
|
|
19
|
-
const { teacher_details: r = null, session_details: o } = a ?? {};
|
|
20
|
-
if (!o)
|
|
8
|
+
get: t,
|
|
9
|
+
data: i,
|
|
10
|
+
isProcessing: a,
|
|
11
|
+
isProcessed: l,
|
|
12
|
+
isStale: m,
|
|
13
|
+
isProcessingFailed: r
|
|
14
|
+
} = C(s);
|
|
15
|
+
return O(() => {
|
|
16
|
+
s && (!a && !r && !l || m) && t(s);
|
|
17
|
+
}, [s, m, a, t, r, l]), P(() => {
|
|
18
|
+
const { teacher_details: c = null, session_details: n } = i ?? {};
|
|
19
|
+
if (!n)
|
|
21
20
|
return {
|
|
22
21
|
sessionDetails: null,
|
|
23
22
|
teacherDetails: null,
|
|
23
|
+
studentName: o,
|
|
24
|
+
teacherName: "",
|
|
24
25
|
isOnlyOneSessionCompleted: !1,
|
|
25
26
|
isMoreThanOneSessionCompleted: !1,
|
|
26
27
|
isDemoDone: !1,
|
|
@@ -28,40 +29,36 @@ const k = (s) => {
|
|
|
28
29
|
completedSessions: 0,
|
|
29
30
|
nextSessionEnd: 0,
|
|
30
31
|
nextSessionStart: 0,
|
|
32
|
+
classStatus: void 0,
|
|
31
33
|
upcomingSessions: [],
|
|
32
|
-
showLoading: !0
|
|
33
|
-
isProcessingFailed: m,
|
|
34
|
-
fetchData: e
|
|
34
|
+
showLoading: !0
|
|
35
35
|
};
|
|
36
36
|
const {
|
|
37
|
-
completed_sessions:
|
|
38
|
-
next_session_end:
|
|
39
|
-
next_session_start:
|
|
37
|
+
completed_sessions: e = 0,
|
|
38
|
+
next_session_end: p,
|
|
39
|
+
next_session_start: u,
|
|
40
40
|
demo_class_status: S,
|
|
41
|
-
upcoming_sessions:
|
|
42
|
-
student_demo_id:
|
|
43
|
-
|
|
44
|
-
} = o, { first_name: h = "", last_name: x = "" } = r ?? {}, M = (d = `${h} ${x}`) == null ? void 0 : d.trim(), c = t > 0, g = c && t === 1, E = t > 1, C = b(l, "EEEE, MMM d 'at' h:mm a");
|
|
41
|
+
upcoming_sessions: _ = [],
|
|
42
|
+
student_demo_id: f
|
|
43
|
+
} = n, { first_name: D = "", last_name: g = "" } = c ?? {}, h = `${D} ${g}`.trim(), d = e > 0, x = d && e === 1, H = e > 1;
|
|
45
44
|
return {
|
|
46
|
-
sessionDetails:
|
|
47
|
-
teacherDetails:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
sessionDetails: n,
|
|
46
|
+
teacherDetails: c,
|
|
47
|
+
studentName: o,
|
|
48
|
+
teacherName: h,
|
|
49
|
+
completedSessions: e,
|
|
50
|
+
nextSessionEnd: p,
|
|
51
|
+
nextSessionStart: u,
|
|
52
52
|
classStatus: S,
|
|
53
|
-
upcomingSessions:
|
|
54
|
-
isDemoDone:
|
|
55
|
-
isOnlyOneSessionCompleted:
|
|
56
|
-
isMoreThanOneSessionCompleted:
|
|
57
|
-
demoId:
|
|
58
|
-
userAttemptId: D,
|
|
59
|
-
fetchData: e,
|
|
60
|
-
formattedNextSessionStart: C
|
|
53
|
+
upcomingSessions: _,
|
|
54
|
+
isDemoDone: d,
|
|
55
|
+
isOnlyOneSessionCompleted: x,
|
|
56
|
+
isMoreThanOneSessionCompleted: H,
|
|
57
|
+
demoId: f
|
|
61
58
|
};
|
|
62
|
-
}, [
|
|
59
|
+
}, [i, o]);
|
|
63
60
|
};
|
|
64
61
|
export {
|
|
65
|
-
|
|
62
|
+
T as default
|
|
66
63
|
};
|
|
67
64
|
//# sourceMappingURL=use-parent-home-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-parent-home-data.js","sources":["../../../../src/features/parent-dashboard/hooks/use-parent-home-data.ts"],"sourcesContent":["import type { TSession } from '../../trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types';\nimport type { EClassStatus, ISessionDetails, ITeacherDetails } from '../parent-dashboard-types';\n\nimport {
|
|
1
|
+
{"version":3,"file":"use-parent-home-data.js","sources":["../../../../src/features/parent-dashboard/hooks/use-parent-home-data.ts"],"sourcesContent":["import type { TSession } from '../../trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types';\nimport type { EClassStatus, ISessionDetails, ITeacherDetails } from '../parent-dashboard-types';\n\nimport { useEffect, useMemo } from 'react';\n\nimport { useParentHomeGet } from '../api/parent-home';\n\ninterface IUseParentHomeData {\n studentName: string;\n studentServiceId: string;\n}\ninterface IUseParentHomeDataReturn {\n sessionDetails: ISessionDetails | null;\n teacherDetails: ITeacherDetails | null;\n completedSessions: number;\n nextSessionEnd: number;\n nextSessionStart: number;\n classStatus?: EClassStatus | null;\n teacherName: string;\n upcomingSessions?: TSession[];\n isDemoDone: boolean;\n isOnlyOneSessionCompleted: boolean;\n isMoreThanOneSessionCompleted: boolean;\n showLoading?: boolean;\n demoId?: string;\n}\n\nconst useParentHomeData = ({\n studentName,\n studentServiceId,\n}: IUseParentHomeData): IUseParentHomeDataReturn => {\n const {\n get: getParentHome,\n data: parentHomeData,\n isProcessing,\n isProcessed,\n isStale,\n isProcessingFailed,\n } = useParentHomeGet(studentServiceId);\n\n useEffect(() => {\n if (studentServiceId && ((!isProcessing && !isProcessingFailed && !isProcessed) || isStale)) {\n getParentHome(studentServiceId);\n }\n }, [studentServiceId, isStale, isProcessing, getParentHome, isProcessingFailed, isProcessed]);\n\n const parentHomeDataMemoised = useMemo(() => {\n const { teacher_details: teacherDetails = null, session_details: sessionDetails } =\n parentHomeData ?? {};\n\n if (!sessionDetails) {\n return {\n sessionDetails: null,\n teacherDetails: null,\n studentName,\n teacherName: '',\n isOnlyOneSessionCompleted: false,\n isMoreThanOneSessionCompleted: false,\n isDemoDone: false,\n isSubscriptionCancelled: false,\n completedSessions: 0,\n nextSessionEnd: 0,\n nextSessionStart: 0,\n classStatus: undefined,\n upcomingSessions: [],\n showLoading: true,\n };\n }\n\n const {\n completed_sessions: completedSessions = 0,\n next_session_end: nextSessionEnd,\n next_session_start: nextSessionStart,\n demo_class_status: classStatus,\n upcoming_sessions: upcomingSessions = [],\n student_demo_id: demoId,\n } = sessionDetails;\n\n const { first_name = '', last_name = '' } = teacherDetails ?? {};\n const teacherName = `${first_name} ${last_name}`.trim();\n\n const isDemoDone = completedSessions > 0;\n const isOnlyOneSessionCompleted = isDemoDone && completedSessions === 1;\n const isMoreThanOneSessionCompleted = completedSessions > 1;\n\n return {\n sessionDetails,\n teacherDetails,\n studentName,\n teacherName,\n completedSessions,\n nextSessionEnd,\n nextSessionStart,\n classStatus,\n upcomingSessions,\n isDemoDone,\n isOnlyOneSessionCompleted,\n isMoreThanOneSessionCompleted,\n demoId,\n };\n }, [parentHomeData, studentName]);\n\n return parentHomeDataMemoised;\n};\n\nexport default useParentHomeData;\n"],"names":["useParentHomeData","studentName","studentServiceId","getParentHome","parentHomeData","isProcessing","isProcessed","isStale","isProcessingFailed","useParentHomeGet","useEffect","useMemo","teacherDetails","sessionDetails","completedSessions","nextSessionEnd","nextSessionStart","classStatus","upcomingSessions","demoId","first_name","last_name","teacherName","isDemoDone","isOnlyOneSessionCompleted","isMoreThanOneSessionCompleted"],"mappings":";;AA2BA,MAAMA,IAAoB,CAAC;AAAA,EACzB,aAAAC;AAAA,EACA,kBAAAC;AACF,MAAoD;AAC5C,QAAA;AAAA,IACJ,KAAKC;AAAA,IACL,MAAMC;AAAA,IACN,cAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,IACEC,EAAiBP,CAAgB;AAErC,SAAAQ,EAAU,MAAM;AACd,IAAIR,MAAsB,CAACG,KAAgB,CAACG,KAAsB,CAACF,KAAgBC,MACjFJ,EAAcD,CAAgB;AAAA,EAChC,GACC,CAACA,GAAkBK,GAASF,GAAcF,GAAeK,GAAoBF,CAAW,CAAC,GAE7DK,EAAQ,MAAM;AACrC,UAAA,EAAE,iBAAiBC,IAAiB,MAAM,iBAAiBC,EAAe,IAC9ET,KAAkB;AAEpB,QAAI,CAACS;AACI,aAAA;AAAA,QACL,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,aAAAZ;AAAA,QACA,aAAa;AAAA,QACb,2BAA2B;AAAA,QAC3B,+BAA+B;AAAA,QAC/B,YAAY;AAAA,QACZ,yBAAyB;AAAA,QACzB,mBAAmB;AAAA,QACnB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,aAAa;AAAA,QACb,kBAAkB,CAAC;AAAA,QACnB,aAAa;AAAA,MAAA;AAIX,UAAA;AAAA,MACJ,oBAAoBa,IAAoB;AAAA,MACxC,kBAAkBC;AAAA,MAClB,oBAAoBC;AAAA,MACpB,mBAAmBC;AAAA,MACnB,mBAAmBC,IAAmB,CAAC;AAAA,MACvC,iBAAiBC;AAAA,IACf,IAAAN,GAEE,EAAE,YAAAO,IAAa,IAAI,WAAAC,IAAY,GAAG,IAAIT,KAAkB,IACxDU,IAAc,GAAGF,CAAU,IAAIC,CAAS,GAAG,QAE3CE,IAAaT,IAAoB,GACjCU,IAA4BD,KAAcT,MAAsB,GAChEW,IAAgCX,IAAoB;AAEnD,WAAA;AAAA,MACL,gBAAAD;AAAA,MACA,gBAAAD;AAAA,MACA,aAAAX;AAAA,MACA,aAAAqB;AAAA,MACA,mBAAAR;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,YAAAK;AAAA,MACA,2BAAAC;AAAA,MACA,+BAAAC;AAAA,MACA,QAAAN;AAAA,IAAA;AAAA,EACF,GACC,CAACf,GAAgBH,CAAW,CAAC;AAGlC;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _ = /* @__PURE__ */ ((O) => (O.S_NO_SHOW = "S_NO_SHOW", O.T_NO_SHOW = "T_NO_SHOW", O))(_ || {});
|
|
2
2
|
export {
|
|
3
|
-
|
|
4
|
-
O as ESummaryType
|
|
3
|
+
_ as EClassStatus
|
|
5
4
|
};
|
|
6
5
|
//# sourceMappingURL=parent-dashboard-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-dashboard-types.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-types.ts"],"sourcesContent":["import type { TSession } from '../trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types';\nimport type { ReactElement } from 'react';\n\nexport enum EClassStatus {\n S_NO_SHOW = 'S_NO_SHOW',\n T_NO_SHOW = 'T_NO_SHOW',\n}\nexport interface ISessionDetails {\n completed_sessions: number;\n next_session_start: number;\n next_session_end: number;\n student_demo_id: string;\n upcoming_sessions: TSession[];\n demo_class_status: EClassStatus | null;\n
|
|
1
|
+
{"version":3,"file":"parent-dashboard-types.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-types.ts"],"sourcesContent":["import type { TSession } from '../trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types';\nimport type { ReactElement } from 'react';\n\nexport enum EClassStatus {\n S_NO_SHOW = 'S_NO_SHOW',\n T_NO_SHOW = 'T_NO_SHOW',\n}\nexport interface ISessionDetails {\n completed_sessions: number;\n next_session_start: number;\n next_session_end: number;\n student_demo_id: string;\n upcoming_sessions: TSession[];\n demo_class_status: EClassStatus | null;\n}\n\ninterface IDegreeInfo {\n degree_name: string;\n degree_code: string;\n field_of_study: string;\n}\nexport interface ITeacherDetails {\n first_name: string;\n last_name: string;\n years_of_experience: number;\n number_of_students_taught: number;\n lower_grade: string;\n higher_grade: string;\n degree: IDegreeInfo;\n countries: string[];\n teacher_profile_url: string;\n header_image: string;\n}\n\ninterface PaymentMethodDetails {\n brand: string;\n last_4_digits: string;\n type: string;\n exp_month: number;\n exp_year: number;\n}\n\ninterface IBillingDetails {\n amount: number;\n next_due_date: string;\n payment_method_details: PaymentMethodDetails;\n}\n\nexport interface IParentHome {\n session_details: ISessionDetails;\n teacher_details: ITeacherDetails | null;\n billing_details: IBillingDetails;\n}\n\nexport interface IParentDashboardProps {\n studentName: string;\n studentServiceId: string;\n onRescheduleDemo: (demoId?: string) => void;\n onChangeTutor: (demoId: string) => void;\n onGetStartedAgain?: () => void;\n onViewSummary?: (key: string) => void;\n onSwitchUser?: () => void;\n canChangeTutor: boolean;\n isSubscriptionCancelled: boolean;\n HeaderAvatar: ReactElement;\n}\n\nexport interface ISpacingConfig {\n small: number;\n medium: number;\n large: number;\n separator: {\n small: number;\n medium: number;\n large: number;\n extraLarge: number;\n };\n}\n"],"names":["EClassStatus"],"mappings":"AAGY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,YAAY,aAFFA,IAAAA,KAAA,CAAA,CAAA;"}
|