@cuemath/leap 2.8.62-aa1 → 2.8.62-rj-0
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.
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js +46 -45
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js.map +1 -1
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js +26 -25
- package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/circle-games/game-launcher/comps/carousel/carousel.js +51 -49
- package/dist/features/circle-games/game-launcher/comps/carousel/carousel.js.map +1 -1
- package/dist/features/circle-games/game-launcher/game-launcher.js +87 -90
- package/dist/features/circle-games/game-launcher/game-launcher.js.map +1 -1
- package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js +83 -82
- package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js.map +1 -1
- package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js +59 -57
- package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js.map +1 -1
- package/dist/features/circle-games/games/web-view/web-view-types.js.map +1 -1
- package/dist/features/circle-games/games/web-view/web-view.js +53 -47
- package/dist/features/circle-games/games/web-view/web-view.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-provider.js +8 -9
- package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
- package/dist/features/journey/hooks/use-get-eligible-journeys-via-route.js +7 -4
- package/dist/features/journey/hooks/use-get-eligible-journeys-via-route.js.map +1 -1
- package/dist/features/journey/use-journey/journey-context-provider.js +71 -67
- package/dist/features/journey/use-journey/journey-context-provider.js.map +1 -1
- package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js +60 -59
- package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js.map +1 -1
- package/dist/features/sheets/resources-list/resource-item/resource-item.js +90 -89
- package/dist/features/sheets/resources-list/resource-item/resource-item.js.map +1 -1
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js +61 -60
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js.map +1 -1
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js +64 -63
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js.map +1 -1
- package/dist/features/sheets/utils/is-v3-worksheet.js +14 -4
- package/dist/features/sheets/utils/is-v3-worksheet.js.map +1 -1
- package/dist/features/ui/section-list/section-list.js +12 -12
- package/dist/features/ui/section-list/section-list.js.map +1 -1
- package/dist/index.d.ts +14 -13
- package/dist/index.js +75 -74
- package/package.json +2 -4
- package/dist/library/polypad.js +0 -24965
- package/dist/library/polypad.js.map +0 -1
@@ -1,42 +1,43 @@
|
|
1
1
|
import { jsxs as u, jsx as e, Fragment as B } from "react/jsx-runtime";
|
2
2
|
import { useMemo as f, useCallback as $ } from "react";
|
3
|
-
import { getRewardsBadgeUrl as
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
import J from "
|
9
|
-
import K from "../../context-menu-helper/
|
10
|
-
import
|
11
|
-
import {
|
12
|
-
|
3
|
+
import { getRewardsBadgeUrl as Z } from "../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils.js";
|
4
|
+
import { isV3Worksheet as P } from "../../../../../../sheets/utils/is-v3-worksheet.js";
|
5
|
+
import q from "../../../../../../ui/context-menu/context-menu.js";
|
6
|
+
import { useUIContext as H } from "../../../../../../ui/context/context.js";
|
7
|
+
import M from "../../../../../../ui/layout/flex-view.js";
|
8
|
+
import { checkIfPPTNodeType as J } from "../../../../utils/index.js";
|
9
|
+
import K from "../../context-menu-helper/menu-element.js";
|
10
|
+
import Q from "../../context-menu-helper/target-element.js";
|
11
|
+
import { StyledButton as N, RewardImage as Y, RewardAccuracy as ee } from "../reward-n-actions-styled.js";
|
12
|
+
import { getPrimaryCtaLabel as te } from "./student-actions-utils.js";
|
13
|
+
const we = ({ sheet: t, isLastSheet: O, onStartOrResume: m, onReview: l }) => {
|
13
14
|
var A;
|
14
|
-
const { onEvent: w } =
|
15
|
-
permissions:
|
15
|
+
const { onEvent: w } = H(), {
|
16
|
+
permissions: S,
|
16
17
|
can_start: o,
|
17
18
|
can_resume: c,
|
18
19
|
can_review: i,
|
19
|
-
can_reattempt:
|
20
|
+
can_reattempt: V,
|
20
21
|
accuracy: y,
|
21
22
|
can_redo: j,
|
22
23
|
rewards: a,
|
23
24
|
attempt_state: _,
|
24
25
|
is_subjective: F,
|
25
|
-
is_turing:
|
26
|
+
is_turing: W,
|
26
27
|
completed_on: g,
|
27
28
|
node_type: d,
|
28
29
|
ceremony_completed_on_ts: R,
|
29
|
-
can_reattempt_block:
|
30
|
+
can_reattempt_block: U,
|
30
31
|
node_id: b,
|
31
|
-
id:
|
32
|
-
} =
|
32
|
+
id: v
|
33
|
+
} = t, { access: C } = S.can_do, n = J(d), r = W || n, k = a && Z(a), z = a && ((A = a[0]) == null ? void 0 : A.performance), L = !o && !c && typeof y == "number" && !(F && _ && _ === "WAIT_FOR_REVIEW"), I = U && !g, T = o || c || j || V, X = C && T || !r && I, p = !!(i && g && !R), s = f(
|
33
34
|
() => ({
|
34
|
-
user_node_id:
|
35
|
+
user_node_id: v,
|
35
36
|
nodeId: b
|
36
37
|
}),
|
37
|
-
[b,
|
38
|
-
),
|
39
|
-
() =>
|
38
|
+
[b, v]
|
39
|
+
), h = f(
|
40
|
+
() => te({
|
40
41
|
canStart: o,
|
41
42
|
canResume: c,
|
42
43
|
isInstructionNodeType: r,
|
@@ -47,67 +48,67 @@ const ue = ({ sheet: n, isLastSheet: N, onStartOrResume: m, onReview: l }) => {
|
|
47
48
|
), x = $(() => {
|
48
49
|
if (typeof m != "function")
|
49
50
|
throw new Error("onStartOrResume is not a function");
|
50
|
-
m(
|
51
|
-
}, [m,
|
51
|
+
m(t, P(t));
|
52
|
+
}, [m, t]), E = $(() => {
|
52
53
|
if (typeof l != "function")
|
53
54
|
throw new Error("onReview is not a function");
|
54
55
|
w("clicked", {
|
55
|
-
cta:
|
56
|
+
cta: n ? "View" : "Review sheet",
|
56
57
|
...s
|
57
|
-
}), l(
|
58
|
-
}, [s,
|
58
|
+
}), l(t, P(t, "review"));
|
59
|
+
}, [s, n, l, t, w]), D = r ? !!R : i, G = f(
|
59
60
|
() => [
|
60
61
|
{
|
61
62
|
key: "review-sheet",
|
62
|
-
label:
|
63
|
+
label: n ? "View" : "Review sheet",
|
63
64
|
visible: !!i,
|
64
65
|
onClick: E
|
65
66
|
}
|
66
67
|
],
|
67
|
-
[i, E,
|
68
|
+
[i, E, n]
|
68
69
|
);
|
69
|
-
return
|
70
|
-
|
71
|
-
|
70
|
+
return n ? null : /* @__PURE__ */ u(M, { $flexDirection: "row", $alignItems: "center", $flexGap: 8, children: [
|
71
|
+
C && r ? /* @__PURE__ */ e(B, { children: (T || p) && /* @__PURE__ */ e(
|
72
|
+
N,
|
72
73
|
{
|
73
74
|
renderAs: "primary",
|
74
75
|
size: "small",
|
75
76
|
widthX: 6,
|
76
77
|
onClick: x,
|
77
|
-
label:
|
78
|
+
label: h,
|
78
79
|
analyticsProps: s
|
79
80
|
}
|
80
81
|
) }) : /* @__PURE__ */ u(B, { children: [
|
81
|
-
|
82
|
-
|
83
|
-
/* @__PURE__ */ e(
|
82
|
+
L && /* @__PURE__ */ u(M, { $justifyContent: "center", $alignItems: "center", children: [
|
83
|
+
k && /* @__PURE__ */ e(Y, { src: k, alt: "Reward" }),
|
84
|
+
/* @__PURE__ */ e(ee, { $renderAs: "eyebrow2", $align: "center", children: z || `${Math.ceil(y)}%` })
|
84
85
|
] }),
|
85
|
-
|
86
|
-
|
86
|
+
X && /* @__PURE__ */ e(
|
87
|
+
N,
|
87
88
|
{
|
88
89
|
renderAs: "primary",
|
89
90
|
size: "small",
|
90
91
|
widthX: 6,
|
91
|
-
label:
|
92
|
-
disabled:
|
92
|
+
label: h,
|
93
|
+
disabled: I,
|
93
94
|
onClick: x,
|
94
95
|
analyticsProps: s
|
95
96
|
}
|
96
97
|
)
|
97
98
|
] }),
|
98
|
-
|
99
|
-
|
99
|
+
D && /* @__PURE__ */ e(
|
100
|
+
q,
|
100
101
|
{
|
101
|
-
targetElement: /* @__PURE__ */ e(
|
102
|
-
menuElement: /* @__PURE__ */ e(
|
102
|
+
targetElement: /* @__PURE__ */ e(Q, {}),
|
103
|
+
menuElement: /* @__PURE__ */ e(K, { options: G }),
|
103
104
|
menuOffset: 5,
|
104
105
|
menuZIndex: 1,
|
105
|
-
placeTop:
|
106
|
+
placeTop: O
|
106
107
|
}
|
107
108
|
)
|
108
109
|
] });
|
109
110
|
};
|
110
111
|
export {
|
111
|
-
|
112
|
+
we as default
|
112
113
|
};
|
113
114
|
//# sourceMappingURL=student-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"student-actions.js","sources":["../../../../../../../../src/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.tsx"],"sourcesContent":["import type { ILPARSheetCallbacks, TLPARSheetData } from '../../sheet-item-type';\n\nimport { useCallback, type FC, useMemo } from 'react';\n\nimport { getRewardsBadgeUrl } from '../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils';\nimport ContextMenu from '../../../../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../../../../ui/context/context';\nimport FlexView from '../../../../../../ui/layout/flex-view';\nimport { checkIfPPTNodeType } from '../../../../utils';\nimport ContextMenuElement from '../../context-menu-helper/menu-element';\nimport ContextMenuTargetElement from '../../context-menu-helper/target-element';\nimport { RewardAccuracy, RewardImage, StyledButton } from '../reward-n-actions-styled';\nimport { getPrimaryCtaLabel } from './student-actions-utils';\n\ninterface IStudentActions extends ILPARSheetCallbacks {\n sheet: TLPARSheetData;\n isLastSheet: boolean;\n isClassOngoing: boolean;\n}\n\nconst StudentActions: FC<IStudentActions> = ({ sheet, isLastSheet, onStartOrResume, onReview }) => {\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n permissions,\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_reattempt: canReattempt,\n accuracy,\n can_redo: canRedo,\n rewards,\n attempt_state: attemptState,\n is_subjective: isSubjective,\n is_turing: isTuring,\n completed_on: completedOn,\n node_type: nodeType,\n ceremony_completed_on_ts: ceremonyCompletedOnTS,\n can_reattempt_block: canReattemptBlock,\n node_id: nodeId,\n id: userNodeId,\n } = sheet;\n const { access } = permissions.can_do;\n const isPPTNodeType = checkIfPPTNodeType(nodeType);\n const isInstructionNodeType = isTuring || isPPTNodeType;\n const rewardsBadgeUrl = rewards && getRewardsBadgeUrl(rewards);\n\n const performance = rewards && rewards[0]?.performance;\n const isWaitingForReview = isSubjective && attemptState && attemptState === 'WAIT_FOR_REVIEW';\n const renderAccuracy =\n !canStart && !canResume && typeof accuracy === 'number' && !isWaitingForReview;\n const reattemptBlocked = canReattemptBlock && !completedOn;\n const canStartOrResume = canStart || canResume || canRedo || canReattempt;\n const renderAccuracyNPrimaryCta =\n (access && canStartOrResume) || (!isInstructionNodeType && reattemptBlocked);\n const reviewInstructionNodeType = Boolean(canReview && completedOn && !ceremonyCompletedOnTS);\n\n const analyticsProps = useMemo(\n () => ({\n user_node_id: userNodeId,\n nodeId: nodeId,\n }),\n [nodeId, userNodeId],\n );\n\n const primaryCtaLabel = useMemo(\n () =>\n getPrimaryCtaLabel({\n canStart,\n canResume,\n isInstructionNodeType,\n reviewInstructionNodeType,\n nodeType,\n }),\n [canResume, canStart, isInstructionNodeType, nodeType, reviewInstructionNodeType],\n );\n\n const handleOnActionClick = useCallback(() => {\n if (typeof onStartOrResume !== 'function') {\n throw new Error(`onStartOrResume is not a function`);\n }\n\n onStartOrResume(sheet);\n }, [onStartOrResume, sheet]);\n\n const handleOnReview = useCallback(() => {\n if (typeof onReview !== 'function') {\n throw new Error(`onReview is not a function`);\n }\n\n trackEvent('clicked', {\n cta: isPPTNodeType ? 'View' : 'Review sheet',\n ...analyticsProps,\n });\n\n onReview(sheet);\n }, [analyticsProps, isPPTNodeType, onReview, sheet, trackEvent]);\n\n const isMenuVisible = isInstructionNodeType ? Boolean(ceremonyCompletedOnTS) : canReview;\n const options = useMemo(\n () => [\n {\n key: 'review-sheet',\n label: isPPTNodeType ? 'View' : 'Review sheet',\n visible: Boolean(canReview),\n onClick: handleOnReview,\n },\n ],\n [canReview, handleOnReview, isPPTNodeType],\n );\n\n if (isPPTNodeType) return null;\n\n return (\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGap={8}>\n {access && isInstructionNodeType ? (\n <>\n {(canStartOrResume || reviewInstructionNodeType) && (\n <StyledButton\n renderAs=\"primary\"\n size=\"small\"\n widthX={6}\n onClick={handleOnActionClick}\n label={primaryCtaLabel}\n analyticsProps={analyticsProps}\n />\n )}\n </>\n ) : (\n <>\n {renderAccuracy && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n {rewardsBadgeUrl && <RewardImage src={rewardsBadgeUrl} alt=\"Reward\" />}\n <RewardAccuracy $renderAs=\"eyebrow2\" $align=\"center\">\n {performance || `${Math.ceil(accuracy)}%`}\n </RewardAccuracy>\n </FlexView>\n )}\n\n {renderAccuracyNPrimaryCta && (\n <StyledButton\n renderAs=\"primary\"\n size=\"small\"\n widthX={6}\n label={primaryCtaLabel}\n disabled={reattemptBlocked}\n onClick={handleOnActionClick}\n analyticsProps={analyticsProps}\n />\n )}\n </>\n )}\n\n {isMenuVisible && (\n <ContextMenu\n targetElement={<ContextMenuTargetElement />}\n menuElement={<ContextMenuElement options={options} />}\n menuOffset={5}\n menuZIndex={1}\n placeTop={isLastSheet}\n />\n )}\n </FlexView>\n );\n};\n\nexport default StudentActions;\n"],"names":["StudentActions","sheet","isLastSheet","onStartOrResume","onReview","trackEvent","useUIContext","permissions","canStart","canResume","canReview","canReattempt","accuracy","canRedo","rewards","attemptState","isSubjective","isTuring","completedOn","nodeType","ceremonyCompletedOnTS","canReattemptBlock","nodeId","userNodeId","access","isPPTNodeType","checkIfPPTNodeType","isInstructionNodeType","rewardsBadgeUrl","getRewardsBadgeUrl","performance","_a","renderAccuracy","reattemptBlocked","canStartOrResume","renderAccuracyNPrimaryCta","reviewInstructionNodeType","analyticsProps","useMemo","primaryCtaLabel","getPrimaryCtaLabel","handleOnActionClick","useCallback","handleOnReview","isMenuVisible","options","FlexView","jsx","Fragment","StyledButton","jsxs","RewardImage","RewardAccuracy","ContextMenu","ContextMenuTargetElement","ContextMenuElement"],"mappings":"
|
1
|
+
{"version":3,"file":"student-actions.js","sources":["../../../../../../../../src/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.tsx"],"sourcesContent":["import type { ILPARSheetCallbacks, TLPARSheetData } from '../../sheet-item-type';\n\nimport { useCallback, type FC, useMemo } from 'react';\n\nimport { getRewardsBadgeUrl } from '../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils';\nimport { isV3Worksheet } from '../../../../../../sheets/utils/is-v3-worksheet';\nimport ContextMenu from '../../../../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../../../../ui/context/context';\nimport FlexView from '../../../../../../ui/layout/flex-view';\nimport { checkIfPPTNodeType } from '../../../../utils';\nimport ContextMenuElement from '../../context-menu-helper/menu-element';\nimport ContextMenuTargetElement from '../../context-menu-helper/target-element';\nimport { RewardAccuracy, RewardImage, StyledButton } from '../reward-n-actions-styled';\nimport { getPrimaryCtaLabel } from './student-actions-utils';\n\ninterface IStudentActions extends ILPARSheetCallbacks {\n sheet: TLPARSheetData;\n isLastSheet: boolean;\n isClassOngoing: boolean;\n}\n\nconst StudentActions: FC<IStudentActions> = ({ sheet, isLastSheet, onStartOrResume, onReview }) => {\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n permissions,\n can_start: canStart,\n can_resume: canResume,\n can_review: canReview,\n can_reattempt: canReattempt,\n accuracy,\n can_redo: canRedo,\n rewards,\n attempt_state: attemptState,\n is_subjective: isSubjective,\n is_turing: isTuring,\n completed_on: completedOn,\n node_type: nodeType,\n ceremony_completed_on_ts: ceremonyCompletedOnTS,\n can_reattempt_block: canReattemptBlock,\n node_id: nodeId,\n id: userNodeId,\n } = sheet;\n const { access } = permissions.can_do;\n const isPPTNodeType = checkIfPPTNodeType(nodeType);\n const isInstructionNodeType = isTuring || isPPTNodeType;\n const rewardsBadgeUrl = rewards && getRewardsBadgeUrl(rewards);\n\n const performance = rewards && rewards[0]?.performance;\n const isWaitingForReview = isSubjective && attemptState && attemptState === 'WAIT_FOR_REVIEW';\n const renderAccuracy =\n !canStart && !canResume && typeof accuracy === 'number' && !isWaitingForReview;\n const reattemptBlocked = canReattemptBlock && !completedOn;\n const canStartOrResume = canStart || canResume || canRedo || canReattempt;\n const renderAccuracyNPrimaryCta =\n (access && canStartOrResume) || (!isInstructionNodeType && reattemptBlocked);\n const reviewInstructionNodeType = Boolean(canReview && completedOn && !ceremonyCompletedOnTS);\n\n const analyticsProps = useMemo(\n () => ({\n user_node_id: userNodeId,\n nodeId: nodeId,\n }),\n [nodeId, userNodeId],\n );\n\n const primaryCtaLabel = useMemo(\n () =>\n getPrimaryCtaLabel({\n canStart,\n canResume,\n isInstructionNodeType,\n reviewInstructionNodeType,\n nodeType,\n }),\n [canResume, canStart, isInstructionNodeType, nodeType, reviewInstructionNodeType],\n );\n\n const handleOnActionClick = useCallback(() => {\n if (typeof onStartOrResume !== 'function') {\n throw new Error(`onStartOrResume is not a function`);\n }\n\n onStartOrResume(sheet, isV3Worksheet(sheet));\n }, [onStartOrResume, sheet]);\n\n const handleOnReview = useCallback(() => {\n if (typeof onReview !== 'function') {\n throw new Error(`onReview is not a function`);\n }\n\n trackEvent('clicked', {\n cta: isPPTNodeType ? 'View' : 'Review sheet',\n ...analyticsProps,\n });\n\n onReview(sheet, isV3Worksheet(sheet, 'review'));\n }, [analyticsProps, isPPTNodeType, onReview, sheet, trackEvent]);\n\n const isMenuVisible = isInstructionNodeType ? Boolean(ceremonyCompletedOnTS) : canReview;\n const options = useMemo(\n () => [\n {\n key: 'review-sheet',\n label: isPPTNodeType ? 'View' : 'Review sheet',\n visible: Boolean(canReview),\n onClick: handleOnReview,\n },\n ],\n [canReview, handleOnReview, isPPTNodeType],\n );\n\n if (isPPTNodeType) return null;\n\n return (\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGap={8}>\n {access && isInstructionNodeType ? (\n <>\n {(canStartOrResume || reviewInstructionNodeType) && (\n <StyledButton\n renderAs=\"primary\"\n size=\"small\"\n widthX={6}\n onClick={handleOnActionClick}\n label={primaryCtaLabel}\n analyticsProps={analyticsProps}\n />\n )}\n </>\n ) : (\n <>\n {renderAccuracy && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n {rewardsBadgeUrl && <RewardImage src={rewardsBadgeUrl} alt=\"Reward\" />}\n <RewardAccuracy $renderAs=\"eyebrow2\" $align=\"center\">\n {performance || `${Math.ceil(accuracy)}%`}\n </RewardAccuracy>\n </FlexView>\n )}\n\n {renderAccuracyNPrimaryCta && (\n <StyledButton\n renderAs=\"primary\"\n size=\"small\"\n widthX={6}\n label={primaryCtaLabel}\n disabled={reattemptBlocked}\n onClick={handleOnActionClick}\n analyticsProps={analyticsProps}\n />\n )}\n </>\n )}\n\n {isMenuVisible && (\n <ContextMenu\n targetElement={<ContextMenuTargetElement />}\n menuElement={<ContextMenuElement options={options} />}\n menuOffset={5}\n menuZIndex={1}\n placeTop={isLastSheet}\n />\n )}\n </FlexView>\n );\n};\n\nexport default StudentActions;\n"],"names":["StudentActions","sheet","isLastSheet","onStartOrResume","onReview","trackEvent","useUIContext","permissions","canStart","canResume","canReview","canReattempt","accuracy","canRedo","rewards","attemptState","isSubjective","isTuring","completedOn","nodeType","ceremonyCompletedOnTS","canReattemptBlock","nodeId","userNodeId","access","isPPTNodeType","checkIfPPTNodeType","isInstructionNodeType","rewardsBadgeUrl","getRewardsBadgeUrl","performance","_a","renderAccuracy","reattemptBlocked","canStartOrResume","renderAccuracyNPrimaryCta","reviewInstructionNodeType","analyticsProps","useMemo","primaryCtaLabel","getPrimaryCtaLabel","handleOnActionClick","useCallback","isV3Worksheet","handleOnReview","isMenuVisible","options","FlexView","jsx","Fragment","StyledButton","jsxs","RewardImage","RewardAccuracy","ContextMenu","ContextMenuTargetElement","ContextMenuElement"],"mappings":"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"}
|
@@ -1,23 +1,24 @@
|
|
1
1
|
import { jsx as e, jsxs as x } from "react/jsx-runtime";
|
2
2
|
import { useMemo as E, useCallback as T } from "react";
|
3
|
-
import { NODE_TYPE as
|
3
|
+
import { NODE_TYPE as D } from "../../../../../../sheets/constants/sheet.js";
|
4
4
|
import { getRewardsBadgeUrl as G } from "../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils.js";
|
5
|
+
import { isV3Worksheet as H } from "../../../../../../sheets/utils/is-v3-worksheet.js";
|
5
6
|
import R from "../../../../../../ui/buttons/button/button.js";
|
6
|
-
import
|
7
|
-
import { useUIContext as
|
7
|
+
import j from "../../../../../../ui/context-menu/context-menu.js";
|
8
|
+
import { useUIContext as z } from "../../../../../../ui/context/context.js";
|
8
9
|
import u from "../../../../../../ui/layout/flex-view.js";
|
9
|
-
import { checkIfIsHiddenUnlocked as
|
10
|
+
import { checkIfIsHiddenUnlocked as L, checkIfPPTNodeType as W } from "../../../../utils/index.js";
|
10
11
|
import F from "../../context-menu-helper/menu-element.js";
|
11
|
-
import
|
12
|
-
import { StyledEyeIcon as $, RewardImage as
|
13
|
-
const
|
12
|
+
import Y from "../../context-menu-helper/target-element.js";
|
13
|
+
import { StyledEyeIcon as $, RewardImage as Z, RewardAccuracy as q } from "../reward-n-actions-styled.js";
|
14
|
+
const se = ({
|
14
15
|
isLastSheet: M,
|
15
16
|
isClassOngoing: N,
|
16
|
-
sheet:
|
17
|
+
sheet: t,
|
17
18
|
...v
|
18
19
|
}) => {
|
19
20
|
var h;
|
20
|
-
const { onView: s, onMenuActionAttempt: m } = v, { onEvent: r } =
|
21
|
+
const { onView: s, onMenuActionAttempt: m } = v, { onEvent: r } = z(), {
|
21
22
|
accuracy: f,
|
22
23
|
can_teacher_review: k,
|
23
24
|
id: d,
|
@@ -28,7 +29,7 @@ const le = ({
|
|
28
29
|
completed_on: y,
|
29
30
|
can_reattempt_block: _,
|
30
31
|
node_id: g
|
31
|
-
} =
|
32
|
+
} = t, { code: p } = P.can_do, I = i === D.HIDDEN_BASIC, S = c && ((h = c[0]) == null ? void 0 : h.performance), A = c && G(c), C = W(i), B = k && typeof f == "number" && !C, U = d && !I, b = C && N && p === "IN_PROGRESS", O = !!(p && L(p)), n = E(
|
32
33
|
() => ({
|
33
34
|
node_id: g,
|
34
35
|
user_node_id: d
|
@@ -38,13 +39,13 @@ const le = ({
|
|
38
39
|
(o) => {
|
39
40
|
if (r("clicked", {
|
40
41
|
cta: o,
|
41
|
-
...
|
42
|
+
...n
|
42
43
|
}), typeof m != "function")
|
43
44
|
throw new Error("onMenuActionAttempt must be a function");
|
44
|
-
m(o,
|
45
|
+
m(o, t);
|
45
46
|
},
|
46
|
-
[
|
47
|
-
),
|
47
|
+
[n, m, t, r]
|
48
|
+
), V = E(
|
48
49
|
() => [
|
49
50
|
{
|
50
51
|
key: "change-location",
|
@@ -68,11 +69,11 @@ const le = ({
|
|
68
69
|
[_, y, w, i, l]
|
69
70
|
), a = T(
|
70
71
|
(o) => {
|
71
|
-
if (o && r(o,
|
72
|
+
if (o && r(o, n), typeof s != "function")
|
72
73
|
throw new Error("onView must be a function");
|
73
|
-
s(
|
74
|
+
s(t, H(t));
|
74
75
|
},
|
75
|
-
[
|
76
|
+
[n, s, t, r]
|
76
77
|
);
|
77
78
|
return I ? /* @__PURE__ */ e(u, { $flexGap: 8, $flexDirection: "row", $alignItems: "center", children: O ? /* @__PURE__ */ e($, { onClick: () => a("clicked") }) : /* @__PURE__ */ e(
|
78
79
|
R,
|
@@ -81,12 +82,12 @@ const le = ({
|
|
81
82
|
size: "small",
|
82
83
|
label: "Start",
|
83
84
|
onClick: a,
|
84
|
-
analyticsProps:
|
85
|
+
analyticsProps: n
|
85
86
|
}
|
86
87
|
) }) : /* @__PURE__ */ x(u, { $flexGap: 8, $flexDirection: "row", $alignItems: "center", children: [
|
87
88
|
B && /* @__PURE__ */ x(u, { $justifyContent: "center", $alignItems: "center", children: [
|
88
|
-
A && /* @__PURE__ */ e(
|
89
|
-
/* @__PURE__ */ e(
|
89
|
+
A && /* @__PURE__ */ e(Z, { src: A, alt: "Reward" }),
|
90
|
+
/* @__PURE__ */ e(q, { $renderAs: "eyebrow2", $align: "center", children: S || `${Math.ceil(f)}%` })
|
90
91
|
] }),
|
91
92
|
k && b && /* @__PURE__ */ e(
|
92
93
|
R,
|
@@ -95,15 +96,15 @@ const le = ({
|
|
95
96
|
size: "small",
|
96
97
|
label: "Resume",
|
97
98
|
onClick: a,
|
98
|
-
analyticsProps:
|
99
|
+
analyticsProps: n
|
99
100
|
}
|
100
101
|
),
|
101
102
|
!b && /* @__PURE__ */ e($, { onClick: () => a("clicked") }),
|
102
103
|
U && /* @__PURE__ */ e(
|
103
|
-
|
104
|
+
j,
|
104
105
|
{
|
105
|
-
targetElement: /* @__PURE__ */ e(
|
106
|
-
menuElement: /* @__PURE__ */ e(F, { options:
|
106
|
+
targetElement: /* @__PURE__ */ e(Y, {}),
|
107
|
+
menuElement: /* @__PURE__ */ e(F, { options: V }),
|
107
108
|
menuOffset: 5,
|
108
109
|
menuZIndex: 1,
|
109
110
|
placeTop: M
|
@@ -112,6 +113,6 @@ const le = ({
|
|
112
113
|
] });
|
113
114
|
};
|
114
115
|
export {
|
115
|
-
|
116
|
+
se as default
|
116
117
|
};
|
117
118
|
//# sourceMappingURL=teacher-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"teacher-actions.js","sources":["../../../../../../../../src/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.tsx"],"sourcesContent":["import type { ILPARSheetCallbacks, TLPARSheetData } from '../../sheet-item-type';\n\nimport { useCallback, type FC, useMemo } from 'react';\n\nimport { NODE_TYPE } from '../../../../../../sheets/constants/sheet';\nimport { getRewardsBadgeUrl } from '../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils';\nimport Button from '../../../../../../ui/buttons/button/button';\nimport ContextMenu from '../../../../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../../../../ui/context/context';\nimport FlexView from '../../../../../../ui/layout/flex-view';\nimport { checkIfIsHiddenUnlocked, checkIfPPTNodeType } from '../../../../utils';\nimport ContextMenuElement from '../../context-menu-helper/menu-element';\nimport ContextMenuTargetElement from '../../context-menu-helper/target-element';\nimport { RewardAccuracy, RewardImage, StyledEyeIcon } from '../reward-n-actions-styled';\n\nexport interface ITeacherActions extends ILPARSheetCallbacks {\n sheet: TLPARSheetData;\n isClassOngoing: boolean;\n isLastSheet: boolean;\n}\n\nconst TeacherActions: FC<ITeacherActions> = ({\n isLastSheet,\n isClassOngoing,\n sheet,\n ...restTeacherActionsProps\n}) => {\n const { onView, onMenuActionAttempt } = restTeacherActionsProps;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n accuracy,\n can_teacher_review: canTeacherReview,\n id: userNodeId,\n node_type: nodeType,\n permissions,\n rewards,\n is_turing: isTuring,\n completed_on: completedOn,\n can_reattempt_block: canReattemptBlock,\n node_id: nodeId,\n } = sheet;\n const { code } = permissions.can_do;\n const isHiddenNode = nodeType === NODE_TYPE.HIDDEN_BASIC;\n const performance = rewards && rewards[0]?.performance;\n const rewardsBadgeUrl = rewards && getRewardsBadgeUrl(rewards);\n const isPPTNodeType = checkIfPPTNodeType(nodeType);\n const renderAccuracy = canTeacherReview && typeof accuracy === 'number' && !isPPTNodeType;\n const isMenuVisible = userNodeId && !isHiddenNode;\n const pptNodeTypeSheetInProgress = isPPTNodeType && isClassOngoing && code === 'IN_PROGRESS';\n const isHiddenUnlocked = Boolean(code && checkIfIsHiddenUnlocked(code));\n\n const analyticsProps = useMemo(\n () => ({\n node_id: nodeId,\n user_node_id: userNodeId,\n }),\n [nodeId, userNodeId],\n );\n\n const handleOnMenuActionAttempt = useCallback(\n (action: string) => {\n trackEvent('clicked', {\n cta: action,\n ...analyticsProps,\n });\n\n if (typeof onMenuActionAttempt !== 'function') {\n throw new Error('onMenuActionAttempt must be a function');\n }\n\n onMenuActionAttempt(action, sheet);\n },\n [analyticsProps, onMenuActionAttempt, sheet, trackEvent],\n );\n\n const options = useMemo(\n () => [\n {\n key: 'change-location',\n label: 'Change Location',\n visible: true,\n onClick: () => handleOnMenuActionAttempt('change_attempt_location'),\n },\n {\n key: 'turing-option',\n label: completedOn && nodeType !== 'TURING_BASIC' ? 'Student Work Url' : 'Activity Link',\n visible: isTuring,\n onClick: () => handleOnMenuActionAttempt('turing_attempt'),\n },\n {\n key: 'allow-reattempt',\n label: 'Allow Reattempt',\n visible: canReattemptBlock,\n onClick: () => handleOnMenuActionAttempt('allow_reattempt'),\n },\n ],\n [canReattemptBlock, completedOn, isTuring, nodeType, handleOnMenuActionAttempt],\n );\n\n const handleOnView = useCallback(\n (action?: string) => {\n if (action) {\n trackEvent(action, analyticsProps);\n }\n\n if (typeof onView !== 'function') {\n throw new Error('onView must be a function');\n }\n\n onView(sheet);\n },\n [analyticsProps, onView, sheet, trackEvent],\n );\n\n if (isHiddenNode) {\n return (\n <FlexView $flexGap={8} $flexDirection=\"row\" $alignItems=\"center\">\n {isHiddenUnlocked ? (\n <StyledEyeIcon onClick={() => handleOnView('clicked')} />\n ) : (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label=\"Start\"\n onClick={handleOnView}\n analyticsProps={analyticsProps}\n />\n )}\n </FlexView>\n );\n }\n\n return (\n <FlexView $flexGap={8} $flexDirection=\"row\" $alignItems=\"center\">\n {renderAccuracy && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n {rewardsBadgeUrl && <RewardImage src={rewardsBadgeUrl} alt=\"Reward\" />}\n <RewardAccuracy $renderAs=\"eyebrow2\" $align=\"center\">\n {performance || `${Math.ceil(accuracy)}%`}\n </RewardAccuracy>\n </FlexView>\n )}\n\n {canTeacherReview && pptNodeTypeSheetInProgress && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label=\"Resume\"\n onClick={handleOnView}\n analyticsProps={analyticsProps}\n />\n )}\n\n {!pptNodeTypeSheetInProgress && <StyledEyeIcon onClick={() => handleOnView('clicked')} />}\n\n {isMenuVisible && (\n <ContextMenu\n targetElement={<ContextMenuTargetElement />}\n menuElement={<ContextMenuElement options={options} />}\n menuOffset={5}\n menuZIndex={1}\n placeTop={isLastSheet}\n />\n )}\n </FlexView>\n );\n};\n\nexport default TeacherActions;\n"],"names":["TeacherActions","isLastSheet","isClassOngoing","sheet","restTeacherActionsProps","onView","onMenuActionAttempt","trackEvent","useUIContext","accuracy","canTeacherReview","userNodeId","nodeType","permissions","rewards","isTuring","completedOn","canReattemptBlock","nodeId","code","isHiddenNode","NODE_TYPE","performance","_a","rewardsBadgeUrl","getRewardsBadgeUrl","isPPTNodeType","checkIfPPTNodeType","renderAccuracy","isMenuVisible","pptNodeTypeSheetInProgress","isHiddenUnlocked","checkIfIsHiddenUnlocked","analyticsProps","useMemo","handleOnMenuActionAttempt","useCallback","action","options","handleOnView","FlexView","jsx","StyledEyeIcon","Button","jsxs","RewardImage","RewardAccuracy","ContextMenu","ContextMenuTargetElement","ContextMenuElement"],"mappings":"
|
1
|
+
{"version":3,"file":"teacher-actions.js","sources":["../../../../../../../../src/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.tsx"],"sourcesContent":["import type { ILPARSheetCallbacks, TLPARSheetData } from '../../sheet-item-type';\n\nimport { useCallback, type FC, useMemo } from 'react';\n\nimport { NODE_TYPE } from '../../../../../../sheets/constants/sheet';\nimport { getRewardsBadgeUrl } from '../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils';\nimport { isV3Worksheet } from '../../../../../../sheets/utils/is-v3-worksheet';\nimport Button from '../../../../../../ui/buttons/button/button';\nimport ContextMenu from '../../../../../../ui/context-menu/context-menu';\nimport { useUIContext } from '../../../../../../ui/context/context';\nimport FlexView from '../../../../../../ui/layout/flex-view';\nimport { checkIfIsHiddenUnlocked, checkIfPPTNodeType } from '../../../../utils';\nimport ContextMenuElement from '../../context-menu-helper/menu-element';\nimport ContextMenuTargetElement from '../../context-menu-helper/target-element';\nimport { RewardAccuracy, RewardImage, StyledEyeIcon } from '../reward-n-actions-styled';\n\nexport interface ITeacherActions extends ILPARSheetCallbacks {\n sheet: TLPARSheetData;\n isClassOngoing: boolean;\n isLastSheet: boolean;\n}\n\nconst TeacherActions: FC<ITeacherActions> = ({\n isLastSheet,\n isClassOngoing,\n sheet,\n ...restTeacherActionsProps\n}) => {\n const { onView, onMenuActionAttempt } = restTeacherActionsProps;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n accuracy,\n can_teacher_review: canTeacherReview,\n id: userNodeId,\n node_type: nodeType,\n permissions,\n rewards,\n is_turing: isTuring,\n completed_on: completedOn,\n can_reattempt_block: canReattemptBlock,\n node_id: nodeId,\n } = sheet;\n const { code } = permissions.can_do;\n const isHiddenNode = nodeType === NODE_TYPE.HIDDEN_BASIC;\n const performance = rewards && rewards[0]?.performance;\n const rewardsBadgeUrl = rewards && getRewardsBadgeUrl(rewards);\n const isPPTNodeType = checkIfPPTNodeType(nodeType);\n const renderAccuracy = canTeacherReview && typeof accuracy === 'number' && !isPPTNodeType;\n const isMenuVisible = userNodeId && !isHiddenNode;\n const pptNodeTypeSheetInProgress = isPPTNodeType && isClassOngoing && code === 'IN_PROGRESS';\n const isHiddenUnlocked = Boolean(code && checkIfIsHiddenUnlocked(code));\n\n const analyticsProps = useMemo(\n () => ({\n node_id: nodeId,\n user_node_id: userNodeId,\n }),\n [nodeId, userNodeId],\n );\n\n const handleOnMenuActionAttempt = useCallback(\n (action: string) => {\n trackEvent('clicked', {\n cta: action,\n ...analyticsProps,\n });\n\n if (typeof onMenuActionAttempt !== 'function') {\n throw new Error('onMenuActionAttempt must be a function');\n }\n\n onMenuActionAttempt(action, sheet);\n },\n [analyticsProps, onMenuActionAttempt, sheet, trackEvent],\n );\n\n const options = useMemo(\n () => [\n {\n key: 'change-location',\n label: 'Change Location',\n visible: true,\n onClick: () => handleOnMenuActionAttempt('change_attempt_location'),\n },\n {\n key: 'turing-option',\n label: completedOn && nodeType !== 'TURING_BASIC' ? 'Student Work Url' : 'Activity Link',\n visible: isTuring,\n onClick: () => handleOnMenuActionAttempt('turing_attempt'),\n },\n {\n key: 'allow-reattempt',\n label: 'Allow Reattempt',\n visible: canReattemptBlock,\n onClick: () => handleOnMenuActionAttempt('allow_reattempt'),\n },\n ],\n [canReattemptBlock, completedOn, isTuring, nodeType, handleOnMenuActionAttempt],\n );\n\n const handleOnView = useCallback(\n (action?: string) => {\n if (action) {\n trackEvent(action, analyticsProps);\n }\n\n if (typeof onView !== 'function') {\n throw new Error('onView must be a function');\n }\n\n onView(sheet, isV3Worksheet(sheet));\n },\n [analyticsProps, onView, sheet, trackEvent],\n );\n\n if (isHiddenNode) {\n return (\n <FlexView $flexGap={8} $flexDirection=\"row\" $alignItems=\"center\">\n {isHiddenUnlocked ? (\n <StyledEyeIcon onClick={() => handleOnView('clicked')} />\n ) : (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label=\"Start\"\n onClick={handleOnView}\n analyticsProps={analyticsProps}\n />\n )}\n </FlexView>\n );\n }\n\n return (\n <FlexView $flexGap={8} $flexDirection=\"row\" $alignItems=\"center\">\n {renderAccuracy && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n {rewardsBadgeUrl && <RewardImage src={rewardsBadgeUrl} alt=\"Reward\" />}\n <RewardAccuracy $renderAs=\"eyebrow2\" $align=\"center\">\n {performance || `${Math.ceil(accuracy)}%`}\n </RewardAccuracy>\n </FlexView>\n )}\n\n {canTeacherReview && pptNodeTypeSheetInProgress && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label=\"Resume\"\n onClick={handleOnView}\n analyticsProps={analyticsProps}\n />\n )}\n\n {!pptNodeTypeSheetInProgress && <StyledEyeIcon onClick={() => handleOnView('clicked')} />}\n\n {isMenuVisible && (\n <ContextMenu\n targetElement={<ContextMenuTargetElement />}\n menuElement={<ContextMenuElement options={options} />}\n menuOffset={5}\n menuZIndex={1}\n placeTop={isLastSheet}\n />\n )}\n </FlexView>\n );\n};\n\nexport default TeacherActions;\n"],"names":["TeacherActions","isLastSheet","isClassOngoing","sheet","restTeacherActionsProps","onView","onMenuActionAttempt","trackEvent","useUIContext","accuracy","canTeacherReview","userNodeId","nodeType","permissions","rewards","isTuring","completedOn","canReattemptBlock","nodeId","code","isHiddenNode","NODE_TYPE","performance","_a","rewardsBadgeUrl","getRewardsBadgeUrl","isPPTNodeType","checkIfPPTNodeType","renderAccuracy","isMenuVisible","pptNodeTypeSheetInProgress","isHiddenUnlocked","checkIfIsHiddenUnlocked","analyticsProps","useMemo","handleOnMenuActionAttempt","useCallback","action","options","handleOnView","isV3Worksheet","FlexView","jsx","StyledEyeIcon","Button","jsxs","RewardImage","RewardAccuracy","ContextMenu","ContextMenuTargetElement","ContextMenuElement"],"mappings":"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"}
|
@@ -1,40 +1,42 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import {
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import { Carousel as
|
8
|
-
const
|
9
|
-
const
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
}, [
|
14
|
-
|
1
|
+
import { jsxs as h, jsx as e } from "react/jsx-runtime";
|
2
|
+
import w, { forwardRef as L, useRef as u, useState as j, useCallback as d, useImperativeHandle as A, useEffect as I } from "react";
|
3
|
+
import _ from "../../../../../assets/line-icons/icons/carat-left.js";
|
4
|
+
import B from "../../../../../assets/line-icons/icons/carat-right.js";
|
5
|
+
import y from "../../../../ui/buttons/icon-button/icon-button.js";
|
6
|
+
import b from "../../../../ui/separator/separator.js";
|
7
|
+
import { Carousel as D, CarouselWrapper as E, CarouselItemContainer as F, ExtendedFlexView as S, Indicator as x } from "./carousel-styled.js";
|
8
|
+
const H = ({ items: a, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev: f, analyticsNext: p }, R) => {
|
9
|
+
const C = u(null), i = u(!0), [n, o] = j(l), m = u(
|
10
|
+
a.map(() => w.createRef())
|
11
|
+
), $ = d(() => {
|
12
|
+
c == null || c(), o((r) => r - 1);
|
13
|
+
}, [c]), g = d(() => {
|
14
|
+
s == null || s(), o((r) => r + 1);
|
15
|
+
}, [s]), k = d((r) => {
|
16
|
+
o(r);
|
15
17
|
}, []);
|
16
|
-
return
|
17
|
-
nextBtnRef:
|
18
|
-
indicatorRefs:
|
19
|
-
currentIndex:
|
18
|
+
return A(R, () => ({
|
19
|
+
nextBtnRef: C,
|
20
|
+
indicatorRefs: m.current,
|
21
|
+
currentIndex: n,
|
20
22
|
goToIndex: (r) => {
|
21
|
-
|
23
|
+
o(r);
|
22
24
|
}
|
23
|
-
})),
|
25
|
+
})), I(() => {
|
24
26
|
i.current && (i.current = !1);
|
25
|
-
}, []),
|
26
|
-
|
27
|
-
}, [l]), /* @__PURE__ */
|
27
|
+
}, []), I(() => {
|
28
|
+
o(l);
|
29
|
+
}, [l]), /* @__PURE__ */ h(D, { children: [
|
28
30
|
/* @__PURE__ */ e(
|
29
|
-
|
31
|
+
E,
|
30
32
|
{
|
31
|
-
$translate:
|
33
|
+
$translate: n * 100,
|
32
34
|
$translateDuration: i.current ? 0 : 300,
|
33
|
-
children:
|
35
|
+
children: a.map((r, t) => /* @__PURE__ */ e(F, { children: r }, t))
|
34
36
|
}
|
35
37
|
),
|
36
|
-
|
37
|
-
|
38
|
+
a.length > 1 && /* @__PURE__ */ h(
|
39
|
+
S,
|
38
40
|
{
|
39
41
|
$flexDirection: "row",
|
40
42
|
$alignItems: "center",
|
@@ -42,44 +44,44 @@ const W = ({ items: t, defaultIndex: l = 0, onNext: s, onPrev: c, analyticsPrev:
|
|
42
44
|
$position: "absolute",
|
43
45
|
children: [
|
44
46
|
/* @__PURE__ */ e(
|
45
|
-
|
47
|
+
y,
|
46
48
|
{
|
47
49
|
renderAs: "secondary",
|
48
|
-
Icon:
|
49
|
-
onClick:
|
50
|
+
Icon: _,
|
51
|
+
onClick: $,
|
50
52
|
analyticsLabel: f.analyticsLabel,
|
51
53
|
analyticsProps: f.analyticsProps,
|
52
|
-
disabled:
|
54
|
+
disabled: n === 0
|
53
55
|
}
|
54
56
|
),
|
55
|
-
/* @__PURE__ */ e(
|
56
|
-
|
57
|
-
|
57
|
+
/* @__PURE__ */ e(b, { width: 48 }),
|
58
|
+
a.map((r, t) => /* @__PURE__ */ e(
|
59
|
+
x,
|
58
60
|
{
|
59
|
-
ref:
|
60
|
-
$isActive:
|
61
|
-
onClick: () =>
|
61
|
+
ref: m.current[t],
|
62
|
+
$isActive: t === n,
|
63
|
+
onClick: () => k(t)
|
62
64
|
},
|
63
|
-
|
65
|
+
t
|
64
66
|
)),
|
65
|
-
/* @__PURE__ */ e(
|
66
|
-
/* @__PURE__ */ e("div", { ref:
|
67
|
-
|
67
|
+
/* @__PURE__ */ e(b, { width: 48 }),
|
68
|
+
/* @__PURE__ */ e("div", { ref: C, children: /* @__PURE__ */ e(
|
69
|
+
y,
|
68
70
|
{
|
69
71
|
renderAs: "secondary",
|
70
|
-
Icon:
|
71
|
-
onClick:
|
72
|
-
analyticsLabel:
|
73
|
-
analyticsProps:
|
74
|
-
disabled:
|
72
|
+
Icon: B,
|
73
|
+
onClick: g,
|
74
|
+
analyticsLabel: p.analyticsLabel,
|
75
|
+
analyticsProps: p.analyticsProps,
|
76
|
+
disabled: n === a.length - 1
|
75
77
|
}
|
76
78
|
) })
|
77
79
|
]
|
78
80
|
}
|
79
81
|
)
|
80
82
|
] });
|
81
|
-
},
|
83
|
+
}, J = L(H);
|
82
84
|
export {
|
83
|
-
|
85
|
+
J as Carousel
|
84
86
|
};
|
85
87
|
//# sourceMappingURL=carousel.js.map
|
@@ -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
|
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 React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\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 nextBtnRef = useRef<HTMLDivElement>(null);\n const isFirstMount = useRef(true);\n const [currIndex, setCurrIndex] = useState(defaultIndex);\n\n // Persistent indicator refs\n const indicatorRefs = useRef<React.RefObject<HTMLDivElement>[]>(\n items.map(() => React.createRef()),\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 // Sync external defaultIndex\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={analyticsPrev.analyticsLabel}\n analyticsProps={analyticsPrev.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={analyticsNext.analyticsLabel}\n analyticsProps={analyticsNext.analyticsProps}\n disabled={currIndex === items.length - 1}\n />\n </div>\n </Styled.ExtendedFlexView>\n )}\n </Styled.Carousel>\n );\n};\n\nexport const Carousel = forwardRef(CarouselComponent);\n"],"names":["CarouselComponent","items","defaultIndex","onNext","onPrev","analyticsPrev","analyticsNext","ref","nextBtnRef","useRef","isFirstMount","currIndex","setCurrIndex","useState","indicatorRefs","React","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","forwardRef"],"mappings":"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"}
|