@cuemath/leap 3.3.10-j2 → 3.3.11-guru.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar.js +4 -4
  2. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar.js.map +1 -1
  3. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js +2 -2
  4. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js.map +1 -1
  5. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/question-overview.js +19 -18
  6. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/question-overview.js.map +1 -1
  7. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary-styled.js +7 -7
  8. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary-styled.js.map +1 -1
  9. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary.js +26 -24
  10. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary.js.map +1 -1
  11. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/summary-module.js +15 -13
  12. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/summary-module.js.map +1 -1
  13. package/dist/features/chapters/lpar-chapter/constants/index.js.map +1 -1
  14. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js +129 -69
  15. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js.map +1 -1
  16. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +24 -23
  17. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
  18. package/dist/features/chapters-v2/chapter-details/chapter-details.js +71 -68
  19. package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
  20. package/dist/features/chapters-v2/comps/node-card/node-card-styled.js +36 -31
  21. package/dist/features/chapters-v2/comps/node-card/node-card-styled.js.map +1 -1
  22. package/dist/features/chapters-v2/comps/sat-mock-test/sat-mock-test-styled.js +22 -0
  23. package/dist/features/chapters-v2/comps/sat-mock-test/sat-mock-test-styled.js.map +1 -0
  24. package/dist/features/chapters-v2/comps/sat-mock-test/sat-mock-test.js +151 -0
  25. package/dist/features/chapters-v2/comps/sat-mock-test/sat-mock-test.js.map +1 -0
  26. package/dist/features/chapters-v2/constants/block-constants.js +7 -5
  27. package/dist/features/chapters-v2/constants/block-constants.js.map +1 -1
  28. package/dist/features/chapters-v2/utils/index.js +8 -2
  29. package/dist/features/chapters-v2/utils/index.js.map +1 -1
  30. package/dist/features/chapters-v2/utils/sat-sheet-utils.js +12 -0
  31. package/dist/features/chapters-v2/utils/sat-sheet-utils.js.map +1 -0
  32. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +8 -4
  33. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
  34. package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features.js +2 -2
  35. package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features.js.map +1 -1
  36. package/dist/features/parent-dashboard/comps/math-practice/math-practice.js +12 -12
  37. package/dist/features/parent-dashboard/comps/math-practice/math-practice.js.map +1 -1
  38. package/dist/features/sheets/constants/sheet.js +12 -4
  39. package/dist/features/sheets/constants/sheet.js.map +1 -1
  40. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js +6 -6
  41. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js.map +1 -1
  42. package/dist/features/trial-session/comps/pla/session-status/session-status.js.map +1 -1
  43. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +13 -13
  44. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +1 -1
  45. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js.map +1 -1
  46. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js +9 -9
  47. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js.map +1 -1
  48. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +38 -38
  49. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  50. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +128 -126
  51. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  52. package/dist/index.d.ts +27 -27
  53. package/dist/index.js +146 -149
  54. package/dist/index.js.map +1 -1
  55. package/dist/node_modules/query-string/base.js +1 -1
  56. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +1 -0
  57. package/dist/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  58. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  59. package/dist/node_modules/uuid/dist/esm-browser/rng.js +2 -3
  60. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  61. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +10 -6
  62. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  63. package/dist/node_modules/uuid/dist/esm-browser/v4.js +9 -12
  64. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  65. package/dist/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  66. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  67. package/package.json +2 -3
  68. package/dist/features/parent-dashboard/api/parent-home.js +0 -10
  69. package/dist/features/parent-dashboard/api/parent-home.js.map +0 -1
  70. package/dist/features/parent-dashboard/comps/compact-header/compact-header.js +0 -30
  71. package/dist/features/parent-dashboard/comps/compact-header/compact-header.js.map +0 -1
  72. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +0 -64
  73. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +0 -1
  74. package/dist/features/parent-dashboard/parent-dashboard-constants.js +0 -26
  75. package/dist/features/parent-dashboard/parent-dashboard-constants.js.map +0 -1
  76. package/dist/features/parent-dashboard/parent-dashboard-styled.js +0 -33
  77. package/dist/features/parent-dashboard/parent-dashboard-styled.js.map +0 -1
  78. package/dist/features/parent-dashboard/parent-dashboard-view.js +0 -203
  79. package/dist/features/parent-dashboard/parent-dashboard-view.js.map +0 -1
  80. package/dist/features/parent-dashboard/parent-dashboard.js +0 -8
  81. package/dist/features/parent-dashboard/parent-dashboard.js.map +0 -1
  82. package/dist/node_modules/decode-uri-component/index.js.map +0 -1
  83. package/dist/node_modules/uuid/dist/esm-browser/native.js +0 -7
  84. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  85. /package/dist/node_modules/{decode-uri-component → query-string/node_modules/decode-uri-component}/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-questions-controller.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.tsx"],"sourcesContent":["import type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from './worksheet-questions-controller-types';\nimport type { FC } from 'react';\n\nimport { deepEqual } from 'fast-equals';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport HandIcon from '../../../../assets/line-icons/icons/hand';\nimport QuestionIcon from '../../../../assets/line-icons/icons/question';\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';\n\nconst WorksheetQuestionsController: FC<IWorksheetQuestionsControllerProps> = memo(props => {\n const {\n layout,\n learnosity,\n question,\n questions,\n responses,\n questionIndex,\n canSubmitWorksheet,\n isQuestionUnlocked,\n isQuestionAppended,\n response,\n behavior,\n userType,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n getTimeSpentOnQuestion,\n onSkip,\n actionBarRightElement,\n } = props;\n\n const { onHelp, onResponseChange, onTeacherValidation, loggerRef } = props;\n const {\n navigationMode,\n canAttempt,\n hints,\n checkButtonLabel,\n retryButtonLabel,\n validation,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n canTeacherValidate,\n hintsTimer,\n skippableTime,\n skippable,\n } = behavior;\n\n const { response_id, item_type, type, instructor_stimulus, is_optional } = question;\n const hintsAvailable = !hints\n ? 0\n : learnosity.question(response_id)?.getMetadata()?.hints?.length ?? 0;\n\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isExitTicket = item_type === 'exit-ticket';\n const hintsRemaining = canAttempt && hintsAvailable - (response?.hintsUsed ?? 0) > 0;\n\n const [showHintsButton, setShowHintsButton] = useState(false);\n const [skipped, setSkipped] = useState(false);\n const [showSkipButton, setShowSkipButton] = useState(false);\n\n useEffect(() => {\n if (hintsTimer && hintsRemaining) {\n const timeoutId = setTimeout(() => {\n setShowHintsButton(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n setShowHintsButton(hintsRemaining);\n }, [hintsTimer, hintsRemaining]);\n\n useEffect(() => {\n const canShowSkip = !response?.response && !response?.skipped;\n\n //* If hints are available and user has exhausted all hints then we show skip button.\n //* If hints are not available and user has not given any response or have not skipped a question then we show skip button after skippableTime/ 90 seconds.\n //* Else skip button is hidden.\n if (skippable) {\n if (hintsAvailable > 0 && !hintsRemaining) {\n setShowSkipButton(canShowSkip);\n } else if (hintsAvailable === 0 && canShowSkip) {\n const timeoutId = setTimeout(\n () => {\n setShowSkipButton(canShowSkip);\n },\n (skippableTime ?? 0) * 1000,\n );\n\n return () => clearTimeout(timeoutId);\n } else {\n setShowSkipButton(false);\n }\n }\n }, [hintsAvailable, hintsRemaining, response, skippable, skippableTime]);\n\n const {\n checkButton,\n checkButtonDisabled,\n hintsButton,\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 //* maximumAttempts = -2 means this is a puzzle card.\n if (maximumAttempts === -2) {\n if (userType === 'STUDENT') {\n if (canAttempt) {\n return {\n hintsButton: showHintsButton,\n };\n }\n }\n\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?.response,\n hintsButton: showHintsButton,\n skipButton: showSkipButton,\n };\n }\n\n if (!validation) {\n return {\n nextButton: true,\n hintsButton: showHintsButton,\n };\n }\n\n if (!response || !response.response || !response.score) {\n return {\n checkButton: true,\n checkButtonDisabled: true,\n hintsButton: showHintsButton,\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 hintsButton: showHintsButton,\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n return {\n nextButton: maximumAttemptsReached,\n retryButton: true,\n hintsButton: showHintsButton,\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 // TODO: change the condition to if teacher validator is needed or not\n if (navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT') {\n if (userType === 'STUDENT') {\n return {\n hintsButton: showHintsButton,\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 hintsButton: showHintsButton,\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: 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 showHintsButton,\n showSkipButton,\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 handleHelpButtonClick,\n handleBackButtonClick,\n handleNextButtonClick,\n handleCheckButtonClick,\n handleRetryButtonClick,\n handleHintButtonClick,\n handleValidateButtonClick,\n handleStartButtonClick,\n handleSkipSectionButtonClick,\n handleReadyButtonClick,\n handleSkipButtonClick,\n } = useHandlerCallbacks({\n layout,\n question,\n questions,\n learnosity,\n questionIndex,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n onResponseChange,\n onTeacherValidation,\n onHelp,\n behavior,\n loggerRef,\n setSkipped,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n setShowSkipButton(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 $background=\"WHITE\"\n $flexDirection=\"row\"\n $flexGapX={0.5}\n $alignItems=\"center\"\n $justifyContent=\"flex-end\"\n >\n {hintsButton && (\n <IconButton\n Icon={QuestionIcon}\n analyticsLabel=\"Hint\"\n renderAs=\"secondary\"\n disabled={!isQuestionAppended}\n onClick={handleHintButtonClick}\n />\n )}\n {!hintsButton && handleHelpButtonClick && (checkButton || retryButton) && (\n <IconButton\n Icon={HandIcon}\n analyticsLabel=\"Ask for help\"\n renderAs=\"secondary\"\n onClick={handleHelpButtonClick}\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 {actionBarRightElement && actionBarRightElement}\n </FlexView>\n );\n});\n\nexport default WorksheetQuestionsController;\n"],"names":["WorksheetQuestionsController","memo","props","layout","learnosity","question","questions","responses","questionIndex","canSubmitWorksheet","isQuestionUnlocked","isQuestionAppended","response","behavior","userType","setActiveQuestionId","setSummaryVisible","setBlocker","setResponses","getTimeSpentOnQuestion","onSkip","actionBarRightElement","onHelp","onResponseChange","onTeacherValidation","loggerRef","navigationMode","canAttempt","hints","checkButtonLabel","retryButtonLabel","validation","maximumAttempts","canExceedAttempts","teacherValidationEnabled","canTeacherValidate","hintsTimer","skippableTime","skippable","response_id","item_type","type","instructor_stimulus","is_optional","hintsAvailable","_c","_b","_a","isSystemIntro","isExitTicket","hintsRemaining","showHintsButton","setShowHintsButton","useState","skipped","setSkipped","showSkipButton","setShowSkipButton","useEffect","timeoutId","canShowSkip","checkButton","checkButtonDisabled","hintsButton","retryButton","nextButton","nextButtonDisabled","startButton","readyButton","validateButton","skipSectionButton","submitAttemptButton","skipButton","useMemo","showSkipSectionButton","getSystemValidationButtons","responseEdited","score","attemptsHistory","maximumAttemptsReached","lastAttemptResponse","deepEqual","isPendingTeacherValidation","questionId","assignStatus","validatedByTeacher","handleResponseChange","handleHelpButtonClick","handleBackButtonClick","handleNextButtonClick","handleCheckButtonClick","handleRetryButtonClick","handleHintButtonClick","handleValidateButtonClick","handleStartButtonClick","handleSkipSectionButtonClick","handleReadyButtonClick","handleSkipButtonClick","useHandlerCallbacks","questionInstance","jsxs","FlexView","jsx","IconButton","QuestionIcon","HandIcon","Button","SkipIcon","Check2Icon"],"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 type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from './worksheet-questions-controller-types';\nimport type { FC } from 'react';\n\nimport { deepEqual } from 'fast-equals';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport HandIcon from '../../../../assets/line-icons/icons/hand';\nimport QuestionIcon from '../../../../assets/line-icons/icons/question';\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';\n\nconst WorksheetQuestionsController: FC<IWorksheetQuestionsControllerProps> = memo(props => {\n const {\n layout,\n learnosity,\n question,\n questions,\n responses,\n questionIndex,\n canSubmitWorksheet,\n isQuestionUnlocked,\n isQuestionAppended,\n response,\n behavior,\n userType,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n getTimeSpentOnQuestion,\n onSkip,\n actionBarRightElement,\n onSubmit,\n } = props;\n\n const { onHelp, onResponseChange, onTeacherValidation, loggerRef } = props;\n const {\n navigationMode,\n canAttempt,\n hints,\n checkButtonLabel,\n retryButtonLabel,\n validation,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n canTeacherValidate,\n hintsTimer,\n skippableTime,\n skippable,\n } = behavior;\n\n const { response_id, item_type, type, instructor_stimulus, is_optional } = question;\n const hintsAvailable = !hints\n ? 0\n : learnosity.question(response_id)?.getMetadata()?.hints?.length ?? 0;\n\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isExitTicket = item_type === 'exit-ticket';\n const hintsRemaining = canAttempt && hintsAvailable - (response?.hintsUsed ?? 0) > 0;\n\n const [showHintsButton, setShowHintsButton] = useState(false);\n const [skipped, setSkipped] = useState(false);\n const [showSkipButton, setShowSkipButton] = useState(false);\n\n useEffect(() => {\n if (hintsTimer && hintsRemaining) {\n const timeoutId = setTimeout(() => {\n setShowHintsButton(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n setShowHintsButton(hintsRemaining);\n }, [hintsTimer, hintsRemaining]);\n\n useEffect(() => {\n const canShowSkip = !response?.response && !response?.skipped;\n\n //* If hints are available and user has exhausted all hints then we show skip button.\n //* If hints are not available and user has not given any response or have not skipped a question then we show skip button after skippableTime/ 90 seconds.\n //* Else skip button is hidden.\n if (skippable) {\n if (hintsAvailable > 0 && !hintsRemaining) {\n setShowSkipButton(canShowSkip);\n } else if (hintsAvailable === 0 && canShowSkip) {\n const timeoutId = setTimeout(\n () => {\n setShowSkipButton(canShowSkip);\n },\n (skippableTime ?? 0) * 1000,\n );\n\n return () => clearTimeout(timeoutId);\n } else {\n setShowSkipButton(false);\n }\n }\n }, [hintsAvailable, hintsRemaining, response, skippable, skippableTime]);\n\n const {\n checkButton,\n checkButtonDisabled,\n hintsButton,\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 //* maximumAttempts = -2 means this is a puzzle card.\n if (maximumAttempts === -2) {\n if (userType === 'STUDENT') {\n if (canAttempt) {\n return {\n hintsButton: showHintsButton,\n };\n }\n }\n\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?.response,\n hintsButton: showHintsButton,\n skipButton: showSkipButton,\n };\n }\n\n if (!validation) {\n return {\n nextButton: true,\n hintsButton: showHintsButton,\n };\n }\n\n if (!response || !response.response || !response.score) {\n return {\n checkButton: true,\n checkButtonDisabled: true,\n hintsButton: showHintsButton,\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 hintsButton: showHintsButton,\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n return {\n nextButton: maximumAttemptsReached,\n retryButton: true,\n hintsButton: showHintsButton,\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 // TODO: change the condition to if teacher validator is needed or not\n if (navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT') {\n if (userType === 'STUDENT') {\n return {\n hintsButton: showHintsButton,\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 hintsButton: showHintsButton,\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: 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 showHintsButton,\n showSkipButton,\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 handleHelpButtonClick,\n handleBackButtonClick,\n handleNextButtonClick,\n handleCheckButtonClick,\n handleRetryButtonClick,\n handleHintButtonClick,\n handleValidateButtonClick,\n handleStartButtonClick,\n handleSkipSectionButtonClick,\n handleReadyButtonClick,\n handleSkipButtonClick,\n } = useHandlerCallbacks({\n layout,\n question,\n questions,\n learnosity,\n questionIndex,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n onResponseChange,\n onTeacherValidation,\n onHelp,\n behavior,\n loggerRef,\n setSkipped,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n setShowSkipButton(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 $background=\"WHITE\"\n $flexDirection=\"row\"\n $flexGapX={0.5}\n $alignItems=\"center\"\n $justifyContent=\"flex-end\"\n >\n {hintsButton && (\n <IconButton\n Icon={QuestionIcon}\n analyticsLabel=\"Hint\"\n renderAs=\"secondary\"\n disabled={!isQuestionAppended}\n onClick={handleHintButtonClick}\n />\n )}\n {!hintsButton && handleHelpButtonClick && (checkButton || retryButton) && (\n <IconButton\n Icon={HandIcon}\n analyticsLabel=\"Ask for help\"\n renderAs=\"secondary\"\n onClick={handleHelpButtonClick}\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 renderAs=\"primary\" size=\"small\" label=\"Submit\" onClick={onSubmit} />\n )}\n {actionBarRightElement && actionBarRightElement}\n </FlexView>\n );\n});\n\nexport default WorksheetQuestionsController;\n"],"names":["WorksheetQuestionsController","memo","props","layout","learnosity","question","questions","responses","questionIndex","canSubmitWorksheet","isQuestionUnlocked","isQuestionAppended","response","behavior","userType","setActiveQuestionId","setSummaryVisible","setBlocker","setResponses","getTimeSpentOnQuestion","onSkip","actionBarRightElement","onSubmit","onHelp","onResponseChange","onTeacherValidation","loggerRef","navigationMode","canAttempt","hints","checkButtonLabel","retryButtonLabel","validation","maximumAttempts","canExceedAttempts","teacherValidationEnabled","canTeacherValidate","hintsTimer","skippableTime","skippable","response_id","item_type","type","instructor_stimulus","is_optional","hintsAvailable","_c","_b","_a","isSystemIntro","isExitTicket","hintsRemaining","showHintsButton","setShowHintsButton","useState","skipped","setSkipped","showSkipButton","setShowSkipButton","useEffect","timeoutId","canShowSkip","checkButton","checkButtonDisabled","hintsButton","retryButton","nextButton","nextButtonDisabled","startButton","readyButton","validateButton","skipSectionButton","submitAttemptButton","skipButton","useMemo","showSkipSectionButton","getSystemValidationButtons","responseEdited","score","attemptsHistory","maximumAttemptsReached","lastAttemptResponse","deepEqual","isPendingTeacherValidation","questionId","assignStatus","validatedByTeacher","handleResponseChange","handleHelpButtonClick","handleBackButtonClick","handleNextButtonClick","handleCheckButtonClick","handleRetryButtonClick","handleHintButtonClick","handleValidateButtonClick","handleStartButtonClick","handleSkipSectionButtonClick","handleReadyButtonClick","handleSkipButtonClick","useHandlerCallbacks","questionInstance","jsxs","FlexView","jsx","IconButton","QuestionIcon","HandIcon","Button","SkipIcon","Check2Icon"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -133,6 +133,13 @@ export declare const Bin2Icon: React.FC<React.SVGProps<SVGSVGElement>>;
133
133
 
134
134
  export declare const BinIcon: React.FC<React.SVGProps<SVGSVGElement>>;
135
135
 
136
+ declare enum BLOCK_STATES {
137
+ LOCKED = "LOCKED",
138
+ NOT_STARTED = "NOT_STARTED",
139
+ IN_PROGRESS = "IN_PROGRESS",
140
+ COMPLETED = "COMPLETED"
141
+ }
142
+
136
143
  declare const BLOCK_STATUS: {
137
144
  readonly ADDED: "ADDED";
138
145
  readonly IN_PROGRESS: "IN_PROGRESS";
@@ -335,8 +342,6 @@ export declare const Coachmark: React_2.FC<{
335
342
 
336
343
  export declare const CodeIcon: React.FC<React.SVGProps<SVGSVGElement>>;
337
344
 
338
- export declare const CompactHeader: MemoExoticComponent<({ progressPercentage, showProgress, HeaderAvatar }: ICompactHeaderProps) => JSX.Element | null>;
339
-
340
345
  export declare const COMPLETED_SHEET_STATE: TSheetStateProps[];
341
346
 
342
347
  export declare const ContextMenu: FC<IContextMenuProps>;
@@ -932,6 +937,12 @@ declare interface IBaseWorksheetProps {
932
937
 
933
938
  declare interface IBlockSectionsCallbacks extends INodeCardCallbacks {
934
939
  onBlockSkipUnskip?: (blockData: IChapterBlockData, skipBlock?: boolean) => void;
940
+ onBlockReset?: (blockData: IChapterBlockData) => void;
941
+ }
942
+
943
+ declare interface IBlockStats {
944
+ sat_max_score: number;
945
+ sat_total_score: number;
935
946
  }
936
947
 
937
948
  declare interface IButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, IClickableAnalyticsProps {
@@ -1016,6 +1027,7 @@ declare interface IChapter extends IChapterState, Pick<IChapterModel, 'code' | '
1016
1027
 
1017
1028
  export declare interface IChapterBlockData {
1018
1029
  block_type: keyof typeof BLOCK_TYPE;
1030
+ block_statement: string;
1019
1031
  chapter_code: string;
1020
1032
  code: string;
1021
1033
  block_id: string;
@@ -1025,11 +1037,17 @@ export declare interface IChapterBlockData {
1025
1037
  section_code: keyof typeof SECTION_CODE;
1026
1038
  sheets: INodeDataProps[];
1027
1039
  user_block_id: string | null;
1040
+ block_stats: IBlockStats | null;
1041
+ state: TBlockStates;
1028
1042
  }
1029
1043
 
1030
1044
  declare interface IChapterBlockPermission {
1031
1045
  can_skip: boolean;
1032
1046
  can_un_skip: boolean;
1047
+ can_reset: boolean;
1048
+ can_resume: boolean;
1049
+ can_review: boolean;
1050
+ can_start: boolean;
1033
1051
  }
1034
1052
 
1035
1053
  export declare interface IChapterBlockV3 {
@@ -1329,12 +1347,6 @@ export declare interface ICoachmarkProps {
1329
1347
  isActive: boolean;
1330
1348
  }
1331
1349
 
1332
- declare interface ICompactHeaderProps {
1333
- showProgress?: boolean;
1334
- progressPercentage?: number;
1335
- HeaderAvatar: ReactElement;
1336
- }
1337
-
1338
1350
  export declare const IconButton: FC<IIconButtonProps>;
1339
1351
 
1340
1352
  declare interface IconProps extends React_2.SVGProps<SVGSVGElement> {
@@ -2409,7 +2421,7 @@ declare interface IMaintenanceProps {
2409
2421
  }
2410
2422
 
2411
2423
  declare interface IMathPracticeProps {
2412
- onSwitchUser?: () => void;
2424
+ onSwitchUser: () => void;
2413
2425
  }
2414
2426
 
2415
2427
  export declare interface IMessageProps {
@@ -2780,6 +2792,7 @@ export declare interface INodeDataProps {
2780
2792
  unlocked_on_ts: number | null;
2781
2793
  user_attempt_id: string | null;
2782
2794
  user_chapter_id: string | null;
2795
+ user_block_id: string | null;
2783
2796
  user_milestone_id?: string;
2784
2797
  user_node_id: string | null;
2785
2798
  worksheet_id: string;
@@ -2895,19 +2908,6 @@ export declare interface IOutcomeStageData {
2895
2908
  achievementAction?: string | null;
2896
2909
  }
2897
2910
 
2898
- declare interface IParentDashboardProps {
2899
- studentName: string;
2900
- studentServiceId: string;
2901
- onRescheduleDemo: (demoId?: string) => void;
2902
- onChangeTutor: (demoId: string) => void;
2903
- onGetStartedAgain?: () => void;
2904
- onViewSummary?: (key: string) => void;
2905
- onSwitchUser?: () => void;
2906
- canChangeTutor: boolean;
2907
- isSubscriptionCancelled: boolean;
2908
- HeaderAvatar: ReactElement;
2909
- }
2910
-
2911
2911
  declare interface IPercentileProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'>, Omit<IBaseInputProps, 'inputElement'> {
2912
2912
  }
2913
2913
 
@@ -3393,7 +3393,7 @@ declare interface ISessionStatusProps {
3393
3393
  declare interface ISessionSummaryProps {
3394
3394
  isDemoDone: boolean;
3395
3395
  studentName: string;
3396
- onViewSummary?: (key: string) => void;
3396
+ onViewSummary: (key: string) => void;
3397
3397
  }
3398
3398
 
3399
3399
  declare interface IShareInstructionModalProps {
@@ -4019,7 +4019,7 @@ export declare interface ITutorialProps {
4019
4019
  }
4020
4020
 
4021
4021
  declare interface IUpcomingSessionsProps {
4022
- sessions?: TSession[];
4022
+ sessions: TSession[];
4023
4023
  }
4024
4024
 
4025
4025
  declare interface IUpdateImages {
@@ -4972,8 +4972,6 @@ export declare const OverlayLoader: MemoExoticComponent<({ isLoading }: {
4972
4972
  isLoading?: boolean | undefined;
4973
4973
  }) => JSX.Element | null>;
4974
4974
 
4975
- export declare const ParentDashboard: MemoExoticComponent<(props: IParentDashboardProps) => JSX.Element>;
4976
-
4977
4975
  export declare const ParentDashboardFaqs: () => JSX.Element;
4978
4976
 
4979
4977
  export declare const PencilIcon: React.FC<React.SVGProps<SVGSVGElement>>;
@@ -5156,7 +5154,7 @@ export declare const RightIcon: React.FC<React.SVGProps<SVGSVGElement>>;
5156
5154
 
5157
5155
  export declare const RulerIcon: React.FC<React.SVGProps<SVGSVGElement>>;
5158
5156
 
5159
- declare const SAT_NODE_TYPE: {
5157
+ export declare const SAT_NODE_TYPE: {
5160
5158
  readonly SAT_ENGLISH_ASSESSMENT: "SAT_ENGLISH_ASSESSMENT";
5161
5159
  readonly SAT_MATH_ASSESSMENT: "SAT_MATH_ASSESSMENT";
5162
5160
  readonly SAT_MATH_RECAP: "SAT_MATH_RECAP";
@@ -5434,6 +5432,8 @@ declare type TBlockData = {
5434
5432
  block_stats: TBlockStatsData;
5435
5433
  };
5436
5434
 
5435
+ declare type TBlockStates = keyof typeof BLOCK_STATES;
5436
+
5437
5437
  declare type TBlockStatsData = {
5438
5438
  block_status: TBlockStatus;
5439
5439
  optional_status: string | null;