@cuemath/leap 4.0.4-beta.0 → 4.0.4

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 (35) hide show
  1. package/dist/features/math-fit/math-fit-report/comps/score-section/score-section.js +43 -42
  2. package/dist/features/math-fit/math-fit-report/comps/score-section/score-section.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +5 -5
  4. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  5. package/dist/features/timeline/daily-timeline/comps/daily-timeline-items/daily-timeline-items.js +38 -37
  6. package/dist/features/timeline/daily-timeline/comps/daily-timeline-items/daily-timeline-items.js.map +1 -1
  7. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report-types.js.map +1 -1
  8. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report.js +99 -119
  9. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report.js.map +1 -1
  10. package/dist/features/ui/tag/tag-styled.js +17 -15
  11. package/dist/features/ui/tag/tag-styled.js.map +1 -1
  12. package/dist/features/ui/tag/tag.js +7 -5
  13. package/dist/features/ui/tag/tag.js.map +1 -1
  14. package/dist/features/ui/theme/get-theme.js +14 -12
  15. package/dist/features/ui/theme/get-theme.js.map +1 -1
  16. package/dist/features/ui/theme/tag.js +36 -0
  17. package/dist/features/ui/theme/tag.js.map +1 -0
  18. package/dist/features/ui/theme/text.js +0 -15
  19. package/dist/features/ui/theme/text.js.map +1 -1
  20. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js +1 -1
  21. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js.map +1 -1
  22. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js +1 -0
  23. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js.map +1 -1
  24. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js +1 -1
  25. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js.map +1 -1
  26. package/dist/index.d.ts +27 -5
  27. package/package.json +1 -1
  28. package/dist/features/timeline/monthly-timeline/ptm-report/comps/ptm-feedback/ptm-feedback-styled.js +0 -17
  29. package/dist/features/timeline/monthly-timeline/ptm-report/comps/ptm-feedback/ptm-feedback-styled.js.map +0 -1
  30. package/dist/features/timeline/monthly-timeline/ptm-report/comps/ptm-feedback/ptm-feedback.js +0 -62
  31. package/dist/features/timeline/monthly-timeline/ptm-report/comps/ptm-feedback/ptm-feedback.js.map +0 -1
  32. package/dist/features/timeline/monthly-timeline/ptm-report/comps/sticky-footer/sticky-footer-styled.js +0 -23
  33. package/dist/features/timeline/monthly-timeline/ptm-report/comps/sticky-footer/sticky-footer-styled.js.map +0 -1
  34. package/dist/features/timeline/monthly-timeline/ptm-report/comps/sticky-footer/sticky-footer.js +0 -33
  35. package/dist/features/timeline/monthly-timeline/ptm-report/comps/sticky-footer/sticky-footer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"controller-lesson-v3_1.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.tsx"],"sourcesContent":["import { deepEqual } from 'fast-equals';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../ui/buttons/button/button';\nimport { useWorksheetStore } from '../../hooks/use-worksheet-store';\nimport { isTeacherInterventionNeeded } from '../../worksheet-helpers';\nimport useHandleCheckButtonClick from '../hooks/use-handle-check-button-click';\nimport useHandleNextButtonClick from '../hooks/use-handle-next-button-click';\nimport useHandleResponseChange from '../hooks/use-handle-response-change';\nimport useHandleRetryButtonClick from '../hooks/use-handle-retry-button-click';\nimport usePlayValidationAudio from '../hooks/use-play-validation-audio';\nimport type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from '../worksheet-questions-controller-types';\nimport useHandleStartButtonClick from '../hooks/use-handle-start-button-click';\nimport useHandleSkipButtonClick from '../hooks/use-handle-skip-button-click';\nimport useHandleSubmitQuiz from '../hooks/use-handle-submit-quiz';\nimport { type IWorksheetQuestion, type IWorksheetResponse } from '../../worksheet-types';\n\ninterface IAreAllExitTicketQuestionsValidated {\n (responses: Record<string, IWorksheetResponse>, questions: IWorksheetQuestion[]): boolean;\n}\n\nconst areAllExitTicketQuestionsValidated: IAreAllExitTicketQuestionsValidated = (\n responses,\n questions,\n) => {\n const exitTicketQuestions = questions.filter(\n q => q.item_type === 'exit-ticket' && !q.is_non_question,\n );\n\n return exitTicketQuestions.every(q => responses[q.response_id]?.validatedByTeacher === true);\n};\n\nconst StudentControllerLessonV3_1: FC<IWorksheetQuestionsControllerProps> = memo(\n function StudentControllerLessonV3_1(props) {\n const {\n behavior,\n question,\n questions,\n response,\n responses,\n learnosity,\n isQuestionAppended,\n inClass,\n isLastQuestion,\n onSubmit,\n worksheetCompleted,\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 response: store.responses[activeQuestion.response_id],\n responses: store.responses,\n learnosity: store.learnosity,\n isQuestionAppended: store.appendedQuestionIds.includes(activeQuestion.response_id),\n inClass: store.inClass,\n isLastQuestion: store.activeQuestionIndex === store.questions.length - 1,\n onSubmit: store.onSubmit,\n worksheetCompleted: store.worksheetCompleted,\n };\n });\n const { getTimeSpentOnQuestion } = props;\n const {\n canAttempt,\n checkButtonLabel,\n retryButtonLabel,\n teacherDiscussionEnabled,\n attemptsAfterTeacherInterventionNeeded,\n } = behavior;\n const { response_id, metadata, is_non_question: isNonQuestion, item_type } = question;\n const isExitTicket = item_type === 'exit-ticket';\n const {\n startButton,\n checkButton,\n checkButtonDisabled,\n retryButton,\n retryButtonDisabled,\n nextButton,\n nextButtonDisabled,\n nextButtonTooltip,\n moveButton,\n skipButton,\n skipButtonLabel,\n submitQuizButton,\n submitAttemptButton,\n } = useMemo<IButtonTypes>(() => {\n if (isNonQuestion)\n return {\n startButton: canAttempt && !response?.responseGiven,\n };\n\n if (isExitTicket) {\n const { submittedByStudent } = response || {};\n\n if (!submittedByStudent) {\n if (isLastQuestion)\n return {\n submitQuizButton: true,\n };\n\n if (response?.skipped || response?.response)\n return {\n nextButton: true,\n };\n\n return {\n skipButton: true,\n skipButtonLabel: 'Next',\n };\n }\n\n if (isLastQuestion && areAllExitTicketQuestionsValidated(responses, questions)) {\n return {\n submitAttemptButton: !worksheetCompleted,\n };\n }\n }\n\n if (!response || !response.response || !response.score)\n return {\n checkButton: canAttempt,\n checkButtonDisabled: canAttempt,\n };\n\n const { responseEdited, score, attemptsHistory, retryEnabled } = response;\n\n if (responseEdited) {\n const lastAttemptResponse = attemptsHistory?.slice(-1)[0]?.response;\n\n return {\n checkButton: canAttempt || response.retryEnabled,\n checkButtonDisabled: deepEqual(response.response, lastAttemptResponse),\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n const teacherInterventionNeeded = isTeacherInterventionNeeded({\n attemptsAfterTeacherInterventionNeeded:\n item_type === 'exit-ticket' ? 1 : attemptsAfterTeacherInterventionNeeded,\n attemptsHistory,\n });\n\n if (!teacherInterventionNeeded)\n return {\n retryButton: canAttempt,\n };\n\n if (inClass)\n return {\n retryButton: true,\n retryButtonDisabled: retryEnabled !== true,\n };\n\n return {\n moveButton: true,\n };\n }\n\n if ((score.score ?? 0) === score.max_score) {\n if (\n inClass &&\n teacherDiscussionEnabled &&\n metadata.acknowledgements &&\n !response?.validatedByTeacher\n ) {\n return {\n nextButton: true,\n nextButtonDisabled: true,\n nextButtonTooltip: 'Tutor approval is required',\n };\n }\n\n if (!isLastQuestion)\n return {\n nextButton: true,\n };\n }\n\n return {};\n }, [\n isNonQuestion,\n canAttempt,\n response,\n isExitTicket,\n isLastQuestion,\n responses,\n questions,\n worksheetCompleted,\n item_type,\n attemptsAfterTeacherInterventionNeeded,\n inClass,\n teacherDiscussionEnabled,\n metadata.acknowledgements,\n ]);\n\n const playValidationAudio = usePlayValidationAudio();\n const handleResponseChange = useHandleResponseChange({\n getTimeSpentOnQuestion,\n });\n const handleNextButtonClick = useHandleNextButtonClick();\n const [skipped, setSkipped] = useState(false);\n const handleSkipButtonClick = useHandleSkipButtonClick({\n setSkipped,\n });\n const handleValidate = useCallback(() => {\n playValidationAudio();\n handleResponseChange(true);\n }, [handleResponseChange, playValidationAudio]);\n const handleCheckButtonClick = useHandleCheckButtonClick({\n handleValidate,\n });\n const handleRetryButtonClick = useHandleRetryButtonClick({\n handleResponseChange,\n });\n const handleStartButtonClick = useHandleStartButtonClick();\n const handleSubmitQuiz = useHandleSubmitQuiz();\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses, questions);\n }, [onSubmit, responses, questions]);\n\n const questionEnabled = checkButton || (isExitTicket && !response?.submittedByStudent);\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n handleNextButtonClick();\n }\n }, [handleNextButtonClick, skipped]);\n\n useEffect(() => {\n const questionInstance = isQuestionAppended ? learnosity.question(response_id) : undefined;\n\n if (questionInstance) {\n if (questionEnabled) {\n questionInstance.on('changed', handleResponseChange);\n questionInstance.enable();\n } else {\n questionInstance.disable();\n }\n }\n\n return () => {\n if (questionInstance && questionEnabled) {\n questionInstance.off('changed', handleResponseChange);\n questionInstance.disable();\n }\n };\n }, [handleResponseChange, isQuestionAppended, learnosity, questionEnabled, response_id]);\n\n return (\n <>\n {nextButton && (\n <ArrowTooltip\n position=\"top\"\n renderAs=\"primary\"\n hidden={!nextButtonTooltip}\n tooltipItem={nextButtonTooltip ?? ''}\n >\n <Button\n widthX={6}\n renderAs=\"primary\"\n label=\"Next\"\n onClick={handleNextButtonClick}\n disabled={nextButtonDisabled === true}\n />\n </ArrowTooltip>\n )}\n {skipButton && (\n <Button\n widthX={6}\n renderAs=\"primary\"\n label={skipButtonLabel ?? 'Skip'}\n onClick={handleSkipButtonClick}\n />\n )}\n {moveButton && (\n <Button\n widthX={8.5}\n renderAs=\"primary\"\n label=\"Move ahead\"\n onClick={handleNextButtonClick}\n />\n )}\n {retryButton && (\n <ArrowTooltip\n position=\"top\"\n renderAs=\"primary\"\n hidden={!retryButtonDisabled}\n tooltipItem=\"Tutor will help, then enable retry\"\n >\n <Button\n widthX={6}\n renderAs=\"primary\"\n label={retryButtonLabel}\n disabled={!isQuestionAppended || retryButtonDisabled}\n onClick={handleRetryButtonClick}\n />\n </ArrowTooltip>\n )}\n {checkButton && (\n <Button\n renderAs=\"primary\"\n label={checkButtonLabel}\n disabled={checkButtonDisabled === true || !isQuestionAppended}\n onClick={handleCheckButtonClick}\n />\n )}\n {startButton && (\n <Button renderAs=\"primary\" label=\"Start\" onClick={handleStartButtonClick} />\n )}\n {submitQuizButton && (\n <Button\n renderAs=\"primary\"\n label=\"Submit\"\n analyticsLabel=\"Submit Quiz\"\n onClick={handleSubmitQuiz}\n />\n )}\n {submitAttemptButton && (\n <Button renderAs=\"primary\" label=\"Submit\" onClick={handleSheetSubmitButtonClick} />\n )}\n </>\n );\n },\n);\n\nexport default StudentControllerLessonV3_1;\n"],"names":["areAllExitTicketQuestionsValidated","responses","questions","q","_a","StudentControllerLessonV3_1","memo","props","behavior","question","response","learnosity","isQuestionAppended","inClass","isLastQuestion","onSubmit","worksheetCompleted","useWorksheetStore","store","activeQuestion","getTimeSpentOnQuestion","canAttempt","checkButtonLabel","retryButtonLabel","teacherDiscussionEnabled","attemptsAfterTeacherInterventionNeeded","response_id","metadata","isNonQuestion","item_type","isExitTicket","startButton","checkButton","checkButtonDisabled","retryButton","retryButtonDisabled","nextButton","nextButtonDisabled","nextButtonTooltip","moveButton","skipButton","skipButtonLabel","submitQuizButton","submitAttemptButton","useMemo","submittedByStudent","responseEdited","score","attemptsHistory","retryEnabled","lastAttemptResponse","deepEqual","isTeacherInterventionNeeded","playValidationAudio","usePlayValidationAudio","handleResponseChange","useHandleResponseChange","handleNextButtonClick","useHandleNextButtonClick","skipped","setSkipped","useState","handleSkipButtonClick","useHandleSkipButtonClick","handleValidate","useCallback","handleCheckButtonClick","useHandleCheckButtonClick","handleRetryButtonClick","useHandleRetryButtonClick","handleStartButtonClick","useHandleStartButtonClick","handleSubmitQuiz","useHandleSubmitQuiz","handleSheetSubmitButtonClick","questionEnabled","useEffect","questionInstance","jsxs","Fragment","jsx","ArrowTooltip","Button"],"mappings":"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"}
