@cuemath/leap 3.1.31 → 3.1.32

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.
Files changed (28) hide show
  1. package/dist/features/circle-games/game-launcher/comps/tables-card/infinite-button/infinite-mode-launcher-button.js +43 -0
  2. package/dist/features/circle-games/game-launcher/comps/tables-card/infinite-button/infinite-mode-launcher-button.js.map +1 -0
  3. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js +133 -159
  4. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js.map +1 -1
  5. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/helper.js +76 -0
  6. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/helper.js.map +1 -0
  7. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js +28 -94
  8. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js.map +1 -1
  9. package/dist/features/circle-games/game-launcher/game-launcher.js +118 -101
  10. package/dist/features/circle-games/game-launcher/game-launcher.js.map +1 -1
  11. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/constants.js +10 -0
  12. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/constants.js.map +1 -0
  13. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey-styled.js +13 -0
  14. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey-styled.js.map +1 -0
  15. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.js +126 -0
  16. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.js.map +1 -0
  17. package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js +132 -112
  18. package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js.map +1 -1
  19. package/dist/features/circle-games/leaderboard/leaderboard.js +38 -38
  20. package/dist/features/circle-games/leaderboard/leaderboard.js.map +1 -1
  21. package/dist/features/journey/journey-id/journey-id-student.js +1 -1
  22. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  23. package/dist/features/post-game-stats/score/constants.js +3 -2
  24. package/dist/features/post-game-stats/score/constants.js.map +1 -1
  25. package/dist/features/post-game-stats/score/score.js +41 -39
  26. package/dist/features/post-game-stats/score/score.js.map +1 -1
  27. package/dist/index.d.ts +1 -0
  28. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ import t from "styled-components";
