@cuemath/leap 3.2.34-mbz2 → 3.2.34-mbz3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
1
|
+
import { jsx as e, jsxs as i } from "react/jsx-runtime";
|
|
2
2
|
import { memo as W, useState as p, useCallback as s, useMemo as $, useRef as w, useEffect as Y } from "react";
|
|
3
3
|
import M from "../../../stickers/sticker-selector/sticker-selector.js";
|
|
4
4
|
import m from "../../../ui/buttons/clickable/clickable.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import o from "../../../ui/layout/flex-view.js";
|
|
6
|
+
import R from "../../../ui/separator/separator.js";
|
|
7
7
|
import d from "../../../ui/text/text.js";
|
|
8
|
-
import
|
|
8
|
+
import A from "../../constants/events.js";
|
|
9
9
|
import { StickersIcon as q, GuideContainer as z, HintIcon as U, SolIcon as D, Pointer as F, SectionContainer as Q, Section as J, CloseIcon as Z, Guide as ee } from "./worksheet-sidebar-styled.js";
|
|
10
10
|
const ae = W(
|
|
11
11
|
({
|
|
12
|
-
questionWidth:
|
|
13
|
-
questions:
|
|
14
|
-
activeQuestionIndex:
|
|
15
|
-
learnosity:
|
|
12
|
+
questionWidth: b,
|
|
13
|
+
questions: G,
|
|
14
|
+
activeQuestionIndex: O,
|
|
15
|
+
learnosity: C,
|
|
16
16
|
actionbarHeight: I,
|
|
17
17
|
loggerRef: a,
|
|
18
18
|
enableStickers: L,
|
|
19
19
|
handleStickerSend: E
|
|
20
20
|
}) => {
|
|
21
21
|
var _;
|
|
22
|
-
const [t, h] = p(), [
|
|
22
|
+
const [t, h] = p(), [v, y] = p({
|
|
23
23
|
top: 0,
|
|
24
24
|
left: 0
|
|
25
|
-
}), [g,
|
|
26
|
-
h("HINT"), a.current(
|
|
25
|
+
}), [g, B] = p(!1), { top: T, left: k } = v, X = s(() => {
|
|
26
|
+
h("HINT"), a.current(A.WORKSHEET_V3_HINT_SEEN);
|
|
27
27
|
}, [a]), j = s(() => {
|
|
28
|
-
h("SOL"), a.current(
|
|
28
|
+
h("SOL"), a.current(A.WORKSHEET_V3_SOLUTION_SEEN);
|
|
29
29
|
}, [a]), x = s(() => {
|
|
30
30
|
h(() => {
|
|
31
31
|
});
|
|
32
32
|
}, []), f = s(() => {
|
|
33
|
-
|
|
34
|
-
}, []), { hints: n, solution: u } = ((_ =
|
|
33
|
+
B((c) => !c);
|
|
34
|
+
}, []), { hints: n, solution: u } = ((_ = G[O]) == null ? void 0 : _.metadata) || {}, r = $(() => t === void 0 ? void 0 : t === "HINT" ? n : u, [t, n, u]), H = w(null), N = w(null), S = s((c) => {
|
|
35
35
|
if (c.current) {
|
|
36
36
|
const l = c.current.getBoundingClientRect();
|
|
37
|
-
|
|
37
|
+
y({
|
|
38
38
|
top: l.top + l.height / 2 - 8,
|
|
39
39
|
left: l.right - 78
|
|
40
40
|
// 52px (sidebar width) + 16px (gutter) + 10px
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
}, []), K = $(
|
|
44
|
-
() => /* @__PURE__ */ e(m, { label: "teacher-badges", onClick: f, children: /* @__PURE__ */ o
|
|
44
|
+
() => /* @__PURE__ */ e(m, { label: "teacher-badges", onClick: f, children: /* @__PURE__ */ i(o, { $alignItems: "center", $justifyContent: "center", children: [
|
|
45
45
|
/* @__PURE__ */ e(q, { width: 32, height: 32, $disabled: !g }),
|
|
46
46
|
/* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: g ? "BLACK" : "GREY_4", children: "STICKERS" }),
|
|
47
|
-
/* @__PURE__ */ e(
|
|
47
|
+
/* @__PURE__ */ e(o, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(R, { width: 24, height: 1, background: "GREY_2" }) })
|
|
48
48
|
] }) }),
|
|
49
49
|
[g, f]
|
|
50
50
|
), P = $(
|
|
@@ -57,15 +57,15 @@ const ae = W(
|
|
|
57
57
|
), V = $(
|
|
58
58
|
() => ({
|
|
59
59
|
position: "left",
|
|
60
|
-
zIndex: 1e3
|
|
61
|
-
arrowXCoOrdinates: 87.5,
|
|
62
|
-
tooltipXCoOrdinates:
|
|
60
|
+
zIndex: 1e3
|
|
61
|
+
// arrowXCoOrdinates: 87.5,
|
|
62
|
+
// tooltipXCoOrdinates: '-62.5%',
|
|
63
63
|
}),
|
|
64
64
|
[]
|
|
65
65
|
);
|
|
66
|
-
return t && r &&
|
|
66
|
+
return t && r && C && C.renderMath("mathjax"), Y(() => {
|
|
67
67
|
t === "HINT" ? S(N) : t === "SOL" ? S(H) : r || h(void 0);
|
|
68
|
-
}, [t, S, r]), /* @__PURE__ */
|
|
68
|
+
}, [t, S, r]), /* @__PURE__ */ i(z, { $background: "WHITE", children: [
|
|
69
69
|
L && E && /* @__PURE__ */ e(
|
|
70
70
|
M,
|
|
71
71
|
{
|
|
@@ -77,12 +77,12 @@ const ae = W(
|
|
|
77
77
|
onToggle: f
|
|
78
78
|
}
|
|
79
79
|
),
|
|
80
|
-
/* @__PURE__ */ e(m, { label: "hints", onClick:
|
|
80
|
+
/* @__PURE__ */ e(m, { label: "hints", onClick: X, disabled: !n, children: /* @__PURE__ */ i(o, { $alignItems: "center", $justifyContent: "center", ref: N, children: [
|
|
81
81
|
/* @__PURE__ */ e(U, { width: 32, height: 32, $disabled: !n }),
|
|
82
82
|
/* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "HINT" }),
|
|
83
|
-
/* @__PURE__ */ e(
|
|
83
|
+
/* @__PURE__ */ e(o, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(R, { width: 24, height: 1, background: "GREY_2" }) })
|
|
84
84
|
] }) }),
|
|
85
|
-
/* @__PURE__ */ e(m, { label: "solution", onClick: j, disabled: !u, children: /* @__PURE__ */ o
|
|
85
|
+
/* @__PURE__ */ e(m, { label: "solution", onClick: j, disabled: !u, children: /* @__PURE__ */ i(o, { $alignItems: "center", $justifyContent: "center", ref: H, children: [
|
|
86
86
|
/* @__PURE__ */ e(D, { width: 32, height: 32, $disabled: !u }),
|
|
87
87
|
/* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "SOL" })
|
|
88
88
|
] }) }),
|
|
@@ -91,21 +91,21 @@ const ae = W(
|
|
|
91
91
|
Q,
|
|
92
92
|
{
|
|
93
93
|
$background: "WHITE",
|
|
94
|
-
$questionWidth:
|
|
94
|
+
$questionWidth: b,
|
|
95
95
|
$actionbarHeight: I,
|
|
96
96
|
$borderRadius: 10,
|
|
97
|
-
children: /* @__PURE__ */
|
|
97
|
+
children: /* @__PURE__ */ i(
|
|
98
98
|
J,
|
|
99
99
|
{
|
|
100
100
|
$gutterX: 1,
|
|
101
101
|
$gapX: 1,
|
|
102
|
-
$questionWidth:
|
|
102
|
+
$questionWidth: b,
|
|
103
103
|
$actionbarHeight: I,
|
|
104
104
|
children: [
|
|
105
105
|
/* @__PURE__ */ e(m, { label: "close", onClick: x, children: /* @__PURE__ */ e(Z, {}) }),
|
|
106
|
-
/* @__PURE__ */ e(
|
|
107
|
-
r && r.map((c, l) => /* @__PURE__ */ o
|
|
108
|
-
r.length > 1 && /* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ e(o, { $gutterX: 0.5, children: /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: t === "HINT" ? "HINTS:" : "SOLUTION:" }) }),
|
|
107
|
+
r && r.map((c, l) => /* @__PURE__ */ i(o, { $gutterX: 0.5, $gapX: 0.5, children: [
|
|
108
|
+
r.length > 1 && /* @__PURE__ */ i(d, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: [
|
|
109
109
|
t,
|
|
110
110
|
" ",
|
|
111
111
|
l + 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"question-guide.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/question-guide.tsx"],"sourcesContent":["import type { IStickerData } from '../../../stickers/sticker-selector/sticker-selector-types';\nimport type { TPositionProps } from '../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\n\nimport React, { memo, useCallback, useEffect, useMemo, useState, useRef } from 'react';\n\nimport StickerSelector from '../../../stickers/sticker-selector/sticker-selector';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport EVENTS from '../../constants/events';\nimport {\n Section,\n GuideContainer,\n CloseIcon,\n SolIcon,\n HintIcon,\n StickersIcon,\n SectionContainer,\n Guide,\n Pointer,\n} from './worksheet-sidebar-styled';\n\ntype TSections = 'HINT' | 'SOL';\n\ninterface IQuestionGuideProps extends Pick<IWorksheetProps, 'loggerRef'> {\n questionWidth: number;\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n learnosity: ILearnosity;\n actionbarHeight: number;\n enableStickers?: boolean;\n handleStickerSend?: (sticker: IStickerData) => void;\n}\n\nconst QuestionGuide: React.FC<IQuestionGuideProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n actionbarHeight,\n loggerRef,\n enableStickers,\n handleStickerSend,\n }) => {\n const [activeSection, setActiveSection] = useState<TSections | undefined>();\n const [pointerPosition, setPointerPosition] = useState({\n top: 0,\n left: 0,\n });\n const [showStickers, setShowStickers] = useState(false);\n const { top, left } = pointerPosition;\n\n const handleHintClick = useCallback(() => {\n setActiveSection('HINT');\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n }, [loggerRef]);\n const handleSolClick = useCallback(() => {\n setActiveSection('SOL');\n loggerRef.current(EVENTS.WORKSHEET_V3_SOLUTION_SEEN);\n }, [loggerRef]);\n const handleClose = useCallback(() => {\n setActiveSection(() => undefined);\n }, []);\n const handleBadgeToggle = useCallback(() => {\n setShowStickers(prev => !prev);\n }, []);\n\n const { hints, solution } = questions[activeQuestionIndex]?.metadata || {};\n\n const activeSectionData = useMemo(() => {\n return activeSection === undefined ? undefined : activeSection === 'HINT' ? hints : solution;\n }, [activeSection, hints, solution]);\n\n const sqlRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n const hintRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n\n const updatePointerPosition = useCallback((ref: React.RefObject<HTMLDivElement>) => {\n if (ref.current) {\n const rect = ref.current.getBoundingClientRect();\n\n setPointerPosition({\n top: rect.top + rect.height / 2 - 8,\n left: rect.right - 78, // 52px (sidebar width) + 16px (gutter) + 10px\n });\n }\n }, []);\n\n const stickerTrigger = useMemo(\n () => (\n <Clickable label=\"teacher-badges\" onClick={handleBadgeToggle}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\">\n <StickersIcon width={32} height={32} $disabled={!showStickers} />\n <Text $renderAs=\"eyebrow2\" $color={!showStickers ? 'GREY_4' : 'BLACK'}>\n STICKERS\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n ),\n [showStickers, handleBadgeToggle],\n );\n\n const stickerGridConfig = useMemo(\n () => ({\n stickerSize: 48,\n columns: 4,\n gap: 8,\n }),\n [],\n );\n\n const stickerTooltipConfig = useMemo(\n () => ({\n position: 'left' as TPositionProps,\n zIndex: 1000,\n arrowXCoOrdinates: 87.5,\n tooltipXCoOrdinates: '-62.5%',\n }),\n [],\n );\n\n if (activeSection && activeSectionData && learnosity) {\n learnosity.renderMath('mathjax');\n }\n\n useEffect(() => {\n if (activeSection === 'HINT') {\n updatePointerPosition(hintRef);\n } else if (activeSection === 'SOL') {\n updatePointerPosition(sqlRef);\n } else if (!activeSectionData) {\n setActiveSection(undefined);\n }\n }, [activeSection, updatePointerPosition, activeSectionData]);\n\n return (\n <GuideContainer $background=\"WHITE\">\n {enableStickers && handleStickerSend && (\n <StickerSelector\n triggerNode={stickerTrigger}\n onStickerSend={handleStickerSend}\n gridConfig={stickerGridConfig}\n tooltipConfig={stickerTooltipConfig}\n visible={showStickers}\n onToggle={handleBadgeToggle}\n />\n )}\n <Clickable label=\"hints\" onClick={handleHintClick} disabled={!hints}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={hintRef}>\n <HintIcon width={32} height={32} $disabled={!hints} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n HINT\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n <Clickable label=\"solution\" onClick={handleSolClick} disabled={!solution}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={sqlRef}>\n <SolIcon width={32} height={32} $disabled={!solution} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n SOL\n </Text>\n </FlexView>\n </Clickable>\n {activeSection && top && left && <Pointer topValue={top} leftValue={left} />}\n {activeSection && (\n <SectionContainer\n $background=\"WHITE\"\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n $borderRadius={10}\n >\n <Section\n $gutterX={1}\n $gapX={1}\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n >\n <Clickable label=\"close\" onClick={handleClose}>\n <CloseIcon />\n </Clickable>\n <FlexView $gutterX={0.5}>\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection === 'HINT' ? 'HINTS:' : 'SOLUTION:'}\n </Text>\n </FlexView>\n {activeSectionData &&\n activeSectionData.map((item, index) => (\n <FlexView $gutterX={0.5} $gapX={0.5} key={index.toString()}>\n {activeSectionData.length > 1 && (\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection} {index + 1}:\n </Text>\n )}\n <Guide\n dangerouslySetInnerHTML={{\n __html: item,\n }}\n />\n </FlexView>\n ))}\n </Section>\n </SectionContainer>\n )}\n </GuideContainer>\n );\n },\n);\n\nexport default QuestionGuide;\n"],"names":["QuestionGuide","memo","questionWidth","questions","activeQuestionIndex","learnosity","actionbarHeight","loggerRef","enableStickers","handleStickerSend","activeSection","setActiveSection","useState","pointerPosition","setPointerPosition","showStickers","setShowStickers","top","left","handleHintClick","useCallback","EVENTS","handleSolClick","handleClose","handleBadgeToggle","prev","hints","solution","_a","activeSectionData","useMemo","sqlRef","useRef","hintRef","updatePointerPosition","ref","rect","stickerTrigger","jsx","Clickable","jsxs","FlexView","StickersIcon","Text","Separator","stickerGridConfig","stickerTooltipConfig","useEffect","GuideContainer","StickerSelector","HintIcon","SolIcon","Pointer","SectionContainer","Section","CloseIcon","item","index","Guide"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"question-guide.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/question-guide.tsx"],"sourcesContent":["import type { IStickerData } from '../../../stickers/sticker-selector/sticker-selector-types';\nimport type { TPositionProps } from '../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\n\nimport React, { memo, useCallback, useEffect, useMemo, useState, useRef } from 'react';\n\nimport StickerSelector from '../../../stickers/sticker-selector/sticker-selector';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport EVENTS from '../../constants/events';\nimport {\n Section,\n GuideContainer,\n CloseIcon,\n SolIcon,\n HintIcon,\n StickersIcon,\n SectionContainer,\n Guide,\n Pointer,\n} from './worksheet-sidebar-styled';\n\ntype TSections = 'HINT' | 'SOL';\n\ninterface IQuestionGuideProps extends Pick<IWorksheetProps, 'loggerRef'> {\n questionWidth: number;\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n learnosity: ILearnosity;\n actionbarHeight: number;\n enableStickers?: boolean;\n handleStickerSend?: (sticker: IStickerData) => void;\n}\n\nconst QuestionGuide: React.FC<IQuestionGuideProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n actionbarHeight,\n loggerRef,\n enableStickers,\n handleStickerSend,\n }) => {\n const [activeSection, setActiveSection] = useState<TSections | undefined>();\n const [pointerPosition, setPointerPosition] = useState({\n top: 0,\n left: 0,\n });\n const [showStickers, setShowStickers] = useState(false);\n const { top, left } = pointerPosition;\n\n const handleHintClick = useCallback(() => {\n setActiveSection('HINT');\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n }, [loggerRef]);\n const handleSolClick = useCallback(() => {\n setActiveSection('SOL');\n loggerRef.current(EVENTS.WORKSHEET_V3_SOLUTION_SEEN);\n }, [loggerRef]);\n const handleClose = useCallback(() => {\n setActiveSection(() => undefined);\n }, []);\n const handleBadgeToggle = useCallback(() => {\n setShowStickers(prev => !prev);\n }, []);\n\n const { hints, solution } = questions[activeQuestionIndex]?.metadata || {};\n\n const activeSectionData = useMemo(() => {\n return activeSection === undefined ? undefined : activeSection === 'HINT' ? hints : solution;\n }, [activeSection, hints, solution]);\n\n const sqlRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n const hintRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n\n const updatePointerPosition = useCallback((ref: React.RefObject<HTMLDivElement>) => {\n if (ref.current) {\n const rect = ref.current.getBoundingClientRect();\n\n setPointerPosition({\n top: rect.top + rect.height / 2 - 8,\n left: rect.right - 78, // 52px (sidebar width) + 16px (gutter) + 10px\n });\n }\n }, []);\n\n const stickerTrigger = useMemo(\n () => (\n <Clickable label=\"teacher-badges\" onClick={handleBadgeToggle}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\">\n <StickersIcon width={32} height={32} $disabled={!showStickers} />\n <Text $renderAs=\"eyebrow2\" $color={!showStickers ? 'GREY_4' : 'BLACK'}>\n STICKERS\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n ),\n [showStickers, handleBadgeToggle],\n );\n\n const stickerGridConfig = useMemo(\n () => ({\n stickerSize: 48,\n columns: 4,\n gap: 8,\n }),\n [],\n );\n\n const stickerTooltipConfig = useMemo(\n () => ({\n position: 'left' as TPositionProps,\n zIndex: 1000,\n // arrowXCoOrdinates: 87.5,\n // tooltipXCoOrdinates: '-62.5%',\n }),\n [],\n );\n\n if (activeSection && activeSectionData && learnosity) {\n learnosity.renderMath('mathjax');\n }\n\n useEffect(() => {\n if (activeSection === 'HINT') {\n updatePointerPosition(hintRef);\n } else if (activeSection === 'SOL') {\n updatePointerPosition(sqlRef);\n } else if (!activeSectionData) {\n setActiveSection(undefined);\n }\n }, [activeSection, updatePointerPosition, activeSectionData]);\n\n return (\n <GuideContainer $background=\"WHITE\">\n {enableStickers && handleStickerSend && (\n <StickerSelector\n triggerNode={stickerTrigger}\n onStickerSend={handleStickerSend}\n gridConfig={stickerGridConfig}\n tooltipConfig={stickerTooltipConfig}\n visible={showStickers}\n onToggle={handleBadgeToggle}\n />\n )}\n <Clickable label=\"hints\" onClick={handleHintClick} disabled={!hints}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={hintRef}>\n <HintIcon width={32} height={32} $disabled={!hints} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n HINT\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n <Clickable label=\"solution\" onClick={handleSolClick} disabled={!solution}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={sqlRef}>\n <SolIcon width={32} height={32} $disabled={!solution} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n SOL\n </Text>\n </FlexView>\n </Clickable>\n {activeSection && top && left && <Pointer topValue={top} leftValue={left} />}\n {activeSection && (\n <SectionContainer\n $background=\"WHITE\"\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n $borderRadius={10}\n >\n <Section\n $gutterX={1}\n $gapX={1}\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n >\n <Clickable label=\"close\" onClick={handleClose}>\n <CloseIcon />\n </Clickable>\n <FlexView $gutterX={0.5}>\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection === 'HINT' ? 'HINTS:' : 'SOLUTION:'}\n </Text>\n </FlexView>\n {activeSectionData &&\n activeSectionData.map((item, index) => (\n <FlexView $gutterX={0.5} $gapX={0.5} key={index.toString()}>\n {activeSectionData.length > 1 && (\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection} {index + 1}:\n </Text>\n )}\n <Guide\n dangerouslySetInnerHTML={{\n __html: item,\n }}\n />\n </FlexView>\n ))}\n </Section>\n </SectionContainer>\n )}\n </GuideContainer>\n );\n },\n);\n\nexport default QuestionGuide;\n"],"names":["QuestionGuide","memo","questionWidth","questions","activeQuestionIndex","learnosity","actionbarHeight","loggerRef","enableStickers","handleStickerSend","activeSection","setActiveSection","useState","pointerPosition","setPointerPosition","showStickers","setShowStickers","top","left","handleHintClick","useCallback","EVENTS","handleSolClick","handleClose","handleBadgeToggle","prev","hints","solution","_a","activeSectionData","useMemo","sqlRef","useRef","hintRef","updatePointerPosition","ref","rect","stickerTrigger","jsx","Clickable","jsxs","FlexView","StickersIcon","Text","Separator","stickerGridConfig","stickerTooltipConfig","useEffect","GuideContainer","StickerSelector","HintIcon","SolIcon","Pointer","SectionContainer","Section","CloseIcon","item","index","Guide"],"mappings":"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"}
|