1
+ {"version":3,"file":"controller-lesson-v3_1.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.tsx"],"sourcesContent":["import { deepEqual } from 'fast-equals';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../ui/buttons/button/button';\nimport { useWorksheetStore } from '../../hooks/use-worksheet-store';\nimport { isTeacherInterventionNeeded } from '../../worksheet-helpers';\nimport useHandleCheckButtonClick from '../hooks/use-handle-check-button-click';\nimport useHandleNextButtonClick from '../hooks/use-handle-next-button-click';\nimport useHandleResponseChange from '../hooks/use-handle-response-change';\nimport useHandleRetryButtonClick from '../hooks/use-handle-retry-button-click';\nimport usePlayValidationAudio from '../hooks/use-play-validation-audio';\nimport type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from '../worksheet-questions-controller-types';\nimport useHandleStartButtonClick from '../hooks/use-handle-start-button-click';\nimport useHandleSkipButtonClick from '../hooks/use-handle-skip-button-click';\nimport useHandleSubmitQuiz from '../hooks/use-handle-submit-quiz';\nimport { type IWorksheetQuestion, type IWorksheetResponse } from '../../worksheet-types';\n\ninterface IAreAllExitTicketQuestionsValidated {\n (responses: Record<string, IWorksheetResponse>, questions: IWorksheetQuestion[]): boolean;\n}\n\nconst areAllExitTicketQuestionsValidated: IAreAllExitTicketQuestionsValidated = (\n responses,\n questions,\n) => {\n const exitTicketQuestions = questions.filter(\n q => q.item_type === 'exit-ticket' && !q.is_non_question,\n );\n\n return exitTicketQuestions.every(q => responses[q.response_id]?.validatedByTeacher === true);\n};\n\nconst StudentControllerLessonV3_1: FC<IWorksheetQuestionsControllerProps> = memo(\n function StudentControllerLessonV3_1(props) {\n const {\n behavior,\n question,\n questions,\n response,\n responses,\n learnosity,\n isQuestionAppended,\n inClass,\n isLastQuestion,\n onSubmit,\n worksheetCompleted,\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 response: store.responses[activeQuestion.response_id],\n responses: store.responses,\n learnosity: store.learnosity,\n isQuestionAppended: store.appendedQuestionIds.includes(activeQuestion.response_id),\n inClass: store.inClass,\n isLastQuestion: store.activeQuestionIndex === store.questions.length - 1,\n onSubmit: store.onSubmit,\n worksheetCompleted: store.worksheetCompleted,\n };\n });\n const { getTimeSpentOnQuestion } = props;\n const {\n canAttempt,\n checkButtonLabel,\n retryButtonLabel,\n teacherDiscussionEnabled,\n attemptsAfterTeacherInterventionNeeded,\n } = behavior;\n const { response_id, metadata, is_non_question: isNonQuestion, item_type } = question;\n const isExitTicket = item_type === 'exit-ticket';\n const {\n startButton,\n checkButton,\n checkButtonDisabled,\n retryButton,\n retryButtonDisabled,\n nextButton,\n nextButtonDisabled,\n nextButtonTooltip,\n moveButton,\n skipButton,\n skipButtonLabel,\n submitQuizButton,\n submitAttemptButton,\n } = useMemo<IButtonTypes>(() => {\n if (isNonQuestion)\n return {\n startButton: canAttempt && !response?.responseGiven,\n };\n\n if (isExitTicket) {\n const { submittedByStudent } = response || {};\n\n if (!submittedByStudent) {\n if (isLastQuestion)\n return {\n submitQuizButton: true,\n };\n\n if (response?.skipped || response?.response)\n return {\n nextButton: true,\n };\n\n return {\n skipButton: true,\n skipButtonLabel: 'Next',\n };\n }\n\n if (isLastQuestion && areAllExitTicketQuestionsValidated(responses, questions)) {\n return {\n submitAttemptButton: !worksheetCompleted,\n };\n }\n }\n\n if (!response || !response.response || !response.score)\n return {\n checkButton: canAttempt,\n checkButtonDisabled: canAttempt,\n };\n\n const { responseEdited, score, attemptsHistory, retryEnabled } = response;\n\n if (responseEdited) {\n const lastAttemptResponse = attemptsHistory?.slice(-1)[0]?.response;\n\n return {\n checkButton: canAttempt || response.retryEnabled,\n checkButtonDisabled: deepEqual(response.response, lastAttemptResponse),\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n const teacherInterventionNeeded = isTeacherInterventionNeeded({\n attemptsAfterTeacherInterventionNeeded:\n item_type === 'exit-ticket' ? 1 : attemptsAfterTeacherInterventionNeeded,\n attemptsHistory,\n });\n\n if (!teacherInterventionNeeded)\n return {\n retryButton: canAttempt,\n };\n\n if (inClass)\n return {\n retryButton: true,\n retryButtonDisabled: retryEnabled !== true,\n };\n\n return {\n moveButton: true,\n };\n }\n\n if ((score.score ?? 0) === score.max_score) {\n if (\n inClass &&\n teacherDiscussionEnabled &&\n metadata.acknowledgements &&\n !response?.validatedByTeacher\n ) {\n return {\n nextButton: true,\n nextButtonDisabled: true,\n nextButtonTooltip: 'Tutor approval is required',\n };\n }\n\n if (!isLastQuestion)\n return {\n nextButton: true,\n };\n }\n\n return {};\n }, [\n isNonQuestion,\n canAttempt,\n response,\n isExitTicket,\n isLastQuestion,\n responses,\n questions,\n worksheetCompleted,\n item_type,\n attemptsAfterTeacherInterventionNeeded,\n inClass,\n teacherDiscussionEnabled,\n metadata.acknowledgements,\n ]);\n\n const playValidationAudio = usePlayValidationAudio();\n const handleResponseChange = useHandleResponseChange({\n getTimeSpentOnQuestion,\n });\n const handleNextButtonClick = useHandleNextButtonClick();\n const [skipped, setSkipped] = useState(false);\n const handleSkipButtonClick = useHandleSkipButtonClick({\n setSkipped,\n });\n const handleValidate = useCallback(() => {\n playValidationAudio();\n handleResponseChange(true);\n }, [handleResponseChange, playValidationAudio]);\n const handleCheckButtonClick = useHandleCheckButtonClick({\n handleValidate,\n });\n const handleRetryButtonClick = useHandleRetryButtonClick({\n handleResponseChange,\n });\n const handleStartButtonClick = useHandleStartButtonClick();\n const handleSubmitQuiz = useHandleSubmitQuiz();\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses, questions);\n }, [onSubmit, responses, questions]);\n\n const questionEnabled = checkButton || (isExitTicket && !response?.submittedByStudent);\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n handleNextButtonClick();\n }\n }, [handleNextButtonClick, skipped]);\n\n useEffect(() => {\n const questionInstance = isQuestionAppended ? learnosity.question(response_id) : undefined;\n\n if (questionInstance) {\n if (questionEnabled) {\n questionInstance.on('changed', handleResponseChange);\n questionInstance.enable();\n } else {\n questionInstance.disable();\n }\n }\n\n return () => {\n if (questionInstance && questionEnabled) {\n questionInstance.off('changed', handleResponseChange);\n questionInstance.disable();\n }\n };\n }, [handleResponseChange, isQuestionAppended, learnosity, questionEnabled, response_id]);\n\n return (\n <>\n {nextButton && (\n <ArrowTooltip\n position=\"top\"\n renderAs=\"primary\"\n hidden={!nextButtonTooltip}\n tooltipItem={nextButtonTooltip ?? ''}\n >\n <Button\n widthX={6}\n renderAs=\"primary\"\n label=\"Next\"\n onClick={handleNextButtonClick}\n disabled={nextButtonDisabled === true}\n />\n </ArrowTooltip>\n )}\n {skipButton && (\n <Button\n widthX={6}\n renderAs=\"primary\"\n label={skipButtonLabel ?? 'Skip'}\n onClick={handleSkipButtonClick}\n />\n )}\n {moveButton && (\n <Button\n widthX={9.75}\n renderAs=\"primary\"\n label=\"Move ahead\"\n onClick={handleNextButtonClick}\n />\n )}\n {retryButton && (\n <ArrowTooltip\n position=\"top\"\n renderAs=\"primary\"\n hidden={!retryButtonDisabled}\n tooltipItem=\"Tutor will help, then enable retry\"\n >\n <Button\n widthX={6}\n renderAs=\"primary\"\n label={retryButtonLabel}\n disabled={!isQuestionAppended || retryButtonDisabled}\n onClick={handleRetryButtonClick}\n />\n </ArrowTooltip>\n )}\n {checkButton && (\n <Button\n renderAs=\"primary\"\n label={checkButtonLabel}\n disabled={checkButtonDisabled === true || !isQuestionAppended}\n onClick={handleCheckButtonClick}\n />\n )}\n {startButton && (\n <Button renderAs=\"primary\" label=\"Start\" onClick={handleStartButtonClick} />\n )}\n {submitQuizButton && (\n <Button\n renderAs=\"primary\"\n label=\"Submit\"\n analyticsLabel=\"Submit Quiz\"\n onClick={handleSubmitQuiz}\n />\n )}\n {submitAttemptButton && (\n <Button renderAs=\"primary\" label=\"Submit\" onClick={handleSheetSubmitButtonClick} />\n )}\n </>\n );\n },\n);\n\nexport default StudentControllerLessonV3_1;\n"],"names":["areAllExitTicketQuestionsValidated","responses","questions","q","_a","StudentControllerLessonV3_1","memo","props","behavior","question","response","learnosity","isQuestionAppended","inClass","isLastQuestion","onSubmit","worksheetCompleted","useWorksheetStore","store","activeQuestion","getTimeSpentOnQuestion","canAttempt","checkButtonLabel","retryButtonLabel","teacherDiscussionEnabled","attemptsAfterTeacherInterventionNeeded","response_id","metadata","isNonQuestion","item_type","isExitTicket","startButton","checkButton","checkButtonDisabled","retryButton","retryButtonDisabled","nextButton","nextButtonDisabled","nextButtonTooltip","moveButton","skipButton","skipButtonLabel","submitQuizButton","submitAttemptButton","useMemo","submittedByStudent","responseEdited","score","attemptsHistory","retryEnabled","lastAttemptResponse","deepEqual","isTeacherInterventionNeeded","playValidationAudio","usePlayValidationAudio","handleResponseChange","useHandleResponseChange","handleNextButtonClick","useHandleNextButtonClick","skipped","setSkipped","useState","handleSkipButtonClick","useHandleSkipButtonClick","handleValidate","useCallback","handleCheckButtonClick","useHandleCheckButtonClick","handleRetryButtonClick","useHandleRetryButtonClick","handleStartButtonClick","useHandleStartButtonClick","handleSubmitQuiz","useHandleSubmitQuiz","handleSheetSubmitButtonClick","questionEnabled","useEffect","questionInstance","jsxs","Fragment","jsx","ArrowTooltip","Button"],"mappings":"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"}
@@ -45,6 +45,7 @@ const x = t(
45
45
  width: 12px;
46
46
  height: 12px;
47
47
  `, m = t(n)`
48
+ font-size: 7.5px;
48
49
  line-height: 11px;
49
50
  text-align: center;
50
51
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"questions-toolbar-styled.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { TOOL_ICON_SIZE } from '../../constants';\n\ninterface IWorksheetQuestionsToolbarContainerProps {\n $showBorder: boolean;\n}\nconst WorksheetQuestionsToolbarContainer = styled(\n FlexView,\n)<IWorksheetQuestionsToolbarContainerProps>(\n ({ theme, $showBorder }) => `\n ${$showBorder ? `margin-left: 12px; border-left: 1px solid ${theme.colors.WHITE_5};` : ''}\n align-self: stretch;\n padding-left: 4px;\n`,\n);\n\ninterface IIconContainerProps {\n $disabled?: boolean;\n}\nconst IconContainer = styled(FlexView)<IIconContainerProps>(\n ({ theme, $disabled = false }) => `\n height: 40px;\n width: 40px;\n border-radius: 50%;\n align-items: center;\n justify-content: center;\n\n ${\n !$disabled\n ? `&:hover {\n cursor: pointer;\n background-color: ${theme.colors.WHITE_4};\n }`\n : 'opacity: 0.38;'\n }\n`,\n);\n\nconst HintsIconContainer = styled.div`\n position: relative;\n width: ${TOOL_ICON_SIZE}px;\n height: ${TOOL_ICON_SIZE}px;\n`;\n\nconst HintsNumberContainer = styled.div(\n ({ theme }) => `\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n background-color: ${theme.colors.YELLOW_4};\n border: 1px solid ${theme.colors.WHITE};\n border-radius: 50%;\n`,\n);\n\nconst TickMark = styled.img`\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n`;\n\nconst HintsNumber = styled(Text)`\n line-height: 11px;\n text-align: center;\n`;\n\nexport {\n HintsIconContainer,\n HintsNumber,\n HintsNumberContainer,\n IconContainer,\n TickMark,\n WorksheetQuestionsToolbarContainer,\n};\n"],"names":["WorksheetQuestionsToolbarContainer","styled","FlexView","theme","$showBorder","IconContainer","$disabled","HintsIconContainer","TOOL_ICON_SIZE","HintsNumberContainer","TickMark","HintsNumber","Text"],"mappings":";;;;AASA,MAAMA,IAAqCC;AAAA,EACzCC;AACF;AAAA,EACE,CAAC,EAAE,OAAAC,GAAO,aAAAC,EAAA,MAAkB;AAAA,IAC1BA,IAAc,6CAA6CD,EAAM,OAAO,OAAO,MAAM,EAAE;AAAA;AAAA;AAAA;AAI3F,GAKME,IAAgBJ,EAAOC,CAAQ;AAAA,EACnC,CAAC,EAAE,OAAAC,GAAO,WAAAG,IAAY,GAAY,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ/BA,IAKG,mBAJA;AAAA;AAAA,8BAEsBH,EAAM,OAAO,OAAO;AAAA,YAGhD;AAAA;AAEF,GAEMI,IAAqBN,EAAO;AAAA;AAAA,WAEvBO,CAAc;AAAA,YACbA,CAAc;AAAA,GAGpBC,IAAuBR,EAAO;AAAA,EAClC,CAAC,EAAE,OAAAE,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMKA,EAAM,OAAO,QAAQ;AAAA,sBACrBA,EAAM,OAAO,KAAK;AAAA;AAAA;AAGxC,GAEMO,IAAWT,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQlBU,IAAcV,EAAOW,CAAI;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"questions-toolbar-styled.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { TOOL_ICON_SIZE } from '../../constants';\n\ninterface IWorksheetQuestionsToolbarContainerProps {\n $showBorder: boolean;\n}\nconst WorksheetQuestionsToolbarContainer = styled(\n FlexView,\n)<IWorksheetQuestionsToolbarContainerProps>(\n ({ theme, $showBorder }) => `\n ${$showBorder ? `margin-left: 12px; border-left: 1px solid ${theme.colors.WHITE_5};` : ''}\n align-self: stretch;\n padding-left: 4px;\n`,\n);\n\ninterface IIconContainerProps {\n $disabled?: boolean;\n}\nconst IconContainer = styled(FlexView)<IIconContainerProps>(\n ({ theme, $disabled = false }) => `\n height: 40px;\n width: 40px;\n border-radius: 50%;\n align-items: center;\n justify-content: center;\n\n ${\n !$disabled\n ? `&:hover {\n cursor: pointer;\n background-color: ${theme.colors.WHITE_4};\n }`\n : 'opacity: 0.38;'\n }\n`,\n);\n\nconst HintsIconContainer = styled.div`\n position: relative;\n width: ${TOOL_ICON_SIZE}px;\n height: ${TOOL_ICON_SIZE}px;\n`;\n\nconst HintsNumberContainer = styled.div(\n ({ theme }) => `\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n background-color: ${theme.colors.YELLOW_4};\n border: 1px solid ${theme.colors.WHITE};\n border-radius: 50%;\n`,\n);\n\nconst TickMark = styled.img`\n position: absolute;\n top: 2px;\n right: 2px;\n width: 12px;\n height: 12px;\n`;\n\nconst HintsNumber = styled(Text)`\n font-size: 7.5px;\n line-height: 11px;\n text-align: center;\n`;\n\nexport {\n HintsIconContainer,\n HintsNumber,\n HintsNumberContainer,\n IconContainer,\n TickMark,\n WorksheetQuestionsToolbarContainer,\n};\n"],"names":["WorksheetQuestionsToolbarContainer","styled","FlexView","theme","$showBorder","IconContainer","$disabled","HintsIconContainer","TOOL_ICON_SIZE","HintsNumberContainer","TickMark","HintsNumber","Text"],"mappings":";;;;AASA,MAAMA,IAAqCC;AAAA,EACzCC;AACF;AAAA,EACE,CAAC,EAAE,OAAAC,GAAO,aAAAC,EAAA,MAAkB;AAAA,IAC1BA,IAAc,6CAA6CD,EAAM,OAAO,OAAO,MAAM,EAAE;AAAA;AAAA;AAAA;AAI3F,GAKME,IAAgBJ,EAAOC,CAAQ;AAAA,EACnC,CAAC,EAAE,OAAAC,GAAO,WAAAG,IAAY,GAAY,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ/BA,IAKG,mBAJA;AAAA;AAAA,8BAEsBH,EAAM,OAAO,OAAO;AAAA,YAGhD;AAAA;AAEF,GAEMI,IAAqBN,EAAO;AAAA;AAAA,WAEvBO,CAAc;AAAA,YACbA,CAAc;AAAA,GAGpBC,IAAuBR,EAAO;AAAA,EAClC,CAAC,EAAE,OAAAE,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMKA,EAAM,OAAO,QAAQ;AAAA,sBACrBA,EAAM,OAAO,KAAK;AAAA;AAAA;AAGxC,GAEMO,IAAWT,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQlBU,IAAcV,EAAOW,CAAI;AAAA;AAAA;AAAA;AAAA;"}
@@ -92,7 +92,7 @@ const ke = F(function({
92
92
  children: [
93
93
  r.visible && /* @__PURE__ */ e(c, { label: "Hint", disabled: r.disabled, onClick: U, children: /* @__PURE__ */ e(d, { position: "top", renderAs: "primary", tooltipItem: "Hint", children: /* @__PURE__ */ e(a, { $disabled: r.disabled, children: /* @__PURE__ */ A(P, { children: [
94
94
  /* @__PURE__ */ e(V, { width: o, height: o }),
95
- !r.allHintsUtilized && r.nextHintnumber > 1 && /* @__PURE__ */ e(X, { children: /* @__PURE__ */ e(Y, { $renderAs: "ab4-black", $color: "BLACK", children: r.nextHintnumber }) }),
95
+ !r.allHintsUtilized && r.nextHintnumber > 1 && /* @__PURE__ */ e(X, { children: /* @__PURE__ */ e(Y, { $renderAs: "ab3-bold", $color: "BLACK", children: r.nextHintnumber }) }),
96
96
  r.allHintsUtilized && /* @__PURE__ */ e(ee, { src: x.TICK_GREEN })
97
97
  ] }) }) }) }),
98
98
  C.visible && /* @__PURE__ */ e(c, { label: "Solution", disabled: C.disabled, onClick: q, children: /* @__PURE__ */ e(d, { position: "top", renderAs: "primary", tooltipItem: "Solution", children: /* @__PURE__ */ e(a, { $disabled: C.disabled, children: n === l.SOLUTION ? /* @__PURE__ */ e(k, { width: o, height: o }) : /* @__PURE__ */ e(G, { width: o, height: o }) }) }) }),
@@ -1 +1 @@
1
- {"version":3,"file":"questions-toolbar.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.tsx"],"sourcesContent":["import { type FC, memo, useCallback } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport CalculatorIcon from '../../../../../assets/line-icons/icons/calculator';\nimport CloseIcon from '../../../../../assets/line-icons/icons/close';\nimport HandIcon from '../../../../../assets/line-icons/icons/hand';\nimport HintsIcon from '../../../../../assets/line-icons/icons/hints';\nimport QuestionFeedbackIcon from '../../../../../assets/line-icons/icons/question-feedback';\nimport SolutionIcon from '../../../../../assets/line-icons/icons/solution';\nimport TeachingToolsIcon from '../../../../../assets/line-icons/icons/teaching-tools';\nimport TValQuestionIcon from '../../../../../assets/line-icons/icons/tval-question';\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 { EActiveQuestionTool } from '../../worksheet-types';\nimport { type IQuestionToolbarOptions } from './questions-toolbar-helpers';\nimport * as Styled from './questions-toolbar-styled';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport { TOOL_ICON_SIZE } from '../../constants';\n\ninterface IQuestionsToolbarProps {\n toolbarOptions: IQuestionToolbarOptions;\n showBorder: boolean;\n}\n\nconst QuestionsToolbar: FC<IQuestionsToolbarProps> = memo(function QuestionsToolbar({\n showBorder,\n toolbarOptions,\n}) {\n const { hints, solution, askTeacher, questionFeedback, teachingTools, discussion } =\n toolbarOptions;\n const {\n question,\n behavior,\n loggerRef,\n setResponses,\n onResponseChange,\n onHelp,\n openQuestionFeedbackModal,\n activeQuestionTool,\n setActiveQuestionTool,\n unsetActiveQuestionTool,\n toggleCalculator,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n loggerRef: store.loggerRef,\n setResponses: store.setResponses,\n onResponseChange: store.onResponseChange,\n onHelp: store.onHelp,\n openQuestionFeedbackModal: store.openQuestionFeedbackModal,\n activeQuestionTool: store.activeQuestionTool,\n setActiveQuestionTool: store.setActiveQuestionTool,\n unsetActiveQuestionTool: store.unsetActiveQuestionTool,\n toggleCalculator: store.toggleCalculator,\n };\n });\n const { response_id: responseId } = question;\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 handleDiscussionClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.DISCUSSION) {\n setActiveQuestionTool(EActiveQuestionTool.DISCUSSION);\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 return (\n <Styled.WorksheetQuestionsToolbarContainer\n $showBorder={showBorder}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n >\n {hints.visible && (\n <Clickable label=\"Hint\" disabled={hints.disabled} onClick={handleHintButtonClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Hint\">\n <Styled.IconContainer $disabled={hints.disabled}>\n <Styled.HintsIconContainer>\n <HintsIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\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 </ArrowTooltip>\n </Clickable>\n )}\n {solution.visible && (\n <Clickable label=\"Solution\" disabled={solution.disabled} onClick={handleSolutionClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Solution\">\n <Styled.IconContainer $disabled={solution.disabled}>\n {activeQuestionTool === EActiveQuestionTool.SOLUTION ? (\n <CloseIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n ) : (\n <SolutionIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n )}\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {askTeacher.visible && (\n <Clickable label=\"Ask for help\" onClick={handleHelpButtonClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Help\">\n <Styled.IconContainer>\n <HandIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {questionFeedback.visible && (\n <Clickable label=\"Question Feedback\" onClick={handleQuestionFeedbackClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Feedback\">\n <Styled.IconContainer>\n <QuestionFeedbackIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {behavior.canShowDesmosCalc && (\n <Clickable label=\"Desmos Calculator\" onClick={toggleCalculator}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Calculator\">\n <Styled.IconContainer>\n <CalculatorIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {teachingTools.visible && (\n <Clickable\n label=\"Teaching Tools\"\n disabled={teachingTools.disabled}\n onClick={handleTeachingToolsClick}\n >\n <ArrowTooltip\n position=\"top\"\n renderAs=\"primary\"\n tooltipItem=\"Cue Don't Tell, Hint and Solution\"\n >\n <Styled.IconContainer $disabled={teachingTools.disabled}>\n {activeQuestionTool === EActiveQuestionTool.TEACHING_TOOLS ? (\n <CloseIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n ) : (\n <TeachingToolsIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n )}\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {discussion.visible && (\n <Clickable label=\"Teacher Validated Question\" onClick={handleDiscussionClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Teacher Validated Question\">\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.DISCUSSION ? (\n <CloseIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n ) : (\n <TValQuestionIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n )}\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n </Styled.WorksheetQuestionsToolbarContainer>\n );\n});\n\nexport default QuestionsToolbar;\n"],"names":["QuestionsToolbar","memo","showBorder","toolbarOptions","hints","solution","askTeacher","questionFeedback","teachingTools","discussion","question","behavior","loggerRef","setResponses","onResponseChange","onHelp","openQuestionFeedbackModal","activeQuestionTool","setActiveQuestionTool","unsetActiveQuestionTool","toggleCalculator","useWorksheetStore","store","activeQuestion","responseId","handleHintButtonClick","useCallback","EVENTS","prevResponses","newResponse","getQuestionMetadata","_a","handleQuestionFeedbackClick","handleTeachingToolsClick","EActiveQuestionTool","handleDiscussionClick","handleSolutionClick","handleHelpButtonClick","item_number","question_number","total_questions","jsxs","Styled.WorksheetQuestionsToolbarContainer","jsx","Clickable","ArrowTooltip","Styled.IconContainer","Styled.HintsIconContainer","HintsIcon","TOOL_ICON_SIZE","Styled.HintsNumberContainer","Styled.HintsNumber","Styled.TickMark","ILLUSTRATIONS","CloseIcon","SolutionIcon","HandIcon","QuestionFeedbackIcon","CalculatorIcon","TeachingToolsIcon","TValQuestionIcon"],"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 { type FC, memo, useCallback } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport CalculatorIcon from '../../../../../assets/line-icons/icons/calculator';\nimport CloseIcon from '../../../../../assets/line-icons/icons/close';\nimport HandIcon from '../../../../../assets/line-icons/icons/hand';\nimport HintsIcon from '../../../../../assets/line-icons/icons/hints';\nimport QuestionFeedbackIcon from '../../../../../assets/line-icons/icons/question-feedback';\nimport SolutionIcon from '../../../../../assets/line-icons/icons/solution';\nimport TeachingToolsIcon from '../../../../../assets/line-icons/icons/teaching-tools';\nimport TValQuestionIcon from '../../../../../assets/line-icons/icons/tval-question';\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 { EActiveQuestionTool } from '../../worksheet-types';\nimport { type IQuestionToolbarOptions } from './questions-toolbar-helpers';\nimport * as Styled from './questions-toolbar-styled';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport { TOOL_ICON_SIZE } from '../../constants';\n\ninterface IQuestionsToolbarProps {\n toolbarOptions: IQuestionToolbarOptions;\n showBorder: boolean;\n}\n\nconst QuestionsToolbar: FC<IQuestionsToolbarProps> = memo(function QuestionsToolbar({\n showBorder,\n toolbarOptions,\n}) {\n const { hints, solution, askTeacher, questionFeedback, teachingTools, discussion } =\n toolbarOptions;\n const {\n question,\n behavior,\n loggerRef,\n setResponses,\n onResponseChange,\n onHelp,\n openQuestionFeedbackModal,\n activeQuestionTool,\n setActiveQuestionTool,\n unsetActiveQuestionTool,\n toggleCalculator,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n loggerRef: store.loggerRef,\n setResponses: store.setResponses,\n onResponseChange: store.onResponseChange,\n onHelp: store.onHelp,\n openQuestionFeedbackModal: store.openQuestionFeedbackModal,\n activeQuestionTool: store.activeQuestionTool,\n setActiveQuestionTool: store.setActiveQuestionTool,\n unsetActiveQuestionTool: store.unsetActiveQuestionTool,\n toggleCalculator: store.toggleCalculator,\n };\n });\n const { response_id: responseId } = question;\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 handleDiscussionClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.DISCUSSION) {\n setActiveQuestionTool(EActiveQuestionTool.DISCUSSION);\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 return (\n <Styled.WorksheetQuestionsToolbarContainer\n $showBorder={showBorder}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n >\n {hints.visible && (\n <Clickable label=\"Hint\" disabled={hints.disabled} onClick={handleHintButtonClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Hint\">\n <Styled.IconContainer $disabled={hints.disabled}>\n <Styled.HintsIconContainer>\n <HintsIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n {!hints.allHintsUtilized && hints.nextHintnumber > 1 && (\n <Styled.HintsNumberContainer>\n <Styled.HintsNumber $renderAs=\"ab3-bold\" $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 </ArrowTooltip>\n </Clickable>\n )}\n {solution.visible && (\n <Clickable label=\"Solution\" disabled={solution.disabled} onClick={handleSolutionClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Solution\">\n <Styled.IconContainer $disabled={solution.disabled}>\n {activeQuestionTool === EActiveQuestionTool.SOLUTION ? (\n <CloseIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n ) : (\n <SolutionIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n )}\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {askTeacher.visible && (\n <Clickable label=\"Ask for help\" onClick={handleHelpButtonClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Help\">\n <Styled.IconContainer>\n <HandIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {questionFeedback.visible && (\n <Clickable label=\"Question Feedback\" onClick={handleQuestionFeedbackClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Feedback\">\n <Styled.IconContainer>\n <QuestionFeedbackIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {behavior.canShowDesmosCalc && (\n <Clickable label=\"Desmos Calculator\" onClick={toggleCalculator}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Calculator\">\n <Styled.IconContainer>\n <CalculatorIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {teachingTools.visible && (\n <Clickable\n label=\"Teaching Tools\"\n disabled={teachingTools.disabled}\n onClick={handleTeachingToolsClick}\n >\n <ArrowTooltip\n position=\"top\"\n renderAs=\"primary\"\n tooltipItem=\"Cue Don't Tell, Hint and Solution\"\n >\n <Styled.IconContainer $disabled={teachingTools.disabled}>\n {activeQuestionTool === EActiveQuestionTool.TEACHING_TOOLS ? (\n <CloseIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n ) : (\n <TeachingToolsIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n )}\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n {discussion.visible && (\n <Clickable label=\"Teacher Validated Question\" onClick={handleDiscussionClick}>\n <ArrowTooltip position=\"top\" renderAs=\"primary\" tooltipItem=\"Teacher Validated Question\">\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.DISCUSSION ? (\n <CloseIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n ) : (\n <TValQuestionIcon width={TOOL_ICON_SIZE} height={TOOL_ICON_SIZE} />\n )}\n </Styled.IconContainer>\n </ArrowTooltip>\n </Clickable>\n )}\n </Styled.WorksheetQuestionsToolbarContainer>\n );\n});\n\nexport default QuestionsToolbar;\n"],"names":["QuestionsToolbar","memo","showBorder","toolbarOptions","hints","solution","askTeacher","questionFeedback","teachingTools","discussion","question","behavior","loggerRef","setResponses","onResponseChange","onHelp","openQuestionFeedbackModal","activeQuestionTool","setActiveQuestionTool","unsetActiveQuestionTool","toggleCalculator","useWorksheetStore","store","activeQuestion","responseId","handleHintButtonClick","useCallback","EVENTS","prevResponses","newResponse","getQuestionMetadata","_a","handleQuestionFeedbackClick","handleTeachingToolsClick","EActiveQuestionTool","handleDiscussionClick","handleSolutionClick","handleHelpButtonClick","item_number","question_number","total_questions","jsxs","Styled.WorksheetQuestionsToolbarContainer","jsx","Clickable","ArrowTooltip","Styled.IconContainer","Styled.HintsIconContainer","HintsIcon","TOOL_ICON_SIZE","Styled.HintsNumberContainer","Styled.HintsNumber","Styled.TickMark","ILLUSTRATIONS","CloseIcon","SolutionIcon","HandIcon","QuestionFeedbackIcon","CalculatorIcon","TeachingToolsIcon","TValQuestionIcon"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -827,6 +827,8 @@ declare const getTabConfig: IGetTabConfig;
827
827
 
828
828
  /* Excluded from this release type: getTabsConfig */
829
829
 
830
+ declare const getTagConfig: IGetTagConfig;
831
+
830
832
  declare const getTextButtonConfig: IGetTextButtonConfig;
831
833
 
832
834
  declare function getTextTypes(multiplier?: number): Record<TTextVariants, ITextConfig>;
@@ -1951,6 +1953,12 @@ declare interface IGetTabsConfig {
1951
1953
  (): Record<TTabsTheme, ITabsThemeConfig>;
1952
1954
  }
1953
1955
 
1956
+ declare interface IGetTagConfig {
1957
+ (): {
1958
+ sizes: Record<TTagSizes, ITagSizeConfig>;
1959
+ };
1960
+ }
1961
+
1954
1962
  declare interface IGetTextButtonConfig {
1955
1963
  (): {
1956
1964
  sizes: Record<TTextButtonSizes, ITextButtonSizeConfig>;
@@ -3688,8 +3696,6 @@ declare interface IProjects_2 {
3688
3696
  declare interface IPTMReportProps {
3689
3697
  ptmId: string;
3690
3698
  onAPIComplete?: (success: boolean) => void;
3691
- onFeedback?: (feedbackType: 'positive' | 'negative', ptmId: string) => void;
3692
- showFeedback?: boolean;
3693
3699
  }
3694
3700
 
3695
3701
  declare interface IPublishData {
@@ -4581,9 +4587,20 @@ export declare interface ITabVariantConfig {
4581
4587
  }
4582
4588
 
4583
4589
  declare interface ITagProps {
4584
- backgroundColor: TColorNames;
4585
4590
  text: string;
4586
- textColor?: TColorNames;
4591
+ size: TTagSizes;
4592
+ shape?: TTagShapes;
4593
+ }
4594
+
4595
+ export declare interface ITagSizeConfig {
4596
+ fontSize: number;
4597
+ lineHeight: number;
4598
+ paddingHorizontal: number;
4599
+ paddingTop: number;
4600
+ borderRadius: {
4601
+ curved: number;
4602
+ square: number;
4603
+ };
4587
4604
  }
4588
4605
 
4589
4606
  declare interface ITalkMeter {
@@ -4712,6 +4729,7 @@ export declare interface ITheme {
4712
4729
  layout: ReturnType<typeof getLayout>;
4713
4730
  tab: ReturnType<typeof getTabConfig>;
4714
4731
  tabs: ReturnType<typeof getTabsConfig>;
4732
+ tag: ReturnType<typeof getTagConfig>;
4715
4733
  text: ReturnType<typeof getTextTypes>;
4716
4734
  textButton: ReturnType<typeof getTextButtonConfig>;
4717
4735
  zIndex: ReturnType<typeof getZIndexConfig>;
@@ -7633,6 +7651,10 @@ declare type TTabsTheme = 'light' | 'dark';
7633
7651
 
7634
7652
  export declare type TTabVariants = 'primary' | 'secondary';
7635
7653
 
7654
+ export declare type TTagShapes = 'curved' | 'square';
7655
+
7656
+ export declare type TTagSizes = '8px' | '10px' | '12px';
7657
+
7636
7658
  declare type TTestDifficultyLevel = 'EASY' | 'MODERATE' | 'DIFFICULT';
7637
7659
 
7638
7660
  declare type TTestHelpItemsDataProps = {
@@ -7645,7 +7667,7 @@ export declare type TTestType = 'standardized' | 'non-standardized' | 'no-test'
7645
7667
 
7646
7668
  export declare type TTextButtonSizes = 'small' | 'regular' | 'medium';
7647
7669
 
7648
- export declare type TTextVariants = `${'ah1' | 'ah2' | 'ah3' | 'ah4' | 'ab1' | 'ab2' | 'ab3' | 'ab4'}${'' | '-bold' | '-black'}` | `${'ac1' | 'ac2' | 'ac3' | 'ac4' | 'ac5'}${'' | '-black'}` | `${'ub1' | 'ub2' | 'ub3' | 'ub4'}${'' | '-bold'}`;
7670
+ export declare type TTextVariants = `${'ah1' | 'ah2' | 'ah3' | 'ah4' | 'ab1' | 'ab2' | 'ab3'}${'' | '-bold' | '-black'}` | `${'ac1' | 'ac2' | 'ac3' | 'ac4' | 'ac5'}${'' | '-black'}` | `${'ub1' | 'ub2' | 'ub3' | 'ub4'}${'' | '-bold'}`;
7649
7671
 
7650
7672
  declare type TTimeUnit = 'hours' | 'minutes' | 'days';
7651
7673
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "4.0.4-beta.0",
3
+ "version": "4.0.4",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -1,17 +0,0 @@
1
- import r from "styled-components";
2
- import t from "../../../../../ui/layout/flex-view.js";
3
- const s = r(t)`
4
- width: 100%;
5
- `, d = r(t)`
6
- ${({ theme: o, selected: i }) => `
7
- width: 64px;
8
- height: 64px;
9
- border: 1px solid ${o.colors.BLACK_1};
10
- background-color: ${i ? o.colors.BLACK_T_08 : o.colors.WHITE_1};
11
- `}
12
- `;
13
- export {
14
- s as Container,
15
- d as ThumbButton
16
- };
17
- //# sourceMappingURL=ptm-feedback-styled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ptm-feedback-styled.js","sources":["../../../../../../../src/features/timeline/monthly-timeline/ptm-report/comps/ptm-feedback/ptm-feedback-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../../ui/layout/flex-view';\n\nexport const Container = styled(FlexView)`\n width: 100%;\n`;\n\nexport const ThumbButton = styled(FlexView)<{ selected?: boolean }>`\n ${({ theme, selected }: { theme: any; selected?: boolean }) => `\n width: 64px;\n height: 64px;\n border: 1px solid ${theme.colors.BLACK_1};\n background-color: ${selected ? theme.colors.BLACK_T_08 : theme.colors.WHITE_1};\n`}\n`;\n"],"names":["Container","styled","FlexView","ThumbButton","theme","selected"],"mappings":";;AAIa,MAAAA,IAAYC,EAAOC,CAAQ;AAAA;AAAA,GAI3BC,IAAcF,EAAOC,CAAQ;AAAA,IACtC,CAAC,EAAE,OAAAE,GAAO,UAAAC,EAAA,MAAmD;AAAA;AAAA;AAAA,sBAG3CD,EAAM,OAAO,OAAO;AAAA,sBACpBC,IAAWD,EAAM,OAAO,aAAaA,EAAM,OAAO,OAAO;AAAA,CAC9E;AAAA;"}
@@ -1,62 +0,0 @@
1
- import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
- import { memo as $, useCallback as o } from "react";
3
- import { ILLUSTRATIONS as n } from "../../../../../../assets/illustrations/illustrations.js";
4
- import h from "../../../../../ui/layout/flex-view.js";
5
- import c from "../../../../../ui/image/image.js";
6
- import l from "../../../../../ui/separator/separator.js";
7
- import g from "../../../../../ui/text/text.js";
8
- import { Container as u, ThumbButton as a } from "./ptm-feedback-styled.js";
9
- const P = $(function({
10
- studentName: s,
11
- onFeedback: t,
12
- feedback: i
13
- }) {
14
- const m = o(() => {
15
- t("positive");
16
- }, [t]), d = o(() => {
17
- t("negative");
18
- }, [t]);
19
- return /* @__PURE__ */ r(u, { $gapX: 1.25, $background: "WHITE_1", $gutterX: 2, children: [
20
- /* @__PURE__ */ e(h, { $gutterX: 1, children: /* @__PURE__ */ r(g, { $renderAs: "ab2-black", $color: "BLACK_1", $align: "center", children: [
21
- "Are you happy with ",
22
- s,
23
- "'s PTM?"
24
- ] }) }),
25
- /* @__PURE__ */ e(l, { heightX: 1.5 }),
26
- /* @__PURE__ */ r(h, { $flexDirection: "row", $flexGapX: 3, $alignItems: "center", $justifyContent: "center", children: [
27
- /* @__PURE__ */ e(
28
- a,
29
- {
30
- $widthX: 5,
31
- $heightX: 5,
32
- $alignItems: "center",
33
- $justifyContent: "center",
34
- $borderRadiusX: 2.5,
35
- $borderColor: "BLACK_1",
36
- onClick: m,
37
- selected: i === "positive",
38
- children: /* @__PURE__ */ e(c, { src: n.THUMPS_UP, alt: "Thumbs up", width: 32, height: 32 })
39
- }
40
- ),
41
- /* @__PURE__ */ e(
42
- a,
43
- {
44
- $widthX: 5,
45
- $heightX: 5,
46
- $alignItems: "center",
47
- $justifyContent: "center",
48
- $borderColor: "BLACK_1",
49
- $borderRadiusX: 2.5,
50
- onClick: d,
51
- selected: i === "negative",
52
- children: /* @__PURE__ */ e(c, { src: n.THUMPS_DOWN, alt: "Thumbs down", width: 32, height: 32 })
53
- }
54
- )
55
- ] }),
56
- /* @__PURE__ */ e(l, { heightX: 1.5 })
57
- ] });
58
- });
59
- export {
60
- P as default
61
- };
62
- //# sourceMappingURL=ptm-feedback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ptm-feedback.js","sources":["../../../../../../../src/features/timeline/monthly-timeline/ptm-report/comps/ptm-feedback/ptm-feedback.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../../assets/illustrations/illustrations';\nimport FlexView from '../../../../../ui/layout/flex-view';\nimport Image from '../../../../../ui/image/image';\nimport Separator from '../../../../../ui/separator/separator';\nimport Text from '../../../../../ui/text/text';\nimport type { IPTMFeedbackProps } from './ptm-feedback-types';\nimport * as Styled from './ptm-feedback-styled';\n\nconst PTMFeedback: FC<IPTMFeedbackProps> = memo(function PTMFeedback({\n studentName,\n onFeedback,\n feedback,\n}) {\n const handlePositiveFeedback = useCallback(() => {\n onFeedback('positive');\n }, [onFeedback]);\n\n const handleNegativeFeedback = useCallback(() => {\n onFeedback('negative');\n }, [onFeedback]);\n\n return (\n <Styled.Container $gapX={1.25} $background=\"WHITE_1\" $gutterX={2}>\n <FlexView $gutterX={1}>\n <Text $renderAs=\"ab2-black\" $color=\"BLACK_1\" $align=\"center\">\n Are you happy with {studentName}&apos;s PTM?\n </Text>\n </FlexView>\n <Separator heightX={1.5} />\n <FlexView $flexDirection=\"row\" $flexGapX={3} $alignItems=\"center\" $justifyContent=\"center\">\n <Styled.ThumbButton\n $widthX={5}\n $heightX={5}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $borderRadiusX={2.5}\n $borderColor=\"BLACK_1\"\n onClick={handlePositiveFeedback}\n selected={feedback === 'positive'}\n >\n <Image src={ILLUSTRATIONS.THUMPS_UP} alt=\"Thumbs up\" width={32} height={32} />\n </Styled.ThumbButton>\n <Styled.ThumbButton\n $widthX={5}\n $heightX={5}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $borderColor=\"BLACK_1\"\n $borderRadiusX={2.5}\n onClick={handleNegativeFeedback}\n selected={feedback === 'negative'}\n >\n <Image src={ILLUSTRATIONS.THUMPS_DOWN} alt=\"Thumbs down\" width={32} height={32} />\n </Styled.ThumbButton>\n </FlexView>\n <Separator heightX={1.5} />\n </Styled.Container>\n );\n});\n\nexport default PTMFeedback;\n"],"names":["PTMFeedback","memo","studentName","onFeedback","feedback","handlePositiveFeedback","useCallback","handleNegativeFeedback","jsxs","Styled.Container","jsx","FlexView","Text","Separator","Styled.ThumbButton","Image","ILLUSTRATIONS"],"mappings":";;;;;;;;AAUM,MAAAA,IAAqCC,EAAK,SAAqB;AAAA,EACnE,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AACF,GAAG;AACK,QAAAC,IAAyBC,EAAY,MAAM;AAC/C,IAAAH,EAAW,UAAU;AAAA,EAAA,GACpB,CAACA,CAAU,CAAC,GAETI,IAAyBD,EAAY,MAAM;AAC/C,IAAAH,EAAW,UAAU;AAAA,EAAA,GACpB,CAACA,CAAU,CAAC;AAGb,SAAA,gBAAAK,EAACC,GAAA,EAAiB,OAAO,MAAM,aAAY,WAAU,UAAU,GAC7D,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAS,UAAU,GAClB,UAAC,gBAAAH,EAAAI,GAAA,EAAK,WAAU,aAAY,QAAO,WAAU,QAAO,UAAS,UAAA;AAAA,MAAA;AAAA,MACvCV;AAAA,MAAY;AAAA,IAAA,EAAA,CAClC,EACF,CAAA;AAAA,IACA,gBAAAQ,EAACG,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IACzB,gBAAAL,EAACG,KAAS,gBAAe,OAAM,WAAW,GAAG,aAAY,UAAS,iBAAgB,UAChF,UAAA;AAAA,MAAA,gBAAAD;AAAA,QAACI;AAAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,UAAU;AAAA,UACV,aAAY;AAAA,UACZ,iBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,cAAa;AAAA,UACb,SAAST;AAAA,UACT,UAAUD,MAAa;AAAA,UAEvB,UAAA,gBAAAM,EAACK,GAAM,EAAA,KAAKC,EAAc,WAAW,KAAI,aAAY,OAAO,IAAI,QAAQ,GAAI,CAAA;AAAA,QAAA;AAAA,MAC9E;AAAA,MACA,gBAAAN;AAAA,QAACI;AAAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,UAAU;AAAA,UACV,aAAY;AAAA,UACZ,iBAAgB;AAAA,UAChB,cAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,SAASP;AAAA,UACT,UAAUH,MAAa;AAAA,UAEvB,UAAA,gBAAAM,EAACK,GAAM,EAAA,KAAKC,EAAc,aAAa,KAAI,eAAc,OAAO,IAAI,QAAQ,GAAI,CAAA;AAAA,QAAA;AAAA,MAClF;AAAA,IAAA,GACF;AAAA,IACA,gBAAAN,EAACG,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,EAC3B,EAAA,CAAA;AAEJ,CAAC;"}
@@ -1,23 +0,0 @@
1
- import t from "styled-components";
2
- import i from "../../../../../ui/layout/flex-view.js";
3
- const e = t(i)(
4
- ({ theme: o }) => `
5
- position: fixed;
6
- bottom: 0;
7
- left: 0;
8
- right: 0;
9
- width: 100%;
10
- background-color: ${o.colors.WHITE_1};
11
- border-top: 1px solid ${o.colors.BLACK_5};
12
- z-index: 100;
13
- max-width: 480px;
14
- `
15
- ), n = t(i)`
16
- width: 100%;
17
- max-width: 100%;
18
- `;
19
- export {
20
- n as ContentWrapper,
21
- e as StickyContainer
22
- };
23
- //# sourceMappingURL=sticky-footer-styled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sticky-footer-styled.js","sources":["../../../../../../../src/features/timeline/monthly-timeline/ptm-report/comps/sticky-footer/sticky-footer-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../../ui/layout/flex-view';\n\nexport const StickyContainer = styled(FlexView)(\n ({ theme }) => `\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n background-color: ${theme.colors.WHITE_1};\n border-top: 1px solid ${theme.colors.BLACK_5};\n z-index: 100;\n max-width: 480px;\n `,\n);\n\nexport const ContentWrapper = styled(FlexView)`\n width: 100%;\n max-width: 100%;\n`;\n"],"names":["StickyContainer","styled","FlexView","theme","ContentWrapper"],"mappings":";;AAIa,MAAAA,IAAkBC,EAAOC,CAAQ;AAAA,EAC5C,CAAC,EAAE,OAAAC,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMOA,EAAM,OAAO,OAAO;AAAA,4BAChBA,EAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAIhD,GAEaC,IAAiBH,EAAOC,CAAQ;AAAA;AAAA;AAAA;"}
@@ -1,33 +0,0 @@
1
- import { jsx as r, jsxs as m } from "react/jsx-runtime";
2
- import { memo as l } from "react";
3
- import p from "../../../../../ui/buttons/button/button.js";
4
- import a from "../../../../../ui/layout/flex-view.js";
5
- import c from "../ptm-feedback/ptm-feedback.js";
6
- import { StickyContainer as s, ContentWrapper as f } from "./sticky-footer-styled.js";
7
- const C = l(function({
8
- studentName: e,
9
- onSubmit: o,
10
- onFeedback: i,
11
- feedback: t,
12
- showFeedback: n = !1
13
- }) {
14
- return n ? /* @__PURE__ */ r(s, { $gutterX: 2, $gapX: 2, children: /* @__PURE__ */ m(f, { $gapX: 2, children: [
15
- /* @__PURE__ */ r(c, { studentName: e, onFeedback: i, feedback: t }),
16
- /* @__PURE__ */ r(a, { $width: "100%", children: /* @__PURE__ */ r(
17
- p,
18
- {
19
- label: "Submit",
20
- renderAs: "primary",
21
- size: "large",
22
- shape: "curved",
23
- onClick: o,
24
- justifyContent: "center",
25
- disabled: !t
26
- }
27
- ) })
28
- ] }) }) : null;
29
- });
30
- export {
31
- C as default
32
- };
33
- //# sourceMappingURL=sticky-footer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sticky-footer.js","sources":["../../../../../../../src/features/timeline/monthly-timeline/ptm-report/comps/sticky-footer/sticky-footer.tsx"],"sourcesContent":["import { memo, type FC } from 'react';\n\nimport Button from '../../../../../ui/buttons/button/button';\nimport FlexView from '../../../../../ui/layout/flex-view';\nimport PTMFeedback from '../ptm-feedback/ptm-feedback';\nimport type { IStickyFooterProps } from './sticky-footer-types';\nimport * as Styled from './sticky-footer-styled';\n\nconst StickyFooter: FC<IStickyFooterProps> = memo(function StickyFooter({\n studentName,\n onSubmit,\n onFeedback,\n feedback,\n showFeedback = false,\n}) {\n if (!showFeedback) {\n return null;\n }\n\n return (\n <Styled.StickyContainer $gutterX={2} $gapX={2}>\n <Styled.ContentWrapper $gapX={2}>\n <PTMFeedback studentName={studentName} onFeedback={onFeedback} feedback={feedback} />\n <FlexView $width=\"100%\">\n <Button\n label=\"Submit\"\n renderAs=\"primary\"\n size=\"large\"\n shape=\"curved\"\n onClick={onSubmit}\n justifyContent=\"center\"\n disabled={!feedback}\n />\n </FlexView>\n </Styled.ContentWrapper>\n </Styled.StickyContainer>\n );\n});\n\nexport default StickyFooter;\n"],"names":["StickyFooter","memo","studentName","onSubmit","onFeedback","feedback","showFeedback","jsx","Styled.StickyContainer","jsxs","Styled.ContentWrapper","PTMFeedback","FlexView","Button"],"mappings":";;;;;;AAQM,MAAAA,IAAuCC,EAAK,SAAsB;AAAA,EACtE,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC,IAAe;AACjB,GAAG;AACD,SAAKA,IAKF,gBAAAC,EAAAC,GAAA,EAAuB,UAAU,GAAG,OAAO,GAC1C,UAAC,gBAAAC,EAAAC,GAAA,EAAsB,OAAO,GAC5B,UAAA;AAAA,IAAC,gBAAAH,EAAAI,GAAA,EAAY,aAAAT,GAA0B,YAAAE,GAAwB,UAAAC,EAAoB,CAAA;AAAA,IACnF,gBAAAE,EAACK,GAAS,EAAA,QAAO,QACf,UAAA,gBAAAL;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,UAAS;AAAA,QACT,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAASV;AAAA,QACT,gBAAe;AAAA,QACf,UAAU,CAACE;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,EAAA,EACF,CAAA,EACF,CAAA,IAnBO;AAqBX,CAAC;"}