2
+ const i = t.div`
3
+ border: 1px solid ${({ theme: r }) => r.colors.WHITE};
4
+ height: 8px;
5
+ width: 8px;
6
+ border-radius: 100%;
7
+ background: ${({ theme: r, $isActive: o }) => o ? r.colors.WHITE : "transparent"};
8
+ cursor: pointer;
9
+ `;
10
+ export {
11
+ i as Indicator
12
+ };
13
+ //# sourceMappingURL=use-table-infinite-launcher-journey-styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-table-infinite-launcher-journey-styled.js","sources":["../../../../../../src/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const Indicator = styled.div<{ $isActive?: boolean }>`\n border: 1px solid ${({ theme }) => theme.colors.WHITE};\n height: 8px;\n width: 8px;\n border-radius: 100%;\n background: ${({ theme, $isActive }) => ($isActive ? theme.colors.WHITE : 'transparent')};\n cursor: pointer;\n`;\n"],"names":["Indicator","styled","theme","$isActive"],"mappings":";AAEO,MAAMA,IAAYC,EAAO;AAAA,sBACV,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,gBAIvC,CAAC,EAAE,OAAAA,GAAO,WAAAC,QAAiBA,IAAYD,EAAM,OAAO,QAAQ,aAAc;AAAA;AAAA;"}
@@ -0,0 +1,126 @@
1
+ import { jsx as n, Fragment as x } from "react/jsx-runtime";
2
+ import { useRef as U, useCallback as m, useEffect as w } from "react";
3
+ import { JOURNEY_ID_STUDENT as F } from "../../../../journey/journey-id/journey-id-student.js";
4
+ import { IndicatorType as l } from "../../../../journey/use-journey/constants.js";
5
+ import { useJourney as J } from "../../../../journey/use-journey/use-journey.js";
6
+ import W from "../../../../ui/layout/flex-view.js";
7
+ import k from "../../../../ui/text/text.js";
8
+ import { getTheme as P } from "../../../../ui/theme/get-theme.js";
9
+ import { useCircleSounds as b } from "../../../hooks/use-circle-sounds/use-circle-sounds.js";
10
+ import { INFINITE_MODE_TEXT as v } from "../../comps/tables-card/constants.js";
11
+ import R from "../../comps/tables-card/infinite-button/infinite-mode-launcher-button.js";
12
+ import { TABLE_CARD_INDEX as I, GO_TO_TABLE_LAUNCHER_DURATION_MS as X, SHOW_CLICK_TABLE_NUDGE_AFTER_MS as B, LESSON_CARD_INDEX as $, SHOW_INITIAL_COACHMARK_AFTER_MS as G, SHOW_INITIAL_TOOLTIP_AFTER_MS as j } from "./constants.js";
13
+ import { Indicator as K } from "./use-table-infinite-launcher-journey-styled.js";
14
+ const V = {
15
+ top: 6,
16
+ left: 8,
17
+ cursor: "pointer"
18
+ }, mt = ({
19
+ carouselRefs: o,
20
+ originalTableRef: t,
21
+ onTableInfiniteModeClick: T,
22
+ onJourneyComplete: a
23
+ }) => {
24
+ const e = F.CIRCLE_TABLES_INFINTE_JOURNEY, { device: Y } = P(), p = Y === "mobile" ? "ab3-bold" : "ab2-bold", h = U([]), { playButtonSound: A } = b(), { nextCoachmark: c, setJourney: E, addCoachmark: _, endJourney: f } = J(), g = m(() => {
25
+ var r;
26
+ f(e), T(), (r = t == null ? void 0 : t.current) == null || r.stopLabelAnimation(), a(e);
27
+ }, [f, e, a, T, t]), s = m(
28
+ (r, u) => {
29
+ c(e, !1, r);
30
+ const i = setTimeout(() => {
31
+ var d;
32
+ clearTimeout(i), (d = t.current) == null || d.startLabelAnimation("YELLOW_4"), t.current && t.current.labelRef.current && (t.current.labelRef.current.innerText = v), c(e, !0);
33
+ }, u);
34
+ h.current.push(i);
35
+ },
36
+ [e, c, t]
37
+ ), C = m(() => {
38
+ var r;
39
+ A(), (r = o.current) == null || r.goToIndex(I), s(X, B);
40
+ }, [o, A, s]), M = m(() => {
41
+ var O, L, N, y, S, D, H;
42
+ const r = (O = o.current) == null ? void 0 : O.indicatorRefs, u = (L = o.current) == null ? void 0 : L.nextBtnRef, i = r == null ? void 0 : r[I];
43
+ if (!((N = t.current) != null && N.segmentedCardWrapperRef.current) || !((y = t.current) != null && y.labelRef.current) || !r || !(u != null && u.current) || !i || !i.current)
44
+ return;
45
+ const d = (S = t.current) == null ? void 0 : S.segmentedCardWrapperRef.current.getBoundingClientRect();
46
+ ((D = o.current) == null ? void 0 : D.currentIndex) === I ? (E(e, []), s(0, B)) : (E(e, [
47
+ {
48
+ originalElementToHighlightRef: i,
49
+ isActive: !1,
50
+ type: l.TOOLTIP,
51
+ elementToHighlight: /* @__PURE__ */ n(K, { $isActive: !1 }),
52
+ indicator: {
53
+ position: "bottom",
54
+ backgroundColor: "YELLOW_4",
55
+ width: 52,
56
+ tooltipItem: /* @__PURE__ */ n(
57
+ W,
58
+ {
59
+ $position: "absolute",
60
+ $flexDirection: "row",
61
+ style: V,
62
+ onClick: C,
63
+ children: /* @__PURE__ */ n(k, { $renderAs: p, children: "NEW" })
64
+ }
65
+ ),
66
+ tooltipYCoOrdinates: 14
67
+ // Need some offset in Y direction from top
68
+ }
69
+ },
70
+ {
71
+ originalElementToHighlightRef: i,
72
+ isActive: !1,
73
+ type: l.NUDGE,
74
+ indicator: {
75
+ nudge: "click",
76
+ content: "",
77
+ nudgePointerY: 20
78
+ },
79
+ elementToHighlight: /* @__PURE__ */ n(x, {})
80
+ }
81
+ ]), (H = o.current) == null || H.goToIndex($), c(e, !1, G), c(e, !0, j)), _(e, {
82
+ originalElementToHighlightRef: t.current.segmentedCardWrapperRef,
83
+ isActive: !1,
84
+ type: l.TOOLTIP,
85
+ elementToHighlight: /* @__PURE__ */ n(x, {}),
86
+ indicator: {
87
+ position: "top",
88
+ backgroundColor: "YELLOW_4",
89
+ width: 260,
90
+ tooltipItem: /* @__PURE__ */ n(W, { children: /* @__PURE__ */ n(k, { $renderAs: p, children: "Challenge yourself in Infinity Mode! Break records and climb the leaderboard." }) }),
91
+ tooltipXCoOrdinates: d.width / 2,
92
+ tooltipYCoOrdinates: -(1 * d.height) / 3
93
+ }
94
+ }), _(e, {
95
+ originalElementToHighlightRef: t.current.infiniteButtonRef,
96
+ isActive: !1,
97
+ type: l.NUDGE,
98
+ indicator: {
99
+ nudge: "click",
100
+ nudgePointerX: 0,
101
+ nudgePointerY: 10
102
+ },
103
+ elementToHighlight: /* @__PURE__ */ n(R, { onClick: g })
104
+ });
105
+ }, [
106
+ _,
107
+ o,
108
+ C,
109
+ g,
110
+ e,
111
+ c,
112
+ t,
113
+ E,
114
+ s,
115
+ p
116
+ ]);
117
+ return w(() => () => {
118
+ h.current.forEach((r) => clearTimeout(r)), h.current = [];
119
+ }, [e]), {
120
+ startJourney: M
121
+ };
122
+ };
123
+ export {
124
+ mt as useTableInfiniteLauncherJourney
125
+ };
126
+ //# sourceMappingURL=use-table-infinite-launcher-journey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-table-infinite-launcher-journey.js","sources":["../../../../../../src/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.tsx"],"sourcesContent":["import type { IArrowTooltipProps } from '../../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { INudgeProps } from '../../../../ui/nudge/nudge-types';\nimport type { IUseInfiniteTableJourneyProps } from './use-table-infinite-launcher-journey-types';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { JOURNEY_ID_STUDENT } from '../../../../journey/journey-id/journey-id-student';\nimport { IndicatorType } from '../../../../journey/use-journey/constants';\nimport { useJourney } from '../../../../journey/use-journey/use-journey';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { getTheme } from '../../../../ui/theme/get-theme';\nimport { useCircleSounds } from '../../../hooks/use-circle-sounds/use-circle-sounds';\nimport { INFINITE_MODE_TEXT } from '../../comps/tables-card/constants';\nimport InfiniteButtonCard from '../../comps/tables-card/infinite-button/infinite-mode-launcher-button';\nimport { LESSON_CARD_INDEX, TABLE_CARD_INDEX } from './constants';\nimport {\n GO_TO_TABLE_LAUNCHER_DURATION_MS,\n SHOW_CLICK_TABLE_NUDGE_AFTER_MS,\n SHOW_INITIAL_COACHMARK_AFTER_MS,\n SHOW_INITIAL_TOOLTIP_AFTER_MS,\n} from './constants';\nimport * as S from './use-table-infinite-launcher-journey-styled';\n\nconst tooltipItemStyle: React.CSSProperties = {\n top: 6,\n left: 8,\n cursor: 'pointer',\n};\n\nexport const useTableInfiniteLauncherJourney = ({\n carouselRefs,\n originalTableRef,\n onTableInfiniteModeClick,\n onJourneyComplete,\n}: IUseInfiniteTableJourneyProps) => {\n const journeyId = JOURNEY_ID_STUDENT.CIRCLE_TABLES_INFINTE_JOURNEY;\n\n const { device } = getTheme();\n const isMobile = device === 'mobile';\n const tooltipTextRenderAs = isMobile ? 'ab3-bold' : 'ab2-bold';\n\n const timerRefs = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n const { playButtonSound } = useCircleSounds();\n const { nextCoachmark, setJourney, addCoachmark, endJourney } = useJourney();\n\n const handleEndJourney = useCallback(() => {\n endJourney(journeyId);\n // Only when User clicked on play\n onTableInfiniteModeClick();\n // Reset original table card ref label\n originalTableRef?.current?.stopLabelAnimation();\n onJourneyComplete(journeyId);\n }, [endJourney, journeyId, onJourneyComplete, onTableInfiniteModeClick, originalTableRef]);\n\n const showToolTipAndNudge = useCallback(\n (dealyToShowToolTip: number, delayToShowNudge: number) => {\n nextCoachmark(journeyId, false, dealyToShowToolTip);\n\n const showNudge = setTimeout(() => {\n clearTimeout(showNudge);\n\n originalTableRef.current?.startLabelAnimation('YELLOW_4');\n if (originalTableRef.current && originalTableRef.current.labelRef.current) {\n originalTableRef.current.labelRef.current.innerText = INFINITE_MODE_TEXT;\n }\n nextCoachmark(journeyId, true);\n }, delayToShowNudge);\n\n timerRefs.current.push(showNudge);\n },\n [journeyId, nextCoachmark, originalTableRef],\n );\n\n const goToTableLauncher = useCallback(() => {\n playButtonSound();\n carouselRefs.current?.goToIndex(TABLE_CARD_INDEX);\n showToolTipAndNudge(GO_TO_TABLE_LAUNCHER_DURATION_MS, SHOW_CLICK_TABLE_NUDGE_AFTER_MS);\n }, [carouselRefs, playButtonSound, showToolTipAndNudge]);\n\n const startJourney = useCallback(() => {\n const paginationList = carouselRefs.current?.indicatorRefs;\n const carouselNextBtnRef = carouselRefs.current?.nextBtnRef;\n const tablePaginationRef = paginationList?.[TABLE_CARD_INDEX];\n\n if (\n !originalTableRef.current?.segmentedCardWrapperRef.current ||\n !originalTableRef.current?.labelRef.current ||\n !paginationList ||\n !carouselNextBtnRef?.current ||\n !tablePaginationRef ||\n !tablePaginationRef.current\n ) {\n return;\n }\n\n const tableCardDims =\n originalTableRef.current?.segmentedCardWrapperRef.current.getBoundingClientRect();\n\n // USER ON TABLE CARD\n if (carouselRefs.current?.currentIndex === TABLE_CARD_INDEX) {\n setJourney(journeyId, []);\n showToolTipAndNudge(0, SHOW_CLICK_TABLE_NUDGE_AFTER_MS);\n } else {\n // USER ON LESSON CARD\n setJourney(journeyId, [\n {\n originalElementToHighlightRef: tablePaginationRef as React.RefObject<HTMLDivElement>,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: <S.Indicator $isActive={false} />,\n indicator: {\n position: 'bottom',\n backgroundColor: 'YELLOW_4',\n width: 52,\n tooltipItem: (\n <FlexView\n $position=\"absolute\"\n $flexDirection=\"row\"\n style={tooltipItemStyle}\n onClick={goToTableLauncher}\n >\n <Text $renderAs={tooltipTextRenderAs}>NEW</Text>\n </FlexView>\n ),\n tooltipYCoOrdinates: 14, // Need some offset in Y direction from top\n } as IArrowTooltipProps,\n },\n {\n originalElementToHighlightRef: tablePaginationRef as React.RefObject<HTMLDivElement>,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: '',\n nudgePointerY: 20,\n } as INudgeProps,\n elementToHighlight: <></>,\n },\n ]);\n carouselRefs.current?.goToIndex(LESSON_CARD_INDEX);\n nextCoachmark(journeyId, false, SHOW_INITIAL_COACHMARK_AFTER_MS); // Show Coachmark => NEW\n nextCoachmark(journeyId, true, SHOW_INITIAL_TOOLTIP_AFTER_MS); // Show Nudge over Coachmark\n }\n\n // SHOW THE USER SELECT INFINITE MODE\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: <></>,\n indicator: {\n position: 'top',\n backgroundColor: 'YELLOW_4',\n width: 260,\n tooltipItem: (\n <FlexView>\n <Text $renderAs={tooltipTextRenderAs}>\n Challenge yourself in Infinity Mode! Break records and climb the leaderboard.\n </Text>\n </FlexView>\n ),\n tooltipXCoOrdinates: tableCardDims.width / 2,\n tooltipYCoOrdinates: -(1 * tableCardDims.height) / 3,\n } as IArrowTooltipProps,\n });\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.infiniteButtonRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n nudgePointerX: 0,\n nudgePointerY: 10,\n } as INudgeProps,\n elementToHighlight: <InfiniteButtonCard onClick={handleEndJourney} />,\n });\n }, [\n addCoachmark,\n carouselRefs,\n goToTableLauncher,\n handleEndJourney,\n journeyId,\n nextCoachmark,\n originalTableRef,\n setJourney,\n showToolTipAndNudge,\n tooltipTextRenderAs,\n ]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n timerRefs.current.forEach(timer => clearTimeout(timer));\n timerRefs.current = [];\n };\n }, [journeyId]);\n\n return {\n startJourney,\n };\n};\n"],"names":["tooltipItemStyle","useTableInfiniteLauncherJourney","carouselRefs","originalTableRef","onTableInfiniteModeClick","onJourneyComplete","journeyId","JOURNEY_ID_STUDENT","device","getTheme","tooltipTextRenderAs","timerRefs","useRef","playButtonSound","useCircleSounds","nextCoachmark","setJourney","addCoachmark","endJourney","useJourney","handleEndJourney","useCallback","_a","showToolTipAndNudge","dealyToShowToolTip","delayToShowNudge","showNudge","INFINITE_MODE_TEXT","goToTableLauncher","TABLE_CARD_INDEX","GO_TO_TABLE_LAUNCHER_DURATION_MS","SHOW_CLICK_TABLE_NUDGE_AFTER_MS","startJourney","paginationList","carouselNextBtnRef","_b","tablePaginationRef","_c","_d","tableCardDims","_e","_f","IndicatorType","jsx","S.Indicator","FlexView","Text","Fragment","_g","LESSON_CARD_INDEX","SHOW_INITIAL_COACHMARK_AFTER_MS","SHOW_INITIAL_TOOLTIP_AFTER_MS","InfiniteButtonCard","useEffect","timer"],"mappings":"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"}
@@ -1,122 +1,142 @@
1
- import { jsx as r, Fragment as O } from "react/jsx-runtime";
2
- import { useRef as N, useCallback as L, useEffect as j } from "react";
3
- import Z from "../../../../../assets/line-icons/icons/carat-right.js";
4
- import { PLATFORM_EVENTS_STUDENT as M } from "../../../../analytics-events/platform-events-student.js";
5
- import { JOURNEY_ID_STUDENT as q } from "../../../../journey/journey-id/journey-id-student.js";
6
- import { IndicatorType as d } from "../../../../journey/use-journey/constants.js";
7
- import { useJourney as z } from "../../../../journey/use-journey/use-journey.js";
8
- import Q from "../../../../ui/buttons/icon-button/icon-button.js";
9
- import { useUIContext as ee } from "../../../../ui/context/context.js";
10
- import S from "../../../../ui/layout/flex-view.js";
11
- import T from "../../../../ui/text/text.js";
12
- import { getTheme as te } from "../../../../ui/theme/get-theme.js";
13
- import { CIRCLE_ONBOARDING_ANALYTICS_STEPS as x } from "../../../enum/circle-onboarding-steps.js";
14
- import { useCircleSounds as re } from "../../../hooks/use-circle-sounds/use-circle-sounds.js";
15
- import { TablesCard as $ } from "../../comps/tables-card/tables-card.js";
16
- import { GAME_LAUNCHER_ANALYTICS_EVENTS as ne } from "../../game-launcher-analytics-events.js";
17
- import { SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS as oe, SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS as ie, START_ANIMATING_CLONED_ELEM as w, TABLE_CARD_INDEX as F, GO_TO_TABLE_LAUNCHER_DURATION_MS as le, SHOW_CLICK_TABLE_NUDGE_AFTER_MS as ce, PUZZLE_CARD_INDEX as ae, SHOW_INITIAL_COACHMARK_AFTER_MS as V, LESSON_CARD_INDEX as se, SHOW_INITIAL_TOOLTIP_AFTER_MS as de } from "./constants.js";
18
- import { Indicator as ue } from "./use-table-launcher-journey-styled.js";
19
- const He = ({
20
- carouselRefs: a,
21
- onTableSegmentClick: P,
22
- onJourneyComplete: H
1
+ import { jsx as r, Fragment as S } from "react/jsx-runtime";
2
+ import { useRef as x, useCallback as C, useEffect as z } from "react";
3
+ import Q from "../../../../../assets/line-icons/icons/carat-right.js";
4
+ import { PLATFORM_EVENTS_STUDENT as w } from "../../../../analytics-events/platform-events-student.js";
5
+ import { JOURNEY_ID_STUDENT as tt } from "../../../../journey/journey-id/journey-id-student.js";
6
+ import { IndicatorType as u } from "../../../../journey/use-journey/constants.js";
7
+ import { useJourney as et } from "../../../../journey/use-journey/use-journey.js";
8
+ import rt from "../../../../ui/buttons/icon-button/icon-button.js";
9
+ import { useUIContext as nt } from "../../../../ui/context/context.js";
10
+ import P from "../../../../ui/layout/flex-view.js";
11
+ import E from "../../../../ui/text/text.js";
12
+ import { getTheme as ot } from "../../../../ui/theme/get-theme.js";
13
+ import { CIRCLE_ONBOARDING_ANALYTICS_STEPS as F } from "../../../enum/circle-onboarding-steps.js";
14
+ import { useCircleSounds as it } from "../../../hooks/use-circle-sounds/use-circle-sounds.js";
15
+ import { TablesCard as V } from "../../comps/tables-card/tables-card.js";
16
+ import { GAME_LAUNCHER_ANALYTICS_EVENTS as ct } from "../../game-launcher-analytics-events.js";
17
+ import { SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS as st, SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS as dt, START_ANIMATING_CLONED_ELEM as X, TABLE_CARD_INDEX as J, GO_TO_TABLE_LAUNCHER_DURATION_MS as lt, SHOW_CLICK_TABLE_NUDGE_AFTER_MS as ut, PUZZLE_CARD_INDEX as mt, SHOW_INITIAL_COACHMARK_AFTER_MS as K, LESSON_CARD_INDEX as at, SHOW_INITIAL_TOOLTIP_AFTER_MS as Et } from "./constants.js";
18
+ import { Indicator as ht } from "./use-table-launcher-journey-styled.js";
19
+ const bt = ({
20
+ carouselRefs: d,
21
+ originalTableRef: t,
22
+ onTableSegmentClick: H,
23
+ onJourneyComplete: y,
24
+ onNextJourney: D
23
25
  }) => {
24
- const e = q.CIRCLE_TABLES_INTRO_JOURNEY, { device: X } = te(), u = X === "mobile", g = u ? "ab3-bold" : "ab2-bold", t = N(null), A = N(null), E = N([]), { playButtonSound: y } = re(), { nextCoachmark: l, setJourney: I, addCoachmark: m, endJourney: D } = z(), { onEvent: C } = ee(), R = L(
26
+ const e = tt.CIRCLE_TABLES_INTRO_JOURNEY, { device: j } = ot(), m = j === "mobile", h = m ? "ab3-bold" : "ab2-bold", L = x(null), p = x([]), { playButtonSound: W } = it(), { nextCoachmark: c, setJourney: f, addCoachmark: a, endJourney: R } = et(), { onEvent: I } = nt(), O = C(
25
27
  (n) => {
26
- var c, o;
27
- D(e), n && P(n), C(M.ONBOARDING_STEP_COMPLETED, {
28
- step: x.TABLES
29
- }), (c = t == null ? void 0 : t.current) == null || c.setLabelVisiblity(!0), (o = t == null ? void 0 : t.current) == null || o.stopLabelAnimation(), H(e);
28
+ var s, o;
29
+ R(e), n && H(n), I(w.ONBOARDING_STEP_COMPLETED, {
30
+ step: F.TABLES
31
+ }), (s = t == null ? void 0 : t.current) == null || s.setLabelVisiblity(!0), (o = t == null ? void 0 : t.current) == null || o.stopLabelAnimation(), y(e);
30
32
  },
31
- [D, e, H, P, C]
32
- ), W = L(
33
- (n, c) => {
34
- var h, p, _;
35
- if (!((h = t.current) != null && h.segmentedCardWrapperRef.current) || !((p = t.current) != null && p.labelRef.current))
33
+ [
34
+ R,
35
+ e,
36
+ y,
37
+ H,
38
+ t,
39
+ I
40
+ ]
41
+ ), b = C(() => {
42
+ O(), D();
43
+ }, [O, D]), Y = C(
44
+ (n, s) => {
45
+ var _, T, A;
46
+ if (!((_ = t.current) != null && _.segmentedCardWrapperRef.current) || !((T = t.current) != null && T.labelRef.current))
36
47
  return;
37
- const o = t.current.labelRef.current.getBoundingClientRect(), i = (_ = t.current) == null ? void 0 : _.segmentedCardWrapperRef.current.getBoundingClientRect();
38
- m(e, {
48
+ const o = t.current.labelRef.current.getBoundingClientRect(), i = (A = t.current) == null ? void 0 : A.segmentedCardWrapperRef.current.getBoundingClientRect();
49
+ a(e, {
39
50
  originalElementToHighlightRef: t.current.segmentedCardWrapperRef,
40
51
  isActive: !1,
41
- type: d.TOOLTIP,
52
+ type: u.TOOLTIP,
42
53
  elementToHighlight: /* @__PURE__ */ r(
43
- $,
54
+ V,
44
55
  {
45
- ref: A,
46
- defaultTable: c,
56
+ ref: L,
57
+ defaultTable: s,
47
58
  label: n.label,
48
59
  data: n.data,
49
- onPress: R,
50
- onGoBackFromTableLevel: R
60
+ onPress: O,
61
+ onGoBackFromTableLevel: b
51
62
  }
52
63
  ),
53
64
  indicator: {
54
65
  position: "top",
55
66
  backgroundColor: "YELLOW_4",
56
67
  width: 236,
57
- tooltipItem: /* @__PURE__ */ r(S, { children: /* @__PURE__ */ r(T, { $renderAs: g, children: "Each table has 3 levels—clear them and earn 3 stars!" }) }),
68
+ tooltipItem: /* @__PURE__ */ r(P, { children: /* @__PURE__ */ r(E, { $renderAs: h, children: "Each table has 3 levels—clear them and earn 3 stars!" }) }),
58
69
  tooltipXCoOrdinates: o.width / 2,
59
70
  tooltipYCoOrdinates: 45
60
71
  }
61
- }), m(e, {
72
+ }), a(e, {
62
73
  originalElementToHighlightRef: t.current.segmentedCardWrapperRef,
63
74
  isActive: !1,
64
- type: d.NUDGE,
75
+ type: u.NUDGE,
65
76
  indicator: {
66
77
  nudge: "click",
67
- content: !u && /* @__PURE__ */ r(T, { $renderAs: "ab1", $color: "WHITE", children: "Pick a level" }),
78
+ content: !m && /* @__PURE__ */ r(E, { $renderAs: "ab1", $color: "WHITE", children: "Pick a level" }),
68
79
  nudgePointerX: i.width / 2 + 50,
69
80
  nudgePointerY: i.height * 0.4
70
81
  },
71
- elementToHighlight: /* @__PURE__ */ r(O, {})
72
- }), l(e, !1, oe), l(e, !0, ie);
73
- const s = setTimeout(() => {
74
- var f;
75
- clearTimeout(s), (f = A.current) == null || f.startLabelAnimation("YELLOW_4");
76
- }, w);
77
- E.current.push(s);
82
+ elementToHighlight: /* @__PURE__ */ r(S, {})
83
+ }), c(e, !1, st), c(e, !0, dt);
84
+ const l = setTimeout(() => {
85
+ var g;
86
+ clearTimeout(l), (g = L.current) == null || g.startLabelAnimation("YELLOW_4");
87
+ }, X);
88
+ p.current.push(l);
78
89
  },
79
- [m, R, u, e, l, g]
80
- ), b = L(() => {
90
+ [
91
+ a,
92
+ b,
93
+ O,
94
+ m,
95
+ e,
96
+ c,
97
+ t,
98
+ h
99
+ ]
100
+ ), N = C(() => {
81
101
  var o;
82
- y(), (o = a.current) == null || o.goToIndex(F), l(e, !1, le), C(M.ONBOARDING_STEP_VIEWED, {
83
- step: x.TABLES
102
+ W(), (o = d.current) == null || o.goToIndex(J), c(e, !1, lt), I(w.ONBOARDING_STEP_VIEWED, {
103
+ step: F.TABLES
84
104
  });
85
105
  const n = setTimeout(() => {
86
106
  var i;
87
- clearTimeout(n), (i = t.current) == null || i.setLabelVisiblity(!1), l(e, !0);
88
- }, ce);
89
- E.current.push(n);
90
- const c = setTimeout(() => {
107
+ clearTimeout(n), (i = t.current) == null || i.setLabelVisiblity(!1), c(e, !0);
108
+ }, ut);
109
+ p.current.push(n);
110
+ const s = setTimeout(() => {
91
111
  var i;
92
- clearTimeout(c), (i = A.current) == null || i.startLabelAnimation("YELLOW_4");
93
- }, w);
94
- E.current.push(c);
95
- }, [a, e, l, y, C]), J = L(
96
- (n, c = !1) => {
97
- var _, f, Y, k, B, U, v, G;
98
- const o = (_ = a.current) == null ? void 0 : _.indicatorRefs, i = (f = a.current) == null ? void 0 : f.nextBtnRef, s = o == null ? void 0 : o[F];
99
- if (!((Y = t.current) != null && Y.segmentedCardWrapperRef.current) || !((k = t.current) != null && k.labelRef.current) || !o || !(i != null && i.current) || !s || !s.current)
112
+ clearTimeout(s), (i = L.current) == null || i.startLabelAnimation("YELLOW_4");
113
+ }, X);
114
+ p.current.push(s);
115
+ }, [d, e, c, t, W, I]), Z = C(
116
+ (n, s = !1) => {
117
+ var A, g, k, B, U, v, G, M, $;
118
+ const o = (A = d.current) == null ? void 0 : A.indicatorRefs, i = (g = d.current) == null ? void 0 : g.nextBtnRef, l = o == null ? void 0 : o[J];
119
+ if (!((k = t.current) != null && k.segmentedCardWrapperRef.current) || !((B = t.current) != null && B.labelRef.current) || !o || !(i != null && i.current) || !l || !l.current)
100
120
  return;
101
- const h = t.current.labelRef.current.getBoundingClientRect(), p = (B = t.current) == null ? void 0 : B.segmentedCardWrapperRef.current.getBoundingClientRect();
102
- c ? (I(e, [
121
+ const _ = (U = t.current) == null ? void 0 : U.labelRef.current.getBoundingClientRect(), T = (v = t.current) == null ? void 0 : v.segmentedCardWrapperRef.current.getBoundingClientRect();
122
+ s ? (f(e, [
103
123
  {
104
- originalElementToHighlightRef: s,
124
+ originalElementToHighlightRef: l,
105
125
  isActive: !1,
106
- type: d.TOOLTIP,
107
- elementToHighlight: /* @__PURE__ */ r(ue, { $isActive: !1 }),
126
+ type: u.TOOLTIP,
127
+ elementToHighlight: /* @__PURE__ */ r(ht, { $isActive: !1 }),
108
128
  indicator: {
109
129
  position: "bottom",
110
130
  backgroundColor: "YELLOW_4",
111
131
  width: 52,
112
132
  tooltipItem: /* @__PURE__ */ r(
113
- S,
133
+ P,
114
134
  {
115
135
  $position: "absolute",
116
136
  $flexDirection: "row",
117
137
  style: { top: 6, left: 8, cursor: "pointer" },
118
- onClick: b,
119
- children: /* @__PURE__ */ r(T, { $renderAs: g, children: "NEW" })
138
+ onClick: N,
139
+ children: /* @__PURE__ */ r(E, { $renderAs: h, children: "NEW" })
120
140
  }
121
141
  ),
122
142
  tooltipYCoOrdinates: 14
@@ -124,93 +144,93 @@ const He = ({
124
144
  }
125
145
  },
126
146
  {
127
- originalElementToHighlightRef: s,
147
+ originalElementToHighlightRef: l,
128
148
  isActive: !1,
129
- type: d.NUDGE,
149
+ type: u.NUDGE,
130
150
  indicator: {
131
151
  nudge: "click",
132
152
  content: "",
133
153
  nudgePointerY: 20
134
154
  },
135
- elementToHighlight: /* @__PURE__ */ r(O, {})
155
+ elementToHighlight: /* @__PURE__ */ r(S, {})
136
156
  }
137
- ]), (G = a.current) == null || G.goToIndex(se), l(e, !1, V), l(e, !0, de)) : (I(e, [
157
+ ]), ($ = d.current) == null || $.goToIndex(at), c(e, !1, K), c(e, !0, Et)) : (f(e, [
138
158
  {
139
- originalElementToHighlightRef: (U = a.current) == null ? void 0 : U.nextBtnRef,
159
+ originalElementToHighlightRef: (G = d.current) == null ? void 0 : G.nextBtnRef,
140
160
  isActive: !1,
141
- type: d.NUDGE,
161
+ type: u.NUDGE,
142
162
  indicator: {
143
163
  nudge: "click",
144
- content: !u && /* @__PURE__ */ r(T, { $renderAs: "ab1", $color: "WHITE", children: "Click to proceed" }),
164
+ content: !m && /* @__PURE__ */ r(E, { $renderAs: "ab1", $color: "WHITE", children: "Click to proceed" }),
145
165
  nudgePointerX: 0,
146
166
  nudgePointerY: 0
147
167
  },
148
168
  elementToHighlight: /* @__PURE__ */ r(
149
- Q,
169
+ rt,
150
170
  {
151
171
  renderAs: "secondary",
152
- Icon: Z,
153
- onClick: b,
154
- analyticsLabel: ne.JOURNEY_NEXT_ACTIVITY
172
+ Icon: Q,
173
+ onClick: N,
174
+ analyticsLabel: ct.JOURNEY_NEXT_ACTIVITY
155
175
  }
156
176
  )
157
177
  }
158
- ]), (v = a.current) == null || v.goToIndex(ae), l(e, !1, V)), m(e, {
178
+ ]), (M = d.current) == null || M.goToIndex(mt), c(e, !1, K)), a(e, {
159
179
  originalElementToHighlightRef: t.current.labelRef,
160
180
  isActive: !1,
161
- type: d.TOOLTIP,
162
- elementToHighlight: /* @__PURE__ */ r(O, {}),
181
+ type: u.TOOLTIP,
182
+ elementToHighlight: /* @__PURE__ */ r(S, {}),
163
183
  indicator: {
164
184
  position: "top",
165
185
  backgroundColor: "YELLOW_4",
166
186
  width: 264,
167
- tooltipItem: /* @__PURE__ */ r(S, { children: /* @__PURE__ */ r(T, { $renderAs: g, children: "Get faster at multiplication! Practice everyday and become a Tables champ." }) }),
168
- tooltipXCoOrdinates: h.width / 2,
169
- tooltipYCoOrdinates: h.height + 10
187
+ tooltipItem: /* @__PURE__ */ r(P, { children: /* @__PURE__ */ r(E, { $renderAs: h, children: "Get faster at multiplication! Practice everyday and become a Tables champ." }) }),
188
+ tooltipXCoOrdinates: _.width / 2,
189
+ tooltipYCoOrdinates: _.height + 10
170
190
  }
171
- }), m(e, {
191
+ }), a(e, {
172
192
  originalElementToHighlightRef: t.current.segmentedCardWrapperRef,
173
193
  isActive: !1,
174
- type: d.NUDGE,
194
+ type: u.NUDGE,
175
195
  indicator: {
176
196
  nudge: "click",
177
- content: !u && /* @__PURE__ */ r(T, { $renderAs: "ab1", $color: "WHITE", children: "Pick a table to start" }),
178
- nudgePointerX: p.width / 2 + 50,
179
- nudgePointerY: p.height / 2
197
+ content: !m && /* @__PURE__ */ r(E, { $renderAs: "ab1", $color: "WHITE", children: "Pick a table to start" }),
198
+ nudgePointerX: T.width / 2 + 50,
199
+ nudgePointerY: T.height / 2
180
200
  },
181
201
  elementToHighlight: /* @__PURE__ */ r(
182
- $,
202
+ V,
183
203
  {
184
- ref: A,
204
+ ref: L,
185
205
  label: n.label,
186
206
  data: n.data,
187
207
  onPress: () => {
188
208
  },
189
- onPressTableSegment: (K) => W(n, K)
209
+ onPressTableSegment: (q) => Y(n, q)
190
210
  }
191
211
  )
192
212
  });
193
213
  },
194
214
  [
195
- m,
196
215
  a,
197
- b,
198
- W,
199
- u,
216
+ d,
217
+ N,
218
+ Y,
219
+ m,
200
220
  e,
201
- l,
202
- I,
203
- g
221
+ c,
222
+ t,
223
+ f,
224
+ h
204
225
  ]
205
226
  );
206
- return j(() => () => {
207
- E.current.forEach((n) => clearTimeout(n)), E.current = [];
227
+ return z(() => () => {
228
+ p.current.forEach((n) => clearTimeout(n)), p.current = [];
208
229
  }, [e]), {
209
- tableRef: t,
210
- startJourney: J
230
+ startJourney: Z
211
231
  };
212
232
  };
213
233
  export {
214
- He as useTableLauncherJourney
234
+ bt as useTableLauncherJourney
215
235
  };
216
236
  //# sourceMappingURL=use-table-launcher-journey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-launcher-journey.js","sources":["../../../../../../src/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.tsx"],"sourcesContent":["/* eslint-disable react-native/no-inline-styles */\nimport type { IArrowTooltipProps } from '../../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { INudgeProps } from '../../../../ui/nudge/nudge-types';\nimport type { ITableCardRef, ITableDetails } from '../../comps/tables-card/tables-card-types';\nimport type {\n ITableInfo,\n ITables,\n} from '../../dal/use-get-circle-home-details-dal/use-get-circle-home-dal-types';\nimport type { IUseTableJourneyProps } from './use-table-launcher-journey-types';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport CaratRightIcon from '../../../../../assets/line-icons/icons/carat-right';\nimport { PLATFORM_EVENTS_STUDENT } from '../../../../analytics-events/platform-events-student';\nimport { JOURNEY_ID_STUDENT } from '../../../../journey/journey-id/journey-id-student';\nimport { IndicatorType } from '../../../../journey/use-journey/constants';\nimport { useJourney } from '../../../../journey/use-journey/use-journey';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport { useUIContext } from '../../../../ui/context/context';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { getTheme } from '../../../../ui/theme/get-theme';\nimport { CIRCLE_ONBOARDING_ANALYTICS_STEPS as Action } from '../../../enum/circle-onboarding-steps';\nimport { useCircleSounds } from '../../../hooks/use-circle-sounds/use-circle-sounds';\nimport { TablesCard } from '../../comps/tables-card/tables-card';\nimport { GAME_LAUNCHER_ANALYTICS_EVENTS } from '../../game-launcher-analytics-events';\nimport {\n LESSON_CARD_INDEX,\n PUZZLE_CARD_INDEX,\n SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS,\n SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS,\n TABLE_CARD_INDEX,\n} from './constants';\nimport {\n GO_TO_TABLE_LAUNCHER_DURATION_MS,\n SHOW_CLICK_TABLE_NUDGE_AFTER_MS,\n SHOW_INITIAL_COACHMARK_AFTER_MS,\n SHOW_INITIAL_TOOLTIP_AFTER_MS,\n START_ANIMATING_CLONED_ELEM,\n} from './constants';\nimport * as S from './use-table-launcher-journey-styled';\n\nexport const useTableLauncherJourney = ({\n carouselRefs,\n onTableSegmentClick,\n onJourneyComplete,\n}: IUseTableJourneyProps) => {\n const journeyId = JOURNEY_ID_STUDENT.CIRCLE_TABLES_INTRO_JOURNEY;\n\n const { device } = getTheme();\n const isMobile = device === 'mobile';\n const tooltipTextRenderAs = isMobile ? 'ab3-bold' : 'ab2-bold';\n\n const originalTableRef = useRef<ITableCardRef>(null);\n const highlightedTableRef = useRef<ITableCardRef>(null);\n\n const timerRefs = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n const { playButtonSound } = useCircleSounds();\n const { nextCoachmark, setJourney, addCoachmark, endJourney } = useJourney();\n const { onEvent: trackAnalytics } = useUIContext();\n\n const handleEndJourney = useCallback(\n (tableDetails?: ITableDetails) => {\n endJourney(journeyId);\n // Only when User clicked on play\n if (tableDetails) {\n onTableSegmentClick(tableDetails);\n }\n trackAnalytics(PLATFORM_EVENTS_STUDENT.ONBOARDING_STEP_COMPLETED, {\n step: Action.TABLES,\n });\n\n // Reset original table card ref label\n originalTableRef?.current?.setLabelVisiblity(true);\n originalTableRef?.current?.stopLabelAnimation();\n onJourneyComplete(journeyId);\n },\n [endJourney, journeyId, onJourneyComplete, onTableSegmentClick, trackAnalytics],\n );\n\n const handleTableSegmentClick = useCallback(\n (launcherData: ITables, tableData: ITableInfo) => {\n if (\n !originalTableRef.current?.segmentedCardWrapperRef.current ||\n !originalTableRef.current?.labelRef.current\n ) {\n return;\n }\n\n const segmentedCardDims = originalTableRef.current.labelRef.current.getBoundingClientRect();\n const tableCardDims =\n originalTableRef.current?.segmentedCardWrapperRef.current.getBoundingClientRect();\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: (\n <TablesCard\n ref={highlightedTableRef}\n defaultTable={tableData}\n label={launcherData.label}\n data={launcherData.data}\n onPress={handleEndJourney}\n onGoBackFromTableLevel={handleEndJourney}\n />\n ),\n indicator: {\n position: 'top',\n backgroundColor: 'YELLOW_4',\n width: 236,\n tooltipItem: (\n <FlexView>\n <Text $renderAs={tooltipTextRenderAs}>\n Each table has 3 levels—clear them and earn 3 stars!\n </Text>\n </FlexView>\n ),\n tooltipXCoOrdinates: segmentedCardDims.width / 2,\n tooltipYCoOrdinates: 45,\n } as IArrowTooltipProps,\n });\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: !isMobile && (\n <Text $renderAs=\"ab1\" $color=\"WHITE\">\n Pick a level\n </Text>\n ),\n nudgePointerX: tableCardDims.width / 2 + 50,\n nudgePointerY: tableCardDims.height * 0.4,\n } as INudgeProps,\n elementToHighlight: <></>,\n });\n\n nextCoachmark(journeyId, false, SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS); // Show coachmark => Each table has 3... and Hide the previous two\n nextCoachmark(journeyId, true, SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS); // Show nudge => Pick a level\n\n const startAnimationOnLabelAgain = setTimeout(() => {\n clearTimeout(startAnimationOnLabelAgain);\n highlightedTableRef.current?.startLabelAnimation('YELLOW_4');\n }, START_ANIMATING_CLONED_ELEM);\n\n timerRefs.current.push(startAnimationOnLabelAgain);\n },\n [addCoachmark, handleEndJourney, isMobile, journeyId, nextCoachmark, tooltipTextRenderAs],\n );\n\n const goToTableLauncher = useCallback(() => {\n playButtonSound();\n carouselRefs.current?.goToIndex(TABLE_CARD_INDEX);\n nextCoachmark(journeyId, false, GO_TO_TABLE_LAUNCHER_DURATION_MS);\n\n trackAnalytics(PLATFORM_EVENTS_STUDENT.ONBOARDING_STEP_VIEWED, {\n step: Action.TABLES,\n });\n\n const showNudge = setTimeout(() => {\n clearTimeout(showNudge);\n originalTableRef.current?.setLabelVisiblity(false);\n nextCoachmark(journeyId, true);\n }, SHOW_CLICK_TABLE_NUDGE_AFTER_MS);\n\n timerRefs.current.push(showNudge);\n\n const animateLabel = setTimeout(() => {\n clearTimeout(animateLabel);\n highlightedTableRef.current?.startLabelAnimation('YELLOW_4');\n }, START_ANIMATING_CLONED_ELEM);\n\n timerRefs.current.push(animateLabel);\n }, [carouselRefs, journeyId, nextCoachmark, playButtonSound, trackAnalytics]);\n\n const startJourney = useCallback(\n (tablesData: ITables, isTutorialOnboardingDone: boolean = false) => {\n const paginationList = carouselRefs.current?.indicatorRefs;\n const carouselNextBtnRef = carouselRefs.current?.nextBtnRef;\n const tablePaginationRef = paginationList?.[TABLE_CARD_INDEX];\n\n if (\n !originalTableRef.current?.segmentedCardWrapperRef.current ||\n !originalTableRef.current?.labelRef.current ||\n !paginationList ||\n !carouselNextBtnRef?.current ||\n !tablePaginationRef ||\n !tablePaginationRef.current\n ) {\n return;\n }\n\n const labelDims = originalTableRef.current.labelRef.current.getBoundingClientRect();\n const tableCardDims =\n originalTableRef.current?.segmentedCardWrapperRef.current.getBoundingClientRect();\n\n // TAKE THE USER TO THE TABLE CARD\n if (!isTutorialOnboardingDone) {\n setJourney(journeyId, [\n {\n originalElementToHighlightRef: carouselRefs.current?.nextBtnRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: !isMobile && (\n <Text $renderAs=\"ab1\" $color=\"WHITE\">\n Click to proceed\n </Text>\n ),\n nudgePointerX: 0,\n nudgePointerY: 0,\n } as INudgeProps,\n elementToHighlight: (\n <IconButton\n renderAs=\"secondary\"\n Icon={CaratRightIcon}\n onClick={goToTableLauncher}\n analyticsLabel={GAME_LAUNCHER_ANALYTICS_EVENTS.JOURNEY_NEXT_ACTIVITY}\n />\n ),\n },\n ]);\n carouselRefs.current?.goToIndex(PUZZLE_CARD_INDEX);\n nextCoachmark(journeyId, false, SHOW_INITIAL_COACHMARK_AFTER_MS); // Show nudge => Click to proceed\n } else {\n setJourney(journeyId, [\n {\n originalElementToHighlightRef: tablePaginationRef as React.RefObject<HTMLDivElement>,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: <S.Indicator $isActive={false} />,\n indicator: {\n position: 'bottom',\n backgroundColor: 'YELLOW_4',\n width: 52,\n tooltipItem: (\n <FlexView\n $position=\"absolute\"\n $flexDirection=\"row\"\n style={{ top: 6, left: 8, cursor: 'pointer' }}\n onClick={goToTableLauncher}\n >\n <Text $renderAs={tooltipTextRenderAs}>NEW</Text>\n </FlexView>\n ),\n tooltipYCoOrdinates: 14, // Need some offset in Y direction from top\n } as IArrowTooltipProps,\n },\n {\n originalElementToHighlightRef: tablePaginationRef as React.RefObject<HTMLDivElement>,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: '',\n nudgePointerY: 20,\n } as INudgeProps,\n elementToHighlight: <></>,\n },\n ]);\n carouselRefs.current?.goToIndex(LESSON_CARD_INDEX);\n nextCoachmark(journeyId, false, SHOW_INITIAL_COACHMARK_AFTER_MS); // Show Coachmark => NEW\n nextCoachmark(journeyId, true, SHOW_INITIAL_TOOLTIP_AFTER_MS); // Show Nudge over Coachmark\n }\n\n // SHOW THE USER SELECT A TABLE\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.labelRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: <></>,\n indicator: {\n position: 'top',\n backgroundColor: 'YELLOW_4',\n width: 264,\n tooltipItem: (\n <FlexView>\n <Text $renderAs={tooltipTextRenderAs}>\n Get faster at multiplication! Practice everyday and become a Tables champ.\n </Text>\n </FlexView>\n ),\n tooltipXCoOrdinates: labelDims.width / 2,\n tooltipYCoOrdinates: labelDims.height + 10,\n } as IArrowTooltipProps,\n });\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: !isMobile && (\n <Text $renderAs=\"ab1\" $color=\"WHITE\">\n {'Pick a table to start'}\n </Text>\n ),\n nudgePointerX: tableCardDims.width / 2 + 50,\n nudgePointerY: tableCardDims.height / 2,\n } as INudgeProps,\n elementToHighlight: (\n <TablesCard\n ref={highlightedTableRef}\n label={tablesData.label}\n data={tablesData.data}\n onPress={() => {}}\n onPressTableSegment={tableInfo => handleTableSegmentClick(tablesData, tableInfo)}\n />\n ),\n });\n },\n [\n addCoachmark,\n carouselRefs,\n goToTableLauncher,\n handleTableSegmentClick,\n isMobile,\n journeyId,\n nextCoachmark,\n setJourney,\n tooltipTextRenderAs,\n ],\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n timerRefs.current.forEach(timer => clearTimeout(timer));\n timerRefs.current = [];\n };\n }, [journeyId]);\n\n return {\n tableRef: originalTableRef,\n startJourney,\n };\n};\n"],"names":["useTableLauncherJourney","carouselRefs","onTableSegmentClick","onJourneyComplete","journeyId","JOURNEY_ID_STUDENT","device","getTheme","isMobile","tooltipTextRenderAs","originalTableRef","useRef","highlightedTableRef","timerRefs","playButtonSound","useCircleSounds","nextCoachmark","setJourney","addCoachmark","endJourney","useJourney","trackAnalytics","useUIContext","handleEndJourney","useCallback","tableDetails","PLATFORM_EVENTS_STUDENT","Action","_a","_b","handleTableSegmentClick","launcherData","tableData","segmentedCardDims","tableCardDims","_c","IndicatorType","jsx","TablesCard","FlexView","Text","Fragment","SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS","SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS","startAnimationOnLabelAgain","START_ANIMATING_CLONED_ELEM","goToTableLauncher","TABLE_CARD_INDEX","GO_TO_TABLE_LAUNCHER_DURATION_MS","showNudge","SHOW_CLICK_TABLE_NUDGE_AFTER_MS","animateLabel","startJourney","tablesData","isTutorialOnboardingDone","paginationList","carouselNextBtnRef","tablePaginationRef","_d","labelDims","_e","S.Indicator","_h","LESSON_CARD_INDEX","SHOW_INITIAL_COACHMARK_AFTER_MS","SHOW_INITIAL_TOOLTIP_AFTER_MS","_f","IconButton","CaratRightIcon","GAME_LAUNCHER_ANALYTICS_EVENTS","_g","PUZZLE_CARD_INDEX","tableInfo","useEffect","timer"],"mappings":"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"}
1
+ {"version":3,"file":"use-table-launcher-journey.js","sources":["../../../../../../src/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.tsx"],"sourcesContent":["/* eslint-disable react-native/no-inline-styles */\nimport type { IArrowTooltipProps } from '../../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { INudgeProps } from '../../../../ui/nudge/nudge-types';\nimport type { ITableCardRef, ITableDetails } from '../../comps/tables-card/tables-card-types';\nimport type {\n ITableInfo,\n ITables,\n} from '../../dal/use-get-circle-home-details-dal/use-get-circle-home-dal-types';\nimport type { IUseTableJourneyProps } from './use-table-launcher-journey-types';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport CaratRightIcon from '../../../../../assets/line-icons/icons/carat-right';\nimport { PLATFORM_EVENTS_STUDENT } from '../../../../analytics-events/platform-events-student';\nimport { JOURNEY_ID_STUDENT } from '../../../../journey/journey-id/journey-id-student';\nimport { IndicatorType } from '../../../../journey/use-journey/constants';\nimport { useJourney } from '../../../../journey/use-journey/use-journey';\nimport IconButton from '../../../../ui/buttons/icon-button/icon-button';\nimport { useUIContext } from '../../../../ui/context/context';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { getTheme } from '../../../../ui/theme/get-theme';\nimport { CIRCLE_ONBOARDING_ANALYTICS_STEPS as Action } from '../../../enum/circle-onboarding-steps';\nimport { useCircleSounds } from '../../../hooks/use-circle-sounds/use-circle-sounds';\nimport { TablesCard } from '../../comps/tables-card/tables-card';\nimport { GAME_LAUNCHER_ANALYTICS_EVENTS } from '../../game-launcher-analytics-events';\nimport {\n LESSON_CARD_INDEX,\n PUZZLE_CARD_INDEX,\n SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS,\n SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS,\n TABLE_CARD_INDEX,\n} from './constants';\nimport {\n GO_TO_TABLE_LAUNCHER_DURATION_MS,\n SHOW_CLICK_TABLE_NUDGE_AFTER_MS,\n SHOW_INITIAL_COACHMARK_AFTER_MS,\n SHOW_INITIAL_TOOLTIP_AFTER_MS,\n START_ANIMATING_CLONED_ELEM,\n} from './constants';\nimport * as S from './use-table-launcher-journey-styled';\n\nexport const useTableLauncherJourney = ({\n carouselRefs,\n originalTableRef,\n onTableSegmentClick,\n onJourneyComplete,\n onNextJourney,\n}: IUseTableJourneyProps) => {\n const journeyId = JOURNEY_ID_STUDENT.CIRCLE_TABLES_INTRO_JOURNEY;\n\n const { device } = getTheme();\n const isMobile = device === 'mobile';\n const tooltipTextRenderAs = isMobile ? 'ab3-bold' : 'ab2-bold';\n\n const highlightedTableRef = useRef<ITableCardRef>(null);\n\n const timerRefs = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n const { playButtonSound } = useCircleSounds();\n const { nextCoachmark, setJourney, addCoachmark, endJourney } = useJourney();\n const { onEvent: trackAnalytics } = useUIContext();\n\n const handleEndJourney = useCallback(\n (tableDetails?: ITableDetails) => {\n endJourney(journeyId);\n // Only when User clicked on play\n if (tableDetails) {\n onTableSegmentClick(tableDetails);\n }\n trackAnalytics(PLATFORM_EVENTS_STUDENT.ONBOARDING_STEP_COMPLETED, {\n step: Action.TABLES,\n });\n\n // Reset original table card ref label\n originalTableRef?.current?.setLabelVisiblity(true);\n originalTableRef?.current?.stopLabelAnimation();\n onJourneyComplete(journeyId);\n },\n [\n endJourney,\n journeyId,\n onJourneyComplete,\n onTableSegmentClick,\n originalTableRef,\n trackAnalytics,\n ],\n );\n\n const handleContinueJourney = useCallback(() => {\n handleEndJourney();\n onNextJourney();\n }, [handleEndJourney, onNextJourney]);\n\n const handleTableSegmentClick = useCallback(\n (launcherData: ITables, tableData: ITableInfo) => {\n if (\n !originalTableRef.current?.segmentedCardWrapperRef.current ||\n !originalTableRef.current?.labelRef.current\n ) {\n return;\n }\n\n const segmentedCardDims = originalTableRef.current.labelRef.current.getBoundingClientRect();\n const tableCardDims =\n originalTableRef.current?.segmentedCardWrapperRef.current.getBoundingClientRect();\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: (\n <TablesCard\n ref={highlightedTableRef}\n defaultTable={tableData}\n label={launcherData.label}\n data={launcherData.data}\n onPress={handleEndJourney}\n onGoBackFromTableLevel={handleContinueJourney}\n />\n ),\n indicator: {\n position: 'top',\n backgroundColor: 'YELLOW_4',\n width: 236,\n tooltipItem: (\n <FlexView>\n <Text $renderAs={tooltipTextRenderAs}>\n Each table has 3 levels—clear them and earn 3 stars!\n </Text>\n </FlexView>\n ),\n tooltipXCoOrdinates: segmentedCardDims.width / 2,\n tooltipYCoOrdinates: 45,\n } as IArrowTooltipProps,\n });\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: !isMobile && (\n <Text $renderAs=\"ab1\" $color=\"WHITE\">\n Pick a level\n </Text>\n ),\n nudgePointerX: tableCardDims.width / 2 + 50,\n nudgePointerY: tableCardDims.height * 0.4,\n } as INudgeProps,\n elementToHighlight: <></>,\n });\n\n nextCoachmark(journeyId, false, SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS); // Show coachmark => Each table has 3... and Hide the previous two\n nextCoachmark(journeyId, true, SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS); // Show nudge => Pick a level\n\n const startAnimationOnLabelAgain = setTimeout(() => {\n clearTimeout(startAnimationOnLabelAgain);\n highlightedTableRef.current?.startLabelAnimation('YELLOW_4');\n }, START_ANIMATING_CLONED_ELEM);\n\n timerRefs.current.push(startAnimationOnLabelAgain);\n },\n [\n addCoachmark,\n handleContinueJourney,\n handleEndJourney,\n isMobile,\n journeyId,\n nextCoachmark,\n originalTableRef,\n tooltipTextRenderAs,\n ],\n );\n\n const goToTableLauncher = useCallback(() => {\n playButtonSound();\n carouselRefs.current?.goToIndex(TABLE_CARD_INDEX);\n nextCoachmark(journeyId, false, GO_TO_TABLE_LAUNCHER_DURATION_MS);\n\n trackAnalytics(PLATFORM_EVENTS_STUDENT.ONBOARDING_STEP_VIEWED, {\n step: Action.TABLES,\n });\n\n const showNudge = setTimeout(() => {\n clearTimeout(showNudge);\n originalTableRef.current?.setLabelVisiblity(false);\n nextCoachmark(journeyId, true);\n }, SHOW_CLICK_TABLE_NUDGE_AFTER_MS);\n\n timerRefs.current.push(showNudge);\n\n const animateLabel = setTimeout(() => {\n clearTimeout(animateLabel);\n highlightedTableRef.current?.startLabelAnimation('YELLOW_4');\n }, START_ANIMATING_CLONED_ELEM);\n\n timerRefs.current.push(animateLabel);\n }, [carouselRefs, journeyId, nextCoachmark, originalTableRef, playButtonSound, trackAnalytics]);\n\n const startJourney = useCallback(\n (tablesData: ITables, isTutorialOnboardingDone: boolean = false) => {\n const paginationList = carouselRefs.current?.indicatorRefs;\n const carouselNextBtnRef = carouselRefs.current?.nextBtnRef;\n const tablePaginationRef = paginationList?.[TABLE_CARD_INDEX];\n\n if (\n !originalTableRef.current?.segmentedCardWrapperRef.current ||\n !originalTableRef.current?.labelRef.current ||\n !paginationList ||\n !carouselNextBtnRef?.current ||\n !tablePaginationRef ||\n !tablePaginationRef.current\n ) {\n return;\n }\n\n const labelDims = originalTableRef.current?.labelRef.current.getBoundingClientRect();\n const tableCardDims =\n originalTableRef.current?.segmentedCardWrapperRef.current.getBoundingClientRect();\n\n // TAKE THE USER TO THE TABLE CARD\n if (!isTutorialOnboardingDone) {\n setJourney(journeyId, [\n {\n originalElementToHighlightRef: carouselRefs.current?.nextBtnRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: !isMobile && (\n <Text $renderAs=\"ab1\" $color=\"WHITE\">\n Click to proceed\n </Text>\n ),\n nudgePointerX: 0,\n nudgePointerY: 0,\n } as INudgeProps,\n elementToHighlight: (\n <IconButton\n renderAs=\"secondary\"\n Icon={CaratRightIcon}\n onClick={goToTableLauncher}\n analyticsLabel={GAME_LAUNCHER_ANALYTICS_EVENTS.JOURNEY_NEXT_ACTIVITY}\n />\n ),\n },\n ]);\n carouselRefs.current?.goToIndex(PUZZLE_CARD_INDEX);\n nextCoachmark(journeyId, false, SHOW_INITIAL_COACHMARK_AFTER_MS); // Show nudge => Click to proceed\n } else {\n setJourney(journeyId, [\n {\n originalElementToHighlightRef: tablePaginationRef as React.RefObject<HTMLDivElement>,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: <S.Indicator $isActive={false} />,\n indicator: {\n position: 'bottom',\n backgroundColor: 'YELLOW_4',\n width: 52,\n tooltipItem: (\n <FlexView\n $position=\"absolute\"\n $flexDirection=\"row\"\n style={{ top: 6, left: 8, cursor: 'pointer' }}\n onClick={goToTableLauncher}\n >\n <Text $renderAs={tooltipTextRenderAs}>NEW</Text>\n </FlexView>\n ),\n tooltipYCoOrdinates: 14, // Need some offset in Y direction from top\n } as IArrowTooltipProps,\n },\n {\n originalElementToHighlightRef: tablePaginationRef as React.RefObject<HTMLDivElement>,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: '',\n nudgePointerY: 20,\n } as INudgeProps,\n elementToHighlight: <></>,\n },\n ]);\n carouselRefs.current?.goToIndex(LESSON_CARD_INDEX);\n nextCoachmark(journeyId, false, SHOW_INITIAL_COACHMARK_AFTER_MS); // Show Coachmark => NEW\n nextCoachmark(journeyId, true, SHOW_INITIAL_TOOLTIP_AFTER_MS); // Show Nudge over Coachmark\n }\n\n // SHOW THE USER SELECT A TABLE\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.labelRef,\n isActive: false,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: <></>,\n indicator: {\n position: 'top',\n backgroundColor: 'YELLOW_4',\n width: 264,\n tooltipItem: (\n <FlexView>\n <Text $renderAs={tooltipTextRenderAs}>\n Get faster at multiplication! Practice everyday and become a Tables champ.\n </Text>\n </FlexView>\n ),\n tooltipXCoOrdinates: labelDims.width / 2,\n tooltipYCoOrdinates: labelDims.height + 10,\n } as IArrowTooltipProps,\n });\n\n addCoachmark(journeyId, {\n originalElementToHighlightRef: originalTableRef.current.segmentedCardWrapperRef,\n isActive: false,\n type: IndicatorType.NUDGE,\n indicator: {\n nudge: 'click',\n content: !isMobile && (\n <Text $renderAs=\"ab1\" $color=\"WHITE\">\n {'Pick a table to start'}\n </Text>\n ),\n nudgePointerX: tableCardDims.width / 2 + 50,\n nudgePointerY: tableCardDims.height / 2,\n } as INudgeProps,\n elementToHighlight: (\n <TablesCard\n ref={highlightedTableRef}\n label={tablesData.label}\n data={tablesData.data}\n onPress={() => {}}\n onPressTableSegment={tableInfo => handleTableSegmentClick(tablesData, tableInfo)}\n />\n ),\n });\n },\n [\n addCoachmark,\n carouselRefs,\n goToTableLauncher,\n handleTableSegmentClick,\n isMobile,\n journeyId,\n nextCoachmark,\n originalTableRef,\n setJourney,\n tooltipTextRenderAs,\n ],\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n timerRefs.current.forEach(timer => clearTimeout(timer));\n timerRefs.current = [];\n };\n }, [journeyId]);\n\n return {\n startJourney,\n };\n};\n"],"names":["useTableLauncherJourney","carouselRefs","originalTableRef","onTableSegmentClick","onJourneyComplete","onNextJourney","journeyId","JOURNEY_ID_STUDENT","device","getTheme","isMobile","tooltipTextRenderAs","highlightedTableRef","useRef","timerRefs","playButtonSound","useCircleSounds","nextCoachmark","setJourney","addCoachmark","endJourney","useJourney","trackAnalytics","useUIContext","handleEndJourney","useCallback","tableDetails","PLATFORM_EVENTS_STUDENT","Action","_a","_b","handleContinueJourney","handleTableSegmentClick","launcherData","tableData","segmentedCardDims","tableCardDims","_c","IndicatorType","jsx","TablesCard","FlexView","Text","Fragment","SHOW_PICK_A_LEVEL_TOOLTIP_AFTER_MS","SHOW_PICK_A_LEVEL_NUDGE_AFTER_MS","startAnimationOnLabelAgain","START_ANIMATING_CLONED_ELEM","goToTableLauncher","TABLE_CARD_INDEX","GO_TO_TABLE_LAUNCHER_DURATION_MS","showNudge","SHOW_CLICK_TABLE_NUDGE_AFTER_MS","animateLabel","startJourney","tablesData","isTutorialOnboardingDone","paginationList","carouselNextBtnRef","tablePaginationRef","_d","labelDims","_e","_f","S.Indicator","_i","LESSON_CARD_INDEX","SHOW_INITIAL_COACHMARK_AFTER_MS","SHOW_INITIAL_TOOLTIP_AFTER_MS","_g","IconButton","CaratRightIcon","GAME_LAUNCHER_ANALYTICS_EVENTS","_h","PUZZLE_CARD_INDEX","tableInfo","useEffect","timer"],"mappings":"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"}