@cuemath/leap 2.8.63-akm-5 → 2.9.0-aa1

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 (24) hide show
  1. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js +45 -46
  2. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js.map +1 -1
  3. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js +25 -26
  4. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js.map +1 -1
  5. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +50 -58
  6. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  7. package/dist/features/cue-canvas/cue-canvas-provider.js +9 -8
  8. package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
  9. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js +59 -60
  10. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js.map +1 -1
  11. package/dist/features/sheets/resources-list/resource-item/resource-item.js +89 -90
  12. package/dist/features/sheets/resources-list/resource-item/resource-item.js.map +1 -1
  13. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js +60 -61
  14. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js.map +1 -1
  15. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js +63 -64
  16. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js.map +1 -1
  17. package/dist/features/sheets/utils/is-v3-worksheet.js +4 -14
  18. package/dist/features/sheets/utils/is-v3-worksheet.js.map +1 -1
  19. package/dist/index.d.ts +10 -13
  20. package/dist/index.js +425 -425
  21. package/dist/index.js.map +1 -1
  22. package/dist/library/polypad.js +24965 -0
  23. package/dist/library/polypad.js.map +1 -0
  24. package/package.json +4 -2
@@ -1,43 +1,42 @@
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 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 }) => {
3
+ import { getRewardsBadgeUrl as G } from "../../../../../../sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils.js";
4
+ import Z from "../../../../../../ui/context-menu/context-menu.js";
5
+ import { useUIContext as q } from "../../../../../../ui/context/context.js";
6
+ import P from "../../../../../../ui/layout/flex-view.js";
7
+ import { checkIfPPTNodeType as H } from "../../../../utils/index.js";
8
+ import J from "../../context-menu-helper/menu-element.js";
9
+ import K from "../../context-menu-helper/target-element.js";
10
+ import { StyledButton as M, RewardImage as Q, RewardAccuracy as Y } from "../reward-n-actions-styled.js";
11
+ import { getPrimaryCtaLabel as ee } from "./student-actions-utils.js";
12
+ const ue = ({ sheet: n, isLastSheet: N, onStartOrResume: m, onReview: l }) => {
14
13
  var A;
15
- const { onEvent: w } = H(), {
16
- permissions: S,
14
+ const { onEvent: w } = q(), {
15
+ permissions: O,
17
16
  can_start: o,
18
17
  can_resume: c,
19
18
  can_review: i,
20
- can_reattempt: V,
19
+ can_reattempt: S,
21
20
  accuracy: y,
22
21
  can_redo: j,
23
22
  rewards: a,
24
23
  attempt_state: _,
25
24
  is_subjective: F,
26
- is_turing: W,
25
+ is_turing: V,
27
26
  completed_on: g,
28
27
  node_type: d,
29
28
  ceremony_completed_on_ts: R,
30
- can_reattempt_block: U,
29
+ can_reattempt_block: W,
31
30
  node_id: b,
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(
31
+ id: C
32
+ } = n, { access: v } = O.can_do, t = H(d), r = V || t, h = a && G(a), U = a && ((A = a[0]) == null ? void 0 : A.performance), z = !o && !c && typeof y == "number" && !(F && _ && _ === "WAIT_FOR_REVIEW"), k = W && !g, I = o || c || j || S, L = v && I || !r && k, p = !!(i && g && !R), s = f(
34
33
  () => ({
35
- user_node_id: v,
34
+ user_node_id: C,
36
35
  nodeId: b
37
36
  }),
38
- [b, v]
39
- ), h = f(
40
- () => te({
37
+ [b, C]
38
+ ), T = f(
39
+ () => ee({
41
40
  canStart: o,
42
41
  canResume: c,
43
42
  isInstructionNodeType: r,
@@ -48,67 +47,67 @@ const we = ({ sheet: t, isLastSheet: O, onStartOrResume: m, onReview: l }) => {
48
47
  ), x = $(() => {
49
48
  if (typeof m != "function")
50
49
  throw new Error("onStartOrResume is not a function");
51
- m(t, P(t));
52
- }, [m, t]), E = $(() => {
50
+ m(n);
51
+ }, [m, n]), E = $(() => {
53
52
  if (typeof l != "function")
54
53
  throw new Error("onReview is not a function");
55
54
  w("clicked", {
56
- cta: n ? "View" : "Review sheet",
55
+ cta: t ? "View" : "Review sheet",
57
56
  ...s
58
- }), l(t, P(t, "review"));
59
- }, [s, n, l, t, w]), D = r ? !!R : i, G = f(
57
+ }), l(n);
58
+ }, [s, t, l, n, w]), X = r ? !!R : i, D = f(
60
59
  () => [
61
60
  {
62
61
  key: "review-sheet",
63
- label: n ? "View" : "Review sheet",
62
+ label: t ? "View" : "Review sheet",
64
63
  visible: !!i,
65
64
  onClick: E
66
65
  }
67
66
  ],
68
- [i, E, n]
67
+ [i, E, t]
69
68
  );
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,
69
+ return t ? null : /* @__PURE__ */ u(P, { $flexDirection: "row", $alignItems: "center", $flexGap: 8, children: [
70
+ v && r ? /* @__PURE__ */ e(B, { children: (I || p) && /* @__PURE__ */ e(
71
+ M,
73
72
  {
74
73
  renderAs: "primary",
75
74
  size: "small",
76
75
  widthX: 6,
77
76
  onClick: x,
78
- label: h,
77
+ label: T,
79
78
  analyticsProps: s
80
79
  }
81
80
  ) }) : /* @__PURE__ */ u(B, { children: [
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)}%` })
81
+ z && /* @__PURE__ */ u(P, { $justifyContent: "center", $alignItems: "center", children: [
82
+ h && /* @__PURE__ */ e(Q, { src: h, alt: "Reward" }),
83
+ /* @__PURE__ */ e(Y, { $renderAs: "eyebrow2", $align: "center", children: U || `${Math.ceil(y)}%` })
85
84
  ] }),
86
- X && /* @__PURE__ */ e(
87
- N,
85
+ L && /* @__PURE__ */ e(
86
+ M,
88
87
  {
89
88
  renderAs: "primary",
90
89
  size: "small",
91
90
  widthX: 6,
92
- label: h,
93
- disabled: I,
91
+ label: T,
92
+ disabled: k,
94
93
  onClick: x,
95
94
  analyticsProps: s
96
95
  }
97
96
  )
98
97
  ] }),
99
- D && /* @__PURE__ */ e(
100
- q,
98
+ X && /* @__PURE__ */ e(
99
+ Z,
101
100
  {
102
- targetElement: /* @__PURE__ */ e(Q, {}),
103
- menuElement: /* @__PURE__ */ e(K, { options: G }),
101
+ targetElement: /* @__PURE__ */ e(K, {}),
102
+ menuElement: /* @__PURE__ */ e(J, { options: D }),
104
103
  menuOffset: 5,
105
104
  menuZIndex: 1,
106
- placeTop: O
105
+ placeTop: N
107
106
  }
108
107
  )
109
108
  ] });
110
109
  };
111
110
  export {
112
- we as default
111
+ ue as default
113
112
  };
114
113
  //# 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 { 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
+ {"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":"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"}
@@ -1,24 +1,23 @@
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 D } from "../../../../../../sheets/constants/sheet.js";
3
+ import { NODE_TYPE as V } 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";
6
5
  import R from "../../../../../../ui/buttons/button/button.js";
7
- import j from "../../../../../../ui/context-menu/context-menu.js";
8
- import { useUIContext as z } from "../../../../../../ui/context/context.js";
6
+ import H from "../../../../../../ui/context-menu/context-menu.js";
7
+ import { useUIContext as j } from "../../../../../../ui/context/context.js";
9
8
  import u from "../../../../../../ui/layout/flex-view.js";
10
- import { checkIfIsHiddenUnlocked as L, checkIfPPTNodeType as W } from "../../../../utils/index.js";
9
+ import { checkIfIsHiddenUnlocked as z, checkIfPPTNodeType as L } from "../../../../utils/index.js";
11
10
  import F from "../../context-menu-helper/menu-element.js";
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 = ({
11
+ import W from "../../context-menu-helper/target-element.js";
12
+ import { StyledEyeIcon as $, RewardImage as Y, RewardAccuracy as Z } from "../reward-n-actions-styled.js";
13
+ const le = ({
15
14
  isLastSheet: M,
16
15
  isClassOngoing: N,
17
- sheet: t,
16
+ sheet: n,
18
17
  ...v
19
18
  }) => {
20
19
  var h;
21
- const { onView: s, onMenuActionAttempt: m } = v, { onEvent: r } = z(), {
20
+ const { onView: s, onMenuActionAttempt: m } = v, { onEvent: r } = j(), {
22
21
  accuracy: f,
23
22
  can_teacher_review: k,
24
23
  id: d,
@@ -29,7 +28,7 @@ const se = ({
29
28
  completed_on: y,
30
29
  can_reattempt_block: _,
31
30
  node_id: g
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(
31
+ } = n, { code: p } = P.can_do, I = i === V.HIDDEN_BASIC, S = c && ((h = c[0]) == null ? void 0 : h.performance), A = c && G(c), C = L(i), B = k && typeof f == "number" && !C, U = d && !I, b = C && N && p === "IN_PROGRESS", O = !!(p && z(p)), t = E(
33
32
  () => ({
34
33
  node_id: g,
35
34
  user_node_id: d
@@ -39,13 +38,13 @@ const se = ({
39
38
  (o) => {
40
39
  if (r("clicked", {
41
40
  cta: o,
42
- ...n
41
+ ...t
43
42
  }), typeof m != "function")
44
43
  throw new Error("onMenuActionAttempt must be a function");
45
- m(o, t);
44
+ m(o, n);
46
45
  },
47
- [n, m, t, r]
48
- ), V = E(
46
+ [t, m, n, r]
47
+ ), D = E(
49
48
  () => [
50
49
  {
51
50
  key: "change-location",
@@ -69,11 +68,11 @@ const se = ({
69
68
  [_, y, w, i, l]
70
69
  ), a = T(
71
70
  (o) => {
72
- if (o && r(o, n), typeof s != "function")
71
+ if (o && r(o, t), typeof s != "function")
73
72
  throw new Error("onView must be a function");
74
- s(t, H(t));
73
+ s(n);
75
74
  },
76
- [n, s, t, r]
75
+ [t, s, n, r]
77
76
  );
78
77
  return I ? /* @__PURE__ */ e(u, { $flexGap: 8, $flexDirection: "row", $alignItems: "center", children: O ? /* @__PURE__ */ e($, { onClick: () => a("clicked") }) : /* @__PURE__ */ e(
79
78
  R,
@@ -82,12 +81,12 @@ const se = ({
82
81
  size: "small",
83
82
  label: "Start",
84
83
  onClick: a,
85
- analyticsProps: n
84
+ analyticsProps: t
86
85
  }
87
86
  ) }) : /* @__PURE__ */ x(u, { $flexGap: 8, $flexDirection: "row", $alignItems: "center", children: [
88
87
  B && /* @__PURE__ */ x(u, { $justifyContent: "center", $alignItems: "center", children: [
89
- A && /* @__PURE__ */ e(Z, { src: A, alt: "Reward" }),
90
- /* @__PURE__ */ e(q, { $renderAs: "eyebrow2", $align: "center", children: S || `${Math.ceil(f)}%` })
88
+ A && /* @__PURE__ */ e(Y, { src: A, alt: "Reward" }),
89
+ /* @__PURE__ */ e(Z, { $renderAs: "eyebrow2", $align: "center", children: S || `${Math.ceil(f)}%` })
91
90
  ] }),
92
91
  k && b && /* @__PURE__ */ e(
93
92
  R,
@@ -96,15 +95,15 @@ const se = ({
96
95
  size: "small",
97
96
  label: "Resume",
98
97
  onClick: a,
99
- analyticsProps: n
98
+ analyticsProps: t
100
99
  }
101
100
  ),
102
101
  !b && /* @__PURE__ */ e($, { onClick: () => a("clicked") }),
103
102
  U && /* @__PURE__ */ e(
104
- j,
103
+ H,
105
104
  {
106
- targetElement: /* @__PURE__ */ e(Y, {}),
107
- menuElement: /* @__PURE__ */ e(F, { options: V }),
105
+ targetElement: /* @__PURE__ */ e(W, {}),
106
+ menuElement: /* @__PURE__ */ e(F, { options: D }),
108
107
  menuOffset: 5,
109
108
  menuZIndex: 1,
110
109
  placeTop: M
@@ -113,6 +112,6 @@ const se = ({
113
112
  ] });
114
113
  };
115
114
  export {
116
- se as default
115
+ le as default
117
116
  };
118
117
  //# 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 { 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":";;;;;;;;;;;;;AAsBA,MAAMA,KAAsC,CAAC;AAAA,EAC3C,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;;AACE,QAAA,EAAE,QAAAC,GAAQ,qBAAAC,EAAwB,IAAAF,GAElC,EAAE,SAASG,EAAW,IAAIC,EAAa,GAEvC;AAAA,IACJ,UAAAC;AAAA,IACA,oBAAoBC;AAAA,IACpB,IAAIC;AAAA,IACJ,WAAWC;AAAA,IACX,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAWC;AAAA,IACX,cAAcC;AAAA,IACd,qBAAqBC;AAAA,IACrB,SAASC;AAAA,EACP,IAAAf,GACE,EAAE,MAAAgB,EAAK,IAAIN,EAAY,QACvBO,IAAeR,MAAaS,EAAU,cACtCC,IAAcR,OAAWS,IAAAT,EAAQ,CAAC,MAAT,gBAAAS,EAAY,cACrCC,IAAkBV,KAAWW,EAAmBX,CAAO,GACvDY,IAAgBC,EAAmBf,CAAQ,GAC3CgB,IAAiBlB,KAAoB,OAAOD,KAAa,YAAY,CAACiB,GACtEG,IAAgBlB,KAAc,CAACS,GAC/BU,IAA6BJ,KAAiBxB,KAAkBiB,MAAS,eACzEY,IAAmB,GAAQZ,KAAQa,EAAwBb,CAAI,IAE/Dc,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,SAAShB;AAAA,MACT,cAAcP;AAAA,IAAA;AAAA,IAEhB,CAACO,GAAQP,CAAU;AAAA,EAAA,GAGfwB,IAA4BC;AAAA,IAChC,CAACC,MAAmB;AAMd,UALJ9B,EAAW,WAAW;AAAA,QACpB,KAAK8B;AAAA,QACL,GAAGJ;AAAA,MAAA,CACJ,GAEG,OAAO3B,KAAwB;AAC3B,cAAA,IAAI,MAAM,wCAAwC;AAG1D,MAAAA,EAAoB+B,GAAQlC,CAAK;AAAA,IACnC;AAAA,IACA,CAAC8B,GAAgB3B,GAAqBH,GAAOI,CAAU;AAAA,EAAA,GAGnD+B,IAAUJ;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,QACT,SAAS,MAAMC,EAA0B,yBAAyB;AAAA,MACpE;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,OAAOnB,KAAeJ,MAAa,iBAAiB,qBAAqB;AAAA,QACzE,SAASG;AAAA,QACT,SAAS,MAAMoB,EAA0B,gBAAgB;AAAA,MAC3D;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,SAASlB;AAAA,QACT,SAAS,MAAMkB,EAA0B,iBAAiB;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,CAAClB,GAAmBD,GAAaD,GAAUH,GAAUuB,CAAyB;AAAA,EAAA,GAG1EI,IAAeH;AAAA,IACnB,CAACC,MAAoB;AAKf,UAJAA,KACF9B,EAAW8B,GAAQJ,CAAc,GAG/B,OAAO5B,KAAW;AACd,cAAA,IAAI,MAAM,2BAA2B;AAGtC,MAAAA,EAAAF,GAAOqC,EAAcrC,CAAK,CAAC;AAAA,IACpC;AAAA,IACA,CAAC8B,GAAgB5B,GAAQF,GAAOI,CAAU;AAAA,EAAA;AAG5C,SAAIa,sBAECqB,GAAS,EAAA,UAAU,GAAG,gBAAe,OAAM,aAAY,UACrD,UACCV,IAAA,gBAAAW,EAACC,KAAc,SAAS,MAAMJ,EAAa,SAAS,EAAG,CAAA,IAEvD,gBAAAG;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,MAAK;AAAA,MACL,OAAM;AAAA,MACN,SAASL;AAAA,MACT,gBAAAN;AAAA,IAAA;AAAA,EAGN,EAAA,CAAA,sBAKDQ,GAAS,EAAA,UAAU,GAAG,gBAAe,OAAM,aAAY,UACrD,UAAA;AAAA,IAAAb,KACE,gBAAAiB,EAAAJ,GAAA,EAAS,iBAAgB,UAAS,aAAY,UAC5C,UAAA;AAAA,MAAAjB,KAAoB,gBAAAkB,EAAAI,GAAA,EAAY,KAAKtB,GAAiB,KAAI,UAAS;AAAA,MACnE,gBAAAkB,EAAAK,GAAA,EAAe,WAAU,YAAW,QAAO,UACzC,UAAezB,KAAA,GAAG,KAAK,KAAKb,CAAQ,CAAC,KACxC;AAAA,IAAA,GACF;AAAA,IAGDC,KAAoBoB,KACnB,gBAAAY;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAASL;AAAA,QACT,gBAAAN;AAAA,MAAA;AAAA,IACF;AAAA,IAGD,CAACH,KAA+B,gBAAAY,EAAAC,GAAA,EAAc,SAAS,MAAMJ,EAAa,SAAS,GAAG;AAAA,IAEtFV,KACC,gBAAAa;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,iCAAgBC,GAAyB,EAAA;AAAA,QACzC,aAAc,gBAAAP,EAAAQ,GAAA,EAAmB,SAAAZ,EAAkB,CAAA;AAAA,QACnD,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,UAAUrC;AAAA,MAAA;AAAA,IACZ;AAAA,EAEJ,EAAA,CAAA;AAEJ;"}
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":"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"}
@@ -1,8 +1,8 @@
1
- import { useCallback as r, useRef as A } from "react";
2
- import { CircleSoundKeyMapper as T, SWIPE_SOUND_ORDER as C } from "./constants.js";
1
+ import { useCallback as a } from "react";
2
+ import { CircleSoundKeyMapper as A, SWIPE_SOUND_ORDER as i } from "./constants.js";
3
3
  import { CircleSoundKey as l } from "./use-circle-sounds-enums.js";
4
- let c = 0;
5
- const t = {
4
+ let C = 0;
5
+ const r = {
6
6
  [l.BACKGROUND]: null,
7
7
  [l.BACKGROUND_RUSHHOUR]: null,
8
8
  [l.TUTORIAL]: null,
@@ -26,71 +26,63 @@ const t = {
26
26
  [l.TIME_INTRO]: null,
27
27
  [l.TIME_TARGET]: null,
28
28
  [l.METER_FILL]: null
29
- }, d = {}, U = () => {
30
- const s = r((n) => {
31
- if (!t[n]) {
32
- const e = new Audio(T[n]);
33
- e.preload = "auto", t[n] = e;
29
+ }, I = {}, O = () => {
30
+ const e = a((n) => {
31
+ if (!r[n]) {
32
+ const t = new Audio(A[n]);
33
+ r[n] = t;
34
34
  }
35
- }, []), p = A(/* @__PURE__ */ new Set()), S = r(() => {
36
- document.visibilityState === "hidden" ? Object.keys(t).forEach((n) => {
37
- const e = t[n];
38
- e && !e.paused && (e.pause(), p.current.add(n));
39
- }) : document.visibilityState === "visible" && (p.current.forEach((n) => {
40
- const e = t[n];
41
- e == null || e.play();
42
- }), p.current.clear());
43
- }, []), E = r(() => {
44
- var e;
45
- C.forEach((u) => {
46
- s(u);
35
+ }, []), p = a(() => {
36
+ var t;
37
+ i.forEach((o) => {
38
+ e(o);
47
39
  });
48
- const n = C[c] || l.SWIPE_01;
49
- c < C.length - 1 ? c++ : c = 0, (e = t[n]) == null || e.play();
50
- }, [s]), _ = r(() => {
51
- var e;
52
- return s(l.TOGGLE), (e = t[l.TOGGLE]) == null ? void 0 : e.play();
53
- }, [s]), f = r(
54
- (n, e = !0, u = !1) => {
55
- s(n);
56
- const o = t[n];
57
- if (!o) return;
58
- if (o.loop = u, e) {
59
- o.volume = 1;
60
- const a = o.play();
61
- d[n] = a;
40
+ const n = i[C] || l.SWIPE_01;
41
+ C < i.length - 1 ? C++ : C = 0, (t = r[n]) == null || t.play();
42
+ }, [e]), _ = a(() => {
43
+ var t;
44
+ return e(l.TOGGLE), (t = r[l.TOGGLE]) == null ? void 0 : t.play();
45
+ }, [e]), E = a(
46
+ (n, t = !0, o = !1) => {
47
+ e(n);
48
+ const u = r[n];
49
+ if (!u) return;
50
+ if (u.loop = o, t) {
51
+ u.volume = 1;
52
+ const s = u.play();
53
+ I[n] = s;
62
54
  return;
63
55
  }
64
- o.volume = 0;
65
- const I = o.play();
66
- d[n] = I;
67
- const i = setInterval(() => {
68
- if (!o) return;
69
- const a = o.volume || 0;
70
- a < 1 ? o.volume = Math.min(a + 0.1, 1) : clearInterval(i);
71
- }, 100);
72
- return o;
56
+ u.volume = 0;
57
+ const c = u.play();
58
+ return I[n] = c, setInterval(() => {
59
+ if (!u) return;
60
+ const s = 0;
61
+ u.volume = s + 0.1;
62
+ }, 100), u;
73
63
  },
74
- [s]
75
- ), R = r((n, e = !0) => {
76
- var o;
77
- const u = t[n];
78
- d[n] !== void 0 && ((o = d[n]) == null || o.then(() => {
79
- if (e) {
80
- u == null || u.pause();
64
+ [e]
65
+ ), S = a((n, t = !0) => {
66
+ var u;
67
+ const o = r[n];
68
+ I[n] !== void 0 && ((u = I[n]) == null || u.then(() => {
69
+ if (t) {
70
+ o == null || o.pause();
81
71
  return;
82
72
  }
83
- const I = setInterval(() => {
84
- if (!u) return;
85
- const i = u.volume || 0;
86
- i - 0.1 <= 0 ? (u.volume = 0, u.pause(), clearInterval(I)) : u.volume = i - 0.1;
73
+ const c = setInterval(() => {
74
+ if (!o) return;
75
+ const s = o.volume || 0;
76
+ s - 0.1 <= 0 ? (o.volume = 0, o.pause(), clearInterval(c)) : o.volume = s - 0.1;
87
77
  }, 100);
78
+ }).catch((c) => {
79
+ console.log("sound not playing", c);
88
80
  }));
89
81
  }, []);
90
- return { playSwipSound: E, play: f, stop: R, playButtonSound: _, handleVisibilityChange: S };
82
+ return { playSwipSound: p, play: E, stop: S, playButtonSound: _ };
91
83
  };
92
84
  export {
93
- t as soundMapper,
94
- U as useCircleSounds
85
+ r as soundMapper,
86
+ O as useCircleSounds
95
87
  };
96
88
  //# sourceMappingURL=use-circle-sounds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\nimport { CircleSoundKey } from './use-circle-sounds-enums';\n\nlet swipeSoundIndex = 0;\n\nexport const soundMapper: Record<keyof typeof CircleSoundKeyMapper, null | HTMLAudioElement> = {\n [CircleSoundKey.BACKGROUND]: null,\n [CircleSoundKey.BACKGROUND_RUSHHOUR]: null,\n [CircleSoundKey.TUTORIAL]: null,\n [CircleSoundKey.SWIPE_01]: null,\n [CircleSoundKey.SWIPE_02]: null,\n [CircleSoundKey.SWIPE_03]: null,\n [CircleSoundKey.SWIPE_04]: null,\n [CircleSoundKey.SWIPE_DOWN]: null,\n [CircleSoundKey.TOGGLE]: null,\n [CircleSoundKey.POINTS_AWARDED]: null,\n [CircleSoundKey.POINTS_ADDED]: null,\n [CircleSoundKey.GAME_CARD_CLICK]: null,\n [CircleSoundKey.CLOCK_IN]: null,\n [CircleSoundKey.CLOCK_OUT]: null,\n [CircleSoundKey.ACCURACY_IN]: null,\n [CircleSoundKey.ACCURACY_OUT]: null,\n [CircleSoundKey.STREAK_IN]: null,\n [CircleSoundKey.STREAK_OUT]: null,\n [CircleSoundKey.ACCURACY_INTRO]: null,\n [CircleSoundKey.ACCURACY_TARGET]: null,\n [CircleSoundKey.TIME_INTRO]: null,\n [CircleSoundKey.TIME_TARGET]: null,\n [CircleSoundKey.METER_FILL]: null,\n};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n const loadedSound = new Audio(CircleSoundKeyMapper[key]);\n\n loadedSound.preload = 'auto';\n soundMapper[key] = loadedSound;\n }\n }, []);\n\n const pausedSoundsRef = useRef<Set<CircleSoundKey>>(new Set());\n\n const handleVisibilityChange = useCallback(() => {\n if (document.visibilityState === 'hidden') {\n // Pause all playing sounds and track them\n (Object.keys(soundMapper) as CircleSoundKey[]).forEach(key => {\n const sound = soundMapper[key];\n\n if (sound && !sound.paused) {\n sound.pause();\n pausedSoundsRef.current.add(key);\n }\n });\n } else if (document.visibilityState === 'visible') {\n // Resume only previously paused sounds\n pausedSoundsRef.current.forEach(key => {\n const sound = soundMapper[key];\n\n sound?.play();\n });\n pausedSoundsRef.current.clear();\n }\n }, []);\n\n const playSwipSound = useCallback(() => {\n SWIPE_SOUND_ORDER.forEach(key => {\n loadSound(key);\n });\n\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n if (swipeSoundIndex < SWIPE_SOUND_ORDER.length - 1) {\n swipeSoundIndex++;\n } else {\n swipeSoundIndex = 0;\n }\n soundMapper[key]?.play();\n }, [loadSound]);\n\n const playButtonSound = useCallback(() => {\n loadSound(CircleSoundKey.TOGGLE);\n const sound = soundMapper[CircleSoundKey.TOGGLE]?.play();\n\n return sound;\n }, [loadSound]);\n\n const play = useCallback(\n (key: CircleSoundKey, immediately: boolean = true, loop = false) => {\n loadSound(key);\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n soundInstance.loop = loop;\n if (immediately) {\n soundInstance.volume = 1;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n return;\n }\n\n soundInstance.volume = 0;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n const intervalId = setInterval(() => {\n if (!soundInstance) return;\n\n const vol = soundInstance.volume || 0;\n\n if (vol < 1) {\n soundInstance.volume = Math.min(vol + 0.1, 1);\n } else {\n clearInterval(intervalId);\n }\n }, 100);\n\n return soundInstance;\n },\n [loadSound],\n );\n\n const stop = useCallback((key: CircleSoundKey, immediately: boolean = true) => {\n const soundInstance = soundMapper[key];\n\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]?.then(() => {\n if (immediately) {\n soundInstance?.pause();\n\n return;\n }\n\n const intervalId = setInterval(() => {\n if (!soundInstance) return;\n\n const vol = soundInstance.volume || 0;\n\n if (vol - 0.1 <= 0) {\n soundInstance.volume = 0;\n soundInstance.pause();\n clearInterval(intervalId);\n } else {\n soundInstance.volume = vol - 0.1;\n }\n }, 100);\n });\n }\n }, []);\n\n return { playSwipSound, play, stop, playButtonSound, handleVisibilityChange };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","pausedSoundsRef","useRef","handleVisibilityChange","sound","playSwipSound","SWIPE_SOUND_ORDER","_a","playButtonSound","play","immediately","loop","soundInstance","promise","intervalId","vol","stop"],"mappings":"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"}
1
+ {"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\nimport { CircleSoundKey } from './use-circle-sounds-enums';\n\nlet swipeSoundIndex = 0;\n\nexport const soundMapper: Record<keyof typeof CircleSoundKeyMapper, null | HTMLAudioElement> = {\n [CircleSoundKey.BACKGROUND]: null,\n [CircleSoundKey.BACKGROUND_RUSHHOUR]: null,\n [CircleSoundKey.TUTORIAL]: null,\n [CircleSoundKey.SWIPE_01]: null,\n [CircleSoundKey.SWIPE_02]: null,\n [CircleSoundKey.SWIPE_03]: null,\n [CircleSoundKey.SWIPE_04]: null,\n [CircleSoundKey.SWIPE_DOWN]: null,\n [CircleSoundKey.TOGGLE]: null,\n [CircleSoundKey.POINTS_AWARDED]: null,\n [CircleSoundKey.POINTS_ADDED]: null,\n [CircleSoundKey.GAME_CARD_CLICK]: null,\n [CircleSoundKey.CLOCK_IN]: null,\n [CircleSoundKey.CLOCK_OUT]: null,\n [CircleSoundKey.ACCURACY_IN]: null,\n [CircleSoundKey.ACCURACY_OUT]: null,\n [CircleSoundKey.STREAK_IN]: null,\n [CircleSoundKey.STREAK_OUT]: null,\n [CircleSoundKey.ACCURACY_INTRO]: null,\n [CircleSoundKey.ACCURACY_TARGET]: null,\n [CircleSoundKey.TIME_INTRO]: null,\n [CircleSoundKey.TIME_TARGET]: null,\n [CircleSoundKey.METER_FILL]: null,\n};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n const loadedSound = new Audio(CircleSoundKeyMapper[key]);\n\n soundMapper[key] = loadedSound;\n }\n }, []);\n\n const playSwipSound = useCallback(() => {\n SWIPE_SOUND_ORDER.forEach(key => {\n loadSound(key);\n });\n\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n if (swipeSoundIndex < SWIPE_SOUND_ORDER.length - 1) {\n swipeSoundIndex++;\n } else {\n swipeSoundIndex = 0;\n }\n soundMapper[key]?.play();\n }, [loadSound]);\n\n const playButtonSound = useCallback(() => {\n loadSound(CircleSoundKey.TOGGLE);\n const sound = soundMapper[CircleSoundKey.TOGGLE]?.play();\n\n return sound;\n }, [loadSound]);\n\n const play = useCallback(\n (key: CircleSoundKey, immediately: boolean = true, loop = false) => {\n loadSound(key);\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n soundInstance.loop = loop;\n if (immediately) {\n soundInstance.volume = 1;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n return;\n }\n\n soundInstance.volume = 0;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n const intervalId = setInterval(() => {\n if (!soundInstance) return;\n\n const vol = 0;\n\n if (vol < 1) {\n soundInstance.volume = vol + 0.1;\n } else {\n clearInterval(intervalId);\n }\n }, 100);\n\n return soundInstance;\n },\n [loadSound],\n );\n\n const stop = useCallback((key: CircleSoundKey, immediately: boolean = true) => {\n const soundInstance = soundMapper[key];\n\n // check if the sound is playing as the play() return a promise\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]\n ?.then(() => {\n if (immediately) {\n soundInstance?.pause();\n\n return;\n }\n\n const intervalId = setInterval(() => {\n if (!soundInstance) return;\n\n const vol = soundInstance.volume || 0;\n\n if (vol - 0.1 <= 0) {\n soundInstance.volume = 0;\n soundInstance.pause();\n clearInterval(intervalId);\n } else {\n soundInstance.volume = vol - 0.1;\n }\n }, 100);\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.log('sound not playing', err);\n });\n }\n }, []);\n\n return { playSwipSound, play, stop, playButtonSound };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","playSwipSound","SWIPE_SOUND_ORDER","_a","playButtonSound","play","immediately","loop","soundInstance","promise","vol","stop","intervalId","err"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as d } from "react/jsx-runtime";
2
- import { memo as f, useMemo as n, useState as o } from "react";
3
- import p from "./cue-canvas-context.js";
2
+ import "../../library/polypad.js";
3
+ import { memo as p, useMemo as i, useState as o } from "react";
4
+ import f from "./cue-canvas-context.js";
4
5
  import { getColorsForUser as x } from "./cue-canvas-helpers.js";
5
- const A = f(
6
- ({ children: a, userType: t }) => {
7
- const i = n(() => x(t), [t]), [e, v] = o(), [r, m] = o("pen"), [s, l] = o(), [c, C] = o(i[0]), u = n(
6
+ const A = p(
7
+ ({ children: n, userType: t }) => {
8
+ const a = i(() => x(t), [t]), [e, v] = o(), [r, m] = o("pen"), [s, l] = o(), [c, C] = o(a[0]), u = i(
8
9
  () => ({
9
10
  activeInstance: e,
10
11
  setActiveInstance: v,
@@ -17,10 +18,10 @@ const A = f(
17
18
  }),
18
19
  [c, e, s, r]
19
20
  );
20
- return /* @__PURE__ */ d(p.Provider, { value: u, children: a });
21
+ return /* @__PURE__ */ d(f.Provider, { value: u, children: n });
21
22
  }
22
- ), g = A;
23
+ ), j = A;
23
24
  export {
24
- g as default
25
+ j as default
25
26
  };
26
27
  //# sourceMappingURL=cue-canvas-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cue-canvas-provider.js","sources":["../../../src/features/cue-canvas/cue-canvas-provider.tsx"],"sourcesContent":["import type { TUserTypes } from '../ui/types';\nimport type { CueCanvasCore } from './cue-canvas-core';\nimport type { TCueCanvasColors, TCueCanvasSidebar, TCueCanvasTool } from './types/cue-canvas';\nimport '../../library/polypad';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { useState, memo, useMemo } from 'react';\n\nimport CueCanvasContext from './cue-canvas-context';\nimport { getColorsForUser } from './cue-canvas-helpers';\n\nconst CueCanvasProvider: FC<PropsWithChildren<{ userType: TUserTypes }>> = memo(\n ({ children, userType }) => {\n const colors = useMemo(() => getColorsForUser(userType), [userType]);\n\n const [activeInstance, setActiveInstance] = useState<CueCanvasCore>();\n const [activeTool, setActiveTool] = useState<TCueCanvasTool>('pen');\n const [activeSidebar, setActiveSidebar] = useState<TCueCanvasSidebar>();\n const [activeColor, setActiveColor] = useState<TCueCanvasColors>(colors[0] as TCueCanvasColors);\n const contextValue = useMemo(\n () => ({\n activeInstance: activeInstance,\n setActiveInstance: setActiveInstance,\n activeTool: activeTool,\n setActiveTool: setActiveTool,\n activeColor,\n setActiveColor,\n activeSidebar,\n setActiveSidebar,\n }),\n [activeColor, activeInstance, activeSidebar, activeTool],\n );\n\n return <CueCanvasContext.Provider value={contextValue}>{children}</CueCanvasContext.Provider>;\n },\n);\n\nexport default CueCanvasProvider;\n"],"names":["CueCanvasProvider","memo","children","userType","colors","useMemo","getColorsForUser","activeInstance","setActiveInstance","useState","activeTool","setActiveTool","activeSidebar","setActiveSidebar","activeColor","setActiveColor","contextValue","CueCanvasContext","CueCanvasProvider$1"],"mappings":";;;;AAWA,MAAMA,IAAqEC;AAAA,EACzE,CAAC,EAAE,UAAAC,GAAU,UAAAC,QAAe;AACpB,UAAAC,IAASC,EAAQ,MAAMC,EAAiBH,CAAQ,GAAG,CAACA,CAAQ,CAAC,GAE7D,CAACI,GAAgBC,CAAiB,IAAIC,EAAwB,GAC9D,CAACC,GAAYC,CAAa,IAAIF,EAAyB,KAAK,GAC5D,CAACG,GAAeC,CAAgB,IAAIJ,EAA4B,GAChE,CAACK,GAAaC,CAAc,IAAIN,EAA2BL,EAAO,CAAC,CAAqB,GACxFY,IAAeX;AAAA,MACnB,OAAO;AAAA,QACL,gBAAAE;AAAA,QACA,mBAAAC;AAAA,QACA,YAAAE;AAAA,QACA,eAAAC;AAAA,QACA,aAAAG;AAAA,QACA,gBAAAC;AAAA,QACA,eAAAH;AAAA,QACA,kBAAAC;AAAA,MAAA;AAAA,MAEF,CAACC,GAAaP,GAAgBK,GAAeF,CAAU;AAAA,IAAA;AAGzD,6BAAQO,EAAiB,UAAjB,EAA0B,OAAOD,GAAe,UAAAd,EAAS,CAAA;AAAA,EACnE;AACF,GAEAgB,IAAelB;"}
1
+ {"version":3,"file":"cue-canvas-provider.js","sources":["../../../src/features/cue-canvas/cue-canvas-provider.tsx"],"sourcesContent":["import type { TUserTypes } from '../ui/types';\nimport type { CueCanvasCore } from './cue-canvas-core';\nimport type { TCueCanvasColors, TCueCanvasSidebar, TCueCanvasTool } from './types/cue-canvas';\nimport '../../library/polypad';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { useState, memo, useMemo } from 'react';\n\nimport CueCanvasContext from './cue-canvas-context';\nimport { getColorsForUser } from './cue-canvas-helpers';\n\nconst CueCanvasProvider: FC<PropsWithChildren<{ userType: TUserTypes }>> = memo(\n ({ children, userType }) => {\n const colors = useMemo(() => getColorsForUser(userType), [userType]);\n\n const [activeInstance, setActiveInstance] = useState<CueCanvasCore>();\n const [activeTool, setActiveTool] = useState<TCueCanvasTool>('pen');\n const [activeSidebar, setActiveSidebar] = useState<TCueCanvasSidebar>();\n const [activeColor, setActiveColor] = useState<TCueCanvasColors>(colors[0] as TCueCanvasColors);\n const contextValue = useMemo(\n () => ({\n activeInstance: activeInstance,\n setActiveInstance: setActiveInstance,\n activeTool: activeTool,\n setActiveTool: setActiveTool,\n activeColor,\n setActiveColor,\n activeSidebar,\n setActiveSidebar,\n }),\n [activeColor, activeInstance, activeSidebar, activeTool],\n );\n\n return <CueCanvasContext.Provider value={contextValue}>{children}</CueCanvasContext.Provider>;\n },\n);\n\nexport default CueCanvasProvider;\n"],"names":["CueCanvasProvider","memo","children","userType","colors","useMemo","getColorsForUser","activeInstance","setActiveInstance","useState","activeTool","setActiveTool","activeSidebar","setActiveSidebar","activeColor","setActiveColor","contextValue","CueCanvasContext","CueCanvasProvider$1"],"mappings":";;;;;AAWA,MAAMA,IAAqEC;AAAA,EACzE,CAAC,EAAE,UAAAC,GAAU,UAAAC,QAAe;AACpB,UAAAC,IAASC,EAAQ,MAAMC,EAAiBH,CAAQ,GAAG,CAACA,CAAQ,CAAC,GAE7D,CAACI,GAAgBC,CAAiB,IAAIC,EAAwB,GAC9D,CAACC,GAAYC,CAAa,IAAIF,EAAyB,KAAK,GAC5D,CAACG,GAAeC,CAAgB,IAAIJ,EAA4B,GAChE,CAACK,GAAaC,CAAc,IAAIN,EAA2BL,EAAO,CAAC,CAAqB,GACxFY,IAAeX;AAAA,MACnB,OAAO;AAAA,QACL,gBAAAE;AAAA,QACA,mBAAAC;AAAA,QACA,YAAAE;AAAA,QACA,eAAAC;AAAA,QACA,aAAAG;AAAA,QACA,gBAAAC;AAAA,QACA,eAAAH;AAAA,QACA,kBAAAC;AAAA,MAAA;AAAA,MAEF,CAACC,GAAaP,GAAgBK,GAAeF,CAAU;AAAA,IAAA;AAGzD,6BAAQO,EAAiB,UAAjB,EAA0B,OAAOD,GAAe,UAAAd,EAAS,CAAA;AAAA,EACnE;AACF,GAEAgB,IAAelB;"}