@cuemath/leap 3.5.30-gg4 → 3.5.30-j1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/illustrations/illustrations.js +12 -0
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/images/images.js +8 -0
- package/dist/assets/images/images.js.map +1 -1
- package/dist/assets/line-icons/icons/carat-right.js +26 -0
- package/dist/assets/line-icons/icons/carat-right.js.map +1 -0
- package/dist/features/chapters/chapters-list/chapter-item/chapter-circular-progress/chapter-circular-progress.js +3 -3
- package/dist/features/chapters/chapters-list/chapter-item/chapter-circular-progress/chapter-circular-progress.js.map +1 -1
- package/dist/features/circle-games/game-launcher/comps/carousel/carousel-styled.js +16 -32
- package/dist/features/circle-games/game-launcher/comps/carousel/carousel-styled.js.map +1 -1
- package/dist/features/circle-games/game-launcher/comps/carousel/carousel.js +88 -87
- package/dist/features/circle-games/game-launcher/comps/carousel/carousel.js.map +1 -1
- package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js +35 -35
- package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js.map +1 -1
- package/dist/features/stickers/hooks/use-handle-sticker-send/use-handle-sticker-send.js +0 -1
- package/dist/features/stickers/hooks/use-handle-sticker-send/use-handle-sticker-send.js.map +1 -1
- package/dist/features/timeline/daily-timeline-styled.js +13 -9
- package/dist/features/timeline/daily-timeline-styled.js.map +1 -1
- package/dist/features/timeline/daily-timeline-view.js +9 -10
- package/dist/features/timeline/daily-timeline-view.js.map +1 -1
- package/dist/features/timeline/monthly-report/api/use-monthly-report-get.js +13 -0
- package/dist/features/timeline/monthly-report/api/use-monthly-report-get.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/achievements/achievements.js +68 -0
- package/dist/features/timeline/monthly-report/comps/achievements/achievements.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/achievements/achievements.styled.js +15 -0
- package/dist/features/timeline/monthly-report/comps/achievements/achievements.styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card/activities-card.js +128 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card/activities-card.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card/activities-card.styled.js +53 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card/activities-card.styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card-puzzles/activities-card-puzzles.js +121 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card-puzzles/activities-card-puzzles.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card-puzzles/activities-card-puzzles.styled.js +58 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities-card-puzzles/activities-card-puzzles.styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities.js +27 -0
- package/dist/features/timeline/monthly-report/comps/activities/activities.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/constants.js +95 -0
- package/dist/features/timeline/monthly-report/comps/activities/constants.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/activities/utils.js +15 -0
- package/dist/features/timeline/monthly-report/comps/activities/utils.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance-constants.js +29 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance-constants.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance-utils.js +92 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance-utils.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance.js +44 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance.styled.js +39 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendance.styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendence-view.js +52 -0
- package/dist/features/timeline/monthly-report/comps/attendance/attendence-view.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/feedback/feedback-styled.js +9 -0
- package/dist/features/timeline/monthly-report/comps/feedback/feedback-styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/feedback/feedback.js +94 -0
- package/dist/features/timeline/monthly-report/comps/feedback/feedback.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-card/goal-chapter-card.js +48 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-card/goal-chapter-card.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-card/goals-card-styled.js +28 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-card/goals-card-styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-card/goals-card.js +113 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-card/goals-card.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-constants.js +30 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals-constants.js.map +1 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals.js +22 -0
- package/dist/features/timeline/monthly-report/comps/goals/goals.js.map +1 -0
- package/dist/features/timeline/monthly-report/monthly-report-styled.js +14 -0
- package/dist/features/timeline/monthly-report/monthly-report-styled.js.map +1 -0
- package/dist/features/timeline/monthly-report/monthly-report-types.js +5 -0
- package/dist/features/timeline/monthly-report/monthly-report-types.js.map +1 -0
- package/dist/features/timeline/monthly-report/monthly-report.js +69 -0
- package/dist/features/timeline/monthly-report/monthly-report.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/api/use-monthly-timeline-get.js +10 -0
- package/dist/features/timeline/monthly-timeline/api/use-monthly-timeline-get.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/comps/monthly-card/monthly-card.js +87 -0
- package/dist/features/timeline/monthly-timeline/comps/monthly-card/monthly-card.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/comps/monthly-card/monthly-card.styled.js +9 -0
- package/dist/features/timeline/monthly-timeline/comps/monthly-card/monthly-card.styled.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/constants.js +41 -0
- package/dist/features/timeline/monthly-timeline/constants.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline-styled.js +13 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline-styled.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline-types.js +6 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline-types.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline-view.js +28 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline-view.js.map +1 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline.js +62 -0
- package/dist/features/timeline/monthly-timeline/monthly-timeline.js.map +1 -0
- package/dist/features/timeline/ptm-report/api/use-ptm-report-get.js +9 -0
- package/dist/features/timeline/ptm-report/api/use-ptm-report-get.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/key-need/key-need-styled.js +9 -0
- package/dist/features/timeline/ptm-report/comps/key-need/key-need-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/key-need/key-need.js +35 -0
- package/dist/features/timeline/ptm-report/comps/key-need/key-need.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/parent-support/parent-support.js +53 -0
- package/dist/features/timeline/ptm-report/comps/parent-support/parent-support.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/real-world-projects/real-world-projects-styled.js +19 -0
- package/dist/features/timeline/ptm-report/comps/real-world-projects/real-world-projects-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/real-world-projects/real-world-projects.js +50 -0
- package/dist/features/timeline/ptm-report/comps/real-world-projects/real-world-projects.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/report-card/report-card-styled.js +9 -0
- package/dist/features/timeline/ptm-report/comps/report-card/report-card-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/report-card/report-card.js +22 -0
- package/dist/features/timeline/ptm-report/comps/report-card/report-card.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/school-support/school-support-styled.js +9 -0
- package/dist/features/timeline/ptm-report/comps/school-support/school-support-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/school-support/school-support.js +84 -0
- package/dist/features/timeline/ptm-report/comps/school-support/school-support.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/strategies/strategies-constant.js +11 -0
- package/dist/features/timeline/ptm-report/comps/strategies/strategies-constant.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/strategies/strategies.js +36 -0
- package/dist/features/timeline/ptm-report/comps/strategies/strategies.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/strategy-card/strategy-card-styled.js +55 -0
- package/dist/features/timeline/ptm-report/comps/strategy-card/strategy-card-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/strategy-card/strategy-card.js +35 -0
- package/dist/features/timeline/ptm-report/comps/strategy-card/strategy-card.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/student-info/student-info-styled.js +21 -0
- package/dist/features/timeline/ptm-report/comps/student-info/student-info-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/student-info/student-info.js +21 -0
- package/dist/features/timeline/ptm-report/comps/student-info/student-info.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/support-card/support-card-styled.js +9 -0
- package/dist/features/timeline/ptm-report/comps/support-card/support-card-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/support-card/support-card.js +30 -0
- package/dist/features/timeline/ptm-report/comps/support-card/support-card.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/teacher-observations/teacher-observations-constant.js +9 -0
- package/dist/features/timeline/ptm-report/comps/teacher-observations/teacher-observations-constant.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/teacher-observations/teacher-observations.js +56 -0
- package/dist/features/timeline/ptm-report/comps/teacher-observations/teacher-observations.js.map +1 -0
- package/dist/features/timeline/ptm-report/comps/upcoming-chapters/upcoming-chapters.js +15 -0
- package/dist/features/timeline/ptm-report/comps/upcoming-chapters/upcoming-chapters.js.map +1 -0
- package/dist/features/timeline/ptm-report/ptm-report-constants.js +16 -0
- package/dist/features/timeline/ptm-report/ptm-report-constants.js.map +1 -0
- package/dist/features/timeline/ptm-report/ptm-report-helpers.js +8 -0
- package/dist/features/timeline/ptm-report/ptm-report-helpers.js.map +1 -0
- package/dist/features/timeline/ptm-report/ptm-report-styled.js +11 -0
- package/dist/features/timeline/ptm-report/ptm-report-styled.js.map +1 -0
- package/dist/features/timeline/ptm-report/ptm-report-types.js +5 -0
- package/dist/features/timeline/ptm-report/ptm-report-types.js.map +1 -0
- package/dist/features/timeline/ptm-report/ptm-report.js +113 -0
- package/dist/features/timeline/ptm-report/ptm-report.js.map +1 -0
- package/dist/features/timeline/timeline-tabs/timeline-tabs-types.js +5 -0
- package/dist/features/timeline/timeline-tabs/timeline-tabs-types.js.map +1 -0
- package/dist/features/timeline/timeline-tabs/timeline-tabs.js +42 -0
- package/dist/features/timeline/timeline-tabs/timeline-tabs.js.map +1 -0
- package/dist/features/timeline/timeline-tabs/timeline-tabs.styled.js +37 -0
- package/dist/features/timeline/timeline-tabs/timeline-tabs.styled.js.map +1 -0
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body-styled.js.map +1 -1
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body.js +11 -11
- package/dist/features/ui/arrow-tooltip/comps/tooltip-body.js.map +1 -1
- package/dist/features/ui/swipable-carousel/swipable-carousel-styled.js +57 -0
- package/dist/features/ui/swipable-carousel/swipable-carousel-styled.js.map +1 -0
- package/dist/features/ui/swipable-carousel/swipable-carousel.js +132 -0
- package/dist/features/ui/swipable-carousel/swipable-carousel.js.map +1 -0
- package/dist/features/ui/swipeable-component/swipeable-component-styled.js.map +1 -0
- package/dist/features/ui/swipeable-component/swipeable-component.js +27 -0
- package/dist/features/ui/swipeable-component/swipeable-component.js.map +1 -0
- package/dist/features/worksheet/user-pointer-pin/hooks/use-user-location.js +20 -21
- package/dist/features/worksheet/user-pointer-pin/hooks/use-user-location.js.map +1 -1
- package/dist/features/worksheet/user-pointer-pin/user-pin.js +35 -37
- package/dist/features/worksheet/user-pointer-pin/user-pin.js.map +1 -1
- package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js +132 -132
- package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js.map +1 -1
- package/dist/features/worksheet/worksheet/hooks/use-get-active-question-id.js +62 -0
- package/dist/features/worksheet/worksheet/hooks/use-get-active-question-id.js.map +1 -0
- package/dist/features/worksheet/worksheet/hooks/use-time-on-questions.js +19 -24
- package/dist/features/worksheet/worksheet/hooks/use-time-on-questions.js.map +1 -1
- package/dist/features/worksheet/worksheet/question-tips.js +47 -48
- package/dist/features/worksheet/worksheet/question-tips.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +132 -88
- package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-blocker/worksheet-blocker.js +55 -44
- package/dist/features/worksheet/worksheet/worksheet-blocker/worksheet-blocker.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-container.js +87 -0
- package/dist/features/worksheet/worksheet/worksheet-container.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-helpers.js +112 -109
- package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-navigation/worksheet-item-navigation.js +27 -25
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-navigation/worksheet-item-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-number/worksheet-item-number.js +47 -47
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-number/worksheet-item-number.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +64 -66
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js +40 -38
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-permissions/error.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/header/header.js +71 -73
- package/dist/features/worksheet/worksheet/worksheet-question/header/header.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +59 -61
- package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/subjective-review.js +18 -21
- package/dist/features/worksheet/worksheet/worksheet-question/subjective-review.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +272 -269
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js +31 -32
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js +149 -147
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +223 -212
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-summary/worksheet-questions-summary.js +20 -22
- package/dist/features/worksheet/worksheet/worksheet-questions-summary/worksheet-questions-summary.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +55 -57
- package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +42 -47
- package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-styled.js +34 -24
- package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-summary/worksheet-summary.js +12 -16
- package/dist/features/worksheet/worksheet/worksheet-summary/worksheet-summary.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js +7 -8
- package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +441 -203
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/index.d.ts +276 -31
- package/dist/index.js +465 -451
- package/dist/index.js.map +1 -1
- package/dist/static/2021.0683b580.png +0 -0
- package/dist/static/2022.d34ad7a5.png +0 -0
- package/dist/static/2023.fce87149.png +0 -0
- package/dist/static/2024.a275ee85.png +0 -0
- package/dist/static/2025.677cc187.png +0 -0
- package/dist/static/2026.63763214.png +0 -0
- package/dist/static/2027.b82dc039.png +0 -0
- package/dist/static/2028.580b8cc0.png +0 -0
- package/dist/static/coding-report-icon.91a1e900.svg +1 -0
- package/dist/static/elp-icon.d45b457d.svg +1 -0
- package/dist/static/empty-reports.fe92faad.svg +1 -0
- package/dist/static/english-icon.50c2e005.svg +1 -0
- package/dist/static/full-report.00112c74.svg +1 -0
- package/dist/static/math-fit-grey.c32f37b3.svg +1 -0
- package/dist/static/no-report.4158fad3.svg +1 -0
- package/dist/static/ptm-report-icon.5089218f.svg +1 -0
- package/dist/static/sat-report-icon.4331be86.svg +1 -0
- package/dist/static/science-report-icon.a0014c40.svg +1 -0
- package/dist/static/thumps-down.a1192a62.svg +1 -0
- package/dist/static/thumps-up.caa35a98.svg +1 -0
- package/package.json +3 -4
- package/dist/features/circle-games/game-launcher/comps/swipable-component/swipeable-component-styled.js.map +0 -1
- package/dist/features/circle-games/game-launcher/comps/swipable-component/swipeable-component.js +0 -26
- package/dist/features/circle-games/game-launcher/comps/swipable-component/swipeable-component.js.map +0 -1
- package/dist/features/worksheet/worksheet/hooks/use-active-question-observer.js +0 -59
- package/dist/features/worksheet/worksheet/hooks/use-active-question-observer.js.map +0 -1
- package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js +0 -13
- package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-blocker/worksheet-blocker-view.js +0 -68
- package/dist/features/worksheet/worksheet/worksheet-blocker/worksheet-blocker-view.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js +0 -17
- package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-nudge-banner/worksheet-nudge-banner-styled.js +0 -20
- package/dist/features/worksheet/worksheet/worksheet-nudge-banner/worksheet-nudge-banner-styled.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-nudge-banner/worksheet-nudge-banner.js +0 -49
- package/dist/features/worksheet/worksheet/worksheet-nudge-banner/worksheet-nudge-banner.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-provider.js +0 -21
- package/dist/features/worksheet/worksheet/worksheet-provider.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions-styled.js +0 -16
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions-styled.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js +0 -73
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-store.js +0 -301
- package/dist/features/worksheet/worksheet/worksheet-store.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-view.js +0 -141
- package/dist/features/worksheet/worksheet/worksheet-view.js.map +0 -1
- package/dist/node_modules/zustand/esm/middleware.js +0 -22
- package/dist/node_modules/zustand/esm/middleware.js.map +0 -1
- package/dist/node_modules/zustand/esm/react/shallow.js +0 -13
- package/dist/node_modules/zustand/esm/react/shallow.js.map +0 -1
- package/dist/node_modules/zustand/esm/vanilla/shallow.js +0 -31
- package/dist/node_modules/zustand/esm/vanilla/shallow.js.map +0 -1
- /package/dist/features/{circle-games/game-launcher/comps/swipable-component → ui/swipeable-component}/swipeable-component-styled.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet-helpers.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-helpers.ts"],"sourcesContent":["import Bulb2Icon from '../../../assets/line-icons/icons/bulb2';\nimport EditStarIcon from '../../../assets/line-icons/icons/edit-star';\nimport Edit2Icon from '../../../assets/line-icons/icons/edit2';\nimport QuestionLetterIcon from '../../../assets/line-icons/icons/question-letter';\nimport Star2Icon from '../../../assets/line-icons/icons/star2';\nimport type { NODE_TYPES } from '../../../types/models/worksheet';\nimport type { TColorNames, THueNames, TUserTypes } from '../../ui/types';\nimport EVENTS from '../constants/events';\nimport {\n ACTION_BAR_HEIGHT,\n CLOZE_FORMULA_RESPONSE_LIMIT,\n OPTIONAL_ITEM_TYPES,\n QUESTION_WIDTH,\n SPLIT_QUESTION_WIDTH,\n} from './constants';\nimport type { TWorksheetQuestionPaperColor } from './worksheet-question/worksheet-question-types';\nimport {\n QUESTION_TAGS,\n type ILearnosityItem,\n type ILearnosityQuestion,\n type ILearnosityQuestionResponse,\n type ISheetNudgeBannerInfo,\n type IWorksheetBehavior,\n type IWorksheetHeaderLayoutProps,\n type IWorksheetLayout,\n type IWorksheetQuestion,\n type IWorksheetResponse,\n type TInstructorStimulus,\n type TItemType,\n type TSectionName,\n} from './worksheet-types';\n\ninterface IGetSectionNameFromItemType {\n (itemType?: TItemType): TSectionName | undefined;\n}\n\nconst getSectionNameFromItemType: IGetSectionNameFromItemType = itemType => {\n switch (itemType) {\n case 'overview':\n return 'overview';\n case 'learning-we-do':\n case 'learning-your-turn':\n case 'learning-explore':\n return 'learning';\n case 'practice-basic':\n case 'practice-basic-optional':\n return 'practice-basic';\n case 'practice-regular':\n case 'practice-regular-optional':\n return 'practice-regular';\n case 'exit-ticket':\n return 'exit-ticket';\n case 'advanced-explore':\n case 'advanced-we-do':\n case 'advanced-your-turn':\n case 'advanced-practice':\n return 'advanced';\n default:\n return undefined;\n }\n};\n\nconst isConceptIntroWidget = (instructorStimulus?: TInstructorStimulus) => {\n if (!instructorStimulus) {\n return false;\n }\n\n const lowerCaseInstructorStimulus = instructorStimulus.toLowerCase();\n\n return lowerCaseInstructorStimulus === 'intro' || lowerCaseInstructorStimulus === 'concept-intro';\n};\n\nconst getTagsMap = (tags: string[]): Record<string, string> => {\n return tags.reduce((acc, tag) => {\n const [key, value] = tag.split(':');\n const trimmedKey = key?.trim();\n const trimmedValue = value?.trim();\n\n if (!trimmedKey || !trimmedValue) {\n return acc;\n }\n\n return {\n ...acc,\n [trimmedKey.toLowerCase()]: trimmedValue,\n };\n }, {});\n};\n\ninterface IGetQuestionsFromItems {\n (\n items: ILearnosityItem[],\n options: {\n sectioned?: boolean;\n adaptive?: boolean;\n },\n ): IWorksheetQuestion[];\n}\nconst getQuestionsFromItems: IGetQuestionsFromItems = (\n items,\n { sectioned = false, adaptive = false },\n) => {\n if (sectioned) {\n return items.reduce((acc, item, itemIndex) => {\n let hasIntroWidget = false;\n const { content, questions, itemType } = item;\n const sectionName = getSectionNameFromItemType(itemType);\n const prevItem = acc[acc.length - 1];\n const itemDisplayNumber =\n sectionName === prevItem?.section_name && prevItem?.item_display_number\n ? prevItem.item_display_number + 1\n : 1;\n const orderedQuestionIds = content.match(/question-[^\"]*/g);\n const orderedQuestions = orderedQuestionIds?.map((responseId, widgetIndex) => {\n const question = questions.find(\n ({ response_id: respId }) => respId === responseId.replace('question-', ''),\n );\n\n if (!question) {\n throw new Error(`Question not found for the response id: ${responseId}`);\n }\n\n hasIntroWidget = hasIntroWidget || isConceptIntroWidget(question.instructor_stimulus);\n\n return {\n ...question,\n // Some questions are set to limited number of attempts which can show feedback which is causing the question to be stuck in the errored state\n feedback_attempts: undefined,\n item_reference: item.reference,\n item_number: itemIndex,\n item_display_number: itemDisplayNumber,\n section_name: sectionName,\n item_type: sectioned ? itemType : undefined,\n is_optional: itemType ? OPTIONAL_ITEM_TYPES.includes(itemType) : false,\n item_tags: item.tags ?? [],\n item_tags_map: getTagsMap(item.tags ?? []),\n question_number: widgetIndex - (hasIntroWidget ? 1 : 0),\n total_questions: orderedQuestionIds.length,\n } as IWorksheetQuestion;\n });\n\n hasIntroWidget = false;\n\n if (orderedQuestions?.[0] && itemIndex > 0 && items.length > 0) {\n const prevItemType = items[itemIndex - 1]?.itemType;\n const itemTypeDerived = itemType?.startsWith('advanced-') ? 'advanced' : itemType;\n const prevItemTypeDerived = prevItemType?.startsWith('advanced-')\n ? 'advanced'\n : prevItemType;\n\n if (\n (itemTypeDerived === 'practice-basic' ||\n itemTypeDerived === 'practice-regular' ||\n itemTypeDerived === 'exit-ticket' ||\n itemTypeDerived === 'advanced') &&\n itemTypeDerived !== prevItemTypeDerived\n ) {\n return [\n ...acc,\n {\n ...orderedQuestions[0],\n metadata: {\n ...orderedQuestions[0].metadata,\n teacher_tips: undefined,\n hints: undefined,\n solution: undefined,\n },\n instructor_stimulus: 'SystemIntro',\n response_id: `${itemType}-system-intro`,\n is_optional: itemType?.startsWith('advanced-'),\n },\n ...(orderedQuestions ?? []),\n ];\n }\n }\n\n return [...acc, ...(orderedQuestions ?? [])];\n }, [] as IWorksheetQuestion[]);\n }\n\n const finalQuestions = items.reduce((acc, item, itemIndex) => {\n const { content, questions } = item;\n const orderedQuestionIds = content.match(/question-[^\"]*/g);\n const orderedQuestions = orderedQuestionIds?.map<IWorksheetQuestion>(\n (responseId, widgetIndex) => {\n const question = questions.find(\n ({ response_id: respId }) => respId === responseId.replace('question-', ''),\n );\n\n if (!question) {\n throw new Error(`Question not found for the response id: ${responseId}`);\n }\n\n return {\n ...question,\n feedback_attempts: undefined,\n item_reference: item.reference,\n item_number: itemIndex,\n item_display_number: itemIndex + 1,\n item_tags: item.tags ?? [],\n item_tags_map: getTagsMap(item.tags ?? []),\n question_number: widgetIndex,\n total_questions: orderedQuestionIds.length,\n };\n },\n );\n\n return [...acc, ...(orderedQuestions ?? [])];\n }, [] as IWorksheetQuestion[]);\n\n if (adaptive) {\n const topics: string[] = [];\n const topicsOrder: Record<string, number> = {};\n\n return finalQuestions\n .sort((a, b) => {\n const aTopic = a.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n const bTopic = b.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n\n if (aTopic && topicsOrder[aTopic] === undefined) {\n topicsOrder[aTopic] = topics.length;\n topics.push(aTopic);\n }\n\n if (bTopic && topicsOrder[bTopic] === undefined) {\n topicsOrder[bTopic] = topics.length;\n topics.push(bTopic);\n }\n\n if (!aTopic || !bTopic) {\n return 0;\n }\n\n const aSortKey = `${topicsOrder[aTopic]}-${\n a.item_tags_map[QUESTION_TAGS.QUESTION_CODE]?.length ?? 0\n }`;\n const bSortKey = `${topicsOrder[bTopic]}-${\n b.item_tags_map[QUESTION_TAGS.QUESTION_CODE]?.length ?? 0\n }`;\n\n return aSortKey > bSortKey ? 1 : -1;\n })\n .map(question => {\n const topicOrder =\n topicsOrder[question.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] ?? ''] ?? 0;\n const questionCode = question.item_tags_map[QUESTION_TAGS.QUESTION_CODE] ?? '';\n\n return {\n ...question,\n item_display_number: topicOrder * 3 + questionCode.length,\n };\n });\n }\n\n return finalQuestions;\n};\n\ninterface IGetInitialQuestionId {\n (params: {\n questions: IWorksheetQuestion[];\n initialQuestion: IWorksheetBehavior['initialQuestion'];\n lastUnlockedQuestionIndex: number;\n lastAttemptableQuestionIndex: number;\n initialResponseId?: string;\n initialItemIndex?: number;\n }): string;\n}\n\nconst getInitialQuestionId: IGetInitialQuestionId = ({\n questions,\n initialQuestion,\n initialResponseId,\n initialItemIndex,\n lastUnlockedQuestionIndex,\n lastAttemptableQuestionIndex,\n}) => {\n const unlockedQuestions = questions.slice(0, lastUnlockedQuestionIndex + 1);\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex]!;\n const lastAttemptableQuestion = questions[lastAttemptableQuestionIndex]!;\n\n if (initialResponseId && unlockedQuestions.find(q => q.response_id === initialResponseId)) {\n return initialResponseId;\n }\n\n if (\n typeof initialItemIndex === 'number' &&\n initialItemIndex <= lastUnlockedQuestion.item_number\n ) {\n const question = questions.find(q => q.item_number === initialItemIndex);\n\n if (question?.response_id) {\n return question.response_id;\n }\n }\n\n if (initialQuestion === 'FIRST' && questions[0]?.response_id) {\n return questions[0].response_id;\n }\n\n if (initialQuestion === 'CURRENT') {\n return lastAttemptableQuestion.response_id;\n }\n\n if (questions[0]?.response_id) {\n return questions[0].response_id;\n }\n\n throw new Error('Initial question not found');\n};\n\ninterface IGetLastAttemptableQuestionIndex {\n (options: {\n questions: IWorksheetQuestion[];\n responses: Record<string, IWorksheetResponse>;\n behavior: IWorksheetBehavior;\n userType: TUserTypes;\n }): number;\n}\nconst getLastAttemptableQuestionIndex: IGetLastAttemptableQuestionIndex = ({\n questions,\n responses,\n behavior,\n userType,\n}) => {\n const { maximumAttempts, teacherValidationEnabled, validation, navigationMode } = behavior;\n\n const questionIndex = [...questions].reverse().findIndex(q => {\n const qResp = responses[q.response_id];\n\n const { attemptsHistory, validatedByTeacher, assignStatus } = qResp ?? {};\n\n if (teacherValidationEnabled) {\n if (validatedByTeacher) {\n return true;\n }\n\n if (assignStatus === 'skipped') {\n return true;\n }\n\n return false;\n }\n\n const lastAttemptScore = attemptsHistory?.slice(-1)[0]?.score;\n\n if (lastAttemptScore) {\n if ((lastAttemptScore.score ?? 0) === lastAttemptScore.max_score) {\n return true;\n }\n\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n return maximumAttemptsReached;\n }\n\n if (!validation && navigationMode === 'LINEAR' && (qResp?.response || qResp?.skipped)) {\n return true;\n }\n\n return false;\n });\n\n if (questionIndex === -1) {\n return 0;\n }\n\n if (questionIndex === 0) {\n if (teacherValidationEnabled) {\n const unskippedQuestionIndex = [...questions].reverse().findIndex(q => {\n return responses[q.response_id]?.assignStatus !== 'skipped';\n });\n\n return questions.length - unskippedQuestionIndex - 1;\n }\n\n return questions.length - 1;\n }\n\n if (teacherValidationEnabled && userType === 'STUDENT') {\n const lastUnlockedQuestionIndex = questions.length - questionIndex;\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex]!;\n const { assignStatus } = responses[lastUnlockedQuestion.response_id] ?? {};\n\n if (lastUnlockedQuestion.is_optional && !assignStatus) {\n return lastUnlockedQuestionIndex - 1;\n }\n\n return lastUnlockedQuestionIndex;\n }\n\n return questions.length - questionIndex;\n};\n\ninterface IGetLastUnlockedQuestionIndex {\n (options: {\n questions: IWorksheetQuestion[];\n responses: Record<string, IWorksheetResponse>;\n behavior: IWorksheetBehavior;\n userType: TUserTypes;\n }): number;\n}\n\nconst getLastUnlockedQuestionIndex: IGetLastUnlockedQuestionIndex = ({\n questions,\n responses,\n behavior,\n userType,\n}) => {\n if (behavior.navigationMode === 'OPEN') {\n return questions.length - 1;\n }\n\n return getLastAttemptableQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n });\n};\n\ntype TQuestionMetadata = Pick<\n IWorksheetResponse,\n 'widgetReference' | 'itemReference' | 'itemPosition' | 'questionPosition' | 'isOkayTypeQuestion'\n>;\n\nfunction getQuestionMetadata(\n questions: IWorksheetQuestion[],\n questionId: string,\n): TQuestionMetadata;\nfunction getQuestionMetadata(question: IWorksheetQuestion): TQuestionMetadata;\nfunction getQuestionMetadata(\n questions: IWorksheetQuestion | IWorksheetQuestion[],\n questionId?: string,\n) {\n const question = Array.isArray(questions)\n ? questions.find(q => q.response_id === questionId)\n : questions;\n\n if (!question) {\n throw new Error(`Question with id ${questionId} not found`);\n }\n\n return {\n widgetReference: question.metadata.widget_reference,\n itemReference: question.item_reference,\n itemPosition: question.item_number,\n questionPosition: question.question_number,\n isOkayTypeQuestion: isOkayTypeQuestion(question),\n score: {\n max_score:\n question?.validation?.valid_response?.score ?? 0 * question.metadata.valid_response_count,\n },\n tags: {\n ...question.item_tags_map,\n instructor_stimulus: question.instructor_stimulus,\n },\n };\n}\n\ninterface IGetInitialResponses {\n (questions: IWorksheetQuestion[]): Record<string, IWorksheetResponse>;\n}\n\nconst getInitialResponses: IGetInitialResponses = questions => {\n return questions.reduce(\n (acc, question) => ({\n ...acc,\n [question.response_id]: getQuestionMetadata(questions, question.response_id),\n }),\n {},\n );\n};\n\ninterface IGetWorksheetDimensions {\n (\n items: ILearnosityItem[],\n layout: IWorksheetLayout,\n ): {\n questionsContainerWidth: number;\n maxQuestionWidth: number;\n actionbarHeight: number;\n };\n}\n\nconst getWorksheetDimensions: IGetWorksheetDimensions = (items, layout) => {\n const { actionBar } = layout;\n const isSingleColumn = !items.some(item =>\n item.questions.some(question => question.stimulus_review),\n );\n const actionbarHeight = actionBar === 'bottom' ? ACTION_BAR_HEIGHT : 0;\n\n return {\n questionsContainerWidth: isSingleColumn ? QUESTION_WIDTH : SPLIT_QUESTION_WIDTH,\n maxQuestionWidth: QUESTION_WIDTH,\n actionbarHeight,\n };\n};\n\ninterface IScrollToQuestion {\n (questionId: string, params?: { animation?: boolean }): void;\n}\n\nconst scrollToQuestion: IScrollToQuestion = (questionId, { animation = false } = {}) => {\n const $questionEl = document.querySelectorAll(`.widget-${questionId}`)[0];\n\n if ($questionEl) {\n $questionEl.scrollIntoView({\n block: 'start',\n behavior: animation ? 'smooth' : 'instant',\n });\n }\n};\n\ninterface IIsOkayTypeQuestion {\n (question: IWorksheetQuestion | ILearnosityQuestion): boolean;\n}\n\nconst isOkayTypeQuestion: IIsOkayTypeQuestion = question => {\n const { type, options, instructor_stimulus } = question;\n const itemType = 'item_type' in question ? question.item_type : undefined;\n\n if (\n itemType === 'overview' ||\n instructor_stimulus === 'Intro' ||\n instructor_stimulus === 'SystemIntro' ||\n instructor_stimulus === 'Concept-Intro'\n ) {\n return true;\n }\n\n return type === 'mcq' && options?.length === 1 ? true : false;\n};\n\nconst setMathJaxConfigInWindow = (\n logger: (eventName: string, data?: Record<string, unknown>) => void,\n) => {\n window.MathJax = {\n options: {\n enableMenu: false,\n ignoreHtmlClass: 'lrn_noMath',\n compileError: function (doc, math, err) {\n logger(EVENTS.MATHJAX_COMPILE_ERROR);\n doc.compileError(math, err);\n },\n typesetError: function (doc, math, err) {\n logger(EVENTS.MATHJAX_TYPESET_ERROR);\n doc.typesetError(math, err);\n // throw new Error('typesetError');\n },\n },\n tex: {\n inlineMath: [\n ['\\\\(', '\\\\)'],\n ['$$', '$$'],\n ],\n displayMath: [['\\\\[', '\\\\]']],\n macros: {\n abs: ['{|#1|}', 1],\n degree: ['°'],\n longdiv: ['{\\\\enclose{longdiv}{#1}}', 1],\n atomic: ['{_{#1}^{#2}}', 2],\n polyatomic: ['{_{#2}{}^{#1}}', 2],\n circledot: ['{\\\\odot}'],\n parallelogram: ['\\\\unicode{x25B1}'],\n ngtr: ['\\\\unicode{x226F}'],\n nless: ['\\\\unicode{x226E}'],\n MathQuillVarField: ['#1', 1],\n overarc: ['{\\\\overparen{#1}}', 1],\n },\n formatError: (jax, err) => {\n logger(EVENTS.MATHJAX_FORMAT_ERROR, {\n id: err.id,\n message: err.message,\n });\n jax.formatError(err);\n },\n },\n chtml: {\n minScale: 1,\n matchFontHeight: false,\n },\n };\n};\n\ninterface IGetPaperColorByQuestion {\n (question: IWorksheetQuestion): TWorksheetQuestionPaperColor;\n}\n\nconst getPaperColorByQuestion: IGetPaperColorByQuestion = question => {\n const { item_type, instructor_stimulus } = question;\n const lowerCaseInstructorStimulus = instructor_stimulus?.toLowerCase();\n\n switch (item_type) {\n case 'overview':\n return 'white';\n case 'learning-we-do':\n case 'learning-your-turn':\n case 'learning-explore':\n if (\n lowerCaseInstructorStimulus === 'instruction' ||\n lowerCaseInstructorStimulus === 'intro' ||\n lowerCaseInstructorStimulus === 'concept-intro'\n ) {\n return 'blue';\n }\n\n if (lowerCaseInstructorStimulus === 'task') {\n return 'green';\n }\n\n return 'yellow';\n case 'practice-basic':\n case 'practice-regular':\n return 'yellow';\n case 'exit-ticket':\n return 'purple';\n case 'advanced-practice':\n return 'orange';\n default:\n if (lowerCaseInstructorStimulus === 'learn') return 'blue';\n\n if (lowerCaseInstructorStimulus === 'try' || lowerCaseInstructorStimulus === 'apply')\n return 'green';\n\n return 'yellow';\n }\n};\n\nconst getQuestionBackgroundImage = (paperColor: TWorksheetQuestionPaperColor) => {\n return `https://cuemath-intel.s3.ap-southeast-1.amazonaws.com/media/math-canvas/paper-${paperColor}.png`;\n};\n\nconst getQuestionBorderColor = (\n paperColor: TWorksheetQuestionPaperColor,\n isActive?: boolean,\n): TColorNames => {\n if (!isActive) {\n return 'GREY_3';\n }\n\n switch (paperColor) {\n case 'orange':\n case 'white':\n return 'ORANGE_2';\n case 'blue':\n return 'BLUE_2';\n case 'green':\n return 'GREEN_2';\n case 'yellow':\n return 'YELLOW_2';\n case 'purple':\n return 'PURPLE_2';\n default:\n return 'GREY_3';\n }\n};\n\nconst getNavigationSectionBackgroundColor = (sectionName?: TSectionName): TColorNames => {\n switch (sectionName) {\n case 'learning':\n return 'BLUE_1';\n case 'practice-basic':\n case 'practice-regular':\n return 'YELLOW_1';\n case 'exit-ticket':\n return 'PURPLE_1';\n case 'advanced':\n return 'ORANGE_1';\n default:\n return 'YELLOW_1';\n }\n};\n\nconst getNavigationSectionName = (sectionName?: TSectionName): string => {\n switch (sectionName) {\n case 'learning':\n return 'Learning';\n case 'practice-basic':\n return 'Basic practice';\n case 'practice-regular':\n return 'Regular practice';\n case 'exit-ticket':\n return 'Mini quiz';\n case 'advanced':\n return 'Advanced work';\n default:\n return '';\n }\n};\n\nconst getNavigationSectionIcon = (sectionName?: TSectionName) => {\n switch (sectionName) {\n case 'learning':\n return Bulb2Icon;\n case 'practice-basic':\n return Edit2Icon;\n case 'practice-regular':\n return EditStarIcon;\n case 'exit-ticket':\n return QuestionLetterIcon;\n case 'advanced':\n return Star2Icon;\n default:\n return Bulb2Icon;\n }\n};\n\nconst isSATAssessmentNode = (nodeType: NODE_TYPES) =>\n nodeType === 'SAT_ENGLISH_ASSESSMENT' || nodeType === 'SAT_MATH_ASSESSMENT';\n\nconst checkIsClozeFormulaResponseInvalid = (response: ILearnosityQuestionResponse) => {\n if (Array.isArray(response.value)) {\n const isInvalid = response.value.some(\n item => typeof item === 'string' && item.length > CLOZE_FORMULA_RESPONSE_LIMIT,\n );\n\n return isInvalid;\n }\n\n return false;\n};\n\nconst getWorksheetNudgeBannerInfo = (\n userType: TUserTypes,\n markedAsCompleted: boolean,\n): ISheetNudgeBannerInfo => {\n const isTeacher = userType === 'TEACHER';\n\n if (markedAsCompleted) {\n return {\n bannerBackgroundColor: 'GREEN_4',\n label: isTeacher\n ? 'This sheet was marked as completed.'\n : 'Marked as completed by the teacher',\n };\n }\n\n return {\n bannerBackgroundColor: 'ORANGE_2',\n label: 'Complete this with your tutor in class',\n };\n};\n\nconst getWorksheetHeaderLayout: IWorksheetHeaderLayoutProps = ({\n isPuzzleWorksheet,\n isTestWorksheet,\n imageHue = 'BLUE',\n}) => {\n if (isPuzzleWorksheet) {\n return {\n bgColor: `${imageHue}_3`,\n borderColor: `${imageHue}_4`,\n textColor: 'BLACK_T_87',\n };\n }\n\n if (isTestWorksheet) {\n return {\n bgColor: 'WHITE_3',\n borderColor: 'WHITE_4',\n textColor: 'BLACK_T_87',\n };\n }\n\n return {\n bgColor: 'BLACK',\n borderColor: 'BLACK_4',\n textColor: 'WHITE',\n };\n};\n\ninterface IGetPuzzleWorksheetBackgroundColor {\n (imageHue?: THueNames): TColorNames;\n}\n\nconst getPuzzleWorksheetBackgroundColor: IGetPuzzleWorksheetBackgroundColor = imageHue => {\n if (!imageHue) return 'BLUE_1';\n\n return `${imageHue}_1`;\n};\n\nexport {\n checkIsClozeFormulaResponseInvalid,\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getLastAttemptableQuestionIndex,\n getNavigationSectionBackgroundColor,\n getNavigationSectionIcon,\n getNavigationSectionName,\n getPaperColorByQuestion,\n getPuzzleWorksheetBackgroundColor,\n getQuestionBackgroundImage,\n getQuestionBorderColor,\n getQuestionMetadata,\n getQuestionsFromItems,\n getWorksheetDimensions,\n getWorksheetHeaderLayout,\n getWorksheetNudgeBannerInfo,\n isConceptIntroWidget,\n isOkayTypeQuestion,\n isSATAssessmentNode,\n scrollToQuestion,\n setMathJaxConfigInWindow,\n};\n"],"names":["getSectionNameFromItemType","itemType","isConceptIntroWidget","instructorStimulus","lowerCaseInstructorStimulus","getTagsMap","tags","acc","tag","key","value","trimmedKey","trimmedValue","getQuestionsFromItems","items","sectioned","adaptive","item","itemIndex","hasIntroWidget","content","questions","sectionName","prevItem","itemDisplayNumber","orderedQuestionIds","orderedQuestions","responseId","widgetIndex","question","respId","OPTIONAL_ITEM_TYPES","prevItemType","_a","itemTypeDerived","prevItemTypeDerived","finalQuestions","topics","topicsOrder","a","b","aTopic","QUESTION_TAGS","bTopic","aSortKey","bSortKey","_b","topicOrder","questionCode","getInitialQuestionId","initialQuestion","initialResponseId","initialItemIndex","lastUnlockedQuestionIndex","lastAttemptableQuestionIndex","unlockedQuestions","lastUnlockedQuestion","lastAttemptableQuestion","q","getLastAttemptableQuestionIndex","responses","behavior","userType","maximumAttempts","teacherValidationEnabled","validation","navigationMode","questionIndex","qResp","attemptsHistory","validatedByTeacher","assignStatus","lastAttemptScore","unskippedQuestionIndex","getLastUnlockedQuestionIndex","getQuestionMetadata","questionId","isOkayTypeQuestion","getInitialResponses","getWorksheetDimensions","layout","actionBar","QUESTION_WIDTH","SPLIT_QUESTION_WIDTH","ACTION_BAR_HEIGHT","scrollToQuestion","animation","$questionEl","type","options","instructor_stimulus","setMathJaxConfigInWindow","logger","doc","math","err","EVENTS","jax","getPaperColorByQuestion","item_type","getQuestionBackgroundImage","paperColor","getQuestionBorderColor","isActive","getNavigationSectionBackgroundColor","getNavigationSectionName","getNavigationSectionIcon","Bulb2Icon","Edit2Icon","EditStarIcon","QuestionLetterIcon","Star2Icon","checkIsClozeFormulaResponseInvalid","response","CLOZE_FORMULA_RESPONSE_LIMIT","getWorksheetHeaderLayout","isPuzzleWorksheet","isTestWorksheet","imageHue","getPuzzleWorksheetBackgroundColor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worksheet-helpers.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-helpers.ts"],"sourcesContent":["import Bulb2Icon from '../../../assets/line-icons/icons/bulb2';\nimport EditStarIcon from '../../../assets/line-icons/icons/edit-star';\nimport Edit2Icon from '../../../assets/line-icons/icons/edit2';\nimport QuestionLetterIcon from '../../../assets/line-icons/icons/question-letter';\nimport Star2Icon from '../../../assets/line-icons/icons/star2';\nimport type { NODE_TYPES } from '../../../types/models/worksheet';\nimport type { TColorNames, THueNames, TUserTypes } from '../../ui/types';\nimport EVENTS from '../constants/events';\nimport {\n ACTION_BAR_HEIGHT,\n CLOZE_FORMULA_RESPONSE_LIMIT,\n OPTIONAL_ITEM_TYPES,\n QUESTION_WIDTH,\n SPLIT_QUESTION_WIDTH,\n} from './constants';\nimport type { TWorksheetQuestionPaperColor } from './worksheet-question/worksheet-question-types';\nimport {\n type ILearnosityQuestionResponse,\n type IWorksheetHeaderLayoutProps,\n QUESTION_TAGS,\n type ILearnosityItem,\n type ILearnosityQuestion,\n type ISheetNudgeBannerInfo,\n type IWorksheetBehavior,\n type IWorksheetProps,\n type IWorksheetQuestion,\n type IWorksheetResponse,\n type TInstructorStimulus,\n type TItemType,\n type TSectionName,\n} from './worksheet-types';\n\ninterface IGetSectionNameFromItemType {\n (itemType?: TItemType): TSectionName | undefined;\n}\n\nconst getSectionNameFromItemType: IGetSectionNameFromItemType = itemType => {\n switch (itemType) {\n case 'overview':\n return 'overview';\n case 'learning-we-do':\n case 'learning-your-turn':\n case 'learning-explore':\n return 'learning';\n case 'practice-basic':\n case 'practice-basic-optional':\n return 'practice-basic';\n case 'practice-regular':\n case 'practice-regular-optional':\n return 'practice-regular';\n case 'exit-ticket':\n return 'exit-ticket';\n case 'advanced-explore':\n case 'advanced-we-do':\n case 'advanced-your-turn':\n case 'advanced-practice':\n return 'advanced';\n default:\n return undefined;\n }\n};\n\nconst isConceptIntroWidget = (instructorStimulus?: TInstructorStimulus) => {\n if (!instructorStimulus) {\n return false;\n }\n\n const lowerCaseInstructorStimulus = instructorStimulus.toLowerCase();\n\n return lowerCaseInstructorStimulus === 'intro' || lowerCaseInstructorStimulus === 'concept-intro';\n};\n\nconst getTagsMap = (tags: string[]): Record<string, string> => {\n return tags.reduce((acc, tag) => {\n const [key, value] = tag.split(':');\n const trimmedKey = key?.trim();\n const trimmedValue = value?.trim();\n\n if (!trimmedKey || !trimmedValue) {\n return acc;\n }\n\n return {\n ...acc,\n [trimmedKey.toLowerCase()]: trimmedValue,\n };\n }, {});\n};\n\ninterface IGetQuestionsFromItems {\n (\n items: ILearnosityItem[],\n options: {\n sectioned?: boolean;\n adaptive?: boolean;\n },\n ): IWorksheetQuestion[];\n}\nconst getQuestionsFromItems: IGetQuestionsFromItems = (\n items,\n { sectioned = false, adaptive = false },\n) => {\n if (sectioned) {\n return items.reduce((acc, item, itemIndex) => {\n let hasIntroWidget = false;\n const { content, questions, itemType } = item;\n const sectionName = getSectionNameFromItemType(itemType);\n const prevItem = acc[acc.length - 1];\n const itemDisplayNumber =\n sectionName === prevItem?.section_name && prevItem?.item_display_number\n ? prevItem.item_display_number + 1\n : 1;\n const orderedQuestionIds = content.match(/question-[^\"]*/g);\n const orderedQuestions = orderedQuestionIds?.map((responseId, widgetIndex) => {\n const question = questions.find(\n ({ response_id: respId }) => respId === responseId.replace('question-', ''),\n );\n\n if (!question) {\n throw new Error(`Question not found for the response id: ${responseId}`);\n }\n\n hasIntroWidget = hasIntroWidget || isConceptIntroWidget(question.instructor_stimulus);\n\n return {\n ...question,\n // Some questions are set to limited number of attempts which can show feedback which is causing the question to be stuck in the errored state\n feedback_attempts: undefined,\n item_reference: item.reference,\n item_number: itemIndex,\n item_display_number: itemDisplayNumber,\n section_name: sectionName,\n item_type: sectioned ? itemType : undefined,\n is_optional: itemType ? OPTIONAL_ITEM_TYPES.includes(itemType) : false,\n item_tags: item.tags ?? [],\n item_tags_map: getTagsMap(item.tags ?? []),\n question_number: widgetIndex - (hasIntroWidget ? 1 : 0),\n total_questions: orderedQuestionIds.length,\n } as IWorksheetQuestion;\n });\n\n hasIntroWidget = false;\n\n if (orderedQuestions?.[0] && itemIndex > 0 && items.length > 0) {\n const prevItemType = items[itemIndex - 1]?.itemType;\n const itemTypeDerived = itemType?.startsWith('advanced-') ? 'advanced' : itemType;\n const prevItemTypeDerived = prevItemType?.startsWith('advanced-')\n ? 'advanced'\n : prevItemType;\n\n if (\n (itemTypeDerived === 'practice-basic' ||\n itemTypeDerived === 'practice-regular' ||\n itemTypeDerived === 'exit-ticket' ||\n itemTypeDerived === 'advanced') &&\n itemTypeDerived !== prevItemTypeDerived\n ) {\n return [\n ...acc,\n {\n ...orderedQuestions[0],\n metadata: {\n ...orderedQuestions[0].metadata,\n teacher_tips: undefined,\n hints: undefined,\n solution: undefined,\n },\n instructor_stimulus: 'SystemIntro',\n response_id: `${itemType}-system-intro`,\n is_optional: itemType?.startsWith('advanced-'),\n },\n ...(orderedQuestions ?? []),\n ];\n }\n }\n\n return [...acc, ...(orderedQuestions ?? [])];\n }, [] as IWorksheetQuestion[]);\n }\n\n const finalQuestions = items.reduce((acc, item, itemIndex) => {\n const { content, questions } = item;\n const orderedQuestionIds = content.match(/question-[^\"]*/g);\n const orderedQuestions = orderedQuestionIds?.map<IWorksheetQuestion>(\n (responseId, widgetIndex) => {\n const question = questions.find(\n ({ response_id: respId }) => respId === responseId.replace('question-', ''),\n );\n\n if (!question) {\n throw new Error(`Question not found for the response id: ${responseId}`);\n }\n\n return {\n ...question,\n feedback_attempts: undefined,\n item_reference: item.reference,\n item_number: itemIndex,\n item_display_number: itemIndex + 1,\n item_tags: item.tags ?? [],\n item_tags_map: getTagsMap(item.tags ?? []),\n question_number: widgetIndex,\n total_questions: orderedQuestionIds.length,\n };\n },\n );\n\n return [...acc, ...(orderedQuestions ?? [])];\n }, [] as IWorksheetQuestion[]);\n\n if (adaptive) {\n const topics: string[] = [];\n const topicsOrder: Record<string, number> = {};\n\n return finalQuestions\n .sort((a, b) => {\n const aTopic = a.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n const bTopic = b.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n\n if (aTopic && topicsOrder[aTopic] === undefined) {\n topicsOrder[aTopic] = topics.length;\n topics.push(aTopic);\n }\n\n if (bTopic && topicsOrder[bTopic] === undefined) {\n topicsOrder[bTopic] = topics.length;\n topics.push(bTopic);\n }\n\n if (!aTopic || !bTopic) {\n return 0;\n }\n\n const aSortKey = `${topicsOrder[aTopic]}-${\n a.item_tags_map[QUESTION_TAGS.QUESTION_CODE]?.length ?? 0\n }`;\n const bSortKey = `${topicsOrder[bTopic]}-${\n b.item_tags_map[QUESTION_TAGS.QUESTION_CODE]?.length ?? 0\n }`;\n\n return aSortKey > bSortKey ? 1 : -1;\n })\n .map(question => {\n const topicOrder =\n topicsOrder[question.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] ?? ''] ?? 0;\n const questionCode = question.item_tags_map[QUESTION_TAGS.QUESTION_CODE] ?? '';\n\n return {\n ...question,\n item_display_number: topicOrder * 3 + questionCode.length,\n };\n });\n }\n\n return finalQuestions;\n};\n\ninterface IGetInitialQuestionId {\n (params: {\n questions: IWorksheetQuestion[];\n initialQuestion: IWorksheetBehavior['initialQuestion'];\n lastUnlockedQuestionIndex: number;\n initialResponseId?: string;\n initialItemIndex?: number;\n }): string;\n}\n\nconst getInitialQuestionId: IGetInitialQuestionId = ({\n questions,\n initialQuestion,\n initialResponseId,\n initialItemIndex,\n lastUnlockedQuestionIndex,\n}) => {\n const unlockedQuestions = questions.slice(0, lastUnlockedQuestionIndex + 1);\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex]!;\n\n if (initialResponseId && unlockedQuestions.find(q => q.response_id === initialResponseId)) {\n return initialResponseId;\n }\n\n if (\n typeof initialItemIndex === 'number' &&\n initialItemIndex <= lastUnlockedQuestion.item_number\n ) {\n const question = questions.find(q => q.item_number === initialItemIndex);\n\n if (question?.response_id) {\n return question.response_id;\n }\n }\n\n if (initialQuestion === 'FIRST' && questions[0]?.response_id) {\n return questions[0].response_id;\n }\n\n if (initialQuestion === 'CURRENT') {\n return lastUnlockedQuestion.response_id;\n }\n\n if (questions[0]?.response_id) {\n return questions[0].response_id;\n }\n\n throw new Error('Initial question not found');\n};\n\ninterface IGetLastUnlockedQuestionIndex {\n (options: {\n questions: IWorksheetQuestion[];\n responses: Record<string, IWorksheetResponse>;\n behavior: IWorksheetBehavior;\n userType: TUserTypes;\n }): number;\n}\n\nconst getLastUnlockedQuestionIndex: IGetLastUnlockedQuestionIndex = ({\n questions,\n responses,\n behavior,\n userType,\n}) => {\n const { maximumAttempts, teacherValidationEnabled, validation, navigationMode } = behavior;\n const questionIndex = [...questions].reverse().findIndex(q => {\n const qResp = responses[q.response_id];\n\n const { attemptsHistory, validatedByTeacher, assignStatus } = qResp ?? {};\n\n if (teacherValidationEnabled) {\n if (validatedByTeacher) {\n return true;\n }\n\n if (assignStatus === 'skipped') {\n return true;\n }\n\n return false;\n }\n\n const lastAttemptScore = attemptsHistory?.slice(-1)[0]?.score;\n\n if (lastAttemptScore) {\n if ((lastAttemptScore.score ?? 0) === lastAttemptScore.max_score) {\n return true;\n }\n\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n return maximumAttemptsReached;\n }\n\n if (!validation && navigationMode === 'LINEAR' && (qResp?.response || qResp?.skipped)) {\n return true;\n }\n\n return false;\n });\n\n if (questionIndex === -1) {\n return 0;\n }\n\n if (questionIndex === 0) {\n if (teacherValidationEnabled) {\n const unskippedQuestionIndex = [...questions].reverse().findIndex(q => {\n return responses[q.response_id]?.assignStatus !== 'skipped';\n });\n\n return questions.length - unskippedQuestionIndex - 1;\n }\n\n return questions.length - 1;\n }\n\n if (teacherValidationEnabled && userType === 'STUDENT') {\n const lastUnlockedQuestionIndex = questions.length - questionIndex;\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex]!;\n const { assignStatus } = responses[lastUnlockedQuestion.response_id] ?? {};\n\n if (lastUnlockedQuestion.is_optional && !assignStatus) {\n return lastUnlockedQuestionIndex - 1;\n }\n\n return lastUnlockedQuestionIndex;\n }\n\n return questions.length - questionIndex;\n};\n\ntype TQuestionMetadata = Pick<\n IWorksheetResponse,\n 'widgetReference' | 'itemReference' | 'itemPosition' | 'questionPosition' | 'isOkayTypeQuestion'\n>;\n\nfunction getQuestionMetadata(\n questions: IWorksheetQuestion[],\n questionId: string,\n): TQuestionMetadata;\nfunction getQuestionMetadata(question: IWorksheetQuestion): TQuestionMetadata;\nfunction getQuestionMetadata(\n questions: IWorksheetQuestion | IWorksheetQuestion[],\n questionId?: string,\n) {\n const question = Array.isArray(questions)\n ? questions.find(q => q.response_id === questionId)\n : questions;\n\n if (!question) {\n throw new Error(`Question with id ${questionId} not found`);\n }\n\n return {\n widgetReference: question.metadata.widget_reference,\n itemReference: question.item_reference,\n itemPosition: question.item_number,\n questionPosition: question.question_number,\n isOkayTypeQuestion: isOkayTypeQuestion(question),\n score: {\n max_score:\n question?.validation?.valid_response?.score ?? 0 * question.metadata.valid_response_count,\n },\n tags: {\n ...question.item_tags_map,\n instructor_stimulus: question.instructor_stimulus,\n },\n };\n}\n\ninterface IGetInitialResponses {\n (questions: IWorksheetQuestion[]): Record<string, IWorksheetResponse>;\n}\n\nconst getInitialResponses: IGetInitialResponses = questions => {\n return questions.reduce(\n (acc, question) => ({\n ...acc,\n [question.response_id]: getQuestionMetadata(questions, question.response_id),\n }),\n {},\n );\n};\n\ninterface IGetWorksheetDimensions {\n (\n items: ILearnosityItem[],\n layout: IWorksheetProps['layout'],\n ): {\n questionsContainerWidth: number;\n maxQuestionWidth: number;\n actionbarHeight: number;\n };\n}\n\nconst getWorksheetDimensions: IGetWorksheetDimensions = (items, layout) => {\n const { actionBar } = layout;\n const isSingleColumn = !items.some(item =>\n item.questions.some(question => question.stimulus_review),\n );\n const actionbarHeight = actionBar === 'bottom' ? ACTION_BAR_HEIGHT : 0;\n\n return {\n questionsContainerWidth: isSingleColumn ? QUESTION_WIDTH : SPLIT_QUESTION_WIDTH,\n maxQuestionWidth: QUESTION_WIDTH,\n actionbarHeight,\n };\n};\n\ninterface IGetRenderableQuestions {\n (options: {\n questions: IWorksheetQuestion[];\n lastUnlockedQuestionIndex: number;\n userType: TUserTypes;\n }): IWorksheetQuestion[];\n}\nconst getRenderableQuestions: IGetRenderableQuestions = ({\n questions,\n lastUnlockedQuestionIndex,\n userType,\n}) => {\n if (userType === 'STUDENT') return questions.slice(0, lastUnlockedQuestionIndex + 1);\n\n return questions;\n};\n\ninterface IScrollToQuestion {\n (questionId: string, params?: { animation?: boolean }): void;\n}\n\nconst scrollToQuestion: IScrollToQuestion = (questionId, { animation = false } = {}) => {\n const $questionEl = document.querySelectorAll(`.widget-${questionId}`)[0];\n\n if ($questionEl) {\n $questionEl.scrollIntoView({\n block: 'start',\n behavior: animation ? 'smooth' : 'instant',\n });\n }\n};\n\ninterface IIsOkayTypeQuestion {\n (question: IWorksheetQuestion | ILearnosityQuestion): boolean;\n}\n\nconst isOkayTypeQuestion: IIsOkayTypeQuestion = question => {\n const { type, options, instructor_stimulus } = question;\n const itemType = 'item_type' in question ? question.item_type : undefined;\n\n if (\n itemType === 'overview' ||\n instructor_stimulus === 'Intro' ||\n instructor_stimulus === 'SystemIntro' ||\n instructor_stimulus === 'Concept-Intro'\n ) {\n return true;\n }\n\n return type === 'mcq' && options?.length === 1 ? true : false;\n};\n\nconst setMathJaxConfigInWindow = (\n logger: (eventName: string, data?: Record<string, unknown>) => void,\n) => {\n window.MathJax = {\n options: {\n enableMenu: false,\n ignoreHtmlClass: 'lrn_noMath',\n compileError: function (doc, math, err) {\n logger(EVENTS.MATHJAX_COMPILE_ERROR);\n doc.compileError(math, err);\n },\n typesetError: function (doc, math, err) {\n logger(EVENTS.MATHJAX_TYPESET_ERROR);\n doc.typesetError(math, err);\n // throw new Error('typesetError');\n },\n },\n tex: {\n inlineMath: [\n ['\\\\(', '\\\\)'],\n ['$$', '$$'],\n ],\n displayMath: [['\\\\[', '\\\\]']],\n macros: {\n abs: ['{|#1|}', 1],\n degree: ['°'],\n longdiv: ['{\\\\enclose{longdiv}{#1}}', 1],\n atomic: ['{_{#1}^{#2}}', 2],\n polyatomic: ['{_{#2}{}^{#1}}', 2],\n circledot: ['{\\\\odot}'],\n parallelogram: ['\\\\unicode{x25B1}'],\n ngtr: ['\\\\unicode{x226F}'],\n nless: ['\\\\unicode{x226E}'],\n MathQuillVarField: ['#1', 1],\n overarc: ['{\\\\overparen{#1}}', 1],\n },\n formatError: (jax, err) => {\n logger(EVENTS.MATHJAX_FORMAT_ERROR, {\n id: err.id,\n message: err.message,\n });\n jax.formatError(err);\n },\n },\n chtml: {\n minScale: 1,\n matchFontHeight: false,\n },\n };\n};\n\ninterface IGetPaperColorByQuestion {\n (question: IWorksheetQuestion): TWorksheetQuestionPaperColor;\n}\n\nconst getPaperColorByQuestion: IGetPaperColorByQuestion = question => {\n const { item_type, instructor_stimulus } = question;\n const lowerCaseInstructorStimulus = instructor_stimulus?.toLowerCase();\n\n switch (item_type) {\n case 'overview':\n return 'white';\n case 'learning-we-do':\n case 'learning-your-turn':\n case 'learning-explore':\n if (\n lowerCaseInstructorStimulus === 'instruction' ||\n lowerCaseInstructorStimulus === 'intro' ||\n lowerCaseInstructorStimulus === 'concept-intro'\n ) {\n return 'blue';\n }\n\n if (lowerCaseInstructorStimulus === 'task') {\n return 'green';\n }\n\n return 'yellow';\n case 'practice-basic':\n case 'practice-regular':\n return 'yellow';\n case 'exit-ticket':\n return 'purple';\n case 'advanced-practice':\n return 'orange';\n default:\n if (lowerCaseInstructorStimulus === 'learn') return 'blue';\n\n if (lowerCaseInstructorStimulus === 'try' || lowerCaseInstructorStimulus === 'apply')\n return 'green';\n\n return 'yellow';\n }\n};\n\nconst getQuestionBackgroundImage = (paperColor: TWorksheetQuestionPaperColor) => {\n return `https://cuemath-intel.s3.ap-southeast-1.amazonaws.com/media/math-canvas/paper-${paperColor}.png`;\n};\n\nconst getQuestionBorderColor = (\n paperColor: TWorksheetQuestionPaperColor,\n isActive?: boolean,\n): TColorNames => {\n if (!isActive) {\n return 'GREY_3';\n }\n\n switch (paperColor) {\n case 'orange':\n case 'white':\n return 'ORANGE_2';\n case 'blue':\n return 'BLUE_2';\n case 'green':\n return 'GREEN_2';\n case 'yellow':\n return 'YELLOW_2';\n case 'purple':\n return 'PURPLE_2';\n default:\n return 'GREY_3';\n }\n};\n\nconst getNavigationSectionBackgroundColor = (sectionName?: TSectionName): TColorNames => {\n switch (sectionName) {\n case 'learning':\n return 'BLUE_1';\n case 'practice-basic':\n case 'practice-regular':\n return 'YELLOW_1';\n case 'exit-ticket':\n return 'PURPLE_1';\n case 'advanced':\n return 'ORANGE_1';\n default:\n return 'YELLOW_1';\n }\n};\n\nconst getNavigationSectionName = (sectionName?: TSectionName): string => {\n switch (sectionName) {\n case 'learning':\n return 'Learning';\n case 'practice-basic':\n return 'Basic practice';\n case 'practice-regular':\n return 'Regular practice';\n case 'exit-ticket':\n return 'Mini quiz';\n case 'advanced':\n return 'Advanced work';\n default:\n return '';\n }\n};\n\nconst getNavigationSectionIcon = (sectionName?: TSectionName) => {\n switch (sectionName) {\n case 'learning':\n return Bulb2Icon;\n case 'practice-basic':\n return Edit2Icon;\n case 'practice-regular':\n return EditStarIcon;\n case 'exit-ticket':\n return QuestionLetterIcon;\n case 'advanced':\n return Star2Icon;\n default:\n return Bulb2Icon;\n }\n};\n\nconst isSATAssessmentNode = (nodeType: NODE_TYPES) =>\n nodeType === 'SAT_ENGLISH_ASSESSMENT' || nodeType === 'SAT_MATH_ASSESSMENT';\n\nconst checkIsClozeFormulaResponseInvalid = (response: ILearnosityQuestionResponse) => {\n if (Array.isArray(response.value)) {\n const isInvalid = response.value.some(\n item => typeof item === 'string' && item.length > CLOZE_FORMULA_RESPONSE_LIMIT,\n );\n\n return isInvalid;\n }\n\n return false;\n};\n\nconst getWorksheetNudgeBannerInfo = (\n userType: TUserTypes,\n markedAsCompleted: boolean,\n): ISheetNudgeBannerInfo => {\n const isTeacher = userType === 'TEACHER';\n\n if (markedAsCompleted) {\n return {\n bannerBackgroundColor: 'GREEN_4',\n label: isTeacher\n ? 'This sheet was marked as completed.'\n : 'Marked as completed by the teacher',\n };\n }\n\n return {\n bannerBackgroundColor: 'ORANGE_2',\n label: 'Complete this with your tutor in class',\n };\n};\n\nconst getWorksheetHeaderLayout: IWorksheetHeaderLayoutProps = ({\n isPuzzleWorksheet,\n isTestWorksheet,\n imageHue = 'BLUE',\n}) => {\n if (isPuzzleWorksheet) {\n return {\n bgColor: `${imageHue}_3`,\n borderColor: `${imageHue}_4`,\n textColor: 'BLACK_T_87',\n };\n }\n\n if (isTestWorksheet) {\n return {\n bgColor: 'WHITE_3',\n borderColor: 'WHITE_4',\n textColor: 'BLACK_T_87',\n };\n }\n\n return {\n bgColor: 'BLACK',\n borderColor: 'BLACK_4',\n textColor: 'WHITE',\n };\n};\n\ninterface IGetPuzzleWorksheetBackgroundColor {\n (imageHue?: THueNames): TColorNames;\n}\n\nconst getPuzzleWorksheetBackgroundColor: IGetPuzzleWorksheetBackgroundColor = imageHue => {\n if (!imageHue) return 'BLUE_1';\n\n return `${imageHue}_1`;\n};\n\nexport {\n checkIsClozeFormulaResponseInvalid,\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getNavigationSectionBackgroundColor,\n getNavigationSectionIcon,\n getNavigationSectionName,\n getPaperColorByQuestion,\n getPuzzleWorksheetBackgroundColor,\n getQuestionBackgroundImage,\n getQuestionBorderColor,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetHeaderLayout,\n getWorksheetNudgeBannerInfo,\n isConceptIntroWidget,\n isOkayTypeQuestion,\n isSATAssessmentNode,\n scrollToQuestion,\n setMathJaxConfigInWindow,\n};\n"],"names":["getSectionNameFromItemType","itemType","isConceptIntroWidget","instructorStimulus","lowerCaseInstructorStimulus","getTagsMap","tags","acc","tag","key","value","trimmedKey","trimmedValue","getQuestionsFromItems","items","sectioned","adaptive","item","itemIndex","hasIntroWidget","content","questions","sectionName","prevItem","itemDisplayNumber","orderedQuestionIds","orderedQuestions","responseId","widgetIndex","question","respId","OPTIONAL_ITEM_TYPES","prevItemType","_a","itemTypeDerived","prevItemTypeDerived","finalQuestions","topics","topicsOrder","a","b","aTopic","QUESTION_TAGS","bTopic","aSortKey","bSortKey","_b","topicOrder","questionCode","getInitialQuestionId","initialQuestion","initialResponseId","initialItemIndex","lastUnlockedQuestionIndex","unlockedQuestions","lastUnlockedQuestion","q","getLastUnlockedQuestionIndex","responses","behavior","userType","maximumAttempts","teacherValidationEnabled","validation","navigationMode","questionIndex","qResp","attemptsHistory","validatedByTeacher","assignStatus","lastAttemptScore","unskippedQuestionIndex","getQuestionMetadata","questionId","isOkayTypeQuestion","getInitialResponses","getWorksheetDimensions","layout","actionBar","QUESTION_WIDTH","SPLIT_QUESTION_WIDTH","ACTION_BAR_HEIGHT","getRenderableQuestions","scrollToQuestion","animation","$questionEl","type","options","instructor_stimulus","setMathJaxConfigInWindow","logger","doc","math","err","EVENTS","jax","getPaperColorByQuestion","item_type","getQuestionBackgroundImage","paperColor","getQuestionBorderColor","isActive","getNavigationSectionBackgroundColor","getNavigationSectionName","getNavigationSectionIcon","Bulb2Icon","Edit2Icon","EditStarIcon","QuestionLetterIcon","Star2Icon","checkIsClozeFormulaResponseInvalid","response","CLOZE_FORMULA_RESPONSE_LIMIT","getWorksheetNudgeBannerInfo","markedAsCompleted","isTeacher","getWorksheetHeaderLayout","isPuzzleWorksheet","isTestWorksheet","imageHue","getPuzzleWorksheetBackgroundColor"],"mappings":"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"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { jsxs as v, jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { memo as x, useState as u, useRef as a, useCallback as A, useLayoutEffect as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import { memo as x, useState as u, useRef as a, useCallback as A, useLayoutEffect as E, useEffect as L } from "react";
|
|
3
|
+
import O from "../../../../../assets/line-icons/icons/left.js";
|
|
4
|
+
import _ from "../../../../../assets/line-icons/icons/right.js";
|
|
5
5
|
import h from "../../../../ui/buttons/clickable/clickable.js";
|
|
6
|
-
import
|
|
6
|
+
import y from "../../../../ui/layout/flex-view.js";
|
|
7
7
|
import { TOP_NAVIGATION_ARROW_WIDTH as g } from "../../constants.js";
|
|
8
|
-
import
|
|
9
|
-
import { Container as
|
|
10
|
-
const
|
|
8
|
+
import j from "../worksheet-item-number/worksheet-item-number.js";
|
|
9
|
+
import { Container as S, RightArrowWrapper as T, LeftArrowWrapper as V } from "../worksheet-navigation-styled.js";
|
|
10
|
+
const Y = x(
|
|
11
11
|
function(p) {
|
|
12
12
|
const {
|
|
13
13
|
items: d,
|
|
14
14
|
responses: b,
|
|
15
|
-
validation:
|
|
15
|
+
validation: I,
|
|
16
16
|
activeItemNumber: o,
|
|
17
|
-
peerItemNumber:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
peerItemNumber: W,
|
|
18
|
+
onItemNumberClick: k,
|
|
19
|
+
summaryVisible: w,
|
|
20
|
+
maximumAttempts: N
|
|
21
|
+
} = p, [i, C] = u(!1), [l, s] = u("left"), f = a(null), c = a(null), m = A(() => {
|
|
21
22
|
s((e) => e === "left" ? "right" : "left");
|
|
22
23
|
}, []);
|
|
23
|
-
return
|
|
24
|
+
return E(() => {
|
|
24
25
|
const e = f.current, r = c.current;
|
|
25
|
-
e && r && r.clientWidth > e.clientWidth &&
|
|
26
|
-
}, []),
|
|
26
|
+
e && r && r.clientWidth > e.clientWidth && C(!0);
|
|
27
|
+
}, []), L(() => {
|
|
27
28
|
const e = c.current;
|
|
28
29
|
if (o !== void 0 && i && e) {
|
|
29
30
|
const r = e.querySelector(`.worksheet-item-number-${o}`);
|
|
@@ -33,38 +34,39 @@ const U = x(
|
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
36
|
}, [o, i]), /* @__PURE__ */ v(
|
|
36
|
-
|
|
37
|
+
S,
|
|
37
38
|
{
|
|
38
39
|
ref: f,
|
|
39
40
|
$background: "YELLOW_1",
|
|
40
41
|
$alignItems: i ? `flex-${l === "left" ? "start" : "end"}` : "center",
|
|
41
42
|
children: [
|
|
42
|
-
/* @__PURE__ */ t(
|
|
43
|
+
/* @__PURE__ */ t(y, { ref: c, $gutterX: 1, $flexGapX: 1, $flexDirection: "row", children: d.map((e) => {
|
|
43
44
|
const {
|
|
44
45
|
firstQuestion: { response_id: r, item_number: n }
|
|
45
46
|
} = e;
|
|
46
47
|
return /* @__PURE__ */ t(
|
|
47
|
-
|
|
48
|
+
j,
|
|
48
49
|
{
|
|
49
50
|
item: e,
|
|
50
|
-
summaryVisible:
|
|
51
|
+
summaryVisible: w,
|
|
51
52
|
responses: b,
|
|
52
|
-
validation:
|
|
53
|
+
validation: I,
|
|
53
54
|
placement: "top",
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
onItemNumberClick: k,
|
|
56
|
+
canShowUserPin: n === W,
|
|
57
|
+
maximumAttempts: N
|
|
56
58
|
},
|
|
57
59
|
r
|
|
58
60
|
);
|
|
59
61
|
}) }),
|
|
60
|
-
i && l === "left" && /* @__PURE__ */ t(h, { label: "Worksheet Nav Right Arrow", onClick: m, children: /* @__PURE__ */ t(
|
|
61
|
-
i && l === "right" && /* @__PURE__ */ t(h, { label: "Worksheet Nav Left Arrow", onClick: m, children: /* @__PURE__ */ t(
|
|
62
|
+
i && l === "left" && /* @__PURE__ */ t(h, { label: "Worksheet Nav Right Arrow", onClick: m, children: /* @__PURE__ */ t(T, { $justifyContent: "center", children: /* @__PURE__ */ t(_, { width: 24, height: 24 }) }) }),
|
|
63
|
+
i && l === "right" && /* @__PURE__ */ t(h, { label: "Worksheet Nav Left Arrow", onClick: m, children: /* @__PURE__ */ t(V, { $justifyContent: "center", children: /* @__PURE__ */ t(O, { width: 24, height: 24 }) }) })
|
|
62
64
|
]
|
|
63
65
|
}
|
|
64
66
|
);
|
|
65
67
|
}
|
|
66
68
|
);
|
|
67
69
|
export {
|
|
68
|
-
|
|
70
|
+
Y as default
|
|
69
71
|
};
|
|
70
72
|
//# sourceMappingURL=worksheet-item-navigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet-item-navigation.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-navigation/worksheet-item-navigation/worksheet-item-navigation.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useLayoutEffect, useRef, useState, type FC } from 'react';\n\nimport LeftIcon from '../../../../../assets/line-icons/icons/left';\nimport RightIcon from '../../../../../assets/line-icons/icons/right';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport { TOP_NAVIGATION_ARROW_WIDTH } from '../../constants';\nimport WorksheetItemNumber from '../worksheet-item-number/worksheet-item-number';\nimport * as Styled from '../worksheet-navigation-styled';\nimport type { IWorksheetItemNavigationProps } from '../worksheet-navigation-types';\n\nconst WorksheetItemNavigation: FC<IWorksheetItemNavigationProps> = memo(\n function WorksheetItemNavigation(props) {\n const {\n items,\n responses,\n validation,\n activeItemNumber,\n peerItemNumber,\n summaryVisible,\n maximumAttempts,\n } = props;\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [visibleSection, setVisibleSection] = useState<'left' | 'right'>('left');\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n const toggleVisibleSection = useCallback(() => {\n setVisibleSection(prevVisibleSection => (prevVisibleSection === 'left' ? 'right' : 'left'));\n }, []);\n\n useLayoutEffect(() => {\n const containerEl = containerRef.current;\n const contentEl = contentRef.current;\n\n if (containerEl && contentEl) {\n if (contentEl.clientWidth > containerEl.clientWidth) {\n setIsOverflowing(true);\n }\n }\n }, []);\n\n useEffect(() => {\n const contentEl = contentRef.current;\n\n if (activeItemNumber !== undefined && isOverflowing && contentEl) {\n const itemNumberEl = contentEl.querySelector(`.worksheet-item-number-${activeItemNumber}`);\n\n if (itemNumberEl) {\n setVisibleSection(prevVisibleSection => {\n const { left, right } = itemNumberEl.getBoundingClientRect();\n\n if (\n prevVisibleSection === 'left' &&\n right + TOP_NAVIGATION_ARROW_WIDTH + 16 > contentEl.clientWidth\n ) {\n return 'right';\n }\n\n if (prevVisibleSection === 'right' && left - TOP_NAVIGATION_ARROW_WIDTH - 16 < 0) {\n return 'left';\n }\n\n return prevVisibleSection;\n });\n }\n }\n }, [activeItemNumber, isOverflowing]);\n\n return (\n <Styled.Container\n ref={containerRef}\n $background=\"YELLOW_1\"\n $alignItems={\n isOverflowing ? `flex-${visibleSection === 'left' ? 'start' : 'end'}` : 'center'\n }\n >\n <FlexView ref={contentRef} $gutterX={1} $flexGapX={1} $flexDirection=\"row\">\n {items.map(item => {\n const {\n firstQuestion: { response_id, item_number },\n } = item;\n\n return (\n <WorksheetItemNumber\n key={response_id}\n item={item}\n summaryVisible={summaryVisible}\n responses={responses}\n validation={validation}\n placement=\"top\"\n canShowUserPin={item_number === peerItemNumber}\n maximumAttempts={maximumAttempts}\n />\n );\n })}\n </FlexView>\n {isOverflowing && visibleSection === 'left' && (\n <Clickable label=\"Worksheet Nav Right Arrow\" onClick={toggleVisibleSection}>\n <Styled.RightArrowWrapper $justifyContent=\"center\">\n <RightIcon width={24} height={24} />\n </Styled.RightArrowWrapper>\n </Clickable>\n )}\n {isOverflowing && visibleSection === 'right' && (\n <Clickable label=\"Worksheet Nav Left Arrow\" onClick={toggleVisibleSection}>\n <Styled.LeftArrowWrapper $justifyContent=\"center\">\n <LeftIcon width={24} height={24} />\n </Styled.LeftArrowWrapper>\n </Clickable>\n )}\n </Styled.Container>\n );\n },\n);\n\nexport default WorksheetItemNavigation;\n"],"names":["WorksheetItemNavigation","memo","props","items","responses","validation","activeItemNumber","peerItemNumber","summaryVisible","maximumAttempts","isOverflowing","setIsOverflowing","useState","visibleSection","setVisibleSection","containerRef","useRef","contentRef","toggleVisibleSection","useCallback","prevVisibleSection","useLayoutEffect","containerEl","contentEl","useEffect","itemNumberEl","left","right","TOP_NAVIGATION_ARROW_WIDTH","jsxs","Styled.Container","jsx","FlexView","item","response_id","item_number","WorksheetItemNumber","Clickable","Styled.RightArrowWrapper","RightIcon","Styled.LeftArrowWrapper","LeftIcon"],"mappings":";;;;;;;;;AAWA,MAAMA,IAA6DC;AAAA,EACjE,SAAiCC,GAAO;AAChC,UAAA;AAAA,MACJ,OAAAC;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,iBAAAC;AAAA,IACE,
|
|
1
|
+
{"version":3,"file":"worksheet-item-navigation.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-navigation/worksheet-item-navigation/worksheet-item-navigation.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useLayoutEffect, useRef, useState, type FC } from 'react';\n\nimport LeftIcon from '../../../../../assets/line-icons/icons/left';\nimport RightIcon from '../../../../../assets/line-icons/icons/right';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport { TOP_NAVIGATION_ARROW_WIDTH } from '../../constants';\nimport WorksheetItemNumber from '../worksheet-item-number/worksheet-item-number';\nimport * as Styled from '../worksheet-navigation-styled';\nimport type { IWorksheetItemNavigationProps } from '../worksheet-navigation-types';\n\nconst WorksheetItemNavigation: FC<IWorksheetItemNavigationProps> = memo(\n function WorksheetItemNavigation(props) {\n const {\n items,\n responses,\n validation,\n activeItemNumber,\n peerItemNumber,\n onItemNumberClick,\n summaryVisible,\n maximumAttempts,\n } = props;\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [visibleSection, setVisibleSection] = useState<'left' | 'right'>('left');\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n const toggleVisibleSection = useCallback(() => {\n setVisibleSection(prevVisibleSection => (prevVisibleSection === 'left' ? 'right' : 'left'));\n }, []);\n\n useLayoutEffect(() => {\n const containerEl = containerRef.current;\n const contentEl = contentRef.current;\n\n if (containerEl && contentEl) {\n if (contentEl.clientWidth > containerEl.clientWidth) {\n setIsOverflowing(true);\n }\n }\n }, []);\n\n useEffect(() => {\n const contentEl = contentRef.current;\n\n if (activeItemNumber !== undefined && isOverflowing && contentEl) {\n const itemNumberEl = contentEl.querySelector(`.worksheet-item-number-${activeItemNumber}`);\n\n if (itemNumberEl) {\n setVisibleSection(prevVisibleSection => {\n const { left, right } = itemNumberEl.getBoundingClientRect();\n\n if (\n prevVisibleSection === 'left' &&\n right + TOP_NAVIGATION_ARROW_WIDTH + 16 > contentEl.clientWidth\n ) {\n return 'right';\n }\n\n if (prevVisibleSection === 'right' && left - TOP_NAVIGATION_ARROW_WIDTH - 16 < 0) {\n return 'left';\n }\n\n return prevVisibleSection;\n });\n }\n }\n }, [activeItemNumber, isOverflowing]);\n\n return (\n <Styled.Container\n ref={containerRef}\n $background=\"YELLOW_1\"\n $alignItems={\n isOverflowing ? `flex-${visibleSection === 'left' ? 'start' : 'end'}` : 'center'\n }\n >\n <FlexView ref={contentRef} $gutterX={1} $flexGapX={1} $flexDirection=\"row\">\n {items.map(item => {\n const {\n firstQuestion: { response_id, item_number },\n } = item;\n\n return (\n <WorksheetItemNumber\n key={response_id}\n item={item}\n summaryVisible={summaryVisible}\n responses={responses}\n validation={validation}\n placement=\"top\"\n onItemNumberClick={onItemNumberClick}\n canShowUserPin={item_number === peerItemNumber}\n maximumAttempts={maximumAttempts}\n />\n );\n })}\n </FlexView>\n {isOverflowing && visibleSection === 'left' && (\n <Clickable label=\"Worksheet Nav Right Arrow\" onClick={toggleVisibleSection}>\n <Styled.RightArrowWrapper $justifyContent=\"center\">\n <RightIcon width={24} height={24} />\n </Styled.RightArrowWrapper>\n </Clickable>\n )}\n {isOverflowing && visibleSection === 'right' && (\n <Clickable label=\"Worksheet Nav Left Arrow\" onClick={toggleVisibleSection}>\n <Styled.LeftArrowWrapper $justifyContent=\"center\">\n <LeftIcon width={24} height={24} />\n </Styled.LeftArrowWrapper>\n </Clickable>\n )}\n </Styled.Container>\n );\n },\n);\n\nexport default WorksheetItemNavigation;\n"],"names":["WorksheetItemNavigation","memo","props","items","responses","validation","activeItemNumber","peerItemNumber","onItemNumberClick","summaryVisible","maximumAttempts","isOverflowing","setIsOverflowing","useState","visibleSection","setVisibleSection","containerRef","useRef","contentRef","toggleVisibleSection","useCallback","prevVisibleSection","useLayoutEffect","containerEl","contentEl","useEffect","itemNumberEl","left","right","TOP_NAVIGATION_ARROW_WIDTH","jsxs","Styled.Container","jsx","FlexView","item","response_id","item_number","WorksheetItemNumber","Clickable","Styled.RightArrowWrapper","RightIcon","Styled.LeftArrowWrapper","LeftIcon"],"mappings":";;;;;;;;;AAWA,MAAMA,IAA6DC;AAAA,EACjE,SAAiCC,GAAO;AAChC,UAAA;AAAA,MACJ,OAAAC;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,iBAAAC;AAAA,IACE,IAAAR,GACE,CAACS,GAAeC,CAAgB,IAAIC,EAAS,EAAK,GAClD,CAACC,GAAgBC,CAAiB,IAAIF,EAA2B,MAAM,GACvEG,IAAeC,EAAuB,IAAI,GAC1CC,IAAaD,EAAuB,IAAI,GAExCE,IAAuBC,EAAY,MAAM;AAC7C,MAAAL,EAAkB,CAAuBM,MAAAA,MAAuB,SAAS,UAAU,MAAO;AAAA,IAC5F,GAAG,CAAE,CAAA;AAEL,WAAAC,EAAgB,MAAM;AACpB,YAAMC,IAAcP,EAAa,SAC3BQ,IAAYN,EAAW;AAE7B,MAAIK,KAAeC,KACbA,EAAU,cAAcD,EAAY,eACtCX,EAAiB,EAAI;AAAA,IAG3B,GAAG,CAAE,CAAA,GAELa,EAAU,MAAM;AACd,YAAMD,IAAYN,EAAW;AAEzB,UAAAZ,MAAqB,UAAaK,KAAiBa,GAAW;AAChE,cAAME,IAAeF,EAAU,cAAc,0BAA0BlB,CAAgB,EAAE;AAEzF,QAAIoB,KACFX,EAAkB,CAAsBM,MAAA;AACtC,gBAAM,EAAE,MAAAM,GAAM,OAAAC,EAAM,IAAIF,EAAa,sBAAsB;AAE3D,iBACEL,MAAuB,UACvBO,IAAQC,IAA6B,KAAKL,EAAU,cAE7C,UAGLH,MAAuB,WAAWM,IAAOE,IAA6B,KAAK,IACtE,SAGFR;AAAA,QAAA,CACR;AAAA,MAEL;AAAA,IAAA,GACC,CAACf,GAAkBK,CAAa,CAAC,GAGlC,gBAAAmB;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,KAAKf;AAAA,QACL,aAAY;AAAA,QACZ,aACEL,IAAgB,QAAQG,MAAmB,SAAS,UAAU,KAAK,KAAK;AAAA,QAG1E,UAAA;AAAA,UAAC,gBAAAkB,EAAAC,GAAA,EAAS,KAAKf,GAAY,UAAU,GAAG,WAAW,GAAG,gBAAe,OAClE,UAAMf,EAAA,IAAI,CAAQ+B,MAAA;AACX,kBAAA;AAAA,cACJ,eAAe,EAAE,aAAAC,GAAa,aAAAC,EAAY;AAAA,YACxC,IAAAF;AAGF,mBAAA,gBAAAF;AAAA,cAACK;AAAA,cAAA;AAAA,gBAEC,MAAAH;AAAA,gBACA,gBAAAzB;AAAA,gBACA,WAAAL;AAAA,gBACA,YAAAC;AAAA,gBACA,WAAU;AAAA,gBACV,mBAAAG;AAAA,gBACA,gBAAgB4B,MAAgB7B;AAAA,gBAChC,iBAAAG;AAAA,cAAA;AAAA,cARKyB;AAAA,YAAA;AAAA,UAWV,CAAA,GACH;AAAA,UACCxB,KAAiBG,MAAmB,UACnC,gBAAAkB,EAACM,KAAU,OAAM,6BAA4B,SAASnB,GACpD,UAAC,gBAAAa,EAAAO,GAAA,EAAyB,iBAAgB,UACxC,UAAC,gBAAAP,EAAAQ,GAAA,EAAU,OAAO,IAAI,QAAQ,IAAI,EAAA,CACpC,EACF,CAAA;AAAA,UAED7B,KAAiBG,MAAmB,WACnC,gBAAAkB,EAACM,KAAU,OAAM,4BAA2B,SAASnB,GACnD,UAAC,gBAAAa,EAAAS,GAAA,EAAwB,iBAAgB,UACvC,UAAC,gBAAAT,EAAAU,GAAA,EAAS,OAAO,IAAI,QAAQ,IAAI,EAAA,CACnC,EACF,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;"}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { jsx as r, jsxs as
|
|
2
|
-
import { memo as G, useMemo as
|
|
3
|
-
import { ILLUSTRATIONS as
|
|
1
|
+
import { jsx as r, jsxs as S } from "react/jsx-runtime";
|
|
2
|
+
import { memo as G, useMemo as N, useCallback as H } from "react";
|
|
3
|
+
import { ILLUSTRATIONS as f } from "../../../../../assets/illustrations/illustrations.js";
|
|
4
4
|
import L from "../../../../../assets/line-icons/icons/bookmark.js";
|
|
5
5
|
import P from "../../../../ui/buttons/clickable/clickable.js";
|
|
6
6
|
import K from "../../../../ui/layout/flex-view.js";
|
|
7
7
|
import q from "../../../../ui/text/text.js";
|
|
8
8
|
import { TOP_NAVIGATION_HEIGHT as M } from "../../constants.js";
|
|
9
|
-
import { ItemNumberWrapper as z, BookmarkWrapper as D, UserPin as J, ItemStatus as
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
item: _,
|
|
9
|
+
import { ItemNumberWrapper as z, BookmarkWrapper as D, UserPin as J, ItemStatus as _, OptionalTag as V } from "./worksheet-item-number-styled.js";
|
|
10
|
+
const ce = G(function({
|
|
11
|
+
placement: a,
|
|
12
|
+
item: C,
|
|
14
13
|
isOptional: R,
|
|
15
|
-
responses:
|
|
14
|
+
responses: k,
|
|
16
15
|
validation: o,
|
|
16
|
+
onItemNumberClick: Q,
|
|
17
17
|
canShowUserPin: A,
|
|
18
|
-
teacherValidationEnabled:
|
|
19
|
-
summaryVisible:
|
|
20
|
-
maximumAttempts:
|
|
18
|
+
teacherValidationEnabled: I,
|
|
19
|
+
summaryVisible: c,
|
|
20
|
+
maximumAttempts: w
|
|
21
21
|
}) {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
22
|
+
const { firstQuestion: d, isActive: m, isUnlocked: u, questionIds: l } = C, { item_number: x, item_display_number: F } = d, { itemState: s, markedForReview: v } = N(() => {
|
|
23
|
+
const h = l.length;
|
|
24
24
|
let i = "unanswered";
|
|
25
25
|
const {
|
|
26
|
-
correctQuestions:
|
|
27
|
-
incorrectQuestions:
|
|
28
|
-
editedQuestions:
|
|
29
|
-
markedForReviewQuestions:
|
|
30
|
-
skippedQuestions:
|
|
31
|
-
} =
|
|
32
|
-
(e,
|
|
33
|
-
const
|
|
34
|
-
if (!
|
|
26
|
+
correctQuestions: p,
|
|
27
|
+
incorrectQuestions: E,
|
|
28
|
+
editedQuestions: O,
|
|
29
|
+
markedForReviewQuestions: U,
|
|
30
|
+
skippedQuestions: W
|
|
31
|
+
} = l.reduce(
|
|
32
|
+
(e, j) => {
|
|
33
|
+
const n = k[j];
|
|
34
|
+
if (!n)
|
|
35
35
|
return e;
|
|
36
|
-
const { responseEdited: b, score: t, validatedByTeacher:
|
|
37
|
-
return o ? b &&
|
|
36
|
+
const { responseEdited: b, score: t, validatedByTeacher: B } = n, T = t && "score" in t && "max_score" in t, $ = (t == null ? void 0 : t.score) === (t == null ? void 0 : t.max_score);
|
|
37
|
+
return o ? b && w !== -1 ? e.editedQuestions++ : I && B ? e.correctQuestions++ : T && e[$ ? "correctQuestions" : "incorrectQuestions"]++ : b && e.editedQuestions++, n.markedForReview && e.markedForReviewQuestions++, n.skipped && e.skippedQuestions++, e;
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
correctQuestions: 0,
|
|
@@ -44,46 +44,46 @@ const de = G(function({
|
|
|
44
44
|
skippedQuestions: 0
|
|
45
45
|
}
|
|
46
46
|
);
|
|
47
|
-
return
|
|
47
|
+
return O > 0 ? i = "answered" : W > 0 ? i = "skipped" : E > 0 ? i = o ? "incorrect" : "answered" : p === h ? i = o ? "correct" : "answered" : p > 0 && p < h && (i = "answered"), {
|
|
48
48
|
itemState: i,
|
|
49
|
-
markedForReview:
|
|
49
|
+
markedForReview: U > 0
|
|
50
50
|
};
|
|
51
|
-
}, [
|
|
52
|
-
|
|
53
|
-
}, [d.response_id,
|
|
54
|
-
() => (!
|
|
55
|
-
[
|
|
51
|
+
}, [w, l, k, I, o]), y = H(() => {
|
|
52
|
+
Q(d.response_id);
|
|
53
|
+
}, [d.response_id, Q]), g = N(
|
|
54
|
+
() => (!m || c) && s === "answered" ? "WHITE" : "BLACK",
|
|
55
|
+
[m, s, c]
|
|
56
56
|
);
|
|
57
|
-
return /* @__PURE__ */ r(P, { label: "Item Number", disabled: !
|
|
57
|
+
return /* @__PURE__ */ r(P, { label: "Item Number", disabled: !u, onClick: y, children: /* @__PURE__ */ r(K, { $height: M, $justifyContent: "center", children: /* @__PURE__ */ S(
|
|
58
58
|
z,
|
|
59
59
|
{
|
|
60
|
-
className: `worksheet-item-number-${
|
|
61
|
-
$itemState:
|
|
62
|
-
$isActive:
|
|
63
|
-
$placement:
|
|
60
|
+
className: `worksheet-item-number-${x}`,
|
|
61
|
+
$itemState: u ? s : "disabled",
|
|
62
|
+
$isActive: m,
|
|
63
|
+
$placement: a,
|
|
64
64
|
$alignItems: "center",
|
|
65
65
|
$justifyContent: "center",
|
|
66
|
-
$summaryVisible:
|
|
66
|
+
$summaryVisible: c,
|
|
67
67
|
children: [
|
|
68
68
|
/* @__PURE__ */ r(
|
|
69
69
|
q,
|
|
70
70
|
{
|
|
71
|
-
$renderAs:
|
|
72
|
-
$color:
|
|
73
|
-
$opacity:
|
|
74
|
-
children:
|
|
71
|
+
$renderAs: a === "top" ? "body3" : "body1",
|
|
72
|
+
$color: g,
|
|
73
|
+
$opacity: u ? 1 : 0.5,
|
|
74
|
+
children: F
|
|
75
75
|
}
|
|
76
76
|
),
|
|
77
|
-
|
|
78
|
-
A && /* @__PURE__ */ r(J, { width: 20, height: 20, src:
|
|
79
|
-
s === "correct" && /* @__PURE__ */ r(
|
|
80
|
-
["incorrect", "skipped"].includes(s) && /* @__PURE__ */ r(
|
|
77
|
+
v && /* @__PURE__ */ r(D, { children: /* @__PURE__ */ r(L, {}) }),
|
|
78
|
+
A && /* @__PURE__ */ r(J, { width: 20, height: 20, src: f.USER_PIN }),
|
|
79
|
+
s === "correct" && /* @__PURE__ */ r(_, { src: f.TICK_GREEN }),
|
|
80
|
+
["incorrect", "skipped"].includes(s) && /* @__PURE__ */ r(_, { src: f.CAUTION }),
|
|
81
81
|
s === "unanswered" && R && /* @__PURE__ */ r(V, {})
|
|
82
82
|
]
|
|
83
83
|
}
|
|
84
84
|
) }) });
|
|
85
85
|
});
|
|
86
86
|
export {
|
|
87
|
-
|
|
87
|
+
ce as default
|
|
88
88
|
};
|
|
89
89
|
//# sourceMappingURL=worksheet-item-number.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet-item-number.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-navigation/worksheet-item-number/worksheet-item-number.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, type FC } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport BookmarkIcon from '../../../../../assets/line-icons/icons/bookmark';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { TOP_NAVIGATION_HEIGHT } from '../../constants';\nimport * as Styled from './worksheet-item-number-styled';\nimport type { IWorksheetItemNumberProps, TItemState } from './worksheet-item-number-types';\
|
|
1
|
+
{"version":3,"file":"worksheet-item-number.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-navigation/worksheet-item-number/worksheet-item-number.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, type FC } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport BookmarkIcon from '../../../../../assets/line-icons/icons/bookmark';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { TOP_NAVIGATION_HEIGHT } from '../../constants';\nimport * as Styled from './worksheet-item-number-styled';\nimport type { IWorksheetItemNumberProps, TItemState } from './worksheet-item-number-types';\n\nconst WorksheetItemNumber: FC<IWorksheetItemNumberProps> = memo(function WorksheetItemNumber({\n placement,\n item,\n isOptional,\n responses,\n validation,\n onItemNumberClick,\n canShowUserPin,\n teacherValidationEnabled,\n summaryVisible,\n maximumAttempts,\n}) {\n const { firstQuestion, isActive, isUnlocked, questionIds } = item;\n const { item_number, item_display_number } = firstQuestion;\n const { itemState, markedForReview }: { itemState: TItemState; markedForReview: boolean } =\n useMemo(() => {\n const totalQuestion = questionIds.length;\n let state: TItemState = 'unanswered';\n const {\n correctQuestions,\n incorrectQuestions,\n editedQuestions,\n markedForReviewQuestions,\n skippedQuestions,\n } = questionIds.reduce(\n (acc, questionId) => {\n const response = responses[questionId];\n\n if (!response) {\n return acc;\n }\n\n const { responseEdited, score: responseScore, validatedByTeacher } = response;\n const isAttempted =\n responseScore && 'score' in responseScore && 'max_score' in responseScore;\n const isCorrect = responseScore?.score === responseScore?.max_score;\n\n if (validation) {\n if (responseEdited && maximumAttempts !== -1) {\n acc.editedQuestions++;\n } else if (teacherValidationEnabled) {\n if (validatedByTeacher) acc.correctQuestions++;\n else if (isAttempted) {\n acc[isCorrect ? 'correctQuestions' : 'incorrectQuestions']++;\n }\n } else if (isAttempted) {\n acc[isCorrect ? 'correctQuestions' : 'incorrectQuestions']++;\n }\n } else {\n if (responseEdited) {\n acc.editedQuestions++;\n }\n }\n\n if (response.markedForReview) acc.markedForReviewQuestions++;\n\n if (response.skipped) acc.skippedQuestions++;\n\n return acc;\n },\n {\n correctQuestions: 0,\n incorrectQuestions: 0,\n editedQuestions: 0,\n markedForReviewQuestions: 0,\n skippedQuestions: 0,\n },\n );\n\n if (editedQuestions > 0) state = 'answered';\n else if (skippedQuestions > 0) state = 'skipped';\n else if (incorrectQuestions > 0) state = validation ? 'incorrect' : 'answered';\n else if (correctQuestions === totalQuestion) state = validation ? 'correct' : 'answered';\n else if (correctQuestions > 0 && correctQuestions < totalQuestion) state = 'answered';\n\n return {\n itemState: state,\n markedForReview: markedForReviewQuestions > 0,\n };\n }, [maximumAttempts, questionIds, responses, teacherValidationEnabled, validation]);\n\n const handleItemNumberClick = useCallback(() => {\n onItemNumberClick(firstQuestion.response_id);\n }, [firstQuestion.response_id, onItemNumberClick]);\n\n const itemTextColor = useMemo(\n () => ((!isActive || summaryVisible) && itemState === 'answered' ? 'WHITE' : 'BLACK'),\n [isActive, itemState, summaryVisible],\n );\n\n return (\n <Clickable label=\"Item Number\" disabled={!isUnlocked} onClick={handleItemNumberClick}>\n <FlexView $height={TOP_NAVIGATION_HEIGHT} $justifyContent=\"center\">\n <Styled.ItemNumberWrapper\n className={`worksheet-item-number-${item_number}`}\n $itemState={isUnlocked ? itemState : 'disabled'}\n $isActive={isActive}\n $placement={placement}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $summaryVisible={summaryVisible}\n >\n <Text\n $renderAs={placement === 'top' ? 'body3' : 'body1'}\n $color={itemTextColor}\n $opacity={isUnlocked ? 1 : 0.5}\n >\n {item_display_number}\n </Text>\n {markedForReview && (\n <Styled.BookmarkWrapper>\n <BookmarkIcon />\n </Styled.BookmarkWrapper>\n )}\n {canShowUserPin && <Styled.UserPin width={20} height={20} src={ILLUSTRATIONS.USER_PIN} />}\n {itemState === 'correct' && <Styled.ItemStatus src={ILLUSTRATIONS.TICK_GREEN} />}\n {['incorrect', 'skipped'].includes(itemState) && (\n <Styled.ItemStatus src={ILLUSTRATIONS.CAUTION} />\n )}\n {itemState === 'unanswered' && isOptional && <Styled.OptionalTag />}\n </Styled.ItemNumberWrapper>\n </FlexView>\n </Clickable>\n );\n});\n\nexport default WorksheetItemNumber;\n"],"names":["WorksheetItemNumber","memo","placement","item","isOptional","responses","validation","onItemNumberClick","canShowUserPin","teacherValidationEnabled","summaryVisible","maximumAttempts","firstQuestion","isActive","isUnlocked","questionIds","item_number","item_display_number","itemState","markedForReview","useMemo","totalQuestion","state","correctQuestions","incorrectQuestions","editedQuestions","markedForReviewQuestions","skippedQuestions","acc","questionId","response","responseEdited","responseScore","validatedByTeacher","isAttempted","isCorrect","handleItemNumberClick","useCallback","itemTextColor","jsx","Clickable","FlexView","TOP_NAVIGATION_HEIGHT","jsxs","Styled.ItemNumberWrapper","Text","Styled.BookmarkWrapper","BookmarkIcon","Styled.UserPin","ILLUSTRATIONS","Styled.ItemStatus","Styled.OptionalTag"],"mappings":"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"}
|