@cuemath/leap 3.4.6-m-t → 3.4.7-m

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,41 +1,40 @@
1
1
  import { jsx as e, jsxs as o } from "react/jsx-runtime";
2
- import { memo as q, useState as S, useRef as C, useCallback as s, useMemo as m, useEffect as z } from "react";
2
+ import { memo as q, useState as $, useRef as C, useCallback as s, useMemo as m, useEffect as z } from "react";
3
3
  import { useGetEligibleJourneysViaRoute as D } from "../../../journey/hooks/use-get-eligible-journeys-via-route.js";
4
- import { JOURNEY_ID_TEACHER as F } from "../../../journey/journey-id/journey-id-teacher.js";
5
- import { useJourney as Q } from "../../../journey/use-journey/use-journey.js";
6
- import { useStickersJourney as Z } from "../../../stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js";
7
- import ee from "../../../stickers/sticker-selector/sticker-selector.js";
4
+ import { JOURNEY_ID_TEACHER as Y } from "../../../journey/journey-id/journey-id-teacher.js";
5
+ import { useJourney as F } from "../../../journey/use-journey/use-journey.js";
6
+ import { useStickersJourney as Q } from "../../../stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js";
7
+ import Z from "../../../stickers/sticker-selector/sticker-selector.js";
8
8
  import f from "../../../ui/buttons/clickable/clickable.js";
9
9
  import i from "../../../ui/layout/flex-view.js";
10
- import A from "../../../ui/separator/separator.js";
10
+ import v from "../../../ui/separator/separator.js";
11
11
  import d from "../../../ui/text/text.js";
12
- import G from "../../constants/events.js";
13
- import { StickersIcon as te, GuideContainer as oe, HintIcon as ie, SolIcon as ne, Pointer as re, SectionContainer as ce, Section as le, CloseIcon as se, Guide as de } from "./worksheet-sidebar-styled.js";
12
+ import J from "../../constants/events.js";
13
+ import { StickersIcon as ee, GuideContainer as te, HintIcon as oe, SolIcon as ie, Pointer as ne, SectionContainer as re, Section as ce, CloseIcon as le, Guide as se } from "./worksheet-sidebar-styled.js";
14
14
  const Te = q(
15
15
  ({
16
16
  questionWidth: E,
17
- questions: v,
18
- activeQuestionIndex: Y,
17
+ questions: L,
18
+ activeQuestionIndex: X,
19
19
  learnosity: I,
20
- actionbarHeight: b,
20
+ actionbarHeight: T,
21
21
  loggerRef: a,
22
- studentId: L,
23
- enableStickers: X
22
+ studentClassroomId: b
24
23
  }) => {
25
- var y;
26
- const [t, h] = S(), [J, B] = S({
24
+ var G;
25
+ const [t, h] = $(), [K, B] = $({
27
26
  top: 0,
28
27
  left: 0
29
- }), [u, K] = S(!1), T = C(null), { top: k, left: O } = J, V = s(() => {
30
- h("HINT"), a.current(G.WORKSHEET_V3_HINT_SEEN);
31
- }, [a]), j = s(() => {
32
- h("SOL"), a.current(G.WORKSHEET_V3_SOLUTION_SEEN);
28
+ }), [g, V] = $(!1), k = C(null), { top: R, left: O } = K, j = s(() => {
29
+ h("HINT"), a.current(J.WORKSHEET_V3_HINT_SEEN);
33
30
  }, [a]), x = s(() => {
31
+ h("SOL"), a.current(J.WORKSHEET_V3_SOLUTION_SEEN);
32
+ }, [a]), P = s(() => {
34
33
  h(() => {
35
34
  });
36
35
  }, []), p = s(() => {
37
- K((c) => !c);
38
- }, []), { hints: n, solution: g } = ((y = v[Y]) == null ? void 0 : y.metadata) || {}, r = m(() => t === void 0 ? void 0 : t === "HINT" ? n : g, [t, n, g]), R = C(null), _ = C(null), $ = s((c) => {
36
+ V((c) => !c);
37
+ }, []), { hints: n, solution: u } = ((G = L[X]) == null ? void 0 : G.metadata) || {}, r = m(() => t === void 0 ? void 0 : t === "HINT" ? n : u, [t, n, u]), _ = C(null), N = C(null), S = s((c) => {
39
38
  if (c.current) {
40
39
  const l = c.current.getBoundingClientRect();
41
40
  B({
@@ -44,14 +43,14 @@ const Te = q(
44
43
  // 52px (sidebar width) + 16px (gutter) + 10px
45
44
  });
46
45
  }
47
- }, []), N = m(
48
- () => /* @__PURE__ */ e("div", { ref: T, children: /* @__PURE__ */ e(f, { label: "teacher-badges", onClick: p, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", children: [
49
- /* @__PURE__ */ e(te, { width: 32, height: 32, $disabled: !u }),
50
- /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: u ? "BLACK" : "GREY_4", children: "STICKERS" }),
51
- /* @__PURE__ */ e(i, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(A, { width: 24, height: 1, background: "GREY_2" }) })
46
+ }, []), H = m(
47
+ () => /* @__PURE__ */ e("div", { ref: k, children: /* @__PURE__ */ e(f, { label: "teacher-badges", onClick: p, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", children: [
48
+ /* @__PURE__ */ e(ee, { width: 32, height: 32, $disabled: !g }),
49
+ /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: g ? "BLACK" : "GREY_4", children: "STICKERS" }),
50
+ /* @__PURE__ */ e(i, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(v, { width: 24, height: 1, background: "GREY_2" }) })
52
51
  ] }) }) }),
53
- [u, p]
54
- ), P = m(
52
+ [g, p]
53
+ ), U = m(
55
54
  () => ({
56
55
  stickerSize: 48,
57
56
  columns: 4,
@@ -67,64 +66,64 @@ const Te = q(
67
66
  tooltipYCoOrdinates: "40%"
68
67
  }),
69
68
  []
70
- ), U = {
69
+ ), M = {
71
70
  position: "left",
72
71
  tooltipXCoOrdinates: 20,
73
72
  tooltipYCoOrdinates: -20
74
- }, M = D([
75
- F.STICKERS_INTRO_JOURNEY
76
- ]), { isJourneyActive: H } = Q(), { startTeacherStickersJourney: w } = Z({
77
- triggerRef: T,
78
- triggerElement: N,
79
- tooltipConfig: U
73
+ }, w = D([
74
+ Y.STICKERS_INTRO_JOURNEY
75
+ ]), { isJourneyActive: y } = F(), { startTeacherStickersJourney: A } = Q({
76
+ triggerRef: k,
77
+ triggerElement: H,
78
+ tooltipConfig: M
80
79
  });
81
80
  return t && r && I && I.renderMath("mathjax"), z(() => {
82
- t === "HINT" ? $(_) : t === "SOL" ? $(R) : r || h(void 0), H || w();
81
+ t === "HINT" ? S(N) : t === "SOL" ? S(_) : r || h(void 0), w.includes(Y.STICKERS_INTRO_JOURNEY) && !y && A();
83
82
  }, [
84
83
  t,
85
- $,
84
+ S,
86
85
  r,
87
- M,
88
- H,
89
- w
90
- ]), /* @__PURE__ */ o(oe, { $background: "WHITE", children: [
91
- X && /* @__PURE__ */ e(
92
- ee,
86
+ w,
87
+ y,
88
+ A
89
+ ]), /* @__PURE__ */ o(te, { $background: "WHITE", children: [
90
+ b && /* @__PURE__ */ e(
91
+ Z,
93
92
  {
94
- triggerNode: N,
95
- studentClassroomId: L,
96
- gridConfig: P,
93
+ triggerNode: H,
94
+ studentClassroomId: b,
95
+ gridConfig: U,
97
96
  tooltipConfig: W,
98
- visible: u,
97
+ visible: g,
99
98
  onToggle: p
100
99
  }
101
100
  ),
102
- /* @__PURE__ */ e(f, { label: "hints", onClick: V, disabled: !n, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", ref: _, children: [
103
- /* @__PURE__ */ e(ie, { width: 32, height: 32, $disabled: !n }),
101
+ /* @__PURE__ */ e(f, { label: "hints", onClick: j, disabled: !n, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", ref: N, children: [
102
+ /* @__PURE__ */ e(oe, { width: 32, height: 32, $disabled: !n }),
104
103
  /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "HINT" }),
105
- /* @__PURE__ */ e(i, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(A, { width: 24, height: 1, background: "GREY_2" }) })
104
+ /* @__PURE__ */ e(i, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(v, { width: 24, height: 1, background: "GREY_2" }) })
106
105
  ] }) }),
107
- /* @__PURE__ */ e(f, { label: "solution", onClick: j, disabled: !g, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", ref: R, children: [
108
- /* @__PURE__ */ e(ne, { width: 32, height: 32, $disabled: !g }),
106
+ /* @__PURE__ */ e(f, { label: "solution", onClick: x, disabled: !u, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", ref: _, children: [
107
+ /* @__PURE__ */ e(ie, { width: 32, height: 32, $disabled: !u }),
109
108
  /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "SOL" })
110
109
  ] }) }),
