@cuemath/leap 3.0.22-aa15 → 3.0.22-aa17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/line-icons/icons/check.js +3 -3
- package/dist/assets/line-icons/icons/check.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-context.js +5 -8
- package/dist/features/cue-canvas/cue-canvas-context.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-core.js +65 -69
- package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-helpers.js +25 -31
- package/dist/features/cue-canvas/cue-canvas-helpers.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-provider.js +12 -14
- package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas.js +59 -61
- package/dist/features/cue-canvas/cue-canvas.js.map +1 -1
- package/dist/features/cue-canvas/cue-cavas-styled.js +42 -45
- package/dist/features/cue-canvas/cue-cavas-styled.js.map +1 -1
- package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +46 -50
- package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
- package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js +14 -18
- package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js.map +1 -1
- package/dist/features/ui/error/error.js +20 -20
- package/dist/features/ui/error/error.js.map +1 -1
- package/dist/features/ui/stepper/stepper.js +7 -7
- package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js +19 -22
- package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-helpers.js +58 -57
- package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js +95 -91
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +1 -1
- package/dist/index.d.ts +3 -36
- package/dist/index.js +209 -213
- package/dist/index.js.map +1 -1
- package/dist/node_modules/react-error-boundary/dist/react-error-boundary.esm.js +33 -0
- package/dist/node_modules/react-error-boundary/dist/react-error-boundary.esm.js.map +1 -0
- package/package.json +2 -1
- package/dist/assets/line-icons/icons/puzzle-icon.js +0 -51
- package/dist/assets/line-icons/icons/puzzle-icon.js.map +0 -1
- package/dist/assets/line-icons/icons/share.js +0 -48
- package/dist/assets/line-icons/icons/share.js.map +0 -1
- package/dist/assets/line-icons/icons/tile.js +0 -54
- package/dist/assets/line-icons/icons/tile.js.map +0 -1
- package/dist/features/cue-canvas/bottombar/homework-controls.js +0 -73
- package/dist/features/cue-canvas/bottombar/homework-controls.js.map +0 -1
- package/dist/features/cue-canvas/hooks/use-upload-helper.js +0 -23
- package/dist/features/cue-canvas/hooks/use-upload-helper.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/homework/helper.js +0 -20
- package/dist/features/cue-canvas/sidebar/homework/helper.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/homework/homework-menu.js +0 -33
- package/dist/features/cue-canvas/sidebar/homework/homework-menu.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/homework/homework-request.js +0 -68
- package/dist/features/cue-canvas/sidebar/homework/homework-request.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/homework/homework-styled.js +0 -25
- package/dist/features/cue-canvas/sidebar/homework/homework-styled.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/homework/homework.js +0 -39
- package/dist/features/cue-canvas/sidebar/homework/homework.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js +0 -13
- package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js +0 -60
- package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js +0 -44
- package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/filters.js +0 -107
- package/dist/features/cue-canvas/sidebar/puzzles/filters.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js +0 -42
- package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js +0 -84
- package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js +0 -36
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js +0 -133
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js +0 -96
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js +0 -29
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/puzzles/utils.js +0 -120
- package/dist/features/cue-canvas/sidebar/puzzles/utils.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/sidebar-styled.js +0 -32
- package/dist/features/cue-canvas/sidebar/sidebar-styled.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/sidebar.js +0 -29
- package/dist/features/cue-canvas/sidebar/sidebar.js.map +0 -1
- package/dist/features/cue-canvas/sidebar/tiles/tile.js +0 -16
- package/dist/features/cue-canvas/sidebar/tiles/tile.js.map +0 -1
- package/dist/features/hooks/use-debounce.js +0 -16
- package/dist/features/hooks/use-debounce.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-canvas-sync-broker.js","sources":["../../../../src/features/cue-canvas/hooks/use-canvas-sync-broker.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"file":"use-canvas-sync-broker.js","sources":["../../../../src/features/cue-canvas/hooks/use-canvas-sync-broker.ts"],"sourcesContent":["import type { IActionData, TCueCanvasChangeDataObject } from '../types/cue-canvas';\n\nimport { useMessageBrokerChannel, type IChannelMessage } from '@cuemath/cue-message-broker';\nimport { useMemo, useCallback, useState, useRef } from 'react';\n\ninterface IMessage {\n eventName: string;\n eventPayload: {\n responseId: string;\n data: TCueCanvasChangeDataObject;\n userId: string;\n height: number;\n };\n}\n\nconst extractStrokeData = (payload: IMessage['eventPayload']): IActionData => ({\n userId: payload.userId,\n data: payload.data,\n height: payload.height,\n responseId: payload.responseId,\n});\n\nconst useCanvasSyncBroker = (\n channelId: string,\n logEvent: (type: string, payload?: Record<string, unknown>) => void,\n initialCanvasData?: Array<IChannelMessage>,\n) => {\n const [initialStrokesData, setInitialStrokesData] = useState<Record<string, IActionData[]>>(\n () => {\n const map: Record<string, IActionData[]> = {};\n\n if (!initialCanvasData) return map;\n\n for (const { message } of initialCanvasData) {\n const payload = (message.payload as IMessage)?.eventPayload;\n const qrId = payload?.responseId;\n\n if (!payload?.responseId) continue;\n\n const strokeData = extractStrokeData(payload);\n\n if (qrId && map[qrId]) {\n map[qrId]?.push(strokeData);\n } else {\n map[qrId] = [strokeData];\n }\n }\n\n return map;\n },\n );\n const callbacksMapRef = useRef<Record<string, (data: IActionData) => void>>({});\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: 0,\n logger: logEvent,\n }),\n [channelId, logEvent],\n );\n\n const registerCallback = useCallback((qrId: string, cb: (data: IActionData) => void) => {\n callbacksMapRef.current = { ...callbacksMapRef.current, [qrId]: cb };\n }, []);\n\n const onMessageReceive = useCallback(\n (messages: Array<IChannelMessage>, initialData?: boolean) => {\n const strokesPerWidgetMap: Record<string, Array<IActionData>> = {};\n\n messages.forEach(message => {\n const { payload } = message.message;\n const { eventPayload } = payload as IMessage;\n const qrId = eventPayload?.responseId as string;\n const strokes = eventPayload?.data;\n const userId = eventPayload?.userId;\n const canvasHeight = eventPayload?.height;\n const widgetOnReceiveCallback = callbacksMapRef.current[qrId];\n\n if (!initialData && widgetOnReceiveCallback) {\n widgetOnReceiveCallback({\n data: strokes,\n height: canvasHeight,\n userId,\n responseId: qrId,\n });\n } else {\n const strokeData = extractStrokeData(eventPayload);\n\n if (qrId && strokesPerWidgetMap[qrId]) {\n strokesPerWidgetMap[qrId]?.push(strokeData);\n } else {\n strokesPerWidgetMap[qrId] = [strokeData];\n }\n }\n });\n\n if (Object.keys(strokesPerWidgetMap).length > 0) {\n setInitialStrokesData(prevData => {\n const currentData = { ...prevData };\n\n Object.keys(strokesPerWidgetMap).forEach(key => {\n if (key && currentData[key]) {\n currentData[key]?.push(...(strokesPerWidgetMap[key] ?? []));\n } else {\n currentData[key] = strokesPerWidgetMap[key] ?? [];\n }\n });\n\n return currentData;\n });\n }\n },\n [],\n );\n\n const { publish, channelStatus, channel } = useMessageBrokerChannel({\n channelOptions,\n consumerFn: onMessageReceive,\n });\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.destroyChannel();\n }\n }, [channel]);\n\n return {\n publishStrokes: publish,\n channelStatus,\n closeChannel,\n initialStrokesData,\n registerCallback,\n };\n};\n\nexport default useCanvasSyncBroker;\n"],"names":["extractStrokeData","payload","useCanvasSyncBroker","channelId","logEvent","initialCanvasData","initialStrokesData","setInitialStrokesData","useState","map","message","_a","qrId","strokeData","_b","callbacksMapRef","useRef","channelOptions","useMemo","registerCallback","useCallback","cb","onMessageReceive","messages","initialData","strokesPerWidgetMap","eventPayload","strokes","userId","canvasHeight","widgetOnReceiveCallback","prevData","currentData","key","publish","channelStatus","channel","useMessageBrokerChannel","closeChannel","useCanvasSyncBroker$1"],"mappings":"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"}
|
@@ -1,32 +1,28 @@
|
|
1
|
-
import { useContext as
|
2
|
-
import
|
3
|
-
const
|
1
|
+
import { useContext as c, useMemo as l } from "react";
|
2
|
+
import a from "../cue-canvas-context.js";
|
3
|
+
const m = () => {
|
4
4
|
const {
|
5
|
-
activeInstance:
|
6
|
-
setActiveTool:
|
5
|
+
activeInstance: t,
|
6
|
+
setActiveTool: o,
|
7
7
|
activeTool: e,
|
8
|
-
setActiveInstance:
|
8
|
+
setActiveInstance: i,
|
9
9
|
activeColor: s,
|
10
|
-
setActiveColor:
|
11
|
-
|
12
|
-
setHomeworkId: c
|
13
|
-
} = a(v), l = m(
|
10
|
+
setActiveColor: n
|
11
|
+
} = c(a), r = l(
|
14
12
|
() => e ? ["pen", "ruler", "highlighter", "marker"].includes(e) : !1,
|
15
13
|
[e]
|
16
14
|
);
|
17
15
|
return {
|
18
|
-
activeInstance:
|
19
|
-
setActiveTool:
|
16
|
+
activeInstance: t,
|
17
|
+
setActiveTool: o,
|
20
18
|
activeTool: e,
|
21
|
-
setActiveInstance:
|
19
|
+
setActiveInstance: i,
|
22
20
|
activeColor: s,
|
23
|
-
setActiveColor:
|
24
|
-
isWritingToolActive:
|
25
|
-
homeworkId: n,
|
26
|
-
setHomeworkId: c
|
21
|
+
setActiveColor: n,
|
22
|
+
isWritingToolActive: r
|
27
23
|
};
|
28
24
|
};
|
29
25
|
export {
|
30
|
-
|
26
|
+
m as useCueCanvasActions
|
31
27
|
};
|
32
28
|
//# sourceMappingURL=use-cue-canvas-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-cue-canvas-actions.js","sources":["../../../../src/features/cue-canvas/hooks/use-cue-canvas-actions.ts"],"sourcesContent":["import { useContext, useMemo } from 'react';\n\nimport PolyContext from '../cue-canvas-context';\n\nexport const useCueCanvasActions = () => {\n const {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n
|
1
|
+
{"version":3,"file":"use-cue-canvas-actions.js","sources":["../../../../src/features/cue-canvas/hooks/use-cue-canvas-actions.ts"],"sourcesContent":["import { useContext, useMemo } from 'react';\n\nimport PolyContext from '../cue-canvas-context';\n\nexport const useCueCanvasActions = () => {\n const {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n } = useContext(PolyContext);\n\n const isWritingToolActive = useMemo(\n () => (activeTool ? ['pen', 'ruler', 'highlighter', 'marker'].includes(activeTool) : false),\n [activeTool],\n );\n\n return {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n isWritingToolActive,\n };\n};\n"],"names":["useCueCanvasActions","activeInstance","setActiveTool","activeTool","setActiveInstance","activeColor","setActiveColor","useContext","PolyContext","isWritingToolActive","useMemo"],"mappings":";;AAIO,MAAMA,IAAsB,MAAM;AACjC,QAAA;AAAA,IACJ,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACEC,EAAWC,CAAW,GAEpBC,IAAsBC;AAAA,IAC1B,MAAOP,IAAa,CAAC,OAAO,SAAS,eAAe,QAAQ,EAAE,SAASA,CAAU,IAAI;AAAA,IACrF,CAACA,CAAU;AAAA,EAAA;AAGN,SAAA;AAAA,IACL,gBAAAF;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,qBAAAG;AAAA,EAAA;AAEJ;"}
|
@@ -1,17 +1,17 @@
|
|
1
|
-
import { jsxs as o, jsx as r } from "react/jsx-runtime";
|
2
|
-
import { useCallback as
|
3
|
-
import { ILLUSTRATIONS as
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
const
|
9
|
-
const s = m(() => {
|
1
|
+
import { jsxs as o, jsx as r, Fragment as h } from "react/jsx-runtime";
|
2
|
+
import { useCallback as g } from "react";
|
3
|
+
import { ILLUSTRATIONS as $ } from "../../../assets/illustrations/illustrations.js";
|
4
|
+
import p from "../buttons/button/button.js";
|
5
|
+
import f from "../image/image.js";
|
6
|
+
import n from "../layout/flex-view.js";
|
7
|
+
import i from "../text/text.js";
|
8
|
+
const w = (a) => {
|
9
|
+
const { height: l, onTryAgain: t, theme: s = "light", title: m, description: c } = a, d = g(() => {
|
10
10
|
t ? t() : window.location.reload();
|
11
|
-
}, [t]), e =
|
12
|
-
return /* @__PURE__ */ o(
|
11
|
+
}, [t]), e = s === "dark" ? "WHITE_T_87" : "BLACK_T_87";
|
12
|
+
return /* @__PURE__ */ o(n, { $alignItems: "center", $justifyContent: "center", $height: l, children: [
|
13
13
|
/* @__PURE__ */ r(
|
14
|
-
|
14
|
+
n,
|
15
15
|
{
|
16
16
|
$widthX: 22.5,
|
17
17
|
$heightX: 11.5,
|
@@ -20,28 +20,28 @@ const $ = ({ height: a, onTryAgain: t, theme: l = "light" }) => {
|
|
20
20
|
$background: "GREY_1",
|
21
21
|
$justifyContent: "center",
|
22
22
|
$alignItems: "center",
|
23
|
-
children: /* @__PURE__ */ r(
|
23
|
+
children: /* @__PURE__ */ r(f, { width: 122, height: 100, src: $.ROCKET_BROKEN, withLoader: !1 })
|
24
24
|
}
|
25
25
|
),
|
26
|
-
/* @__PURE__ */ r(
|
27
|
-
/* @__PURE__ */
|
26
|
+
/* @__PURE__ */ r(i, { $renderAs: "h4", $marginBottomX: 0.5, $color: e, $align: "center", children: m ?? "Oops! Looks like something went wrong" }),
|
27
|
+
/* @__PURE__ */ r(i, { $renderAs: "body2", $align: "center", $marginBottomX: 1.5, $color: e, children: c ?? /* @__PURE__ */ o(h, { children: [
|
28
28
|
"Please try again. Alternatively if that does not work,",
|
29
29
|
/* @__PURE__ */ r("br", {}),
|
30
30
|
" please contact support."
|
31
|
-
] }),
|
31
|
+
] }) }),
|
32
32
|
/* @__PURE__ */ r(
|
33
|
-
|
33
|
+
p,
|
34
34
|
{
|
35
35
|
label: "Try again",
|
36
|
-
onClick:
|
36
|
+
onClick: d,
|
37
37
|
renderAs: "primary",
|
38
38
|
size: "small",
|
39
39
|
widthX: 14
|
40
40
|
}
|
41
41
|
)
|
42
42
|
] });
|
43
|
-
},
|
43
|
+
}, b = w;
|
44
44
|
export {
|
45
|
-
|
45
|
+
b as default
|
46
46
|
};
|
47
47
|
//# sourceMappingURL=error.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"error.js","sources":["../../../../src/features/ui/error/error.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Button from '../buttons/button/button';\nimport Image from '../image/image';\nimport FlexView from '../layout/flex-view';\nimport Text from '../text/text';\n\ninterface IErrorProps {\n onTryAgain?: () => void;\n height?: string | number;\n theme?: 'light' | 'dark';\n}\n\nconst Error: React.FC<IErrorProps> =
|
1
|
+
{"version":3,"file":"error.js","sources":["../../../../src/features/ui/error/error.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Button from '../buttons/button/button';\nimport Image from '../image/image';\nimport FlexView from '../layout/flex-view';\nimport Text from '../text/text';\n\ninterface IErrorProps {\n onTryAgain?: () => void;\n height?: string | number;\n theme?: 'light' | 'dark';\n title?: string;\n description?: string;\n}\n\nconst Error: React.FC<IErrorProps> = props => {\n const { height, onTryAgain, theme = 'light', title, description } = props;\n const handleTryAgain = useCallback(() => {\n if (onTryAgain) {\n onTryAgain();\n } else {\n window.location.reload();\n }\n }, [onTryAgain]);\n\n const textColor = theme === 'dark' ? 'WHITE_T_87' : 'BLACK_T_87';\n\n return (\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" $height={height}>\n <FlexView\n $widthX={22.5}\n $heightX={11.5}\n $borderRadiusX={1}\n $marginBottomX={1.5}\n $background=\"GREY_1\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n >\n <Image width={122} height={100} src={ILLUSTRATIONS.ROCKET_BROKEN} withLoader={false} />\n </FlexView>\n <Text $renderAs=\"h4\" $marginBottomX={0.5} $color={textColor} $align=\"center\">\n {title ?? 'Oops! Looks like something went wrong'}\n </Text>\n <Text $renderAs=\"body2\" $align=\"center\" $marginBottomX={1.5} $color={textColor}>\n {description ?? (\n <>\n Please try again. Alternatively if that does not work,\n <br /> please contact support.\n </>\n )}\n </Text>\n <Button\n label=\"Try again\"\n onClick={handleTryAgain}\n renderAs=\"primary\"\n size=\"small\"\n widthX={14}\n />\n </FlexView>\n );\n};\n\nexport default Error;\n"],"names":["Error","props","height","onTryAgain","theme","title","description","handleTryAgain","useCallback","textColor","FlexView","jsx","Image","ILLUSTRATIONS","Text","jsxs","Fragment","Button","Error$1"],"mappings":";;;;;;;AAgBA,MAAMA,IAA+B,CAASC,MAAA;AAC5C,QAAM,EAAE,QAAAC,GAAQ,YAAAC,GAAY,OAAAC,IAAQ,SAAS,OAAAC,GAAO,aAAAC,EAAgB,IAAAL,GAC9DM,IAAiBC,EAAY,MAAM;AACvC,IAAIL,IACSA,MAEX,OAAO,SAAS;EAClB,GACC,CAACA,CAAU,CAAC,GAETM,IAAYL,MAAU,SAAS,eAAe;AAEpD,2BACGM,GAAS,EAAA,aAAY,UAAS,iBAAgB,UAAS,SAASR,GAC/D,UAAA;AAAA,IAAA,gBAAAS;AAAA,MAACD;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,aAAY;AAAA,QAEZ,UAAA,gBAAAC,EAACC,GAAM,EAAA,OAAO,KAAK,QAAQ,KAAK,KAAKC,EAAc,eAAe,YAAY,GAAO,CAAA;AAAA,MAAA;AAAA,IACvF;AAAA,IACA,gBAAAF,EAACG,GAAK,EAAA,WAAU,MAAK,gBAAgB,KAAK,QAAQL,GAAW,QAAO,UACjE,UAAAJ,KAAS,wCACZ,CAAA;AAAA,IACA,gBAAAM,EAACG,GAAK,EAAA,WAAU,SAAQ,QAAO,UAAS,gBAAgB,KAAK,QAAQL,GAClE,UAAAH,KACG,gBAAAS,EAAAC,GAAA,EAAA,UAAA;AAAA,MAAA;AAAA,wBAEC,MAAG,EAAA;AAAA,MAAE;AAAA,IAAA,EAAA,CACR,EAEJ,CAAA;AAAA,IACA,gBAAAL;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAASV;AAAA,QACT,UAAS;AAAA,QACT,MAAK;AAAA,QACL,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,EACF,EAAA,CAAA;AAEJ,GAEAW,IAAelB;"}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import { jsxs as o, jsx as t } from "react/jsx-runtime";
|
2
|
-
import
|
3
|
-
import
|
2
|
+
import m from "../../../assets/line-icons/icons/check.js";
|
3
|
+
import h from "../text/text.js";
|
4
4
|
import { getTheme as p } from "../theme/get-theme.js";
|
5
5
|
import { MainWrapper as a, HorizontalLine as d, Wrapper as g, NumberWrapper as f, StyledText as s } from "./stepper-styled.js";
|
6
6
|
const { layout: u } = p(), { gutter: i } = u;
|
7
|
-
function
|
7
|
+
function j({ stepsInfo: n = [], currentStep: e = 2 }) {
|
8
8
|
const c = n.length && e >= 1 ? (e - 1) / n.length * 100 : 0;
|
9
9
|
return /* @__PURE__ */ o(a, { $flexDirection: "row", $width: "fit-content", $gutterX: 0.625, $gapX: 0.625, children: [
|
10
10
|
/* @__PURE__ */ t(d, { $percentageCompleted: c, $height: 1 }),
|
11
|
-
n.map(({ id: $, label:
|
11
|
+
n.map(({ id: $, label: l }, r) => /* @__PURE__ */ o(
|
12
12
|
g,
|
13
13
|
{
|
14
14
|
$flexDirection: "row",
|
@@ -25,10 +25,10 @@ function W({ stepsInfo: n = [], currentStep: e = 2 }) {
|
|
25
25
|
$justifyContent: "center",
|
26
26
|
$heightX: 1.25,
|
27
27
|
$widthX: 1.25,
|
28
|
-
children: r + 1 < e ? /* @__PURE__ */ t(
|
28
|
+
children: r + 1 < e ? /* @__PURE__ */ t(m, { height: i, width: i }) : /* @__PURE__ */ t(h, { $renderAs: "body3", $color: "WHITE", children: $ })
|
29
29
|
}
|
30
30
|
),
|
31
|
-
r + 1 === e && /* @__PURE__ */ t(s, { $renderAs: "body2", children:
|
31
|
+
r + 1 === e && /* @__PURE__ */ t(s, { $renderAs: "body2", children: l })
|
32
32
|
]
|
33
33
|
},
|
34
34
|
r
|
@@ -36,6 +36,6 @@ function W({ stepsInfo: n = [], currentStep: e = 2 }) {
|
|
36
36
|
] });
|
37
37
|
}
|
38
38
|
export {
|
39
|
-
|
39
|
+
j as default
|
40
40
|
};
|
41
41
|
//# sourceMappingURL=stepper.js.map
|
@@ -1,36 +1,33 @@
|
|
1
|
-
import {
|
2
|
-
import { useAwsSignedKey as
|
3
|
-
import
|
4
|
-
const
|
5
|
-
const { studentId: t, query: o
|
6
|
-
return
|
7
|
-
|
8
|
-
}, [s]),
|
9
|
-
|
10
|
-
}, [o, d, t, r]), k(
|
11
|
-
async ({ images: g, onSuccess: n, onError: p, fileKey: w, fileName: K }) => {
|
12
|
-
const a = c.current;
|
1
|
+
import { useEffect as g, useCallback as w } from "react";
|
2
|
+
import { useAwsSignedKey as S } from "../api/subjective-review.js";
|
3
|
+
import h from "../../../../node_modules/uuid/dist/esm-browser/v4.js";
|
4
|
+
const A = (c) => {
|
5
|
+
const { studentId: t, query: o } = c, { data: a, get: s } = S();
|
6
|
+
return g(() => {
|
7
|
+
s(t, o);
|
8
|
+
}, [o, s, t]), w(
|
9
|
+
async ({ images: d, onSuccess: i, onError: l, fileKey: u, fileName: m }) => {
|
13
10
|
if (!a) return;
|
14
|
-
const
|
11
|
+
const r = `https://${a.bucketName}.s3.amazonaws.com/`;
|
15
12
|
try {
|
16
|
-
const
|
17
|
-
const e = new FormData(),
|
18
|
-
if (e.append("key",
|
13
|
+
const n = d.map(async (f) => {
|
14
|
+
const e = new FormData(), p = `${u}${m ?? h()}`;
|
15
|
+
if (e.append("key", p), e.append("AWSAccessKeyId", a.awsKey), e.append("acl", "public-read"), e.append("success_action_redirect", ""), e.append("policy", a.policy), e.append("signature", a.signature), e.append("Content-Type", "image/jpeg"), e.append("file", f.file), !(await fetch(r, {
|
19
16
|
method: "POST",
|
20
17
|
body: e
|
21
18
|
})).ok)
|
22
19
|
throw new Error("Upload failed");
|
23
|
-
return `${
|
24
|
-
}),
|
25
|
-
|
20
|
+
return `${r}${p}`;
|
21
|
+
}), y = await Promise.all(n);
|
22
|
+
i(y);
|
26
23
|
} catch {
|
27
|
-
|
24
|
+
l();
|
28
25
|
}
|
29
26
|
},
|
30
|
-
[]
|
27
|
+
[a]
|
31
28
|
);
|
32
29
|
};
|
33
30
|
export {
|
34
|
-
|
31
|
+
A as default
|
35
32
|
};
|
36
33
|
//# sourceMappingURL=use-s3-helper.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-s3-helper.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-s3-helper.ts"],"sourcesContent":["import type { IFile } from '../worksheet-question/subjective-review';\n\nimport { useCallback, useEffect
|
1
|
+
{"version":3,"file":"use-s3-helper.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-s3-helper.ts"],"sourcesContent":["import type { IFile } from '../worksheet-question/subjective-review';\n\nimport { useCallback, useEffect } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { useAwsSignedKey } from '../api/subjective-review';\n\ninterface IUseS3helper {\n (params: {\n studentId: string;\n query: {\n type: string;\n };\n }): (props: IUploadImageProps) => void;\n}\n\ninterface IUploadImageProps {\n images: IFile[];\n onSuccess: (urls: string[]) => void;\n onError: () => void;\n fileKey: string;\n fileName?: string;\n}\n\nconst useS3ImageUploadHelper: IUseS3helper = props => {\n const { studentId, query } = props;\n const { data: awsSignedKey, get: getAwsSignedKey } = useAwsSignedKey();\n\n useEffect(() => {\n getAwsSignedKey(studentId, query);\n }, [query, getAwsSignedKey, studentId]);\n\n const uploadImagesToS3 = useCallback(\n async ({ images, onSuccess, onError, fileKey, fileName }: IUploadImageProps) => {\n if (!awsSignedKey) return;\n\n const url = `https://${awsSignedKey.bucketName}.s3.amazonaws.com/`;\n\n try {\n const uploadPromises = images.map(async (item: { file: string | Blob }) => {\n const formData = new FormData();\n const key = `${fileKey}${fileName ?? uuidv4()}`;\n\n formData.append('key', key);\n formData.append('AWSAccessKeyId', awsSignedKey.awsKey);\n formData.append('acl', 'public-read');\n formData.append('success_action_redirect', '');\n formData.append('policy', awsSignedKey.policy);\n formData.append('signature', awsSignedKey.signature);\n formData.append('Content-Type', 'image/jpeg');\n formData.append('file', item.file);\n\n const res = await fetch(url, {\n method: 'POST',\n body: formData,\n });\n\n if (!res.ok) {\n throw new Error('Upload failed');\n }\n\n return `${url}${key}`;\n });\n\n const uploadedUrls = await Promise.all(uploadPromises);\n\n onSuccess(uploadedUrls);\n } catch (error) {\n onError();\n }\n },\n [awsSignedKey],\n );\n\n return uploadImagesToS3;\n};\n\nexport default useS3ImageUploadHelper;\n"],"names":["useS3ImageUploadHelper","props","studentId","query","awsSignedKey","getAwsSignedKey","useAwsSignedKey","useEffect","useCallback","images","onSuccess","onError","fileKey","fileName","url","uploadPromises","item","formData","key","uuidv4","uploadedUrls"],"mappings":";;;AAwBA,MAAMA,IAAuC,CAASC,MAAA;AAC9C,QAAA,EAAE,WAAAC,GAAW,OAAAC,EAAU,IAAAF,GACvB,EAAE,MAAMG,GAAc,KAAKC,EAAA,IAAoBC;AAErD,SAAAC,EAAU,MAAM;AACd,IAAAF,EAAgBH,GAAWC,CAAK;AAAA,EAC/B,GAAA,CAACA,GAAOE,GAAiBH,CAAS,CAAC,GAEbM;AAAA,IACvB,OAAO,EAAE,QAAAC,GAAQ,WAAAC,GAAW,SAAAC,GAAS,SAAAC,GAAS,UAAAC,QAAkC;AAC9E,UAAI,CAACT,EAAc;AAEb,YAAAU,IAAM,WAAWV,EAAa,UAAU;AAE1C,UAAA;AACF,cAAMW,IAAiBN,EAAO,IAAI,OAAOO,MAAkC;AACnE,gBAAAC,IAAW,IAAI,YACfC,IAAM,GAAGN,CAAO,GAAGC,KAAYM,EAAQ,CAAA;AAgBzC,cAdKF,EAAA,OAAO,OAAOC,CAAG,GACjBD,EAAA,OAAO,kBAAkBb,EAAa,MAAM,GAC5Ca,EAAA,OAAO,OAAO,aAAa,GAC3BA,EAAA,OAAO,2BAA2B,EAAE,GACpCA,EAAA,OAAO,UAAUb,EAAa,MAAM,GACpCa,EAAA,OAAO,aAAab,EAAa,SAAS,GAC1Ca,EAAA,OAAO,gBAAgB,YAAY,GACnCA,EAAA,OAAO,QAAQD,EAAK,IAAI,GAO7B,EALQ,MAAM,MAAMF,GAAK;AAAA,YAC3B,QAAQ;AAAA,YACR,MAAMG;AAAA,UAAA,CACP,GAEQ;AACD,kBAAA,IAAI,MAAM,eAAe;AAG1B,iBAAA,GAAGH,CAAG,GAAGI,CAAG;AAAA,QAAA,CACpB,GAEKE,IAAe,MAAM,QAAQ,IAAIL,CAAc;AAErD,QAAAL,EAAUU,CAAY;AAAA,cACR;AACN,QAAAT;MACV;AAAA,IACF;AAAA,IACA,CAACP,CAAY;AAAA,EAAA;AAIjB;"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import b from "../../../assets/line-icons/icons/bulb2.js";
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
2
|
+
import R from "../../../assets/line-icons/icons/edit-star.js";
|
3
|
+
import k from "../../../assets/line-icons/icons/edit2.js";
|
4
|
+
import C from "../../../assets/line-icons/icons/question-letter.js";
|
5
|
+
import O from "../../../assets/line-icons/icons/star2.js";
|
6
6
|
import w from "../constants/events.js";
|
7
7
|
import { OPTIONAL_ITEM_TYPES as A, ACTION_BAR_HEIGHT as N, QUESTION_WIDTH as y, SPLIT_QUESTION_WIDTH as Q } from "./constants.js";
|
8
8
|
import { QUESTION_TAGS as E } from "./worksheet-types.js";
|
@@ -36,17 +36,17 @@ const x = (e) => {
|
|
36
36
|
const r = e.toLowerCase();
|
37
37
|
return r === "intro" || r === "concept-intro";
|
38
38
|
}, I = (e) => e.reduce((r, t) => {
|
39
|
-
const [n, s] = t.split(":"),
|
40
|
-
return !
|
39
|
+
const [n, s] = t.split(":"), o = n == null ? void 0 : n.trim(), c = s == null ? void 0 : s.trim();
|
40
|
+
return !o || !c ? r : {
|
41
41
|
...r,
|
42
|
-
[
|
42
|
+
[o.toLowerCase()]: c
|
43
43
|
};
|
44
44
|
}, {}), Y = (e, { sectioned: r = !1, adaptive: t = !1 }) => {
|
45
45
|
if (r)
|
46
|
-
return e.reduce((s,
|
46
|
+
return e.reduce((s, o, c) => {
|
47
47
|
var T;
|
48
48
|
let d = !1;
|
49
|
-
const { content: u, questions: i, itemType:
|
49
|
+
const { content: u, questions: i, itemType: a } = o, l = x(a), m = s[s.length - 1], g = l === (m == null ? void 0 : m.section_name) && (m != null && m.item_display_number) ? m.item_display_number + 1 : 1, p = u.match(/question-[^"]*/g), _ = p == null ? void 0 : p.map((f, h) => {
|
50
50
|
const v = i.find(
|
51
51
|
({ response_id: S }) => S === f.replace("question-", "")
|
52
52
|
);
|
@@ -56,20 +56,20 @@ const x = (e) => {
|
|
56
56
|
...v,
|
57
57
|
// Some questions are set to limited number of attempts which can show feedback which is causing the question to be stuck in the errored state
|
58
58
|
feedback_attempts: void 0,
|
59
|
-
item_reference:
|
59
|
+
item_reference: o.reference,
|
60
60
|
item_number: c,
|
61
61
|
item_display_number: g,
|
62
62
|
section_name: l,
|
63
|
-
item_type: r ?
|
64
|
-
is_optional:
|
65
|
-
item_tags:
|
66
|
-
item_tags_map: I(
|
63
|
+
item_type: r ? a : void 0,
|
64
|
+
is_optional: a ? A.includes(a) : !1,
|
65
|
+
item_tags: o.tags ?? [],
|
66
|
+
item_tags_map: I(o.tags ?? []),
|
67
67
|
question_number: h - (d ? 1 : 0),
|
68
68
|
total_questions: p.length
|
69
69
|
};
|
70
70
|
});
|
71
71
|
if (d = !1, _ != null && _[0] && c > 0 && e.length > 0) {
|
72
|
-
const f = (T = e[c - 1]) == null ? void 0 : T.itemType, h =
|
72
|
+
const f = (T = e[c - 1]) == null ? void 0 : T.itemType, h = a != null && a.startsWith("advanced-") ? "advanced" : a, v = f != null && f.startsWith("advanced-") ? "advanced" : f;
|
73
73
|
if ((h === "practice-basic" || h === "practice-regular" || h === "exit-ticket" || h === "advanced") && h !== v)
|
74
74
|
return [
|
75
75
|
...s,
|
@@ -82,16 +82,16 @@ const x = (e) => {
|
|
82
82
|
solution: void 0
|
83
83
|
},
|
84
84
|
instructor_stimulus: "SystemIntro",
|
85
|
-
response_id: `${
|
86
|
-
is_optional:
|
85
|
+
response_id: `${a}-system-intro`,
|
86
|
+
is_optional: a == null ? void 0 : a.startsWith("advanced-")
|
87
87
|
},
|
88
88
|
..._ ?? []
|
89
89
|
];
|
90
90
|
}
|
91
91
|
return [...s, ..._ ?? []];
|
92
92
|
}, []);
|
93
|
-
const n = e.reduce((s,
|
94
|
-
const { content: d, questions: u } =
|
93
|
+
const n = e.reduce((s, o, c) => {
|
94
|
+
const { content: d, questions: u } = o, i = d.match(/question-[^"]*/g), a = i == null ? void 0 : i.map(
|
95
95
|
(l, m) => {
|
96
96
|
const g = u.find(
|
97
97
|
({ response_id: p }) => p === l.replace("question-", "")
|
@@ -101,29 +101,29 @@ const x = (e) => {
|
|
101
101
|
return {
|
102
102
|
...g,
|
103
103
|
feedback_attempts: void 0,
|
104
|
-
item_reference:
|
104
|
+
item_reference: o.reference,
|
105
105
|
item_number: c,
|
106
106
|
item_display_number: c + 1,
|
107
|
-
item_tags:
|
108
|
-
item_tags_map: I(
|
107
|
+
item_tags: o.tags ?? [],
|
108
|
+
item_tags_map: I(o.tags ?? []),
|
109
109
|
question_number: m,
|
110
110
|
total_questions: i.length
|
111
111
|
};
|
112
112
|
}
|
113
113
|
);
|
114
|
-
return [...s, ...
|
114
|
+
return [...s, ...a ?? []];
|
115
115
|
}, []);
|
116
116
|
if (t) {
|
117
|
-
const s = [],
|
117
|
+
const s = [], o = {};
|
118
118
|
return n.sort((c, d) => {
|
119
119
|
var m, g;
|
120
120
|
const u = c.item_tags_map[E.TRIAL_TOPIC], i = d.item_tags_map[E.TRIAL_TOPIC];
|
121
|
-
if (u &&
|
121
|
+
if (u && o[u] === void 0 && (o[u] = s.length, s.push(u)), i && o[i] === void 0 && (o[i] = s.length, s.push(i)), !u || !i)
|
122
122
|
return 0;
|
123
|
-
const
|
124
|
-
return
|
123
|
+
const a = `${o[u]}-${((m = c.item_tags_map[E.QUESTION_CODE]) == null ? void 0 : m.length) ?? 0}`, l = `${o[i]}-${((g = d.item_tags_map[E.QUESTION_CODE]) == null ? void 0 : g.length) ?? 0}`;
|
124
|
+
return a > l ? 1 : -1;
|
125
125
|
}).map((c) => {
|
126
|
-
const d =
|
126
|
+
const d = o[c.item_tags_map[E.TRIAL_TOPIC] ?? ""] ?? 0, u = c.item_tags_map[E.QUESTION_CODE] ?? "";
|
127
127
|
return {
|
128
128
|
...c,
|
129
129
|
item_display_number: d * 3 + u.length
|
@@ -139,11 +139,11 @@ const x = (e) => {
|
|
139
139
|
lastUnlockedQuestionIndex: s
|
140
140
|
}) => {
|
141
141
|
var d, u;
|
142
|
-
const
|
143
|
-
if (t &&
|
142
|
+
const o = e.slice(0, s + 1), c = e[s];
|
143
|
+
if (t && o.find((i) => i.response_id === t))
|
144
144
|
return t;
|
145
145
|
if (typeof n == "number" && n <= c.item_number) {
|
146
|
-
const i = e.find((
|
146
|
+
const i = e.find((a) => a.item_number === n);
|
147
147
|
if (i != null && i.response_id)
|
148
148
|
return i.response_id;
|
149
149
|
}
|
@@ -160,35 +160,35 @@ const x = (e) => {
|
|
160
160
|
behavior: t,
|
161
161
|
userType: n
|
162
162
|
}) => {
|
163
|
-
const { maximumAttempts: s, teacherValidationEnabled:
|
163
|
+
const { maximumAttempts: s, teacherValidationEnabled: o, validation: c, navigationMode: d } = t, u = [...e].reverse().findIndex((i) => {
|
164
164
|
var _;
|
165
|
-
const
|
166
|
-
if (
|
165
|
+
const a = r[i.response_id], { attemptsHistory: l, validatedByTeacher: m, assignStatus: g } = a ?? {};
|
166
|
+
if (o)
|
167
167
|
return !!(m || g === "skipped");
|
168
168
|
const p = (_ = l == null ? void 0 : l.slice(-1)[0]) == null ? void 0 : _.score;
|
169
|
-
return p ? (p.score ?? 0) === p.max_score ? !0 : ((l == null ? void 0 : l.length) ?? 0) >= s : !!(!c && d === "LINEAR" && (
|
169
|
+
return p ? (p.score ?? 0) === p.max_score ? !0 : ((l == null ? void 0 : l.length) ?? 0) >= s : !!(!c && d === "LINEAR" && (a != null && a.response || a != null && a.skipped));
|
170
170
|
});
|
171
171
|
if (u === -1)
|
172
172
|
return 0;
|
173
173
|
if (u === 0) {
|
174
|
-
if (
|
175
|
-
const i = [...e].reverse().findIndex((
|
174
|
+
if (o) {
|
175
|
+
const i = [...e].reverse().findIndex((a) => {
|
176
176
|
var l;
|
177
|
-
return ((l = r[
|
177
|
+
return ((l = r[a.response_id]) == null ? void 0 : l.assignStatus) !== "skipped";
|
178
178
|
});
|
179
179
|
return e.length - i - 1;
|
180
180
|
}
|
181
181
|
return e.length - 1;
|
182
182
|
}
|
183
|
-
if (
|
184
|
-
const i = e.length - u,
|
185
|
-
return
|
183
|
+
if (o && n === "STUDENT") {
|
184
|
+
const i = e.length - u, a = e[i], { assignStatus: l } = r[a.response_id] ?? {};
|
185
|
+
return a.is_optional && !l ? i - 1 : i;
|
186
186
|
}
|
187
187
|
return e.length - u;
|
188
188
|
};
|
189
189
|
function M(e, r) {
|
190
190
|
var n, s;
|
191
|
-
const t = Array.isArray(e) ? e.find((
|
191
|
+
const t = Array.isArray(e) ? e.find((o) => o.response_id === r) : e;
|
192
192
|
if (!t)
|
193
193
|
throw new Error(`Question with id ${r} not found`);
|
194
194
|
return {
|
@@ -206,22 +206,22 @@ function M(e, r) {
|
|
206
206
|
}
|
207
207
|
};
|
208
208
|
}
|
209
|
-
const
|
209
|
+
const z = (e) => e.reduce(
|
210
210
|
(r, t) => ({
|
211
211
|
...r,
|
212
212
|
[t.response_id]: M(e, t.response_id)
|
213
213
|
}),
|
214
214
|
{}
|
215
|
-
),
|
215
|
+
), K = (e, r) => {
|
216
216
|
const { actionBar: t } = r;
|
217
217
|
return {
|
218
218
|
questionsContainerWidth: !e.some(
|
219
|
-
(
|
219
|
+
(o) => o.questions.some((c) => c.stimulus_review)
|
220
220
|
) ? y : Q,
|
221
221
|
maxQuestionWidth: y,
|
222
222
|
actionbarHeight: t === "bottom" ? N : 0
|
223
223
|
};
|
224
|
-
},
|
224
|
+
}, X = ({
|
225
225
|
questions: e,
|
226
226
|
lastUnlockedQuestionIndex: r,
|
227
227
|
userType: t
|
@@ -343,22 +343,22 @@ const K = (e) => e.reduce(
|
|
343
343
|
default:
|
344
344
|
return "";
|
345
345
|
}
|
346
|
-
},
|
346
|
+
}, ae = (e) => {
|
347
347
|
switch (e) {
|
348
348
|
case "learning":
|
349
349
|
return b;
|
350
350
|
case "practice-basic":
|
351
|
-
return
|
351
|
+
return k;
|
352
352
|
case "practice-regular":
|
353
|
-
return
|
353
|
+
return R;
|
354
354
|
case "exit-ticket":
|
355
|
-
return k;
|
356
|
-
case "advanced":
|
357
355
|
return C;
|
356
|
+
case "advanced":
|
357
|
+
return O;
|
358
358
|
default:
|
359
359
|
return b;
|
360
360
|
}
|
361
|
-
},
|
361
|
+
}, oe = (e) => Array.isArray(e.value) ? e.value.some((t) => typeof t == "string" && t.length > 100) : !1, ie = (e, r) => {
|
362
362
|
const t = e === "TEACHER";
|
363
363
|
return r ? {
|
364
364
|
bannerBackgroundColor: "GREEN_4",
|
@@ -369,20 +369,21 @@ const K = (e) => e.reduce(
|
|
369
369
|
};
|
370
370
|
};
|
371
371
|
export {
|
372
|
+
oe as checkIsClozeFormulaResponseInvalid,
|
372
373
|
J as getInitialQuestionId,
|
373
|
-
|
374
|
+
z as getInitialResponses,
|
374
375
|
V as getLastUnlockedQuestionIndex,
|
375
376
|
re as getNavigationSectionBackgroundColor,
|
376
|
-
|
377
|
+
ae as getNavigationSectionIcon,
|
377
378
|
ne as getNavigationSectionName,
|
378
379
|
q as getPaperColorByQuestion,
|
379
380
|
ee as getQuestionBackgroundImage,
|
380
381
|
te as getQuestionBorderColor,
|
381
382
|
M as getQuestionMetadata,
|
382
383
|
Y as getQuestionsFromItems,
|
383
|
-
|
384
|
-
|
385
|
-
|
384
|
+
X as getRenderableQuestions,
|
385
|
+
K as getWorksheetDimensions,
|
386
|
+
ie as getWorksheetNudgeBannerInfo,
|
386
387
|
L as isConceptIntroWidget,
|
387
388
|
U as isOkayTypeQuestion,
|
388
389
|
j as scrollToQuestion,
|