@cuemath/leap 2.8.63-akm-1 → 2.8.63-akm-3
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,103 +1,96 @@
|
|
1
|
-
import { useCallback as r, useRef as
|
2
|
-
import { CircleSoundKeyMapper as
|
3
|
-
import { CircleSoundKey as
|
4
|
-
let
|
5
|
-
const
|
6
|
-
[
|
7
|
-
[
|
8
|
-
[
|
9
|
-
[
|
10
|
-
[
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
14
|
-
[
|
15
|
-
[
|
16
|
-
[
|
17
|
-
[
|
18
|
-
[
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
22
|
-
[
|
23
|
-
[
|
24
|
-
[
|
25
|
-
[
|
26
|
-
[
|
27
|
-
[
|
28
|
-
[
|
1
|
+
import { useCallback as r, useRef as A } from "react";
|
2
|
+
import { CircleSoundKeyMapper as T, SWIPE_SOUND_ORDER as C } from "./constants.js";
|
3
|
+
import { CircleSoundKey as l } from "./use-circle-sounds-enums.js";
|
4
|
+
let c = 0;
|
5
|
+
const t = {
|
6
|
+
[l.BACKGROUND]: null,
|
7
|
+
[l.BACKGROUND_RUSHHOUR]: null,
|
8
|
+
[l.TUTORIAL]: null,
|
9
|
+
[l.SWIPE_01]: null,
|
10
|
+
[l.SWIPE_02]: null,
|
11
|
+
[l.SWIPE_03]: null,
|
12
|
+
[l.SWIPE_04]: null,
|
13
|
+
[l.SWIPE_DOWN]: null,
|
14
|
+
[l.TOGGLE]: null,
|
15
|
+
[l.POINTS_AWARDED]: null,
|
16
|
+
[l.POINTS_ADDED]: null,
|
17
|
+
[l.GAME_CARD_CLICK]: null,
|
18
|
+
[l.CLOCK_IN]: null,
|
19
|
+
[l.CLOCK_OUT]: null,
|
20
|
+
[l.ACCURACY_IN]: null,
|
21
|
+
[l.ACCURACY_OUT]: null,
|
22
|
+
[l.STREAK_IN]: null,
|
23
|
+
[l.STREAK_OUT]: null,
|
24
|
+
[l.ACCURACY_INTRO]: null,
|
25
|
+
[l.ACCURACY_TARGET]: null,
|
26
|
+
[l.TIME_INTRO]: null,
|
27
|
+
[l.TIME_TARGET]: null,
|
28
|
+
[l.METER_FILL]: null
|
29
29
|
}, d = {}, U = () => {
|
30
|
-
const s = r((
|
31
|
-
if (!
|
32
|
-
const
|
33
|
-
|
30
|
+
const s = r((n) => {
|
31
|
+
if (!t[n]) {
|
32
|
+
const e = new Audio(T[n]);
|
33
|
+
e.preload = "auto", t[n] = e;
|
34
34
|
}
|
35
|
-
}, []), p =
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
document.removeEventListener("visibilitychange", e);
|
48
|
-
};
|
49
|
-
}, []);
|
50
|
-
const C = r(() => {
|
51
|
-
var o;
|
52
|
-
I.forEach((l) => {
|
53
|
-
s(l);
|
35
|
+
}, []), p = A(/* @__PURE__ */ new Set()), S = () => {
|
36
|
+
document.visibilityState === "hidden" ? Object.keys(t).forEach((n) => {
|
37
|
+
const e = t[n];
|
38
|
+
e && !e.paused && (e.pause(), p.current.add(n));
|
39
|
+
}) : document.visibilityState === "visible" && (p.current.forEach((n) => {
|
40
|
+
const e = t[n];
|
41
|
+
e == null || e.play();
|
42
|
+
}), p.current.clear());
|
43
|
+
}, E = r(() => {
|
44
|
+
var e;
|
45
|
+
C.forEach((u) => {
|
46
|
+
s(u);
|
54
47
|
});
|
55
|
-
const
|
56
|
-
|
57
|
-
}, [s]),
|
58
|
-
var
|
59
|
-
return s(
|
48
|
+
const n = C[c] || l.SWIPE_01;
|
49
|
+
c < C.length - 1 ? c++ : c = 0, (e = t[n]) == null || e.play();
|
50
|
+
}, [s]), _ = r(() => {
|
51
|
+
var e;
|
52
|
+
return s(l.TOGGLE), (e = t[l.TOGGLE]) == null ? void 0 : e.play();
|
60
53
|
}, [s]), f = r(
|
61
|
-
(
|
62
|
-
s(
|
63
|
-
const
|
64
|
-
if (!
|
65
|
-
if (
|
66
|
-
|
67
|
-
const
|
68
|
-
d[
|
54
|
+
(n, e = !0, u = !1) => {
|
55
|
+
s(n);
|
56
|
+
const o = t[n];
|
57
|
+
if (!o) return;
|
58
|
+
if (o.loop = u, e) {
|
59
|
+
o.volume = 1;
|
60
|
+
const a = o.play();
|
61
|
+
d[n] = a;
|
69
62
|
return;
|
70
63
|
}
|
71
|
-
|
72
|
-
const
|
73
|
-
d[
|
64
|
+
o.volume = 0;
|
65
|
+
const I = o.play();
|
66
|
+
d[n] = I;
|
74
67
|
const i = setInterval(() => {
|
75
|
-
if (!
|
76
|
-
const
|
77
|
-
|
68
|
+
if (!o) return;
|
69
|
+
const a = o.volume || 0;
|
70
|
+
a < 1 ? o.volume = a + 0.1 : clearInterval(i);
|
78
71
|
}, 100);
|
79
|
-
return
|
72
|
+
return o;
|
80
73
|
},
|
81
74
|
[s]
|
82
|
-
),
|
83
|
-
var
|
84
|
-
const
|
85
|
-
d[
|
86
|
-
if (
|
87
|
-
|
75
|
+
), R = r((n, e = !0) => {
|
76
|
+
var o;
|
77
|
+
const u = t[n];
|
78
|
+
d[n] !== void 0 && ((o = d[n]) == null || o.then(() => {
|
79
|
+
if (e) {
|
80
|
+
u == null || u.pause();
|
88
81
|
return;
|
89
82
|
}
|
90
|
-
const
|
91
|
-
if (!
|
92
|
-
const i =
|
93
|
-
i - 0.1 <= 0 ? (
|
83
|
+
const I = setInterval(() => {
|
84
|
+
if (!u) return;
|
85
|
+
const i = u.volume || 0;
|
86
|
+
i - 0.1 <= 0 ? (u.volume = 0, u.pause(), clearInterval(I)) : u.volume = i - 0.1;
|
94
87
|
}, 100);
|
95
88
|
}));
|
96
89
|
}, []);
|
97
|
-
return { playSwipSound:
|
90
|
+
return { playSwipSound: E, play: f, stop: R, playButtonSound: _, handleVisibilityChange: S };
|
98
91
|
};
|
99
92
|
export {
|
100
|
-
|
93
|
+
t as soundMapper,
|
101
94
|
U as useCircleSounds
|
102
95
|
};
|
103
96
|
//# 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":["
|
1
|
+
{"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\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};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n const loadedSound = new Audio(CircleSoundKeyMapper[key]);\n\n loadedSound.preload = 'auto';\n soundMapper[key] = loadedSound;\n }\n }, []);\n\n const pausedSoundsRef = useRef<Set<CircleSoundKey>>(new Set());\n\n const handleVisibilityChange = () => {\n if (document.visibilityState === 'hidden') {\n // Pause all playing sounds and track them\n (Object.keys(soundMapper) as CircleSoundKey[]).forEach(key => {\n const sound = soundMapper[key];\n\n if (sound && !sound.paused) {\n sound.pause();\n pausedSoundsRef.current.add(key);\n }\n });\n } else if (document.visibilityState === 'visible') {\n // Resume only previously paused sounds\n pausedSoundsRef.current.forEach(key => {\n const sound = soundMapper[key];\n\n sound?.play();\n });\n pausedSoundsRef.current.clear();\n }\n };\n\n const playSwipSound = useCallback(() => {\n SWIPE_SOUND_ORDER.forEach(key => {\n loadSound(key);\n });\n\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n if (swipeSoundIndex < SWIPE_SOUND_ORDER.length - 1) {\n swipeSoundIndex++;\n } else {\n swipeSoundIndex = 0;\n }\n soundMapper[key]?.play();\n }, [loadSound]);\n\n const playButtonSound = useCallback(() => {\n loadSound(CircleSoundKey.TOGGLE);\n const sound = soundMapper[CircleSoundKey.TOGGLE]?.play();\n\n return sound;\n }, [loadSound]);\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) return;\n\n soundInstance.loop = loop;\n if (immediately) {\n soundInstance.volume = 1;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n return;\n }\n\n soundInstance.volume = 0;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n const intervalId = setInterval(() => {\n if (!soundInstance) return;\n\n const vol = soundInstance.volume || 0;\n\n if (vol < 1) {\n soundInstance.volume = vol + 0.1;\n } else {\n clearInterval(intervalId);\n }\n }, 100);\n\n return soundInstance;\n },\n [loadSound],\n );\n\n const stop = useCallback((key: CircleSoundKey, immediately: boolean = true) => {\n const soundInstance = soundMapper[key];\n\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]?.then(() => {\n if (immediately) {\n soundInstance?.pause();\n\n return;\n }\n\n const intervalId = setInterval(() => {\n if (!soundInstance) return;\n\n const vol = soundInstance.volume || 0;\n\n if (vol - 0.1 <= 0) {\n soundInstance.volume = 0;\n soundInstance.pause();\n clearInterval(intervalId);\n } else {\n soundInstance.volume = vol - 0.1;\n }\n }, 100);\n });\n }\n }, []);\n\n return { playSwipSound, play, stop, playButtonSound, handleVisibilityChange };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","pausedSoundsRef","useRef","handleVisibilityChange","sound","playSwipSound","SWIPE_SOUND_ORDER","_a","playButtonSound","play","immediately","loop","soundInstance","promise","intervalId","vol","stop"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -4981,6 +4981,7 @@ export declare const useCircleSounds: () => {
|
|
4981
4981
|
play: (key: CircleSoundKey, immediately?: boolean, loop?: boolean) => HTMLAudioElement | undefined;
|
4982
4982
|
stop: (key: CircleSoundKey, immediately?: boolean) => void;
|
4983
4983
|
playButtonSound: () => Promise<void> | undefined;
|
4984
|
+
handleVisibilityChange: () => void;
|
4984
4985
|
};
|
4985
4986
|
|
4986
4987
|
export declare const useClassTimeAlerts: ({ alertLevel, classStartedOn, classDuration, onUpdateClassTimeAlertConfig, }: IUseClassTimeAlerts) => {
|