111
- t && k && O && /* @__PURE__ */ e(re, { topValue: k, leftValue: O }),
110
+ t && R && O && /* @__PURE__ */ e(ne, { topValue: R, leftValue: O }),
112
111
  t && /* @__PURE__ */ e(
113
- ce,
112
+ re,
114
113
  {
115
114
  $background: "WHITE",
116
115
  $questionWidth: E,
117
- $actionbarHeight: b,
116
+ $actionbarHeight: T,
118
117
  $borderRadius: 10,
119
118
  children: /* @__PURE__ */ o(
120
- le,
119
+ ce,
121
120
  {
122
121
  $gutterX: 1,
123
122
  $gapX: 1,
124
123
  $questionWidth: E,
125
- $actionbarHeight: b,
124
+ $actionbarHeight: T,
126
125
  children: [
127
- /* @__PURE__ */ e(f, { label: "close", onClick: x, children: /* @__PURE__ */ e(se, {}) }),
126
+ /* @__PURE__ */ e(f, { label: "close", onClick: P, children: /* @__PURE__ */ e(le, {}) }),
128
127
  /* @__PURE__ */ e(i, { $gutterX: 0.5, children: /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: t === "HINT" ? "HINTS:" : "SOLUTION:" }) }),
129
128
  r && r.map((c, l) => /* @__PURE__ */ o(i, { $gutterX: 0.5, $gapX: 0.5, children: [
130
129
  r.length > 1 && /* @__PURE__ */ o(d, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: [
@@ -134,7 +133,7 @@ const Te = q(
134
133
  ":"
135
134
  ] }),
136
135
  /* @__PURE__ */ e(
137
- de,
136
+ se,
138
137
  {
139
138
  dangerouslySetInnerHTML: {
140
139
  __html: c
@@ -1 +1 @@
1
- {"version":3,"file":"question-guide.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/question-guide.tsx"],"sourcesContent":["import React, {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n type ReactElement,\n type RefObject,\n} from 'react';\n\nimport { useGetEligibleJourneysViaRoute } from '../../../journey/hooks/use-get-eligible-journeys-via-route';\nimport { JOURNEY_ID_TEACHER } from '../../../journey/journey-id/journey-id-teacher';\nimport { useJourney } from '../../../journey/use-journey/use-journey';\nimport { useStickersJourney } from '../../../stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey';\nimport StickerSelector from '../../../stickers/sticker-selector/sticker-selector';\nimport {\n type IArrowTooltipProps,\n type TPositionProps,\n} from '../../../ui/arrow-tooltip/arrow-tooltip-types';\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 type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\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 studentId: string;\n enableStickers?: boolean;\n}\n\nconst QuestionGuide: React.FC<IQuestionGuideProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n actionbarHeight,\n loggerRef,\n studentId,\n enableStickers,\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 triggerRef = useRef<HTMLDivElement | null>(null);\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 <div ref={triggerRef}>\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 </div>\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 arrowYCoOrdinates: -175,\n tooltipXCoOrdinates: '7.5%',\n tooltipYCoOrdinates: '40%',\n }),\n [],\n );\n\n const coachmarkConfig = {\n position: 'left',\n tooltipXCoOrdinates: 20,\n tooltipYCoOrdinates: -20,\n };\n\n const eligibleJourneyIds = useGetEligibleJourneysViaRoute([\n JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY,\n ]);\n\n const { isJourneyActive } = useJourney();\n\n const { startTeacherStickersJourney } = useStickersJourney({\n triggerRef: triggerRef as RefObject<HTMLDivElement>,\n triggerElement: stickerTrigger as ReactElement,\n tooltipConfig: coachmarkConfig as IArrowTooltipProps,\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\n if (\n // eligibleJourneyIds.includes(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY) &&\n !isJourneyActive\n ) {\n startTeacherStickersJourney();\n }\n }, [\n activeSection,\n updatePointerPosition,\n activeSectionData,\n eligibleJourneyIds,\n isJourneyActive,\n startTeacherStickersJourney,\n ]);\n\n return (\n <GuideContainer $background=\"WHITE\">\n {enableStickers && (\n <StickerSelector\n triggerNode={stickerTrigger}\n studentClassroomId={studentId}\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","studentId","enableStickers","activeSection","setActiveSection","useState","pointerPosition","setPointerPosition","showStickers","setShowStickers","triggerRef","useRef","top","left","handleHintClick","useCallback","EVENTS","handleSolClick","handleClose","handleBadgeToggle","prev","hints","solution","_a","activeSectionData","useMemo","sqlRef","hintRef","updatePointerPosition","ref","rect","stickerTrigger","jsx","Clickable","jsxs","FlexView","StickersIcon","Text","Separator","stickerGridConfig","stickerTooltipConfig","coachmarkConfig","eligibleJourneyIds","useGetEligibleJourneysViaRoute","JOURNEY_ID_TEACHER","isJourneyActive","useJourney","startTeacherStickersJourney","useStickersJourney","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 React, {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n type ReactElement,\n type RefObject,\n} from 'react';\n\nimport { useGetEligibleJourneysViaRoute } from '../../../journey/hooks/use-get-eligible-journeys-via-route';\nimport { JOURNEY_ID_TEACHER } from '../../../journey/journey-id/journey-id-teacher';\nimport { useJourney } from '../../../journey/use-journey/use-journey';\nimport { useStickersJourney } from '../../../stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey';\nimport StickerSelector from '../../../stickers/sticker-selector/sticker-selector';\nimport {\n type IArrowTooltipProps,\n type TPositionProps,\n} from '../../../ui/arrow-tooltip/arrow-tooltip-types';\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 type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\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 studentClassroomId?: string;\n}\n\nconst QuestionGuide: React.FC<IQuestionGuideProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n actionbarHeight,\n loggerRef,\n studentClassroomId,\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 triggerRef = useRef<HTMLDivElement | null>(null);\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 <div ref={triggerRef}>\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 </div>\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 arrowYCoOrdinates: -175,\n tooltipXCoOrdinates: '7.5%',\n tooltipYCoOrdinates: '40%',\n }),\n [],\n );\n\n const coachmarkConfig = {\n position: 'left',\n tooltipXCoOrdinates: 20,\n tooltipYCoOrdinates: -20,\n };\n\n const eligibleJourneyIds = useGetEligibleJourneysViaRoute([\n JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY,\n ]);\n\n const { isJourneyActive } = useJourney();\n\n const { startTeacherStickersJourney } = useStickersJourney({\n triggerRef: triggerRef as RefObject<HTMLDivElement>,\n triggerElement: stickerTrigger as ReactElement,\n tooltipConfig: coachmarkConfig as IArrowTooltipProps,\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\n if (\n eligibleJourneyIds.includes(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY) &&\n !isJourneyActive\n ) {\n startTeacherStickersJourney();\n }\n }, [\n activeSection,\n updatePointerPosition,\n activeSectionData,\n eligibleJourneyIds,\n isJourneyActive,\n startTeacherStickersJourney,\n ]);\n\n return (\n <GuideContainer $background=\"WHITE\">\n {studentClassroomId && (\n <StickerSelector\n triggerNode={stickerTrigger}\n studentClassroomId={studentClassroomId}\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","studentClassroomId","activeSection","setActiveSection","useState","pointerPosition","setPointerPosition","showStickers","setShowStickers","triggerRef","useRef","top","left","handleHintClick","useCallback","EVENTS","handleSolClick","handleClose","handleBadgeToggle","prev","hints","solution","_a","activeSectionData","useMemo","sqlRef","hintRef","updatePointerPosition","ref","rect","stickerTrigger","jsx","Clickable","jsxs","FlexView","StickersIcon","Text","Separator","stickerGridConfig","stickerTooltipConfig","coachmarkConfig","eligibleJourneyIds","useGetEligibleJourneysViaRoute","JOURNEY_ID_TEACHER","isJourneyActive","useJourney","startTeacherStickersJourney","useStickersJourney","useEffect","GuideContainer","StickerSelector","HintIcon","SolIcon","Pointer","SectionContainer","Section","CloseIcon","item","index","Guide"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
- import { memo as C, useCallback as g } from "react";
3
- import u from "../../../ui/layout/flex-view.js";
4
- import w from "../../../ui/separator/separator.js";
2
+ import { memo as x, useCallback as C } from "react";
3
+ import g from "../../../ui/layout/flex-view.js";
4
+ import u from "../../../ui/separator/separator.js";
5
5
  import { SIDEBAR_WIDTH as f } from "../constants.js";
6
- import S from "./navigator.js";
7
- import T from "./question-guide.js";
8
- import { SideBarContainer as j, UnderlinedTextWrapper as k, UnderlinedText as A } from "./worksheet-sidebar-styled.js";
9
- const X = C(
6
+ import w from "./navigator.js";
7
+ import S from "./question-guide.js";
8
+ import { SideBarContainer as T, UnderlinedTextWrapper as j, UnderlinedText as k } from "./worksheet-sidebar-styled.js";
9
+ const U = x(
10
10
  ({
11
11
  questionWidth: t,
12
12
  questions: i,
@@ -17,24 +17,23 @@ const X = C(
17
17
  actionbarHeight: s,
18
18
  openQuestionFeedbackModal: e,
19
19
  loggerRef: h,
20
- studentId: p,
21
- enableStickers: d
20
+ studentClassroomId: p
22
21
  }) => {
23
- const $ = i[m], { item_reference: o } = $ ?? {}, x = g(() => {
22
+ const d = i[m], { item_reference: o } = d ?? {}, $ = C(() => {
24
23
  e && e(o || "");
25
24
  }, [o, e]);
26
25
  return c !== "TEACHER" || !e ? null : /* @__PURE__ */ n(
27
- j,
26
+ T,
28
27
  {
29
28
  $width: f,
30
29
  $questionWidth: t,
31
30
  $height: l,
32
31
  $justifyContent: "space-between",
33
32
  children: [
34
- /* @__PURE__ */ r(k, { $width: f, $alignItems: "flex-start", $gapX: 0.5, children: /* @__PURE__ */ r(A, { $renderAs: "cta1", onClick: x, children: "Question Feedback" }) }),
35
- /* @__PURE__ */ n(u, { children: [
33
+ /* @__PURE__ */ r(j, { $width: f, $alignItems: "flex-start", $gapX: 0.5, children: /* @__PURE__ */ r(k, { $renderAs: "cta1", onClick: $, children: "Question Feedback" }) }),
34
+ /* @__PURE__ */ n(g, { children: [
36
35
  /* @__PURE__ */ r(
37
- T,
36
+ S,
38
37
  {
39
38
  questionWidth: t,
40
39
  questions: i,
@@ -42,12 +41,11 @@ const X = C(
42
41
  learnosity: a,
43
42
  actionbarHeight: s,
44
43
  loggerRef: h,
45
- studentId: p,
46
- enableStickers: d
44
+ studentClassroomId: p
47
45
  }
48
46
  ),
49
- /* @__PURE__ */ r(w, { heightX: 0.5 }),
50
- /* @__PURE__ */ r(S, {})
47
+ /* @__PURE__ */ r(u, { heightX: 0.5 }),
48
+ /* @__PURE__ */ r(w, {})
51
49
  ] })
52
50
  ]
53
51
  }
@@ -55,6 +53,6 @@ const X = C(
55
53
  }
56
54
  );
57
55
  export {
58
- X as default
56
+ U as default
59
57
  };
60
58
  //# sourceMappingURL=sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/sidebar.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport type { TUserTypes } from '../../../ui/types';\nimport { SIDEBAR_WIDTH } from '../constants';\nimport type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\nimport Navigator from './navigator';\nimport QuestionGuide from './question-guide';\nimport {\n SideBarContainer,\n UnderlinedText,\n UnderlinedTextWrapper,\n} from './worksheet-sidebar-styled';\n\ninterface IWorksheetSideBarProps extends Pick<IWorksheetProps, 'loggerRef'> {\n questionWidth: number;\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n learnosity: ILearnosity;\n userType: TUserTypes;\n height: number | string;\n actionbarHeight: number;\n studentId: string;\n enableStickers: boolean;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n}\n\nconst WorksheetSideBar: FC<IWorksheetSideBarProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n userType,\n height,\n actionbarHeight,\n openQuestionFeedbackModal,\n loggerRef,\n studentId,\n enableStickers,\n }) => {\n const activeQuestion = questions[activeQuestionIndex];\n const { item_reference: itemRef } = activeQuestion ?? {};\n\n const onFeedbackClick = useCallback(() => {\n if (openQuestionFeedbackModal) {\n openQuestionFeedbackModal(itemRef || '');\n }\n }, [itemRef, openQuestionFeedbackModal]);\n\n if (userType !== 'TEACHER' || !openQuestionFeedbackModal) return null;\n\n return (\n <SideBarContainer\n $width={SIDEBAR_WIDTH}\n $questionWidth={questionWidth}\n $height={height}\n $justifyContent=\"space-between\"\n >\n <UnderlinedTextWrapper $width={SIDEBAR_WIDTH} $alignItems=\"flex-start\" $gapX={0.5}>\n <UnderlinedText $renderAs=\"cta1\" onClick={onFeedbackClick}>\n Question Feedback\n </UnderlinedText>\n </UnderlinedTextWrapper>\n\n <FlexView>\n <QuestionGuide\n questionWidth={questionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n actionbarHeight={actionbarHeight}\n loggerRef={loggerRef}\n studentId={studentId}\n enableStickers={enableStickers}\n />\n <Separator heightX={0.5} />\n <Navigator />\n </FlexView>\n </SideBarContainer>\n );\n },\n);\n\nexport default WorksheetSideBar;\n"],"names":["WorksheetSideBar","memo","questionWidth","questions","activeQuestionIndex","learnosity","userType","height","actionbarHeight","openQuestionFeedbackModal","loggerRef","studentId","enableStickers","activeQuestion","itemRef","onFeedbackClick","useCallback","jsxs","SideBarContainer","SIDEBAR_WIDTH","jsx","UnderlinedTextWrapper","UnderlinedText","FlexView","QuestionGuide","Separator","Navigator"],"mappings":";;;;;;;;AA4BA,MAAMA,IAA+CC;AAAA,EACnD,CAAC;AAAA,IACC,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,MACI;AACE,UAAAC,IAAiBV,EAAUC,CAAmB,GAC9C,EAAE,gBAAgBU,MAAYD,KAAkB,CAAA,GAEhDE,IAAkBC,EAAY,MAAM;AACxC,MAAIP,KACFA,EAA0BK,KAAW,EAAE;AAAA,IACzC,GACC,CAACA,GAASL,CAAyB,CAAC;AAEvC,WAAIH,MAAa,aAAa,CAACG,IAAkC,OAG/D,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,QAAQC;AAAA,QACR,gBAAgBjB;AAAA,QAChB,SAASK;AAAA,QACT,iBAAgB;AAAA,QAEhB,UAAA;AAAA,UAAA,gBAAAa,EAACC,GAAsB,EAAA,QAAQF,GAAe,aAAY,cAAa,OAAO,KAC5E,UAAC,gBAAAC,EAAAE,GAAA,EAAe,WAAU,QAAO,SAASP,GAAiB,8BAE3D,CAAA,GACF;AAAA,4BAECQ,GACC,EAAA,UAAA;AAAA,YAAA,gBAAAH;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,eAAAtB;AAAA,gBACA,WAAAC;AAAA,gBACA,qBAAAC;AAAA,gBACA,YAAAC;AAAA,gBACA,iBAAAG;AAAA,gBACA,WAAAE;AAAA,gBACA,WAAAC;AAAA,gBACA,gBAAAC;AAAA,cAAA;AAAA,YACF;AAAA,YACA,gBAAAQ,EAACK,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,8BACxBC,GAAU,EAAA;AAAA,UAAA,GACb;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
1
+ {"version":3,"file":"sidebar.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/sidebar.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport type { TUserTypes } from '../../../ui/types';\nimport { SIDEBAR_WIDTH } from '../constants';\nimport type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\nimport Navigator from './navigator';\nimport QuestionGuide from './question-guide';\nimport {\n SideBarContainer,\n UnderlinedText,\n UnderlinedTextWrapper,\n} from './worksheet-sidebar-styled';\n\ninterface IWorksheetSideBarProps extends Pick<IWorksheetProps, 'loggerRef'> {\n questionWidth: number;\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n learnosity: ILearnosity;\n userType: TUserTypes;\n height: number | string;\n actionbarHeight: number;\n studentClassroomId?: string;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n}\n\nconst WorksheetSideBar: FC<IWorksheetSideBarProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n userType,\n height,\n actionbarHeight,\n openQuestionFeedbackModal,\n loggerRef,\n studentClassroomId,\n }) => {\n const activeQuestion = questions[activeQuestionIndex];\n const { item_reference: itemRef } = activeQuestion ?? {};\n\n const onFeedbackClick = useCallback(() => {\n if (openQuestionFeedbackModal) {\n openQuestionFeedbackModal(itemRef || '');\n }\n }, [itemRef, openQuestionFeedbackModal]);\n\n if (userType !== 'TEACHER' || !openQuestionFeedbackModal) return null;\n\n return (\n <SideBarContainer\n $width={SIDEBAR_WIDTH}\n $questionWidth={questionWidth}\n $height={height}\n $justifyContent=\"space-between\"\n >\n <UnderlinedTextWrapper $width={SIDEBAR_WIDTH} $alignItems=\"flex-start\" $gapX={0.5}>\n <UnderlinedText $renderAs=\"cta1\" onClick={onFeedbackClick}>\n Question Feedback\n </UnderlinedText>\n </UnderlinedTextWrapper>\n\n <FlexView>\n <QuestionGuide\n questionWidth={questionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n actionbarHeight={actionbarHeight}\n loggerRef={loggerRef}\n studentClassroomId={studentClassroomId}\n />\n <Separator heightX={0.5} />\n <Navigator />\n </FlexView>\n </SideBarContainer>\n );\n },\n);\n\nexport default WorksheetSideBar;\n"],"names":["WorksheetSideBar","memo","questionWidth","questions","activeQuestionIndex","learnosity","userType","height","actionbarHeight","openQuestionFeedbackModal","loggerRef","studentClassroomId","activeQuestion","itemRef","onFeedbackClick","useCallback","jsxs","SideBarContainer","SIDEBAR_WIDTH","jsx","UnderlinedTextWrapper","UnderlinedText","FlexView","QuestionGuide","Separator","Navigator"],"mappings":";;;;;;;;AA2BA,MAAMA,IAA+CC;AAAA,EACnD,CAAC;AAAA,IACC,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,WAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,MACI;AACE,UAAAC,IAAiBT,EAAUC,CAAmB,GAC9C,EAAE,gBAAgBS,MAAYD,KAAkB,CAAA,GAEhDE,IAAkBC,EAAY,MAAM;AACxC,MAAIN,KACFA,EAA0BI,KAAW,EAAE;AAAA,IACzC,GACC,CAACA,GAASJ,CAAyB,CAAC;AAEvC,WAAIH,MAAa,aAAa,CAACG,IAAkC,OAG/D,gBAAAO;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,QAAQC;AAAA,QACR,gBAAgBhB;AAAA,QAChB,SAASK;AAAA,QACT,iBAAgB;AAAA,QAEhB,UAAA;AAAA,UAAA,gBAAAY,EAACC,GAAsB,EAAA,QAAQF,GAAe,aAAY,cAAa,OAAO,KAC5E,UAAC,gBAAAC,EAAAE,GAAA,EAAe,WAAU,QAAO,SAASP,GAAiB,8BAE3D,CAAA,GACF;AAAA,4BAECQ,GACC,EAAA,UAAA;AAAA,YAAA,gBAAAH;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,eAAArB;AAAA,gBACA,WAAAC;AAAA,gBACA,qBAAAC;AAAA,gBACA,YAAAC;AAAA,gBACA,iBAAAG;AAAA,gBACA,WAAAE;AAAA,gBACA,oBAAAC;AAAA,cAAA;AAAA,YACF;AAAA,YACA,gBAAAQ,EAACK,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,8BACxBC,GAAU,EAAA;AAAA,UAAA,GACb;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-types.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-types.ts"],"sourcesContent":["import type { MutableRefObject, ReactElement } from 'react';\n\nimport type { TNodeTypes } from '../../../types/models/worksheet';\nimport type { IActionData, TPublish, TSubscribe } from '../../cue-canvas/types/cue-canvas';\nimport type { TPublishMouseMove, TSubscribeMouseMove } from '../../pointer-sync/pointer-types';\nimport type { TColorNames, THueNames, TUserTypes } from '../../ui/types';\nimport type { IFile } from './worksheet-question/subjective-review';\n\nexport enum QUESTION_TAGS {\n TRIAL_TOPIC = 'trial-topic',\n QUESTION_CODE = 'question code',\n}\n\nexport enum QUESTIONS_RATING {\n E = 3,\n S = 2, // Just right\n H = 1,\n}\n\nexport interface ILearnosityError {\n code: number;\n consumerKey: string;\n detail: string;\n errorUI: string;\n msg: string;\n}\n\ninterface ILearnosityQuestionMetadata {\n widget_reference: string;\n sheet_reference: string;\n hints?: string[];\n solution?: string[];\n teacher_tips?: string[];\n valid_response_count: number;\n source: {\n organisation_id: number;\n };\n}\n\nexport type TInstructorStimulus =\n | 'SystemIntro' // lesson v3\n | 'Intro' // lesson v3\n | 'Concept-Intro' // lesson v3\n | 'Instruction' // lesson v3\n | 'Task' // lesson v3\n | 'Try' // trial v3\n | 'Learn' // trial v3\n | 'Apply'; // trial v3\nexport type TItemType =\n | 'overview'\n | 'learning-we-do'\n | 'learning-your-turn'\n | 'learning-explore'\n | 'practice-basic'\n | 'practice-basic-optional'\n | 'practice-regular'\n | 'practice-regular-optional'\n | 'exit-ticket'\n | 'advanced-we-do'\n | 'advanced-your-turn'\n | 'advanced-explore'\n | 'advanced-practice';\n\nexport type TSectionName =\n | 'overview'\n | 'learning'\n | 'practice-basic'\n | 'practice-regular'\n | 'exit-ticket'\n | 'advanced';\n\nexport interface IQuestionValidResponse {\n score: number;\n value: unknown[];\n}\n\nexport interface ISheetNudgeBannerInfo {\n bannerBackgroundColor: TColorNames;\n label: string;\n}\n\nexport interface ILearnosityQuestion {\n response_id: string;\n instructor_stimulus?: TInstructorStimulus;\n metadata: ILearnosityQuestionMetadata;\n instant_feedback?: boolean;\n math_renderer?: string;\n template?: string;\n tokenization?: string;\n numberPad?: string[];\n symbols?: unknown[];\n response_container?: Record<string, unknown>;\n ui_style?: Record<string, unknown>;\n shuffle_options?: boolean;\n // for custom type question validation is undefined.\n validation?: {\n scoring_type?: string;\n unscored?: boolean;\n valid_response?: IQuestionValidResponse;\n alt_responses?: IQuestionValidResponse[];\n penalty?: number;\n min_score_if_attempted?: number;\n };\n is_math?: boolean;\n labels?: Record<string, unknown>;\n line?: Record<string, unknown>;\n points?: string[];\n snap_to_ticks?: boolean;\n ticks?: Record<string, unknown>;\n max_length?: number;\n type:\n | 'hotspot'\n | 'tokenhighlight'\n | 'numberline'\n | 'clozeassociation'\n | 'clozetext'\n | 'association'\n | 'classification'\n | 'clozedropdown'\n | 'clozeformula'\n | 'mcq'\n | 'choicematrix'\n | 'plaintext'\n | 'drawing';\n case_sensitive?: boolean;\n show_copy?: boolean;\n show_cut?: boolean;\n show_paste?: boolean;\n spellcheck?: boolean;\n stimulus?: string;\n stimulus_review?: string;\n stimulus_list?: string[];\n image?: Record<string, unknown>;\n areas?: unknown[];\n area_attributes?: Record<string, unknown>;\n possible_responses?: string[][] | string[];\n duplicate_responses?: boolean;\n response_containers?: unknown[];\n options?: Record<string, unknown>[] | string[];\n feedback_attempts?: number;\n stems?: string[];\n multiple_responses?: boolean;\n}\n\nexport interface ILearnosityItem {\n reference: string;\n questions: ILearnosityQuestion[];\n source: Record<string, unknown>;\n content: string;\n metadata: Record<string, unknown> | unknown[];\n workflow: unknown[];\n response_ids: string[];\n feature_ids: unknown[];\n features: unknown[];\n itemType?: TItemType;\n tags?: string[];\n}\n\nexport interface IWorksheetQuestion extends ILearnosityQuestion {\n item_reference: string;\n item_type?: TItemType;\n section_name?: TSectionName;\n is_optional?: boolean;\n item_tags: string[];\n item_tags_map: Record<string, string>;\n item_number: number;\n item_display_number: number;\n question_number: number;\n total_questions: number;\n}\n\nexport interface ILearnosityQuestionScore {\n score?: number | null;\n max_score: number;\n unscored?: boolean;\n}\n\nexport interface ILearnosityQuestionResponse {\n value: unknown;\n responses?: unknown;\n type: unknown;\n updatedFormat?: boolean;\n wordCount?: number;\n apiVersion: string;\n revision: number;\n feedbackAttemptsCount?: number;\n}\n\nexport interface IAttempt {\n response: ILearnosityQuestionResponse;\n score: ILearnosityQuestionScore;\n}\n\ninterface ITeacherReview {\n reviewComment?: string;\n images?: string[];\n}\nexport interface IWorksheetResponse {\n widgetReference: string;\n itemReference: string;\n itemPosition: number; // 0 based\n questionPosition: number; // 0 based\n isOkayTypeQuestion: boolean;\n response?: ILearnosityQuestionResponse;\n simState?: Record<string, unknown>;\n score?: ILearnosityQuestionScore;\n responseEdited?: boolean;\n hintsUsed?: number;\n markedForReview?: boolean;\n attemptsHistory?: IAttempt[];\n validatedByTeacher?: boolean;\n submittedByStudent?: boolean;\n assignStatus?: 'assigned' | 'skipped';\n rating?: number;\n skipped?: boolean;\n doubtResolved?: boolean;\n teacherReview?: ITeacherReview;\n tags?: Record<string, string>;\n timeSpent?: number;\n}\n\ntype TMathRenderer = 'mathjax' | 'mathquill';\nexport interface ILearnosity {\n ready: () => void;\n questions: () => Record<string, unknown>;\n question: (responseId: string) =>\n | {\n enable: () => boolean;\n disable: () => boolean;\n getQuestion: () => ILearnosityQuestion;\n getMetadata: () => ILearnosityQuestionMetadata;\n getResponse: () => ILearnosityQuestionResponse;\n getScore: (\n callback?: (score: ILearnosityQuestionScore | null) => void,\n ) => ILearnosityQuestionScore;\n validate: (\n options?: { showCorrectAnswers?: boolean; feedbackAttempts?: boolean },\n callback?: () => void,\n ) => void;\n resetValidationUI: () => void;\n on: (eventName: 'changed', callback: () => void) => void;\n off: (eventName: 'changed', callback?: () => void) => void;\n }\n | undefined;\n append: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n appendQuestion: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n reset: () => void;\n renderMath: (renderer: TMathRenderer) => void;\n}\n\nexport interface IWorksheetBehavior {\n /**\n * If true, Opens the worksheet in resume mode.\n * - If false, Opens the worksheet in review mode.\n */\n canAttempt: boolean;\n /**\n * If true, the user can mark the question for review.\n */\n canMarkForReview: boolean;\n /**\n * The mode of navigation for the worksheet.\n * - `OPEN` mode allows the user to navigate to any question in the worksheet.\n * - `LINEAR` mode allows the user to navigate to the next question only.\n * - `ADAPTIVE` mode allows the user to navigate future questions based on the rating of the current question.\n * - `CURRENT` mode allows the user to navigate to the current question only. Back and forth not allowed.\n */\n navigationMode: 'OPEN' | 'LINEAR' | 'ADAPTIVE' | 'CURRENT';\n /**\n * The initial question to display when the worksheet is loaded.\n * - `FIRST` mode displays the first question in the worksheet.\n * - `CURRENT` mode displays the question that the user was last on.\n */\n initialQuestion: 'FIRST' | 'CURRENT';\n /**\n * If hints are available, on clicking the help button, first availble hint will be shown.\n * Clicking again will show the next hint.\n * If no more hints are available, onHelp will be called.\n */\n hints: boolean;\n /**\n * The time in seconds after which the hints button will be shown.\n */\n hintsTimer?: number; // in seconds\n /**\n * If true, the user can skip the question without attempting it.\n * Skip button will be shown only after the hints are exausted and skipTimer is reached.\n */\n skippable?: boolean;\n /**\n * The time in seconds after which the user can skip the question.\n */\n skippableTime?: number; // in seconds\n /**\n * If true, teacher validation is needed for the question to proceed\n */\n teacherValidationEnabled: boolean;\n /**\n * If worksheet is attempting outside the class setting\n * This needs teacherValidationEnabled to be true\n * TODO-ANTIL: Accept only validation which can be 'system' or 'teacher' or undefined\n */\n canTeacherValidate: boolean;\n /**\n * If true, questions will be validated and feedback will be shown.\n */\n validation: boolean;\n /**\n * If true, solution wont be shown to the user.\n */\n solutionHidden?: boolean;\n /**\n * If true, questions will be validated and feedback will be shown along with the correct answer.\n */\n review: boolean;\n /**\n * The maximum number of attempts allowed for each question.\n * 0 means unlimited attempts.\n * -1 means attempts will not be validated, hence not pushed to attempt history.\n * -2 means the sheet is a puzzle sheet\n * After reaching the maximum number of attempts, the user cannot attempt the question anymore.\n * If maxAtttmpts reached and canExceedAttempts is true, the user can still attempt the question\n * , also user will have the option to move to next question\n */\n maximumAttempts: number;\n /**\n * If true, the user can exceed the maximum number of attempts.\n */\n canExceedAttempts: boolean;\n /**\n * If the worksheet minimumAccuracy is not met, on clicking the final submit button, onMinimumAccuracyNotMet will be called.\n */\n minimumAccuracy: number;\n /**\n * Label for the check button\n * For example,\n * - \"Check\" for Checking the answer\n * - \"Submit\" for Submitting the answer when doing assessment\n */\n checkButtonLabel: string;\n /**\n * If attempt is incorrect, we show retry button, this is the label for the retry button\n * For example,\n * - 'Try Again' for retrying the question\n */\n retryButtonLabel: string;\n /**\n * If true show demos calculator https://www.desmos.com/calculator\n */\n canShowDesmosCalc: boolean;\n\n // If true, canvas is enabled and user can use canvas to scribble on the worksheet by toggling the scribble button\n canvasEnabled?: boolean;\n\n // If true, the user can scribble on workheet\n canScribble?: boolean;\n /**\n * If true displays option to send stickers in worksheet sidebar.\n */\n enableStickers?: boolean;\n}\n\nexport type TWORKSHHET_QUESTION_MEDIA_TYPE = 'SIMULATION' | 'VIDEO' | 'AUDIO';\n\nexport interface IWorksheetCallbackProps {\n onResponseChange?: (options: {\n responseId: string;\n response: IWorksheetResponse;\n isNewAttempt: boolean;\n question: IWorksheetQuestion;\n }) => void;\n onBulkResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onMediaStateChange?: (\n question: IWorksheetQuestion,\n mediaType: TWORKSHHET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n onTeacherValidation?: (questionId: string, rating?: keyof typeof QUESTIONS_RATING) => void;\n onOptionalItemAssignment?: (itemType: TItemType) => void;\n onOptionalItemSkip?: (itemType: TItemType) => void;\n onHelp?: (options: { questionId: string; questionNumber: string }) => void;\n onMinimumAccuracyNotMet?: (accuracy: number) => void;\n onExitTicketStart?: () => void;\n onExitTicketSubmit?: () => void;\n onSubmit?: (responses: Record<string, IWorksheetResponse>) => void;\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;\n}\n\nexport interface ICueCanvasCallbackProps {\n onPublishStrokes?: TPublish;\n onReceiveStrokes?: TSubscribe;\n}\n\nexport interface ICueCanvasProps {\n initialStrokesData?: Record<string, IActionData[]>;\n}\n\nexport interface IPointerSyncCallbackProps {\n onPublishMouseMove?: TPublishMouseMove;\n onSubscribeMouseMove?: TSubscribeMouseMove;\n}\n\nexport interface IWorksheetLayout {\n containerStyle: 'none' | 'card';\n navigationBar: 'none' | 'top' | 'bottom';\n actionBar: 'none' | 'bottom';\n containerWidth: string;\n topOffset: number; // Offset from the top of the screen, for eg: height of the header\n questionsScrollable: boolean;\n minQuestionHeight: string | number;\n minSummaryHeight: string | number;\n renderSideBar: boolean;\n showUserPointer?: boolean;\n renderQuestionHeader?: boolean;\n imageHue?: THueNames;\n background?: 'none' | 'paper';\n questionPadding: number;\n}\n\nexport interface ISubjectiveSheetProps {\n onAddReviewComment?: (\n responseId: string,\n commentData: {\n score: ILearnosityQuestionScore;\n teacherReview: ITeacherReview;\n },\n ) => void;\n openImagesReviewModal?: (props: IOpenImageReviewModalProps) => void;\n handleReviewSubmit?: () => void;\n isSubmittingReview?: boolean;\n isReviewPending?: boolean;\n}\n\ninterface IBaseWorksheetProps {\n userType: TUserTypes;\n userId: string;\n studentId: string;\n studentName?: string;\n worksheetName: string;\n layout: IWorksheetLayout;\n behavior: IWorksheetBehavior;\n initialResponseId?: string;\n initialItemIndex?: number;\n updatedResponses?: Record<string, IWorksheetResponse>;\n worksheetCompleted: boolean;\n showNudgeBanner?: boolean;\n markedAsCompleted?: boolean;\n onResolveDoubt?: (responseId: string) => void;\n onActiveQuestionChange?: (question: IWorksheetQuestion) => void;\n canResolveDoubt?: boolean;\n onSkip?: (itemIndex: number, widgetIndex: number) => void;\n canShowActionBar?: boolean;\n actionBarRightElement?: ReactElement; // Extra Elements to be rendered in the action bar\n}\n\nexport interface IWorksheetProps\n extends IBaseWorksheetProps,\n IWorksheetCallbackProps,\n ICueCanvasProps,\n ICueCanvasCallbackProps,\n IPointerSyncCallbackProps {\n learnosityActivityRef?: string;\n learnosityItems: ILearnosityItem[];\n learnosityResponses?: Record<string, IWorksheetResponse>;\n learnosity: ILearnosity;\n appendedQuestionIds: string[];\n questionsSignedRequest: string;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n summaryDescription?: ReactElement | null;\n canSubmitWorksheet?: boolean;\n studentId: string;\n attemptId?: string;\n subjectiveProps?: ISubjectiveSheetProps;\n}\n\nexport interface IUpdateImages {\n filteredImages: string[];\n newImages: IFile[];\n}\nexport interface IOpenImageReviewModalProps {\n isReviewed?: boolean;\n disableScoreForm?: boolean;\n imageUrls?: string[];\n filteredImageUrls?: (props: IUpdateImages) => void;\n uploadedImages?: (IFile | string)[];\n image?: string;\n}\n\nexport interface IWorksheetContainerProps\n extends Omit<IBaseWorksheetProps, 'behavior'>,\n IWorksheetCallbackProps,\n ICueCanvasProps,\n ICueCanvasCallbackProps,\n IPointerSyncCallbackProps {\n studentId: string;\n attemptId?: string;\n itemsSignedRequest: string;\n questionsSignedRequest: string;\n onLoaded: () => void;\n onErrored: (error: { code?: number; message: string }) => void;\n onResponsesLoaded?: (responses: Record<string, IWorksheetResponse>) => void;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n summaryDescription?: ReactElement | null;\n canSubmitWorksheet?: boolean;\n subjectiveProps?: ISubjectiveSheetProps;\n inClass?: boolean; // If true, the worksheet is rendered inside class\n isLessonV3Enabled?: boolean; // If true, the worksheet is rendered in lesson v3 mode\n isDesmosEnabled?: boolean; // If true, the worksheet can show desmos calculator\n nodeType: TNodeTypes; // NodeType of the worksheet\n mode: 'resume' | 'review' | 'preview'; // mode of the worksheet\n}\n\nexport interface IWorksheetRef {\n validateQuestion: (\n responseId: string,\n rating?: keyof typeof QUESTIONS_RATING,\n skipRemainingQuestions?: boolean,\n ) => void;\n assignOptionalItems: (itemType: TItemType) => void;\n skipOptionalItems: (itemType: TItemType) => void;\n updateMediaState: (\n responseId: string,\n mediaType: TWORKSHHET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n}\n\ninterface IWorksheetHeaderLayoutArgs {\n isPuzzleWorksheet?: boolean;\n isTestWorksheet?: boolean;\n imageHue?: THueNames;\n}\n\nexport interface IWorksheetHeaderLayoutProps {\n (args: IWorksheetHeaderLayoutArgs): {\n bgColor: TColorNames;\n borderColor?: TColorNames;\n textColor?: TColorNames;\n };\n}\n"],"names":["QUESTION_TAGS","QUESTIONS_RATING"],"mappings":"AAQY,IAAAA,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,gBAAgB,iBAFNA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KAHUA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"worksheet-types.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-types.ts"],"sourcesContent":["import type { MutableRefObject, ReactElement } from 'react';\n\nimport type { TNodeTypes } from '../../../types/models/worksheet';\nimport type { IActionData, TPublish, TSubscribe } from '../../cue-canvas/types/cue-canvas';\nimport type { TPublishMouseMove, TSubscribeMouseMove } from '../../pointer-sync/pointer-types';\nimport type { TColorNames, THueNames, TUserTypes } from '../../ui/types';\nimport type { IFile } from './worksheet-question/subjective-review';\n\nexport enum QUESTION_TAGS {\n TRIAL_TOPIC = 'trial-topic',\n QUESTION_CODE = 'question code',\n}\n\nexport enum QUESTIONS_RATING {\n E = 3,\n S = 2, // Just right\n H = 1,\n}\n\nexport interface ILearnosityError {\n code: number;\n consumerKey: string;\n detail: string;\n errorUI: string;\n msg: string;\n}\n\ninterface ILearnosityQuestionMetadata {\n widget_reference: string;\n sheet_reference: string;\n hints?: string[];\n solution?: string[];\n teacher_tips?: string[];\n valid_response_count: number;\n source: {\n organisation_id: number;\n };\n}\n\nexport type TInstructorStimulus =\n | 'SystemIntro' // lesson v3\n | 'Intro' // lesson v3\n | 'Concept-Intro' // lesson v3\n | 'Instruction' // lesson v3\n | 'Task' // lesson v3\n | 'Try' // trial v3\n | 'Learn' // trial v3\n | 'Apply'; // trial v3\nexport type TItemType =\n | 'overview'\n | 'learning-we-do'\n | 'learning-your-turn'\n | 'learning-explore'\n | 'practice-basic'\n | 'practice-basic-optional'\n | 'practice-regular'\n | 'practice-regular-optional'\n | 'exit-ticket'\n | 'advanced-we-do'\n | 'advanced-your-turn'\n | 'advanced-explore'\n | 'advanced-practice';\n\nexport type TSectionName =\n | 'overview'\n | 'learning'\n | 'practice-basic'\n | 'practice-regular'\n | 'exit-ticket'\n | 'advanced';\n\nexport interface IQuestionValidResponse {\n score: number;\n value: unknown[];\n}\n\nexport interface ISheetNudgeBannerInfo {\n bannerBackgroundColor: TColorNames;\n label: string;\n}\n\nexport interface ILearnosityQuestion {\n response_id: string;\n instructor_stimulus?: TInstructorStimulus;\n metadata: ILearnosityQuestionMetadata;\n instant_feedback?: boolean;\n math_renderer?: string;\n template?: string;\n tokenization?: string;\n numberPad?: string[];\n symbols?: unknown[];\n response_container?: Record<string, unknown>;\n ui_style?: Record<string, unknown>;\n shuffle_options?: boolean;\n // for custom type question validation is undefined.\n validation?: {\n scoring_type?: string;\n unscored?: boolean;\n valid_response?: IQuestionValidResponse;\n alt_responses?: IQuestionValidResponse[];\n penalty?: number;\n min_score_if_attempted?: number;\n };\n is_math?: boolean;\n labels?: Record<string, unknown>;\n line?: Record<string, unknown>;\n points?: string[];\n snap_to_ticks?: boolean;\n ticks?: Record<string, unknown>;\n max_length?: number;\n type:\n | 'hotspot'\n | 'tokenhighlight'\n | 'numberline'\n | 'clozeassociation'\n | 'clozetext'\n | 'association'\n | 'classification'\n | 'clozedropdown'\n | 'clozeformula'\n | 'mcq'\n | 'choicematrix'\n | 'plaintext'\n | 'drawing';\n case_sensitive?: boolean;\n show_copy?: boolean;\n show_cut?: boolean;\n show_paste?: boolean;\n spellcheck?: boolean;\n stimulus?: string;\n stimulus_review?: string;\n stimulus_list?: string[];\n image?: Record<string, unknown>;\n areas?: unknown[];\n area_attributes?: Record<string, unknown>;\n possible_responses?: string[][] | string[];\n duplicate_responses?: boolean;\n response_containers?: unknown[];\n options?: Record<string, unknown>[] | string[];\n feedback_attempts?: number;\n stems?: string[];\n multiple_responses?: boolean;\n}\n\nexport interface ILearnosityItem {\n reference: string;\n questions: ILearnosityQuestion[];\n source: Record<string, unknown>;\n content: string;\n metadata: Record<string, unknown> | unknown[];\n workflow: unknown[];\n response_ids: string[];\n feature_ids: unknown[];\n features: unknown[];\n itemType?: TItemType;\n tags?: string[];\n}\n\nexport interface IWorksheetQuestion extends ILearnosityQuestion {\n item_reference: string;\n item_type?: TItemType;\n section_name?: TSectionName;\n is_optional?: boolean;\n item_tags: string[];\n item_tags_map: Record<string, string>;\n item_number: number;\n item_display_number: number;\n question_number: number;\n total_questions: number;\n}\n\nexport interface ILearnosityQuestionScore {\n score?: number | null;\n max_score: number;\n unscored?: boolean;\n}\n\nexport interface ILearnosityQuestionResponse {\n value: unknown;\n responses?: unknown;\n type: unknown;\n updatedFormat?: boolean;\n wordCount?: number;\n apiVersion: string;\n revision: number;\n feedbackAttemptsCount?: number;\n}\n\nexport interface IAttempt {\n response: ILearnosityQuestionResponse;\n score: ILearnosityQuestionScore;\n}\n\ninterface ITeacherReview {\n reviewComment?: string;\n images?: string[];\n}\nexport interface IWorksheetResponse {\n widgetReference: string;\n itemReference: string;\n itemPosition: number; // 0 based\n questionPosition: number; // 0 based\n isOkayTypeQuestion: boolean;\n response?: ILearnosityQuestionResponse;\n simState?: Record<string, unknown>;\n score?: ILearnosityQuestionScore;\n responseEdited?: boolean;\n hintsUsed?: number;\n markedForReview?: boolean;\n attemptsHistory?: IAttempt[];\n validatedByTeacher?: boolean;\n submittedByStudent?: boolean;\n assignStatus?: 'assigned' | 'skipped';\n rating?: number;\n skipped?: boolean;\n doubtResolved?: boolean;\n teacherReview?: ITeacherReview;\n tags?: Record<string, string>;\n timeSpent?: number;\n}\n\ntype TMathRenderer = 'mathjax' | 'mathquill';\nexport interface ILearnosity {\n ready: () => void;\n questions: () => Record<string, unknown>;\n question: (responseId: string) =>\n | {\n enable: () => boolean;\n disable: () => boolean;\n getQuestion: () => ILearnosityQuestion;\n getMetadata: () => ILearnosityQuestionMetadata;\n getResponse: () => ILearnosityQuestionResponse;\n getScore: (\n callback?: (score: ILearnosityQuestionScore | null) => void,\n ) => ILearnosityQuestionScore;\n validate: (\n options?: { showCorrectAnswers?: boolean; feedbackAttempts?: boolean },\n callback?: () => void,\n ) => void;\n resetValidationUI: () => void;\n on: (eventName: 'changed', callback: () => void) => void;\n off: (eventName: 'changed', callback?: () => void) => void;\n }\n | undefined;\n append: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n appendQuestion: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n reset: () => void;\n renderMath: (renderer: TMathRenderer) => void;\n}\n\nexport interface IWorksheetBehavior {\n /**\n * If true, Opens the worksheet in resume mode.\n * - If false, Opens the worksheet in review mode.\n */\n canAttempt: boolean;\n /**\n * If true, the user can mark the question for review.\n */\n canMarkForReview: boolean;\n /**\n * The mode of navigation for the worksheet.\n * - `OPEN` mode allows the user to navigate to any question in the worksheet.\n * - `LINEAR` mode allows the user to navigate to the next question only.\n * - `ADAPTIVE` mode allows the user to navigate future questions based on the rating of the current question.\n * - `CURRENT` mode allows the user to navigate to the current question only. Back and forth not allowed.\n */\n navigationMode: 'OPEN' | 'LINEAR' | 'ADAPTIVE' | 'CURRENT';\n /**\n * The initial question to display when the worksheet is loaded.\n * - `FIRST` mode displays the first question in the worksheet.\n * - `CURRENT` mode displays the question that the user was last on.\n */\n initialQuestion: 'FIRST' | 'CURRENT';\n /**\n * If hints are available, on clicking the help button, first availble hint will be shown.\n * Clicking again will show the next hint.\n * If no more hints are available, onHelp will be called.\n */\n hints: boolean;\n /**\n * The time in seconds after which the hints button will be shown.\n */\n hintsTimer?: number; // in seconds\n /**\n * If true, the user can skip the question without attempting it.\n * Skip button will be shown only after the hints are exausted and skipTimer is reached.\n */\n skippable?: boolean;\n /**\n * The time in seconds after which the user can skip the question.\n */\n skippableTime?: number; // in seconds\n /**\n * If true, teacher validation is needed for the question to proceed\n */\n teacherValidationEnabled: boolean;\n /**\n * If worksheet is attempting outside the class setting\n * This needs teacherValidationEnabled to be true\n * TODO-ANTIL: Accept only validation which can be 'system' or 'teacher' or undefined\n */\n canTeacherValidate: boolean;\n /**\n * If true, questions will be validated and feedback will be shown.\n */\n validation: boolean;\n /**\n * If true, solution wont be shown to the user.\n */\n solutionHidden?: boolean;\n /**\n * If true, questions will be validated and feedback will be shown along with the correct answer.\n */\n review: boolean;\n /**\n * The maximum number of attempts allowed for each question.\n * 0 means unlimited attempts.\n * -1 means attempts will not be validated, hence not pushed to attempt history.\n * -2 means the sheet is a puzzle sheet\n * After reaching the maximum number of attempts, the user cannot attempt the question anymore.\n * If maxAtttmpts reached and canExceedAttempts is true, the user can still attempt the question\n * , also user will have the option to move to next question\n */\n maximumAttempts: number;\n /**\n * If true, the user can exceed the maximum number of attempts.\n */\n canExceedAttempts: boolean;\n /**\n * If the worksheet minimumAccuracy is not met, on clicking the final submit button, onMinimumAccuracyNotMet will be called.\n */\n minimumAccuracy: number;\n /**\n * Label for the check button\n * For example,\n * - \"Check\" for Checking the answer\n * - \"Submit\" for Submitting the answer when doing assessment\n */\n checkButtonLabel: string;\n /**\n * If attempt is incorrect, we show retry button, this is the label for the retry button\n * For example,\n * - 'Try Again' for retrying the question\n */\n retryButtonLabel: string;\n /**\n * If true show demos calculator https://www.desmos.com/calculator\n */\n canShowDesmosCalc: boolean;\n\n // If true, canvas is enabled and user can use canvas to scribble on the worksheet by toggling the scribble button\n canvasEnabled?: boolean;\n\n // If true, the user can scribble on workheet\n canScribble?: boolean;\n}\n\nexport type TWORKSHHET_QUESTION_MEDIA_TYPE = 'SIMULATION' | 'VIDEO' | 'AUDIO';\n\nexport interface IWorksheetCallbackProps {\n onResponseChange?: (options: {\n responseId: string;\n response: IWorksheetResponse;\n isNewAttempt: boolean;\n question: IWorksheetQuestion;\n }) => void;\n onBulkResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onMediaStateChange?: (\n question: IWorksheetQuestion,\n mediaType: TWORKSHHET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n onTeacherValidation?: (questionId: string, rating?: keyof typeof QUESTIONS_RATING) => void;\n onOptionalItemAssignment?: (itemType: TItemType) => void;\n onOptionalItemSkip?: (itemType: TItemType) => void;\n onHelp?: (options: { questionId: string; questionNumber: string }) => void;\n onMinimumAccuracyNotMet?: (accuracy: number) => void;\n onExitTicketStart?: () => void;\n onExitTicketSubmit?: () => void;\n onSubmit?: (responses: Record<string, IWorksheetResponse>) => void;\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;\n}\n\nexport interface ICueCanvasCallbackProps {\n onPublishStrokes?: TPublish;\n onReceiveStrokes?: TSubscribe;\n}\n\nexport interface ICueCanvasProps {\n initialStrokesData?: Record<string, IActionData[]>;\n}\n\nexport interface IPointerSyncCallbackProps {\n onPublishMouseMove?: TPublishMouseMove;\n onSubscribeMouseMove?: TSubscribeMouseMove;\n}\n\nexport interface IWorksheetLayout {\n containerStyle: 'none' | 'card';\n navigationBar: 'none' | 'top' | 'bottom';\n actionBar: 'none' | 'bottom';\n containerWidth: string;\n topOffset: number; // Offset from the top of the screen, for eg: height of the header\n questionsScrollable: boolean;\n minQuestionHeight: string | number;\n minSummaryHeight: string | number;\n renderSideBar: boolean;\n showUserPointer?: boolean;\n renderQuestionHeader?: boolean;\n imageHue?: THueNames;\n background?: 'none' | 'paper';\n questionPadding: number;\n}\n\nexport interface ISubjectiveSheetProps {\n onAddReviewComment?: (\n responseId: string,\n commentData: {\n score: ILearnosityQuestionScore;\n teacherReview: ITeacherReview;\n },\n ) => void;\n openImagesReviewModal?: (props: IOpenImageReviewModalProps) => void;\n handleReviewSubmit?: () => void;\n isSubmittingReview?: boolean;\n isReviewPending?: boolean;\n}\n\ninterface IBaseWorksheetProps {\n userType: TUserTypes;\n userId: string;\n studentId: string;\n studentName?: string;\n worksheetName: string;\n layout: IWorksheetLayout;\n behavior: IWorksheetBehavior;\n initialResponseId?: string;\n initialItemIndex?: number;\n updatedResponses?: Record<string, IWorksheetResponse>;\n worksheetCompleted: boolean;\n showNudgeBanner?: boolean;\n markedAsCompleted?: boolean;\n onResolveDoubt?: (responseId: string) => void;\n onActiveQuestionChange?: (question: IWorksheetQuestion) => void;\n canResolveDoubt?: boolean;\n onSkip?: (itemIndex: number, widgetIndex: number) => void;\n canShowActionBar?: boolean;\n actionBarRightElement?: ReactElement; // Extra Elements to be rendered in the action bar\n}\n\nexport interface IWorksheetProps\n extends IBaseWorksheetProps,\n IWorksheetCallbackProps,\n ICueCanvasProps,\n ICueCanvasCallbackProps,\n IPointerSyncCallbackProps {\n learnosityActivityRef?: string;\n learnosityItems: ILearnosityItem[];\n learnosityResponses?: Record<string, IWorksheetResponse>;\n learnosity: ILearnosity;\n appendedQuestionIds: string[];\n questionsSignedRequest: string;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n summaryDescription?: ReactElement | null;\n canSubmitWorksheet?: boolean;\n studentId: string;\n studentClassroomId?: string;\n attemptId?: string;\n subjectiveProps?: ISubjectiveSheetProps;\n}\n\nexport interface IUpdateImages {\n filteredImages: string[];\n newImages: IFile[];\n}\nexport interface IOpenImageReviewModalProps {\n isReviewed?: boolean;\n disableScoreForm?: boolean;\n imageUrls?: string[];\n filteredImageUrls?: (props: IUpdateImages) => void;\n uploadedImages?: (IFile | string)[];\n image?: string;\n}\n\nexport interface IWorksheetContainerProps\n extends Omit<IBaseWorksheetProps, 'behavior'>,\n IWorksheetCallbackProps,\n ICueCanvasProps,\n ICueCanvasCallbackProps,\n IPointerSyncCallbackProps {\n studentId: string;\n attemptId?: string;\n itemsSignedRequest: string;\n questionsSignedRequest: string;\n onLoaded: () => void;\n onErrored: (error: { code?: number; message: string }) => void;\n onResponsesLoaded?: (responses: Record<string, IWorksheetResponse>) => void;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n summaryDescription?: ReactElement | null;\n canSubmitWorksheet?: boolean;\n subjectiveProps?: ISubjectiveSheetProps;\n inClass?: boolean; // If true, the worksheet is rendered inside class\n isLessonV3Enabled?: boolean; // If true, the worksheet is rendered in lesson v3 mode\n isDesmosEnabled?: boolean; // If true, the worksheet can show desmos calculator\n nodeType: TNodeTypes; // NodeType of the worksheet\n mode: 'resume' | 'review' | 'preview'; // mode of the worksheet\n}\n\nexport interface IWorksheetRef {\n validateQuestion: (\n responseId: string,\n rating?: keyof typeof QUESTIONS_RATING,\n skipRemainingQuestions?: boolean,\n ) => void;\n assignOptionalItems: (itemType: TItemType) => void;\n skipOptionalItems: (itemType: TItemType) => void;\n updateMediaState: (\n responseId: string,\n mediaType: TWORKSHHET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n}\n\ninterface IWorksheetHeaderLayoutArgs {\n isPuzzleWorksheet?: boolean;\n isTestWorksheet?: boolean;\n imageHue?: THueNames;\n}\n\nexport interface IWorksheetHeaderLayoutProps {\n (args: IWorksheetHeaderLayoutArgs): {\n bgColor: TColorNames;\n borderColor?: TColorNames;\n textColor?: TColorNames;\n };\n}\n"],"names":["QUESTION_TAGS","QUESTIONS_RATING"],"mappings":"AAQY,IAAAA,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,gBAAgB,iBAFNA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KAHUA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as y, Fragment as st, jsx as i } from "react/jsx-runtime";
2
- import { memo as at, forwardRef as ct, useMemo as z, useState as S, useCallback as C, useEffect as T, useLayoutEffect as dt } from "react";
2
+ import { memo as at, forwardRef as dt, useMemo as z, useState as C, useCallback as S, useEffect as T, useLayoutEffect as ct } from "react";
3
3
  import lt from "../../../assets/line-icons/icons/check2.js";
4
4
  import mt from "../../../assets/line-icons/icons/info2.js";
5
5
  import ut from "../../../helpers/get-device-details.js";
@@ -7,78 +7,73 @@ import ht from "../../sheet-tools/desmos-calculator/desmos-calculator.js";
7
7
  import de from "../../ui/layout/flex-view.js";
8
8
  import ft from "../../ui/text/text.js";
9
9
  import pt from "../user-pointer-pin/user-pin.js";
10
- import { WORKSHEET_NUDGE_BANNER_HEIGHT as le, TOP_NAVIGATION_HEIGHT as gt, DESMOS_CALC_POSITION as bt } from "./constants.js";
10
+ import { WORKSHEET_NUDGE_BANNER_HEIGHT as ce, TOP_NAVIGATION_HEIGHT as gt, DESMOS_CALC_POSITION as bt } from "./constants.js";
11
11
  import It from "./hooks/use-create-imperative-handle.js";
12
- import St from "./hooks/use-get-active-question-id.js";
13
- import Ct from "./hooks/use-time-on-questions.js";
12
+ import Ct from "./hooks/use-get-active-question-id.js";
13
+ import St from "./hooks/use-time-on-questions.js";
14
14
  import kt from "./question-tips.js";
15
15
  import $t from "./worksheet-action-bar/worksheet-action-bar.js";
16
16
  import Tt from "./worksheet-blocker/worksheet-blocker.js";
17
- import { getWorksheetDimensions as vt, getQuestionsFromItems as Et, getInitialResponses as wt, getLastUnlockedQuestionIndex as me, getInitialQuestionId as Nt, getQuestionMetadata as ue, scrollToQuestion as x, getRenderableQuestions as Bt, getWorksheetNudgeBannerInfo as At } from "./worksheet-helpers.js";
17
+ import { getWorksheetDimensions as vt, getQuestionsFromItems as Et, getInitialResponses as wt, getLastUnlockedQuestionIndex as le, getInitialQuestionId as Nt, getQuestionMetadata as me, scrollToQuestion as x, getRenderableQuestions as Bt, getWorksheetNudgeBannerInfo as At } from "./worksheet-helpers.js";
18
18
  import yt from "./worksheet-navigation/worksheet-navigation.js";
19
19
  import Wt from "./worksheet-question/worksheet-question.js";
20
20
  import _t from "./worksheet-sidebar/navigator.js";
21
21
  import Ot from "./worksheet-sidebar/sidebar.js";
22
- import { NudgeBannerWrapper as Dt, NudgeBannerIcon as he, WorksheetContainer as Vt, NavigationContainer as Ht, NavigationWrapper as Mt, BlockerWrapper as xt, DesmosCalcWrapper as Rt, ActionbarContainer as Pt, ActionbarWrapper as Qt, StudentWorksheetSideBar as Gt, QuestionsWrapper as Ft } from "./worksheet-styled.js";
22
+ import { NudgeBannerWrapper as Dt, NudgeBannerIcon as ue, WorksheetContainer as Vt, NavigationContainer as Ht, NavigationWrapper as Mt, BlockerWrapper as xt, DesmosCalcWrapper as Rt, ActionbarContainer as Pt, ActionbarWrapper as Qt, StudentWorksheetSideBar as Gt, QuestionsWrapper as Ft } from "./worksheet-styled.js";
23
23
  import jt from "./worksheet-summary/worksheet-summary.js";
24
- const qt = (fe, pe) => {
24
+ const qt = (he, fe) => {
25
25
  const {
26
26
  userType: r,
27
- studentName: ge = "Student",
28
- questionsSignedRequest: be,
27
+ studentName: pe = "Student",
28
+ questionsSignedRequest: ge,
29
29
  worksheetName: J,
30
- initialResponseId: Ie,
31
- initialItemIndex: Se,
30
+ initialResponseId: be,
31
+ initialItemIndex: Ie,
32
32
  // learnosityActivityRef,
33
33
  learnosityItems: R,
34
34
  learnosityResponses: Ce,
35
35
  layout: k,
36
36
  behavior: a,
37
37
  updatedResponses: P,
38
- showNudgeBanner: ke,
38
+ showNudgeBanner: Se,
39
39
  markedAsCompleted: U,
40
40
  onResponseChange: f,
41
- onBulkResponsesChange: $e,
41
+ onBulkResponsesChange: ke,
42
42
  onResponsesChange: Q,
43
43
  onMediaStateChange: G,
44
44
  onTeacherValidation: Y,
45
- onOptionalItemAssignment: Te,
46
- onOptionalItemSkip: ve,
45
+ onOptionalItemAssignment: $e,
46
+ onOptionalItemSkip: Te,
47
47
  onExitTicketStart: W,
48
48
  onExitTicketSubmit: _,
49
- onSubmit: Ee,
49
+ onSubmit: ve,
50
50
  learnosity: p,
51
51
  appendedQuestionIds: Z,
52
- worksheetCompleted: we,
53
- userId: Ne,
54
- onPublishStrokes: Be,
55
- onReceiveStrokes: Ae,
56
- initialStrokesData: ye,
57
- onHelp: We,
58
- onPublishMouseMove: _e,
59
- onSubscribeMouseMove: Oe,
52
+ worksheetCompleted: Ee,
53
+ userId: we,
54
+ onPublishStrokes: Ne,
55
+ onReceiveStrokes: Be,
56
+ initialStrokesData: Ae,
57
+ onHelp: ye,
58
+ onPublishMouseMove: We,
59
+ onSubscribeMouseMove: _e,
60
60
  onActiveQuestionChange: F,
61
- openQuestionFeedbackModal: De,
62
- summaryDescription: Ve,
63
- canSubmitWorksheet: He,
61
+ openQuestionFeedbackModal: Oe,
62
+ summaryDescription: De,
63
+ canSubmitWorksheet: Ve,
64
64
  loggerRef: j,
65
- canResolveDoubt: Me,
66
- onResolveDoubt: xe,
67
- onSkip: Re,
68
- studentId: ee,
69
- subjectiveProps: Pe,
70
- canShowActionBar: Qe = !0,
71
- actionBarRightElement: Ge
72
- } = fe, {
73
- initialQuestion: Fe,
74
- navigationMode: m,
75
- teacherValidationEnabled: je,
76
- maximumAttempts: te,
77
- enableStickers: qe
78
- } = a, {
65
+ canResolveDoubt: He,
66
+ onResolveDoubt: Me,
67
+ onSkip: xe,
68
+ studentId: Re,
69
+ studentClassroomId: Pe,
70
+ subjectiveProps: Qe,
71
+ canShowActionBar: Ge = !0,
72
+ actionBarRightElement: Fe
73
+ } = he, { initialQuestion: je, navigationMode: m, teacherValidationEnabled: qe, maximumAttempts: ee } = a, {
79
74
  containerStyle: O,
80
75
  containerWidth: Le,
81
- minQuestionHeight: ie,
76
+ minQuestionHeight: te,
82
77
  minSummaryHeight: Xe,
83
78
  questionsScrollable: D,
84
79
  navigationBar: Ke,
@@ -89,64 +84,64 @@ const qt = (fe, pe) => {
89
84
  } = k, { actionbarHeight: g, maxQuestionWidth: q, questionsContainerWidth: L } = z(
90
85
  () => vt(R, k),
91
86
  [k, R]
92
- ), [t] = S(
87
+ ), [t] = C(
93
88
  () => Et(R, {
94
- sectioned: je && m !== "ADAPTIVE" && m !== "CURRENT",
89
+ sectioned: qe && m !== "ADAPTIVE" && m !== "CURRENT",
95
90
  adaptive: m === "ADAPTIVE"
96
91
  })
97
- ), [c, v] = S(
92
+ ), [d, v] = C(
98
93
  () => Ce ?? wt(t)
99
- ), [ne, Ye] = S(!1), u = z(
100
- () => m !== "OPEN" ? me({
94
+ ), [ie, Ye] = C(!1), u = z(
95
+ () => m !== "OPEN" ? le({
101
96
  questions: t,
102
- responses: c,
97
+ responses: d,
103
98
  behavior: a,
104
99
  userType: r
105
100
  }) : t.length - 1,
106
- [a, m, t, c, r]
107
- ), d = t[u], n = c[(d == null ? void 0 : d.response_id) ?? ""], { bannerBackgroundColor: Ze, label: et } = At(r, !!U), [E] = S(
101
+ [a, m, t, d, r]
102
+ ), c = t[u], n = d[(c == null ? void 0 : c.response_id) ?? ""], { bannerBackgroundColor: Ze, label: et } = At(r, !!U), [E] = C(
108
103
  () => Nt({
109
104
  questions: t,
110
- initialQuestion: Fe,
111
- lastUnlockedQuestionIndex: me({
105
+ initialQuestion: je,
106
+ lastUnlockedQuestionIndex: le({
112
107
  questions: t,
113
- responses: c,
108
+ responses: d,
114
109
  behavior: a,
115
110
  userType: r
116
111
  }),
117
- initialResponseId: Ie,
118
- initialItemIndex: Se
112
+ initialResponseId: be,
113
+ initialItemIndex: Ie
119
114
  })
120
- ), { activeQuestionId: w, setActiveQuestionId: H, intersectionObserver: X } = St(E), l = z(
115
+ ), { activeQuestionId: w, setActiveQuestionId: H, intersectionObserver: X } = Ct(E), l = z(
121
116
  () => t.findIndex((e) => e.response_id === w),
122
117
  [w, t]
123
- ), [h, K] = S(!1), [oe, N] = S(), [re, se] = S(!1), ae = Ct(a, c, w), tt = C(
118
+ ), [h, K] = C(!1), [ne, N] = C(), [oe, re] = C(!1), se = St(a, d, w), tt = S(
124
119
  (e, s, o) => {
125
120
  const b = s === "SIMULATION" ? "simState" : void 0;
126
121
  b && (f ? v(($) => {
127
- const I = e.response_id, A = ue(t, I);
122
+ const I = e.response_id, A = me(t, I);
128
123
  if (!A) return $;
129
- const ce = {
124
+ const ae = {
130
125
  ...A,
131
126
  ...$[I],
132
127
  [b]: o
133
128
  };
134
129
  return f == null || f({
135
130
  responseId: I,
136
- response: ce,
131
+ response: ae,
137
132
  isNewAttempt: !1,
138
133
  question: e
139
134
  }), {
140
135
  ...$,
141
- [I]: ce
136
+ [I]: ae
142
137
  };
143
138
  }) : G && G(e, s, o));
144
139
  },
145
140
  [G, f, t]
146
- ), it = C(
141
+ ), it = S(
147
142
  (e, s) => {
148
143
  v((o) => {
149
- const b = ue(t, e);
144
+ const b = me(t, e);
150
145
  return b ? {
151
146
  ...o,
152
147
  [e]: {
@@ -158,7 +153,7 @@ const qt = (fe, pe) => {
158
153
  });
159
154
  },
160
155
  [t]
161
- ), B = C(() => {
156
+ ), B = S(() => {
162
157
  N((e) => {
163
158
  var s;
164
159
  if (e) {
@@ -168,35 +163,35 @@ const qt = (fe, pe) => {
168
163
  }, 50);
169
164
  }
170
165
  });
171
- }, [u, t]), M = C(
166
+ }, [u, t]), M = S(
172
167
  (e) => {
173
168
  K(!1), D ? requestAnimationFrame(() => x(e)) : H(e);
174
169
  },
175
170
  [D, H]
176
- ), nt = C(() => {
177
- se(!1);
178
- }, []), ot = C(() => {
179
- se(!0);
180
- }, []), rt = C(() => {
171
+ ), nt = S(() => {
172
+ re(!1);
173
+ }, []), ot = S(() => {
174
+ re(!0);
175
+ }, []), rt = S(() => {
181
176
  K(!0);
182
177
  }, []);
183
178
  return T(() => {
184
179
  const e = t[l];
185
180
  e && F && F(e);
186
- }, [F, t, l]), It(pe, {
181
+ }, [F, t, l]), It(fe, {
187
182
  behavior: a,
188
183
  questions: t,
189
184
  setResponses: v,
190
185
  onResponseChange: f,
191
- onBulkResponsesChange: $e,
192
- getTimeSpentOnQuestion: ae
186
+ onBulkResponsesChange: ke,
187
+ getTimeSpentOnQuestion: se
193
188
  }), T(() => () => {
194
189
  X.disconnect();
195
190
  }, [X]), T(() => {
196
- Q && c && Q(c);
197
- }, [Q, c]), T(() => {
191
+ Q && d && Q(d);
192
+ }, [Q, d]), T(() => {
198
193
  P && v(P);
199
- }, [P]), dt(() => {
194
+ }, [P]), ct(() => {
200
195
  let e;
201
196
  return p && E && (ut().browser_name === "Safari" ? e = setTimeout(() => {
202
197
  x(E);
@@ -204,30 +199,30 @@ const qt = (fe, pe) => {
204
199
  clearTimeout(e);
205
200
  };
206
201
  }, [p, E, V]), T(() => {
207
- if (a.teacherValidationEnabled && d) {
208
- const { item_type: e, instructor_stimulus: s, is_optional: o } = d;
202
+ if (a.teacherValidationEnabled && c) {
203
+ const { item_type: e, instructor_stimulus: s, is_optional: o } = c;
209
204
  r === "TEACHER" && (e === "exit-ticket" && s !== "SystemIntro" ? n != null && n.submittedByStudent && !(n != null && n.validatedByTeacher) ? N("exit-ticket-review-available") : n != null && n.validatedByTeacher ? B() : N("exit-ticket-teacher-intervention") : o ? n != null && n.assignStatus ? B() : N("optional-items-assignment") : o || B());
210
205
  }
211
206
  }, [
212
207
  a.teacherValidationEnabled,
213
208
  B,
214
- d,
209
+ c,
215
210
  n,
216
211
  r
217
212
  ]), T(() => {
218
- if (a.teacherValidationEnabled && d) {
219
- const { item_type: e, instructor_stimulus: s } = d;
213
+ if (a.teacherValidationEnabled && c) {
214
+ const { item_type: e, instructor_stimulus: s } = c;
220
215
  r === "STUDENT" && e === "exit-ticket" && s !== "SystemIntro" && (n != null && n.submittedByStudent ? _ == null || _() : W == null || W());
221
216
  }
222
217
  }, [
223
218
  a.teacherValidationEnabled,
224
- d,
219
+ c,
225
220
  n == null ? void 0 : n.submittedByStudent,
226
221
  W,
227
222
  _,
228
223
  r
229
224
  ]), p ? /* @__PURE__ */ y(st, { children: [
230
- ke && /* @__PURE__ */ y(
225
+ Se && /* @__PURE__ */ y(
231
226
  Dt,
232
227
  {
233
228
  $flexDirection: "row",
@@ -235,14 +230,14 @@ const qt = (fe, pe) => {
235
230
  $alignItems: "center",
236
231
  $width: "100%",
237
232
  $heightX: 1.75,
238
- $height: le,
233
+ $height: ce,
239
234
  $gap: 8,
240
235
  $gutter: 8,
241
236
  $flexGap: 8,
242
237
  $background: Ze,
243
- $topOffset: k.topOffset - le,
238
+ $topOffset: k.topOffset - ce,
244
239
  children: [
245
- U ? /* @__PURE__ */ i(he, { children: /* @__PURE__ */ i(lt, { width: 16, height: 16 }) }) : /* @__PURE__ */ i(he, { children: /* @__PURE__ */ i(mt, { width: 16, height: 16 }) }),
240
+ U ? /* @__PURE__ */ i(ue, { children: /* @__PURE__ */ i(lt, { width: 16, height: 16 }) }) : /* @__PURE__ */ i(ue, { children: /* @__PURE__ */ i(mt, { width: 16, height: 16 }) }),
246
241
  /* @__PURE__ */ i(ft, { $renderAs: "ub3", children: et })
247
242
  ]
248
243
  }
@@ -253,7 +248,7 @@ const qt = (fe, pe) => {
253
248
  {
254
249
  placement: "top",
255
250
  questions: t,
256
- responses: c,
251
+ responses: d,
257
252
  activeQuestionIndex: l,
258
253
  lastUnlockedQuestionIndex: u,
259
254
  behavior: a,
@@ -262,15 +257,15 @@ const qt = (fe, pe) => {
262
257
  summaryVisible: h
263
258
  }
264
259
  ) }) }),
265
- oe && d && /* @__PURE__ */ i(xt, { $minHeight: ie, $topOffset: V, children: /* @__PURE__ */ i(de, { $width: q, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ i(
260
+ ne && c && /* @__PURE__ */ i(xt, { $minHeight: te, $topOffset: V, children: /* @__PURE__ */ i(de, { $width: q, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ i(
266
261
  Tt,
267
262
  {
268
- blocker: oe,
269
- lastUnlockedQuestion: d,
270
- studentName: ge,
263
+ blocker: ne,
264
+ lastUnlockedQuestion: c,
265
+ studentName: pe,
271
266
  onBlockerClose: B,
272
- onOptionalItemAssignment: Te,
273
- onOptionalItemSkip: ve,
267
+ onOptionalItemAssignment: $e,
268
+ onOptionalItemSkip: Te,
274
269
  onTeacherValidation: Y
275
270
  }
276
271
  ) }) }),
@@ -285,7 +280,7 @@ const qt = (fe, pe) => {
285
280
  userType: r
286
281
  }
287
282
  ),
288
- re && /* @__PURE__ */ i(Rt, { children: /* @__PURE__ */ i(ht, { initialPosition: bt, onClose: nt }) }),
283
+ oe && /* @__PURE__ */ i(Rt, { children: /* @__PURE__ */ i(ht, { initialPosition: bt, onClose: nt }) }),
289
284
  /* @__PURE__ */ y(
290
285
  Pt,
291
286
  {
@@ -293,7 +288,7 @@ const qt = (fe, pe) => {
293
288
  $height: g,
294
289
  $isCardView: O === "card",
295
290
  children: [
296
- te !== -2 && /* @__PURE__ */ i(
291
+ ee !== -2 && /* @__PURE__ */ i(
297
292
  kt,
298
293
  {
299
294
  width: L - 32,
@@ -302,11 +297,11 @@ const qt = (fe, pe) => {
302
297
  userType: r
303
298
  }
304
299
  ),
305
- Qe && /* @__PURE__ */ i(
300
+ Ge && /* @__PURE__ */ i(
306
301
  Qt,
307
302
  {
308
303
  $height: g,
309
- $width: O === "card" || te === -2 ? L - 32 : "100%",
304
+ $width: O === "card" || ee === -2 ? L - 32 : "100%",
310
305
  $isCardView: O === "card",
311
306
  children: /* @__PURE__ */ i(
312
307
  de,
@@ -324,17 +319,17 @@ const qt = (fe, pe) => {
324
319
  behavior: a,
325
320
  worksheetName: J,
326
321
  questions: t,
327
- responses: c,
322
+ responses: d,
328
323
  onCalculatorOpen: ot,
329
324
  activeQuestionIndex: l,
330
325
  lastUnlockedQuestionIndex: u,
331
326
  appendedQuestionIds: Z,
332
327
  learnosity: p,
333
- canSubmitWorksheet: He,
334
- isScribblingEnabled: ne,
328
+ canSubmitWorksheet: Ve,
329
+ isScribblingEnabled: ie,
335
330
  isSummaryVisible: h,
336
331
  setResponses: v,
337
- getTimeSpentOnQuestion: ae,
332
+ getTimeSpentOnQuestion: se,
338
333
  setSummaryVisible: K,
339
334
  setBlocker: N,
340
335
  setIsScribblingEnabled: Ye,
@@ -342,13 +337,13 @@ const qt = (fe, pe) => {
342
337
  onItemNumberClick: M,
343
338
  onGoToReview: rt,
344
339
  onResponseChange: f,
345
- onHelp: We,
340
+ onHelp: ye,
346
341
  onTeacherValidation: Y,
347
- onSubmit: Ee,
348
- showCalculator: re,
342
+ onSubmit: ve,
343
+ showCalculator: oe,
349
344
  loggerRef: j,
350
- onSkip: Re,
351
- actionBarRightElement: Ge
345
+ onSkip: xe,
346
+ actionBarRightElement: Fe
352
347
  }
353
348
  )
354
349
  }
@@ -369,16 +364,16 @@ const qt = (fe, pe) => {
369
364
  Bt({ questions: t, lastUnlockedQuestionIndex: u, userType: r }).map(
370
365
  (e, s) => {
371
366
  var I, A;
372
- const { response_id: o, is_optional: b } = e, $ = (I = c[o]) == null ? void 0 : I.assignStatus;
367
+ const { response_id: o, is_optional: b } = e, $ = (I = d[o]) == null ? void 0 : I.assignStatus;
373
368
  return a.teacherValidationEnabled && ($ === "skipped" || b && $ !== "assigned" && r === "STUDENT") ? null : /* @__PURE__ */ i(
374
369
  Wt,
375
370
  {
376
- signedRequest: be,
371
+ signedRequest: ge,
377
372
  userType: r,
378
- worksheetCompleted: we,
373
+ worksheetCompleted: Ee,
379
374
  question: e,
380
- response: c[o],
381
- nextQuestionId: m === "ADAPTIVE" || m === "CURRENT" ? d == null ? void 0 : d.response_id : s < u ? (A = t[s + 1]) == null ? void 0 : A.response_id : void 0,
375
+ response: d[o],
376
+ nextQuestionId: m === "ADAPTIVE" || m === "CURRENT" ? c == null ? void 0 : c.response_id : s < u ? (A = t[s + 1]) == null ? void 0 : A.response_id : void 0,
382
377
  maxQuestionWidth: q,
383
378
  learnosity: p,
384
379
  isActive: o === w,
@@ -391,19 +386,19 @@ const qt = (fe, pe) => {
391
386
  intersectionObserver: X,
392
387
  onMarkForReview: it,
393
388
  onMediaStateChange: tt,
394
- userId: Ne,
395
- isScribblingEnabled: ne,
396
- onPublishStrokes: Be,
397
- onReceiveStrokes: Ae,
398
- initialStrokesData: ye,
399
- onPublishMouseMove: _e,
400
- onSubscribeMouseMove: Oe,
389
+ userId: we,
390
+ isScribblingEnabled: ie,
391
+ onPublishStrokes: Ne,
392
+ onReceiveStrokes: Be,
393
+ initialStrokesData: Ae,
394
+ onPublishMouseMove: We,
395
+ onSubscribeMouseMove: _e,
401
396
  setActiveQuestionId: H,
402
- canResolveDoubt: Me,
403
- onResolveDoubt: xe,
404
- studentId: ee,
405
- subjectiveProps: Pe,
406
- responses: c,
397
+ canResolveDoubt: He,
398
+ onResolveDoubt: Me,
399
+ studentId: Re,
400
+ subjectiveProps: Qe,
401
+ responses: d,
407
402
  loggerRef: j
408
403
  },
409
404
  o
@@ -415,13 +410,13 @@ const qt = (fe, pe) => {
415
410
  {
416
411
  worksheetName: J,
417
412
  questions: t,
418
- responses: c,
413
+ responses: d,
419
414
  activeQuestionIndex: l,
420
415
  lastUnlockedQuestionIndex: u,
421
416
  onItemNumberClick: M,
422
417
  behavior: a,
423
418
  minHeight: Xe,
424
- summaryDescription: Ve,
419
+ summaryDescription: De,
425
420
  summaryVisible: h
426
421
  }
427
422
  )
@@ -436,17 +431,16 @@ const qt = (fe, pe) => {
436
431
  activeQuestionIndex: l,
437
432
  learnosity: p,
438
433
  userType: r,
439
- height: ie,
434
+ height: te,
440
435
  actionbarHeight: g,
441
- openQuestionFeedbackModal: De,
436
+ openQuestionFeedbackModal: Oe,
442
437
  loggerRef: j,
443
- studentId: ee,
444
- enableStickers: qe ?? !1
438
+ studentClassroomId: Pe
445
439
  }
446
440
  )
447
441
  ] })
448
442
  ] }) : null;
449
- }, pi = at(ct(qt));
443
+ }, pi = at(dt(qt));
450
444
  export {
451
445
  pi as default
452
446
  };
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\n// import { captureMessage } from '@sentry/browser';\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport Info2Icon from '../../../assets/line-icons/icons/info2';\nimport getDeviceDetails from '../../../helpers/get-device-details';\nimport DesmosCalculator from '../../sheet-tools/desmos-calculator/desmos-calculator';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\n// import EVENTS from '../constants/events';\nimport UserPointer from '../user-pointer-pin/user-pin';\nimport {\n DESMOS_CALC_POSITION,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from './constants';\nimport useCreateImperativeHandle from './hooks/use-create-imperative-handle';\nimport useGetActiveQuestionId from './hooks/use-get-active-question-id';\nimport useTimeSpentOnQuestions from './hooks/use-time-on-questions';\nimport QuestionTips from './question-tips';\nimport WorksheetActionBar from './worksheet-action-bar/worksheet-action-bar';\nimport WorksheetBlocker from './worksheet-blocker/worksheet-blocker';\nimport type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\nimport {\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetNudgeBannerInfo,\n scrollToQuestion,\n} from './worksheet-helpers';\nimport WorksheetNavigation from './worksheet-navigation/worksheet-navigation';\nimport WorksheetQuestion from './worksheet-question/worksheet-question';\nimport Navigator from './worksheet-sidebar/navigator';\nimport WorksheetSideBar from './worksheet-sidebar/sidebar';\nimport * as Styled from './worksheet-styled';\nimport WorksheetSummary from './worksheet-summary/worksheet-summary';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\n\n/**\n *\n * @param learnosityItems cannot not be changed between the renders\n */\nconst WorksheetComp: ForwardRefRenderFunction<IWorksheetRef, IWorksheetProps> = (props, ref) => {\n const {\n userType,\n studentName = 'Student',\n questionsSignedRequest,\n worksheetName,\n initialResponseId,\n initialItemIndex,\n // learnosityActivityRef,\n learnosityItems,\n learnosityResponses,\n layout,\n behavior,\n updatedResponses,\n showNudgeBanner,\n markedAsCompleted,\n onResponseChange,\n onBulkResponsesChange,\n onResponsesChange,\n onMediaStateChange,\n onTeacherValidation,\n onOptionalItemAssignment,\n onOptionalItemSkip,\n onExitTicketStart,\n onExitTicketSubmit,\n onSubmit,\n learnosity,\n appendedQuestionIds,\n worksheetCompleted,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n initialStrokesData,\n onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n actionBarRightElement,\n } = props;\n const {\n initialQuestion,\n navigationMode,\n teacherValidationEnabled,\n maximumAttempts,\n enableStickers,\n } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n questionPadding,\n } = layout;\n\n const { actionbarHeight, maxQuestionWidth, questionsContainerWidth } = useMemo(\n () => getWorksheetDimensions(learnosityItems, layout),\n [layout, learnosityItems],\n );\n\n const [questions] = useState(() =>\n getQuestionsFromItems(learnosityItems, {\n sectioned:\n teacherValidationEnabled && navigationMode !== 'ADAPTIVE' && navigationMode !== 'CURRENT',\n adaptive: navigationMode === 'ADAPTIVE',\n }),\n );\n\n const [responses, setResponses] = useState<Record<string, IWorksheetResponse>>(\n () => learnosityResponses ?? getInitialResponses(questions),\n );\n const [isScribblingEnabled, setIsScribblingEnabled] = useState(false);\n const lastUnlockedQuestionIndex = useMemo(\n () =>\n navigationMode !== 'OPEN'\n ? getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n })\n : questions.length - 1,\n [behavior, navigationMode, questions, responses, userType],\n );\n\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex];\n const lastUnlockedQuestionResponse = responses[lastUnlockedQuestion?.response_id ?? ''];\n\n const { bannerBackgroundColor: nudgeBannerBackgroundColor, label: nudgeBannerLabel } =\n getWorksheetNudgeBannerInfo(userType, Boolean(markedAsCompleted));\n\n const [initialQuestionId] = useState(() =>\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex: getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n }),\n initialResponseId,\n initialItemIndex,\n }),\n );\n\n const { activeQuestionId, setActiveQuestionId, intersectionObserver } =\n useGetActiveQuestionId(initialQuestionId);\n const activeQuestionIndex = useMemo(\n () => questions.findIndex(question => question.response_id === activeQuestionId),\n [activeQuestionId, questions],\n );\n const [summaryVisible, setSummaryVisible] = useState(false);\n const [blocker, setBlocker] = useState<TWorksheetBlocker>();\n\n const [showCalculator, setShowCalculator] = useState(false);\n const getTimeSpentOnQuestion = useTimeSpentOnQuestions(behavior, responses, activeQuestionId);\n\n const handleMediaStateChange = useCallback<NonNullable<typeof onMediaStateChange>>(\n (question, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n if (onResponseChange) {\n setResponses(prevResponses => {\n const questionId = question.response_id;\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n const updatedResponse = {\n ...questionMeta,\n ...prevResponses[questionId],\n [key]: mediaState,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: updatedResponse,\n isNewAttempt: false,\n question,\n });\n\n return {\n ...prevResponses,\n [questionId]: updatedResponse,\n };\n });\n } else if (onMediaStateChange) {\n onMediaStateChange(question, mediaType, mediaState);\n }\n },\n [onMediaStateChange, onResponseChange, questions],\n );\n\n const handleMarkForReview = useCallback(\n (questionId: string, markedForReview: boolean) => {\n setResponses(prevResponses => {\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n return {\n ...prevResponses,\n [questionId]: {\n ...questionMeta,\n ...prevResponses[questionId],\n markedForReview,\n },\n };\n });\n },\n [questions],\n );\n\n const handleBlockerClose = useCallback(() => {\n setBlocker(prevBlocker => {\n if (prevBlocker) {\n const lastUnlockedQuestionId = questions[lastUnlockedQuestionIndex]?.response_id;\n\n if (lastUnlockedQuestionId) {\n setTimeout(() => {\n scrollToQuestion(lastUnlockedQuestionId);\n }, 50);\n }\n }\n\n return undefined;\n });\n }, [lastUnlockedQuestionIndex, questions]);\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setSummaryVisible(false);\n\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n },\n [questionsScrollable, setActiveQuestionId],\n );\n\n const onCalculatorClose = useCallback(() => {\n setShowCalculator(false);\n }, []);\n\n const onCalculatorOpen = useCallback(() => {\n setShowCalculator(true);\n }, []);\n\n const handleOnGoToReview = useCallback(() => {\n setSummaryVisible(true);\n }, []);\n\n useEffect(() => {\n const activeQuestion = questions[activeQuestionIndex];\n\n if (activeQuestion && onActiveQuestionChange) {\n onActiveQuestionChange(activeQuestion);\n }\n }, [onActiveQuestionChange, questions, activeQuestionIndex]);\n\n useCreateImperativeHandle(ref, {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (onResponsesChange && responses) {\n onResponsesChange(responses);\n }\n }, [onResponsesChange, responses]);\n\n useEffect(() => {\n if (updatedResponses) {\n setResponses(updatedResponses);\n }\n }, [updatedResponses]);\n\n useLayoutEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (learnosity && initialQuestionId) {\n if (getDeviceDetails().browser_name === 'Safari') {\n timer = setTimeout(() => {\n scrollToQuestion(initialQuestionId);\n }, 400);\n } else {\n scrollToQuestion(initialQuestionId);\n }\n }\n\n return () => {\n clearTimeout(timer);\n };\n }, [learnosity, initialQuestionId, topOffset]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus, is_optional } = lastUnlockedQuestion;\n\n if (userType === 'TEACHER') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (\n lastUnlockedQuestionResponse?.submittedByStudent &&\n !lastUnlockedQuestionResponse?.validatedByTeacher\n ) {\n setBlocker('exit-ticket-review-available');\n } else if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n setBlocker('exit-ticket-teacher-intervention');\n } else {\n handleBlockerClose();\n }\n } else if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n setBlocker('optional-items-assignment');\n } else {\n handleBlockerClose();\n }\n } else if (!is_optional) {\n handleBlockerClose();\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n handleBlockerClose,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n userType,\n ]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus } = lastUnlockedQuestion;\n\n if (userType === 'STUDENT') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (lastUnlockedQuestionResponse?.submittedByStudent) {\n onExitTicketSubmit?.();\n } else {\n onExitTicketStart?.();\n }\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse?.submittedByStudent,\n onExitTicketStart,\n onExitTicketSubmit,\n userType,\n ]);\n\n // useEffect(() => {\n // if (navigationMode === 'CURRENT') {\n // learnosityItems.forEach(({ reference, questions: itemQuestions }) => {\n // if (itemQuestions.length < 3) {\n // captureMessage(`Diagnostics item has Less than 3 questions: ${reference}`, {\n // tags: {\n // 'content-type': 'learnosity',\n // 'activity-reference': learnosityActivityRef,\n // 'item-reference': reference,\n // },\n // fingerprint: [`diagnostics-item-questions-count-${reference}`], // Add unique fingerprint\n // });\n // } else if (\n // itemQuestions[0]?.instructor_stimulus !== 'Try' ||\n // itemQuestions[1]?.instructor_stimulus !== 'Learn' ||\n // itemQuestions[2]?.instructor_stimulus !== 'Apply'\n // ) {\n // captureMessage(\n // `Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${reference}`,\n // {\n // tags: {\n // 'content-type': 'learnosity',\n // 'activity-reference': learnosityActivityRef,\n // 'item-reference': reference,\n // },\n // fingerprint: [`diagnostics-item-questions-sequence-${reference}`], // Add unique fingerprint\n // },\n // );\n // }\n // });\n // }\n // }, [learnosityActivityRef, learnosityItems, navigationMode]);\n\n // useEffect(() => {\n // questions.forEach(question => {\n // const { validation, item_reference, type, question_number, metadata } = question;\n // const responseNeeded = teacherValidationEnabled ? type !== 'clozetext' : true;\n\n // if (responseNeeded && validation?.valid_response) {\n // const value = validation.valid_response.value ?? [];\n\n // if (value?.length === 0) {\n // const altResponses = validation.alt_responses ?? [];\n // const hasAltResponse = altResponses.some(altResponse => altResponse.value.length > 0);\n\n // if (!hasAltResponse) {\n // captureMessage(`Question has no valid response: ${metadata.widget_reference}`, {\n // tags: {\n // 'content-type': 'learnosity',\n // 'activity-reference': learnosityActivityRef,\n // 'item-reference': item_reference,\n // 'question-number': question_number,\n // 'widget-reference': metadata.widget_reference,\n // },\n // fingerprint: [`no-valid-response-${metadata.widget_reference}`], // Add unique fingerprint\n // });\n // loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {\n // item_reference: item_reference,\n // widget_reference: metadata.widget_reference,\n // question_type: type,\n // question_number: question_number,\n // });\n // }\n // }\n // }\n // });\n // }, [learnosityActivityRef, loggerRef, questions, teacherValidationEnabled]);\n\n if (!learnosity) {\n return null;\n }\n\n return (\n <>\n {showNudgeBanner && (\n <Styled.NudgeBannerWrapper\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={1.75}\n $height={WORKSHEET_NUDGE_BANNER_HEIGHT}\n $gap={8}\n $gutter={8}\n $flexGap={8}\n $background={nudgeBannerBackgroundColor}\n $topOffset={layout.topOffset - WORKSHEET_NUDGE_BANNER_HEIGHT}\n >\n {markedAsCompleted ? (\n <Styled.NudgeBannerIcon>\n <Check2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n ) : (\n <Styled.NudgeBannerIcon>\n <Info2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n )}\n\n <Text $renderAs=\"ub3\">{nudgeBannerLabel}</Text>\n </Styled.NudgeBannerWrapper>\n )}\n\n <Styled.WorksheetContainer $background=\"WHITE_1\" $width={containerWidth}>\n {navigationBar === 'top' && (\n <Styled.NavigationContainer $topOffset={topOffset} $height={TOP_NAVIGATION_HEIGHT}>\n <Styled.NavigationWrapper>\n <WorksheetNavigation\n placement=\"top\"\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n behavior={behavior}\n onItemNumberClick={handleItemNumberClick}\n userType={userType}\n summaryVisible={summaryVisible}\n />\n </Styled.NavigationWrapper>\n </Styled.NavigationContainer>\n )}\n {blocker && lastUnlockedQuestion && (\n <Styled.BlockerWrapper $minHeight={minQuestionHeight} $topOffset={topOffset}>\n <FlexView $width={maxQuestionWidth} $justifyContent=\"center\" $alignItems=\"center\">\n <WorksheetBlocker\n blocker={blocker}\n lastUnlockedQuestion={lastUnlockedQuestion}\n studentName={studentName}\n onBlockerClose={handleBlockerClose}\n onOptionalItemAssignment={onOptionalItemAssignment}\n onOptionalItemSkip={onOptionalItemSkip}\n onTeacherValidation={onTeacherValidation}\n />\n </FlexView>\n </Styled.BlockerWrapper>\n )}\n {showUserPointer && (\n <UserPointer\n activeQuestionIndex={activeQuestionIndex}\n onClick={handleItemNumberClick}\n questions={questions}\n bottomOffset={actionbarHeight}\n topOffset={topOffset}\n userType={userType}\n />\n )}\n {showCalculator && (\n <Styled.DesmosCalcWrapper>\n <DesmosCalculator initialPosition={DESMOS_CALC_POSITION} onClose={onCalculatorClose} />\n </Styled.DesmosCalcWrapper>\n )}\n <Styled.ActionbarContainer\n $marginTop={userType === 'TEACHER' && summaryVisible ? '0' : actionbarHeight}\n $height={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n {maximumAttempts !== -2 && (\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\n )}\n {canShowActionBar && (\n <Styled.ActionbarWrapper\n $height={actionbarHeight}\n $width={\n containerStyle === 'card' || maximumAttempts === -2\n ? questionsContainerWidth - 32\n : '100%'\n }\n $isCardView={containerStyle === 'card'}\n >\n <FlexView\n $gutterX={1}\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $width={questionsContainerWidth - 32}\n >\n <WorksheetActionBar\n userType={userType}\n layout={layout}\n behavior={behavior}\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n onCalculatorOpen={onCalculatorOpen}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n appendedQuestionIds={appendedQuestionIds}\n learnosity={learnosity}\n canSubmitWorksheet={canSubmitWorksheet}\n isScribblingEnabled={isScribblingEnabled}\n isSummaryVisible={summaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n setSummaryVisible={setSummaryVisible}\n setBlocker={setBlocker}\n setIsScribblingEnabled={setIsScribblingEnabled}\n setActiveQuestionId={setActiveQuestionId}\n onItemNumberClick={handleItemNumberClick}\n onGoToReview={handleOnGoToReview}\n onResponseChange={onResponseChange}\n onHelp={onHelp}\n onTeacherValidation={onTeacherValidation}\n onSubmit={onSubmit}\n showCalculator={showCalculator}\n loggerRef={loggerRef}\n onSkip={onSkip}\n actionBarRightElement={actionBarRightElement}\n />\n </FlexView>\n </Styled.ActionbarWrapper>\n )}\n {!summaryVisible && questionsScrollable && userType === 'STUDENT' && (\n <Styled.StudentWorksheetSideBar>\n <Navigator />\n </Styled.StudentWorksheetSideBar>\n )}\n </Styled.ActionbarContainer>\n <Styled.QuestionsWrapper\n $actionbarHeight={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n $questionPadding={questionPadding}\n >\n {getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }).map(\n (question, questionIndex) => {\n const { response_id: responseId, is_optional } = question;\n const assignStatus = responses[responseId]?.assignStatus;\n\n if (behavior.teacherValidationEnabled) {\n if (assignStatus === 'skipped') return null;\n\n if (is_optional && assignStatus !== 'assigned' && userType === 'STUDENT') {\n return null;\n }\n }\n\n return (\n <WorksheetQuestion\n key={responseId}\n signedRequest={questionsSignedRequest}\n userType={userType}\n worksheetCompleted={worksheetCompleted}\n question={question}\n response={responses[responseId]}\n nextQuestionId={\n navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT'\n ? lastUnlockedQuestion?.response_id\n : questionIndex < lastUnlockedQuestionIndex\n ? questions[questionIndex + 1]?.response_id\n : undefined\n }\n maxQuestionWidth={maxQuestionWidth}\n learnosity={learnosity}\n isActive={responseId === activeQuestionId}\n isHidden={\n (!questionsScrollable && responseId !== activeQuestionId) || summaryVisible\n }\n canRender={\n activeQuestionIndex > -1 &&\n (questionIndex === activeQuestionIndex ||\n (navigationMode !== 'CURRENT' && questionIndex === activeQuestionIndex + 1))\n }\n appended={appendedQuestionIds.includes(responseId)}\n behavior={behavior}\n layout={layout}\n actionbarHeight={actionbarHeight}\n intersectionObserver={intersectionObserver}\n onMarkForReview={handleMarkForReview}\n onMediaStateChange={handleMediaStateChange}\n userId={userId}\n isScribblingEnabled={isScribblingEnabled}\n onPublishStrokes={onPublishStrokes}\n onReceiveStrokes={onReceiveStrokes}\n initialStrokesData={initialStrokesData}\n onPublishMouseMove={onPublishMouseMove}\n onSubscribeMouseMove={onSubscribeMouseMove}\n setActiveQuestionId={setActiveQuestionId}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n studentId={studentId}\n subjectiveProps={subjectiveProps}\n responses={responses}\n loggerRef={loggerRef}\n />\n );\n },\n )}\n {summaryVisible && (\n <WorksheetSummary\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n behavior={behavior}\n minHeight={minSummaryHeight}\n summaryDescription={summaryDescription}\n summaryVisible={summaryVisible}\n />\n )}\n </Styled.QuestionsWrapper>\n {!summaryVisible && renderSideBar && (\n <WorksheetSideBar\n questionWidth={maxQuestionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n userType={userType}\n height={minQuestionHeight}\n actionbarHeight={actionbarHeight}\n openQuestionFeedbackModal={openQuestionFeedbackModal}\n loggerRef={loggerRef}\n studentId={studentId}\n enableStickers={enableStickers ?? false}\n />\n )}\n </Styled.WorksheetContainer>\n </>\n );\n};\n\nconst Worksheet = memo(forwardRef(WorksheetComp));\n\nexport default Worksheet;\n"],"names":["WorksheetComp","props","ref","userType","studentName","questionsSignedRequest","worksheetName","initialResponseId","initialItemIndex","learnosityItems","learnosityResponses","layout","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","studentId","subjectiveProps","canShowActionBar","actionBarRightElement","initialQuestion","navigationMode","teacherValidationEnabled","maximumAttempts","enableStickers","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","questionPadding","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","lastUnlockedQuestion","lastUnlockedQuestionResponse","nudgeBannerBackgroundColor","nudgeBannerLabel","getWorksheetNudgeBannerInfo","initialQuestionId","getInitialQuestionId","activeQuestionId","setActiveQuestionId","intersectionObserver","useGetActiveQuestionId","activeQuestionIndex","question","summaryVisible","setSummaryVisible","blocker","setBlocker","showCalculator","setShowCalculator","getTimeSpentOnQuestion","useTimeSpentOnQuestions","handleMediaStateChange","useCallback","mediaType","mediaState","key","prevResponses","questionId","questionMeta","getQuestionMetadata","updatedResponse","handleMarkForReview","markedForReview","handleBlockerClose","prevBlocker","lastUnlockedQuestionId","_a","scrollToQuestion","handleItemNumberClick","onCalculatorClose","onCalculatorOpen","handleOnGoToReview","useEffect","activeQuestion","useCreateImperativeHandle","useLayoutEffect","timer","getDeviceDetails","item_type","instructor_stimulus","is_optional","jsxs","Fragment","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","jsx","Styled.NudgeBannerIcon","Check2Icon","Info2Icon","Text","Styled.WorksheetContainer","Styled.NavigationContainer","TOP_NAVIGATION_HEIGHT","Styled.NavigationWrapper","WorksheetNavigation","Styled.BlockerWrapper","FlexView","WorksheetBlocker","UserPointer","Styled.DesmosCalcWrapper","DesmosCalculator","DESMOS_CALC_POSITION","Styled.ActionbarContainer","QuestionTips","Styled.ActionbarWrapper","WorksheetActionBar","Styled.StudentWorksheetSideBar","Navigator","Styled.QuestionsWrapper","getRenderableQuestions","questionIndex","responseId","assignStatus","WorksheetQuestion","_b","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuDA,MAAMA,KAA0E,CAACC,IAAOC,OAAQ;AACxF,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,aAAAC,KAAc;AAAA,IACd,wBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA;AAAA,IAEA,iBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,IACnB,uBAAAC;AAAA,EACE,IAAA9C,IACE;AAAA,IACJ,iBAAA+C;AAAA,IACA,gBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,gBAAAC;AAAA,EACE,IAAAxC,GACE;AAAA,IACJ,gBAAAyC;AAAA,IACA,gBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC,KAAkB;AAAA,IAClB,iBAAAC;AAAA,EACE,IAAAnD,GAEE,EAAE,iBAAAoD,GAAiB,kBAAAC,GAAkB,yBAAAC,EAA4B,IAAAC;AAAA,IACrE,MAAMC,GAAuB1D,GAAiBE,CAAM;AAAA,IACpD,CAACA,GAAQF,CAAe;AAAA,EAAA,GAGpB,CAAC2D,CAAS,IAAIC;AAAA,IAAS,MAC3BC,GAAsB7D,GAAiB;AAAA,MACrC,WACEyC,MAA4BD,MAAmB,cAAcA,MAAmB;AAAA,MAClF,UAAUA,MAAmB;AAAA,IAAA,CAC9B;AAAA,EAAA,GAGG,CAACsB,GAAWC,CAAY,IAAIH;AAAA,IAChC,MAAM3D,MAAuB+D,GAAoBL,CAAS;AAAA,EAAA,GAEtD,CAACM,IAAqBC,EAAsB,IAAIN,EAAS,EAAK,GAC9DO,IAA4BV;AAAA,IAChC,MACEjB,MAAmB,SACf4B,GAA6B;AAAA,MAC3B,WAAAT;AAAA,MACA,WAAAG;AAAA,MACA,UAAA3D;AAAA,MACA,UAAAT;AAAA,IAAA,CACD,IACDiE,EAAU,SAAS;AAAA,IACzB,CAACxD,GAAUqC,GAAgBmB,GAAWG,GAAWpE,CAAQ;AAAA,EAAA,GAGrD2E,IAAuBV,EAAUQ,CAAyB,GAC1DG,IAA+BR,GAAUO,KAAA,gBAAAA,EAAsB,gBAAe,EAAE,GAEhF,EAAE,uBAAuBE,IAA4B,OAAOC,GAAA,IAChEC,GAA4B/E,GAAU,EAAQY,CAAkB,GAE5D,CAACoE,CAAiB,IAAId;AAAA,IAAS,MACnCe,GAAqB;AAAA,MACnB,WAAAhB;AAAA,MACA,iBAAApB;AAAA,MACA,2BAA2B6B,GAA6B;AAAA,QACtD,WAAAT;AAAA,QACA,WAAAG;AAAA,QACA,UAAA3D;AAAA,QACA,UAAAT;AAAA,MAAA,CACD;AAAA,MACD,mBAAAI;AAAA,MACA,kBAAAC;AAAA,IAAA,CACD;AAAA,EAAA,GAGG,EAAE,kBAAA6E,GAAkB,qBAAAC,GAAqB,sBAAAC,EAAqB,IAClEC,GAAuBL,CAAiB,GACpCM,IAAsBvB;AAAA,IAC1B,MAAME,EAAU,UAAU,CAAYsB,MAAAA,EAAS,gBAAgBL,CAAgB;AAAA,IAC/E,CAACA,GAAkBjB,CAAS;AAAA,EAAA,GAExB,CAACuB,GAAgBC,CAAiB,IAAIvB,EAAS,EAAK,GACpD,CAACwB,IAASC,CAAU,IAAIzB,EAA4B,GAEpD,CAAC0B,IAAgBC,EAAiB,IAAI3B,EAAS,EAAK,GACpD4B,KAAyBC,GAAwBtF,GAAU2D,GAAWc,CAAgB,GAEtFc,KAAyBC;AAAA,IAC7B,CAACV,GAAUW,GAAWC,MAAe;AAC7B,YAAAC,IAAMF,MAAc,eAAe,aAAa;AAEtD,MAAKE,MAEDvF,IACFwD,EAAa,CAAiBgC,MAAA;AAC5B,cAAMC,IAAaf,EAAS,aACtBgB,IAAeC,GAAoBvC,GAAWqC,CAAU;AAE1D,YAAA,CAACC,EAAqB,QAAAF;AAE1B,cAAMI,KAAkB;AAAA,UACtB,GAAGF;AAAA,UACH,GAAGF,EAAcC,CAAU;AAAA,UAC3B,CAACF,CAAG,GAAGD;AAAA,QAAA;AAGU,eAAAtF,KAAA,QAAAA,EAAA;AAAA,UACjB,YAAYyF;AAAA,UACZ,UAAUG;AAAA,UACV,cAAc;AAAA,UACd,UAAAlB;AAAA,QAAA,IAGK;AAAA,UACL,GAAGc;AAAA,UACH,CAACC,CAAU,GAAGG;AAAA,QAAA;AAAA,MAChB,CACD,IACQzF,KACUA,EAAAuE,GAAUW,GAAWC,CAAU;AAAA,IAEtD;AAAA,IACA,CAACnF,GAAoBH,GAAkBoD,CAAS;AAAA,EAAA,GAG5CyC,KAAsBT;AAAA,IAC1B,CAACK,GAAoBK,MAA6B;AAChD,MAAAtC,EAAa,CAAiBgC,MAAA;AACtB,cAAAE,IAAeC,GAAoBvC,GAAWqC,CAAU;AAE1D,eAACC,IAEE;AAAA,UACL,GAAGF;AAAA,UACH,CAACC,CAAU,GAAG;AAAA,YACZ,GAAGC;AAAA,YACH,GAAGF,EAAcC,CAAU;AAAA,YAC3B,iBAAAK;AAAA,UACF;AAAA,QAAA,IARwBN;AAAA,MAS1B,CACD;AAAA,IACH;AAAA,IACA,CAACpC,CAAS;AAAA,EAAA,GAGN2C,IAAqBX,EAAY,MAAM;AAC3C,IAAAN,EAAW,CAAekB,MAAA;;AACxB,UAAIA,GAAa;AACT,cAAAC,KAAyBC,IAAA9C,EAAUQ,CAAyB,MAAnC,gBAAAsC,EAAsC;AAErE,QAAID,KACF,WAAW,MAAM;AACf,UAAAE,EAAiBF,CAAsB;AAAA,WACtC,EAAE;AAAA,MAET;AAAA,IAEO,CACR;AAAA,EAAA,GACA,CAACrC,GAA2BR,CAAS,CAAC,GAEnCgD,IAAwBhB;AAAA,IAC5B,CAACK,MAAuB;AACtB,MAAAb,EAAkB,EAAK,GAEnBnC,IACoB,sBAAA,MAAM0D,EAAiBV,CAAU,CAAC,IAExDnB,EAAoBmB,CAAU;AAAA,IAElC;AAAA,IACA,CAAChD,GAAqB6B,CAAmB;AAAA,EAAA,GAGrC+B,KAAoBjB,EAAY,MAAM;AAC1C,IAAAJ,GAAkB,EAAK;AAAA,EACzB,GAAG,CAAE,CAAA,GAECsB,KAAmBlB,EAAY,MAAM;AACzC,IAAAJ,GAAkB,EAAI;AAAA,EACxB,GAAG,CAAE,CAAA,GAECuB,KAAqBnB,EAAY,MAAM;AAC3C,IAAAR,EAAkB,EAAI;AAAA,EACxB,GAAG,CAAE,CAAA;AAqLL,SAnLA4B,EAAU,MAAM;AACR,UAAAC,IAAiBrD,EAAUqB,CAAmB;AAEpD,IAAIgC,KAAkBrF,KACpBA,EAAuBqF,CAAc;AAAA,EAEtC,GAAA,CAACrF,GAAwBgC,GAAWqB,CAAmB,CAAC,GAE3DiC,GAA0BxH,IAAK;AAAA,IAC7B,UAAAU;AAAA,IACA,WAAAwD;AAAA,IACA,cAAAI;AAAA,IACA,kBAAAxD;AAAA,IACA,uBAAAC;AAAA,IACA,wBAAAgF;AAAA,EAAA,CACD,GAEDuB,EAAU,MACD,MAAM;AACX,IAAAjC,EAAqB,WAAW;AAAA,EAAA,GAEjC,CAACA,CAAoB,CAAC,GAEzBiC,EAAU,MAAM;AACd,IAAItG,KAAqBqD,KACvBrD,EAAkBqD,CAAS;AAAA,EAC7B,GACC,CAACrD,GAAmBqD,CAAS,CAAC,GAEjCiD,EAAU,MAAM;AACd,IAAI3G,KACF2D,EAAa3D,CAAgB;AAAA,EAC/B,GACC,CAACA,CAAgB,CAAC,GAErB8G,GAAgB,MAAM;AAChB,QAAAC;AAEJ,WAAIlG,KAAcyD,MACZ0C,GAAA,EAAmB,iBAAiB,WACtCD,IAAQ,WAAW,MAAM;AACvB,MAAAT,EAAiBhC,CAAiB;AAAA,OACjC,GAAG,IAENgC,EAAiBhC,CAAiB,IAI/B,MAAM;AACX,mBAAayC,CAAK;AAAA,IAAA;AAAA,EAEnB,GAAA,CAAClG,GAAYyD,GAAmBxB,CAAS,CAAC,GAE7C6D,EAAU,MAAM;AACV,QAAA5G,EAAS,4BAA4BkE,GAAsB;AAC7D,YAAM,EAAE,WAAAgD,GAAW,qBAAAC,GAAqB,aAAAC,EAAA,IAAgBlD;AAExD,MAAI3E,MAAa,cACX2H,MAAc,iBAAiBC,MAAwB,gBAEvDhD,KAAA,QAAAA,EAA8B,sBAC9B,EAACA,KAAA,QAAAA,EAA8B,sBAE/Be,EAAW,8BAA8B,IAC/Bf,KAAA,QAAAA,EAA8B,qBAGrBgC,MAFnBjB,EAAW,kCAAkC,IAItCkC,IACJjD,KAAA,QAAAA,EAA8B,eAGdgC,MAFnBjB,EAAW,2BAA2B,IAI9BkC,KACSjB;IAGzB;AAAA,EAAA,GACC;AAAA,IACDnG,EAAS;AAAA,IACTmG;AAAA,IACAjC;AAAA,IACAC;AAAA,IACA5E;AAAA,EAAA,CACD,GAEDqH,EAAU,MAAM;AACV,QAAA5G,EAAS,4BAA4BkE,GAAsB;AACvD,YAAA,EAAE,WAAAgD,GAAW,qBAAAC,EAAwB,IAAAjD;AAE3C,MAAI3E,MAAa,aACX2H,MAAc,iBAAiBC,MAAwB,kBACrDhD,KAAA,QAAAA,EAA8B,qBACXvD,KAAA,QAAAA,MAEDD,KAAA,QAAAA;AAAA,IAI5B;AAAA,EAAA,GACC;AAAA,IACDX,EAAS;AAAA,IACTkE;AAAA,IACAC,KAAA,gBAAAA,EAA8B;AAAA,IAC9BxD;AAAA,IACAC;AAAA,IACArB;AAAA,EAAA,CACD,GAsEIuB,IAMA,gBAAAuG,EAAAC,IAAA,EAAA,UAAA;AAAA,IACCpH,MAAA,gBAAAmH;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,iBAAgB;AAAA,QAChB,aAAY;AAAA,QACZ,QAAO;AAAA,QACP,UAAU;AAAA,QACV,SAASC;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,QACV,aAAapD;AAAA,QACb,YAAYrE,EAAO,YAAYyH;AAAA,QAE9B,UAAA;AAAA,UACCrH,IAAA,gBAAAsH,EAACC,IAAA,EACC,4BAACC,IAAW,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,EAAA,CACrC,IAEC,gBAAAF,EAAAC,IAAA,EACC,UAAA,gBAAAD,EAACG,MAAU,OAAO,IAAI,QAAQ,GAAA,CAAI,EACpC,CAAA;AAAA,UAGD,gBAAAH,EAAAI,IAAA,EAAK,WAAU,OAAO,UAAiBxD,IAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1C;AAAA,sBAGDyD,IAAA,EAA0B,aAAY,WAAU,QAAQpF,IACtD,UAAA;AAAA,MAAAI,OAAkB,SACjB,gBAAA2E,EAACM,IAAA,EAA2B,YAAYhF,GAAW,SAASiF,IAC1D,UAAA,gBAAAP,EAACQ,IAAA,EACC,UAAA,gBAAAR;AAAA,QAACS;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,WAAA1E;AAAA,UACA,WAAAG;AAAA,UACA,qBAAAkB;AAAA,UACA,2BAAAb;AAAA,UACA,UAAAhE;AAAA,UACA,mBAAmBwG;AAAA,UACnB,UAAAjH;AAAA,UACA,gBAAAwF;AAAA,QAAA;AAAA,SAEJ,EACF,CAAA;AAAA,MAEDE,MAAWf,KACV,gBAAAuD,EAACU,IAAA,EAAsB,YAAYxF,IAAmB,YAAYI,GAChE,4BAACqF,IAAS,EAAA,QAAQhF,GAAkB,iBAAgB,UAAS,aAAY,UACvE,UAAA,gBAAAqE;AAAA,QAACY;AAAA,QAAA;AAAA,UACC,SAAApD;AAAA,UACA,sBAAAf;AAAA,UACA,aAAA1E;AAAA,UACA,gBAAgB2G;AAAA,UAChB,0BAAA1F;AAAA,UACA,oBAAAC;AAAA,UACA,qBAAAF;AAAA,QAAA;AAAA,SAEJ,EACF,CAAA;AAAA,MAEDyC,MACC,gBAAAwE;AAAA,QAACa;AAAA,QAAA;AAAA,UACC,qBAAAzD;AAAA,UACA,SAAS2B;AAAA,UACT,WAAAhD;AAAA,UACA,cAAcL;AAAA,UACd,WAAAJ;AAAA,UACA,UAAAxD;AAAA,QAAA;AAAA,MACF;AAAA,MAED4F,MACE,gBAAAsC,EAAAc,IAAA,EACC,UAAC,gBAAAd,EAAAe,IAAA,EAAiB,iBAAiBC,IAAsB,SAAShC,GAAA,CAAmB,EACvF,CAAA;AAAA,MAEF,gBAAAY;AAAA,QAACqB;AAAAA,QAAA;AAAA,UACC,YAAYnJ,MAAa,aAAawF,IAAiB,MAAM5B;AAAA,UAC7D,SAASA;AAAA,UACT,aAAaV,MAAmB;AAAA,UAE/B,UAAA;AAAA,YAAAF,OAAoB,MACnB,gBAAAkF;AAAA,cAACkB;AAAA,cAAA;AAAA,gBACC,OAAOtF,IAA0B;AAAA,gBACjC,UAAUG,EAAUqB,CAAmB;AAAA,gBACvC,YAAA/D;AAAA,gBACA,UAAAvB;AAAA,cAAA;AAAA,YACF;AAAA,YAED2C,MACC,gBAAAuF;AAAA,cAACmB;AAAAA,cAAA;AAAA,gBACC,SAASzF;AAAA,gBACT,QACEV,MAAmB,UAAUF,OAAoB,KAC7Cc,IAA0B,KAC1B;AAAA,gBAEN,aAAaZ,MAAmB;AAAA,gBAEhC,UAAA,gBAAAgF;AAAA,kBAACW;AAAA,kBAAA;AAAA,oBACC,UAAU;AAAA,oBACV,gBAAe;AAAA,oBACf,iBAAgB;AAAA,oBAChB,aAAY;AAAA,oBACZ,QAAQ/E,IAA0B;AAAA,oBAElC,UAAA,gBAAAoE;AAAA,sBAACoB;AAAA,sBAAA;AAAA,wBACC,UAAAtJ;AAAA,wBACA,QAAAQ;AAAA,wBACA,UAAAC;AAAA,wBACA,eAAAN;AAAA,wBACA,WAAA8D;AAAA,wBACA,WAAAG;AAAA,wBACA,kBAAA+C;AAAA,wBACA,qBAAA7B;AAAA,wBACA,2BAAAb;AAAA,wBACA,qBAAAjD;AAAA,wBACA,YAAAD;AAAA,wBACA,oBAAAa;AAAA,wBACA,qBAAAmC;AAAA,wBACA,kBAAkBiB;AAAA,wBAClB,cAAAnB;AAAA,wBACA,wBAAAyB;AAAA,wBACA,mBAAAL;AAAA,wBACA,YAAAE;AAAA,wBACA,wBAAAnB;AAAA,wBACA,qBAAAW;AAAA,wBACA,mBAAmB8B;AAAA,wBACnB,cAAcG;AAAA,wBACd,kBAAAvG;AAAA,wBACA,QAAAiB;AAAA,wBACA,qBAAAb;AAAA,wBACA,UAAAK;AAAA,wBACA,gBAAAsE;AAAA,wBACA,WAAAvD;AAAA,wBACA,QAAAG;AAAA,wBACA,uBAAAI;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YACF;AAAA,YAED,CAAC4C,KAAkBlC,KAAuBtD,MAAa,aACrD,gBAAAkI,EAAAqB,IAAA,EACC,UAAC,gBAAArB,EAAAsB,IAAA,CAAA,CAAU,EACb,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,MACA,gBAAA1B;AAAA,QAAC2B;AAAAA,QAAA;AAAA,UACC,kBAAkB7F;AAAA,UAClB,aAAaV,MAAmB;AAAA,UAChC,kBAAkBS;AAAA,UAEjB,UAAA;AAAA,YAAA+F,GAAuB,EAAE,WAAAzF,GAAW,2BAAAQ,GAA2B,UAAAzE,EAAA,CAAU,EAAE;AAAA,cAC1E,CAACuF,GAAUoE,MAAkB;;AAC3B,sBAAM,EAAE,aAAaC,GAAY,aAAA/B,EAAA,IAAgBtC,GAC3CsE,KAAe9C,IAAA3C,EAAUwF,CAAU,MAApB,gBAAA7C,EAAuB;AAE5C,uBAAItG,EAAS,6BACPoJ,MAAiB,aAEjBhC,KAAegC,MAAiB,cAAc7J,MAAa,aACtD,OAKT,gBAAAkI;AAAA,kBAAC4B;AAAA,kBAAA;AAAA,oBAEC,eAAe5J;AAAA,oBACf,UAAAF;AAAA,oBACA,oBAAAyB;AAAA,oBACA,UAAA8D;AAAA,oBACA,UAAUnB,EAAUwF,CAAU;AAAA,oBAC9B,gBACE9G,MAAmB,cAAcA,MAAmB,YAChD6B,KAAA,gBAAAA,EAAsB,cACtBgF,IAAgBlF,KACdsF,IAAA9F,EAAU0F,IAAgB,CAAC,MAA3B,gBAAAI,EAA8B,cAC9B;AAAA,oBAER,kBAAAlG;AAAA,oBACA,YAAAtC;AAAA,oBACA,UAAUqI,MAAe1E;AAAA,oBACzB,UACG,CAAC5B,KAAuBsG,MAAe1E,KAAqBM;AAAA,oBAE/D,WACEF,IAAsB,OACrBqE,MAAkBrE,KAChBxC,MAAmB,aAAa6G,MAAkBrE,IAAsB;AAAA,oBAE7E,UAAU9D,EAAoB,SAASoI,CAAU;AAAA,oBACjD,UAAAnJ;AAAA,oBACA,QAAAD;AAAA,oBACA,iBAAAoD;AAAA,oBACA,sBAAAwB;AAAA,oBACA,iBAAiBsB;AAAA,oBACjB,oBAAoBV;AAAA,oBACpB,QAAAtE;AAAA,oBACA,qBAAA6C;AAAA,oBACA,kBAAA5C;AAAA,oBACA,kBAAAC;AAAA,oBACA,oBAAAC;AAAA,oBACA,oBAAAE;AAAA,oBACA,sBAAAC;AAAA,oBACA,qBAAAmD;AAAA,oBACA,iBAAA7C;AAAA,oBACA,gBAAAC;AAAA,oBACA,WAAAE;AAAA,oBACA,iBAAAC;AAAA,oBACA,WAAA0B;AAAA,oBACA,WAAA/B;AAAA,kBAAA;AAAA,kBA5CKuH;AAAA,gBAAA;AAAA,cA+CX;AAAA,YACF;AAAA,YACCpE,KACC,gBAAA0C;AAAA,cAAC8B;AAAA,cAAA;AAAA,gBACC,eAAA7J;AAAA,gBACA,WAAA8D;AAAA,gBACA,WAAAG;AAAA,gBACA,qBAAAkB;AAAA,gBACA,2BAAAb;AAAA,gBACA,mBAAmBwC;AAAA,gBACnB,UAAAxG;AAAA,gBACA,WAAW4C;AAAA,gBACX,oBAAAlB;AAAA,gBACA,gBAAAqD;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,MACC,CAACA,KAAkB/B,MAClB,gBAAAyE;AAAA,QAAC+B;AAAA,QAAA;AAAA,UACC,eAAepG;AAAA,UACf,WAAAI;AAAA,UACA,qBAAAqB;AAAA,UACA,YAAA/D;AAAA,UACA,UAAAvB;AAAA,UACA,QAAQoD;AAAA,UACR,iBAAAQ;AAAA,UACA,2BAAA1B;AAAA,UACA,WAAAG;AAAA,UACA,WAAAI;AAAA,UACA,gBAAgBQ,MAAkB;AAAA,QAAA;AAAA,MACpC;AAAA,IAAA,GAEJ;AAAA,EACF,EAAA,CAAA,IA5PO;AA8PX,GAEMiH,KAAYC,GAAKC,GAAWvK,EAAa,CAAC;"}
1
+ {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\n// import { captureMessage } from '@sentry/browser';\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport Info2Icon from '../../../assets/line-icons/icons/info2';\nimport getDeviceDetails from '../../../helpers/get-device-details';\nimport DesmosCalculator from '../../sheet-tools/desmos-calculator/desmos-calculator';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\n// import EVENTS from '../constants/events';\nimport UserPointer from '../user-pointer-pin/user-pin';\nimport {\n DESMOS_CALC_POSITION,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from './constants';\nimport useCreateImperativeHandle from './hooks/use-create-imperative-handle';\nimport useGetActiveQuestionId from './hooks/use-get-active-question-id';\nimport useTimeSpentOnQuestions from './hooks/use-time-on-questions';\nimport QuestionTips from './question-tips';\nimport WorksheetActionBar from './worksheet-action-bar/worksheet-action-bar';\nimport WorksheetBlocker from './worksheet-blocker/worksheet-blocker';\nimport type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\nimport {\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetNudgeBannerInfo,\n scrollToQuestion,\n} from './worksheet-helpers';\nimport WorksheetNavigation from './worksheet-navigation/worksheet-navigation';\nimport WorksheetQuestion from './worksheet-question/worksheet-question';\nimport Navigator from './worksheet-sidebar/navigator';\nimport WorksheetSideBar from './worksheet-sidebar/sidebar';\nimport * as Styled from './worksheet-styled';\nimport WorksheetSummary from './worksheet-summary/worksheet-summary';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\n\n/**\n *\n * @param learnosityItems cannot not be changed between the renders\n */\nconst WorksheetComp: ForwardRefRenderFunction<IWorksheetRef, IWorksheetProps> = (props, ref) => {\n const {\n userType,\n studentName = 'Student',\n questionsSignedRequest,\n worksheetName,\n initialResponseId,\n initialItemIndex,\n // learnosityActivityRef,\n learnosityItems,\n learnosityResponses,\n layout,\n behavior,\n updatedResponses,\n showNudgeBanner,\n markedAsCompleted,\n onResponseChange,\n onBulkResponsesChange,\n onResponsesChange,\n onMediaStateChange,\n onTeacherValidation,\n onOptionalItemAssignment,\n onOptionalItemSkip,\n onExitTicketStart,\n onExitTicketSubmit,\n onSubmit,\n learnosity,\n appendedQuestionIds,\n worksheetCompleted,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n initialStrokesData,\n onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n studentId,\n studentClassroomId,\n subjectiveProps,\n canShowActionBar = true,\n actionBarRightElement,\n } = props;\n const { initialQuestion, navigationMode, teacherValidationEnabled, maximumAttempts } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n questionPadding,\n } = layout;\n\n const { actionbarHeight, maxQuestionWidth, questionsContainerWidth } = useMemo(\n () => getWorksheetDimensions(learnosityItems, layout),\n [layout, learnosityItems],\n );\n\n const [questions] = useState(() =>\n getQuestionsFromItems(learnosityItems, {\n sectioned:\n teacherValidationEnabled && navigationMode !== 'ADAPTIVE' && navigationMode !== 'CURRENT',\n adaptive: navigationMode === 'ADAPTIVE',\n }),\n );\n\n const [responses, setResponses] = useState<Record<string, IWorksheetResponse>>(\n () => learnosityResponses ?? getInitialResponses(questions),\n );\n const [isScribblingEnabled, setIsScribblingEnabled] = useState(false);\n const lastUnlockedQuestionIndex = useMemo(\n () =>\n navigationMode !== 'OPEN'\n ? getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n })\n : questions.length - 1,\n [behavior, navigationMode, questions, responses, userType],\n );\n\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex];\n const lastUnlockedQuestionResponse = responses[lastUnlockedQuestion?.response_id ?? ''];\n\n const { bannerBackgroundColor: nudgeBannerBackgroundColor, label: nudgeBannerLabel } =\n getWorksheetNudgeBannerInfo(userType, Boolean(markedAsCompleted));\n\n const [initialQuestionId] = useState(() =>\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex: getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n }),\n initialResponseId,\n initialItemIndex,\n }),\n );\n\n const { activeQuestionId, setActiveQuestionId, intersectionObserver } =\n useGetActiveQuestionId(initialQuestionId);\n const activeQuestionIndex = useMemo(\n () => questions.findIndex(question => question.response_id === activeQuestionId),\n [activeQuestionId, questions],\n );\n const [summaryVisible, setSummaryVisible] = useState(false);\n const [blocker, setBlocker] = useState<TWorksheetBlocker>();\n\n const [showCalculator, setShowCalculator] = useState(false);\n const getTimeSpentOnQuestion = useTimeSpentOnQuestions(behavior, responses, activeQuestionId);\n\n const handleMediaStateChange = useCallback<NonNullable<typeof onMediaStateChange>>(\n (question, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n if (onResponseChange) {\n setResponses(prevResponses => {\n const questionId = question.response_id;\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n const updatedResponse = {\n ...questionMeta,\n ...prevResponses[questionId],\n [key]: mediaState,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: updatedResponse,\n isNewAttempt: false,\n question,\n });\n\n return {\n ...prevResponses,\n [questionId]: updatedResponse,\n };\n });\n } else if (onMediaStateChange) {\n onMediaStateChange(question, mediaType, mediaState);\n }\n },\n [onMediaStateChange, onResponseChange, questions],\n );\n\n const handleMarkForReview = useCallback(\n (questionId: string, markedForReview: boolean) => {\n setResponses(prevResponses => {\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n return {\n ...prevResponses,\n [questionId]: {\n ...questionMeta,\n ...prevResponses[questionId],\n markedForReview,\n },\n };\n });\n },\n [questions],\n );\n\n const handleBlockerClose = useCallback(() => {\n setBlocker(prevBlocker => {\n if (prevBlocker) {\n const lastUnlockedQuestionId = questions[lastUnlockedQuestionIndex]?.response_id;\n\n if (lastUnlockedQuestionId) {\n setTimeout(() => {\n scrollToQuestion(lastUnlockedQuestionId);\n }, 50);\n }\n }\n\n return undefined;\n });\n }, [lastUnlockedQuestionIndex, questions]);\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setSummaryVisible(false);\n\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n },\n [questionsScrollable, setActiveQuestionId],\n );\n\n const onCalculatorClose = useCallback(() => {\n setShowCalculator(false);\n }, []);\n\n const onCalculatorOpen = useCallback(() => {\n setShowCalculator(true);\n }, []);\n\n const handleOnGoToReview = useCallback(() => {\n setSummaryVisible(true);\n }, []);\n\n useEffect(() => {\n const activeQuestion = questions[activeQuestionIndex];\n\n if (activeQuestion && onActiveQuestionChange) {\n onActiveQuestionChange(activeQuestion);\n }\n }, [onActiveQuestionChange, questions, activeQuestionIndex]);\n\n useCreateImperativeHandle(ref, {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (onResponsesChange && responses) {\n onResponsesChange(responses);\n }\n }, [onResponsesChange, responses]);\n\n useEffect(() => {\n if (updatedResponses) {\n setResponses(updatedResponses);\n }\n }, [updatedResponses]);\n\n useLayoutEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (learnosity && initialQuestionId) {\n if (getDeviceDetails().browser_name === 'Safari') {\n timer = setTimeout(() => {\n scrollToQuestion(initialQuestionId);\n }, 400);\n } else {\n scrollToQuestion(initialQuestionId);\n }\n }\n\n return () => {\n clearTimeout(timer);\n };\n }, [learnosity, initialQuestionId, topOffset]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus, is_optional } = lastUnlockedQuestion;\n\n if (userType === 'TEACHER') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (\n lastUnlockedQuestionResponse?.submittedByStudent &&\n !lastUnlockedQuestionResponse?.validatedByTeacher\n ) {\n setBlocker('exit-ticket-review-available');\n } else if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n setBlocker('exit-ticket-teacher-intervention');\n } else {\n handleBlockerClose();\n }\n } else if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n setBlocker('optional-items-assignment');\n } else {\n handleBlockerClose();\n }\n } else if (!is_optional) {\n handleBlockerClose();\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n handleBlockerClose,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n userType,\n ]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus } = lastUnlockedQuestion;\n\n if (userType === 'STUDENT') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (lastUnlockedQuestionResponse?.submittedByStudent) {\n onExitTicketSubmit?.();\n } else {\n onExitTicketStart?.();\n }\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse?.submittedByStudent,\n onExitTicketStart,\n onExitTicketSubmit,\n userType,\n ]);\n\n // useEffect(() => {\n // if (navigationMode === 'CURRENT') {\n // learnosityItems.forEach(({ reference, questions: itemQuestions }) => {\n // if (itemQuestions.length < 3) {\n // captureMessage(`Diagnostics item has Less than 3 questions: ${reference}`, {\n // tags: {\n // 'content-type': 'learnosity',\n // 'activity-reference': learnosityActivityRef,\n // 'item-reference': reference,\n // },\n // fingerprint: [`diagnostics-item-questions-count-${reference}`], // Add unique fingerprint\n // });\n // } else if (\n // itemQuestions[0]?.instructor_stimulus !== 'Try' ||\n // itemQuestions[1]?.instructor_stimulus !== 'Learn' ||\n // itemQuestions[2]?.instructor_stimulus !== 'Apply'\n // ) {\n // captureMessage(\n // `Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${reference}`,\n // {\n // tags: {\n // 'content-type': 'learnosity',\n // 'activity-reference': learnosityActivityRef,\n // 'item-reference': reference,\n // },\n // fingerprint: [`diagnostics-item-questions-sequence-${reference}`], // Add unique fingerprint\n // },\n // );\n // }\n // });\n // }\n // }, [learnosityActivityRef, learnosityItems, navigationMode]);\n\n // useEffect(() => {\n // questions.forEach(question => {\n // const { validation, item_reference, type, question_number, metadata } = question;\n // const responseNeeded = teacherValidationEnabled ? type !== 'clozetext' : true;\n\n // if (responseNeeded && validation?.valid_response) {\n // const value = validation.valid_response.value ?? [];\n\n // if (value?.length === 0) {\n // const altResponses = validation.alt_responses ?? [];\n // const hasAltResponse = altResponses.some(altResponse => altResponse.value.length > 0);\n\n // if (!hasAltResponse) {\n // captureMessage(`Question has no valid response: ${metadata.widget_reference}`, {\n // tags: {\n // 'content-type': 'learnosity',\n // 'activity-reference': learnosityActivityRef,\n // 'item-reference': item_reference,\n // 'question-number': question_number,\n // 'widget-reference': metadata.widget_reference,\n // },\n // fingerprint: [`no-valid-response-${metadata.widget_reference}`], // Add unique fingerprint\n // });\n // loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {\n // item_reference: item_reference,\n // widget_reference: metadata.widget_reference,\n // question_type: type,\n // question_number: question_number,\n // });\n // }\n // }\n // }\n // });\n // }, [learnosityActivityRef, loggerRef, questions, teacherValidationEnabled]);\n\n if (!learnosity) {\n return null;\n }\n\n return (\n <>\n {showNudgeBanner && (\n <Styled.NudgeBannerWrapper\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={1.75}\n $height={WORKSHEET_NUDGE_BANNER_HEIGHT}\n $gap={8}\n $gutter={8}\n $flexGap={8}\n $background={nudgeBannerBackgroundColor}\n $topOffset={layout.topOffset - WORKSHEET_NUDGE_BANNER_HEIGHT}\n >\n {markedAsCompleted ? (\n <Styled.NudgeBannerIcon>\n <Check2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n ) : (\n <Styled.NudgeBannerIcon>\n <Info2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n )}\n\n <Text $renderAs=\"ub3\">{nudgeBannerLabel}</Text>\n </Styled.NudgeBannerWrapper>\n )}\n\n <Styled.WorksheetContainer $background=\"WHITE_1\" $width={containerWidth}>\n {navigationBar === 'top' && (\n <Styled.NavigationContainer $topOffset={topOffset} $height={TOP_NAVIGATION_HEIGHT}>\n <Styled.NavigationWrapper>\n <WorksheetNavigation\n placement=\"top\"\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n behavior={behavior}\n onItemNumberClick={handleItemNumberClick}\n userType={userType}\n summaryVisible={summaryVisible}\n />\n </Styled.NavigationWrapper>\n </Styled.NavigationContainer>\n )}\n {blocker && lastUnlockedQuestion && (\n <Styled.BlockerWrapper $minHeight={minQuestionHeight} $topOffset={topOffset}>\n <FlexView $width={maxQuestionWidth} $justifyContent=\"center\" $alignItems=\"center\">\n <WorksheetBlocker\n blocker={blocker}\n lastUnlockedQuestion={lastUnlockedQuestion}\n studentName={studentName}\n onBlockerClose={handleBlockerClose}\n onOptionalItemAssignment={onOptionalItemAssignment}\n onOptionalItemSkip={onOptionalItemSkip}\n onTeacherValidation={onTeacherValidation}\n />\n </FlexView>\n </Styled.BlockerWrapper>\n )}\n {showUserPointer && (\n <UserPointer\n activeQuestionIndex={activeQuestionIndex}\n onClick={handleItemNumberClick}\n questions={questions}\n bottomOffset={actionbarHeight}\n topOffset={topOffset}\n userType={userType}\n />\n )}\n {showCalculator && (\n <Styled.DesmosCalcWrapper>\n <DesmosCalculator initialPosition={DESMOS_CALC_POSITION} onClose={onCalculatorClose} />\n </Styled.DesmosCalcWrapper>\n )}\n <Styled.ActionbarContainer\n $marginTop={userType === 'TEACHER' && summaryVisible ? '0' : actionbarHeight}\n $height={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n {maximumAttempts !== -2 && (\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\n )}\n {canShowActionBar && (\n <Styled.ActionbarWrapper\n $height={actionbarHeight}\n $width={\n containerStyle === 'card' || maximumAttempts === -2\n ? questionsContainerWidth - 32\n : '100%'\n }\n $isCardView={containerStyle === 'card'}\n >\n <FlexView\n $gutterX={1}\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $width={questionsContainerWidth - 32}\n >\n <WorksheetActionBar\n userType={userType}\n layout={layout}\n behavior={behavior}\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n onCalculatorOpen={onCalculatorOpen}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n appendedQuestionIds={appendedQuestionIds}\n learnosity={learnosity}\n canSubmitWorksheet={canSubmitWorksheet}\n isScribblingEnabled={isScribblingEnabled}\n isSummaryVisible={summaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n setSummaryVisible={setSummaryVisible}\n setBlocker={setBlocker}\n setIsScribblingEnabled={setIsScribblingEnabled}\n setActiveQuestionId={setActiveQuestionId}\n onItemNumberClick={handleItemNumberClick}\n onGoToReview={handleOnGoToReview}\n onResponseChange={onResponseChange}\n onHelp={onHelp}\n onTeacherValidation={onTeacherValidation}\n onSubmit={onSubmit}\n showCalculator={showCalculator}\n loggerRef={loggerRef}\n onSkip={onSkip}\n actionBarRightElement={actionBarRightElement}\n />\n </FlexView>\n </Styled.ActionbarWrapper>\n )}\n {!summaryVisible && questionsScrollable && userType === 'STUDENT' && (\n <Styled.StudentWorksheetSideBar>\n <Navigator />\n </Styled.StudentWorksheetSideBar>\n )}\n </Styled.ActionbarContainer>\n <Styled.QuestionsWrapper\n $actionbarHeight={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n $questionPadding={questionPadding}\n >\n {getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }).map(\n (question, questionIndex) => {\n const { response_id: responseId, is_optional } = question;\n const assignStatus = responses[responseId]?.assignStatus;\n\n if (behavior.teacherValidationEnabled) {\n if (assignStatus === 'skipped') return null;\n\n if (is_optional && assignStatus !== 'assigned' && userType === 'STUDENT') {\n return null;\n }\n }\n\n return (\n <WorksheetQuestion\n key={responseId}\n signedRequest={questionsSignedRequest}\n userType={userType}\n worksheetCompleted={worksheetCompleted}\n question={question}\n response={responses[responseId]}\n nextQuestionId={\n navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT'\n ? lastUnlockedQuestion?.response_id\n : questionIndex < lastUnlockedQuestionIndex\n ? questions[questionIndex + 1]?.response_id\n : undefined\n }\n maxQuestionWidth={maxQuestionWidth}\n learnosity={learnosity}\n isActive={responseId === activeQuestionId}\n isHidden={\n (!questionsScrollable && responseId !== activeQuestionId) || summaryVisible\n }\n canRender={\n activeQuestionIndex > -1 &&\n (questionIndex === activeQuestionIndex ||\n (navigationMode !== 'CURRENT' && questionIndex === activeQuestionIndex + 1))\n }\n appended={appendedQuestionIds.includes(responseId)}\n behavior={behavior}\n layout={layout}\n actionbarHeight={actionbarHeight}\n intersectionObserver={intersectionObserver}\n onMarkForReview={handleMarkForReview}\n onMediaStateChange={handleMediaStateChange}\n userId={userId}\n isScribblingEnabled={isScribblingEnabled}\n onPublishStrokes={onPublishStrokes}\n onReceiveStrokes={onReceiveStrokes}\n initialStrokesData={initialStrokesData}\n onPublishMouseMove={onPublishMouseMove}\n onSubscribeMouseMove={onSubscribeMouseMove}\n setActiveQuestionId={setActiveQuestionId}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n studentId={studentId}\n subjectiveProps={subjectiveProps}\n responses={responses}\n loggerRef={loggerRef}\n />\n );\n },\n )}\n {summaryVisible && (\n <WorksheetSummary\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n behavior={behavior}\n minHeight={minSummaryHeight}\n summaryDescription={summaryDescription}\n summaryVisible={summaryVisible}\n />\n )}\n </Styled.QuestionsWrapper>\n {!summaryVisible && renderSideBar && (\n <WorksheetSideBar\n questionWidth={maxQuestionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n userType={userType}\n height={minQuestionHeight}\n actionbarHeight={actionbarHeight}\n openQuestionFeedbackModal={openQuestionFeedbackModal}\n loggerRef={loggerRef}\n studentClassroomId={studentClassroomId}\n />\n )}\n </Styled.WorksheetContainer>\n </>\n );\n};\n\nconst Worksheet = memo(forwardRef(WorksheetComp));\n\nexport default Worksheet;\n"],"names":["WorksheetComp","props","ref","userType","studentName","questionsSignedRequest","worksheetName","initialResponseId","initialItemIndex","learnosityItems","learnosityResponses","layout","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","studentId","studentClassroomId","subjectiveProps","canShowActionBar","actionBarRightElement","initialQuestion","navigationMode","teacherValidationEnabled","maximumAttempts","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","questionPadding","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","lastUnlockedQuestion","lastUnlockedQuestionResponse","nudgeBannerBackgroundColor","nudgeBannerLabel","getWorksheetNudgeBannerInfo","initialQuestionId","getInitialQuestionId","activeQuestionId","setActiveQuestionId","intersectionObserver","useGetActiveQuestionId","activeQuestionIndex","question","summaryVisible","setSummaryVisible","blocker","setBlocker","showCalculator","setShowCalculator","getTimeSpentOnQuestion","useTimeSpentOnQuestions","handleMediaStateChange","useCallback","mediaType","mediaState","key","prevResponses","questionId","questionMeta","getQuestionMetadata","updatedResponse","handleMarkForReview","markedForReview","handleBlockerClose","prevBlocker","lastUnlockedQuestionId","_a","scrollToQuestion","handleItemNumberClick","onCalculatorClose","onCalculatorOpen","handleOnGoToReview","useEffect","activeQuestion","useCreateImperativeHandle","useLayoutEffect","timer","getDeviceDetails","item_type","instructor_stimulus","is_optional","jsxs","Fragment","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","jsx","Styled.NudgeBannerIcon","Check2Icon","Info2Icon","Text","Styled.WorksheetContainer","Styled.NavigationContainer","TOP_NAVIGATION_HEIGHT","Styled.NavigationWrapper","WorksheetNavigation","Styled.BlockerWrapper","FlexView","WorksheetBlocker","UserPointer","Styled.DesmosCalcWrapper","DesmosCalculator","DESMOS_CALC_POSITION","Styled.ActionbarContainer","QuestionTips","Styled.ActionbarWrapper","WorksheetActionBar","Styled.StudentWorksheetSideBar","Navigator","Styled.QuestionsWrapper","getRenderableQuestions","questionIndex","responseId","assignStatus","WorksheetQuestion","_b","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4635,10 +4635,6 @@ export declare interface IWorksheetBehavior {
4635
4635
  canShowDesmosCalc: boolean;
4636
4636
  canvasEnabled?: boolean;
4637
4637
  canScribble?: boolean;
4638
- /**
4639
- * If true displays option to send stickers in worksheet sidebar.
4640
- */
4641
- enableStickers?: boolean;
4642
4638
  }
4643
4639
 
4644
4640
  declare interface IWorksheetCallbackProps {
@@ -4747,6 +4743,7 @@ export declare interface IWorksheetProps extends IBaseWorksheetProps, IWorksheet
4747
4743
  summaryDescription?: ReactElement | null;
4748
4744
  canSubmitWorksheet?: boolean;
4749
4745
  studentId: string;
4746
+ studentClassroomId?: string;
4750
4747
  attemptId?: string;
4751
4748
  subjectiveProps?: ISubjectiveSheetProps;
4752
4749
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.4.6-m-t",
3
+ "version": "3.4.7-m",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"