@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.
Files changed (182) hide show
  1. package/dist/assets/line-icons/icons/bulb.js +10 -10
  2. package/dist/assets/line-icons/icons/bulb.js.map +1 -1
  3. package/dist/assets/line-icons/icons/chevron-up.js +28 -0
  4. package/dist/assets/line-icons/icons/chevron-up.js.map +1 -0
  5. package/dist/assets/line-icons/icons/close.js +28 -0
  6. package/dist/assets/line-icons/icons/close.js.map +1 -0
  7. package/dist/assets/line-icons/icons/cursor2.js +24 -0
  8. package/dist/assets/line-icons/icons/cursor2.js.map +1 -0
  9. package/dist/assets/line-icons/icons/hand.js.map +1 -1
  10. package/dist/assets/line-icons/icons/hints.js +25 -0
  11. package/dist/assets/line-icons/icons/hints.js.map +1 -0
  12. package/dist/assets/line-icons/icons/question-feedback.js +30 -0
  13. package/dist/assets/line-icons/icons/question-feedback.js.map +1 -0
  14. package/dist/assets/line-icons/icons/scribble.js +13 -36
  15. package/dist/assets/line-icons/icons/scribble.js.map +1 -1
  16. package/dist/assets/line-icons/icons/sticker.js +9 -9
  17. package/dist/assets/line-icons/icons/sticker.js.map +1 -1
  18. package/dist/assets/line-icons/icons/teaching-tools.js +40 -0
  19. package/dist/assets/line-icons/icons/teaching-tools.js.map +1 -0
  20. package/dist/assets/line-icons/icons/tval-question.js +32 -0
  21. package/dist/assets/line-icons/icons/tval-question.js.map +1 -0
  22. package/dist/features/circle-games/hooks/use-circle-sounds/constants.js +4 -7
  23. package/dist/features/circle-games/hooks/use-circle-sounds/constants.js.map +1 -1
  24. package/dist/features/circle-games/hooks/use-circle-sounds/helper.js +19 -0
  25. package/dist/features/circle-games/hooks/use-circle-sounds/helper.js.map +1 -0
  26. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +110 -51
  27. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  28. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +1 -1
  29. package/dist/features/hooks/use-audio-player.js +54 -0
  30. package/dist/features/hooks/use-audio-player.js.map +1 -0
  31. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +6 -6
  32. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
  33. package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js +2 -2
  34. package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js.map +1 -1
  35. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js +64 -29
  36. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js.map +1 -1
  37. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +9 -9
  38. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  39. package/dist/features/puzzles/app/puzzle-app-view.js +40 -40
  40. package/dist/features/puzzles/app/puzzle-app-view.js.map +1 -1
  41. package/dist/features/ui/tabs/tabs.js +15 -15
  42. package/dist/features/ui/tabs/tabs.js.map +1 -1
  43. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js +0 -1
  44. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js.map +1 -1
  45. package/dist/features/worksheet/worksheet/constants.js +12 -13
  46. package/dist/features/worksheet/worksheet/constants.js.map +1 -1
  47. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js +120 -101
  48. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js.map +1 -1
  49. package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js +1 -1
  50. package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js.map +1 -1
  51. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +40 -109
  52. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
  53. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +49 -46
  54. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  55. package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js +4 -4
  56. package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js.map +1 -1
  57. package/dist/features/worksheet/worksheet/worksheet-helpers.js +127 -274
  58. package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
  59. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +25 -25
  60. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
  61. package/dist/features/worksheet/worksheet/worksheet-provider.js +1 -1
  62. package/dist/features/worksheet/worksheet/worksheet-provider.js.map +1 -1
  63. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js +17 -22
  64. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js.map +1 -1
  65. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +25 -29
  66. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
  67. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +319 -259
  68. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  69. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-allow-retry-button-click.js +15 -0
  70. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-allow-retry-button-click.js.map +1 -0
  71. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-back-button-click.js +18 -0
  72. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-back-button-click.js.map +1 -0
  73. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-check-button-click.js +21 -0
  74. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-check-button-click.js.map +1 -0
  75. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-next-button-click.js +19 -0
  76. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-next-button-click.js.map +1 -0
  77. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-ready-button-click.js +34 -0
  78. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-ready-button-click.js.map +1 -0
  79. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-response-change.js +38 -0
  80. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-response-change.js.map +1 -0
  81. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-retry-button-click.js +16 -0
  82. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-retry-button-click.js.map +1 -0
  83. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-button-click.js +35 -0
  84. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-button-click.js.map +1 -0
  85. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-section-button-click.js +12 -0
  86. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-section-button-click.js.map +1 -0
  87. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-start-button-click.js +44 -0
  88. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-start-button-click.js.map +1 -0
  89. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-submit-quiz.js +51 -0
  90. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-submit-quiz.js.map +1 -0
  91. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-validate-button-click.js +19 -0
  92. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-validate-button-click.js.map +1 -0
  93. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-play-validation-audio.js +23 -0
  94. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-play-validation-audio.js.map +1 -0
  95. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-validate-question.js +36 -0
  96. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-validate-question.js.map +1 -0
  97. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3.js +184 -0
  98. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3.js.map +1 -0
  99. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js +258 -0
  100. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js.map +1 -0
  101. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller.js +180 -0
  102. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller.js.map +1 -0
  103. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3.js +77 -0
  104. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3.js.map +1 -0
  105. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3_1.js +103 -0
  106. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3_1.js.map +1 -0
  107. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller.js +21 -0
  108. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller.js.map +1 -0
  109. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller-view.js +22 -0
  110. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller-view.js.map +1 -0
  111. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +20 -345
  112. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  113. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js +49 -0
  114. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js.map +1 -0
  115. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js +184 -0
  116. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js.map +1 -0
  117. package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js +65 -0
  118. package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js.map +1 -0
  119. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js +9 -0
  120. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js.map +1 -0
  121. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js +38 -0
  122. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js.map +1 -0
  123. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js +33 -20
  124. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js.map +1 -1
  125. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js +73 -0
  126. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js.map +1 -0
  127. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.js +20 -0
  128. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.js.map +1 -0
  129. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-attemptable-question-index.js +69 -0
  130. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-attemptable-question-index.js.map +1 -0
  131. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-unlocked-question-index.js +18 -0
  132. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-unlocked-question-index.js.map +1 -0
  133. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-merged-response-state.js +19 -0
  134. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-merged-response-state.js.map +1 -0
  135. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js +138 -0
  136. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js.map +1 -0
  137. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-renderable-questions.js +9 -0
  138. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-renderable-questions.js.map +1 -0
  139. package/dist/features/worksheet/worksheet/worksheet-store/worksheet-store.js +230 -0
  140. package/dist/features/worksheet/worksheet/worksheet-store/worksheet-store.js.map +1 -0
  141. package/dist/features/worksheet/worksheet/worksheet-styled.js +29 -83
  142. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  143. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js +45 -24
  144. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js.map +1 -1
  145. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js +19 -0
  146. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js.map +1 -0
  147. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js +66 -0
  148. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js.map +1 -0
  149. package/dist/features/worksheet/worksheet/worksheet-types.js +3 -2
  150. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  151. package/dist/features/worksheet/worksheet/worksheet-view.js +89 -100
  152. package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
  153. package/dist/features/worksheet/worksheet/worksheet.js +126 -117
  154. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  155. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +29 -29
  156. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  157. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +16 -16
  158. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  159. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +24 -24
  160. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  161. package/dist/index.d.ts +67 -28
  162. package/dist/index.js +760 -745
  163. package/dist/index.js.map +1 -1
  164. package/dist/types/models/worksheet.js +2 -1
  165. package/dist/types/models/worksheet.js.map +1 -1
  166. package/package.json +2 -2
  167. package/dist/features/hooks/use-audio-player/use-audio-player.js +0 -164
  168. package/dist/features/hooks/use-audio-player/use-audio-player.js.map +0 -1
  169. package/dist/features/worksheet/worksheet/question-tips.js +0 -100
  170. package/dist/features/worksheet/worksheet/question-tips.js.map +0 -1
  171. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js +0 -53
  172. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +0 -1
  173. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js +0 -195
  174. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +0 -1
  175. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +0 -112
  176. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +0 -1
  177. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +0 -61
  178. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +0 -1
  179. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js +0 -91
  180. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +0 -1
  181. package/dist/features/worksheet/worksheet/worksheet-store.js +0 -289
  182. 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 is_lesson_v3_enabled: boolean;\n desmos_calculator_enabled: boolean;\n image_hue: THueNames | null;\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 is_lesson_v3_enabled: boolean;\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"],"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;"}
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.46",
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": "2.2.1",
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":";;;;;;;;;AAuBA,MAAMA,IAAUC,EAAOC,CAAQ,EAAyB,CAAC,EAAE,aAAAC,GAAa,OAAAC,QAAY;AAClF,QAAM,EAAE,QAAAC,GAAQ,QAAAC,GAAQ,QAAAC,EAAA,IAAWH;AAE5B,SAAA;AAAA;AAAA;AAAA,eAGMG,EAAO,aAAa;AAAA,uBACZF,EAAO,SAAS,CAAC,QAAQG,CAAiB;AAAA;AAAA;AAAA,kBAG/CF,EAAO,aAAa;AAAA;AAAA;AAAA;AAAA,MAKhCH,KACA;AAAA,2BACqBE,EAAO,SAAS,MAAM,QAAQG,CAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAO1CF,EAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMlBA,EAAO,aAAa;AAAA;AAAA;AAAA,OAI1C;AAAA;AAEJ,CAAC,GAEKG,IAASR,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQxBQ,IAAUT,EAAOU,CAAa;AAAA,EAClC,CAAC,EAAE,OAAAP,GAAO,aAAAD,EAAA,MAAkB;AAAA,aACjBC,EAAM,OAAO,KAAK;AAAA,uBACRI,CAAiB;AAAA,MAClCL,IAAc,KAAK,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAO7CA,IAAc,yCAAyC,EAAE;AAAA;AAAA;AAGjE,GAEMS,IAAkBX,EAAOC,CAAQ;AAAA;AAAA;AAAA,GAKjCW,IAAWZ,EAAOa,CAAM,EAAyB,CAAC,EAAE,aAAAX,GAAa,OAAAC,QAC9D;AAAA,wBACeD,IAAc,MAAM,CAAC;AAAA;AAAA,aAEhCC,EAAM,OAAO,KAAK;AAAA;AAAA,GAG9B,GAEKW,IAAmBC,EAAK,WAAwB;AACpD,QAAM,EAAE,YAAAC,GAAY,OAAAC,GAAO,UAAAC,GAAU,UAAAC,MAAaC,EAAkB,CAAUC,OAAA;AAAA,IAC5E,YAAYA,EAAM;AAAA,IAClB,OAAOA,EAAM,0BAA0B;AAAA,IACvC,UAAUA,EAAM,UAAUA,EAAM,mBAAmB;AAAA,IACnD,UAAUA,EAAM;AAAA,EAChB,EAAA,GACIC,IAAeC,EAAuB,IAAI,GAC1CC,IAASD,EAAuB,IAAI,GACpCE,IAAgBF,EAAsB,EAAE,GAExC,CAACG,GAAaC,CAAc,IAAIC,EAAS,EAAK,GAE9C,EAAE,cAAcC,EAAA,KAASX,KAAA,gBAAAA,EAAU,aAAY,CAAA;AAErD,EAAIW,KACFb,EAAW,WAAW,SAAS;AAG3B,QAAAc,IAAeC,EAAQ,MACpBF,KAAA,gBAAAA,EAAM,YACZ,CAACA,CAAI,CAAC,GAEHG,IAAcC,EAAY,MAAM;AAChC,IAAAR,EAAc,WAAWD,EAAO,WACnBG,EAAA,CAAAO,MAAQ,CAACA,CAAI;AAAA,EAEhC,GAAG,CAAE,CAAA;AAcL,SAZAC,EAAgB,MAAM;AAChB,IAAAX,EAAO,WAAWK,MACNJ,EAAA,UAAUD,EAAO,QAAQ;AAAA,EACzC,GACC,CAACR,GAAYa,CAAI,CAAC,GAErBO,EAAU,MAAM;AACd,IAAKN,KACHH,EAAe,EAAK;AAAA,EACtB,GACC,CAACG,CAAY,CAAC,GAEbX,MAAa,aAAa,CAACW,IAAqB,OAGlD,gBAAAO,EAACtC,GAAQ,EAAA,KAAKuB,GAAc,QAAQL,GAAO,aAAaS,GACtD,UAAC,gBAAAW,EAAAC,GAAA,EAAU,OAAM,eAAc,SAAUZ,IAA4B,SAAdM,GACrD,UAAC,gBAAAO,EAAA/B,GAAA,EAAO,gBAAe,OAAM,UAAU,IAAI,iBAAgB,iBACzD,UAAA;AAAA,IAAA,gBAAA6B,EAACpC,GAAS,EAAA,gBAAe,OAAM,UAAU,GACvC,UAAA,gBAAAoC;AAAA,MAAC5B;AAAA,MAAA;AAAA,QACC,KAAKe;AAAA,QACL,yBAAyB,EAAE,QAAQM,EAAa;AAAA,QAChD,aAAaJ;AAAA,MAAA;AAAA,IAAA,GAEjB;AAAA,IAEC,gBAAAW,EAAA1B,GAAA,EAAgB,QAAQ,IAAI,SAAS,IACpC,UAAA,gBAAA0B,EAACzB,GAAS,EAAA,aAAac,GAAa,SAASA,IAAcM,IAAc,OAAW,CAAA,GACtF;AAAA,EAAA,GACF,GACF,EACF,CAAA;AAEJ,CAAC;"}
@@ -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
@@ -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;"}
@@ -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