@cuemath/leap 3.5.46 → 3.5.47-gg10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/line-icons/icons/bulb.js +10 -10
- package/dist/assets/line-icons/icons/bulb.js.map +1 -1
- package/dist/assets/line-icons/icons/chevron-up.js +28 -0
- package/dist/assets/line-icons/icons/chevron-up.js.map +1 -0
- package/dist/assets/line-icons/icons/close.js +28 -0
- package/dist/assets/line-icons/icons/close.js.map +1 -0
- package/dist/assets/line-icons/icons/cursor2.js +24 -0
- package/dist/assets/line-icons/icons/cursor2.js.map +1 -0
- package/dist/assets/line-icons/icons/hand.js.map +1 -1
- package/dist/assets/line-icons/icons/hints.js +25 -0
- package/dist/assets/line-icons/icons/hints.js.map +1 -0
- package/dist/assets/line-icons/icons/question-feedback.js +30 -0
- package/dist/assets/line-icons/icons/question-feedback.js.map +1 -0
- package/dist/assets/line-icons/icons/scribble.js +13 -36
- package/dist/assets/line-icons/icons/scribble.js.map +1 -1
- package/dist/assets/line-icons/icons/sticker.js +9 -9
- package/dist/assets/line-icons/icons/sticker.js.map +1 -1
- package/dist/assets/line-icons/icons/teaching-tools.js +40 -0
- package/dist/assets/line-icons/icons/teaching-tools.js.map +1 -0
- package/dist/assets/line-icons/icons/tval-question.js +32 -0
- package/dist/assets/line-icons/icons/tval-question.js.map +1 -0
- package/dist/features/circle-games/hooks/use-circle-sounds/constants.js +4 -7
- package/dist/features/circle-games/hooks/use-circle-sounds/constants.js.map +1 -1
- package/dist/features/circle-games/hooks/use-circle-sounds/helper.js +19 -0
- package/dist/features/circle-games/hooks/use-circle-sounds/helper.js.map +1 -0
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +110 -51
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
- package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +1 -1
- package/dist/features/hooks/use-audio-player.js +54 -0
- package/dist/features/hooks/use-audio-player.js.map +1 -0
- package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +6 -6
- package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
- package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js +2 -2
- package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js.map +1 -1
- package/dist/features/journey/mocks/chapter-page-journey-mock-data.js +64 -29
- package/dist/features/journey/mocks/chapter-page-journey-mock-data.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +9 -9
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
- package/dist/features/puzzles/app/puzzle-app-view.js +40 -40
- package/dist/features/puzzles/app/puzzle-app-view.js.map +1 -1
- package/dist/features/ui/tabs/tabs.js +15 -15
- package/dist/features/ui/tabs/tabs.js.map +1 -1
- package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js +0 -1
- package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js.map +1 -1
- package/dist/features/worksheet/worksheet/constants.js +12 -13
- package/dist/features/worksheet/worksheet/constants.js.map +1 -1
- package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js +120 -101
- package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js.map +1 -1
- package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js +1 -1
- package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +40 -109
- package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +49 -46
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js +4 -4
- package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-helpers.js +127 -274
- package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +25 -25
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-provider.js +1 -1
- package/dist/features/worksheet/worksheet/worksheet-provider.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js +17 -22
- package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +25 -29
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +319 -259
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-allow-retry-button-click.js +15 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-allow-retry-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-back-button-click.js +18 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-back-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-check-button-click.js +21 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-check-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-next-button-click.js +19 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-next-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-ready-button-click.js +34 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-ready-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-response-change.js +38 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-response-change.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-retry-button-click.js +16 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-retry-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-button-click.js +35 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-section-button-click.js +12 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-section-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-start-button-click.js +44 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-start-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-submit-quiz.js +51 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-submit-quiz.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-validate-button-click.js +19 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-validate-button-click.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-play-validation-audio.js +23 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-play-validation-audio.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-validate-question.js +36 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-validate-question.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3.js +184 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js +258 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller.js +180 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3.js +77 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3_1.js +103 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3_1.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller.js +21 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller-view.js +22 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller-view.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +20 -345
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js +49 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js +184 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js +65 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js +9 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js +38 -0
- package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js +33 -20
- package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js +73 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.js +20 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-attemptable-question-index.js +69 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-attemptable-question-index.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-unlocked-question-index.js +18 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-unlocked-question-index.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-merged-response-state.js +19 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-merged-response-state.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js +138 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-renderable-questions.js +9 -0
- package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-renderable-questions.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-store/worksheet-store.js +230 -0
- package/dist/features/worksheet/worksheet/worksheet-store/worksheet-store.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-styled.js +29 -83
- package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js +45 -24
- package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js +19 -0
- package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js +66 -0
- package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js.map +1 -0
- package/dist/features/worksheet/worksheet/worksheet-types.js +3 -2
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-view.js +89 -100
- package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +126 -117
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +29 -29
- package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +16 -16
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +24 -24
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/index.d.ts +67 -28
- package/dist/index.js +760 -745
- package/dist/index.js.map +1 -1
- package/dist/types/models/worksheet.js +2 -1
- package/dist/types/models/worksheet.js.map +1 -1
- package/package.json +2 -2
- package/dist/features/hooks/use-audio-player/use-audio-player.js +0 -164
- package/dist/features/hooks/use-audio-player/use-audio-player.js.map +0 -1
- package/dist/features/worksheet/worksheet/question-tips.js +0 -100
- package/dist/features/worksheet/worksheet/question-tips.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js +0 -53
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js +0 -195
- package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +0 -112
- package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +0 -61
- package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js +0 -91
- package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +0 -1
- package/dist/features/worksheet/worksheet/worksheet-store.js +0 -289
- package/dist/features/worksheet/worksheet/worksheet-store.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
var R = /* @__PURE__ */ ((A) => (A.LEGACY = "LEGACY", A.LEARNING = "LEARNING", A.REMEDIAL = "REMEDIAL", A.GENERAL = "GENERAL", A.SAT_MATH_RECAP = "SAT_MATH_RECAP", A.SAT_MATH_LEARNING = "SAT_MATH_LEARNING", A.SAT_MATH_ASSESSMENT = "SAT_MATH_ASSESSMENT", A.SAT_ENGLISH_RECAP = "SAT_ENGLISH_RECAP", A.SAT_ENGLISH_LEARNING = "SAT_ENGLISH_LEARNING", A.SAT_ENGLISH_ASSESSMENT = "SAT_ENGLISH_ASSESSMENT", A.LEVEL3 = "LEVEL3", A.RECAP = "RECAP", A.REVISION = "REVISION", A.LEVEL2 = "LEVEL2", A.TARGET_PRACTICE = "TARGET_PRACTICE", A.PRACTICE = "PRACTICE", A.EXTRA_PRACTICE = "EXTRA_PRACTICE", A.PUZZLE_EASY = "PUZZLE_EASY", A.PUZZLE_MEDIUM = "PUZZLE_MEDIUM", A.PUZZLE_HARD = "PUZZLE_HARD", A.CHAPTER_ASSESSMENT = "CHAPTER_ASSESSMENT", A.ASSESSMENT = "ASSESSMENT", A.TRIAL_DIAGNOSTIC = "TRIAL_DIAGNOSTIC", A.TRIAL_BASIC = "TRIAL_BASIC", A.TRIAL_INTERMEDIATE = "TRIAL_INTERMEDIATE", A.TRIAL_ADVANCED = "TRIAL_ADVANCED", A.MASTERY = "MASTERY", A.PUZZLE_CARD = "PUZZLE_CARD", A))(R || {});
|
|
1
|
+
var R = /* @__PURE__ */ ((A) => (A.LEGACY = "LEGACY", A.LEARNING = "LEARNING", A.REMEDIAL = "REMEDIAL", A.GENERAL = "GENERAL", A.SAT_MATH_RECAP = "SAT_MATH_RECAP", A.SAT_MATH_LEARNING = "SAT_MATH_LEARNING", A.SAT_MATH_ASSESSMENT = "SAT_MATH_ASSESSMENT", A.SAT_ENGLISH_RECAP = "SAT_ENGLISH_RECAP", A.SAT_ENGLISH_LEARNING = "SAT_ENGLISH_LEARNING", A.SAT_ENGLISH_ASSESSMENT = "SAT_ENGLISH_ASSESSMENT", A.LEVEL3 = "LEVEL3", A.RECAP = "RECAP", A.REVISION = "REVISION", A.LEVEL2 = "LEVEL2", A.TARGET_PRACTICE = "TARGET_PRACTICE", A.PRACTICE = "PRACTICE", A.EXTRA_PRACTICE = "EXTRA_PRACTICE", A.PUZZLE_EASY = "PUZZLE_EASY", A.PUZZLE_MEDIUM = "PUZZLE_MEDIUM", A.PUZZLE_HARD = "PUZZLE_HARD", A.CHAPTER_ASSESSMENT = "CHAPTER_ASSESSMENT", A.ASSESSMENT = "ASSESSMENT", A.TRIAL_DIAGNOSTIC = "TRIAL_DIAGNOSTIC", A.TRIAL_BASIC = "TRIAL_BASIC", A.TRIAL_INTERMEDIATE = "TRIAL_INTERMEDIATE", A.TRIAL_ADVANCED = "TRIAL_ADVANCED", A.MASTERY = "MASTERY", A.PUZZLE_CARD = "PUZZLE_CARD", A))(R || {}), I = /* @__PURE__ */ ((A) => (A.LESSON_V3 = "lesson-v3", A.LESSON_V3_1 = "lesson-v3.1", A))(I || {});
|
|
2
2
|
export {
|
|
3
|
+
I as EWorksheetActivity,
|
|
3
4
|
R as NODE_TYPES
|
|
4
5
|
};
|
|
5
6
|
//# sourceMappingURL=worksheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet.js","sources":["../../../src/types/models/worksheet.ts"],"sourcesContent":["import type { IChannelMessage } from '@cuemath/cue-message-broker';\n\nimport type { TLPARSheetAttemptState } from '../../features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-type';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../../features/sheets/sheets-list/sheet-item/sheet-item-types';\nimport type { THueNames } from '../../features/ui/types';\n\nexport type TNodeTypes =\n | 'LEGACY'\n | 'LEARNING'\n | 'REMEDIAL'\n | 'GENERAL'\n | 'SAT_MATH_RECAP'\n | 'SAT_MATH_LEARNING'\n | 'SAT_MATH_ASSESSMENT'\n | 'SAT_ENGLISH_RECAP'\n | 'SAT_ENGLISH_LEARNING'\n | 'SAT_ENGLISH_ASSESSMENT'\n | 'LEVEL3'\n | 'RECAP'\n | 'REVISION'\n | 'LEVEL2'\n | 'TARGET_PRACTICE'\n | 'PRACTICE'\n | 'EXTRA_PRACTICE'\n | 'PUZZLE_EASY'\n | 'PUZZLE_MEDIUM'\n | 'PUZZLE_HARD'\n | 'CHAPTER_ASSESSMENT'\n | 'ASSESSMENT'\n | 'TRIAL_DIAGNOSTIC'\n | 'TRIAL_BASIC'\n | 'TRIAL_INTERMEDIATE'\n | 'TRIAL_ADVANCED'\n | 'MASTERY'\n | 'DYNAMIC'\n | 'TURING_ASSESSMENT'\n | 'TURING_SUBJECTIVE'\n | 'TURING_PRACTICE'\n | 'DIAGNOSTIC'\n | 'SUBJECTIVE'\n | 'VIDEO'\n | 'PUZZLE_CARD';\n\nexport enum NODE_TYPES {\n 'LEGACY' = 'LEGACY',\n 'LEARNING' = 'LEARNING',\n 'REMEDIAL' = 'REMEDIAL',\n 'GENERAL' = 'GENERAL',\n 'SAT_MATH_RECAP' = 'SAT_MATH_RECAP',\n 'SAT_MATH_LEARNING' = 'SAT_MATH_LEARNING',\n 'SAT_MATH_ASSESSMENT' = 'SAT_MATH_ASSESSMENT',\n 'SAT_ENGLISH_RECAP' = 'SAT_ENGLISH_RECAP',\n 'SAT_ENGLISH_LEARNING' = 'SAT_ENGLISH_LEARNING',\n 'SAT_ENGLISH_ASSESSMENT' = 'SAT_ENGLISH_ASSESSMENT',\n 'LEVEL3' = 'LEVEL3',\n 'RECAP' = 'RECAP',\n 'REVISION' = 'REVISION',\n 'LEVEL2' = 'LEVEL2',\n 'TARGET_PRACTICE' = 'TARGET_PRACTICE',\n 'PRACTICE' = 'PRACTICE',\n 'EXTRA_PRACTICE' = 'EXTRA_PRACTICE',\n 'PUZZLE_EASY' = 'PUZZLE_EASY',\n 'PUZZLE_MEDIUM' = 'PUZZLE_MEDIUM',\n 'PUZZLE_HARD' = 'PUZZLE_HARD',\n 'CHAPTER_ASSESSMENT' = 'CHAPTER_ASSESSMENT',\n 'ASSESSMENT' = 'ASSESSMENT',\n 'TRIAL_DIAGNOSTIC' = 'TRIAL_DIAGNOSTIC',\n 'TRIAL_BASIC' = 'TRIAL_BASIC',\n 'TRIAL_INTERMEDIATE' = 'TRIAL_INTERMEDIATE',\n 'TRIAL_ADVANCED' = 'TRIAL_ADVANCED',\n 'MASTERY' = 'MASTERY',\n 'PUZZLE_CARD' = 'PUZZLE_CARD',\n}\n\nexport interface IWorksheetModel {\n name: string;\n learnosity_activity_ref: string;\n
|
|
1
|
+
{"version":3,"file":"worksheet.js","sources":["../../../src/types/models/worksheet.ts"],"sourcesContent":["import type { IChannelMessage } from '@cuemath/cue-message-broker';\n\nimport type { TLPARSheetAttemptState } from '../../features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-type';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../../features/sheets/sheets-list/sheet-item/sheet-item-types';\nimport type { THueNames } from '../../features/ui/types';\n\nexport type TNodeTypes =\n | 'LEGACY'\n | 'LEARNING'\n | 'REMEDIAL'\n | 'GENERAL'\n | 'SAT_MATH_RECAP'\n | 'SAT_MATH_LEARNING'\n | 'SAT_MATH_ASSESSMENT'\n | 'SAT_ENGLISH_RECAP'\n | 'SAT_ENGLISH_LEARNING'\n | 'SAT_ENGLISH_ASSESSMENT'\n | 'LEVEL3'\n | 'RECAP'\n | 'REVISION'\n | 'LEVEL2'\n | 'TARGET_PRACTICE'\n | 'PRACTICE'\n | 'EXTRA_PRACTICE'\n | 'PUZZLE_EASY'\n | 'PUZZLE_MEDIUM'\n | 'PUZZLE_HARD'\n | 'CHAPTER_ASSESSMENT'\n | 'ASSESSMENT'\n | 'TRIAL_DIAGNOSTIC'\n | 'TRIAL_BASIC'\n | 'TRIAL_INTERMEDIATE'\n | 'TRIAL_ADVANCED'\n | 'MASTERY'\n | 'DYNAMIC'\n | 'TURING_ASSESSMENT'\n | 'TURING_SUBJECTIVE'\n | 'TURING_PRACTICE'\n | 'DIAGNOSTIC'\n | 'SUBJECTIVE'\n | 'VIDEO'\n | 'PUZZLE_CARD';\n\nexport enum NODE_TYPES {\n 'LEGACY' = 'LEGACY',\n 'LEARNING' = 'LEARNING',\n 'REMEDIAL' = 'REMEDIAL',\n 'GENERAL' = 'GENERAL',\n 'SAT_MATH_RECAP' = 'SAT_MATH_RECAP',\n 'SAT_MATH_LEARNING' = 'SAT_MATH_LEARNING',\n 'SAT_MATH_ASSESSMENT' = 'SAT_MATH_ASSESSMENT',\n 'SAT_ENGLISH_RECAP' = 'SAT_ENGLISH_RECAP',\n 'SAT_ENGLISH_LEARNING' = 'SAT_ENGLISH_LEARNING',\n 'SAT_ENGLISH_ASSESSMENT' = 'SAT_ENGLISH_ASSESSMENT',\n 'LEVEL3' = 'LEVEL3',\n 'RECAP' = 'RECAP',\n 'REVISION' = 'REVISION',\n 'LEVEL2' = 'LEVEL2',\n 'TARGET_PRACTICE' = 'TARGET_PRACTICE',\n 'PRACTICE' = 'PRACTICE',\n 'EXTRA_PRACTICE' = 'EXTRA_PRACTICE',\n 'PUZZLE_EASY' = 'PUZZLE_EASY',\n 'PUZZLE_MEDIUM' = 'PUZZLE_MEDIUM',\n 'PUZZLE_HARD' = 'PUZZLE_HARD',\n 'CHAPTER_ASSESSMENT' = 'CHAPTER_ASSESSMENT',\n 'ASSESSMENT' = 'ASSESSMENT',\n 'TRIAL_DIAGNOSTIC' = 'TRIAL_DIAGNOSTIC',\n 'TRIAL_BASIC' = 'TRIAL_BASIC',\n 'TRIAL_INTERMEDIATE' = 'TRIAL_INTERMEDIATE',\n 'TRIAL_ADVANCED' = 'TRIAL_ADVANCED',\n 'MASTERY' = 'MASTERY',\n 'PUZZLE_CARD' = 'PUZZLE_CARD',\n}\n\nexport interface IWorksheetModel {\n name: string;\n learnosity_activity_ref: string;\n activity_type: EWorksheetActivity | null;\n desmos_calculator_enabled: boolean;\n image_hue: THueNames | null;\n}\n\nexport enum EWorksheetActivity {\n LESSON_V3 = 'lesson-v3',\n LESSON_V3_1 = 'lesson-v3.1',\n}\n\nexport interface IWorksheetAttemptModel {\n id: string; // userAttemptId\n node_id: string;\n user_node_id: string;\n node_type: TNodeTypes;\n is_timed: boolean;\n timer_type: 'FLEXIBLE' | 'FIXED' | null;\n sheet_time: number;\n time_spent: number;\n vm_time_spent: number | null;\n started_on_ts: number | null; // epoch time\n completed_on_ts: number | null; // epoch time\n scheduled_start_ts: number | null; // epoch time\n scheduled_end_ts: number | null; // epoch time\n break_interval: number;\n chapter_name: string | null;\n is_worksheet_v3: boolean | null;\n activity_type: EWorksheetActivity | null;\n user_chapter_id?: string | null;\n desmos_calculator_enabled: boolean;\n due_date: number | null;\n state: TLPARSheetAttemptState;\n canvas_data?: Array<IChannelMessage>;\n image_hue?: THueNames | null;\n feedback_comments?: string | null;\n user_block_id?: string | null;\n}\n\nexport interface IWorksheetModelV3 extends IWorksheetAttemptModel {\n permissions: {\n can_attempt: boolean;\n can_change_attempt_location: boolean;\n can_mark_familiar: boolean;\n can_reattempt: boolean;\n can_reset: boolean;\n can_resume: boolean;\n can_review: boolean;\n can_start: boolean;\n can_teacher_review: boolean;\n can_teacher_score: boolean;\n can_unlock: boolean;\n can_view_solution: boolean;\n is_review_disabled: boolean;\n };\n}\n\ninterface IWorksheetPermissionV2 {\n access: boolean;\n code: string;\n reason: string;\n}\n\nexport interface IResumeWorksheetModel extends IWorksheetAttemptModel {\n worksheet_name: string;\n signed_request: string;\n questions_signed_request: string;\n player_config: {\n minimumAccuracy: number;\n validation: boolean;\n }; // this is needed as we are using thsi in submit\n user_attempt_id: string;\n permissions: {\n can_access: IWorksheetPermissionV2;\n can_do: IWorksheetPermissionV2;\n };\n learnosity_activity_ref: string;\n}\n\ntype TWorksheetItems = {\n ref: string;\n};\n\nexport interface IReviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n attempt: IWorksheetAttemptModel;\n worksheet: IWorksheetModel;\n chapter_name?: string;\n node_id?: string;\n sheet_time?: number;\n time_spent?: number;\n is_timed?: boolean;\n attempt_location: TSheetAttemptLocation;\n state?: TSheetStateProps;\n marked_as_completed?: boolean;\n mastery_summary: Record<string, unknown>;\n title?: string;\n worksheet_id?: string;\n node_type: TNodeTypes;\n items?: TWorksheetItems[];\n}\n\nexport interface IPreviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n worksheet_name: string;\n}\n"],"names":["NODE_TYPES","EWorksheetActivity"],"mappings":"AA8CY,IAAAA,sBAAAA,OACVA,EAAA,SAAW,UACXA,EAAA,WAAa,YACbA,EAAA,WAAa,YACbA,EAAA,UAAY,WACZA,EAAA,iBAAmB,kBACnBA,EAAA,oBAAsB,qBACtBA,EAAA,sBAAwB,uBACxBA,EAAA,oBAAsB,qBACtBA,EAAA,uBAAyB,wBACzBA,EAAA,yBAA2B,0BAC3BA,EAAA,SAAW,UACXA,EAAA,QAAU,SACVA,EAAA,WAAa,YACbA,EAAA,SAAW,UACXA,EAAA,kBAAoB,mBACpBA,EAAA,WAAa,YACbA,EAAA,iBAAmB,kBACnBA,EAAA,cAAgB,eAChBA,EAAA,gBAAkB,iBAClBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,aAAe,cACfA,EAAA,mBAAqB,oBACrBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,iBAAmB,kBACnBA,EAAA,UAAY,WACZA,EAAA,cAAgB,eA5BNA,IAAAA,KAAA,CAAA,CAAA,GAuCAC,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,cAAc,eAFJA,IAAAA,KAAA,CAAA,CAAA;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cuemath/leap",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.47-gg10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"sideEffects": false,
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@100mslive/hms-video-store": "0.10.8",
|
|
38
|
-
"@cuemath/av": "
|
|
38
|
+
"@cuemath/av": "3.0.9",
|
|
39
39
|
"@cuemath/cue-message-broker": "1.0.37",
|
|
40
40
|
"@cuemath/eslint-config": "2.4.0",
|
|
41
41
|
"@cuemath/prettier-config": "1.0.4",
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { useRef as h, useEffect as x, useCallback as i } from "react";
|
|
2
|
-
const R = (V, p = !0) => {
|
|
3
|
-
const n = h(null), T = h({}), c = h({}), a = h({});
|
|
4
|
-
x(() => {
|
|
5
|
-
try {
|
|
6
|
-
const e = window.AudioContext || window.webkitAudioContext;
|
|
7
|
-
n.current = new e();
|
|
8
|
-
} catch (e) {
|
|
9
|
-
console.warn("Failed to create AudioContext:", e);
|
|
10
|
-
}
|
|
11
|
-
return () => {
|
|
12
|
-
n.current && n.current.state !== "closed" && n.current.close();
|
|
13
|
-
};
|
|
14
|
-
}, []);
|
|
15
|
-
const m = i(async () => {
|
|
16
|
-
var e;
|
|
17
|
-
if (((e = n.current) == null ? void 0 : e.state) === "suspended")
|
|
18
|
-
try {
|
|
19
|
-
await n.current.resume();
|
|
20
|
-
} catch (t) {
|
|
21
|
-
console.warn("Failed to resume AudioContext:", t);
|
|
22
|
-
}
|
|
23
|
-
}, []), A = i(
|
|
24
|
-
async (e) => {
|
|
25
|
-
if (!(!n.current || T.current[e]))
|
|
26
|
-
try {
|
|
27
|
-
const t = V[e];
|
|
28
|
-
if (!t) throw new Error(`No URL found for sound key: ${e}`);
|
|
29
|
-
const r = await fetch(t, {
|
|
30
|
-
mode: "cors",
|
|
31
|
-
credentials: "omit"
|
|
32
|
-
});
|
|
33
|
-
if (!r.ok)
|
|
34
|
-
throw new Error(`HTTP error! status: ${r.status}`);
|
|
35
|
-
const o = await r.arrayBuffer(), u = await n.current.decodeAudioData(o);
|
|
36
|
-
T.current[e] = u;
|
|
37
|
-
} catch (t) {
|
|
38
|
-
console.error(`Failed to load sound "${e}":`, t), T.current[e] = null;
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
[V]
|
|
42
|
-
), g = i((e, t = 0.5) => {
|
|
43
|
-
if (!n.current) return;
|
|
44
|
-
const r = n.current.currentTime;
|
|
45
|
-
e.gain.cancelScheduledValues(r), e.gain.setValueAtTime(e.gain.value, r), e.gain.linearRampToValueAtTime(1, r + t);
|
|
46
|
-
}, []), w = i(
|
|
47
|
-
(e, t, r = 0.5, o = !0) => {
|
|
48
|
-
if (!n.current) return;
|
|
49
|
-
a.current[e] && (clearTimeout(a.current[e]), delete a.current[e]);
|
|
50
|
-
const u = n.current.currentTime;
|
|
51
|
-
t.gainNode.gain.cancelScheduledValues(u), t.gainNode.gain.setValueAtTime(t.gainNode.gain.value, u), t.gainNode.gain.linearRampToValueAtTime(0, u + r), o && (a.current[e] = window.setTimeout(() => {
|
|
52
|
-
var l;
|
|
53
|
-
try {
|
|
54
|
-
t.source.stop();
|
|
55
|
-
} catch (f) {
|
|
56
|
-
console.warn("Error stopping sound:", f);
|
|
57
|
-
}
|
|
58
|
-
((l = c.current[e]) == null ? void 0 : l.source) === t.source && delete c.current[e], delete a.current[e];
|
|
59
|
-
}, r * 1e3));
|
|
60
|
-
},
|
|
61
|
-
[]
|
|
62
|
-
), N = i(
|
|
63
|
-
async (e, t = {}) => {
|
|
64
|
-
const {
|
|
65
|
-
loop: r = !1,
|
|
66
|
-
volume: o = 1,
|
|
67
|
-
fadeIn: u = !1,
|
|
68
|
-
fadeDuration: l = 0.5
|
|
69
|
-
} = t;
|
|
70
|
-
if (!n.current || !p) {
|
|
71
|
-
console.warn("Cannot play sound:", {
|
|
72
|
-
key: e,
|
|
73
|
-
hasContext: !!n.current,
|
|
74
|
-
canPlayAudio: p
|
|
75
|
-
});
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
await m(), await A(e);
|
|
79
|
-
const f = T.current[e];
|
|
80
|
-
if (!f) {
|
|
81
|
-
console.warn(`No buffer available for sound: ${e}`);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
if (c.current[e] && r) {
|
|
85
|
-
a.current[e] && (clearTimeout(a.current[e]), delete a.current[e]), g(c.current[e].gainNode, l);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (c.current[e]) {
|
|
89
|
-
const s = c.current[e];
|
|
90
|
-
try {
|
|
91
|
-
s.source.stop();
|
|
92
|
-
} catch (d) {
|
|
93
|
-
console.warn("Error stopping existing sound:", d);
|
|
94
|
-
}
|
|
95
|
-
delete c.current[e];
|
|
96
|
-
}
|
|
97
|
-
try {
|
|
98
|
-
const s = n.current.createBufferSource(), d = n.current.createGain();
|
|
99
|
-
s.buffer = f, s.loop = r, s.connect(d).connect(n.current.destination), u ? (d.gain.setValueAtTime(0, n.current.currentTime), g(d, l)) : d.gain.setValueAtTime(o, n.current.currentTime), s.start(), c.current[e] = { source: s, gainNode: d, loop: r }, r || (s.onended = () => {
|
|
100
|
-
var C;
|
|
101
|
-
((C = c.current[e]) == null ? void 0 : C.source) === s && delete c.current[e];
|
|
102
|
-
});
|
|
103
|
-
} catch (s) {
|
|
104
|
-
console.error(`Failed to play sound "${e}":`, s);
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
[p, m, A, g]
|
|
108
|
-
), b = i(
|
|
109
|
-
async (e, t = {}) => {
|
|
110
|
-
const { immediately: r = !0, fadeOut: o = !1, fadeDuration: u = 0.5 } = t, l = c.current[e];
|
|
111
|
-
if (l)
|
|
112
|
-
if (r && !o) {
|
|
113
|
-
try {
|
|
114
|
-
l.source.stop();
|
|
115
|
-
} catch (f) {
|
|
116
|
-
console.warn("Error stopping sound:", f);
|
|
117
|
-
}
|
|
118
|
-
delete c.current[e], a.current[e] && (clearTimeout(a.current[e]), delete a.current[e]);
|
|
119
|
-
} else
|
|
120
|
-
w(e, l, u);
|
|
121
|
-
},
|
|
122
|
-
[w]
|
|
123
|
-
), E = i(
|
|
124
|
-
(e = {}) => {
|
|
125
|
-
Object.keys(c.current).forEach((r) => b(r, e));
|
|
126
|
-
},
|
|
127
|
-
[b]
|
|
128
|
-
), v = i((e) => !!c.current[e], []), S = i((e, t, r = 0) => {
|
|
129
|
-
const o = c.current[e];
|
|
130
|
-
if (!o || !n.current) return;
|
|
131
|
-
const u = n.current.currentTime;
|
|
132
|
-
r > 0 ? (o.gainNode.gain.cancelScheduledValues(u), o.gainNode.gain.setValueAtTime(o.gainNode.gain.value, u), o.gainNode.gain.linearRampToValueAtTime(t, u + r)) : o.gainNode.gain.setValueAtTime(t, u);
|
|
133
|
-
}, []), O = i(
|
|
134
|
-
(e = /* @__PURE__ */ new Set(), t = !0) => {
|
|
135
|
-
t && (document.visibilityState === "visible" ? (m(), Object.values(c.current).forEach((r) => {
|
|
136
|
-
r && g(r.gainNode);
|
|
137
|
-
})) : Object.entries(c.current).forEach(([r, o]) => {
|
|
138
|
-
o && (e.has(r) ? w(r, o, 0.5, !1) : w(r, o));
|
|
139
|
-
}));
|
|
140
|
-
},
|
|
141
|
-
[m, g, w]
|
|
142
|
-
);
|
|
143
|
-
return x(() => {
|
|
144
|
-
const e = a.current;
|
|
145
|
-
return () => {
|
|
146
|
-
Object.values(e).forEach((t) => {
|
|
147
|
-
t && clearTimeout(t);
|
|
148
|
-
});
|
|
149
|
-
};
|
|
150
|
-
}, []), {
|
|
151
|
-
play: N,
|
|
152
|
-
stop: b,
|
|
153
|
-
stopAll: E,
|
|
154
|
-
isPlaying: v,
|
|
155
|
-
setVolume: S,
|
|
156
|
-
handleVisibilityChange: O,
|
|
157
|
-
loadSound: A,
|
|
158
|
-
resumeAudioContext: m
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
|
-
export {
|
|
162
|
-
R as useAudioPlayer
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=use-audio-player.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-audio-player.js","sources":["../../../../src/features/hooks/use-audio-player/use-audio-player.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { type IActiveSound, type IAudioConfig, type IAudioOptions } from './use-audio-player-types';\n\ndeclare global {\n interface Window {\n webkitAudioContext?: typeof AudioContext;\n }\n}\n\nexport const useAudioPlayer = (audioConfig: IAudioConfig, canPlayAudio: boolean = true) => {\n const audioContext = useRef<AudioContext | null>(null);\n const bufferCache = useRef<Record<string, AudioBuffer | null>>({});\n const activeSounds = useRef<Partial<Record<string, IActiveSound>>>({});\n const fadeTimeouts = useRef<Partial<Record<string, number>>>({});\n\n useEffect(() => {\n try {\n const AudioContextClass = window.AudioContext || window.webkitAudioContext;\n\n audioContext.current = new AudioContextClass();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Failed to create AudioContext:', error);\n }\n\n return () => {\n if (audioContext.current && audioContext.current.state !== 'closed') {\n audioContext.current.close();\n }\n };\n }, []);\n\n const resumeAudioContext = useCallback(async () => {\n if (audioContext.current?.state === 'suspended') {\n try {\n await audioContext.current.resume();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Failed to resume AudioContext:', error);\n }\n }\n }, []);\n\n const loadSound = useCallback(\n async (key: string): Promise<void> => {\n if (!audioContext.current || bufferCache.current[key]) return;\n\n try {\n const url = audioConfig[key];\n\n if (!url) throw new Error(`No URL found for sound key: ${key}`);\n\n const response = await fetch(url, {\n mode: 'cors',\n credentials: 'omit',\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const audioBuffer = await audioContext.current.decodeAudioData(arrayBuffer);\n\n bufferCache.current[key] = audioBuffer;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Failed to load sound \"${key}\":`, error);\n bufferCache.current[key] = null;\n }\n },\n [audioConfig],\n );\n\n const fadeIn = useCallback((gainNode: GainNode, duration: number = 0.5) => {\n if (!audioContext.current) return;\n\n const now = audioContext.current.currentTime;\n\n gainNode.gain.cancelScheduledValues(now);\n gainNode.gain.setValueAtTime(gainNode.gain.value, now);\n gainNode.gain.linearRampToValueAtTime(1, now + duration);\n }, []);\n\n const fadeOut = useCallback(\n (key: string, sound: IActiveSound, duration: number = 0.5, shouldStop: boolean = true) => {\n if (!audioContext.current) return;\n\n if (fadeTimeouts.current[key]) {\n clearTimeout(fadeTimeouts.current[key]);\n delete fadeTimeouts.current[key];\n }\n\n const now = audioContext.current.currentTime;\n\n sound.gainNode.gain.cancelScheduledValues(now);\n sound.gainNode.gain.setValueAtTime(sound.gainNode.gain.value, now);\n sound.gainNode.gain.linearRampToValueAtTime(0, now + duration);\n\n if (shouldStop) {\n fadeTimeouts.current[key] = window.setTimeout(() => {\n try {\n sound.source.stop();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error stopping sound:', error);\n }\n\n if (activeSounds.current[key]?.source === sound.source) {\n delete activeSounds.current[key];\n }\n delete fadeTimeouts.current[key];\n }, duration * 1000);\n }\n },\n [],\n );\n\n const play = useCallback(\n async (key: string, options: IAudioOptions = {}): Promise<void> => {\n const {\n loop = false,\n volume = 1,\n fadeIn: shouldFadeIn = false,\n fadeDuration = 0.5,\n } = options;\n\n if (!audioContext.current || !canPlayAudio) {\n // eslint-disable-next-line no-console\n console.warn('Cannot play sound:', {\n key,\n hasContext: !!audioContext.current,\n canPlayAudio,\n });\n\n return;\n }\n\n await resumeAudioContext();\n await loadSound(key);\n\n const buffer = bufferCache.current[key];\n\n if (!buffer) {\n // eslint-disable-next-line no-console\n console.warn(`No buffer available for sound: ${key}`);\n\n return;\n }\n\n if (activeSounds.current[key] && loop) {\n if (fadeTimeouts.current[key]) {\n clearTimeout(fadeTimeouts.current[key]);\n delete fadeTimeouts.current[key];\n }\n fadeIn(activeSounds.current[key]!.gainNode, fadeDuration);\n\n return;\n }\n\n if (activeSounds.current[key]) {\n const existingSound = activeSounds.current[key];\n\n try {\n existingSound!.source.stop();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error stopping existing sound:', error);\n }\n delete activeSounds.current[key];\n }\n\n try {\n const source = audioContext.current.createBufferSource();\n const gainNode = audioContext.current.createGain();\n\n source.buffer = buffer;\n source.loop = loop;\n source.connect(gainNode).connect(audioContext.current.destination);\n\n if (shouldFadeIn) {\n gainNode.gain.setValueAtTime(0, audioContext.current.currentTime);\n fadeIn(gainNode, fadeDuration);\n } else {\n gainNode.gain.setValueAtTime(volume, audioContext.current.currentTime);\n }\n\n source.start();\n activeSounds.current[key] = { source, gainNode, loop };\n\n if (!loop) {\n source.onended = () => {\n if (activeSounds.current[key]?.source === source) {\n delete activeSounds.current[key];\n }\n };\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Failed to play sound \"${key}\":`, error);\n }\n },\n [canPlayAudio, resumeAudioContext, loadSound, fadeIn],\n );\n\n const stop = useCallback(\n async (\n key: string,\n options: { immediately?: boolean; fadeOut?: boolean; fadeDuration?: number } = {},\n ): Promise<void> => {\n const { immediately = true, fadeOut: shouldFadeOut = false, fadeDuration = 0.5 } = options;\n\n const sound = activeSounds.current[key];\n\n if (!sound) return;\n\n if (immediately && !shouldFadeOut) {\n try {\n sound.source.stop();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error stopping sound:', error);\n }\n\n delete activeSounds.current[key];\n if (fadeTimeouts.current[key]) {\n clearTimeout(fadeTimeouts.current[key]);\n delete fadeTimeouts.current[key];\n }\n } else {\n fadeOut(key, sound, fadeDuration);\n }\n },\n [fadeOut],\n );\n\n const stopAll = useCallback(\n (options: { immediately?: boolean; fadeOut?: boolean } = {}) => {\n const soundKeys = Object.keys(activeSounds.current);\n\n soundKeys.forEach(key => stop(key, options));\n },\n [stop],\n );\n\n const isPlaying = useCallback((key: string): boolean => {\n return !!activeSounds.current[key];\n }, []);\n\n const setVolume = useCallback((key: string, volume: number, duration: number = 0) => {\n const sound = activeSounds.current[key];\n\n if (!sound || !audioContext.current) return;\n\n const now = audioContext.current.currentTime;\n\n if (duration > 0) {\n sound.gainNode.gain.cancelScheduledValues(now);\n sound.gainNode.gain.setValueAtTime(sound.gainNode.gain.value, now);\n sound.gainNode.gain.linearRampToValueAtTime(volume, now + duration);\n } else {\n sound.gainNode.gain.setValueAtTime(volume, now);\n }\n }, []);\n\n const handleVisibilityChange = useCallback(\n (backgroundSounds: Set<string> = new Set(), fadeOnHide: boolean = true) => {\n if (!fadeOnHide) return;\n\n if (document.visibilityState === 'visible') {\n resumeAudioContext();\n Object.values(activeSounds.current).forEach(sound => {\n if (sound) {\n fadeIn(sound.gainNode);\n }\n });\n } else {\n Object.entries(activeSounds.current).forEach(([key, sound]) => {\n if (sound) {\n if (backgroundSounds.has(key)) {\n fadeOut(key, sound, 0.5, false);\n } else {\n fadeOut(key, sound);\n }\n }\n });\n }\n },\n [resumeAudioContext, fadeIn, fadeOut],\n );\n\n useEffect(() => {\n const timeouts = fadeTimeouts.current;\n\n return () => {\n Object.values(timeouts).forEach(id => {\n if (id) clearTimeout(id);\n });\n };\n }, []);\n\n return {\n play,\n stop,\n stopAll,\n isPlaying,\n setVolume,\n handleVisibilityChange,\n loadSound,\n resumeAudioContext,\n };\n};\n"],"names":["useAudioPlayer","audioConfig","canPlayAudio","audioContext","useRef","bufferCache","activeSounds","fadeTimeouts","useEffect","AudioContextClass","error","resumeAudioContext","useCallback","_a","loadSound","key","url","response","arrayBuffer","audioBuffer","fadeIn","gainNode","duration","now","fadeOut","sound","shouldStop","play","options","loop","volume","shouldFadeIn","fadeDuration","buffer","existingSound","source","stop","immediately","shouldFadeOut","stopAll","isPlaying","setVolume","handleVisibilityChange","backgroundSounds","fadeOnHide","timeouts","id"],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { jsx as i, jsxs as g } from "react/jsx-runtime";
|
|
2
|
-
import { memo as T, useRef as f, useState as y, useMemo as C, useCallback as k, useLayoutEffect as E, useEffect as w } from "react";
|
|
3
|
-
import l from "styled-components";
|
|
4
|
-
import I from "../../../assets/line-icons/icons/up.js";
|
|
5
|
-
import _ from "../../ui/buttons/clickable/clickable.js";
|
|
6
|
-
import u from "../../ui/layout/flex-view.js";
|
|
7
|
-
import { ACTION_BAR_HEIGHT as m } from "./constants.js";
|
|
8
|
-
import { useWorksheetStore as R } from "./hooks/use-worksheet-store.js";
|
|
9
|
-
import { CustomElement as A } from "./worksheet-question/worksheet-question-styled.js";
|
|
10
|
-
const H = l(u)(({ $isExpanded: n, theme: e }) => {
|
|
11
|
-
const { layout: c, colors: t, zIndex: d } = e;
|
|
12
|
-
return `
|
|
13
|
-
position: absolute;
|
|
14
|
-
bottom: 0px;
|
|
15
|
-
z-index: ${d.QUESTION_TIPS};
|
|
16
|
-
max-height: calc(${c.gutter * 2}px + ${m}px);
|
|
17
|
-
|
|
18
|
-
border-radius: 6px 6px 0px 0px;
|
|
19
|
-
background: ${t.REAL_BLACK_60};
|
|
20
|
-
backdrop-filter: blur(8px);
|
|
21
|
-
align-self: center;
|
|
22
|
-
|
|
23
|
-
${n && `
|
|
24
|
-
max-height: calc(${c.gutter * 15.625}px + ${m}px);
|
|
25
|
-
overflow-y: auto;
|
|
26
|
-
|
|
27
|
-
@supports selector(::-webkit-scrollbar) {
|
|
28
|
-
&::-webkit-scrollbar {
|
|
29
|
-
border-top-right-radius: 6px;
|
|
30
|
-
width: 8px;
|
|
31
|
-
background-color: ${t.WHITE};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
&::-webkit-scrollbar-thumb {
|
|
35
|
-
border-top-right-radius: 6px;
|
|
36
|
-
border-bottom-right-radius: 6px;
|
|
37
|
-
background: ${t.REAL_BLACK_60};
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
`}
|
|
41
|
-
`;
|
|
42
|
-
}), L = l(u)`
|
|
43
|
-
padding: 8px 12px;
|
|
44
|
-
|
|
45
|
-
& * {
|
|
46
|
-
background-color: transparent !important;
|
|
47
|
-
}
|
|
48
|
-
`, S = l(A)(
|
|
49
|
-
({ theme: n, $isExpanded: e }) => `
|
|
50
|
-
color: ${n.colors.WHITE};
|
|
51
|
-
padding: 0px 0px ${m}px;
|
|
52
|
-
${e ? "" : "& > * { display: inline; }"}
|
|
53
|
-
font-family: 'UntitledSans-Regular';
|
|
54
|
-
|
|
55
|
-
&::before {
|
|
56
|
-
content: 'CUE DON’T TELL:';
|
|
57
|
-
font-family: 'Athletics-Bold';
|
|
58
|
-
margin-right: 8px;
|
|
59
|
-
${e ? " display: block; margin-bottom: 8px;" : ""}
|
|
60
|
-
}
|
|
61
|
-
`
|
|
62
|
-
), W = l(u)`
|
|
63
|
-
position: sticky;
|
|
64
|
-
top: 8px;
|
|
65
|
-
`, v = l(I)(({ $isExpanded: n, theme: e }) => `
|
|
66
|
-
transform: rotate(${n ? 180 : 0}deg);
|
|
67
|
-
transition: transform 0.3s ease;
|
|
68
|
-
color: ${e.colors.WHITE};
|
|
69
|
-
cursor: pointer;
|
|
70
|
-
`), O = T(function() {
|
|
71
|
-
const { learnosity: e, width: c, question: t, userType: d } = R((o) => ({
|
|
72
|
-
learnosity: o.learnosity,
|
|
73
|
-
width: o.questionsContainerWidth - 32,
|
|
74
|
-
question: o.questions[o.activeQuestionIndex],
|
|
75
|
-
userType: o.userType
|
|
76
|
-
})), $ = f(null), a = f(null), x = f(""), [s, h] = y(!1), { teacher_tips: r } = (t == null ? void 0 : t.metadata) || {};
|
|
77
|
-
r && e.renderMath("mathjax");
|
|
78
|
-
const p = C(() => r == null ? void 0 : r.toString(), [r]), b = k(() => {
|
|
79
|
-
x.current && a.current && h((o) => !o);
|
|
80
|
-
}, []);
|
|
81
|
-
return E(() => {
|
|
82
|
-
a.current && r && (x.current = a.current.textContent);
|
|
83
|
-
}, [e, r]), w(() => {
|
|
84
|
-
p || h(!1);
|
|
85
|
-
}, [p]), d !== "TEACHER" || !p ? null : /* @__PURE__ */ i(H, { ref: $, $width: c, $isExpanded: s, children: /* @__PURE__ */ i(_, { label: "Teacher Tip", onClick: s ? void 0 : b, children: /* @__PURE__ */ g(L, { $flexDirection: "row", $flexGap: 10, $justifyContent: "space-between", children: [
|
|
86
|
-
/* @__PURE__ */ i(u, { $flexDirection: "row", $flexGap: 5, children: /* @__PURE__ */ i(
|
|
87
|
-
S,
|
|
88
|
-
{
|
|
89
|
-
ref: a,
|
|
90
|
-
dangerouslySetInnerHTML: { __html: p },
|
|
91
|
-
$isExpanded: s
|
|
92
|
-
}
|
|
93
|
-
) }),
|
|
94
|
-
/* @__PURE__ */ i(W, { $width: 20, $height: 20, children: /* @__PURE__ */ i(v, { $isExpanded: s, onClick: s ? b : void 0 }) })
|
|
95
|
-
] }) }) });
|
|
96
|
-
});
|
|
97
|
-
export {
|
|
98
|
-
O as default
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=question-tips.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"question-tips.js","sources":["../../../../src/features/worksheet/worksheet/question-tips.tsx"],"sourcesContent":["import {\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FC,\n} from 'react';\nimport styled from 'styled-components';\n\nimport UpIcon from '../../../assets/line-icons/icons/up';\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport FlexView from '../../ui/layout/flex-view';\nimport { ACTION_BAR_HEIGHT } from './constants';\nimport { useWorksheetStore } from './hooks/use-worksheet-store';\nimport { CustomElement } from './worksheet-question/worksheet-question-styled';\n\ntype TStyledComponentProps = {\n $isExpanded: boolean;\n};\n\nconst Wrapper = styled(FlexView)<TStyledComponentProps>(({ $isExpanded, theme }) => {\n const { layout, colors, zIndex } = theme;\n\n return `\n position: absolute;\n bottom: 0px;\n z-index: ${zIndex.QUESTION_TIPS};\n max-height: calc(${layout.gutter * 2}px + ${ACTION_BAR_HEIGHT}px);\n \n border-radius: 6px 6px 0px 0px;\n background: ${colors.REAL_BLACK_60};\n backdrop-filter: blur(8px);\n align-self: center;\n \n ${\n $isExpanded &&\n `\n max-height: calc(${layout.gutter * 15.625}px + ${ACTION_BAR_HEIGHT}px);\n overflow-y: auto;\n\n @supports selector(::-webkit-scrollbar) {\n &::-webkit-scrollbar {\n border-top-right-radius: 6px;\n width: 8px;\n background-color: ${colors.WHITE};\n }\n \n &::-webkit-scrollbar-thumb {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n background: ${colors.REAL_BLACK_60};\n }\n }\n `\n }\n `;\n});\n\nconst Header = styled(FlexView)`\n padding: 8px 12px;\n\n & * {\n background-color: transparent !important;\n }\n`;\n\nconst TipText = styled(CustomElement)<TStyledComponentProps>(\n ({ theme, $isExpanded }) => `\n color: ${theme.colors.WHITE};\n padding: 0px 0px ${ACTION_BAR_HEIGHT}px;\n ${$isExpanded ? '' : `& > * { display: inline; }`}\n font-family: 'UntitledSans-Regular';\n\n &::before {\n content: 'CUE DON’T TELL:';\n font-family: 'Athletics-Bold';\n margin-right: 8px;\n ${$isExpanded ? ` display: block; margin-bottom: 8px;` : ''}\n }\n `,\n);\n\nconst ChevIconWrapper = styled(FlexView)`\n position: sticky;\n top: 8px;\n`;\n\nconst ChevIcon = styled(UpIcon)<TStyledComponentProps>(({ $isExpanded, theme }) => {\n return `\n transform: rotate(${$isExpanded ? 180 : 0}deg);\n transition: transform 0.3s ease;\n color: ${theme.colors.WHITE};\n cursor: pointer;\n `;\n});\n\nconst QuestionTips: FC = memo(function QuestionTips() {\n const { learnosity, width, question, userType } = useWorksheetStore(state => ({\n learnosity: state.learnosity,\n width: state.questionsContainerWidth - 32,\n question: state.questions[state.activeQuestionIndex],\n userType: state.userType,\n }));\n const containerRef = useRef<HTMLDivElement>(null);\n const tipRef = useRef<HTMLDivElement>(null);\n const tipContentRef = useRef<string | null>('');\n\n const [menuVisible, setMenuVisible] = useState(false);\n\n const { teacher_tips: tips } = question?.metadata || {};\n\n if (tips) {\n learnosity.renderMath('mathjax');\n }\n\n const tipsMemoized = useMemo(() => {\n return tips?.toString();\n }, [tips]);\n\n const handleClick = useCallback(() => {\n if (tipContentRef.current && tipRef.current) {\n setMenuVisible(prev => !prev);\n }\n }, []);\n\n useLayoutEffect(() => {\n if (tipRef.current && tips) {\n tipContentRef.current = tipRef.current.textContent;\n }\n }, [learnosity, tips]);\n\n useEffect(() => {\n if (!tipsMemoized) {\n setMenuVisible(false);\n }\n }, [tipsMemoized]);\n\n if (userType !== 'TEACHER' || !tipsMemoized) return null;\n\n return (\n <Wrapper ref={containerRef} $width={width} $isExpanded={menuVisible}>\n <Clickable label=\"Teacher Tip\" onClick={!menuVisible ? handleClick : undefined}>\n <Header $flexDirection=\"row\" $flexGap={10} $justifyContent=\"space-between\">\n <FlexView $flexDirection=\"row\" $flexGap={5}>\n <TipText\n ref={tipRef}\n dangerouslySetInnerHTML={{ __html: tipsMemoized }}\n $isExpanded={menuVisible}\n />\n </FlexView>\n\n <ChevIconWrapper $width={20} $height={20}>\n <ChevIcon $isExpanded={menuVisible} onClick={menuVisible ? handleClick : undefined} />\n </ChevIconWrapper>\n </Header>\n </Clickable>\n </Wrapper>\n );\n});\n\nexport default QuestionTips;\n"],"names":["Wrapper","styled","FlexView","$isExpanded","theme","layout","colors","zIndex","ACTION_BAR_HEIGHT","Header","TipText","CustomElement","ChevIconWrapper","ChevIcon","UpIcon","QuestionTips","memo","learnosity","width","question","userType","useWorksheetStore","state","containerRef","useRef","tipRef","tipContentRef","menuVisible","setMenuVisible","useState","tips","tipsMemoized","useMemo","handleClick","useCallback","prev","useLayoutEffect","useEffect","jsx","Clickable","jsxs"],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
-
import { memo as a, useEffect as g } from "react";
|
|
3
|
-
import s from "styled-components";
|
|
4
|
-
import d from "../../../../assets/line-icons/icons/scribble.js";
|
|
5
|
-
import f from "../../../ui/buttons/clickable/clickable.js";
|
|
6
|
-
import b from "../../../ui/layout/flex-view.js";
|
|
7
|
-
import S from "../../constants/events.js";
|
|
8
|
-
import { useWorksheetStore as p } from "../hooks/use-worksheet-store.js";
|
|
9
|
-
const E = s(b)(
|
|
10
|
-
({ theme: r, $active: l }) => `
|
|
11
|
-
width: 36px;
|
|
12
|
-
height: 36px;
|
|
13
|
-
border-radius: 50%;
|
|
14
|
-
border: 1px solid black;
|
|
15
|
-
&:hover {
|
|
16
|
-
background-color: ${r.colors.BLACK};
|
|
17
|
-
svg path {
|
|
18
|
-
stroke: ${r.colors.WHITE};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
background-color: ${l ? r.colors.BLACK : r.colors.WHITE};
|
|
22
|
-
justify-content: center;
|
|
23
|
-
align-items: center;
|
|
24
|
-
svg path {
|
|
25
|
-
stroke: ${l ? r.colors.WHITE : r.colors.BLACK};
|
|
26
|
-
}
|
|
27
|
-
`
|
|
28
|
-
), x = a(function() {
|
|
29
|
-
const { toggleScribble: l, scribblingEnabled: e, isCanvasEnabled: n, canToggleScribbling: t, loggerRef: c } = p((o) => ({
|
|
30
|
-
scribblingEnabled: o.scribblingEnabled,
|
|
31
|
-
toggleScribble: o.toggleScribble,
|
|
32
|
-
isCanvasEnabled: !!o.behavior.canvasEnabled,
|
|
33
|
-
canToggleScribbling: o.behavior.canScribble ?? !0,
|
|
34
|
-
loggerRef: o.loggerRef
|
|
35
|
-
}));
|
|
36
|
-
return g(() => {
|
|
37
|
-
c.current(S.WORKSHEET_V3_SCRIBBLE_TOGGLE, {
|
|
38
|
-
scribbling_enabled: e
|
|
39
|
-
});
|
|
40
|
-
}, [e, c]), n ? /* @__PURE__ */ i(
|
|
41
|
-
f,
|
|
42
|
-
{
|
|
43
|
-
label: "ScribbleSwitch Toggled",
|
|
44
|
-
onClick: l,
|
|
45
|
-
disabled: !t,
|
|
46
|
-
children: /* @__PURE__ */ i(E, { $active: e, children: /* @__PURE__ */ i(d, {}) })
|
|
47
|
-
}
|
|
48
|
-
) : /* @__PURE__ */ i(b, { $widthX: 15.25 });
|
|
49
|
-
});
|
|
50
|
-
export {
|
|
51
|
-
x as default
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=scribble-switch.js.map
|
package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scribble-switch.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.tsx"],"sourcesContent":["import { memo, useEffect, type FC } from 'react';\nimport styled from 'styled-components';\n\nimport ScribbleIcon from '../../../../assets/line-icons/icons/scribble';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport EVENTS from '../../constants/events';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\n\nconst IconWrapper = styled(FlexView)<{ $active: boolean }>(\n ({ theme, $active }) => `\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border: 1px solid black;\n &:hover {\n background-color: ${theme.colors.BLACK};\n svg path {\n stroke: ${theme.colors.WHITE};\n }\n }\n background-color: ${$active ? theme.colors.BLACK : theme.colors.WHITE};\n justify-content: center;\n align-items: center;\n svg path {\n stroke: ${$active ? theme.colors.WHITE : theme.colors.BLACK};\n }\n`,\n);\n\nconst ScribbleSwitch: FC = memo(function ScribbleSwitch() {\n const { toggleScribble, scribblingEnabled, isCanvasEnabled, canToggleScribbling, loggerRef } =\n useWorksheetStore(store => ({\n scribblingEnabled: store.scribblingEnabled,\n toggleScribble: store.toggleScribble,\n isCanvasEnabled: !!store.behavior.canvasEnabled,\n canToggleScribbling: store.behavior.canScribble ?? true,\n loggerRef: store.loggerRef,\n }));\n\n useEffect(() => {\n loggerRef.current(EVENTS.WORKSHEET_V3_SCRIBBLE_TOGGLE, {\n scribbling_enabled: scribblingEnabled,\n });\n }, [scribblingEnabled, loggerRef]);\n\n if (!isCanvasEnabled) {\n // This is done to center align the QuestionNavBar for worksheets for whom scribbling is not enabled.\n return <FlexView $widthX={15.25} />;\n }\n\n return (\n <Clickable\n label=\"ScribbleSwitch Toggled\"\n onClick={toggleScribble}\n disabled={!canToggleScribbling}\n >\n <IconWrapper $active={scribblingEnabled}>\n <ScribbleIcon />\n </IconWrapper>\n </Clickable>\n );\n});\n\nexport default ScribbleSwitch;\n"],"names":["IconWrapper","styled","FlexView","theme","$active","ScribbleSwitch","memo","toggleScribble","scribblingEnabled","isCanvasEnabled","canToggleScribbling","loggerRef","useWorksheetStore","store","useEffect","EVENTS","jsx","Clickable","ScribbleIcon"],"mappings":";;;;;;;;AASA,MAAMA,IAAcC,EAAOC,CAAQ;AAAA,EACjC,CAAC,EAAE,OAAAC,GAAO,SAAAC,EAAA,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMFD,EAAM,OAAO,KAAK;AAAA;AAAA,gBAE1BA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA,sBAGZC,IAAUD,EAAM,OAAO,QAAQA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,cAIzDC,IAAUD,EAAM,OAAO,QAAQA,EAAM,OAAO,KAAK;AAAA;AAAA;AAG/D,GAEME,IAAqBC,EAAK,WAA0B;AAClD,QAAA,EAAE,gBAAAC,GAAgB,mBAAAC,GAAmB,iBAAAC,GAAiB,qBAAAC,GAAqB,WAAAC,EAAU,IACzFC,EAAkB,CAAUC,OAAA;AAAA,IAC1B,mBAAmBA,EAAM;AAAA,IACzB,gBAAgBA,EAAM;AAAA,IACtB,iBAAiB,CAAC,CAACA,EAAM,SAAS;AAAA,IAClC,qBAAqBA,EAAM,SAAS,eAAe;AAAA,IACnD,WAAWA,EAAM;AAAA,EACjB,EAAA;AAQJ,SANAC,EAAU,MAAM;AACJ,IAAAH,EAAA,QAAQI,EAAO,8BAA8B;AAAA,MACrD,oBAAoBP;AAAA,IAAA,CACrB;AAAA,EAAA,GACA,CAACA,GAAmBG,CAAS,CAAC,GAE5BF,IAMH,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,SAASV;AAAA,MACT,UAAU,CAACG;AAAA,MAEX,4BAACV,GAAY,EAAA,SAASQ,GACpB,UAAA,gBAAAQ,EAACE,IAAa,CAAA,GAChB;AAAA,IAAA;AAAA,EAAA,IAXK,gBAAAF,EAACd,GAAS,EAAA,SAAS,MAAO,CAAA;AAcrC,CAAC;"}
|
package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { useCallback as a } from "react";
|
|
2
|
-
import { useErrorBoundary as te } from "react-error-boundary";
|
|
3
|
-
import { useAudioPlayer as ne } from "../../../hooks/use-audio-player/use-audio-player.js";
|
|
4
|
-
import { useAutoPlayPermission as oe } from "../../../hooks/use-auto-play-permission/use-auto-play-permission.js";
|
|
5
|
-
import se from "../../constants/events.js";
|
|
6
|
-
import { SYSTEM_VALIDATION_AUDIO_LIST as ie } from "../constants.js";
|
|
7
|
-
import { useWorksheetStore as ae } from "../hooks/use-worksheet-store.js";
|
|
8
|
-
import { isOkayTypeQuestion as Q, getQuestionMetadata as S, checkIsClozeFormulaResponseInvalid as ue } from "../worksheet-helpers.js";
|
|
9
|
-
const Se = (v) => {
|
|
10
|
-
const {
|
|
11
|
-
behavior: V,
|
|
12
|
-
layout: L,
|
|
13
|
-
questions: s,
|
|
14
|
-
setResponses: c,
|
|
15
|
-
questionIndex: p,
|
|
16
|
-
updateResponse: _,
|
|
17
|
-
onResponseChange: i,
|
|
18
|
-
showSummary: B,
|
|
19
|
-
changeQuestion: m,
|
|
20
|
-
setBlocker: l,
|
|
21
|
-
onTeacherValidation: h,
|
|
22
|
-
learnosity: r,
|
|
23
|
-
loggerRef: E,
|
|
24
|
-
onHelp: f
|
|
25
|
-
} = ae((e) => ({
|
|
26
|
-
behavior: e.behavior,
|
|
27
|
-
layout: e.layout,
|
|
28
|
-
questions: e.questions,
|
|
29
|
-
questionIndex: e.activeQuestionIndex,
|
|
30
|
-
setResponses: e.setResponses,
|
|
31
|
-
updateResponse: e.updateResponse,
|
|
32
|
-
onResponseChange: e.onResponseChange,
|
|
33
|
-
showSummary: e.showSummary,
|
|
34
|
-
changeQuestion: e.changeQuestion,
|
|
35
|
-
setBlocker: e.setBlocker,
|
|
36
|
-
onTeacherValidation: e.onTeacherValidation,
|
|
37
|
-
learnosity: e.learnosity,
|
|
38
|
-
loggerRef: e.loggerRef,
|
|
39
|
-
onHelp: e.onHelp
|
|
40
|
-
})), { question: y, getTimeSpentOnQuestion: I, setSkipped: q } = v, { questionsScrollable: M } = L, { response_id: t, item_type: P, question_number: g, item_number: A, total_questions: b } = y, x = P === "exit-ticket", { validation: w, teacherValidationEnabled: U } = V, { canAutoPlayAudio: D } = oe(), z = ie.reduce(
|
|
41
|
-
(e, { name: n, url: o }) => (e[n] = o, e),
|
|
42
|
-
{}
|
|
43
|
-
), C = ne(z, D), { showBoundary: R } = te(), T = a(() => {
|
|
44
|
-
const e = r.question(t);
|
|
45
|
-
e && w && !Q(e.getQuestion()) && e.getScore((n) => {
|
|
46
|
-
const { max_score: o, score: u } = n || {};
|
|
47
|
-
o && (o === u ? C.play("CORRECT") : C.play("INCORRECT"));
|
|
48
|
-
});
|
|
49
|
-
}, [r, C, t, w]), N = a(
|
|
50
|
-
(e, n) => {
|
|
51
|
-
c((o) => {
|
|
52
|
-
const u = {
|
|
53
|
-
...S(s, e),
|
|
54
|
-
...o[e],
|
|
55
|
-
validatedByTeacher: !0,
|
|
56
|
-
rating: n
|
|
57
|
-
};
|
|
58
|
-
return i == null || i({
|
|
59
|
-
responseId: e,
|
|
60
|
-
response: u,
|
|
61
|
-
question: s.find((O) => O.response_id === e),
|
|
62
|
-
isNewAttempt: !1
|
|
63
|
-
}), {
|
|
64
|
-
...o,
|
|
65
|
-
[e]: u
|
|
66
|
-
};
|
|
67
|
-
});
|
|
68
|
-
},
|
|
69
|
-
[i, s, c]
|
|
70
|
-
), F = a(() => {
|
|
71
|
-
f && y && f({
|
|
72
|
-
questionId: t,
|
|
73
|
-
questionNumber: `${A + 1}${b > 1 ? String.fromCharCode(97 + g) : ""}`
|
|
74
|
-
});
|
|
75
|
-
}, [A, f, y, g, t, b]), W = a(() => {
|
|
76
|
-
E.current(se.WORKSHEET_V3_HINT_SEEN), c((e) => {
|
|
77
|
-
var o;
|
|
78
|
-
const n = {
|
|
79
|
-
...S(s, t),
|
|
80
|
-
...e[t],
|
|
81
|
-
hintsUsed: (((o = e[t]) == null ? void 0 : o.hintsUsed) ?? 0) + 1
|
|
82
|
-
};
|
|
83
|
-
return i == null || i({
|
|
84
|
-
responseId: t,
|
|
85
|
-
response: n,
|
|
86
|
-
question: s.find((u) => u.response_id === t),
|
|
87
|
-
isNewAttempt: !1
|
|
88
|
-
}), {
|
|
89
|
-
...e,
|
|
90
|
-
[t]: n
|
|
91
|
-
};
|
|
92
|
-
});
|
|
93
|
-
}, [E, i, s, t, c]), X = a(() => {
|
|
94
|
-
var n;
|
|
95
|
-
const e = (n = s[p - 1]) == null ? void 0 : n.response_id;
|
|
96
|
-
e && m(e);
|
|
97
|
-
}, [m, p, s]), $ = a(() => {
|
|
98
|
-
var n;
|
|
99
|
-
const e = (n = s[p + 1]) == null ? void 0 : n.response_id;
|
|
100
|
-
e ? m(e) : B();
|
|
101
|
-
}, [m, p, s, B]), G = a(() => {
|
|
102
|
-
c((e) => {
|
|
103
|
-
const n = {
|
|
104
|
-
...S(s, t),
|
|
105
|
-
...e[t],
|
|
106
|
-
skipped: !0
|
|
107
|
-
};
|
|
108
|
-
return i == null || i({
|
|
109
|
-
responseId: t,
|
|
110
|
-
response: n,
|
|
111
|
-
question: s.find((o) => o.response_id === t),
|
|
112
|
-
isNewAttempt: !1
|
|
113
|
-
}), {
|
|
114
|
-
...e,
|
|
115
|
-
[t]: n
|
|
116
|
-
};
|
|
117
|
-
}), q(!0);
|
|
118
|
-
}, [i, s, t, c, q]), d = a(
|
|
119
|
-
(e) => {
|
|
120
|
-
const n = r.question(t);
|
|
121
|
-
if (n) {
|
|
122
|
-
const o = n.getQuestion(), u = n.getResponse();
|
|
123
|
-
(o.type === "clozeformula" && u && (u == null ? void 0 : u.value) ? ue(u) : !1) && R(new Error("CLOZE_FORMULA_RESPONSE_EXCEEDS_MAX_LENGTH")), n.getScore((k) => {
|
|
124
|
-
_({
|
|
125
|
-
responseId: t,
|
|
126
|
-
response: u,
|
|
127
|
-
score: Q(o) || !k ? {
|
|
128
|
-
max_score: 0,
|
|
129
|
-
score: 0,
|
|
130
|
-
unscored: !k
|
|
131
|
-
// score will be null for unscored questions
|
|
132
|
-
} : { ...k, score: k.score ?? 0 },
|
|
133
|
-
answerChecked: e,
|
|
134
|
-
timeSpent: I(t)
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
[I, r, t, R, _]
|
|
140
|
-
), K = a(() => {
|
|
141
|
-
const e = r.question(t);
|
|
142
|
-
e && (e.enable(), e.resetValidationUI(), d());
|
|
143
|
-
}, [d, r, t]), H = a(() => {
|
|
144
|
-
T(), d(!0);
|
|
145
|
-
}, [d, T]), Y = a(() => {
|
|
146
|
-
const e = r.question(t);
|
|
147
|
-
e && (e.disable(), e.validate(
|
|
148
|
-
{
|
|
149
|
-
feedbackAttempts: !0
|
|
150
|
-
},
|
|
151
|
-
H
|
|
152
|
-
));
|
|
153
|
-
}, [H, r, t]), Z = a(() => {
|
|
154
|
-
x ? l("exit-ticket-review") : h == null || h(t);
|
|
155
|
-
}, [x, h, t, l]), j = a(() => {
|
|
156
|
-
N(t);
|
|
157
|
-
}, [t, N]), J = a(() => {
|
|
158
|
-
c((e) => {
|
|
159
|
-
const n = {
|
|
160
|
-
...S(s, t),
|
|
161
|
-
...e[t],
|
|
162
|
-
submittedByStudent: !0
|
|
163
|
-
};
|
|
164
|
-
return i == null || i({
|
|
165
|
-
responseId: t,
|
|
166
|
-
response: n,
|
|
167
|
-
question: s.find((o) => o.response_id === t),
|
|
168
|
-
isNewAttempt: !1
|
|
169
|
-
}), {
|
|
170
|
-
...e,
|
|
171
|
-
[t]: n
|
|
172
|
-
};
|
|
173
|
-
}), l("exit-ticket-student-submission");
|
|
174
|
-
}, [i, s, t, l, c]), ee = a(() => {
|
|
175
|
-
l("optional-items-skip");
|
|
176
|
-
}, [l]);
|
|
177
|
-
return {
|
|
178
|
-
handleResponseChange: d,
|
|
179
|
-
handleHelpButtonClick: f ? F : void 0,
|
|
180
|
-
handleHintButtonClick: W,
|
|
181
|
-
handleBackButtonClick: !M && !U ? X : void 0,
|
|
182
|
-
handleNextButtonClick: $,
|
|
183
|
-
handleRetryButtonClick: K,
|
|
184
|
-
handleCheckButtonClick: Y,
|
|
185
|
-
handleValidateButtonClick: Z,
|
|
186
|
-
handleStartButtonClick: j,
|
|
187
|
-
handleReadyButtonClick: J,
|
|
188
|
-
handleSkipSectionButtonClick: ee,
|
|
189
|
-
handleSkipButtonClick: G
|
|
190
|
-
};
|
|
191
|
-
};
|
|
192
|
-
export {
|
|
193
|
-
Se as default
|
|
194
|
-
};
|
|
195
|
-
//# sourceMappingURL=use-handler-callbacks.js.map
|