@cuemath/leap 2.8.63-akm-2 → 2.8.63-akm-4

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,104 +1,96 @@
1
- import { useCallback as i, useRef as _, useEffect as R } from "react";
2
- import { CircleSoundKeyMapper as m, SWIPE_SOUND_ORDER as E } 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 = i((l) => {
31
- if (!u[l]) {
32
- const t = new Audio(m[l]);
33
- t.preload = "auto", u[l] = t;
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
- console.log("add visibilitychange event listener");
38
- const l = () => {
39
- console.log("execute visibilitychange event listener"), document.visibilityState === "hidden" ? (console.log("Pausing sounds"), Object.keys(u).forEach((t) => {
40
- const e = u[t];
41
- e && !e.paused && (e.pause(), p.current.add(t));
42
- })) : document.visibilityState === "visible" && (p.current.forEach((t) => {
43
- const e = u[t];
44
- e == null || e.play();
45
- }), p.current.clear());
46
- };
47
- return document.addEventListener("visibilitychange", l), () => {
48
- document.removeEventListener("visibilitychange", l);
49
- };
50
- }, []);
51
- const I = i(() => {
52
- var t;
53
- E.forEach((e) => {
54
- s(e);
35
+ }, []), p = A(/* @__PURE__ */ new Set()), S = r(() => {
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);
55
47
  });
56
- const l = E[a] || n.SWIPE_01;
57
- a < E.length - 1 ? a++ : a = 0, (t = u[l]) == null || t.play();
58
- }, [s]), C = i(() => {
59
- var t;
60
- return s(n.TOGGLE), (t = u[n.TOGGLE]) == null ? void 0 : t.play();
61
- }, [s]), S = i(
62
- (l, t = !0, e = !1) => {
63
- s(l);
64
- const o = u[l];
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();
53
+ }, [s]), f = r(
54
+ (n, e = !0, u = !1) => {
55
+ s(n);
56
+ const o = t[n];
65
57
  if (!o) return;
66
- if (o.loop = e, t) {
58
+ if (o.loop = u, e) {
67
59
  o.volume = 1;
68
- const c = o.play();
69
- d[l] = c;
60
+ const a = o.play();
61
+ d[n] = a;
70
62
  return;
71
63
  }
72
64
  o.volume = 0;
73
- const v = o.play();
74
- d[l] = v;
75
- const r = setInterval(() => {
65
+ const I = o.play();
66
+ d[n] = I;
67
+ const i = setInterval(() => {
76
68
  if (!o) return;
77
- const c = o.volume || 0;
78
- c < 1 ? o.volume = c + 0.1 : clearInterval(r);
69
+ const a = o.volume || 0;
70
+ a < 1 ? o.volume = a + 0.1 : clearInterval(i);
79
71
  }, 100);
80
72
  return o;
81
73
  },
82
74
  [s]
83
- ), f = i((l, t = !0) => {
75
+ ), R = r((n, e = !0) => {
84
76
  var o;
85
- const e = u[l];
86
- d[l] !== void 0 && ((o = d[l]) == null || o.then(() => {
87
- if (t) {
88
- e == null || e.pause();
77
+ const u = t[n];
78
+ d[n] !== void 0 && ((o = d[n]) == null || o.then(() => {
79
+ if (e) {
80
+ u == null || u.pause();
89
81
  return;
90
82
  }
91
- const v = setInterval(() => {
92
- if (!e) return;
93
- const r = e.volume || 0;
94
- r - 0.1 <= 0 ? (e.volume = 0, e.pause(), clearInterval(v)) : e.volume = r - 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;
95
87
  }, 100);
96
88
  }));
97
89
  }, []);
98
- return { playSwipSound: I, play: S, stop: f, playButtonSound: C };
90
+ return { playSwipSound: E, play: f, stop: R, playButtonSound: _, handleVisibilityChange: S };
99
91
  };
100
92
  export {
101
- u as soundMapper,
93
+ t as soundMapper,
102
94
  U as useCircleSounds
103
95
  };
104
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 console.log('add visibilitychange event listener');\n const handleVisibilityChange = () => {\n console.log('execute visibilitychange event listener');\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 = useCallback(() => {\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":";;;AAKA,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;AAC/B,GAEMC,IAA0F,CAAA,GAEnFC,IAAkB,MAAM;AAC7B,QAAAC,IAAYC,EAAY,CAACC,MAAwB;AACjD,QAAA,CAACN,EAAYM,CAAG,GAAG;AACrB,YAAMC,IAAc,IAAI,MAAMC,EAAqBF,CAAG,CAAC;AAEvD,MAAAC,EAAY,UAAU,QACtBP,EAAYM,CAAG,IAAIC;AAAA,IACrB;AAAA,EACF,GAAG,CAAE,CAAA,GAECE,IAAkBC,EAAgC,oBAAA,IAAK,CAAA,GAEvDC,IAAyBN,EAAY,MAAM;AAC3C,IAAA,SAAS,oBAAoB,WAE9B,OAAO,KAAKL,CAAW,EAAuB,QAAQ,CAAOM,MAAA;AACtD,YAAAM,IAAQZ,EAAYM,CAAG;AAEzB,MAAAM,KAAS,CAACA,EAAM,WAClBA,EAAM,MAAM,GACIH,EAAA,QAAQ,IAAIH,CAAG;AAAA,IACjC,CACD,IACQ,SAAS,oBAAoB,cAEtBG,EAAA,QAAQ,QAAQ,CAAOH,MAAA;AAC/B,YAAAM,IAAQZ,EAAYM,CAAG;AAE7B,MAAAM,KAAA,QAAAA,EAAO;AAAA,IAAK,CACb,GACDH,EAAgB,QAAQ;EAE5B,GAAG,CAAE,CAAA,GAECI,IAAgBR,EAAY,MAAM;;AACpB,IAAAS,EAAA,QAAQ,CAAAR,MAAO;AAC/B,MAAAF,EAAUE,CAAG;AAAA,IAAA,CACd;AAED,UAAMA,IAAMQ,EAAkBf,CAAe,KAAKE,EAAe;AAE7D,IAAAF,IAAkBe,EAAkB,SAAS,IAC/Cf,MAEkBA,IAAA,IAERgB,IAAAf,EAAAM,CAAG,MAAH,QAAAS,EAAM;AAAA,EAAK,GACtB,CAACX,CAAS,CAAC,GAERY,IAAkBX,EAAY,MAAM;;AACxC,WAAAD,EAAUH,EAAe,MAAM,IACjBc,IAAAf,EAAYC,EAAe,MAAM,MAAjC,gBAAAc,EAAoC;AAAA,EAE3C,GACN,CAACX,CAAS,CAAC,GAERa,IAAOZ;AAAA,IACX,CAACC,GAAqBY,IAAuB,IAAMC,IAAO,OAAU;AAClE,MAAAf,EAAUE,CAAG;AACP,YAAAc,IAAgBpB,EAAYM,CAAG;AAErC,UAAI,CAACc,EAAe;AAGpB,UADAA,EAAc,OAAOD,GACjBD,GAAa;AACf,QAAAE,EAAc,SAAS;AACjBC,cAAAA,IAAUD,EAAc;AAE9B,QAAAlB,EAAqBI,CAAG,IAAIe;AAE5B;AAAA,MACF;AAEA,MAAAD,EAAc,SAAS;AACjB,YAAAC,IAAUD,EAAc;AAE9B,MAAAlB,EAAqBI,CAAG,IAAIe;AAEtB,YAAAC,IAAa,YAAY,MAAM;AACnC,YAAI,CAACF,EAAe;AAEd,cAAAG,IAAMH,EAAc,UAAU;AAEpC,QAAIG,IAAM,IACRH,EAAc,SAASG,IAAM,MAE7B,cAAcD,CAAU;AAAA,SAEzB,GAAG;AAEC,aAAAF;AAAA,IACT;AAAA,IACA,CAAChB,CAAS;AAAA,EAAA,GAGNoB,IAAOnB,EAAY,CAACC,GAAqBY,IAAuB,OAAS;;AACvE,UAAAE,IAAgBpB,EAAYM,CAAG;AAEjC,IAAAJ,EAAqBI,CAAG,MAAM,YACXS,IAAAb,EAAAI,CAAG,MAAH,QAAAS,EAAM,KAAK,MAAM;AACpC,UAAIG,GAAa;AACf,QAAAE,KAAA,QAAAA,EAAe;AAEf;AAAA,MACF;AAEM,YAAAE,IAAa,YAAY,MAAM;AACnC,YAAI,CAACF,EAAe;AAEd,cAAAG,IAAMH,EAAc,UAAU;AAEhC,QAAAG,IAAM,OAAO,KACfH,EAAc,SAAS,GACvBA,EAAc,MAAM,GACpB,cAAcE,CAAU,KAExBF,EAAc,SAASG,IAAM;AAAA,SAE9B,GAAG;AAAA,IAAA;AAAA,EAGZ,GAAG,CAAE,CAAA;AAEL,SAAO,EAAE,eAAAV,GAAe,MAAAI,GAAM,MAAAO,GAAM,iBAAAR,GAAiB,wBAAAL,EAAuB;AAC9E;"}
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-2",
3
+ "version": "2.8.63-akm-4",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"