@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 _, useEffect as R } from "react";
2
- import { CircleSoundKeyMapper as m, SWIPE_SOUND_ORDER as I } from "./constants.js";
3
- import { CircleSoundKey as n } from "./use-circle-sounds-enums.js";
4
- let a = 0;
5
- const u = {
6
- [n.BACKGROUND]: null,
7
- [n.BACKGROUND_RUSHHOUR]: null,
8
- [n.TUTORIAL]: null,
9
- [n.SWIPE_01]: null,
10
- [n.SWIPE_02]: null,
11
- [n.SWIPE_03]: null,
12
- [n.SWIPE_04]: null,
13
- [n.SWIPE_DOWN]: null,
14
- [n.TOGGLE]: null,
15
- [n.POINTS_AWARDED]: null,
16
- [n.POINTS_ADDED]: null,
17
- [n.GAME_CARD_CLICK]: null,
18
- [n.CLOCK_IN]: null,
19
- [n.CLOCK_OUT]: null,
20
- [n.ACCURACY_IN]: null,
21
- [n.ACCURACY_OUT]: null,
22
- [n.STREAK_IN]: null,
23
- [n.STREAK_OUT]: null,
24
- [n.ACCURACY_INTRO]: null,
25
- [n.ACCURACY_TARGET]: null,
26
- [n.TIME_INTRO]: null,
27
- [n.TIME_TARGET]: null,
28
- [n.METER_FILL]: null
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((e) => {
31
- if (!u[e]) {
32
- const o = new Audio(m[e]);
33
- o.preload = "auto", u[e] = o;
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 = _(/* @__PURE__ */ new Set());
36
- R(() => {
37
- const e = () => {
38
- document.visibilityState === "hidden" ? (console.log("Pausing sounds"), Object.keys(u).forEach((o) => {
39
- const l = u[o];
40
- l && !l.paused && (l.pause(), p.current.add(o));
41
- })) : document.visibilityState === "visible" && (p.current.forEach((o) => {
42
- const l = u[o];
43
- l == null || l.play();
44
- }), p.current.clear());
45
- };
46
- return document.addEventListener("visibilitychange", e), () => {
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 e = I[a] || n.SWIPE_01;
56
- a < I.length - 1 ? a++ : a = 0, (o = u[e]) == null || o.play();
57
- }, [s]), S = r(() => {
58
- var o;
59
- return s(n.TOGGLE), (o = u[n.TOGGLE]) == null ? void 0 : o.play();
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
- (e, o = !0, l = !1) => {
62
- s(e);
63
- const t = u[e];
64
- if (!t) return;
65
- if (t.loop = l, o) {
66
- t.volume = 1;
67
- const c = t.play();
68
- d[e] = c;
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
- t.volume = 0;
72
- const E = t.play();
73
- d[e] = E;
64
+ o.volume = 0;
65
+ const I = o.play();
66
+ d[n] = I;
74
67
  const i = setInterval(() => {
75
- if (!t) return;
76
- const c = t.volume || 0;
77
- c < 1 ? t.volume = c + 0.1 : clearInterval(i);
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 t;
72
+ return o;
80
73
  },
81
74
  [s]
82
- ), v = r((e, o = !0) => {
83
- var t;
84
- const l = u[e];
85
- d[e] !== void 0 && ((t = d[e]) == null || t.then(() => {
86
- if (o) {
87
- l == null || l.pause();
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 E = setInterval(() => {
91
- if (!l) return;
92
- const i = l.volume || 0;
93
- i - 0.1 <= 0 ? (l.volume = 0, l.pause(), clearInterval(E)) : l.volume = i - 0.1;
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: C, play: f, stop: v, playButtonSound: S };
90
+ return { playSwipSound: E, play: f, stop: R, playButtonSound: _, handleVisibilityChange: S };
98
91
  };
99
92
  export {
100
- u as soundMapper,
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":["/* eslint-disable no-console */\nimport { useCallback, useEffect, 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 useEffect(() => {\n const handleVisibilityChange = () => {\n if (document.visibilityState === 'hidden') {\n // Pause all playing sounds and track them\n console.log('Pausing sounds');\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 document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\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 };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","pausedSoundsRef","useRef","useEffect","handleVisibilityChange","sound","playSwipSound","SWIPE_SOUND_ORDER","_a","playButtonSound","play","immediately","loop","soundInstance","promise","intervalId","vol","stop"],"mappings":"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"}
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) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "2.8.63-akm-1",
3
+ "version": "2.8.63-akm-3",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"