@cuemath/leap 3.2.14-m → 3.2.15-akm-2

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 (143) hide show
  1. package/dist/assets/line-icons/icons/cue-board-filled.js +33 -0
  2. package/dist/assets/line-icons/icons/cue-board-filled.js.map +1 -0
  3. package/dist/assets/line-icons/icons/cue-board.js +23 -0
  4. package/dist/assets/line-icons/icons/cue-board.js.map +1 -0
  5. package/dist/assets/line-icons/icons/hint-fill.js +35 -0
  6. package/dist/assets/line-icons/icons/hint-fill.js.map +1 -0
  7. package/dist/assets/line-icons/icons/screen-grab-filled.js +35 -0
  8. package/dist/assets/line-icons/icons/screen-grab-filled.js.map +1 -0
  9. package/dist/assets/line-icons/icons/screen-grab.js +23 -0
  10. package/dist/assets/line-icons/icons/screen-grab.js.map +1 -0
  11. package/dist/assets/line-icons/icons/sticker-filled.js +64 -0
  12. package/dist/assets/line-icons/icons/sticker-filled.js.map +1 -0
  13. package/dist/assets/line-icons/icons/sticker.js +46 -0
  14. package/dist/assets/line-icons/icons/sticker.js.map +1 -0
  15. package/dist/assets/lottie/lottie.js +1 -1
  16. package/dist/assets/lottie/lottie.js.map +1 -1
  17. package/dist/features/auth/account-selector/account-selector.js +26 -25
  18. package/dist/features/auth/account-selector/account-selector.js.map +1 -1
  19. package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js +15 -14
  20. package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js.map +1 -1
  21. package/dist/features/auth/comps/user-list/user-item/user-item.js +30 -31
  22. package/dist/features/auth/comps/user-list/user-item/user-item.js.map +1 -1
  23. package/dist/features/auth/comps/user-list/user-list.js +35 -34
  24. package/dist/features/auth/comps/user-list/user-list.js.map +1 -1
  25. package/dist/features/auth/forgot-password/forgot-password-styled.js +14 -15
  26. package/dist/features/auth/forgot-password/forgot-password-styled.js.map +1 -1
  27. package/dist/features/auth/login/identifier-otp-form/identifier-otp-form-styled.js +6 -7
  28. package/dist/features/auth/login/identifier-otp-form/identifier-otp-form-styled.js.map +1 -1
  29. package/dist/features/auth/login/login-styled.js +8 -9
  30. package/dist/features/auth/login/login-styled.js.map +1 -1
  31. package/dist/features/chapters-v2/utils/node-card-utils.js +7 -7
  32. package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
  33. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card-styled.js +4 -4
  34. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card-styled.js.map +1 -1
  35. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js +85 -85
  36. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js.map +1 -1
  37. package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js +121 -98
  38. package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js.map +1 -1
  39. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.js +29 -28
  40. package/dist/features/circle-games/game-launcher/hooks/use-table-infinite-launcher-journey/use-table-infinite-launcher-journey.js.map +1 -1
  41. package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js +43 -42
  42. package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js.map +1 -1
  43. package/dist/features/circle-games/games/tutorial/tutorial.js +43 -35
  44. package/dist/features/circle-games/games/tutorial/tutorial.js.map +1 -1
  45. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js +2 -2
  46. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js.map +1 -1
  47. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js +1 -1
  48. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js.map +1 -1
  49. package/dist/features/circle-games/sign-up/comp/username-input/username-input.js +26 -24
  50. package/dist/features/circle-games/sign-up/comp/username-input/username-input.js.map +1 -1
  51. package/dist/features/circle-games/sign-up/constants.js +3 -1
  52. package/dist/features/circle-games/sign-up/constants.js.map +1 -1
  53. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +42 -42
  54. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
  55. package/dist/features/journey/comps/coachmark/coachmark.js +29 -27
  56. package/dist/features/journey/comps/coachmark/coachmark.js.map +1 -1
  57. package/dist/features/journey/journey-id/journey-id-student.js +2 -2
  58. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  59. package/dist/features/journey/use-journey/journey-context-provider.js +73 -72
  60. package/dist/features/journey/use-journey/journey-context-provider.js.map +1 -1
  61. package/dist/features/journey/use-journey/journey-styled.js +6 -4
  62. package/dist/features/journey/use-journey/journey-styled.js.map +1 -1
  63. package/dist/features/puzzles/app/puzzle-app-styled.js +81 -0
  64. package/dist/features/puzzles/app/puzzle-app-styled.js.map +1 -0
  65. package/dist/features/puzzles/app/puzzle-app-view.js +120 -0
  66. package/dist/features/puzzles/app/puzzle-app-view.js.map +1 -0
  67. package/dist/features/puzzles/app/puzzle-app.js +62 -0
  68. package/dist/features/puzzles/app/puzzle-app.js.map +1 -0
  69. package/dist/features/ui/arrow-tooltip/arrow-tooltip-constants.js +6 -0
  70. package/dist/features/ui/arrow-tooltip/arrow-tooltip-constants.js.map +1 -0
  71. package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js +12 -60
  72. package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js.map +1 -1
  73. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js +72 -77
  74. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js.map +1 -1
  75. package/dist/features/ui/arrow-tooltip/comps/tooltip-body-styled.js +63 -0
  76. package/dist/features/ui/arrow-tooltip/comps/tooltip-body-styled.js.map +1 -0
  77. package/dist/features/ui/arrow-tooltip/comps/tooltip-body.js +21 -0
  78. package/dist/features/ui/arrow-tooltip/comps/tooltip-body.js.map +1 -0
  79. package/dist/features/ui/error/error.js +65 -27
  80. package/dist/features/ui/error/error.js.map +1 -1
  81. package/dist/features/ui/modals/modal-styled.js +34 -58
  82. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  83. package/dist/features/ui/modals/modal.js +40 -14
  84. package/dist/features/ui/modals/modal.js.map +1 -1
  85. package/dist/features/ui/nudge/nudge-styled.js +14 -7
  86. package/dist/features/ui/nudge/nudge-styled.js.map +1 -1
  87. package/dist/features/ui/nudge/nudge.js +13 -12
  88. package/dist/features/ui/nudge/nudge.js.map +1 -1
  89. package/dist/features/{stickers/sticker-selector/sticker-selector-styles.js → ui/sticker-grid/sticker-grid-styles.js} +1 -1
  90. package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +1 -0
  91. package/dist/features/ui/sticker-grid/sticker-grid.js +24 -0
  92. package/dist/features/ui/sticker-grid/sticker-grid.js.map +1 -0
  93. package/dist/features/{stickers/sticker-selector → ui/sticker-grid}/sticker.js +9 -9
  94. package/dist/features/ui/sticker-grid/sticker.js.map +1 -0
  95. package/dist/features/ui/stickers/constants.js +6 -0
  96. package/dist/features/ui/stickers/constants.js.map +1 -0
  97. package/dist/features/{stickers/stickers-effects/effects.js → ui/stickers/stickers-effects.js} +6 -6
  98. package/dist/features/ui/stickers/stickers-effects.js.map +1 -0
  99. package/dist/features/{stickers/stickers-effects/stickers-effects-styled.js → ui/stickers/stickers-styled.js} +2 -2
  100. package/dist/features/ui/stickers/stickers-styled.js.map +1 -0
  101. package/dist/features/{stickers/stickers-effects/stickers-effects-utils.js → ui/stickers/stickers-utils.js} +6 -6
  102. package/dist/features/ui/stickers/stickers-utils.js.map +1 -0
  103. package/dist/features/ui/stickers/stickers.js +40 -0
  104. package/dist/features/ui/stickers/stickers.js.map +1 -0
  105. package/dist/features/ui/streak-icon/streak-icon-styled.js +13 -13
  106. package/dist/features/ui/streak-icon/streak-icon-styled.js.map +1 -1
  107. package/dist/features/ui/streak-icon/streak-icon.js +17 -15
  108. package/dist/features/ui/streak-icon/streak-icon.js.map +1 -1
  109. package/dist/features/ui/text/text.js +40 -36
  110. package/dist/features/ui/text/text.js.map +1 -1
  111. package/dist/features/ui/theme/constants.js +4 -2
  112. package/dist/features/ui/theme/constants.js.map +1 -1
  113. package/dist/features/ui/theme/get-device.js +3 -3
  114. package/dist/features/ui/theme/get-device.js.map +1 -1
  115. package/dist/features/worksheet/worksheet/constants.js +12 -13
  116. package/dist/features/worksheet/worksheet/constants.js.map +1 -1
  117. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +24 -24
  118. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
  119. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +246 -260
  120. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  121. package/dist/features/worksheet/worksheet/worksheet-styled.js +37 -28
  122. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  123. package/dist/features/worksheet/worksheet/worksheet.js +166 -164
  124. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  125. package/dist/index.d.ts +63 -52
  126. package/dist/index.js +545 -532
  127. package/dist/index.js.map +1 -1
  128. package/dist/static/nudge-tap.0591aef4.json +1 -0
  129. package/package.json +1 -1
  130. package/dist/features/hooks/use-viewport/use-viewport.js +0 -22
  131. package/dist/features/hooks/use-viewport/use-viewport.js.map +0 -1
  132. package/dist/features/stickers/sticker-data.js +0 -231
  133. package/dist/features/stickers/sticker-data.js.map +0 -1
  134. package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +0 -1
  135. package/dist/features/stickers/sticker-selector/sticker-selector.js +0 -25
  136. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +0 -1
  137. package/dist/features/stickers/sticker-selector/sticker.js.map +0 -1
  138. package/dist/features/stickers/stickers-effects/effects.js.map +0 -1
  139. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +0 -1
  140. package/dist/features/stickers/stickers-effects/stickers-effects-utils.js.map +0 -1
  141. package/dist/features/stickers/stickers-effects/stickers-effects.js +0 -39
  142. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +0 -1
  143. package/dist/static/nudge-tap.5cb30093.json +0 -1057
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\nimport type { ForwardRefRenderFunction } from 'react';\n\nimport { captureMessage } from '@sentry/browser';\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport Info2Icon from '../../../assets/line-icons/icons/info2';\nimport getDeviceDetails from '../../../helpers/get-device-details';\nimport DesmosCalculator from '../../sheet-tools/desmos-calculator/desmos-calculator';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport EVENTS from '../constants/events';\nimport UserPointer from '../user-pointer-pin/user-pin';\nimport {\n DESMOS_CALC_POSITION,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from './constants';\nimport useCreateImperativeHandle from './hooks/use-create-imperative-handle';\nimport useGetActiveQuestionId from './hooks/use-get-active-question-id';\nimport useTimeSpentOnQuestions from './hooks/use-time-on-questions';\nimport QuestionTips from './question-tips';\nimport WorksheetActionBar from './worksheet-action-bar/worksheet-action-bar';\nimport WorksheetBlocker from './worksheet-blocker/worksheet-blocker';\nimport {\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetNudgeBannerInfo,\n scrollToQuestion,\n} from './worksheet-helpers';\nimport WorksheetNavigation from './worksheet-navigation/worksheet-navigation';\nimport WorksheetQuestion from './worksheet-question/worksheet-question';\nimport Navigator from './worksheet-sidebar/navigator';\nimport WorksheetSideBar from './worksheet-sidebar/sidebar';\nimport * as Styled from './worksheet-styled';\nimport WorksheetSummary from './worksheet-summary/worksheet-summary';\n\n/**\n *\n * @param learnosityItems cannot not be changed between the renders\n */\nconst WorksheetComp: ForwardRefRenderFunction<IWorksheetRef, IWorksheetProps> = (props, ref) => {\n const {\n userType,\n studentName = 'Student',\n questionsSignedRequest,\n worksheetName,\n initialResponseId,\n initialItemIndex,\n learnosityActivityRef,\n learnosityItems,\n learnosityResponses,\n layout,\n background,\n behavior,\n updatedResponses,\n showNudgeBanner,\n markedAsCompleted,\n onResponseChange,\n onBulkResponsesChange,\n onResponsesChange,\n onMediaStateChange,\n onTeacherValidation,\n onOptionalItemAssignment,\n onOptionalItemSkip,\n onExitTicketStart,\n onExitTicketSubmit,\n onSubmit,\n learnosity,\n appendedQuestionIds,\n worksheetCompleted,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n initialStrokesData,\n isCanvasEnabled,\n onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n onUnassign,\n onReview,\n canToggleScribbling = true,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n } = props;\n const { initialQuestion, navigationMode, teacherValidationEnabled } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n imageHue,\n } = layout;\n\n const { actionbarHeight, maxQuestionWidth, questionsContainerWidth } = useMemo(\n () => getWorksheetDimensions(learnosityItems, layout),\n [layout, learnosityItems],\n );\n\n const [questions] = useState(() =>\n getQuestionsFromItems(learnosityItems, {\n sectioned:\n teacherValidationEnabled && navigationMode !== 'ADAPTIVE' && navigationMode !== 'CURRENT',\n adaptive: navigationMode === 'ADAPTIVE',\n }),\n );\n\n const [responses, setResponses] = useState<Record<string, IWorksheetResponse>>(\n () => learnosityResponses ?? getInitialResponses(questions),\n );\n const [isScribblingEnabled, setIsScribblingEnabled] = useState(false);\n const lastUnlockedQuestionIndex = useMemo(\n () =>\n navigationMode !== 'OPEN'\n ? getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n })\n : questions.length - 1,\n [behavior, navigationMode, questions, responses, userType],\n );\n\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex];\n const lastUnlockedQuestionResponse = responses[lastUnlockedQuestion?.response_id ?? ''];\n\n const { bannerBackgroundColor: nudgeBannerBackgroundColor, label: nudgeBannerLabel } =\n getWorksheetNudgeBannerInfo(userType, Boolean(markedAsCompleted));\n\n const [initialQuestionId] = useState(() =>\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex: getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n }),\n initialResponseId,\n initialItemIndex,\n }),\n );\n\n const { activeQuestionId, setActiveQuestionId, intersectionObserver } =\n useGetActiveQuestionId(initialQuestionId);\n const activeQuestionIndex = useMemo(\n () => questions.findIndex(question => question.response_id === activeQuestionId),\n [activeQuestionId, questions],\n );\n const [summaryVisible, setSummaryVisible] = useState(false);\n const [blocker, setBlocker] = useState<TWorksheetBlocker>();\n\n const [showCalculator, setShowCalculator] = useState(false);\n const getTimeSpentOnQuestion = useTimeSpentOnQuestions(behavior, responses, activeQuestionId);\n\n const handleMediaStateChange = useCallback<NonNullable<typeof onMediaStateChange>>(\n (question, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n if (onResponseChange) {\n setResponses(prevResponses => {\n const questionId = question.response_id;\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n const updatedResponse = {\n ...questionMeta,\n ...prevResponses[questionId],\n [key]: mediaState,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: updatedResponse,\n isNewAttempt: false,\n question,\n });\n\n return {\n ...prevResponses,\n [questionId]: updatedResponse,\n };\n });\n } else if (onMediaStateChange) {\n onMediaStateChange(question, mediaType, mediaState);\n }\n },\n [onMediaStateChange, onResponseChange, questions],\n );\n\n const handleMarkForReview = useCallback(\n (questionId: string, markedForReview: boolean) => {\n setResponses(prevResponses => {\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n return {\n ...prevResponses,\n [questionId]: {\n ...questionMeta,\n ...prevResponses[questionId],\n markedForReview,\n },\n };\n });\n },\n [questions],\n );\n\n const handleBlockerClose = useCallback(() => {\n setBlocker(prevBlocker => {\n if (prevBlocker) {\n const lastUnlockedQuestionId = questions[lastUnlockedQuestionIndex]?.response_id;\n\n if (lastUnlockedQuestionId) {\n setTimeout(() => {\n scrollToQuestion(lastUnlockedQuestionId);\n }, 50);\n }\n }\n\n return undefined;\n });\n }, [lastUnlockedQuestionIndex, questions]);\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setSummaryVisible(false);\n\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n },\n [questionsScrollable, setActiveQuestionId],\n );\n\n const onCalculatorClose = useCallback(() => {\n setShowCalculator(false);\n }, []);\n\n const onCalculatorOpen = useCallback(() => {\n setShowCalculator(true);\n }, []);\n\n const handleOnGoToReview = useCallback(() => {\n setSummaryVisible(true);\n }, []);\n\n useEffect(() => {\n const activeQuestion = questions[activeQuestionIndex];\n\n if (activeQuestion && onActiveQuestionChange) {\n onActiveQuestionChange(activeQuestion);\n }\n }, [onActiveQuestionChange, questions, activeQuestionIndex]);\n\n useCreateImperativeHandle(ref, {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (onResponsesChange && responses) {\n onResponsesChange(responses);\n }\n }, [onResponsesChange, responses]);\n\n useEffect(() => {\n if (updatedResponses) {\n setResponses(updatedResponses);\n }\n }, [updatedResponses]);\n\n useLayoutEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (learnosity && initialQuestionId) {\n if (getDeviceDetails().browser_name === 'Safari') {\n timer = setTimeout(() => {\n scrollToQuestion(initialQuestionId);\n }, 400);\n } else {\n scrollToQuestion(initialQuestionId);\n }\n }\n\n return () => {\n clearTimeout(timer);\n };\n }, [learnosity, initialQuestionId, topOffset]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus, is_optional } = lastUnlockedQuestion;\n\n if (userType === 'TEACHER') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (\n lastUnlockedQuestionResponse?.submittedByStudent &&\n !lastUnlockedQuestionResponse?.validatedByTeacher\n ) {\n setBlocker('exit-ticket-review-available');\n } else if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n setBlocker('exit-ticket-teacher-intervention');\n } else {\n handleBlockerClose();\n }\n } else if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n setBlocker('optional-items-assignment');\n } else {\n handleBlockerClose();\n }\n } else if (!is_optional) {\n handleBlockerClose();\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n handleBlockerClose,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n userType,\n ]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus } = lastUnlockedQuestion;\n\n if (userType === 'STUDENT') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (lastUnlockedQuestionResponse?.submittedByStudent) {\n onExitTicketSubmit?.();\n } else {\n onExitTicketStart?.();\n }\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse?.submittedByStudent,\n onExitTicketStart,\n onExitTicketSubmit,\n userType,\n ]);\n\n useEffect(() => {\n if (navigationMode === 'CURRENT') {\n learnosityItems.forEach(({ reference, questions: itemQuestions }) => {\n if (itemQuestions.length < 3) {\n captureMessage(`Diagnostics item has Less than 3 questions: ${reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-count-${reference}`], // Add unique fingerprint\n });\n } else if (\n itemQuestions[0]?.instructor_stimulus !== 'Try' ||\n itemQuestions[1]?.instructor_stimulus !== 'Learn' ||\n itemQuestions[2]?.instructor_stimulus !== 'Apply'\n ) {\n captureMessage(\n `Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${reference}`,\n {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-sequence-${reference}`], // Add unique fingerprint\n },\n );\n }\n });\n }\n }, [learnosityActivityRef, learnosityItems, navigationMode]);\n\n useEffect(() => {\n questions.forEach(question => {\n const { validation, item_reference, type, question_number, metadata } = question;\n const responseNeeded = teacherValidationEnabled ? type !== 'clozetext' : true;\n\n if (responseNeeded && validation?.valid_response) {\n const value = validation.valid_response.value ?? [];\n\n if (value?.length === 0) {\n const altResponses = validation.alt_responses ?? [];\n const hasAltResponse = altResponses.some(altResponse => altResponse.value.length > 0);\n\n if (!hasAltResponse) {\n captureMessage(`Question has no valid response: ${metadata.widget_reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': item_reference,\n 'question-number': question_number,\n 'widget-reference': metadata.widget_reference,\n },\n fingerprint: [`no-valid-response-${metadata.widget_reference}`], // Add unique fingerprint\n });\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {\n item_reference: item_reference,\n widget_reference: metadata.widget_reference,\n question_type: type,\n question_number: question_number,\n });\n }\n }\n }\n });\n }, [learnosityActivityRef, loggerRef, questions, teacherValidationEnabled]);\n\n if (!learnosity) {\n return null;\n }\n\n return (\n <>\n {showNudgeBanner && (\n <Styled.NudgeBannerWrapper\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={1.75}\n $height={WORKSHEET_NUDGE_BANNER_HEIGHT}\n $gap={8}\n $gutter={8}\n $flexGap={8}\n $background={nudgeBannerBackgroundColor}\n $topOffset={layout.topOffset - WORKSHEET_NUDGE_BANNER_HEIGHT}\n >\n {markedAsCompleted ? (\n <Styled.NudgeBannerIcon>\n <Check2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n ) : (\n <Styled.NudgeBannerIcon>\n <Info2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n )}\n\n <Text $renderAs=\"ub3\">{nudgeBannerLabel}</Text>\n </Styled.NudgeBannerWrapper>\n )}\n\n <Styled.WorksheetContainer\n $background={imageHue ? `${imageHue}_1` : 'WHITE'}\n $width={containerWidth}\n >\n {navigationBar === 'top' && (\n <Styled.NavigationContainer $topOffset={topOffset} $height={TOP_NAVIGATION_HEIGHT}>\n <Styled.NavigationWrapper>\n <WorksheetNavigation\n placement=\"top\"\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n behavior={behavior}\n onItemNumberClick={handleItemNumberClick}\n userType={userType}\n summaryVisible={summaryVisible}\n />\n </Styled.NavigationWrapper>\n </Styled.NavigationContainer>\n )}\n {blocker && lastUnlockedQuestion && (\n <Styled.BlockerWrapper $minHeight={minQuestionHeight} $topOffset={topOffset}>\n <FlexView $width={maxQuestionWidth} $justifyContent=\"center\" $alignItems=\"center\">\n <WorksheetBlocker\n blocker={blocker}\n lastUnlockedQuestion={lastUnlockedQuestion}\n studentName={studentName}\n onBlockerClose={handleBlockerClose}\n onOptionalItemAssignment={onOptionalItemAssignment}\n onOptionalItemSkip={onOptionalItemSkip}\n onTeacherValidation={onTeacherValidation}\n />\n </FlexView>\n </Styled.BlockerWrapper>\n )}\n {showUserPointer && (\n <UserPointer\n activeQuestionIndex={activeQuestionIndex}\n onClick={handleItemNumberClick}\n questions={questions}\n bottomOffset={actionbarHeight}\n topOffset={topOffset}\n userType={userType}\n />\n )}\n {showCalculator && (\n <Styled.DesmosCalcWrapper>\n <DesmosCalculator initialPosition={DESMOS_CALC_POSITION} onClose={onCalculatorClose} />\n </Styled.DesmosCalcWrapper>\n )}\n <Styled.ActionbarContainer\n $marginTop={userType === 'TEACHER' && summaryVisible ? '0' : actionbarHeight}\n $height={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\n {canShowActionBar && (\n <Styled.ActionbarWrapper\n $height={actionbarHeight}\n $width={containerStyle === 'card' ? questionsContainerWidth - 32 : '100%'}\n $isCardView={containerStyle === 'card'}\n >\n <FlexView\n $gutterX={1}\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $width={questionsContainerWidth - 32}\n >\n <WorksheetActionBar\n userType={userType}\n layout={layout}\n behavior={behavior}\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n onCalculatorOpen={onCalculatorOpen}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n appendedQuestionIds={appendedQuestionIds}\n learnosity={learnosity}\n isCanvasEnabled={isCanvasEnabled}\n canSubmitWorksheet={canSubmitWorksheet}\n isScribblingEnabled={isScribblingEnabled}\n isSummaryVisible={summaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n setSummaryVisible={setSummaryVisible}\n setBlocker={setBlocker}\n setIsScribblingEnabled={setIsScribblingEnabled}\n setActiveQuestionId={setActiveQuestionId}\n onItemNumberClick={handleItemNumberClick}\n onGoToReview={handleOnGoToReview}\n onResponseChange={onResponseChange}\n onHelp={onHelp}\n onTeacherValidation={onTeacherValidation}\n onSubmit={onSubmit}\n showCalculator={showCalculator}\n loggerRef={loggerRef}\n onSkip={onSkip}\n onUnassign={onUnassign}\n onReview={onReview}\n canToggleScribbling={canToggleScribbling}\n />\n </FlexView>\n </Styled.ActionbarWrapper>\n )}\n {!summaryVisible && questionsScrollable && userType === 'STUDENT' && (\n <Styled.StudentWorksheetSideBar>\n <Navigator />\n </Styled.StudentWorksheetSideBar>\n )}\n </Styled.ActionbarContainer>\n <Styled.QuestionsWrapper\n $actionbarHeight={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n {getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }).map(\n (question, questionIndex) => {\n const { response_id: responseId, is_optional } = question;\n const assignStatus = responses[responseId]?.assignStatus;\n\n if (behavior.teacherValidationEnabled) {\n if (assignStatus === 'skipped') return null;\n\n if (is_optional && assignStatus !== 'assigned' && userType === 'STUDENT') {\n return null;\n }\n }\n\n return (\n <WorksheetQuestion\n key={responseId}\n signedRequest={questionsSignedRequest}\n userType={userType}\n worksheetCompleted={worksheetCompleted}\n question={question}\n response={responses[responseId]}\n nextQuestionId={\n navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT'\n ? lastUnlockedQuestion?.response_id\n : questionIndex < lastUnlockedQuestionIndex\n ? questions[questionIndex + 1]?.response_id\n : undefined\n }\n maxQuestionWidth={maxQuestionWidth}\n learnosity={learnosity}\n isActive={responseId === activeQuestionId}\n isHidden={\n (!questionsScrollable && responseId !== activeQuestionId) || summaryVisible\n }\n canRender={\n activeQuestionIndex > -1 &&\n (questionIndex === activeQuestionIndex ||\n (navigationMode !== 'CURRENT' && questionIndex === activeQuestionIndex + 1))\n }\n background={background}\n appended={appendedQuestionIds.includes(responseId)}\n behavior={behavior}\n layout={layout}\n actionbarHeight={actionbarHeight}\n intersectionObserver={intersectionObserver}\n onMarkForReview={handleMarkForReview}\n onMediaStateChange={handleMediaStateChange}\n userId={userId}\n isScribblingEnabled={isScribblingEnabled}\n onPublishStrokes={onPublishStrokes}\n onReceiveStrokes={onReceiveStrokes}\n initialStrokesData={initialStrokesData}\n isCanvasEnabled={isCanvasEnabled}\n onPublishMouseMove={onPublishMouseMove}\n onSubscribeMouseMove={onSubscribeMouseMove}\n setActiveQuestionId={setActiveQuestionId}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n studentId={studentId}\n subjectiveProps={subjectiveProps}\n responses={responses}\n loggerRef={loggerRef}\n />\n );\n },\n )}\n {summaryVisible && (\n <WorksheetSummary\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n behavior={behavior}\n minHeight={minSummaryHeight}\n summaryDescription={summaryDescription}\n summaryVisible={summaryVisible}\n />\n )}\n </Styled.QuestionsWrapper>\n {!summaryVisible && renderSideBar && (\n <WorksheetSideBar\n questionWidth={maxQuestionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n userType={userType}\n height={minQuestionHeight}\n actionbarHeight={actionbarHeight}\n openQuestionFeedbackModal={openQuestionFeedbackModal}\n loggerRef={loggerRef}\n />\n )}\n </Styled.WorksheetContainer>\n </>\n );\n};\n\nconst Worksheet = memo(forwardRef(WorksheetComp));\n\nexport default Worksheet;\n"],"names":["WorksheetComp","props","ref","userType","studentName","questionsSignedRequest","worksheetName","initialResponseId","initialItemIndex","learnosityActivityRef","learnosityItems","learnosityResponses","layout","background","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","isCanvasEnabled","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","onUnassign","onReview","canToggleScribbling","studentId","subjectiveProps","canShowActionBar","initialQuestion","navigationMode","teacherValidationEnabled","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","imageHue","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","lastUnlockedQuestion","lastUnlockedQuestionResponse","nudgeBannerBackgroundColor","nudgeBannerLabel","getWorksheetNudgeBannerInfo","initialQuestionId","getInitialQuestionId","activeQuestionId","setActiveQuestionId","intersectionObserver","useGetActiveQuestionId","activeQuestionIndex","question","summaryVisible","setSummaryVisible","blocker","setBlocker","showCalculator","setShowCalculator","getTimeSpentOnQuestion","useTimeSpentOnQuestions","handleMediaStateChange","useCallback","mediaType","mediaState","key","prevResponses","questionId","questionMeta","getQuestionMetadata","updatedResponse","handleMarkForReview","markedForReview","handleBlockerClose","prevBlocker","lastUnlockedQuestionId","_a","scrollToQuestion","handleItemNumberClick","onCalculatorClose","onCalculatorOpen","handleOnGoToReview","useEffect","activeQuestion","useCreateImperativeHandle","useLayoutEffect","timer","getDeviceDetails","item_type","instructor_stimulus","is_optional","reference","itemQuestions","captureMessage","_b","_c","validation","item_reference","type","question_number","metadata","value","altResponse","EVENTS","jsxs","Fragment","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","jsx","Styled.NudgeBannerIcon","Check2Icon","Info2Icon","Text","Styled.WorksheetContainer","Styled.NavigationContainer","TOP_NAVIGATION_HEIGHT","Styled.NavigationWrapper","WorksheetNavigation","Styled.BlockerWrapper","FlexView","WorksheetBlocker","UserPointer","Styled.DesmosCalcWrapper","DesmosCalculator","DESMOS_CALC_POSITION","Styled.ActionbarContainer","QuestionTips","Styled.ActionbarWrapper","WorksheetActionBar","Styled.StudentWorksheetSideBar","Navigator","Styled.QuestionsWrapper","getRenderableQuestions","questionIndex","responseId","assignStatus","WorksheetQuestion","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\nimport type { ForwardRefRenderFunction } from 'react';\n\nimport { captureMessage } from '@sentry/browser';\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport Info2Icon from '../../../assets/line-icons/icons/info2';\nimport getDeviceDetails from '../../../helpers/get-device-details';\nimport DesmosCalculator from '../../sheet-tools/desmos-calculator/desmos-calculator';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport EVENTS from '../constants/events';\nimport UserPointer from '../user-pointer-pin/user-pin';\nimport {\n DESMOS_CALC_POSITION,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from './constants';\nimport useCreateImperativeHandle from './hooks/use-create-imperative-handle';\nimport useGetActiveQuestionId from './hooks/use-get-active-question-id';\nimport useTimeSpentOnQuestions from './hooks/use-time-on-questions';\nimport QuestionTips from './question-tips';\nimport WorksheetActionBar from './worksheet-action-bar/worksheet-action-bar';\nimport WorksheetBlocker from './worksheet-blocker/worksheet-blocker';\nimport {\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetNudgeBannerInfo,\n scrollToQuestion,\n} from './worksheet-helpers';\nimport WorksheetNavigation from './worksheet-navigation/worksheet-navigation';\nimport WorksheetQuestion from './worksheet-question/worksheet-question';\nimport Navigator from './worksheet-sidebar/navigator';\nimport WorksheetSideBar from './worksheet-sidebar/sidebar';\nimport * as Styled from './worksheet-styled';\nimport WorksheetSummary from './worksheet-summary/worksheet-summary';\n\n/**\n *\n * @param learnosityItems cannot not be changed between the renders\n */\nconst WorksheetComp: ForwardRefRenderFunction<IWorksheetRef, IWorksheetProps> = (props, ref) => {\n const {\n userType,\n studentName = 'Student',\n questionsSignedRequest,\n worksheetName,\n initialResponseId,\n initialItemIndex,\n learnosityActivityRef,\n learnosityItems,\n learnosityResponses,\n layout,\n background,\n behavior,\n updatedResponses,\n showNudgeBanner,\n markedAsCompleted,\n onResponseChange,\n onBulkResponsesChange,\n onResponsesChange,\n onMediaStateChange,\n onTeacherValidation,\n onOptionalItemAssignment,\n onOptionalItemSkip,\n onExitTicketStart,\n onExitTicketSubmit,\n onSubmit,\n learnosity,\n appendedQuestionIds,\n worksheetCompleted,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n initialStrokesData,\n isCanvasEnabled,\n onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n onUnassign,\n onReview,\n canToggleScribbling = true,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n } = props;\n const { initialQuestion, navigationMode, teacherValidationEnabled } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n imageHue,\n } = layout;\n\n const { actionbarHeight, maxQuestionWidth, questionsContainerWidth } = useMemo(\n () => getWorksheetDimensions(learnosityItems, layout),\n [layout, learnosityItems],\n );\n\n const [questions] = useState(() =>\n getQuestionsFromItems(learnosityItems, {\n sectioned:\n teacherValidationEnabled && navigationMode !== 'ADAPTIVE' && navigationMode !== 'CURRENT',\n adaptive: navigationMode === 'ADAPTIVE',\n }),\n );\n\n const [responses, setResponses] = useState<Record<string, IWorksheetResponse>>(\n () => learnosityResponses ?? getInitialResponses(questions),\n );\n const [isScribblingEnabled, setIsScribblingEnabled] = useState(false);\n const lastUnlockedQuestionIndex = useMemo(\n () =>\n navigationMode !== 'OPEN'\n ? getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n })\n : questions.length - 1,\n [behavior, navigationMode, questions, responses, userType],\n );\n\n const questionsToRender = useMemo(\n () => getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }),\n [questions, lastUnlockedQuestionIndex, userType],\n );\n\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex];\n const lastUnlockedQuestionResponse = responses[lastUnlockedQuestion?.response_id ?? ''];\n\n const { bannerBackgroundColor: nudgeBannerBackgroundColor, label: nudgeBannerLabel } =\n getWorksheetNudgeBannerInfo(userType, Boolean(markedAsCompleted));\n\n const [initialQuestionId] = useState(() =>\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex: getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n }),\n initialResponseId,\n initialItemIndex,\n }),\n );\n\n const { activeQuestionId, setActiveQuestionId, intersectionObserver } =\n useGetActiveQuestionId(initialQuestionId);\n const activeQuestionIndex = useMemo(\n () => questions.findIndex(question => question.response_id === activeQuestionId),\n [activeQuestionId, questions],\n );\n const [summaryVisible, setSummaryVisible] = useState(false);\n const [blocker, setBlocker] = useState<TWorksheetBlocker>();\n\n const [showCalculator, setShowCalculator] = useState(false);\n const getTimeSpentOnQuestion = useTimeSpentOnQuestions(behavior, responses, activeQuestionId);\n\n const handleMediaStateChange = useCallback<NonNullable<typeof onMediaStateChange>>(\n (question, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n if (onResponseChange) {\n setResponses(prevResponses => {\n const questionId = question.response_id;\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n const updatedResponse = {\n ...questionMeta,\n ...prevResponses[questionId],\n [key]: mediaState,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: updatedResponse,\n isNewAttempt: false,\n question,\n });\n\n return {\n ...prevResponses,\n [questionId]: updatedResponse,\n };\n });\n } else if (onMediaStateChange) {\n onMediaStateChange(question, mediaType, mediaState);\n }\n },\n [onMediaStateChange, onResponseChange, questions],\n );\n\n const handleMarkForReview = useCallback(\n (questionId: string, markedForReview: boolean) => {\n setResponses(prevResponses => {\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n return {\n ...prevResponses,\n [questionId]: {\n ...questionMeta,\n ...prevResponses[questionId],\n markedForReview,\n },\n };\n });\n },\n [questions],\n );\n\n const handleBlockerClose = useCallback(() => {\n setBlocker(prevBlocker => {\n if (prevBlocker) {\n const lastUnlockedQuestionId = questions[lastUnlockedQuestionIndex]?.response_id;\n\n if (lastUnlockedQuestionId) {\n setTimeout(() => {\n scrollToQuestion(lastUnlockedQuestionId);\n }, 50);\n }\n }\n\n return undefined;\n });\n }, [lastUnlockedQuestionIndex, questions]);\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setSummaryVisible(false);\n\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n },\n [questionsScrollable, setActiveQuestionId],\n );\n\n const onCalculatorClose = useCallback(() => {\n setShowCalculator(false);\n }, []);\n\n const onCalculatorOpen = useCallback(() => {\n setShowCalculator(true);\n }, []);\n\n const handleOnGoToReview = useCallback(() => {\n setSummaryVisible(true);\n }, []);\n\n useEffect(() => {\n const activeQuestion = questions[activeQuestionIndex];\n\n if (activeQuestion && onActiveQuestionChange) {\n onActiveQuestionChange(activeQuestion);\n }\n }, [onActiveQuestionChange, questions, activeQuestionIndex]);\n\n useCreateImperativeHandle(ref, {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (onResponsesChange && responses) {\n onResponsesChange(responses);\n }\n }, [onResponsesChange, responses]);\n\n useEffect(() => {\n if (updatedResponses) {\n setResponses(updatedResponses);\n }\n }, [updatedResponses]);\n\n useLayoutEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (learnosity && initialQuestionId) {\n if (getDeviceDetails().browser_name === 'Safari') {\n timer = setTimeout(() => {\n scrollToQuestion(initialQuestionId);\n }, 400);\n } else {\n scrollToQuestion(initialQuestionId);\n }\n }\n\n return () => {\n clearTimeout(timer);\n };\n }, [learnosity, initialQuestionId, topOffset]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus, is_optional } = lastUnlockedQuestion;\n\n if (userType === 'TEACHER') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (\n lastUnlockedQuestionResponse?.submittedByStudent &&\n !lastUnlockedQuestionResponse?.validatedByTeacher\n ) {\n setBlocker('exit-ticket-review-available');\n } else if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n setBlocker('exit-ticket-teacher-intervention');\n } else {\n handleBlockerClose();\n }\n } else if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n setBlocker('optional-items-assignment');\n } else {\n handleBlockerClose();\n }\n } else if (!is_optional) {\n handleBlockerClose();\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n handleBlockerClose,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n userType,\n ]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus } = lastUnlockedQuestion;\n\n if (userType === 'STUDENT') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (lastUnlockedQuestionResponse?.submittedByStudent) {\n onExitTicketSubmit?.();\n } else {\n onExitTicketStart?.();\n }\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse?.submittedByStudent,\n onExitTicketStart,\n onExitTicketSubmit,\n userType,\n ]);\n\n useEffect(() => {\n if (navigationMode === 'CURRENT') {\n learnosityItems.forEach(({ reference, questions: itemQuestions }) => {\n if (itemQuestions.length < 3) {\n captureMessage(`Diagnostics item has Less than 3 questions: ${reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-count-${reference}`], // Add unique fingerprint\n });\n } else if (\n itemQuestions[0]?.instructor_stimulus !== 'Try' ||\n itemQuestions[1]?.instructor_stimulus !== 'Learn' ||\n itemQuestions[2]?.instructor_stimulus !== 'Apply'\n ) {\n captureMessage(\n `Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${reference}`,\n {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-sequence-${reference}`], // Add unique fingerprint\n },\n );\n }\n });\n }\n }, [learnosityActivityRef, learnosityItems, navigationMode]);\n\n useEffect(() => {\n questions.forEach(question => {\n const { validation, item_reference, type, question_number, metadata } = question;\n const responseNeeded = teacherValidationEnabled ? type !== 'clozetext' : true;\n\n if (responseNeeded && validation?.valid_response) {\n const value = validation.valid_response.value ?? [];\n\n if (value?.length === 0) {\n const altResponses = validation.alt_responses ?? [];\n const hasAltResponse = altResponses.some(altResponse => altResponse.value.length > 0);\n\n if (!hasAltResponse) {\n captureMessage(`Question has no valid response: ${metadata.widget_reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': item_reference,\n 'question-number': question_number,\n 'widget-reference': metadata.widget_reference,\n },\n fingerprint: [`no-valid-response-${metadata.widget_reference}`], // Add unique fingerprint\n });\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {\n item_reference: item_reference,\n widget_reference: metadata.widget_reference,\n question_type: type,\n question_number: question_number,\n });\n }\n }\n }\n });\n }, [learnosityActivityRef, loggerRef, questions, teacherValidationEnabled]);\n\n if (!learnosity) {\n return null;\n }\n\n return (\n <>\n <Styled.LearnosityStyleOverrides />\n {showNudgeBanner && (\n <Styled.NudgeBannerWrapper\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={1.75}\n $height={WORKSHEET_NUDGE_BANNER_HEIGHT}\n $gap={8}\n $gutter={8}\n $flexGap={8}\n $background={nudgeBannerBackgroundColor}\n $topOffset={layout.topOffset - WORKSHEET_NUDGE_BANNER_HEIGHT}\n >\n {markedAsCompleted ? (\n <Styled.NudgeBannerIcon>\n <Check2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n ) : (\n <Styled.NudgeBannerIcon>\n <Info2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n )}\n\n <Text $renderAs=\"ub3\">{nudgeBannerLabel}</Text>\n </Styled.NudgeBannerWrapper>\n )}\n\n <Styled.WorksheetContainer\n $background={imageHue ? `${imageHue}_1` : 'WHITE'}\n $width={containerWidth}\n >\n {navigationBar === 'top' && (\n <Styled.NavigationContainer $topOffset={topOffset} $height={TOP_NAVIGATION_HEIGHT}>\n <Styled.NavigationWrapper>\n <WorksheetNavigation\n placement=\"top\"\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n behavior={behavior}\n onItemNumberClick={handleItemNumberClick}\n userType={userType}\n summaryVisible={summaryVisible}\n />\n </Styled.NavigationWrapper>\n </Styled.NavigationContainer>\n )}\n {blocker && lastUnlockedQuestion && (\n <Styled.BlockerWrapper $minHeight={minQuestionHeight} $topOffset={topOffset}>\n <FlexView $width={maxQuestionWidth} $justifyContent=\"center\" $alignItems=\"center\">\n <WorksheetBlocker\n blocker={blocker}\n lastUnlockedQuestion={lastUnlockedQuestion}\n studentName={studentName}\n onBlockerClose={handleBlockerClose}\n onOptionalItemAssignment={onOptionalItemAssignment}\n onOptionalItemSkip={onOptionalItemSkip}\n onTeacherValidation={onTeacherValidation}\n />\n </FlexView>\n </Styled.BlockerWrapper>\n )}\n {showUserPointer && (\n <UserPointer\n activeQuestionIndex={activeQuestionIndex}\n onClick={handleItemNumberClick}\n questions={questions}\n bottomOffset={actionbarHeight}\n topOffset={topOffset}\n userType={userType}\n />\n )}\n {showCalculator && (\n <Styled.DesmosCalcWrapper>\n <DesmosCalculator initialPosition={DESMOS_CALC_POSITION} onClose={onCalculatorClose} />\n </Styled.DesmosCalcWrapper>\n )}\n <Styled.ActionbarContainer\n $marginTop={userType === 'TEACHER' && summaryVisible ? '0' : actionbarHeight}\n $height={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\n {canShowActionBar && (\n <Styled.ActionbarWrapper\n $height={actionbarHeight}\n $width={containerStyle === 'card' ? questionsContainerWidth - 32 : '100%'}\n $isCardView={containerStyle === 'card'}\n >\n <FlexView\n $gutterX={1}\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $width={questionsContainerWidth - 32}\n >\n <WorksheetActionBar\n userType={userType}\n layout={layout}\n behavior={behavior}\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n onCalculatorOpen={onCalculatorOpen}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n appendedQuestionIds={appendedQuestionIds}\n learnosity={learnosity}\n isCanvasEnabled={isCanvasEnabled}\n canSubmitWorksheet={canSubmitWorksheet}\n isScribblingEnabled={isScribblingEnabled}\n isSummaryVisible={summaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n setSummaryVisible={setSummaryVisible}\n setBlocker={setBlocker}\n setIsScribblingEnabled={setIsScribblingEnabled}\n setActiveQuestionId={setActiveQuestionId}\n onItemNumberClick={handleItemNumberClick}\n onGoToReview={handleOnGoToReview}\n onResponseChange={onResponseChange}\n onHelp={onHelp}\n onTeacherValidation={onTeacherValidation}\n onSubmit={onSubmit}\n showCalculator={showCalculator}\n loggerRef={loggerRef}\n onSkip={onSkip}\n onUnassign={onUnassign}\n onReview={onReview}\n canToggleScribbling={canToggleScribbling}\n />\n </FlexView>\n </Styled.ActionbarWrapper>\n )}\n {!summaryVisible && questionsScrollable && userType === 'STUDENT' && (\n <Styled.StudentWorksheetSideBar>\n <Navigator />\n </Styled.StudentWorksheetSideBar>\n )}\n </Styled.ActionbarContainer>\n <Styled.QuestionsWrapper\n $actionbarHeight={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n {questionsToRender.map((question, questionIndex) => {\n const { response_id: responseId, is_optional } = question;\n const assignStatus = responses[responseId]?.assignStatus;\n\n if (behavior.teacherValidationEnabled) {\n if (assignStatus === 'skipped') return null;\n\n if (is_optional && assignStatus !== 'assigned' && userType === 'STUDENT') {\n return null;\n }\n }\n\n return (\n <WorksheetQuestion\n key={responseId}\n signedRequest={questionsSignedRequest}\n userType={userType}\n worksheetCompleted={worksheetCompleted}\n question={question}\n response={responses[responseId]}\n nextQuestionId={\n navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT'\n ? lastUnlockedQuestion?.response_id\n : questionIndex < lastUnlockedQuestionIndex\n ? questions[questionIndex + 1]?.response_id\n : undefined\n }\n maxQuestionWidth={maxQuestionWidth}\n learnosity={learnosity}\n isActive={responseId === activeQuestionId}\n isHidden={\n (!questionsScrollable && responseId !== activeQuestionId) || summaryVisible\n }\n canRender={\n activeQuestionIndex > -1 &&\n (questionIndex === activeQuestionIndex ||\n (navigationMode !== 'CURRENT' && questionIndex === activeQuestionIndex + 1))\n }\n background={background}\n appended={appendedQuestionIds.includes(responseId)}\n behavior={behavior}\n layout={layout}\n actionbarHeight={actionbarHeight}\n intersectionObserver={intersectionObserver}\n onMarkForReview={handleMarkForReview}\n onMediaStateChange={handleMediaStateChange}\n userId={userId}\n isScribblingEnabled={isScribblingEnabled}\n onPublishStrokes={onPublishStrokes}\n onReceiveStrokes={onReceiveStrokes}\n initialStrokesData={initialStrokesData}\n isCanvasEnabled={isCanvasEnabled}\n onPublishMouseMove={onPublishMouseMove}\n onSubscribeMouseMove={onSubscribeMouseMove}\n setActiveQuestionId={setActiveQuestionId}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n studentId={studentId}\n subjectiveProps={subjectiveProps}\n responses={responses}\n loggerRef={loggerRef}\n />\n );\n })}\n {summaryVisible && (\n <WorksheetSummary\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n behavior={behavior}\n minHeight={minSummaryHeight}\n summaryDescription={summaryDescription}\n summaryVisible={summaryVisible}\n />\n )}\n </Styled.QuestionsWrapper>\n {!summaryVisible && renderSideBar && (\n <WorksheetSideBar\n questionWidth={maxQuestionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n userType={userType}\n height={minQuestionHeight}\n actionbarHeight={actionbarHeight}\n openQuestionFeedbackModal={openQuestionFeedbackModal}\n loggerRef={loggerRef}\n />\n )}\n </Styled.WorksheetContainer>\n </>\n );\n};\n\nconst Worksheet = memo(forwardRef(WorksheetComp));\n\nexport default Worksheet;\n"],"names":["WorksheetComp","props","ref","userType","studentName","questionsSignedRequest","worksheetName","initialResponseId","initialItemIndex","learnosityActivityRef","learnosityItems","learnosityResponses","layout","background","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","isCanvasEnabled","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","onUnassign","onReview","canToggleScribbling","studentId","subjectiveProps","canShowActionBar","initialQuestion","navigationMode","teacherValidationEnabled","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","imageHue","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","questionsToRender","getRenderableQuestions","lastUnlockedQuestion","lastUnlockedQuestionResponse","nudgeBannerBackgroundColor","nudgeBannerLabel","getWorksheetNudgeBannerInfo","initialQuestionId","getInitialQuestionId","activeQuestionId","setActiveQuestionId","intersectionObserver","useGetActiveQuestionId","activeQuestionIndex","question","summaryVisible","setSummaryVisible","blocker","setBlocker","showCalculator","setShowCalculator","getTimeSpentOnQuestion","useTimeSpentOnQuestions","handleMediaStateChange","useCallback","mediaType","mediaState","key","prevResponses","questionId","questionMeta","getQuestionMetadata","updatedResponse","handleMarkForReview","markedForReview","handleBlockerClose","prevBlocker","lastUnlockedQuestionId","_a","scrollToQuestion","handleItemNumberClick","onCalculatorClose","onCalculatorOpen","handleOnGoToReview","useEffect","activeQuestion","useCreateImperativeHandle","useLayoutEffect","timer","getDeviceDetails","item_type","instructor_stimulus","is_optional","reference","itemQuestions","captureMessage","_b","_c","validation","item_reference","type","question_number","metadata","value","altResponse","EVENTS","jsxs","Fragment","jsx","Styled.LearnosityStyleOverrides","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","Styled.NudgeBannerIcon","Check2Icon","Info2Icon","Text","Styled.WorksheetContainer","Styled.NavigationContainer","TOP_NAVIGATION_HEIGHT","Styled.NavigationWrapper","WorksheetNavigation","Styled.BlockerWrapper","FlexView","WorksheetBlocker","UserPointer","Styled.DesmosCalcWrapper","DesmosCalculator","DESMOS_CALC_POSITION","Styled.ActionbarContainer","QuestionTips","Styled.ActionbarWrapper","WorksheetActionBar","Styled.StudentWorksheetSideBar","Navigator","Styled.QuestionsWrapper","questionIndex","responseId","assignStatus","WorksheetQuestion","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -62,7 +62,7 @@ export declare const ArcButton: NamedExoticComponent<IArcButtonProps & {
62
62
  children?: ReactNode | undefined;
63
63
  } & RefAttributes<HTMLDivElement>>;
64
64
 
65
- export declare const ArrowTooltip: FC<IArrowTooltipProps>;
65
+ export declare const ArrowTooltip: NamedExoticComponent<IArrowTooltipProps>;
66
66
 
67
67
  export declare const AUTH_TABS: IAuthTab[];
68
68
 
@@ -311,6 +311,10 @@ declare const COURSE_STREAMS: {
311
311
 
312
312
  export declare const CrossIcon: React.FC<React.SVGProps<SVGSVGElement>>;
313
313
 
314
+ export declare const CueBoardFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
315
+
316
+ export declare const CueBoardIcon: React.FC<React.SVGProps<SVGSVGElement>>;
317
+
314
318
  export declare const CueCanvas: React_2.FC<ICueCanvas>;
315
319
 
316
320
  export declare const CueCanvasController: React_2.FC<IToolbarProps>;
@@ -351,6 +355,15 @@ export declare enum EClassTimeAlertLevel {
351
355
  FIFTEEN_MIN = "15min"
352
356
  }
353
357
 
358
+ export declare enum EDeviceType {
359
+ MOBILE = 0,
360
+ TABLET = 1,
361
+ SMALL_DESKTOP = 2,
362
+ DESKTOP = 3,
363
+ LARGE_DEVICE = 4,
364
+ XLARGE_DEVICE = 5
365
+ }
366
+
354
367
  export declare const Edit2Icon: React.FC<React.SVGProps<SVGSVGElement>>;
355
368
 
356
369
  export declare const EditIcon: React.FC<React.SVGProps<SVGSVGElement>>;
@@ -517,7 +530,7 @@ declare const getCheckboxConfig: IGetCheckboxConfig;
517
530
 
518
531
  declare function getColors(): TColorsMap;
519
532
 
520
- declare const getDevice: (width: number) => TDeviceType;
533
+ declare const getDevice: (width: number) => EDeviceType;
521
534
 
522
535
  declare const getInputConfig: IGetInputConfig;
523
536
 
@@ -564,6 +577,8 @@ export declare const HelpIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
564
577
 
565
578
  export declare const HighlighterIcon: React.FC<React.SVGProps<SVGSVGElement>>;
566
579
 
580
+ export declare const HintFillIcon: React.FC<React.SVGProps<SVGSVGElement>>;
581
+
567
582
  export declare const HomeIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
568
583
 
569
584
  export declare const HomeworkCardList: React_2.NamedExoticComponent<HWCardListProps>;
@@ -662,6 +677,7 @@ export declare interface IArrowTooltipProps {
662
677
  widthX?: number;
663
678
  zIndex?: number;
664
679
  parentWidth?: number | string;
680
+ isBlocking?: boolean;
665
681
  }
666
682
 
667
683
  declare interface IAttempt {
@@ -1367,6 +1383,7 @@ declare interface IErrorProps {
1367
1383
  theme?: 'light' | 'dark';
1368
1384
  title?: string;
1369
1385
  description?: string;
1386
+ size?: 'compact' | 'full';
1370
1387
  }
1371
1388
 
1372
1389
  declare interface IExpandableHeaderProps {
@@ -1669,8 +1686,9 @@ export declare interface IJourneyContext {
1669
1686
  * @param scrollableContainerRef - Optional ref to a journey which has a scrollable container, it will make the entire page
1670
1687
  * uninteractable by adding an overlay - Required since we cannot determine the height of the scrollable container because
1671
1688
  * provider is at root level and from there we cannot access the scrollable container's height.
1689
+ * @param isBlocking - If `true`, the journey will block user interaction with the page until completed. True by default.
1672
1690
  */
1673
- setJourney: (id: TJourneyId, coachmark: TCoachmarkJourneyProps[], scrollableContainerRef?: RefObject<HTMLDivElement | null>) => void;
1691
+ setJourney: (id: TJourneyId, coachmark: TCoachmarkJourneyProps[], scrollableContainerRef?: RefObject<HTMLDivElement | null>, isBlocking?: boolean) => void;
1674
1692
  /**
1675
1693
  * Clears the current journey, removing all coachmarks.
1676
1694
  * Should be called inside useEffect to ensure cleanup.
@@ -2441,7 +2459,7 @@ export declare interface IModal {
2441
2459
  /** Content to display inside the modal */
2442
2460
  element: ReactElement;
2443
2461
  /** Rendering style of the modal */
2444
- renderAs?: 'modal' | 'fullscreen' | 'spotlight' | 'fullscreen-transparent';
2462
+ renderAs?: 'modal' | 'fullscreen' | 'spotlight';
2445
2463
  /** Whether the modal can be dismissed by clicking outside or ESC key (default: true) */
2446
2464
  isDismissable?: boolean;
2447
2465
  /** Whether the modal requires authentication to view (default: true) */
@@ -2826,6 +2844,14 @@ declare interface IPuzzle extends IBaseProject {
2826
2844
  solved: boolean;
2827
2845
  }
2828
2846
 
2847
+ declare interface IPuzzleAppProps {
2848
+ itemRef: string;
2849
+ title: string;
2850
+ imageHue: THueNames;
2851
+ feedbackComments?: string;
2852
+ tip?: string;
2853
+ }
2854
+
2829
2855
  export declare interface IPuzzleCard {
2830
2856
  sheetData: TLPARSheetData;
2831
2857
  blockStatus?: TPuzzleCardBlockStatus | null;
@@ -2995,6 +3021,7 @@ export declare interface IReviewWorksheetModel {
2995
3021
  title?: string;
2996
3022
  worksheet_id?: string;
2997
3023
  node_type: TNodeTypes;
3024
+ items?: TWorksheetItems[];
2998
3025
  }
2999
3026
 
3000
3027
  declare interface ISATSheetItemCallbacks {
@@ -3234,14 +3261,14 @@ declare interface IStepperProps {
3234
3261
  currentStep: number;
3235
3262
  }
3236
3263
 
3237
- export declare interface IStickerData {
3264
+ declare interface IStickerData {
3238
3265
  id: string;
3239
3266
  emoji: string;
3240
3267
  lottieUrl?: string;
3241
- name: string;
3268
+ name?: string;
3242
3269
  }
3243
3270
 
3244
- export declare interface IStickerGridProps {
3271
+ declare interface IStickerGridProps {
3245
3272
  stickers: IStickerData[];
3246
3273
  columns?: number;
3247
3274
  gap?: number;
@@ -3249,24 +3276,10 @@ export declare interface IStickerGridProps {
3249
3276
  onStickerClick?: (sticker: IStickerData) => void;
3250
3277
  }
3251
3278
 
3252
- export declare interface IStickerProps {
3253
- emoji: string;
3254
- lottieUrl?: string;
3255
- size?: number | string;
3256
- onClick?: () => void;
3257
- disabled?: boolean;
3258
- }
3259
-
3260
- export declare interface IStickersProps {
3261
- stickers: string[];
3262
- effect: TStickerEffect;
3263
- count: number;
3264
- duration: number;
3265
- }
3266
-
3267
3279
  declare interface IStreakIconProps extends React.HTMLProps<HTMLDivElement> {
3268
3280
  value: number;
3269
3281
  blink?: boolean;
3282
+ isInteractive?: boolean;
3270
3283
  }
3271
3284
 
3272
3285
  export declare interface IStreakLeaderboardDetails extends IBaseLeaderboardDetails {
@@ -3819,12 +3832,6 @@ declare interface IUseTrialSessionMessageBroker {
3819
3832
  };
3820
3833
  }
3821
3834
 
3822
- declare interface IUseViewportReturn {
3823
- isCompact: boolean;
3824
- isMobile: boolean;
3825
- isDesktop: boolean;
3826
- }
3827
-
3828
3835
  declare interface IUseWorksheetLayout {
3829
3836
  (options: {
3830
3837
  userType: TUserTypes;
@@ -4182,7 +4189,6 @@ export declare enum JOURNEY_ID_STUDENT {
4182
4189
  CIRCLE_TABLES_INTRO_JOURNEY = "CIRCLE_TABLES_INTRO_JOURNEY",
4183
4190
  CIRCLE_TABLES_INFINTE_JOURNEY = "CIRCLE_TABLES_INFINITE_JOURNEY",
4184
4191
  CIRCLE_LESSONS_K_1_INTRO_JOURNEY = "CIRCLE_LESSONS_K_1_INTRO_JOURNEY",
4185
- CIRCLE_STREAK_REDUCTION_JOURNEY = "CIRCLE_STREAK_REDUCTION_JOURNEY",
4186
4192
  HOMEPAGE_JOURNEY = "HOMEPAGE_JOURNEY",
4187
4193
  CHAPTER_PAGE_JOURNEY = "CHAPTER_PAGE_JOURNEY",
4188
4194
  CHALLENGE_ARENA_JOURNEY = "CHALLENGE_ARENA_JOURNEY"
@@ -4503,7 +4509,7 @@ export declare enum NODE_TYPES {
4503
4509
  'PUZZLE_CARD' = "PUZZLE_CARD"
4504
4510
  }
4505
4511
 
4506
- export declare const Nudge: React_2.FC<INudgeProps>;
4512
+ export declare const Nudge: React_2.NamedExoticComponent<INudgeProps>;
4507
4513
 
4508
4514
  export declare const NumRangeInput: React.FC<NumRangeInputProps>;
4509
4515
 
@@ -4636,6 +4642,8 @@ declare const PUZZLE_CARD_STATE: {
4636
4642
 
4637
4643
  declare const PUZZLE_CARDS: "puzzle_cards";
4638
4644
 
4645
+ export declare const PuzzleApp: NamedExoticComponent<IPuzzleAppProps>;
4646
+
4639
4647
  export declare const PuzzleCard: FC<IPuzzleCardContainerProps>;
4640
4648
 
4641
4649
  export declare const PuzzleFeedbackCelebration: FC;
@@ -4699,6 +4707,10 @@ declare const SAT_NODE_TYPE: {
4699
4707
 
4700
4708
  export declare const SATSheetSummary: FC<ISATSheetSummary>;
4701
4709
 
4710
+ export declare const ScreenGrabFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
4711
+
4712
+ export declare const ScreenGrabIcon: React.FC<React.SVGProps<SVGSVGElement>>;
4713
+
4702
4714
  export declare const SearchableSelectInput: <IDType extends string | number>(props: ISearchableSelectInputProps<IDType>) => ReactElement;
4703
4715
 
4704
4716
  export declare const SearchIcon: React.FC<React.SVGProps<SVGSVGElement>>;
@@ -4827,11 +4839,20 @@ declare const STICKER_BADGE: {
4827
4839
  AWESOME: string;
4828
4840
  };
4829
4841
 
4830
- export declare const stickerData: IStickerData[];
4842
+ declare type StickerEffect = 'burst_from_edges' | 'pop_expand' | 'float_up' | 'fall_down';
4843
+
4844
+ export declare const StickerFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
4831
4845
 
4832
- export declare const stickerMap: Record<string, IStickerData>;
4846
+ export declare const StickerIcon: React.FC<React.SVGProps<SVGSVGElement>>;
4833
4847
 
4834
- export declare const StickersEffects: React_2.NamedExoticComponent<IStickersProps>;
4848
+ export declare const Stickers: React_2.NamedExoticComponent<StickersProps>;
4849
+
4850
+ declare interface StickersProps {
4851
+ stickers: string[];
4852
+ effect: StickerEffect;
4853
+ count: number;
4854
+ duration: number;
4855
+ }
4835
4856
 
4836
4857
  export declare const StickersSelector: React_2.NamedExoticComponent<IStickerGridProps>;
4837
4858
 
@@ -5073,8 +5094,6 @@ declare type TCueProgramData = {
5073
5094
 
5074
5095
  declare type TDefaultSection = Record<string, unknown>;
5075
5096
 
5076
- export declare type TDeviceType = 'mobile' | 'tablet' | 'small-desktop' | 'desktop' | 'large-device' | 'xlarge-device';
5077
-
5078
5097
  declare type TDrawingData = ITile | IStroke | undefined;
5079
5098
 
5080
5099
  declare type TEnglishSectionSummary = {
@@ -5086,7 +5105,7 @@ declare type TEnrollmentTypes = (typeof ENROLLMENT_TYPES)[keyof typeof ENROLLMEN
5086
5105
  export declare const TestsCreation: FC<ITestsCreationProps>;
5087
5106
 
5088
5107
  /**
5089
- * @param $renderAs - The text variant to render as (ah1-ah4, ab1-ab3, ac1-ac4, ub1-ub3), anything else is deprecated
5108
+ * @param $renderAs (fallback for any device), @param $renderOnMobileAs, @param $renderOnTabletAs - The text variant to render as (ah1-ah4, ab1-ab3, ac1-ac4, ub1-ub3), anything else is deprecated
5090
5109
  */
5091
5110
  declare const Text_2: IStyledComponent<"web", Substitute<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, TextProps>>;
5092
5111
  export { Text_2 as Text }
@@ -5108,6 +5127,8 @@ declare interface TextProps {
5108
5127
  $inline?: boolean;
5109
5128
  $textDecoration?: string;
5110
5129
  $whiteSpace?: 'pre-line' | 'normal' | 'pre-wrap' | 'no-wrap' | 'pre' | 'break-spaces';
5130
+ $renderOnMobileAs?: TTextVariants;
5131
+ $renderOnTabletAs?: TTextVariants;
5111
5132
  }
5112
5133
 
5113
5134
  export declare type TFontFamilyNames = `${'Athletics'}-${'Light' | 'Regular' | 'Medium' | 'Bold' | 'Black'}` | `${'UntitledSans'}-${'Regular' | 'Medium'}`;
@@ -5751,7 +5772,7 @@ declare type TRenderAs_2 = 'canvas' | 'whiteboard';
5751
5772
  declare type TRewardHomeData = {
5752
5773
  user_badges: TBadgeData[] | [];
5753
5774
  user_rewards: TRewardsData[] | [];
5754
- user_stickers: TStickerData_2[] | [];
5775
+ user_stickers: TStickerData[] | [];
5755
5776
  };
5756
5777
 
5757
5778
  declare type TRewardsData = {
@@ -5879,17 +5900,7 @@ export declare type TSkillStatus = 'pending' | 'completed';
5879
5900
 
5880
5901
  export declare type TSocialAuthProvider = 'google' | 'apple';
5881
5902
 
5882
- export declare type TStickerData = {
5883
- id: number;
5884
- sticker: string;
5885
- x: number;
5886
- y: number;
5887
- size: number;
5888
- fromX?: string;
5889
- fromY?: string;
5890
- };
5891
-
5892
- declare type TStickerData_2 = {
5903
+ declare type TStickerData = {
5893
5904
  actor_id: string;
5894
5905
  badge_id: string;
5895
5906
  badge_type: string;
@@ -5902,8 +5913,6 @@ declare type TStickerData_2 = {
5902
5913
  user_type: string;
5903
5914
  };
5904
5915
 
5905
- export declare type TStickerEffect = 'burst-from-edges' | 'pop-expand' | 'float-up' | 'fall-down';
5906
-
5907
5916
  export declare type TStreakStatus = 'pending' | 'completed';
5908
5917
 
5909
5918
  declare type TStyleAttrubutes = NonNullable<HTMLAttributes<HTMLDivElement>['style']>;
@@ -5992,6 +6001,10 @@ export declare const Tutorial: ({ src, title, onCross, showProgress, onTutorialP
5992
6001
 
5993
6002
  export declare const TutoringIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
5994
6003
 
6004
+ declare type TWorksheetItems = {
6005
+ ref: string;
6006
+ };
6007
+
5995
6008
  declare type TWORKSHHET_QUESTION_MEDIA_TYPE = 'SIMULATION' | 'VIDEO' | 'AUDIO';
5996
6009
 
5997
6010
  export declare type TZIndexMap = Record<keyof typeof ZINDEX, number>;
@@ -6219,8 +6232,6 @@ export declare const useTrialSessionMessageBroker: IUseTrialSessionMessageBroker
6219
6232
 
6220
6233
  export declare const useUIContext: () => UIContextProps;
6221
6234
 
6222
- export declare const useViewport: () => IUseViewportReturn;
6223
-
6224
6235
  export declare const useWorksheetLayout: IUseWorksheetLayout;
6225
6236
 
6226
6237
  export declare const useZoomDisable: () => void;