@cuemath/leap 2.8.61-rj-24 → 2.8.61-rj-XX

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,14 +1,12 @@
1
1
  import { jsxs as y, jsx as e } from "react/jsx-runtime";
2
- import { memo as j, forwardRef as x, useMemo as b, useRef as u, useState as z, createRef as B, useCallback as d, useImperativeHandle as D, useEffect as $ } from "react";
2
+ import { memo as j, forwardRef as x, useMemo as u, useRef as b, useState as z, createRef as B, useCallback as d, useImperativeHandle as D, useEffect as $ } from "react";
3
3
  import E from "../../../../../assets/line-icons/icons/carat-left.js";
4
4
  import F from "../../../../../assets/line-icons/icons/carat-right.js";
5
5
  import R from "../../../../ui/buttons/icon-button/icon-button.js";
6
6
  import g from "../../../../ui/separator/separator.js";
7
7
  import { Carousel as M, CarouselWrapper as S, CarouselItemContainer as H, ExtendedFlexView as T, Indicator as V } from "./carousel-styled.js";
8
- const W = ({ items: a, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev: m, analyticsNext: f }, k) => {
9
- const p = b(() => m, [m]), C = b(() => f, [f]), h = u(null), i = u(!0), [o, n] = z(l), I = u(
10
- a.map(() => B())
11
- ), w = d(() => {
8
+ const W = ({ items: t, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev: m, analyticsNext: p }, k) => {
9
+ const f = u(() => m, [m]), C = u(() => p, [p]), h = b(null), i = b(!0), [o, n] = z(l), I = u(() => t.map(() => B()), [t]), w = d(() => {
12
10
  c == null || c(), n((r) => r - 1);
13
11
  }, [c]), A = d(() => {
14
12
  s == null || s(), n((r) => r + 1);
@@ -17,7 +15,7 @@ const W = ({ items: a, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev:
17
15
  }, []);
18
16
  return D(k, () => ({
19
17
  nextBtnRef: h,
20
- indicatorRefs: I.current,
18
+ indicatorRefs: I,
21
19
  currentIndex: o,
22
20
  goToIndex: (r) => {
23
21
  n(r);
@@ -32,10 +30,10 @@ const W = ({ items: a, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev:
32
30
  {
33
31
  $translate: o * 100,
34
32
  $translateDuration: i.current ? 0 : 300,
35
- children: a.map((r, t) => /* @__PURE__ */ e(H, { children: r }, t))
33
+ children: t.map((r, a) => /* @__PURE__ */ e(H, { children: r }, a))
36
34
  }
37
35
  ),
38
- a.length > 1 && /* @__PURE__ */ y(
36
+ t.length > 1 && /* @__PURE__ */ y(
39
37
  T,
40
38
  {
41
39
  $flexDirection: "row",
@@ -49,20 +47,20 @@ const W = ({ items: a, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev:
49
47
  renderAs: "secondary",
50
48
  Icon: E,
51
49
  onClick: w,
52
- analyticsLabel: p.analyticsLabel,
53
- analyticsProps: p.analyticsProps,
50
+ analyticsLabel: f.analyticsLabel,
51
+ analyticsProps: f.analyticsProps,
54
52
  disabled: o === 0
55
53
  }
56
54
  ),
57
55
  /* @__PURE__ */ e(g, { width: 48 }),
58
- a.map((r, t) => /* @__PURE__ */ e(
56
+ t.map((r, a) => /* @__PURE__ */ e(
59
57
  V,
60
58
  {
61
- ref: I.current[t],
62
- $isActive: t === o,
63
- onClick: () => L(t)
59
+ ref: I[a],
60
+ $isActive: a === o,
61
+ onClick: () => L(a)
64
62
  },
65
- t
63
+ a
66
64
  )),
67
65
  /* @__PURE__ */ e(g, { width: 48 }),
68
66
  /* @__PURE__ */ e("div", { ref: h, children: /* @__PURE__ */ e(
@@ -73,7 +71,7 @@ const W = ({ items: a, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev:
73
71
  onClick: A,
74
72
  analyticsLabel: C.analyticsLabel,
75
73
  analyticsProps: C.analyticsProps,
76
- disabled: o === a.length - 1
74
+ disabled: o === t.length - 1
77
75
  }
78
76
  ) })
79
77
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","sources":["../../../../../../src/features/circle-games/game-launcher/comps/carousel/carousel.tsx"],"sourcesContent":["import type { ICarouselProps, ICarouselRefs } from './carousel-types';\nimport type { ForwardRefRenderFunction } from 'react';\n\nimport {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n createRef,\n} from 'react';\n\nimport CaratLeftIcon from '../../../../../assets/line-icons/icons/carat-left';\nimport CaratRightIcon from '../../../../../assets/line-icons/icons/carat-right';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport Separator from '../../../../ui/separator/separator';\nimport * as Styled from './carousel-styled';\n\nconst CarouselComponent: ForwardRefRenderFunction<ICarouselRefs, ICarouselProps> = (\n { items, defaultIndex = 0, onNext, onPrev, analyticsPrev, analyticsNext },\n ref,\n) => {\n const memoizedAnalyticsPrev = useMemo(() => analyticsPrev, [analyticsPrev]);\n const memoizedAnalyticsNext = useMemo(() => analyticsNext, [analyticsNext]);\n\n const nextBtnRef = useRef<HTMLDivElement>(null);\n const isFirstMount = useRef(true);\n const [currIndex, setCurrIndex] = useState(defaultIndex);\n\n // Create a stable array of refs for indicators\n const indicatorRefs = useRef<React.RefObject<HTMLDivElement>[]>(\n items.map(() => createRef<HTMLDivElement>()),\n );\n\n const handleCarouselPrev = useCallback(() => {\n onPrev?.();\n setCurrIndex(prev => prev - 1);\n }, [onPrev]);\n\n const handleCarouselNext = useCallback(() => {\n onNext?.();\n setCurrIndex(prev => prev + 1);\n }, [onNext]);\n\n const handleCarouselIndicatorClick = useCallback((index: number) => {\n setCurrIndex(index);\n }, []);\n\n useImperativeHandle(ref, () => ({\n nextBtnRef,\n indicatorRefs: indicatorRefs.current,\n currentIndex: currIndex,\n goToIndex: (index: number) => {\n setCurrIndex(index);\n },\n }));\n\n useEffect(() => {\n if (isFirstMount.current) {\n isFirstMount.current = false;\n }\n }, []);\n\n // Change index from parent\n useEffect(() => {\n setCurrIndex(defaultIndex);\n }, [defaultIndex]);\n\n return (\n <Styled.Carousel>\n <Styled.CarouselWrapper\n $translate={currIndex * 100}\n $translateDuration={isFirstMount.current ? 0 : 300}\n >\n {items.map((item, index) => (\n <Styled.CarouselItemContainer key={index}>{item}</Styled.CarouselItemContainer>\n ))}\n </Styled.CarouselWrapper>\n\n {items.length > 1 && (\n <Styled.ExtendedFlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $position=\"absolute\"\n >\n <IconButton\n renderAs=\"secondary\"\n Icon={CaratLeftIcon}\n onClick={handleCarouselPrev}\n analyticsLabel={memoizedAnalyticsPrev.analyticsLabel}\n analyticsProps={memoizedAnalyticsPrev.analyticsProps}\n disabled={currIndex === 0}\n />\n <Separator width={48} />\n {items.map((_, index) => (\n <Styled.Indicator\n ref={indicatorRefs.current[index]}\n $isActive={index === currIndex}\n key={index}\n onClick={() => handleCarouselIndicatorClick(index)}\n />\n ))}\n <Separator width={48} />\n <div ref={nextBtnRef}>\n <IconButton\n renderAs=\"secondary\"\n Icon={CaratRightIcon}\n onClick={handleCarouselNext}\n analyticsLabel={memoizedAnalyticsNext.analyticsLabel}\n analyticsProps={memoizedAnalyticsNext.analyticsProps}\n disabled={currIndex === items.length - 1}\n />\n </div>\n </Styled.ExtendedFlexView>\n )}\n </Styled.Carousel>\n );\n};\n\nexport const Carousel = memo(forwardRef(CarouselComponent));\n"],"names":["CarouselComponent","items","defaultIndex","onNext","onPrev","analyticsPrev","analyticsNext","ref","memoizedAnalyticsPrev","useMemo","memoizedAnalyticsNext","nextBtnRef","useRef","isFirstMount","currIndex","setCurrIndex","useState","indicatorRefs","createRef","handleCarouselPrev","useCallback","prev","handleCarouselNext","handleCarouselIndicatorClick","index","useImperativeHandle","useEffect","jsxs","Styled.Carousel","jsx","Styled.CarouselWrapper","item","Styled.CarouselItemContainer","Styled.ExtendedFlexView","IconButton","CaratLeftIcon","Separator","_","Styled.Indicator","CaratRightIcon","Carousel","memo","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"carousel.js","sources":["../../../../../../src/features/circle-games/game-launcher/comps/carousel/carousel.tsx"],"sourcesContent":["import type { ICarouselProps, ICarouselRefs } from './carousel-types';\nimport type { ForwardRefRenderFunction } from 'react';\n\nimport {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n createRef,\n} from 'react';\n\nimport CaratLeftIcon from '../../../../../assets/line-icons/icons/carat-left';\nimport CaratRightIcon from '../../../../../assets/line-icons/icons/carat-right';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport Separator from '../../../../ui/separator/separator';\nimport * as Styled from './carousel-styled';\n\nconst CarouselComponent: ForwardRefRenderFunction<ICarouselRefs, ICarouselProps> = (\n { items, defaultIndex = 0, onNext, onPrev, analyticsPrev, analyticsNext },\n ref,\n) => {\n const memoizedAnalyticsPrev = useMemo(() => analyticsPrev, [analyticsPrev]);\n const memoizedAnalyticsNext = useMemo(() => analyticsNext, [analyticsNext]);\n\n const nextBtnRef = useRef<HTMLDivElement>(null);\n const isFirstMount = useRef(true);\n const [currIndex, setCurrIndex] = useState(defaultIndex);\n\n // Create a stable array of refs for indicators\n const indicatorRefs = useMemo(() => items.map(() => createRef<HTMLDivElement>()), [items]);\n\n const handleCarouselPrev = useCallback(() => {\n onPrev?.();\n setCurrIndex(prev => prev - 1);\n }, [onPrev]);\n\n const handleCarouselNext = useCallback(() => {\n onNext?.();\n setCurrIndex(prev => prev + 1);\n }, [onNext]);\n\n const handleCarouselIndicatorClick = useCallback((index: number) => {\n setCurrIndex(index);\n }, []);\n\n useImperativeHandle(ref, () => ({\n nextBtnRef,\n indicatorRefs,\n currentIndex: currIndex,\n goToIndex: (index: number) => {\n setCurrIndex(index);\n },\n }));\n\n useEffect(() => {\n if (isFirstMount.current) {\n isFirstMount.current = false;\n }\n }, []);\n\n // Change index from parent\n useEffect(() => {\n setCurrIndex(defaultIndex);\n }, [defaultIndex]);\n\n return (\n <Styled.Carousel>\n <Styled.CarouselWrapper\n $translate={currIndex * 100}\n $translateDuration={isFirstMount.current ? 0 : 300}\n >\n {items.map((item, index) => (\n <Styled.CarouselItemContainer key={index}>{item}</Styled.CarouselItemContainer>\n ))}\n </Styled.CarouselWrapper>\n\n {items.length > 1 && (\n <Styled.ExtendedFlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $position=\"absolute\"\n >\n <IconButton\n renderAs=\"secondary\"\n Icon={CaratLeftIcon}\n onClick={handleCarouselPrev}\n analyticsLabel={memoizedAnalyticsPrev.analyticsLabel}\n analyticsProps={memoizedAnalyticsPrev.analyticsProps}\n disabled={currIndex === 0}\n />\n <Separator width={48} />\n {items.map((_, index) => (\n <Styled.Indicator\n ref={indicatorRefs[index]}\n $isActive={index === currIndex}\n key={index}\n onClick={() => handleCarouselIndicatorClick(index)}\n />\n ))}\n <Separator width={48} />\n <div ref={nextBtnRef}>\n <IconButton\n renderAs=\"secondary\"\n Icon={CaratRightIcon}\n onClick={handleCarouselNext}\n analyticsLabel={memoizedAnalyticsNext.analyticsLabel}\n analyticsProps={memoizedAnalyticsNext.analyticsProps}\n disabled={currIndex === items.length - 1}\n />\n </div>\n </Styled.ExtendedFlexView>\n )}\n </Styled.Carousel>\n );\n};\n\nexport const Carousel = memo(forwardRef(CarouselComponent));\n"],"names":["CarouselComponent","items","defaultIndex","onNext","onPrev","analyticsPrev","analyticsNext","ref","memoizedAnalyticsPrev","useMemo","memoizedAnalyticsNext","nextBtnRef","useRef","isFirstMount","currIndex","setCurrIndex","useState","indicatorRefs","createRef","handleCarouselPrev","useCallback","prev","handleCarouselNext","handleCarouselIndicatorClick","index","useImperativeHandle","useEffect","jsxs","Styled.Carousel","jsx","Styled.CarouselWrapper","item","Styled.CarouselItemContainer","Styled.ExtendedFlexView","IconButton","CaratLeftIcon","Separator","_","Styled.Indicator","CaratRightIcon","Carousel","memo","forwardRef"],"mappings":"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"}
@@ -1,60 +1,72 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import { forwardRef as v, useRef as S, useCallback as i, useMemo as T, useImperativeHandle as x } from "react";
3
- import { LOTTIE as z } from "../../../assets/lottie/lottie.js";
4
- import { CircularLoader as D } from "../../ui/loader/circular-loader/circular-loader.js";
5
- import O from "../../ui/lottie-animation/lottie-animation.js";
6
- import { useCircleSounds as K } from "../hooks/use-circle-sounds/use-circle-sounds.js";
7
- import { CircleSoundKey as n } from "../hooks/use-circle-sounds/use-circle-sounds-enums.js";
8
- import { GAME_LAUNCHER_SIZE as B } from "./comps/card-container/constants.js";
9
- import { Carousel as _ } from "./comps/carousel/carousel.js";
10
- import { GAME_LAUNCHER_ASSET_PADDING as H } from "./comps/segmented-game-card/constants.js";
11
- import { SegmentedGameCard as f } from "./comps/segmented-game-card/segmented-game-card.js";
12
- import { TablesCard as J } from "./comps/tables-card/tables-card.js";
13
- import { GAME_LAUNCHER_ANALYTICS_EVENTS as P } from "./game-launcher-analytics-events.js";
14
- import { useGameLauncherJourney as U } from "./hooks/use-game-launcher-journey/use-game-launcher-journey.js";
15
- import { useTableLauncherJourney as Y } from "./hooks/use-table-launcher-journey/use-table-launcher-journey.js";
16
- import { ProjectType as m } from "../games/web-view/enums/project-type-enum.js";
17
- const h = B + H, oe = v(
18
- ({ onSegmentClick: r, isError: I, data: e, isLoading: R, defaultIndex: g = 0 }, G) => {
19
- const o = S(null), { playSwipSound: p, play: a } = K(), u = i(
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { memo as g, useRef as x, useCallback as m, useMemo as z, useEffect as D } from "react";
3
+ import { LOTTIE as U } from "../../../assets/lottie/lottie.js";
4
+ import { JOURNEY_ID_STUDENT as G } from "../../journey/journey-id/journey-id-student.js";
5
+ import { useJourney as Y } from "../../journey/use-journey/use-journey.js";
6
+ import { CircularLoader as B } from "../../ui/loader/circular-loader/circular-loader.js";
7
+ import K from "../../ui/lottie-animation/lottie-animation.js";
8
+ import { useCircleSounds as H } from "../hooks/use-circle-sounds/use-circle-sounds.js";
9
+ import { CircleSoundKey as t } from "../hooks/use-circle-sounds/use-circle-sounds-enums.js";
10
+ import { GAME_LAUNCHER_SIZE as Z } from "./comps/card-container/constants.js";
11
+ import { Carousel as V } from "./comps/carousel/carousel.js";
12
+ import { GAME_LAUNCHER_ASSET_PADDING as w } from "./comps/segmented-game-card/constants.js";
13
+ import { SegmentedGameCard as E } from "./comps/segmented-game-card/segmented-game-card.js";
14
+ import { TablesCard as X } from "./comps/tables-card/tables-card.js";
15
+ import { GAME_LAUNCHER_ANALYTICS_EVENTS as S } from "./game-launcher-analytics-events.js";
16
+ import { useGameLauncherJourney as j } from "./hooks/use-game-launcher-journey/use-game-launcher-journey.js";
17
+ import { useTableLauncherJourney as q } from "./hooks/use-table-launcher-journey/use-table-launcher-journey.js";
18
+ import { ProjectType as n } from "../games/web-view/enums/project-type-enum.js";
19
+ const M = Z + w, ce = g(
20
+ ({
21
+ onSegmentClick: r,
22
+ journeyId: u,
23
+ data: e,
24
+ isLoading: f,
25
+ isTutorialOnboardingDone: a,
26
+ defaultIndex: J = 0,
27
+ onJourneyComplete: C
28
+ }) => {
29
+ const p = x(null), { isJourneyActive: L } = Y(), { playSwipSound: _, play: o } = H(), c = m(
20
30
  (l) => {
21
- a(n.GAME_CARD_CLICK), r(l, m.TABLE);
31
+ o(t.GAME_CARD_CLICK), r(l, n.TABLE);
22
32
  },
23
- [r, a]
24
- ), c = i(
33
+ [r, o]
34
+ ), A = m(
25
35
  (l) => {
26
- l.status !== "completed" && (a(n.GAME_CARD_CLICK), r(l, m.LESSON));
36
+ l.status !== "completed" && (o(t.GAME_CARD_CLICK), r(l, n.LESSON));
27
37
  },
28
- [r, a]
29
- ), b = i(
38
+ [r, o]
39
+ ), b = m(
30
40
  (l) => {
31
- a(n.GAME_CARD_CLICK), r(l, m.GAME);
41
+ o(t.GAME_CARD_CLICK), r(l, n.GAME);
32
42
  },
33
- [r, a]
34
- ), L = i(
43
+ [r, o]
44
+ ), T = m(
35
45
  (l) => {
36
- a(n.GAME_CARD_CLICK), r(l, m.PUZZLE);
46
+ o(t.GAME_CARD_CLICK), r(l, n.PUZZLE);
37
47
  },
38
- [r, a]
48
+ [r, o]
39
49
  ), {
40
- gameRefs: A,
41
- lessonRefs: C,
42
- puzzleRefs: E,
43
- startJourney: V
44
- } = U({
45
- carouselRef: o,
46
- onSegmentClick: r
47
- }), { startJourney: d, tableRef: y } = Y({
48
- carouselRef: o,
49
- onTableSegmentClick: u
50
- }), M = T(() => {
50
+ gameRefs: y,
51
+ lessonRefs: R,
52
+ puzzleRefs: I,
53
+ startJourney: P
54
+ } = j({
55
+ carouselRefs: p,
56
+ onSegmentClick: r,
57
+ onJourneyComplete: C
58
+ }), { startJourney: N, tableRef: h } = q({
59
+ carouselRefs: p,
60
+ onTableSegmentClick: c,
61
+ onJourneyComplete: C
62
+ }), v = z(() => {
51
63
  let l = [];
52
64
  return e && (e.lessons && (l = [
53
65
  ...l,
54
- /* @__PURE__ */ t(
55
- f,
66
+ /* @__PURE__ */ i(
67
+ E,
56
68
  {
57
- ref: C,
69
+ ref: R,
58
70
  label: e.lessons.label,
59
71
  value: e.lessons.data.filter((s) => s.status === "completed").length,
60
72
  maxValue: e.lessons.data.length,
@@ -63,16 +75,16 @@ const h = B + H, oe = v(
63
75
  card: s.cardLottie,
64
76
  name: s.name,
65
77
  isCompleted: s.status === "completed",
66
- onPress: () => c(s)
78
+ onPress: () => A(s)
67
79
  }))
68
80
  }
69
81
  )
70
82
  ]), l = [
71
83
  ...l,
72
- /* @__PURE__ */ t(
73
- f,
84
+ /* @__PURE__ */ i(
85
+ E,
74
86
  {
75
- ref: A,
87
+ ref: y,
76
88
  label: e.games.label,
77
89
  value: e.games.data.filter((s) => s.isPlayed).length,
78
90
  maxValue: e.games.data.length,
@@ -85,10 +97,10 @@ const h = B + H, oe = v(
85
97
  }))
86
98
  }
87
99
  ),
88
- /* @__PURE__ */ t(
89
- f,
100
+ /* @__PURE__ */ i(
101
+ E,
90
102
  {
91
- ref: E,
103
+ ref: I,
92
104
  label: e.puzzles.label,
93
105
  value: e.puzzles.data.filter((s) => s.solved).length,
94
106
  maxValue: e.puzzles.data.length,
@@ -97,84 +109,92 @@ const h = B + H, oe = v(
97
109
  card: s.cardLottie,
98
110
  name: s.name,
99
111
  isCompleted: s.solved,
100
- onPress: () => L(s)
112
+ onPress: () => T(s)
101
113
  }))
102
114
  }
103
115
  )
104
116
  ], e.tables && (l = [
105
117
  ...l,
106
- /* @__PURE__ */ t(
107
- J,
118
+ /* @__PURE__ */ i(
119
+ X,
108
120
  {
109
- ref: y,
121
+ ref: h,
110
122
  label: e.tables.label,
111
123
  data: e.tables.data,
112
- onPress: u,
124
+ onPress: c,
113
125
  openModesOfTable: e.tables.openModesOfTable
114
126
  }
115
127
  )
116
128
  ])), l;
117
129
  }, [
118
130
  e,
131
+ y,
132
+ I,
133
+ R,
119
134
  A,
120
- E,
121
- C,
122
- c,
123
135
  b,
124
- L,
125
- y,
126
- u
127
- ]), N = T(
136
+ T,
137
+ h,
138
+ c
139
+ ]), O = z(
128
140
  () => [
129
- /* @__PURE__ */ t(
130
- O,
141
+ /* @__PURE__ */ i(
142
+ K,
131
143
  {
132
- src: z.SLEEPY_BOI,
133
- width: h,
134
- height: h
144
+ src: U.SLEEPY_BOI,
145
+ width: M,
146
+ height: M
135
147
  }
136
148
  )
137
149
  ],
138
150
  []
139
151
  );
140
- return x(
141
- G,
142
- () => ({
143
- startActivityOnboarding: V,
144
- startTablesOnboarding: d,
145
- carouselRef: o
146
- }),
147
- [d]
148
- ), R ? /* @__PURE__ */ t(D, {}) : I ? /* @__PURE__ */ t(
149
- _,
152
+ return D(() => {
153
+ if (!(f || !e || L)) {
154
+ if (e != null && e.puzzles && u === G.CIRCLE_ACTIVITIES_INTRO_JOURNEY) {
155
+ P(e == null ? void 0 : e.puzzles, !!(e != null && e.lessons));
156
+ return;
157
+ }
158
+ e != null && e.tables && u === G.CIRCLE_TABLES_INTRO_JOURNEY && N(e == null ? void 0 : e.tables, a);
159
+ }
160
+ }, [
161
+ e,
162
+ L,
163
+ f,
164
+ a,
165
+ u,
166
+ P,
167
+ N
168
+ ]), f ? /* @__PURE__ */ i(B, {}) : e ? /* @__PURE__ */ i(
169
+ V,
150
170
  {
151
- items: N,
171
+ ref: p,
172
+ items: v,
173
+ defaultIndex: J,
174
+ onNext: _,
175
+ onPrev: _,
152
176
  analyticsNext: {
153
- analyticsLabel: ""
177
+ analyticsLabel: S.NEXT_ACTIVITY
154
178
  },
155
179
  analyticsPrev: {
156
- analyticsLabel: ""
180
+ analyticsLabel: S.PREV_ACTIVITY
157
181
  }
158
182
  }
159
- ) : /* @__PURE__ */ t(
160
- _,
183
+ ) : /* @__PURE__ */ i(
184
+ V,
161
185
  {
162
- ref: o,
163
- items: M,
164
- defaultIndex: g,
165
- onNext: p,
166
- onPrev: p,
186
+ items: O,
167
187
  analyticsNext: {
168
- analyticsLabel: P.NEXT_ACTIVITY
188
+ analyticsLabel: ""
169
189
  },
170
190
  analyticsPrev: {
171
- analyticsLabel: P.PREV_ACTIVITY
191
+ analyticsLabel: ""
172
192
  }
173
193
  }
174
194
  );
175
195
  }
176
196
  );
177
197
  export {
178
- oe as GameLauncher
198
+ ce as GameLauncher
179
199
  };
180
200
  //# sourceMappingURL=game-launcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"game-launcher.js","sources":["../../../../src/features/circle-games/game-launcher/game-launcher.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport type { ICarouselRefs } from './comps/carousel/carousel-types';\nimport type { ITableDetails } from './comps/tables-card/tables-card-types';\nimport type {\n Game,\n Lesson,\n Puzzle,\n} from './dal/use-get-circle-home-details-dal/use-get-circle-home-dal-types';\nimport type { IGameLauncherProps, IGameLauncherRef } from './game-launcher-types';\n\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useRef } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport { ProjectType } from '../games/web-view/enums';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { CircleSoundKey } from '../hooks/use-circle-sounds/use-circle-sounds-enums';\nimport { GAME_LAUNCHER_SIZE } from './comps/card-container/constants';\nimport { Carousel } from './comps/carousel/carousel';\nimport { GAME_LAUNCHER_ASSET_PADDING } from './comps/segmented-game-card/constants';\nimport { SegmentedGameCard } from './comps/segmented-game-card/segmented-game-card';\nimport { TablesCard } from './comps/tables-card/tables-card';\nimport { GAME_LAUNCHER_ANALYTICS_EVENTS } from './game-launcher-analytics-events';\nimport { useGameLauncherJourney } from './hooks/use-game-launcher-journey/use-game-launcher-journey';\nimport { useTableLauncherJourney } from './hooks/use-table-launcher-journey/use-table-launcher-journey';\n\nconst sleepyBoiDimension = GAME_LAUNCHER_SIZE + GAME_LAUNCHER_ASSET_PADDING;\n\nexport const GameLauncher = forwardRef<IGameLauncherRef, IGameLauncherProps>(\n ({ onSegmentClick, isError, data, isLoading, defaultIndex = 0 }, ref) => {\n const carouselRef = useRef<ICarouselRefs>(null);\n\n const { playSwipSound, play } = useCircleSounds();\n\n const onTableSegmentClick = useCallback(\n (table: ITableDetails) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(table, ProjectType.TABLE);\n },\n [onSegmentClick, play],\n );\n\n const handleLessonSegmentClick = useCallback(\n (lesson: Lesson) => {\n if (lesson.status !== 'completed') {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(lesson, ProjectType.LESSON);\n }\n },\n [onSegmentClick, play],\n );\n\n const handleGameSegmentClick = useCallback(\n (game: Game) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(game, ProjectType.GAME);\n },\n [onSegmentClick, play],\n );\n\n const handlePuzzleSegmentClick = useCallback(\n (puzzle: Puzzle) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(puzzle, ProjectType.PUZZLE);\n },\n [onSegmentClick, play],\n );\n\n const {\n gameRefs,\n lessonRefs,\n puzzleRefs,\n startJourney: startActivityOnboarding,\n } = useGameLauncherJourney({\n carouselRef,\n onSegmentClick,\n });\n\n const { startJourney: startTablesOnboarding, tableRef } = useTableLauncherJourney({\n carouselRef,\n onTableSegmentClick,\n });\n\n const items = useMemo(() => {\n let itemTypes: ReactNode[] = [];\n\n if (data) {\n if (data.lessons) {\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={lessonRefs}\n label={data.lessons.label}\n value={data.lessons.data.filter(lesson => lesson.status === 'completed').length}\n maxValue={data.lessons.data.length}\n initialValue={data.lessons.initialProgressValue}\n data={data?.lessons.data.map(lesson => ({\n card: lesson.cardLottie,\n name: lesson.name,\n isCompleted: lesson.status === 'completed',\n onPress: () => handleLessonSegmentClick(lesson),\n }))}\n />,\n ];\n }\n\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={gameRefs}\n label={data.games.label}\n value={data.games.data.filter(game => game.isPlayed).length}\n maxValue={data.games.data.length}\n initialValue={data.games.initialProgressValue}\n data={data.games.data.map(game => ({\n card: game.cardLottie,\n name: game.name,\n isCompleted: false,\n onPress: () => handleGameSegmentClick(game),\n }))}\n />,\n <SegmentedGameCard\n ref={puzzleRefs}\n label={data.puzzles.label}\n value={data.puzzles.data.filter(puzzle => puzzle.solved).length}\n maxValue={data.puzzles.data.length}\n initialValue={data.puzzles.initialProgressValue}\n data={data.puzzles.data.map(puzzle => ({\n card: puzzle.cardLottie,\n name: puzzle.name,\n isCompleted: puzzle.solved,\n onPress: () => handlePuzzleSegmentClick(puzzle),\n }))}\n />,\n ];\n\n if (data.tables) {\n itemTypes = [\n ...itemTypes,\n <TablesCard\n ref={tableRef}\n label={data.tables.label}\n data={data.tables.data}\n onPress={onTableSegmentClick}\n openModesOfTable={data.tables.openModesOfTable}\n />,\n ];\n }\n }\n\n return itemTypes;\n }, [\n data,\n gameRefs,\n puzzleRefs,\n lessonRefs,\n handleLessonSegmentClick,\n handleGameSegmentClick,\n handlePuzzleSegmentClick,\n tableRef,\n onTableSegmentClick,\n ]);\n\n const sleepyBoiItem = useMemo(\n () => [\n <LottieAnimation\n src={LOTTIE.SLEEPY_BOI}\n width={sleepyBoiDimension}\n height={sleepyBoiDimension}\n />,\n ],\n [],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n startActivityOnboarding,\n startTablesOnboarding,\n carouselRef,\n }),\n [startTablesOnboarding],\n );\n\n if (isLoading) {\n return <CircularLoader />;\n }\n\n if (isError) {\n return (\n <Carousel\n items={sleepyBoiItem}\n analyticsNext={{\n analyticsLabel: '',\n }}\n analyticsPrev={{\n analyticsLabel: '',\n }}\n />\n );\n }\n\n return (\n <Carousel\n ref={carouselRef}\n items={items}\n defaultIndex={defaultIndex}\n onNext={playSwipSound}\n onPrev={playSwipSound}\n analyticsNext={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.NEXT_ACTIVITY,\n }}\n analyticsPrev={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.PREV_ACTIVITY,\n }}\n />\n );\n },\n);\n"],"names":["sleepyBoiDimension","GAME_LAUNCHER_SIZE","GAME_LAUNCHER_ASSET_PADDING","GameLauncher","forwardRef","onSegmentClick","isError","data","isLoading","defaultIndex","ref","carouselRef","useRef","playSwipSound","play","useCircleSounds","onTableSegmentClick","useCallback","table","CircleSoundKey","ProjectType","handleLessonSegmentClick","lesson","handleGameSegmentClick","game","handlePuzzleSegmentClick","puzzle","gameRefs","lessonRefs","puzzleRefs","startActivityOnboarding","useGameLauncherJourney","startTablesOnboarding","tableRef","useTableLauncherJourney","items","useMemo","itemTypes","jsx","SegmentedGameCard","TablesCard","sleepyBoiItem","LottieAnimation","LOTTIE","useImperativeHandle","CircularLoader","Carousel","GAME_LAUNCHER_ANALYTICS_EVENTS"],"mappings":"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"}
1
+ {"version":3,"file":"game-launcher.js","sources":["../../../../src/features/circle-games/game-launcher/game-launcher.tsx"],"sourcesContent":["import type { ICarouselRefs } from './comps/carousel/carousel-types';\nimport type { ITableDetails } from './comps/tables-card/tables-card-types';\nimport type {\n Game,\n Lesson,\n Puzzle,\n} from './dal/use-get-circle-home-details-dal/use-get-circle-home-dal-types';\nimport type { IGameLauncherProps } from './game-launcher-types';\nimport type { FC, ReactNode } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { JOURNEY_ID_STUDENT } from '../../journey/journey-id/journey-id-student';\nimport { useJourney } from '../../journey/use-journey/use-journey';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport { ProjectType } from '../games/web-view/enums';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { CircleSoundKey } from '../hooks/use-circle-sounds/use-circle-sounds-enums';\nimport { GAME_LAUNCHER_SIZE } from './comps/card-container/constants';\nimport { Carousel } from './comps/carousel/carousel';\nimport { GAME_LAUNCHER_ASSET_PADDING } from './comps/segmented-game-card/constants';\nimport { SegmentedGameCard } from './comps/segmented-game-card/segmented-game-card';\nimport { TablesCard } from './comps/tables-card/tables-card';\nimport { GAME_LAUNCHER_ANALYTICS_EVENTS } from './game-launcher-analytics-events';\nimport { useGameLauncherJourney } from './hooks/use-game-launcher-journey/use-game-launcher-journey';\nimport { useTableLauncherJourney } from './hooks/use-table-launcher-journey/use-table-launcher-journey';\n\nconst sleepyBoiDimension = GAME_LAUNCHER_SIZE + GAME_LAUNCHER_ASSET_PADDING;\n\nexport const GameLauncher: FC<IGameLauncherProps> = memo(\n ({\n onSegmentClick,\n journeyId,\n data,\n isLoading,\n isTutorialOnboardingDone,\n defaultIndex = 0,\n onJourneyComplete,\n }) => {\n const carouselRefs = useRef<ICarouselRefs>(null);\n\n const { isJourneyActive } = useJourney();\n\n const { playSwipSound, play } = useCircleSounds();\n\n const onTableSegmentClick = useCallback(\n (table: ITableDetails) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(table, ProjectType.TABLE);\n },\n [onSegmentClick, play],\n );\n\n const handleLessonSegmentClick = useCallback(\n (lesson: Lesson) => {\n if (lesson.status !== 'completed') {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(lesson, ProjectType.LESSON);\n }\n },\n [onSegmentClick, play],\n );\n\n const handleGameSegmentClick = useCallback(\n (game: Game) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(game, ProjectType.GAME);\n },\n [onSegmentClick, play],\n );\n\n const handlePuzzleSegmentClick = useCallback(\n (puzzle: Puzzle) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(puzzle, ProjectType.PUZZLE);\n },\n [onSegmentClick, play],\n );\n\n const {\n gameRefs,\n lessonRefs,\n puzzleRefs,\n startJourney: startLessonPuzzleGamesJourney,\n } = useGameLauncherJourney({\n carouselRefs,\n onSegmentClick,\n onJourneyComplete,\n });\n\n const { startJourney: startTablesJourney, tableRef } = useTableLauncherJourney({\n carouselRefs,\n onTableSegmentClick,\n onJourneyComplete,\n });\n\n const items = useMemo(() => {\n let itemTypes: ReactNode[] = [];\n\n if (data) {\n if (data.lessons) {\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={lessonRefs}\n label={data.lessons.label}\n value={data.lessons.data.filter(lesson => lesson.status === 'completed').length}\n maxValue={data.lessons.data.length}\n initialValue={data.lessons.initialProgressValue}\n data={data?.lessons.data.map(lesson => ({\n card: lesson.cardLottie,\n name: lesson.name,\n isCompleted: lesson.status === 'completed',\n onPress: () => handleLessonSegmentClick(lesson),\n }))}\n />,\n ];\n }\n\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={gameRefs}\n label={data.games.label}\n value={data.games.data.filter(game => game.isPlayed).length}\n maxValue={data.games.data.length}\n initialValue={data.games.initialProgressValue}\n data={data.games.data.map(game => ({\n card: game.cardLottie,\n name: game.name,\n isCompleted: false,\n onPress: () => handleGameSegmentClick(game),\n }))}\n />,\n <SegmentedGameCard\n ref={puzzleRefs}\n label={data.puzzles.label}\n value={data.puzzles.data.filter(puzzle => puzzle.solved).length}\n maxValue={data.puzzles.data.length}\n initialValue={data.puzzles.initialProgressValue}\n data={data.puzzles.data.map(puzzle => ({\n card: puzzle.cardLottie,\n name: puzzle.name,\n isCompleted: puzzle.solved,\n onPress: () => handlePuzzleSegmentClick(puzzle),\n }))}\n />,\n ];\n\n if (data.tables) {\n itemTypes = [\n ...itemTypes,\n <TablesCard\n ref={tableRef}\n label={data.tables.label}\n data={data.tables.data}\n onPress={onTableSegmentClick}\n openModesOfTable={data.tables.openModesOfTable}\n />,\n ];\n }\n }\n\n return itemTypes;\n }, [\n data,\n gameRefs,\n puzzleRefs,\n lessonRefs,\n handleLessonSegmentClick,\n handleGameSegmentClick,\n handlePuzzleSegmentClick,\n tableRef,\n onTableSegmentClick,\n ]);\n\n const sleepyBoiItem = useMemo(\n () => [\n <LottieAnimation\n src={LOTTIE.SLEEPY_BOI}\n width={sleepyBoiDimension}\n height={sleepyBoiDimension}\n />,\n ],\n [],\n );\n\n // Start game launcher journey only when isLoading has become false and data is available\n useEffect(() => {\n if (isLoading || !data || isJourneyActive) {\n return;\n }\n\n if (data?.puzzles && journeyId === JOURNEY_ID_STUDENT.CIRCLE_ACTIVITIES_INTRO_JOURNEY) {\n startLessonPuzzleGamesJourney(data?.puzzles, !!data?.lessons);\n\n return; // CIRCLE_ACTIVITIES_INTRO_JOURNEY has higher priority\n }\n\n if (data?.tables && journeyId === JOURNEY_ID_STUDENT.CIRCLE_TABLES_INTRO_JOURNEY) {\n startTablesJourney(data?.tables, isTutorialOnboardingDone);\n }\n }, [\n data,\n isJourneyActive,\n isLoading,\n isTutorialOnboardingDone,\n journeyId,\n startLessonPuzzleGamesJourney,\n startTablesJourney,\n ]);\n\n if (isLoading) {\n return <CircularLoader />;\n }\n\n if (!data) {\n return (\n <Carousel\n items={sleepyBoiItem}\n analyticsNext={{\n analyticsLabel: '',\n }}\n analyticsPrev={{\n analyticsLabel: '',\n }}\n />\n );\n }\n\n return (\n <Carousel\n ref={carouselRefs}\n items={items}\n defaultIndex={defaultIndex}\n onNext={playSwipSound}\n onPrev={playSwipSound}\n analyticsNext={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.NEXT_ACTIVITY,\n }}\n analyticsPrev={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.PREV_ACTIVITY,\n }}\n />\n );\n },\n);\n"],"names":["sleepyBoiDimension","GAME_LAUNCHER_SIZE","GAME_LAUNCHER_ASSET_PADDING","GameLauncher","memo","onSegmentClick","journeyId","data","isLoading","isTutorialOnboardingDone","defaultIndex","onJourneyComplete","carouselRefs","useRef","isJourneyActive","useJourney","playSwipSound","play","useCircleSounds","onTableSegmentClick","useCallback","table","CircleSoundKey","ProjectType","handleLessonSegmentClick","lesson","handleGameSegmentClick","game","handlePuzzleSegmentClick","puzzle","gameRefs","lessonRefs","puzzleRefs","startLessonPuzzleGamesJourney","useGameLauncherJourney","startTablesJourney","tableRef","useTableLauncherJourney","items","useMemo","itemTypes","jsx","SegmentedGameCard","TablesCard","sleepyBoiItem","LottieAnimation","LOTTIE","useEffect","JOURNEY_ID_STUDENT","CircularLoader","Carousel","GAME_LAUNCHER_ANALYTICS_EVENTS"],"mappings":"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"}