@cuemath/leap 3.5.47-gg2 → 3.5.47-gg4

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 +1 @@
1
- {"version":3,"file":"worksheet-questions-controller.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.tsx"],"sourcesContent":["import { deepEqual } from 'fast-equals';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport SkipIcon from '../../../../assets/line-icons/icons/skip';\nimport Button from '../../../ui/buttons/button/button';\nimport IconButton from '../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport useHandlerCallbacks from './use-handler-callbacks';\nimport type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from './worksheet-questions-controller-types';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\nimport Navigator from '../worksheet-sidebar/navigator';\n\nconst WorksheetQuestionsController: FC<IWorksheetQuestionsControllerProps> = memo(\n function WorksheetQuestionsController(props) {\n const {\n behavior,\n question,\n questions,\n userType,\n response,\n responses,\n questionIndex,\n lastUnlockedQuestionIndex,\n learnosity,\n onSkip,\n canSubmitWorksheet,\n actionBarRightElement,\n onSubmit,\n isQuestionAppended,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n questions: store.questions,\n userType: store.userType,\n response: store.responses[activeQuestion.response_id],\n responses: store.responses,\n questionIndex: store.activeQuestionIndex,\n lastUnlockedQuestionIndex: store.lastUnlockedQuestionIndex,\n learnosity: store.learnosity,\n onSkip: store.onSkip,\n canSubmitWorksheet: store.canSubmitWorksheet,\n actionBarRightElement: store.actionBarRightElement,\n isQuestionAppended: store.appendedQuestionIds.includes(activeQuestion.response_id),\n onSubmit: store.onSubmit,\n };\n });\n const isQuestionUnlocked = questionIndex <= lastUnlockedQuestionIndex;\n const { getTimeSpentOnQuestion } = props;\n const {\n navigationMode,\n canAttempt,\n checkButtonLabel,\n retryButtonLabel,\n validation,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n canTeacherValidate,\n skippable,\n } = behavior;\n\n const { response_id, item_type, type, instructor_stimulus, is_optional } = question;\n\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isExitTicket = item_type === 'exit-ticket';\n\n const [skipped, setSkipped] = useState(false);\n\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses);\n }, [onSubmit, responses]);\n\n const {\n checkButton,\n checkButtonDisabled,\n retryButton,\n nextButton,\n nextButtonDisabled,\n startButton,\n readyButton,\n validateButton,\n skipSectionButton,\n submitAttemptButton,\n skipButton,\n } = useMemo<IButtonTypes>(() => {\n const showSkipSectionButton =\n canTeacherValidate && is_optional && response?.assignStatus === 'assigned';\n\n const getSystemValidationButtons = (): IButtonTypes => {\n if (!canAttempt) {\n return {\n nextButton: true,\n };\n }\n\n if (!validation && behavior.navigationMode === 'LINEAR') {\n return {\n nextButton: true,\n nextButtonDisabled: response?.skipped ? false : !response?.response,\n skipButton: skippable && !response?.response && !response?.skipped,\n };\n }\n\n if (!validation) {\n return {\n nextButton: true,\n };\n }\n\n if (!response || !response.response || !response.score) {\n return {\n checkButton: true,\n checkButtonDisabled: true,\n };\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) {\n return {\n nextButton: true,\n };\n }\n\n if (responseEdited) {\n const lastAttemptResponse = attemptsHistory?.slice(-1)[0]?.response;\n\n return {\n nextButton: maximumAttemptsReached,\n checkButton: true,\n checkButtonDisabled: deepEqual(response.response, lastAttemptResponse),\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n return {\n nextButton: maximumAttemptsReached,\n retryButton: true,\n };\n }\n\n if ((score.score ?? 0) === score.max_score) {\n return {\n nextButton: true,\n };\n }\n\n return {};\n };\n\n const isPendingTeacherValidation = () =>\n questions.some(({ response_id: questionId }) => {\n const { assignStatus, validatedByTeacher } = responses[questionId] ?? {};\n\n return assignStatus === 'skipped' ? false : validatedByTeacher !== true;\n });\n\n if (teacherValidationEnabled) {\n const { validatedByTeacher } = response ?? {};\n\n if (navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT') {\n if (userType === 'STUDENT') {\n return {\n validateButton: false,\n };\n }\n\n return {\n validateButton: false,\n };\n }\n\n if (validatedByTeacher) {\n return {\n validateButton: true,\n submitAttemptButton:\n canTeacherValidate && canAttempt && userType === 'STUDENT' && canSubmitWorksheet\n ? !isPendingTeacherValidation()\n : false,\n };\n }\n\n if (!isQuestionUnlocked) {\n return {};\n }\n\n if (userType === 'STUDENT') {\n if (isSystemIntro) {\n return {\n startButton: canTeacherValidate && canAttempt,\n };\n }\n\n if (type !== 'clozetext') {\n return {\n ...getSystemValidationButtons(),\n nextButton: false,\n };\n }\n\n return {\n readyButton: canTeacherValidate && isExitTicket && !response?.submittedByStudent,\n };\n }\n\n if (isSystemIntro) {\n return {\n skipSectionButton: showSkipSectionButton,\n };\n }\n\n if (type !== 'clozetext') {\n const { responseEdited, score } = response ?? {};\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton:\n responseEdited || !canTeacherValidate\n ? false\n : !!(score?.score && score?.max_score && !((score.score ?? 0) < score.max_score)),\n };\n }\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton:\n canTeacherValidate && (isExitTicket ? response?.submittedByStudent : true),\n };\n }\n\n return getSystemValidationButtons();\n }, [\n canTeacherValidate,\n is_optional,\n response,\n teacherValidationEnabled,\n canAttempt,\n validation,\n behavior.navigationMode,\n maximumAttempts,\n canExceedAttempts,\n skippable,\n questions,\n responses,\n navigationMode,\n isQuestionUnlocked,\n userType,\n isSystemIntro,\n type,\n isExitTicket,\n canSubmitWorksheet,\n ]);\n\n const {\n handleResponseChange,\n handleBackButtonClick,\n handleNextButtonClick,\n handleCheckButtonClick,\n handleRetryButtonClick,\n handleValidateButtonClick,\n handleStartButtonClick,\n handleSkipSectionButtonClick,\n handleReadyButtonClick,\n handleSkipButtonClick,\n } = useHandlerCallbacks({\n question,\n setSkipped,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n handleNextButtonClick();\n if (onSkip) {\n onSkip(question.item_display_number, question.question_number);\n }\n }\n }, [\n handleNextButtonClick,\n onSkip,\n question.item_display_number,\n question.question_number,\n skipped,\n ]);\n\n useEffect(() => {\n const questionInstance = isQuestionAppended ? learnosity.question(response_id) : undefined;\n\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.on('changed', handleResponseChange);\n questionInstance.enable();\n }\n\n return () => {\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.off('changed', handleResponseChange);\n questionInstance.disable();\n }\n };\n }, [\n canAttempt,\n checkButton,\n handleResponseChange,\n isQuestionAppended,\n learnosity,\n response_id,\n validation,\n ]);\n\n return (\n <FlexView\n $flexDirection=\"row\"\n $flexGapX={0.5}\n $alignItems=\"center\"\n $justifyContent=\"flex-end\"\n style={{\n pointerEvents: 'all',\n }}\n >\n {handleBackButtonClick && (\n <Button\n widthX={6}\n renderAs=\"secondary\"\n size=\"small\"\n label=\"Back\"\n disabled={questionIndex === 0}\n onClick={handleBackButtonClick}\n />\n )}\n {skipButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Skip\"\n onClick={handleSkipButtonClick}\n />\n )}\n {nextButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Next\"\n onClick={handleNextButtonClick}\n disabled={nextButtonDisabled === true}\n />\n )}\n {retryButton && (\n <Button\n widthX={6}\n renderAs=\"primary\"\n size=\"small\"\n label={retryButtonLabel}\n disabled={!isQuestionAppended}\n onClick={handleRetryButtonClick}\n />\n )}\n {checkButton && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label={checkButtonLabel}\n disabled={checkButtonDisabled === true || !isQuestionAppended}\n onClick={handleCheckButtonClick}\n />\n )}\n {startButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Start\" onClick={handleStartButtonClick} />\n )}\n {readyButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Submit\" onClick={handleReadyButtonClick} />\n )}\n {skipSectionButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={SkipIcon}\n analyticsLabel=\"Skip Section\"\n onClick={handleSkipSectionButtonClick}\n />\n )}\n {!submitAttemptButton && validateButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={Check2Icon}\n disabled={response?.validatedByTeacher}\n analyticsLabel=\"Validate\"\n onClick={handleValidateButtonClick}\n />\n )}\n {submitAttemptButton && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label=\"Submit\"\n onClick={handleSheetSubmitButtonClick}\n />\n )}\n {actionBarRightElement && actionBarRightElement}\n <Navigator />\n </FlexView>\n );\n },\n);\n\nexport default WorksheetQuestionsController;\n"],"names":["WorksheetQuestionsController","memo","props","behavior","question","questions","userType","response","responses","questionIndex","lastUnlockedQuestionIndex","learnosity","onSkip","canSubmitWorksheet","actionBarRightElement","onSubmit","isQuestionAppended","useWorksheetStore","store","activeQuestion","isQuestionUnlocked","getTimeSpentOnQuestion","navigationMode","canAttempt","checkButtonLabel","retryButtonLabel","validation","maximumAttempts","canExceedAttempts","teacherValidationEnabled","canTeacherValidate","skippable","response_id","item_type","type","instructor_stimulus","is_optional","isSystemIntro","isExitTicket","skipped","setSkipped","useState","handleSheetSubmitButtonClick","useCallback","checkButton","checkButtonDisabled","retryButton","nextButton","nextButtonDisabled","startButton","readyButton","validateButton","skipSectionButton","submitAttemptButton","skipButton","useMemo","showSkipSectionButton","getSystemValidationButtons","responseEdited","score","attemptsHistory","maximumAttemptsReached","lastAttemptResponse","_a","deepEqual","isPendingTeacherValidation","questionId","assignStatus","validatedByTeacher","handleResponseChange","handleBackButtonClick","handleNextButtonClick","handleCheckButtonClick","handleRetryButtonClick","handleValidateButtonClick","handleStartButtonClick","handleSkipSectionButtonClick","handleReadyButtonClick","handleSkipButtonClick","useHandlerCallbacks","useEffect","questionInstance","jsxs","FlexView","jsx","Button","IconButton","SkipIcon","Check2Icon","Navigator"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-questions-controller.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.tsx"],"sourcesContent":["import { deepEqual } from 'fast-equals';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport SkipIcon from '../../../../assets/line-icons/icons/skip';\nimport Button from '../../../ui/buttons/button/button';\nimport IconButton from '../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport useHandlerCallbacks from './use-handler-callbacks';\nimport type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from './worksheet-questions-controller-types';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\nimport Navigator from '../worksheet-sidebar/navigator';\n\nconst WorksheetQuestionsController: FC<IWorksheetQuestionsControllerProps> = memo(\n function WorksheetQuestionsController(props) {\n const {\n behavior,\n question,\n questions,\n userType,\n response,\n responses,\n questionIndex,\n lastUnlockedQuestionIndex,\n learnosity,\n onSkip,\n canSubmitWorksheet,\n actionBarRightElement,\n onSubmit,\n isQuestionAppended,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n questions: store.questions,\n userType: store.userType,\n response: store.responses[activeQuestion.response_id],\n responses: store.responses,\n questionIndex: store.activeQuestionIndex,\n lastUnlockedQuestionIndex: store.lastUnlockedQuestionIndex,\n learnosity: store.learnosity,\n onSkip: store.onSkip,\n canSubmitWorksheet: store.canSubmitWorksheet,\n actionBarRightElement: store.actionBarRightElement,\n isQuestionAppended: store.appendedQuestionIds.includes(activeQuestion.response_id),\n onSubmit: store.onSubmit,\n };\n });\n const isQuestionUnlocked = questionIndex <= lastUnlockedQuestionIndex;\n const { getTimeSpentOnQuestion } = props;\n const {\n navigationMode,\n canAttempt,\n checkButtonLabel,\n retryButtonLabel,\n validation,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n canTeacherValidate,\n skippable,\n } = behavior;\n\n const { response_id, item_type, type, instructor_stimulus, is_optional } = question;\n\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isExitTicket = item_type === 'exit-ticket';\n\n const [skipped, setSkipped] = useState(false);\n\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses);\n }, [onSubmit, responses]);\n\n const {\n checkButton,\n checkButtonDisabled,\n retryButton,\n nextButton,\n nextButtonDisabled,\n startButton,\n readyButton,\n validateButton,\n skipSectionButton,\n submitAttemptButton,\n skipButton,\n } = useMemo<IButtonTypes>(() => {\n const showSkipSectionButton =\n canTeacherValidate && is_optional && response?.assignStatus === 'assigned';\n\n const getSystemValidationButtons = (): IButtonTypes => {\n // This is a puzzle card\n if (maximumAttempts === -2) {\n return {};\n }\n\n if (!canAttempt) {\n return {\n nextButton: true,\n };\n }\n\n if (!validation && behavior.navigationMode === 'LINEAR') {\n return {\n nextButton: true,\n nextButtonDisabled: response?.skipped ? false : !response?.response,\n skipButton: skippable && !response?.response && !response?.skipped,\n };\n }\n\n if (!validation) {\n return {\n nextButton: true,\n };\n }\n\n if (!response || !response.response || !response.score) {\n return {\n checkButton: true,\n checkButtonDisabled: true,\n };\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) {\n return {\n nextButton: true,\n };\n }\n\n if (responseEdited) {\n const lastAttemptResponse = attemptsHistory?.slice(-1)[0]?.response;\n\n return {\n nextButton: maximumAttemptsReached,\n checkButton: true,\n checkButtonDisabled: deepEqual(response.response, lastAttemptResponse),\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n return {\n nextButton: maximumAttemptsReached,\n retryButton: true,\n };\n }\n\n if ((score.score ?? 0) === score.max_score) {\n return {\n nextButton: true,\n };\n }\n\n return {};\n };\n\n const isPendingTeacherValidation = () =>\n questions.some(({ response_id: questionId }) => {\n const { assignStatus, validatedByTeacher } = responses[questionId] ?? {};\n\n return assignStatus === 'skipped' ? false : validatedByTeacher !== true;\n });\n\n if (teacherValidationEnabled) {\n const { validatedByTeacher } = response ?? {};\n\n if (navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT') {\n if (userType === 'STUDENT') {\n return {\n validateButton: false,\n };\n }\n\n return {\n validateButton: false,\n };\n }\n\n if (validatedByTeacher) {\n return {\n validateButton: true,\n submitAttemptButton:\n canTeacherValidate && canAttempt && userType === 'STUDENT' && canSubmitWorksheet\n ? !isPendingTeacherValidation()\n : false,\n };\n }\n\n if (!isQuestionUnlocked) {\n return {};\n }\n\n if (userType === 'STUDENT') {\n if (isSystemIntro) {\n return {\n startButton: canTeacherValidate && canAttempt,\n };\n }\n\n if (type !== 'clozetext') {\n return {\n ...getSystemValidationButtons(),\n nextButton: false,\n };\n }\n\n return {\n readyButton: canTeacherValidate && isExitTicket && !response?.submittedByStudent,\n };\n }\n\n if (isSystemIntro) {\n return {\n skipSectionButton: showSkipSectionButton,\n };\n }\n\n if (type !== 'clozetext') {\n const { responseEdited, score } = response ?? {};\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton:\n responseEdited || !canTeacherValidate\n ? false\n : !!(score?.score && score?.max_score && !((score.score ?? 0) < score.max_score)),\n };\n }\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton:\n canTeacherValidate && (isExitTicket ? response?.submittedByStudent : true),\n };\n }\n\n return getSystemValidationButtons();\n }, [\n canTeacherValidate,\n is_optional,\n response,\n teacherValidationEnabled,\n canAttempt,\n validation,\n behavior.navigationMode,\n maximumAttempts,\n canExceedAttempts,\n skippable,\n questions,\n responses,\n navigationMode,\n isQuestionUnlocked,\n userType,\n isSystemIntro,\n type,\n isExitTicket,\n canSubmitWorksheet,\n ]);\n\n const {\n handleResponseChange,\n handleBackButtonClick,\n handleNextButtonClick,\n handleCheckButtonClick,\n handleRetryButtonClick,\n handleValidateButtonClick,\n handleStartButtonClick,\n handleSkipSectionButtonClick,\n handleReadyButtonClick,\n handleSkipButtonClick,\n } = useHandlerCallbacks({\n question,\n setSkipped,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n handleNextButtonClick();\n if (onSkip) {\n onSkip(question.item_display_number, question.question_number);\n }\n }\n }, [\n handleNextButtonClick,\n onSkip,\n question.item_display_number,\n question.question_number,\n skipped,\n ]);\n\n useEffect(() => {\n const questionInstance = isQuestionAppended ? learnosity.question(response_id) : undefined;\n\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.on('changed', handleResponseChange);\n questionInstance.enable();\n }\n\n return () => {\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.off('changed', handleResponseChange);\n questionInstance.disable();\n }\n };\n }, [\n canAttempt,\n checkButton,\n handleResponseChange,\n isQuestionAppended,\n learnosity,\n response_id,\n validation,\n ]);\n\n return (\n <FlexView\n $flexDirection=\"row\"\n $flexGapX={0.5}\n $alignItems=\"center\"\n $justifyContent=\"flex-end\"\n style={{\n pointerEvents: 'all',\n }}\n >\n {handleBackButtonClick && (\n <Button\n widthX={6}\n renderAs=\"secondary\"\n size=\"small\"\n label=\"Back\"\n disabled={questionIndex === 0}\n onClick={handleBackButtonClick}\n />\n )}\n {skipButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Skip\"\n onClick={handleSkipButtonClick}\n />\n )}\n {nextButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Next\"\n onClick={handleNextButtonClick}\n disabled={nextButtonDisabled === true}\n />\n )}\n {retryButton && (\n <Button\n widthX={6}\n renderAs=\"primary\"\n size=\"small\"\n label={retryButtonLabel}\n disabled={!isQuestionAppended}\n onClick={handleRetryButtonClick}\n />\n )}\n {checkButton && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label={checkButtonLabel}\n disabled={checkButtonDisabled === true || !isQuestionAppended}\n onClick={handleCheckButtonClick}\n />\n )}\n {startButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Start\" onClick={handleStartButtonClick} />\n )}\n {readyButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Submit\" onClick={handleReadyButtonClick} />\n )}\n {skipSectionButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={SkipIcon}\n analyticsLabel=\"Skip Section\"\n onClick={handleSkipSectionButtonClick}\n />\n )}\n {!submitAttemptButton && validateButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={Check2Icon}\n disabled={response?.validatedByTeacher}\n analyticsLabel=\"Validate\"\n onClick={handleValidateButtonClick}\n />\n )}\n {submitAttemptButton && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label=\"Submit\"\n onClick={handleSheetSubmitButtonClick}\n />\n )}\n {actionBarRightElement && actionBarRightElement}\n <Navigator />\n </FlexView>\n );\n },\n);\n\nexport default WorksheetQuestionsController;\n"],"names":["WorksheetQuestionsController","memo","props","behavior","question","questions","userType","response","responses","questionIndex","lastUnlockedQuestionIndex","learnosity","onSkip","canSubmitWorksheet","actionBarRightElement","onSubmit","isQuestionAppended","useWorksheetStore","store","activeQuestion","isQuestionUnlocked","getTimeSpentOnQuestion","navigationMode","canAttempt","checkButtonLabel","retryButtonLabel","validation","maximumAttempts","canExceedAttempts","teacherValidationEnabled","canTeacherValidate","skippable","response_id","item_type","type","instructor_stimulus","is_optional","isSystemIntro","isExitTicket","skipped","setSkipped","useState","handleSheetSubmitButtonClick","useCallback","checkButton","checkButtonDisabled","retryButton","nextButton","nextButtonDisabled","startButton","readyButton","validateButton","skipSectionButton","submitAttemptButton","skipButton","useMemo","showSkipSectionButton","getSystemValidationButtons","responseEdited","score","attemptsHistory","maximumAttemptsReached","lastAttemptResponse","_a","deepEqual","isPendingTeacherValidation","questionId","assignStatus","validatedByTeacher","handleResponseChange","handleBackButtonClick","handleNextButtonClick","handleCheckButtonClick","handleRetryButtonClick","handleValidateButtonClick","handleStartButtonClick","handleSkipSectionButtonClick","handleReadyButtonClick","handleSkipButtonClick","useHandlerCallbacks","useEffect","questionInstance","jsxs","FlexView","jsx","Button","IconButton","SkipIcon","Check2Icon","Navigator"],"mappings":"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"}
@@ -157,7 +157,7 @@ const he = ({
157
157
  E.visible && /* @__PURE__ */ i(T, { label: "Solution", disabled: E.disabled, onClick: G, children: /* @__PURE__ */ i(p, { children: b === f.SOLUTION ? /* @__PURE__ */ i(x, { width: 24, height: 24 }) : /* @__PURE__ */ i(ae, { width: 24, height: 24, opacity: E.disabled ? 0.38 : 1 }) }) }),
158
158
  $.visible && /* @__PURE__ */ i(T, { label: "Ask for help", onClick: K, children: /* @__PURE__ */ i(p, { children: /* @__PURE__ */ i(le, { width: 24, height: 24 }) }) }),
159
159
  y.visible && /* @__PURE__ */ i(T, { label: "Question Feedback", onClick: B, children: /* @__PURE__ */ i(p, { children: /* @__PURE__ */ i(re, { width: 24, height: 24 }) }) }),
160
- !n.canShowDesmosCalc && /* @__PURE__ */ i(T, { label: "Desmos Calculator", onClick: F, children: /* @__PURE__ */ i(p, { children: /* @__PURE__ */ i(de, { width: 24, height: 24 }) }) }),
160
+ n.canShowDesmosCalc && /* @__PURE__ */ i(T, { label: "Desmos Calculator", onClick: F, children: /* @__PURE__ */ i(p, { children: /* @__PURE__ */ i(de, { width: 24, height: 24 }) }) }),
161
161
  S.visible && /* @__PURE__ */ i(
162
162
  T,
163
163
  {
@@ -1 +1 @@
1
- {"version":3,"file":"questions-toolbar.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport HintsIcon from '../../../../../assets/line-icons/icons/hints';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport EVENTS from '../../../constants/events';\nimport { useWorksheetStore } from '../../hooks/use-worksheet-store';\nimport { getQuestionMetadata } from '../../worksheet-helpers';\nimport {\n EActiveQuestionTool,\n type IWorksheetBehavior,\n type IWorksheetQuestion,\n type IWorksheetResponse,\n} from '../../worksheet-types';\nimport * as Styled from './questions-toolbar-styled';\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport HandIcon from '../../../../../assets/line-icons/icons/hand';\nimport QuestionFeedbackIcon from '../../../../../assets/line-icons/icons/question-feedback';\nimport TeachingToolsIcon from '../../../../../assets/line-icons/icons/teaching-tools';\nimport CloseIcon from '../../../../../assets/line-icons/icons/close';\nimport SolutionIcon from '../../../../../assets/line-icons/icons/solution';\nimport CalculatorIcon from '../../../../../assets/line-icons/icons/calculator';\n\ninterface IQuestionToolbarOptions {\n hints:\n | {\n visible: false;\n }\n | {\n visible: true;\n disabled: boolean;\n nextHintnumber: number;\n allHintsUtilized: boolean;\n };\n solution: {\n visible: boolean;\n disabled: boolean;\n };\n teachingTools: {\n visible: boolean;\n disabled: boolean;\n };\n stickers?: {\n visible: boolean;\n };\n askTeacher: {\n visible: boolean;\n };\n questionFeedback: {\n visible: boolean;\n };\n}\n\ninterface IGetHintsOptions {\n (options: {\n behavior: IWorksheetBehavior;\n question: IWorksheetQuestion;\n response?: IWorksheetResponse;\n hintsTimerFinished: boolean;\n }): IQuestionToolbarOptions['hints'];\n}\n\nconst getHintsOptions: IGetHintsOptions = ({\n behavior,\n question,\n response,\n hintsTimerFinished,\n}) => {\n if (!behavior.hints) {\n return { visible: false };\n }\n\n const hintsAvailable = question.metadata.hints?.length ?? 0;\n\n if (hintsAvailable === 0) {\n return { visible: false };\n }\n\n const hintsUsed = response?.hintsUsed ?? 0;\n\n return {\n visible: true,\n disabled: (behavior.hintsTimer && !hintsTimerFinished) || hintsUsed >= hintsAvailable,\n nextHintnumber: hintsUsed + 1,\n allHintsUtilized: hintsUsed >= hintsAvailable,\n };\n};\n\ninterface IIsResponseCompletedOrExhausted {\n (options: { response?: IWorksheetResponse; behavior: IWorksheetBehavior }): boolean;\n}\n\nconst isResponseCompletedOrExhausted: IIsResponseCompletedOrExhausted = ({\n response,\n behavior,\n}) => {\n if (!response || !response.response || !response.score) {\n return false;\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n\n const { maximumAttempts, canExceedAttempts } = behavior;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) return true;\n\n if (responseEdited) return false;\n\n if ((score.score ?? 0) === score.max_score) return true;\n\n return false;\n};\n\ninterface IGetAskTeacherOptions {\n (options: {\n canAskForHelp: boolean;\n hintOptions: IQuestionToolbarOptions['hints'];\n behavior: IWorksheetBehavior;\n response?: IWorksheetResponse;\n }): IQuestionToolbarOptions['askTeacher'];\n}\n\nconst getAskTeacherOptions: IGetAskTeacherOptions = ({\n hintOptions,\n response,\n behavior,\n canAskForHelp,\n}) => {\n if (\n canAskForHelp &&\n (!hintOptions.visible || hintOptions.allHintsUtilized) &&\n !isResponseCompletedOrExhausted({ response, behavior })\n ) {\n return { visible: true };\n }\n\n return { visible: false };\n};\n\nconst QuestionsToolbar = memo(function QuestionsToolbar() {\n const {\n question,\n response,\n behavior,\n loggerRef,\n setResponses,\n onResponseChange,\n onHelp,\n userType,\n openQuestionFeedbackModal,\n activeQuestionTool,\n setActiveQuestionTool,\n unsetActiveQuestionTool,\n worksheetCompleted,\n toggleCalculator,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n const activeQuesttionResponse = store.responses[activeQuestion.response_id];\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n response: activeQuesttionResponse,\n loggerRef: store.loggerRef,\n setResponses: store.setResponses,\n onResponseChange: store.onResponseChange,\n onHelp: store.onHelp,\n userType: store.userType,\n openQuestionFeedbackModal: store.openQuestionFeedbackModal,\n activeQuestionTool: store.activeQuestionTool,\n setActiveQuestionTool: store.setActiveQuestionTool,\n unsetActiveQuestionTool: store.unsetActiveQuestionTool,\n worksheetCompleted: store.worksheetCompleted,\n toggleCalculator: store.toggleCalculator,\n };\n });\n const { response_id: responseId } = question;\n const { hintsTimer } = behavior;\n const [hintsTimerFinished, setHintsTimerFinished] = useState(false);\n const { hints, solution, askTeacher, questionFeedback, teachingTools } =\n useMemo<IQuestionToolbarOptions>(() => {\n const hintsOptions = getHintsOptions({\n behavior,\n question,\n response,\n hintsTimerFinished,\n });\n const questionMetadata = question?.metadata;\n const teacherTipsCount = questionMetadata?.teacher_tips?.length ?? 0;\n const solutionsCount = questionMetadata?.solution?.length ?? 0;\n const hintsCount = questionMetadata?.hints?.length ?? 0;\n const teachingToolEnabled = teacherTipsCount + solutionsCount + hintsCount > 0;\n\n return {\n hints: hintsOptions,\n askTeacher: getAskTeacherOptions({\n behavior,\n response,\n hintOptions: hintsOptions,\n canAskForHelp: !!onHelp,\n }),\n questionFeedback: { visible: userType === 'TEACHER' },\n teachingTools: { visible: userType === 'TEACHER', disabled: !teachingToolEnabled },\n solution: {\n visible:\n behavior.solutionHidden || !behavior.validation\n ? false\n : userType === 'STUDENT' && solutionsCount > 0,\n disabled: worksheetCompleted\n ? false\n : !isResponseCompletedOrExhausted({ response, behavior }),\n },\n };\n }, [behavior, question, response, hintsTimerFinished, onHelp, userType, worksheetCompleted]);\n\n const handleHintButtonClick = useCallback(() => {\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n setResponses(prevResponses => {\n const newResponse = {\n ...getQuestionMetadata(question),\n ...prevResponses[responseId],\n hintsUsed: (prevResponses[responseId]?.hintsUsed ?? 0) + 1,\n };\n\n onResponseChange?.({\n responseId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n\n return {\n ...prevResponses,\n [responseId]: newResponse,\n };\n });\n }, [loggerRef, onResponseChange, question, responseId, setResponses]);\n\n const handleQuestionFeedbackClick = useCallback(() => {\n if (openQuestionFeedbackModal) {\n openQuestionFeedbackModal(question.item_reference);\n }\n }, [openQuestionFeedbackModal, question]);\n\n const handleTeachingToolsClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.TEACHING_TOOLS) {\n setActiveQuestionTool(EActiveQuestionTool.TEACHING_TOOLS);\n } else {\n unsetActiveQuestionTool();\n }\n }, [setActiveQuestionTool, unsetActiveQuestionTool, activeQuestionTool]);\n\n const handleSolutionClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.SOLUTION) {\n setActiveQuestionTool(EActiveQuestionTool.SOLUTION);\n } else {\n unsetActiveQuestionTool();\n }\n }, [setActiveQuestionTool, unsetActiveQuestionTool, activeQuestionTool]);\n\n const handleHelpButtonClick = useCallback(() => {\n if (onHelp && question) {\n const { item_number, question_number, total_questions } = question;\n\n onHelp({\n questionId: responseId,\n questionNumber: `${item_number + 1}${\n total_questions > 1 ? String.fromCharCode('a'.charCodeAt(0) + question_number) : ''\n }`,\n });\n }\n }, [onHelp, question, responseId]);\n\n useEffect(() => {\n if (hintsTimer) {\n const timeoutId = setTimeout(() => {\n setHintsTimerFinished(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n }, [hintsTimer]);\n\n return (\n <Styled.WorksheetQuestionsToolbarContainer\n $showBorder={behavior.canvasEnabled == true}\n $flexDirection=\"row\"\n >\n {hints.visible && (\n <Clickable label=\"Hint\" disabled={hints.disabled} onClick={handleHintButtonClick}>\n <Styled.IconContainer>\n <Styled.HintsIconContainer>\n <HintsIcon width={24} height={24} opacity={hints.disabled ? 0.38 : 1} />\n {!hints.allHintsUtilized && hints.nextHintnumber > 1 && (\n <Styled.HintsNumberContainer>\n <Styled.HintsNumber $renderAs=\"ab4-black\" $color=\"BLACK\">\n {hints.nextHintnumber}\n </Styled.HintsNumber>\n </Styled.HintsNumberContainer>\n )}\n {hints.allHintsUtilized && <Styled.TickMark src={ILLUSTRATIONS.TICK_GREEN} />}\n </Styled.HintsIconContainer>\n </Styled.IconContainer>\n </Clickable>\n )}\n {solution.visible && (\n <Clickable label=\"Solution\" disabled={solution.disabled} onClick={handleSolutionClick}>\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.SOLUTION ? (\n <CloseIcon width={24} height={24} />\n ) : (\n <SolutionIcon width={24} height={24} opacity={solution.disabled ? 0.38 : 1} />\n )}\n </Styled.IconContainer>\n </Clickable>\n )}\n {askTeacher.visible && (\n <Clickable label=\"Ask for help\" onClick={handleHelpButtonClick}>\n <Styled.IconContainer>\n <HandIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {questionFeedback.visible && (\n <Clickable label=\"Question Feedback\" onClick={handleQuestionFeedbackClick}>\n <Styled.IconContainer>\n <QuestionFeedbackIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {!behavior.canShowDesmosCalc && (\n <Clickable label=\"Desmos Calculator\" onClick={toggleCalculator}>\n <Styled.IconContainer>\n <CalculatorIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {teachingTools.visible && (\n <Clickable\n label=\"Teaching Tools\"\n disabled={teachingTools.disabled}\n onClick={handleTeachingToolsClick}\n >\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.TEACHING_TOOLS ? (\n <CloseIcon width={24} height={24} />\n ) : (\n <TeachingToolsIcon width={24} height={24} />\n )}\n </Styled.IconContainer>\n </Clickable>\n )}\n </Styled.WorksheetQuestionsToolbarContainer>\n );\n});\n\nexport default QuestionsToolbar;\n"],"names":["getHintsOptions","behavior","question","response","hintsTimerFinished","hintsAvailable","_a","hintsUsed","isResponseCompletedOrExhausted","responseEdited","score","attemptsHistory","maximumAttempts","canExceedAttempts","getAskTeacherOptions","hintOptions","canAskForHelp","QuestionsToolbar","memo","loggerRef","setResponses","onResponseChange","onHelp","userType","openQuestionFeedbackModal","activeQuestionTool","setActiveQuestionTool","unsetActiveQuestionTool","worksheetCompleted","toggleCalculator","useWorksheetStore","store","activeQuestion","activeQuesttionResponse","responseId","hintsTimer","setHintsTimerFinished","useState","hints","solution","askTeacher","questionFeedback","teachingTools","useMemo","hintsOptions","questionMetadata","teacherTipsCount","solutionsCount","_b","hintsCount","_c","teachingToolEnabled","handleHintButtonClick","useCallback","EVENTS","prevResponses","newResponse","getQuestionMetadata","handleQuestionFeedbackClick","handleTeachingToolsClick","EActiveQuestionTool","handleSolutionClick","handleHelpButtonClick","item_number","question_number","total_questions","useEffect","timeoutId","jsxs","Styled.WorksheetQuestionsToolbarContainer","jsx","Clickable","Styled.IconContainer","Styled.HintsIconContainer","HintsIcon","Styled.HintsNumberContainer","Styled.HintsNumber","Styled.TickMark","ILLUSTRATIONS","CloseIcon","SolutionIcon","HandIcon","QuestionFeedbackIcon","CalculatorIcon","TeachingToolsIcon"],"mappings":"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"}
1
+ {"version":3,"file":"questions-toolbar.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport HintsIcon from '../../../../../assets/line-icons/icons/hints';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport EVENTS from '../../../constants/events';\nimport { useWorksheetStore } from '../../hooks/use-worksheet-store';\nimport { getQuestionMetadata } from '../../worksheet-helpers';\nimport {\n EActiveQuestionTool,\n type IWorksheetBehavior,\n type IWorksheetQuestion,\n type IWorksheetResponse,\n} from '../../worksheet-types';\nimport * as Styled from './questions-toolbar-styled';\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport HandIcon from '../../../../../assets/line-icons/icons/hand';\nimport QuestionFeedbackIcon from '../../../../../assets/line-icons/icons/question-feedback';\nimport TeachingToolsIcon from '../../../../../assets/line-icons/icons/teaching-tools';\nimport CloseIcon from '../../../../../assets/line-icons/icons/close';\nimport SolutionIcon from '../../../../../assets/line-icons/icons/solution';\nimport CalculatorIcon from '../../../../../assets/line-icons/icons/calculator';\n\ninterface IQuestionToolbarOptions {\n hints:\n | {\n visible: false;\n }\n | {\n visible: true;\n disabled: boolean;\n nextHintnumber: number;\n allHintsUtilized: boolean;\n };\n solution: {\n visible: boolean;\n disabled: boolean;\n };\n teachingTools: {\n visible: boolean;\n disabled: boolean;\n };\n stickers?: {\n visible: boolean;\n };\n askTeacher: {\n visible: boolean;\n };\n questionFeedback: {\n visible: boolean;\n };\n}\n\ninterface IGetHintsOptions {\n (options: {\n behavior: IWorksheetBehavior;\n question: IWorksheetQuestion;\n response?: IWorksheetResponse;\n hintsTimerFinished: boolean;\n }): IQuestionToolbarOptions['hints'];\n}\n\nconst getHintsOptions: IGetHintsOptions = ({\n behavior,\n question,\n response,\n hintsTimerFinished,\n}) => {\n if (!behavior.hints) {\n return { visible: false };\n }\n\n const hintsAvailable = question.metadata.hints?.length ?? 0;\n\n if (hintsAvailable === 0) {\n return { visible: false };\n }\n\n const hintsUsed = response?.hintsUsed ?? 0;\n\n return {\n visible: true,\n disabled: (behavior.hintsTimer && !hintsTimerFinished) || hintsUsed >= hintsAvailable,\n nextHintnumber: hintsUsed + 1,\n allHintsUtilized: hintsUsed >= hintsAvailable,\n };\n};\n\ninterface IIsResponseCompletedOrExhausted {\n (options: { response?: IWorksheetResponse; behavior: IWorksheetBehavior }): boolean;\n}\n\nconst isResponseCompletedOrExhausted: IIsResponseCompletedOrExhausted = ({\n response,\n behavior,\n}) => {\n if (!response || !response.response || !response.score) {\n return false;\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n\n const { maximumAttempts, canExceedAttempts } = behavior;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) return true;\n\n if (responseEdited) return false;\n\n if ((score.score ?? 0) === score.max_score) return true;\n\n return false;\n};\n\ninterface IGetAskTeacherOptions {\n (options: {\n canAskForHelp: boolean;\n hintOptions: IQuestionToolbarOptions['hints'];\n behavior: IWorksheetBehavior;\n response?: IWorksheetResponse;\n }): IQuestionToolbarOptions['askTeacher'];\n}\n\nconst getAskTeacherOptions: IGetAskTeacherOptions = ({\n hintOptions,\n response,\n behavior,\n canAskForHelp,\n}) => {\n if (\n canAskForHelp &&\n (!hintOptions.visible || hintOptions.allHintsUtilized) &&\n !isResponseCompletedOrExhausted({ response, behavior })\n ) {\n return { visible: true };\n }\n\n return { visible: false };\n};\n\nconst QuestionsToolbar = memo(function QuestionsToolbar() {\n const {\n question,\n response,\n behavior,\n loggerRef,\n setResponses,\n onResponseChange,\n onHelp,\n userType,\n openQuestionFeedbackModal,\n activeQuestionTool,\n setActiveQuestionTool,\n unsetActiveQuestionTool,\n worksheetCompleted,\n toggleCalculator,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n const activeQuesttionResponse = store.responses[activeQuestion.response_id];\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n response: activeQuesttionResponse,\n loggerRef: store.loggerRef,\n setResponses: store.setResponses,\n onResponseChange: store.onResponseChange,\n onHelp: store.onHelp,\n userType: store.userType,\n openQuestionFeedbackModal: store.openQuestionFeedbackModal,\n activeQuestionTool: store.activeQuestionTool,\n setActiveQuestionTool: store.setActiveQuestionTool,\n unsetActiveQuestionTool: store.unsetActiveQuestionTool,\n worksheetCompleted: store.worksheetCompleted,\n toggleCalculator: store.toggleCalculator,\n };\n });\n const { response_id: responseId } = question;\n const { hintsTimer } = behavior;\n const [hintsTimerFinished, setHintsTimerFinished] = useState(false);\n const { hints, solution, askTeacher, questionFeedback, teachingTools } =\n useMemo<IQuestionToolbarOptions>(() => {\n const hintsOptions = getHintsOptions({\n behavior,\n question,\n response,\n hintsTimerFinished,\n });\n const questionMetadata = question?.metadata;\n const teacherTipsCount = questionMetadata?.teacher_tips?.length ?? 0;\n const solutionsCount = questionMetadata?.solution?.length ?? 0;\n const hintsCount = questionMetadata?.hints?.length ?? 0;\n const teachingToolEnabled = teacherTipsCount + solutionsCount + hintsCount > 0;\n\n return {\n hints: hintsOptions,\n askTeacher: getAskTeacherOptions({\n behavior,\n response,\n hintOptions: hintsOptions,\n canAskForHelp: !!onHelp,\n }),\n questionFeedback: { visible: userType === 'TEACHER' },\n teachingTools: { visible: userType === 'TEACHER', disabled: !teachingToolEnabled },\n solution: {\n visible:\n behavior.solutionHidden || !behavior.validation\n ? false\n : userType === 'STUDENT' && solutionsCount > 0,\n disabled: worksheetCompleted\n ? false\n : !isResponseCompletedOrExhausted({ response, behavior }),\n },\n };\n }, [behavior, question, response, hintsTimerFinished, onHelp, userType, worksheetCompleted]);\n\n const handleHintButtonClick = useCallback(() => {\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n setResponses(prevResponses => {\n const newResponse = {\n ...getQuestionMetadata(question),\n ...prevResponses[responseId],\n hintsUsed: (prevResponses[responseId]?.hintsUsed ?? 0) + 1,\n };\n\n onResponseChange?.({\n responseId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n\n return {\n ...prevResponses,\n [responseId]: newResponse,\n };\n });\n }, [loggerRef, onResponseChange, question, responseId, setResponses]);\n\n const handleQuestionFeedbackClick = useCallback(() => {\n if (openQuestionFeedbackModal) {\n openQuestionFeedbackModal(question.item_reference);\n }\n }, [openQuestionFeedbackModal, question]);\n\n const handleTeachingToolsClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.TEACHING_TOOLS) {\n setActiveQuestionTool(EActiveQuestionTool.TEACHING_TOOLS);\n } else {\n unsetActiveQuestionTool();\n }\n }, [setActiveQuestionTool, unsetActiveQuestionTool, activeQuestionTool]);\n\n const handleSolutionClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.SOLUTION) {\n setActiveQuestionTool(EActiveQuestionTool.SOLUTION);\n } else {\n unsetActiveQuestionTool();\n }\n }, [setActiveQuestionTool, unsetActiveQuestionTool, activeQuestionTool]);\n\n const handleHelpButtonClick = useCallback(() => {\n if (onHelp && question) {\n const { item_number, question_number, total_questions } = question;\n\n onHelp({\n questionId: responseId,\n questionNumber: `${item_number + 1}${\n total_questions > 1 ? String.fromCharCode('a'.charCodeAt(0) + question_number) : ''\n }`,\n });\n }\n }, [onHelp, question, responseId]);\n\n useEffect(() => {\n if (hintsTimer) {\n const timeoutId = setTimeout(() => {\n setHintsTimerFinished(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n }, [hintsTimer]);\n\n return (\n <Styled.WorksheetQuestionsToolbarContainer\n $showBorder={behavior.canvasEnabled == true}\n $flexDirection=\"row\"\n >\n {hints.visible && (\n <Clickable label=\"Hint\" disabled={hints.disabled} onClick={handleHintButtonClick}>\n <Styled.IconContainer>\n <Styled.HintsIconContainer>\n <HintsIcon width={24} height={24} opacity={hints.disabled ? 0.38 : 1} />\n {!hints.allHintsUtilized && hints.nextHintnumber > 1 && (\n <Styled.HintsNumberContainer>\n <Styled.HintsNumber $renderAs=\"ab4-black\" $color=\"BLACK\">\n {hints.nextHintnumber}\n </Styled.HintsNumber>\n </Styled.HintsNumberContainer>\n )}\n {hints.allHintsUtilized && <Styled.TickMark src={ILLUSTRATIONS.TICK_GREEN} />}\n </Styled.HintsIconContainer>\n </Styled.IconContainer>\n </Clickable>\n )}\n {solution.visible && (\n <Clickable label=\"Solution\" disabled={solution.disabled} onClick={handleSolutionClick}>\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.SOLUTION ? (\n <CloseIcon width={24} height={24} />\n ) : (\n <SolutionIcon width={24} height={24} opacity={solution.disabled ? 0.38 : 1} />\n )}\n </Styled.IconContainer>\n </Clickable>\n )}\n {askTeacher.visible && (\n <Clickable label=\"Ask for help\" onClick={handleHelpButtonClick}>\n <Styled.IconContainer>\n <HandIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {questionFeedback.visible && (\n <Clickable label=\"Question Feedback\" onClick={handleQuestionFeedbackClick}>\n <Styled.IconContainer>\n <QuestionFeedbackIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {behavior.canShowDesmosCalc && (\n <Clickable label=\"Desmos Calculator\" onClick={toggleCalculator}>\n <Styled.IconContainer>\n <CalculatorIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {teachingTools.visible && (\n <Clickable\n label=\"Teaching Tools\"\n disabled={teachingTools.disabled}\n onClick={handleTeachingToolsClick}\n >\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.TEACHING_TOOLS ? (\n <CloseIcon width={24} height={24} />\n ) : (\n <TeachingToolsIcon width={24} height={24} />\n )}\n </Styled.IconContainer>\n </Clickable>\n )}\n </Styled.WorksheetQuestionsToolbarContainer>\n );\n});\n\nexport default QuestionsToolbar;\n"],"names":["getHintsOptions","behavior","question","response","hintsTimerFinished","hintsAvailable","_a","hintsUsed","isResponseCompletedOrExhausted","responseEdited","score","attemptsHistory","maximumAttempts","canExceedAttempts","getAskTeacherOptions","hintOptions","canAskForHelp","QuestionsToolbar","memo","loggerRef","setResponses","onResponseChange","onHelp","userType","openQuestionFeedbackModal","activeQuestionTool","setActiveQuestionTool","unsetActiveQuestionTool","worksheetCompleted","toggleCalculator","useWorksheetStore","store","activeQuestion","activeQuesttionResponse","responseId","hintsTimer","setHintsTimerFinished","useState","hints","solution","askTeacher","questionFeedback","teachingTools","useMemo","hintsOptions","questionMetadata","teacherTipsCount","solutionsCount","_b","hintsCount","_c","teachingToolEnabled","handleHintButtonClick","useCallback","EVENTS","prevResponses","newResponse","getQuestionMetadata","handleQuestionFeedbackClick","handleTeachingToolsClick","EActiveQuestionTool","handleSolutionClick","handleHelpButtonClick","item_number","question_number","total_questions","useEffect","timeoutId","jsxs","Styled.WorksheetQuestionsToolbarContainer","jsx","Clickable","Styled.IconContainer","Styled.HintsIconContainer","HintsIcon","Styled.HintsNumberContainer","Styled.HintsNumber","Styled.TickMark","ILLUSTRATIONS","CloseIcon","SolutionIcon","HandIcon","QuestionFeedbackIcon","CalculatorIcon","TeachingToolsIcon"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3121,7 +3121,7 @@ export declare interface INodeDataProps {
3121
3121
  id: string;
3122
3122
  image_hue: THueNames;
3123
3123
  image_url: string | null;
3124
- is_lesson_v3_enabled: boolean;
3124
+ activity_type: EWorksheetActivity | null;
3125
3125
  is_optional: boolean;
3126
3126
  is_timed: boolean;
3127
3127
  is_worksheet_v3: boolean | null;
@@ -3658,7 +3658,7 @@ export declare interface IResourceItemData {
3658
3658
  created_on_ts: number;
3659
3659
  grades: string[];
3660
3660
  id: string;
3661
- is_lesson_v3_enabled: boolean;
3661
+ activity_type: EWorksheetActivity | null;
3662
3662
  is_live: boolean;
3663
3663
  learnosity_activity_ref: string;
3664
3664
  name: string;
@@ -3824,9 +3824,9 @@ declare interface IShareInstructionModalProps {
3824
3824
 
3825
3825
  export declare interface ISheetDataProps {
3826
3826
  accuracy: number | null;
3827
+ activity_type?: EWorksheetActivity | null;
3827
3828
  attempt_location: TSheetAttemptLocation;
3828
3829
  attempt_state: TSheetAttemptStateProps | null;
3829
- is_lesson_v3_enabled?: boolean;
3830
3830
  is_subjective?: boolean;
3831
3831
  is_worksheet_v3?: boolean | null;
3832
3832
  node_id: string;
@@ -5124,7 +5124,7 @@ declare interface IWorksheetLayout {
5124
5124
  export declare interface IWorksheetModel {
5125
5125
  name: string;
5126
5126
  learnosity_activity_ref: string;
5127
- is_lesson_v3_enabled: boolean;
5127
+ activity_type: EWorksheetActivity | null;
5128
5128
  desmos_calculator_enabled: boolean;
5129
5129
  image_hue: THueNames | null;
5130
5130
  }
@@ -6955,7 +6955,7 @@ export declare type TLPARSheetData = {
6955
6955
  user_block_id: string | null;
6956
6956
  worksheet_id: string;
6957
6957
  is_worksheet_v3?: boolean | null;
6958
- is_lesson_v3_enabled?: boolean;
6958
+ activity_type?: EWorksheetActivity | null;
6959
6959
  permissions: TSheetPermissions;
6960
6960
  };
6961
6961
 
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","sources":["../../../src/types/models/worksheet.ts"],"sourcesContent":["import type { IChannelMessage } from '@cuemath/cue-message-broker';\n\nimport type { TLPARSheetAttemptState } from '../../features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-type';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../../features/sheets/sheets-list/sheet-item/sheet-item-types';\nimport type { THueNames } from '../../features/ui/types';\n\nexport type TNodeTypes =\n | 'LEGACY'\n | 'LEARNING'\n | 'REMEDIAL'\n | 'GENERAL'\n | 'SAT_MATH_RECAP'\n | 'SAT_MATH_LEARNING'\n | 'SAT_MATH_ASSESSMENT'\n | 'SAT_ENGLISH_RECAP'\n | 'SAT_ENGLISH_LEARNING'\n | 'SAT_ENGLISH_ASSESSMENT'\n | 'LEVEL3'\n | 'RECAP'\n | 'REVISION'\n | 'LEVEL2'\n | 'TARGET_PRACTICE'\n | 'PRACTICE'\n | 'EXTRA_PRACTICE'\n | 'PUZZLE_EASY'\n | 'PUZZLE_MEDIUM'\n | 'PUZZLE_HARD'\n | 'CHAPTER_ASSESSMENT'\n | 'ASSESSMENT'\n | 'TRIAL_DIAGNOSTIC'\n | 'TRIAL_BASIC'\n | 'TRIAL_INTERMEDIATE'\n | 'TRIAL_ADVANCED'\n | 'MASTERY'\n | 'DYNAMIC'\n | 'TURING_ASSESSMENT'\n | 'TURING_SUBJECTIVE'\n | 'TURING_PRACTICE'\n | 'DIAGNOSTIC'\n | 'SUBJECTIVE'\n | 'VIDEO'\n | 'PUZZLE_CARD';\n\nexport enum NODE_TYPES {\n 'LEGACY' = 'LEGACY',\n 'LEARNING' = 'LEARNING',\n 'REMEDIAL' = 'REMEDIAL',\n 'GENERAL' = 'GENERAL',\n 'SAT_MATH_RECAP' = 'SAT_MATH_RECAP',\n 'SAT_MATH_LEARNING' = 'SAT_MATH_LEARNING',\n 'SAT_MATH_ASSESSMENT' = 'SAT_MATH_ASSESSMENT',\n 'SAT_ENGLISH_RECAP' = 'SAT_ENGLISH_RECAP',\n 'SAT_ENGLISH_LEARNING' = 'SAT_ENGLISH_LEARNING',\n 'SAT_ENGLISH_ASSESSMENT' = 'SAT_ENGLISH_ASSESSMENT',\n 'LEVEL3' = 'LEVEL3',\n 'RECAP' = 'RECAP',\n 'REVISION' = 'REVISION',\n 'LEVEL2' = 'LEVEL2',\n 'TARGET_PRACTICE' = 'TARGET_PRACTICE',\n 'PRACTICE' = 'PRACTICE',\n 'EXTRA_PRACTICE' = 'EXTRA_PRACTICE',\n 'PUZZLE_EASY' = 'PUZZLE_EASY',\n 'PUZZLE_MEDIUM' = 'PUZZLE_MEDIUM',\n 'PUZZLE_HARD' = 'PUZZLE_HARD',\n 'CHAPTER_ASSESSMENT' = 'CHAPTER_ASSESSMENT',\n 'ASSESSMENT' = 'ASSESSMENT',\n 'TRIAL_DIAGNOSTIC' = 'TRIAL_DIAGNOSTIC',\n 'TRIAL_BASIC' = 'TRIAL_BASIC',\n 'TRIAL_INTERMEDIATE' = 'TRIAL_INTERMEDIATE',\n 'TRIAL_ADVANCED' = 'TRIAL_ADVANCED',\n 'MASTERY' = 'MASTERY',\n 'PUZZLE_CARD' = 'PUZZLE_CARD',\n}\n\nexport interface IWorksheetModel {\n name: string;\n learnosity_activity_ref: string;\n is_lesson_v3_enabled: boolean;\n desmos_calculator_enabled: boolean;\n image_hue: THueNames | null;\n}\n\nexport enum EWorksheetActivity {\n LESSON_V3 = 'lesson-v3',\n}\n\nexport interface IWorksheetAttemptModel {\n id: string; // userAttemptId\n node_id: string;\n user_node_id: string;\n node_type: TNodeTypes;\n is_timed: boolean;\n timer_type: 'FLEXIBLE' | 'FIXED' | null;\n sheet_time: number;\n time_spent: number;\n vm_time_spent: number | null;\n started_on_ts: number | null; // epoch time\n completed_on_ts: number | null; // epoch time\n scheduled_start_ts: number | null; // epoch time\n scheduled_end_ts: number | null; // epoch time\n break_interval: number;\n chapter_name: string | null;\n is_worksheet_v3: boolean | null;\n activity_type: EWorksheetActivity | null;\n user_chapter_id?: string | null;\n desmos_calculator_enabled: boolean;\n due_date: number | null;\n state: TLPARSheetAttemptState;\n canvas_data?: Array<IChannelMessage>;\n image_hue?: THueNames | null;\n feedback_comments?: string | null;\n user_block_id?: string | null;\n}\n\nexport interface IWorksheetModelV3 extends IWorksheetAttemptModel {\n permissions: {\n can_attempt: boolean;\n can_change_attempt_location: boolean;\n can_mark_familiar: boolean;\n can_reattempt: boolean;\n can_reset: boolean;\n can_resume: boolean;\n can_review: boolean;\n can_start: boolean;\n can_teacher_review: boolean;\n can_teacher_score: boolean;\n can_unlock: boolean;\n can_view_solution: boolean;\n is_review_disabled: boolean;\n };\n}\n\ninterface IWorksheetPermissionV2 {\n access: boolean;\n code: string;\n reason: string;\n}\n\nexport interface IResumeWorksheetModel extends IWorksheetAttemptModel {\n worksheet_name: string;\n signed_request: string;\n questions_signed_request: string;\n player_config: {\n minimumAccuracy: number;\n validation: boolean;\n }; // this is needed as we are using thsi in submit\n user_attempt_id: string;\n permissions: {\n can_access: IWorksheetPermissionV2;\n can_do: IWorksheetPermissionV2;\n };\n learnosity_activity_ref: string;\n}\n\ntype TWorksheetItems = {\n ref: string;\n};\n\nexport interface IReviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n attempt: IWorksheetAttemptModel;\n worksheet: IWorksheetModel;\n chapter_name?: string;\n node_id?: string;\n sheet_time?: number;\n time_spent?: number;\n is_timed?: boolean;\n attempt_location: TSheetAttemptLocation;\n state?: TSheetStateProps;\n marked_as_completed?: boolean;\n mastery_summary: Record<string, unknown>;\n title?: string;\n worksheet_id?: string;\n node_type: TNodeTypes;\n items?: TWorksheetItems[];\n}\n\nexport interface IPreviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n worksheet_name: string;\n}\n"],"names":["NODE_TYPES","EWorksheetActivity"],"mappings":"AA8CY,IAAAA,sBAAAA,OACVA,EAAA,SAAW,UACXA,EAAA,WAAa,YACbA,EAAA,WAAa,YACbA,EAAA,UAAY,WACZA,EAAA,iBAAmB,kBACnBA,EAAA,oBAAsB,qBACtBA,EAAA,sBAAwB,uBACxBA,EAAA,oBAAsB,qBACtBA,EAAA,uBAAyB,wBACzBA,EAAA,yBAA2B,0BAC3BA,EAAA,SAAW,UACXA,EAAA,QAAU,SACVA,EAAA,WAAa,YACbA,EAAA,SAAW,UACXA,EAAA,kBAAoB,mBACpBA,EAAA,WAAa,YACbA,EAAA,iBAAmB,kBACnBA,EAAA,cAAgB,eAChBA,EAAA,gBAAkB,iBAClBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,aAAe,cACfA,EAAA,mBAAqB,oBACrBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,iBAAmB,kBACnBA,EAAA,UAAY,WACZA,EAAA,cAAgB,eA5BNA,IAAAA,KAAA,CAAA,CAAA,GAuCAC,sBAAAA,OACVA,EAAA,YAAY,aADFA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"worksheet.js","sources":["../../../src/types/models/worksheet.ts"],"sourcesContent":["import type { IChannelMessage } from '@cuemath/cue-message-broker';\n\nimport type { TLPARSheetAttemptState } from '../../features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-type';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../../features/sheets/sheets-list/sheet-item/sheet-item-types';\nimport type { THueNames } from '../../features/ui/types';\n\nexport type TNodeTypes =\n | 'LEGACY'\n | 'LEARNING'\n | 'REMEDIAL'\n | 'GENERAL'\n | 'SAT_MATH_RECAP'\n | 'SAT_MATH_LEARNING'\n | 'SAT_MATH_ASSESSMENT'\n | 'SAT_ENGLISH_RECAP'\n | 'SAT_ENGLISH_LEARNING'\n | 'SAT_ENGLISH_ASSESSMENT'\n | 'LEVEL3'\n | 'RECAP'\n | 'REVISION'\n | 'LEVEL2'\n | 'TARGET_PRACTICE'\n | 'PRACTICE'\n | 'EXTRA_PRACTICE'\n | 'PUZZLE_EASY'\n | 'PUZZLE_MEDIUM'\n | 'PUZZLE_HARD'\n | 'CHAPTER_ASSESSMENT'\n | 'ASSESSMENT'\n | 'TRIAL_DIAGNOSTIC'\n | 'TRIAL_BASIC'\n | 'TRIAL_INTERMEDIATE'\n | 'TRIAL_ADVANCED'\n | 'MASTERY'\n | 'DYNAMIC'\n | 'TURING_ASSESSMENT'\n | 'TURING_SUBJECTIVE'\n | 'TURING_PRACTICE'\n | 'DIAGNOSTIC'\n | 'SUBJECTIVE'\n | 'VIDEO'\n | 'PUZZLE_CARD';\n\nexport enum NODE_TYPES {\n 'LEGACY' = 'LEGACY',\n 'LEARNING' = 'LEARNING',\n 'REMEDIAL' = 'REMEDIAL',\n 'GENERAL' = 'GENERAL',\n 'SAT_MATH_RECAP' = 'SAT_MATH_RECAP',\n 'SAT_MATH_LEARNING' = 'SAT_MATH_LEARNING',\n 'SAT_MATH_ASSESSMENT' = 'SAT_MATH_ASSESSMENT',\n 'SAT_ENGLISH_RECAP' = 'SAT_ENGLISH_RECAP',\n 'SAT_ENGLISH_LEARNING' = 'SAT_ENGLISH_LEARNING',\n 'SAT_ENGLISH_ASSESSMENT' = 'SAT_ENGLISH_ASSESSMENT',\n 'LEVEL3' = 'LEVEL3',\n 'RECAP' = 'RECAP',\n 'REVISION' = 'REVISION',\n 'LEVEL2' = 'LEVEL2',\n 'TARGET_PRACTICE' = 'TARGET_PRACTICE',\n 'PRACTICE' = 'PRACTICE',\n 'EXTRA_PRACTICE' = 'EXTRA_PRACTICE',\n 'PUZZLE_EASY' = 'PUZZLE_EASY',\n 'PUZZLE_MEDIUM' = 'PUZZLE_MEDIUM',\n 'PUZZLE_HARD' = 'PUZZLE_HARD',\n 'CHAPTER_ASSESSMENT' = 'CHAPTER_ASSESSMENT',\n 'ASSESSMENT' = 'ASSESSMENT',\n 'TRIAL_DIAGNOSTIC' = 'TRIAL_DIAGNOSTIC',\n 'TRIAL_BASIC' = 'TRIAL_BASIC',\n 'TRIAL_INTERMEDIATE' = 'TRIAL_INTERMEDIATE',\n 'TRIAL_ADVANCED' = 'TRIAL_ADVANCED',\n 'MASTERY' = 'MASTERY',\n 'PUZZLE_CARD' = 'PUZZLE_CARD',\n}\n\nexport interface IWorksheetModel {\n name: string;\n learnosity_activity_ref: string;\n activity_type: EWorksheetActivity | null;\n desmos_calculator_enabled: boolean;\n image_hue: THueNames | null;\n}\n\nexport enum EWorksheetActivity {\n LESSON_V3 = 'lesson-v3',\n}\n\nexport interface IWorksheetAttemptModel {\n id: string; // userAttemptId\n node_id: string;\n user_node_id: string;\n node_type: TNodeTypes;\n is_timed: boolean;\n timer_type: 'FLEXIBLE' | 'FIXED' | null;\n sheet_time: number;\n time_spent: number;\n vm_time_spent: number | null;\n started_on_ts: number | null; // epoch time\n completed_on_ts: number | null; // epoch time\n scheduled_start_ts: number | null; // epoch time\n scheduled_end_ts: number | null; // epoch time\n break_interval: number;\n chapter_name: string | null;\n is_worksheet_v3: boolean | null;\n activity_type: EWorksheetActivity | null;\n user_chapter_id?: string | null;\n desmos_calculator_enabled: boolean;\n due_date: number | null;\n state: TLPARSheetAttemptState;\n canvas_data?: Array<IChannelMessage>;\n image_hue?: THueNames | null;\n feedback_comments?: string | null;\n user_block_id?: string | null;\n}\n\nexport interface IWorksheetModelV3 extends IWorksheetAttemptModel {\n permissions: {\n can_attempt: boolean;\n can_change_attempt_location: boolean;\n can_mark_familiar: boolean;\n can_reattempt: boolean;\n can_reset: boolean;\n can_resume: boolean;\n can_review: boolean;\n can_start: boolean;\n can_teacher_review: boolean;\n can_teacher_score: boolean;\n can_unlock: boolean;\n can_view_solution: boolean;\n is_review_disabled: boolean;\n };\n}\n\ninterface IWorksheetPermissionV2 {\n access: boolean;\n code: string;\n reason: string;\n}\n\nexport interface IResumeWorksheetModel extends IWorksheetAttemptModel {\n worksheet_name: string;\n signed_request: string;\n questions_signed_request: string;\n player_config: {\n minimumAccuracy: number;\n validation: boolean;\n }; // this is needed as we are using thsi in submit\n user_attempt_id: string;\n permissions: {\n can_access: IWorksheetPermissionV2;\n can_do: IWorksheetPermissionV2;\n };\n learnosity_activity_ref: string;\n}\n\ntype TWorksheetItems = {\n ref: string;\n};\n\nexport interface IReviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n attempt: IWorksheetAttemptModel;\n worksheet: IWorksheetModel;\n chapter_name?: string;\n node_id?: string;\n sheet_time?: number;\n time_spent?: number;\n is_timed?: boolean;\n attempt_location: TSheetAttemptLocation;\n state?: TSheetStateProps;\n marked_as_completed?: boolean;\n mastery_summary: Record<string, unknown>;\n title?: string;\n worksheet_id?: string;\n node_type: TNodeTypes;\n items?: TWorksheetItems[];\n}\n\nexport interface IPreviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n worksheet_name: string;\n}\n"],"names":["NODE_TYPES","EWorksheetActivity"],"mappings":"AA8CY,IAAAA,sBAAAA,OACVA,EAAA,SAAW,UACXA,EAAA,WAAa,YACbA,EAAA,WAAa,YACbA,EAAA,UAAY,WACZA,EAAA,iBAAmB,kBACnBA,EAAA,oBAAsB,qBACtBA,EAAA,sBAAwB,uBACxBA,EAAA,oBAAsB,qBACtBA,EAAA,uBAAyB,wBACzBA,EAAA,yBAA2B,0BAC3BA,EAAA,SAAW,UACXA,EAAA,QAAU,SACVA,EAAA,WAAa,YACbA,EAAA,SAAW,UACXA,EAAA,kBAAoB,mBACpBA,EAAA,WAAa,YACbA,EAAA,iBAAmB,kBACnBA,EAAA,cAAgB,eAChBA,EAAA,gBAAkB,iBAClBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,aAAe,cACfA,EAAA,mBAAqB,oBACrBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,iBAAmB,kBACnBA,EAAA,UAAY,WACZA,EAAA,cAAgB,eA5BNA,IAAAA,KAAA,CAAA,CAAA,GAuCAC,sBAAAA,OACVA,EAAA,YAAY,aADFA,IAAAA,KAAA,CAAA,CAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.5.47-gg2",
3
+ "version": "3.5.47-gg4",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"